[Гайд] Настройка Битвы Династий

Ksing

Новичок
Пользователь
23 Окт 2012
6
12
3
39
1.0 - Все вложения (файлы и картинки) размером до 300мб заливать исключительно на форум. 1.1 - Запрещено использовать сторонние ресурсы для хранения файлов размер которых не превышает 300мб.
Небольшой офф топ:
Занялся настройкой БД и обнаружил, что информации по ней практически нет. Пришлось долго и упорно ковыряться в гделиверед для понимания процесса БД и возможности настройки. Возможно люди, которые хотели бы сделать на этом деньги (настраивая другим пару байт) будут очень на меня сердиты... но все таки напишу ))
И еще не ждите от меня готовых оффсетов - я пишу где искать для возможности редактирования на других версиях сервера!

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


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

По пунктам:
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
Попадаем сюда:
f6a7c54f673c41ffd3869d852244bfb1.png

Жмем F5 и видим такой код (могут быть вариации в зависимости от версии):
eed78c2f517a4512da7779fcb16a47c1.png

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

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

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

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

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

Примерная схема:
1522ff5dfdfcc1dd6f39ba4d901828ac.png

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

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


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

Максимум меняется в функции: CountryBattleMan::CalcPlayerBonus (для игроков) и CountryBattleMan::CalcKingBonus (для короля)
5aa2154c7063ca2c9fcba2518cc3df82.png

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


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



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

Vieraw

Администратор
Команда форума
Администратор
12 Май 2012
273
145
43
27
  • Like
Реакции: Desmond Hume

Пользователи онлайн

Сейчас на форуме нет ни одного пользователя.

Последние ресурсы

Статистика форума

Темы
3.838
Сообщения
21.199
Пользователи
7.612
Новый пользователь
Shenia