Доброго! Имеется исход 3.9 от лайтингов. В конфиге по рейтам для дропа прописано вот что: # Quest Kinah Rates ####################### gameserver.rate.regular.quest.kinah = 1 gameserver.rate.premium.quest.kinah = 2 gameserver.rate.vip.quest.kinah = 3 При этом обычный игрок без рейтов (regular) получает за квест х2 кинар. Что явно не стыкуется. Пришлось в конфиге прописать следующее: # Quest Kinah Rates ####################### gameserver.rate.regular.quest.kinah = 0.5 (кол-во кинар как и указано в квесте) gameserver.rate.premium.quest.kinah = 1 (кол-во кинар х2) gameserver.rate.vip.quest.kinah = 1.5 (кол-во кинар х3) Все остальные переменные по опыту, дропу и т.д. соответствуют, и только лишь на кинару почему-то приходится в конфиге указывать х/2 gameserver.rate.regular.quest.xp = 1 gameserver.rate.premium.quest.xp = 2 gameserver.rate.vip.quest.xp = 3 # Gathering EXP Rates ##################### gameserver.rate.regular.gathering.xp = 1 gameserver.rate.premium.gathering.xp = 2 gameserver.rate.vip.gathering.xp = 3 # Crafting EXP Rates ###################### gameserver.rate.regular.crafting.xp = 1 gameserver.rate.premium.crafting.xp = 2 gameserver.rate.vip.crafting.xp = 3 # Quest Kinah Rates ####################### gameserver.rate.regular.quest.kinah = 0.5 gameserver.rate.premium.quest.kinah = 1 gameserver.rate.vip.quest.kinah = 1.5 Подскажите плз, где в исходниках можно данную хреновину поправить?
QuestService посмотри, в методе giveReward По хорошему, нужна ссылка на билд с исходами (если нужна помощь по исходам), иначе как тебе помочь, если у себя нет такой проблемы.
Проблема оказалась на самом верху, куда я даже не смотрел сам) Ну сперва последовал твоему совету, нашел строку в "QuestService" и дабы исключить всякое, заменил на корню: Player player = env.getPlayer(); if (rewards.getGold() != null) player.getInventory().increaseKinah((long) (player.getRates().getQuestKinahRate() * rewards.getGold()), ItemUpdateType.INC_KINAH_QUEST); на Player player = env.getPlayer(); if (rewards.getGold() != null) player.getInventory().increaseKinah((long) (100 * rewards.getGold()), ItemUpdateType.INC_KINAH_QUEST); И после этого я прихринел. В итоге за квест я получил не 120 кинары а 24000. Т.е. где-то в глубине еще указан рейт х2. Либо.... а пойду-ка я посмотрю на сам код квеста в "quest_data.xml"... <quest id="1101" name="Sleeping on the Job" nameId="1102201" minlevel_permitted="1" max_repeat_count="1" race_permitted="ELYOS" category="QUEST"> <rewards gold="240" exp="50"/> </quest> В морде клиента явно светится голд "120" и експа "50" А в клиенте и на aidb указано 120 кинары. Все оказалось на много проще, а меня в исходники потянуло))) Тут теперь вопрос в другом, даже два вопроса. Теперь искать нормальную quest_data.xml от 3.9... И почему ncsoft сами себе палки вставляют. Зачем в клиенте указывают награду не переменной из сервака, а статой? Так ведь и запутаться можно, как я сам и пошел не верным путем. Или я чего то не понимаю.
Я очень много правок делал в "quest_data.xml", и искать замену ну вобще не вариант. Что я думаю по этому поводу... Нужно мне распаковать клиентскую версию, в месте где хранятся квесты все в удобопонимаемый формат. Написать парсер, который будет проверять/сравнивать награды в клиентском файле и в серверном, и уравнивать награду в обоих.
То есть получается у тебя в статиках была проблема, а ты полез ядро колупать Эту тема под каждую версию перепарсивается, потому как в каждой версии менялись награды, убирались или добавлялись квесты. Конечно можно поискать готовое, но где уверенность, что кто то так же как ты не делал в готовом, прежде чем выложить в паблик.
Именно))) Та мне проще самому написать, делов максимум на час) А главное будет заточено именно под эту версию клиента)
По сути парсер 1 раз пишется, дальше только правки могут вносится (если разработчик игры что то добавляет в следующие версии).