Разбор ивента

Tagib

Последний из атеистов
Пользователь
Сообщения
64
Розыгрыши
0
Решения
1
Репутация
0
Реакции
3
Баллы
860
Хроники
  1. Chaotic Throne: High Five
Сборка
L2GW
Есть ивент Might Of God's
Проблема с его работой.
Сперва предыстория работы скиллов:
Существуют итемы от данного ивента, это мешки со скиллами. Всего шесть групп, с каждой группы используются по 5 итемов (настраиваемое ограничение, можно сделать и больше)
Когда изучаешь, появляются скиллы и так же в комьюнити можно их сбросить разом (можно настроить сброс по отдельности)
Объясню как работает баг с false в пропорциях
# Удалять скилы не относящиеся к текущему классу загружаемого чара.
CheckSkillsPossible = false
:
Выучил ты все мешки и получил скиллы, вроде нормально все, бегаешь довольствуешься. Есть одно но, если ты до первой профы изучил мешки, и взял профу, то ты можешь изучить еще мешки и так с каждой профой и в сумме получается огромное количество скиллов. И только удаляются скиллы в комьюнити с последней взятой профой, а на остальных же профах эти скиллы остаются

Объясню как работает баг с true в пропорциях
# Удалять скилы не относящиеся к текущему классу загружаемого чара.
CheckSkillsPossible = true
Здесь же все просто, выучил ты мешки, получил скиллы и релогнулся, они у тебя пропадают. Играя за админ чара, у тебя работает все нормально, как и должно быть
Как решить данную проблему?
Можно ли сделать для TRUE исключение с ивентом Might of God's и как его сделать??
 
Есть ивент Might Of God's
Проблема с его работой.
Сперва предыстория работы скиллов:
Существуют итемы от данного ивента, это мешки со скиллами. Всего шесть групп, с каждой группы используются по 5 итемов (настраиваемое ограничение, можно сделать и больше)
Когда изучаешь, появляются скиллы и так же в комьюнити можно их сбросить разом (можно настроить сброс по отдельности)
Объясню как работает баг с false в пропорциях
# Удалять скилы не относящиеся к текущему классу загружаемого чара.
CheckSkillsPossible = false
:
Выучил ты все мешки и получил скиллы, вроде нормально все, бегаешь довольствуешься. Есть одно но, если ты до первой профы изучил мешки, и взял профу, то ты можешь изучить еще мешки и так с каждой профой и в сумме получается огромное количество скиллов. И только удаляются скиллы в комьюнити с последней взятой профой, а на остальных же профах эти скиллы остаются

Объясню как работает баг с true в пропорциях
# Удалять скилы не относящиеся к текущему классу загружаемого чара.
CheckSkillsPossible = true
Здесь же все просто, выучил ты мешки, получил скиллы и релогнулся, они у тебя пропадают. Играя за админ чара, у тебя работает все нормально, как и должно быть
Как решить данную проблему?
Можно ли сделать для TRUE исключение с ивентом Might of God's и как его сделать??
не знаю как должно быть правильно, я бы сделал отдельную таблицу в бд, и туда записывал бы чара и кол-во использованных мешков
 
Сделать флаг для скилов, найти проверку
# Удалять скилы не относящиеся к текущему классу загружаемого чара.
CheckSkillsPossible = false
и добавить проверку на флаг скилов ивента Might of God's
 
Сделать флаг для скилов, найти проверку
# Удалять скилы не относящиеся к текущему классу загружаемого чара.
CheckSkillsPossible = false
и добавить проверку на флаг скилов ивента Might of God's
Могли бы вы показать пример с флагом. Я даже слово не знаю такое
 
@Tagib,
 
не знаю как должно быть правильно, я бы сделал отдельную таблицу в бд, и туда записывал бы чара и кол-во использованных мешков
Есть такая таблица, где записываются скиллы с мешков
называется event_mog_skill's - оттуда скиллы сохраняются в character_skill's

