• SiteAnalyzer, технический и SEO-анализ сайтов

Help me Рейты х1/х2/х3 на получение кинар не верно работают

  • Автор темы Автор темы Fire
  • Дата начала Дата начала

Fire

Рядовой
Доброго!
Имеется исход 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
По хорошему, нужна ссылка на билд с исходами (если нужна помощь по исходам), иначе как тебе помочь, если у себя нет такой проблемы.
 
  • Like
Реакции: Fire
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", и искать замену ну вобще не вариант.
Что я думаю по этому поводу...
Нужно мне распаковать клиентскую версию, в месте где хранятся квесты все в удобопонимаемый формат.
Написать парсер, который будет проверять/сравнивать награды в клиентском файле и в серверном, и уравнивать награду в обоих.
 
Я очень много правок делал в "quest_data.xml", и искать замену ну вобще не вариант.
Что я думаю по этому поводу...
Нужно мне распаковать клиентскую версию, в месте где хранятся квесты все в удобопонимаемый формат.
Написать парсер, который будет проверять/сравнивать награды в клиентском файле и в серверном, и уравнивать награду в обоих.
То есть получается у тебя в статиках была проблема, а ты полез ядро колупать :cry:

Написать парсер, который будет проверять/сравнивать награды в клиентском файле и в серверном, и уравнивать награду в обоих.

Эту тема под каждую версию перепарсивается, потому как в каждой версии менялись награды, убирались или добавлялись квесты.
Конечно можно поискать готовое, но где уверенность, что кто то так же как ты не делал в готовом, прежде чем выложить в паблик.
 
  • Like
Реакции: Fire
То есть получается у тебя в статиках была проблема, а ты полез ядро колупать :cry:.
Именно)))

Эту тема под каждую версию перепарсивается, потому как в каждой версии менялись награды, убирались или добавлялись квесты.
Конечно можно поискать готовое, но где уверенность, что кто то так же как ты не делал в готовом, прежде чем выложить в паблик.

Та мне проще самому написать, делов максимум на час) А главное будет заточено именно под эту версию клиента)
 
По сути парсер 1 раз пишется, дальше только правки могут вносится (если разработчик игры что то добавляет в следующие версии).
 
Назад
Сверху