1. Гость, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

1.5.0 (88) Настройка Битвы Династий

Тема в разделе 'PW Документация', создана пользователем syxid, 14 мар 2014.

  1. TopicStarter Overlay

    syxid Пользователи

    Сообщения:
    284
    Лайки:
    115
    Репутация:
    0
    Небольшой офф топ:
    Занялся настройкой БД и обнаружил, что информации по ней практически нет. Пришлось долго и упорно ковыряться в гделиверед для понимания процесса БД и возможности настройки. Возможно люди, которые хотели бы сделать на этом деньги (настраивая другим пару байт) будут очень на меня сердиты... но все таки напишу ))
    И еще не ждите от меня готовых оффсетов - я пишу где искать для возможности редактирования на других версиях сервера!

    Важно! Для работы вам понадобятся:
    - ida (скачать можно тут)
    - хекс редактор
    - немного соображалки, чтобы понять как этим всем пользоваться :D


    Собственно настройка:
    Начнем мы мы с разбора конфига гделиверед - gamesys.conf
    Интересует нас в нем вот что:
    [​IMG]

    По пунктам:
    1) настройки выдачи наград для каждого класса (жрец, син и т.д). Подробно пока не разбирал, но с уверенностью в 90% могу сказать, что первое число в строке это коэфициент при подсчете количества монет выдаваемых в конце битвы
    2) максимальное количество смертей на поле боя, после которого выкинет на карту
    3) общее количество монет для всех фракций (или другого предмета, если вы перенастроили награду)
    4) собственно вкл/выкл БД
    5) (не проверял) вкл/выкл выбор короля династии, или (вероятно) день недели выборов.
    6) ТОЛЬКО для версий 1.5.0+, настройка дня недели битвы. 0 - вск, 1 - пнд и так далее. Можно ставить хоть каждый день (как на примере). Для версии 1.4.8 и ниже эта строка работать не будет, настройка производится вручную редактированием службы гделиверед. Где именно - простите не скажу. Нет времени ковырять неактуальный для меня предмет :)

    На всякий случай добавлю (вдруг попадутся нубики вроде меня), для работы обычной (не межсерверной) БД, у вас в конфиге должно быть это:
    [CentralDeliveryServer]
    type = tcp
    port = 29101
    address = 127.0.0.1
    so_sndbuf = 16384
    so_rcvbuf = 16384
    ibuffermax = 1048576
    obuffermax = 1048576
    tcp_nodelay = 0
    listen_backlog = 10
    accumulate = 268435456

    Все что касается - [CentralDeliveryClient] необходимо закоменнтировать! Это настройка межсерверной БД.

    С конфигом мы разобрались, двигаем дальше.

    Все изза чего я вообще полез в гделиверед - изменение времени проведения БД, но попутно нашел еще несколько полезных значений.

    Изменение ВРЕМЕНИ НАЧАЛА и ДЛИТЕЛЬНОСТИ Битвы династии
    Вот оно самое вкусное, запускаем иду и загружаем в нее наш gdeliveryd, ждем ждем ждем (если это первый раз) пока она его прожует.
    Дождались - в окне функций ищем следующее значение: CountryBattleMan::Update
    Попадаем сюда:
    [​IMG]

    Жмем F5 и видим такой код (могут быть вариации в зависимости от версии):
    [​IMG]

    Битва династий делится на несколько фаз:
    1) настройка времени начала и окончания битвы. Время в секундах начиная с 00-00-00 серверного времени. (73199 это 20-20 серверного времени)
    Ставим оба значения такие как нам нужно - получаем время начала и окончания (то есть длительность) Битвы династий.
    2) Время в течение которого идет подсчет наград и отправка почты, начинается сразу по окончании БД и его длительность зависит от вашей настройки
    3) Проверка правильности отправки почты и начисления бонусов игрокам, если обнаружена не отправленная почта - делается попытка ее отправить
    4) Остановка бд с ошибкой (если обнаружены не отправленные бонусы). Почта больше не отправляется, битва отключается. Запись в лог ошибки.

    ВАЖНО! При настройке времени необходимо корректировать все временные интервалы! Не должно получиться так, что вы выдаете награду, когда битва еще идет!
    Также НЕ РЕКОМЕНДУЮ ставить время больше 86300, (не проверял) скорее всего работать ваша Битва корректно не будет, так как 86400 это полные сутки,
    а сравнение идет с текущим временем.

    Изменение ОТОБРАЖЕНИЯ времени БД в клиенте
    Как это не смешно, но это разные функции. Для правильного отображения времени БД в клиенте (на карте Битвы Династий) необходимо редактировать следующие функции:
    CountryBattleMan::GetCountryBattleStartTime - время начала
    CountryBattleMan::GetCountryBattleEndTime - время окончания
    CountryBattleMan::GetCountryBattleFinishTime - завершение?
    [​IMG]


    В данном случае наши значения записаны в формате Час (первое число), Минута (второе число)
    Редактируем в соответствии с нашими настройками

    Коротко: как изменять значения для чайников (хотя пишу коротко и не уверен, что все поймут :D)
    Нашли значение - поставили курсор на него (нажали) - далее жмем кнопку таб и попадаем в окно IDA-view
    Ставим курсор на наше значение и переходим в окно HEX-view, ставим курсор на наше значение (не забываем, что оно перевернуто на китайский манер) и смотрим внизу оффсет. Далее открыв гделиверед в любом хекс редакторе переходим по найденному оффсету и меняем значение на нужное нам.
    Примерная схема:
    [​IMG]

    Учиться пользоваться хекс редактором не буду, сами научитесь :)
    На мои художества не ругаться - писал для чайников, вот и картинка от чайника :D

    Далее позволю себе (да не накажут меня строгие модераторы) немного скопипастить и приведу вам как изменять награду за Битву династий, дабы собрать все в одну тему.
    Взято отсюда: https://mmorpg-devs.ru/threads/Награда-за-Битву-Династий.14414/
    Автор Roymike
    [​IMG]


    Изменение максимального количества монет в награду
    1 путь: просто изменить максимальное количество монет в стеке. Дешево и сердито.
    + ненадо ничего редактировать, просто изменить 1 параметр у предмета в элементах
    - на почту может прийти к примеру 10000 монет, а у вас максимум в пачке 5000 и ваш игрок забирая предмет с почты получит только 5000. сразу начнутся вопли и разборки куда делось остальное. Так что лучше немного потратить время и изменить верхнуюю планку награды.

    Максимум меняется в функции: CountryBattleMan::CalcPlayerBonus (для игроков) и CountryBattleMan::CalcKingBonus (для короля)
    [​IMG]

    Как работает: При начислении игроку больше 10к монет будет выдано 10к монет.
    Меняем оба числа на нужные нам.

    Изменение максимальной длительности боя (не проверено)
    По умолчанию любая битва в БД длится 25 минут. Изменить это можно тут:
    CountryBattleMan::StartBattle
    [​IMG]

    П.С. возможно позже еще будут добавления
    П.П.С. Да я не написал, что для входа на БД в нестандартный день нужно еще и нпс включать - но вы же люди не глупые сами знаете что и как и умеете пользоваться редактором npcgen.data ;)

    И совсем уж П.П.П.С за мой русский не ругать :( у мну по нему всегда был трояк. Хотя техникум и вышку окончил с красным дипломом :D
    Ну и конечно настрою вашу БД (если вы сами не сможете) за небольшое вознаграждение :D (надеюсь не потрут нафиг за наглую рекламу :D)
    Последнее редактирование: 14 мар 2014
    Joe, san4e3, Hopewake. и 16 другим нравится это.
  2. loko9988 B L A C K    L I S T Пользователи

    Сообщения:
    758
    Лайки:
    238
    Пол:
    Мужской
    Репутация:
    1
    Огромное спасибо автору. Я подчерпнул для себя необходимую информацию которую долго искал.
    Спасибо.
    Димка11 нравится это.
Черновик сохранён Черновик удалён
Similar Threads
  1. akademik
    Ответов:
    1
    Просмотров:
    1.284
  2. TwoStar
    Ответов:
    4
    Просмотров:
    1.652
  3. HolaRiva
    Ответов:
    7
    Просмотров:
    2.079
  4. loko9988
    Ответов:
    12
    Просмотров:
    4.148
  5. Desired
    Ответов:
    2
    Просмотров:
    1.279
Загрузка...

Поделиться этой страницей