не знаю как должно быть правильно, я бы сделал отдельную таблицу в бд, и туда записывал бы чара и кол-во использованных мешков
с true - скиллы из таблицы event_mog_skill's удаляются и остаются в character_skill's
 
Есть такая таблица, где записываются скиллы с мешков
называется event_mog_skill's - оттуда скиллы сохраняются в character_skill's
Скорее всего скиллы записываются/привязываются к текущему классу игрока (class_index), если так, то можно убрать проверку на класс, и, если необходимо, то не выдавать скиллы, если чар на саб-классе.
 
Скорее всего скиллы записываются/привязываются к текущему классу игрока (class_index), если так, то можно убрать проверку на класс, и, если необходимо, то не выдавать скиллы, если чар на саб-классе.
Тогда привет подмене скилов. Решение выше простое и эффективное.
 
Скорее всего скиллы записываются/привязываются к текущему классу игрока (class_index), если так, то можно убрать проверку на класс, и, если необходимо, то не выдавать скиллы, если чар на саб-классе.
Возможно, но я решил проблему временным способом. Указал каждый класс до последней профы, и только после третьей профы можно изучать скиллы, так же работает и на саб классах. С сабклассами нет проблем, из саба в основу скиллы не переходят

Скорее всего скиллы записываются/привязываются к текущему классу игрока (class_index), если так, то можно убрать проверку на класс, и, если необходимо, то не выдавать скиллы, если чар на саб-классе.
Можно подробнее про данную ситуацию
 
Ошибку в gameserver
java.lang.NullPointerException
at events.MightOfGods.MightOfGods.addEventSkill(MightOfGods.java:764)
at events.MightOfGods.MightOfGods.useItem(MightOfGods.java:1196)
at ru.l2gw.gameserver.tables.ItemTable.useHandler(ItemTable.java:730)
at ru.l2gw.gameserver.clientpackets.UseItem.runImpl(UseItem.java:260)
at ru.l2gw.gameserver.clientpackets.L2GameClientPacket.run(L2GameClientPacket.java:45)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Это из-за параметра false
 
Ошибку в gameserver
java.lang.NullPointerException
at events.MightOfGods.MightOfGods.addEventSkill(MightOfGods.java:764)
at events.MightOfGods.MightOfGods.useItem(MightOfGods.java:1196)
at ru.l2gw.gameserver.tables.ItemTable.useHandler(ItemTable.java:730)
at ru.l2gw.gameserver.clientpackets.UseItem.runImpl(UseItem.java:260)
at ru.l2gw.gameserver.clientpackets.L2GameClientPacket.run(L2GameClientPacket.java:45)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Это из-за параметра false
Это не ошибка, а только её описание, ошибка парой строк выше пишется.
Начинается с параметра "error"
 
Нашел такие строчки для базы
ALTER TABLE event_mog_skills ADD skill_id int(11) AFTER owner_id;
ALTER TABLE event_mog_skills ADD skill_lvl int(11) AFTER skill_id;
UPDATE event_mog_skills ems, event_mog_skilltable emt SET ems.skill_id = emt.skill_id, ems.skill_lvl = emt.skill_lvl WHERE ems.id = emt.id;
UPDATE event_mog_skills ems, character_skills cs SET ems.skill_lvl = cs.skill_level WHERE cs.char_obj_id = ems.owner_id AND cs.class_index = ems.class_id AND ems.skill_id = cs.skill_id;
DELETE FROM event_mog_skilltable WHERE id in(231,232,235,236,237,238,239,240,241,255,242,243,244,233,234,203,245,247,248,249,250,251,252,253,254);
ALTER TABLE event_mog_skills DROP KEY myind;
ALTER TABLE event_mog_skills DROP id;
ALTER TABLE event_mog_skills ADD KEY uniqeue (owner_id,skill_id,class_id);
DELETE FROM event_mog_skills WHERE owner_id NOT IN (SELECT obj_id FROM characters);
Подумал что исключение
 
Назад
Сверху Снизу