JTS 2018 последние сурсы(Ошибки)

Статус
В этой теме нельзя размещать новые ответы.

DJone

Последний из атеистов
Пользователь
Сообщения
63
Розыгрыши
0
Репутация
0
Реакции
3
Баллы
850
Всем привет. Подскажите пожалуйста, кто ставил данную сборку, где расположен файл со скилами? Хочу поправить скил Rush, иначе что то он не работает. Баг со скилом, или это мне кажется?
 

Вложения

  • 12.png.9b68eed8cfd259c52bd01ef02b11d0b7.png
    12.png.9b68eed8cfd259c52bd01ef02b11d0b7.png
    348,6 КБ · Просмотры: 411
А как это можно проверить? Просто немного не до понимаю в этом. Как то в отладочном режиме это запускается, или это все в консоле выдастся?
1) ты можешь во время диалога с нпц, увидеть какой хтмл она тебе предлагает прямо в систем чате(если ты за админа и конфиг включен)- и понять по какой логической ветке пошел квест, а оттуда понять что идет не так
2) ты можешь вставить дополнительное логирование в код с описанием нужных тебе параметров(итемов например). В этой сборке для квестов уже обьявлен логгер, вставляется так: LOGGER.info("Говорю с нети, костей " + st.ownItemCount(spatois_bones));
 

1) ты можешь во время диалога с нпц, увидеть какой хтмл она тебе предлагает прямо в систем чате(если ты за админа и конфиг включен)- и понять по какой логической ветке пошел квест, а оттуда понять что идет не так
2) ты можешь вставить дополнительное логирование в код с описанием нужных тебе параметров(итемов например). В этой сборке для квестов уже обьявлен логгер, вставляется так: LOGGER.info("Говорю с нети, костей " + st.ownItemCount(spatois_bones));

Проверил, после всех набитых итемов, выдается вот эта HTMLka
Код:
if (st.ownItemCount(beziques_letter) > 0)
    htmltext = "neti_q0403_01.htm";

Странно, далее цепочка на проверку итемов по квесту значит не проходят, код корректный. Куда дальше копать?

Народ, подскажите, в данной ревизии возможно включить показ ЛВЛ мобов? Что то найти не могу в конфигах, или они тут не реализованы?
 
Последнее редактирование модератором:
Вообще обычно это делают агр патчем(агр и лвл Мобов) для клиента.
Ты же вроде все нашёл, вон у тебя первым итемом на скрине свиток лежит, это письмо как раз ? Так откуда оно у тебя? Ты в админке его создал ? Или нпц его выдал, а потом не забрал ? Просто нети забирает письмо в одном экземпляре когда выдаёт лук и дагер. Может ты отменял квест, а письмо осталось с порогового раза. Попробуй удалить письмо, если кости сдадутся - удали квестовые итемы, отмени квест и начни заново. Если с нуля все будет работать, то это баг ПТС скрипта.
 
Вообще обычно это делают агр патчем(агр и лвл Мобов) для клиента.
Агр патч стоит, на другой шаре показывают лвл мобов. Это не суть важно так, хотелось конечно чтоб работало, если конечно тут реализовано, пока еще не все просмотрел.

Ты же вроде все нашёл, вон у тебя первым итемом на скрине свиток лежит, это письмо как раз ? Так откуда оно у тебя? Ты в админке его создал ? Или нпц его выдал, а потом не забрал ? Просто нети забирает письмо в одном экземпляре когда выдаёт лук и дагер. Может ты отменял квест, а письмо осталось с порогового раза. Попробуй удалить письмо, если кости сдадутся - удали квестовые итемы, отмени квест и начни заново. Если с нуля все будет работать, то это баг ПТС скрипта.
Скорее всего да, через админку ничего не создавал, все по квесту, может быть рейты квеста так влияют? Стоят х5 на получение RateQuestsDrop. Думаю скорее всего нет. Еще раз проверю сегодня, посмотрю все по внимательнее, и отпишусь.
 
Если письмо осталось случайно после отмены квеста- это не критично, на птсе те же баги с отмененными квестами , с удалением предметов и т.д.
Если письмо не забрала нети, когда выдавала дагер и лук - тогда нужно вносить правки в скрипт и аналогично в другие скрипты.
 
Поставь нормальные рейты, и простым персом пройди квест.
 
Поставил норм рейты, косяк в рейтах, стояли х5. При этом Письмо выдавалось х5. Все нормально проходится, но есть и далее косяки. В конце Безик должен выдать Безик Рекомендацию, но не выдает, дает експ, сп, и адена.
Подскажите какой ID итема этой рекомендации, ниже под сполйером код цепочки.
Код:
if (npcId == captain_bezique) {
                    if (st.ownItemCount(horseshoe_of_light) == 0 && st.ownItemCount(stolen_jewelry) > 0 && st.ownItemCount(stolen_tomes) > 0 && st.ownItemCount(stolen_ring) > 0 && st.ownItemCount(stolen_necklace) > 0) {
                        st.takeItems(netis_bow, -1);
                        st.takeItems(netis_dagger, -1);
                        st.takeItems(stolen_jewelry, 1);
                        st.takeItems(stolen_tomes, 1);
                        st.takeItems(stolen_ring, 1);
                        st.takeItems(stolen_necklace, 1);
                        st.takeItems(wanted_bill, -1);
                        st.giveItems(beziques_recommendation, 1);
                        if (GetOneTimeQuestFlag == 0) {
                            st.getPlayer().getPlayerVariables().set(PlayerVariables.profession_145, String.valueOf(1), -1);
                            if (talker_level >= 20)
                                st.addExpAndSp(320534, 20232);
                            else if (talker_level == 19)
                                st.addExpAndSp(456128, 26930);
                            else
                                st.addExpAndSp(591724, 33628);
                            st.giveItems(ADENA_ID, 163800);
                        }
                        htmltext = "captain_bezique_q0403_09.htm";
                        player.sendPacket(new SocialAction(st.getPlayer().getObjectId(), 3)); // Тут вроде как должен ИД итема
                        st.soundEffect(SOUND_FINISH);
                        st.exitQuest(false);
                    } else if (st.ownItemCount(horseshoe_of_light) == 0 && st.ownItemCount(beziques_letter) > 0)
                        htmltext = "captain_bezique_q0403_07.htm";
                    else if (st.ownItemCount(horseshoe_of_light) > 0) {
                        htmltext = "captain_bezique_q0403_08.htm";
                        st.takeItems(horseshoe_of_light, 1);
                        st.giveItems(wanted_bill, 1);
                        st.setCond(5);
                    } else if (st.ownItemCount(netis_bow) > 0 && st.ownItemCount(netis_dagger) > 0 && st.ownItemCount(wanted_bill) == 0)
                        htmltext = "captain_bezique_q0403_10.htm";
                    else if (st.ownItemCount(wanted_bill) > 0)
                        htmltext = "captain_bezique_q0403_11.htm";
                }
Если я правильно понял, отметил комментарием, там должно быть ИД итема или нет? Если нет, поправьте.
 
Вообще в коде уже есть выдача это рекомендации, а вверху скрипта ей должен быть присвоен итем ид.
Может она не квестовый предмет? Или итем ид не тот? Или предмета нет в датапаке в предметах?
Код:
if (npcId == captain_bezique) {
                    if (st.ownItemCount(horseshoe_of_light) == 0 && st.ownItemCount(stolen_jewelry) > 0 && st.ownItemCount(stolen_tomes) > 0 && st.ownItemCount(stolen_ring) > 0 && st.ownItemCount(stolen_necklace) > 0) {
                        st.takeItems(netis_bow, -1);
                        st.takeItems(netis_dagger, -1);
                        st.takeItems(stolen_jewelry, 1);
                        st.takeItems(stolen_tomes, 1);
                        st.takeItems(stolen_ring, 1);
                        st.takeItems(stolen_necklace, 1);
                        st.takeItems(wanted_bill, -1);
                        st.giveItems(beziques_recommendation, 1); // Тут рекомендация должна выдаваться
                        if (GetOneTimeQuestFlag == 0) {
                            st.getPlayer().getPlayerVariables().set(PlayerVariables.profession_145, String.valueOf(1), -1);
                            if (talker_level >= 20)
                                st.addExpAndSp(320534, 20232);
                            else if (talker_level == 19)
                                st.addExpAndSp(456128, 26930);
                            else
                                st.addExpAndSp(591724, 33628);
                            st.giveItems(ADENA_ID, 163800);
                        }
                        htmltext = "captain_bezique_q0403_09.htm";
                        player.sendPacket(new SocialAction(st.getPlayer().getObjectId(), 3));
                        st.soundEffect(SOUND_FINISH);
                        st.exitQuest(false);
                    } else if (st.ownItemCount(horseshoe_of_light) == 0 && st.ownItemCount(beziques_letter) > 0)
                        htmltext = "captain_bezique_q0403_07.htm";
                    else if (st.ownItemCount(horseshoe_of_light) > 0) {
                        htmltext = "captain_bezique_q0403_08.htm";
                        st.takeItems(horseshoe_of_light, 1);
                        st.giveItems(wanted_bill, 1);
                        st.setCond(5);
                    } else if (st.ownItemCount(netis_bow) > 0 && st.ownItemCount(netis_dagger) > 0 && st.ownItemCount(wanted_bill) == 0)
                        htmltext = "captain_bezique_q0403_10.htm";
                    else if (st.ownItemCount(wanted_bill) > 0)
                        htmltext = "captain_bezique_q0403_11.htm";
                }
 
Вообще в коде уже есть выдача это рекомендации, а вверху скрипта ей должен быть присвоен итем ид.
Может она не квестовый предмет? Или итем ид не тот? Или предмета нет в датапаке в предметах?
Код:
if (npcId == captain_bezique) {
                    if (st.ownItemCount(horseshoe_of_light) == 0 && st.ownItemCount(stolen_jewelry) > 0 && st.ownItemCount(stolen_tomes) > 0 && st.ownItemCount(stolen_ring) > 0 && st.ownItemCount(stolen_necklace) > 0) {
                        st.takeItems(netis_bow, -1);
                        st.takeItems(netis_dagger, -1);
                        st.takeItems(stolen_jewelry, 1);
                        st.takeItems(stolen_tomes, 1);
                        st.takeItems(stolen_ring, 1);
                        st.takeItems(stolen_necklace, 1);
                        st.takeItems(wanted_bill, -1);
                        st.giveItems(beziques_recommendation, 1); // Тут рекомендация должна выдаваться
                        if (GetOneTimeQuestFlag == 0) {
                            st.getPlayer().getPlayerVariables().set(PlayerVariables.profession_145, String.valueOf(1), -1);
                            if (talker_level >= 20)
                                st.addExpAndSp(320534, 20232);
                            else if (talker_level == 19)
                                st.addExpAndSp(456128, 26930);
                            else
                                st.addExpAndSp(591724, 33628);
                            st.giveItems(ADENA_ID, 163800);
                        }
                        htmltext = "captain_bezique_q0403_09.htm";
                        player.sendPacket(new SocialAction(st.getPlayer().getObjectId(), 3));
                        st.soundEffect(SOUND_FINISH);
                        st.exitQuest(false);
                    } else if (st.ownItemCount(horseshoe_of_light) == 0 && st.ownItemCount(beziques_letter) > 0)
                        htmltext = "captain_bezique_q0403_07.htm";
                    else if (st.ownItemCount(horseshoe_of_light) > 0) {
                        htmltext = "captain_bezique_q0403_08.htm";
                        st.takeItems(horseshoe_of_light, 1);
                        st.giveItems(wanted_bill, 1);
                        st.setCond(5);
                    } else if (st.ownItemCount(netis_bow) > 0 && st.ownItemCount(netis_dagger) > 0 && st.ownItemCount(wanted_bill) == 0)
                        htmltext = "captain_bezique_q0403_10.htm";
                    else if (st.ownItemCount(wanted_bill) > 0)
                        htmltext = "captain_bezique_q0403_11.htm";
                }

Вроде как квестовый, нашел по пути /data/client/itemname/ItemName-ru.xml
Код:
<data item_id="1190" name="Рекомендация Безика" description="Предмет для смены профессии. Чтобы стать Разбойником, отдайте это Великому Мастеру в Гильдии Воинов" color="1"/>

И в самом коде правильно прописан тоже
Код:
private final static int beziques_recommendation = 1190;

Странно вообще как то, вроде правильно все.
 
Ситуация такая, когда проходишь данный квест, Безик отправляет к Нети, а Нети отправляет бить мобов Скелетов в Руинс Агойн, при помощи квест итемов. Получить необходимо 10 квест итемов, даются нормально, все набили. И тут самое веселое, Нети должна дать (Подкова Света), но это не происходит.
каким образом добыл эти самые квест итемы?
если с админки добавил сразу 10, то ясное дело оно сдаваться не будет. В таком случае нужно удалить/выбросить 1 итем и выбить с моба самостоятельно.
 
каким образом добыл эти самые квест итемы?
если с админки добавил сразу 10, то ясное дело оно сдаваться не будет. В таком случае нужно удалить/выбросить 1 итем и выбить с моба самостоятельно.
Итемы я набивал при помощи лука и дагера, которое дала Нети. Через админку я ничего не создавал. Глюк был с параметром "RateQuestsDrop" : "5.", в место "1." стояло значение х5, по этому все так происходило. Но при параметре рейта "1.", ужасно долго набиваются квест итемы. Вопрос по этому поводу решен. Сейчас ситуация другая, что по завершению квеста, капитан Безик должен выдать итем "Безик Рекомендацию", для получении профессии, но не выдает.

По пробовал пройти без прав Гма, все тоже самое, а самое главное что по завершению квеста мол якобы Безик дает рекомендацию, но по факту в инвентаре нет этой рекомендации, ни в квестах, ни в основной.


Вроде как квестовый, нашел по пути /data/client/itemname/ItemName-ru.xml
Код:
<data item_id="1190" name="Рекомендация Безика" description="Предмет для смены профессии. Чтобы стать Разбойником, отдайте это Великому Мастеру в Гильдии Воинов" color="1"/>

И в самом коде правильно прописан тоже
Код:
private final static int beziques_recommendation = 1190;

Странно вообще как то, вроде правильно все.

ПТС скриптах тоже вроде как все правильно, /data/pts_scripts/itemdata.txt. Как можно проверить, верный ли ИД? Только если по пробовать создать данный итем?
Код:
item_begin    questitem    1190    [beziques_recommendation]    item_type=questitem    slot_bit_type={none}    armor_type=none    etcitem_type=none    delay_share_group=-1    item_multi_skill_list={}    recipe_id=0    blessed=0    weight=0    default_action=action_none    consume_type=consume_type_stackable    initial_count=1    soulshot_count=0    spiritshot_count=0    reduced_soulshot={}    reduced_spiritshot={}    reduced_mp_consume={}    immediate_effect=1    ex_immediate_effect=0    drop_period=10    duration=-1    use_skill_distime=0    period=0    equip_reuse_delay=0    price=0    default_price=0    item_skill=[none]    critical_attack_skill=[none]    attack_skill=[none]    magic_skill=[none]    item_skill_enchanted_four=[none]    capsuled_items={}    material_type=steel    crystal_type=none    crystal_count=0    is_trade=0    is_drop=0    is_destruct=1    is_private_store=0    keep_type=0    physical_damage=0    random_damage=0    weapon_type=none    critical=0    hit_modify=0    avoid_modify=0    dual_fhit_rate=0    shield_defense=0    shield_defense_rate=0    attack_range=0    damage_range={}    attack_speed=0    reuse_delay=0    mp_consume=0    magical_damage=0    durability=-1    damaged=0    physical_defense=0    magical_defense=0    mp_bonus=0    category={}    enchanted=0    base_attribute_attack={none;0}    base_attribute_defend={0;0;0;0;0;0}    html=[item_default.htm]    magic_weapon=0    enchant_enable=0    elemental_enable=0    unequip_skill={}    for_npc=0    item_equip_option={}    use_condition={}    equip_condition={}    is_olympiad_can_use=1    can_move=1    is_premium=0    /*배지크의추천장*/    item_end
 
Последнее редактирование модератором:
По пробовал пройти без прав Гма, все тоже самое, а самое главное что по завершению квеста мол якобы Безик дает рекомендацию, но по факту в инвентаре нет этой рекомендации, ни в квестах, ни в основной.

1) количество ячеек в инвентаре занятых изменилось?
2) Вы смотрели свой патч? а именно etcitemgrp.dat как-то так называется
3) возможно в клиенте просто отсутствуют необходимые текстуры, тоже проверьте
4) что говорят логи сервера?
5) если не разберетесь - пишите в личку, помогу
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
По пробовал пройти без прав Гма, все тоже самое, а самое главное что по завершению квеста мол якобы Безик дает рекомендацию, но по факту в инвентаре нет этой рекомендации, ни в квестах, ни в основной.

этот квест нужно диписывать!
 
ПТС скриптах тоже вроде как все правильно, /data/pts_scripts/itemdata.txt. Как можно проверить, верный ли ИД? Только если по пробовать создать данный итем?
Код:
item_begin    questitem    1190    [beziques_recommendation]    item_type=questitem    slot_bit_type={none}    armor_type=none    etcitem_type=none    delay_share_group=-1    item_multi_skill_list={}    recipe_id=0    blessed=0    weight=0    default_action=action_none    consume_type=consume_type_stackable    initial_count=1    soulshot_count=0    spiritshot_count=0    reduced_soulshot={}    reduced_spiritshot={}    reduced_mp_consume={}    immediate_effect=1    ex_immediate_effect=0    drop_period=10    duration=-1    use_skill_distime=0    period=0    equip_reuse_delay=0    price=0    default_price=0    item_skill=[none]    critical_attack_skill=[none]    attack_skill=[none]    magic_skill=[none]    item_skill_enchanted_four=[none]    capsuled_items={}    material_type=steel    crystal_type=none    crystal_count=0    is_trade=0    is_drop=0    is_destruct=1    is_private_store=0    keep_type=0    physical_damage=0    random_damage=0    weapon_type=none    critical=0    hit_modify=0    avoid_modify=0    dual_fhit_rate=0    shield_defense=0    shield_defense_rate=0    attack_range=0    damage_range={}    attack_speed=0    reuse_delay=0    mp_consume=0    magical_damage=0    durability=-1    damaged=0    physical_defense=0    magical_defense=0    mp_bonus=0    category={}    enchanted=0    base_attribute_attack={none;0}    base_attribute_defend={0;0;0;0;0;0}    html=[item_default.htm]    magic_weapon=0    enchant_enable=0    elemental_enable=0    unequip_skill={}    for_npc=0    item_equip_option={}    use_condition={}    equip_condition={}    is_olympiad_can_use=1    can_move=1    is_premium=0    /*배지크의추천장*/    item_end
у жтс за 2018 очень много косяков на то и шара а так возьми шару от жтс 2015 там кстати кв корретные и рабочие
 

    Art

    Баллов: 5
    Все верно, разработчики то разные:)
1) количество ячеек в инвентаре занятых изменилось?
2) Вы смотрели свой патч? а именно etcitemgrp.dat как-то так называется
3) возможно в клиенте просто отсутствуют необходимые текстуры, тоже проверьте
4) что говорят логи сервера?
5) если не разберетесь - пишите в личку, помогу
Протокол как нибудь влияет на это? Пользуюсь клиентом на протоколе 268. Может 273 необходим, или без разницы?
 
Вообщем решил я сегодня сам посмотреть код.
Предметы криво рейтуются из-за попытки сделать это массово для всех квестов. В QuestState.java есть кусочек где проверка template.isStackable() - почему то означает, что квест итем нужно прорейтовать.
Код:
/**
     * Добавить предмет игроку
     * By default if item is adena rates 'll be applyed, else no
     *
     * @param itemId
     * @param count
     */
    public void giveItems(final int itemId, final long count) {
        final ItemTemplate template = ItemTemplateHolder.getInstance().getTemplate(itemId);
        if (template == null) {
            return;
        }
        giveItems(itemId, count, template.isStackable()); // Проверка isStackable())
    }
Исправление: заменить template.isStackable() на false, а затем руками во всех квестах участки st.giveItems("название_предмета", 1); менять на st.giveItems("название_предмета", 1, true); там, где нужно рейтовать drop\reward. А еще лучше, раз уж руками придется рейтовать квесты(как это делают в птс экстендерах) создать дополнительный метод rewardItems по аналогии с
giveItems(final int itemId, long count, final boolean rate) - и прорейтовать дроп в квестах с помощью giveItems, а награду с помощью rewardItems. Квестов всего штук 500, весь фикс займет от силы несколько часов.

Далее почему не добавляется последний предмет. В QuestState.java есть кусок где все квестовые предметы удаляются после завершения квеста, чтобы почистить от лишнего дропа(под спойлером ниже). В нашем квесте при инициализации конструктора beziques_recommendation добавляется в список квестовых предметов, это выглядит вот так: addQuestItem(beziques_letter, spatois_bones, horseshoe_of_light, wanted_bill, stolen_jewelry, stolen_tomes, stolen_ring, stolen_necklace, beziques_recommendation, netis_bow, netis_dagger); И при завершении квеста, предмет считается как дропнутый по квесту и удаляется.
На птс удаления предметов по завершению квеста не происходит, а происходит только при ручной отмене квеста.
Код:
/**
     * Destroy element used by quest when quest is exited
     *
     * @param repeatable
     * @return QuestState
     */
    public QuestState exitQuest(final boolean repeatable) {
        final Player player = getPlayer();
        if (player == null) {
            return this;
        }

        removePlayerOnKillListener();
        // Clean drops
        for (final int itemId : _quest.getItems()) {
            // Get [item from] / [presence of the item in] the inventory of the player
            final ItemInstance item = player.getInventory().getItemByItemId(itemId);
            if (item == null || itemId == 57) {
                continue;
            }
            final long count = item.getCount();
            // If player has the item in inventory, destroy it (if not gold)
            player.getInventory().destroyItemByItemId(itemId, count); //Удаление квестовых предметов
            player.getWarehouse().destroyItemByItemId(itemId, count); //Удаление квестовых предметов
        }

        // If quest is repeatable, delete quest from list of quest of the player and from database (quest CAN be created again => repeatable)
        if (repeatable) {
            player.removeQuestState(_quest.getId());
            CharacterQuestDAO.getInstance().delete(getPlayer().getObjectId(), _quest.getId());
            _vars.clear();
        } else { // Otherwise, delete variables for quest and update database (quest CANNOT be created again => not repeatable)
            for (final String var : _vars.keySet()) {
                if (var != null) {
                    removeMemo(var);
                }
            }
            setState(Quest.COMPLETED);
        }
        player.sendPacket(new QuestList(player));
        return this;
    }
Исправление: чтобы решить эту проблему надо просто этот участок(с удалением предметов) перенести в блок public void abortQuest() либо как альтернативный вариант вручную в каждом квесте удалить из списка addQuestItem предметы которые выдаются по его завершению.
В итоге эти 2 мелких фикса полностью исправят квестовую систему.
 
  • Мне нравится
Реакции: M00ntik, Rovskoi и DJone

    DJone

    Баллов: 1
    За эпический ответ

    Rovskoi

    Баллов: 18
    Спасибо за вклад в развитие форума
Вообщем решил я сегодня сам посмотреть код.
Предметы криво рейтуются из-за попытки сделать это массово для всех квестов. В QuestState.java есть кусочек где проверка template.isStackable() - почему то означает, что квест итем нужно прорейтовать.
Код:
/**
     * Добавить предмет игроку
     * By default if item is adena rates 'll be applyed, else no
     *
     * @param itemId
     * @param count
     */
    public void giveItems(final int itemId, final long count) {
        final ItemTemplate template = ItemTemplateHolder.getInstance().getTemplate(itemId);
        if (template == null) {
            return;
        }
        giveItems(itemId, count, template.isStackable()); // Проверка isStackable())
    }
Исправление: заменить template.isStackable() на false, а затем руками во всех квестах участки st.giveItems("название_предмета", 1); менять на st.giveItems("название_предмета", 1, true); там, где нужно рейтовать drop\reward. А еще лучше, раз уж руками придется рейтовать квесты(как это делают в птс экстендерах) создать дополнительный метод rewardItems по аналогии с
giveItems(final int itemId, long count, final boolean rate) - и прорейтовать дроп в квестах с помощью giveItems, а награду с помощью rewardItems. Квестов всего штук 500, весь фикс займет от силы несколько часов.

Далее почему не добавляется последний предмет. В QuestState.java есть кусок где все квестовые предметы удаляются после завершения квеста, чтобы почистить от лишнего дропа(под спойлером ниже). В нашем квесте при инициализации конструктора beziques_recommendation добавляется в список квестовых предметов, это выглядит вот так: addQuestItem(beziques_letter, spatois_bones, horseshoe_of_light, wanted_bill, stolen_jewelry, stolen_tomes, stolen_ring, stolen_necklace, beziques_recommendation, netis_bow, netis_dagger); И при завершении квеста, предмет считается как дропнутый по квесту и удаляется.
На птс удаления предметов по завершению квеста не происходит, а происходит только при ручной отмене квеста.
Код:
/**
     * Destroy element used by quest when quest is exited
     *
     * @param repeatable
     * @return QuestState
     */
    public QuestState exitQuest(final boolean repeatable) {
        final Player player = getPlayer();
        if (player == null) {
            return this;
        }

        removePlayerOnKillListener();
        // Clean drops
        for (final int itemId : _quest.getItems()) {
            // Get [item from] / [presence of the item in] the inventory of the player
            final ItemInstance item = player.getInventory().getItemByItemId(itemId);
            if (item == null || itemId == 57) {
                continue;
            }
            final long count = item.getCount();
            // If player has the item in inventory, destroy it (if not gold)
            player.getInventory().destroyItemByItemId(itemId, count); //Удаление квестовых предметов
            player.getWarehouse().destroyItemByItemId(itemId, count); //Удаление квестовых предметов
        }

        // If quest is repeatable, delete quest from list of quest of the player and from database (quest CAN be created again => repeatable)
        if (repeatable) {
            player.removeQuestState(_quest.getId());
            CharacterQuestDAO.getInstance().delete(getPlayer().getObjectId(), _quest.getId());
            _vars.clear();
        } else { // Otherwise, delete variables for quest and update database (quest CANNOT be created again => not repeatable)
            for (final String var : _vars.keySet()) {
                if (var != null) {
                    removeMemo(var);
                }
            }
            setState(Quest.COMPLETED);
        }
        player.sendPacket(new QuestList(player));
        return this;
    }
Исправление: чтобы решить эту проблему надо просто этот участок(с удалением предметов) перенести в блок public void abortQuest() либо как альтернативный вариант вручную в каждом квесте удалить из списка addQuestItem предметы которые выдаются по его завершению.
В итоге эти 2 мелких фикса полностью исправят квестовую систему.
Во спасибо за разъяснение, буду смотреть и править.

Народ, подскажите как сделать следующее:
1. Нужно убрать права ГМа при создании персонажа
# Выдавать ли всем игрокам права администратора (удобно для тестовых серверов)
# Шаблон с привилегиями находятся в файле configuration\gm\GMAccess.xml, для PlayerID set="0"
"EverybodyHasAdminRights" : "false",
При выключенной опции, пытаюсь добавить ГМа по старой традиции, через таблицу characters, accesslevel 100, не срабатывает. Что не так делаю тут?

2. Настройка авторестарта на 5:00
Код:
# An example of a complete cron-expression is the string "0 0 12 ? * WED" - which means "every Wednesday at 12:00:00 pm".
# Если поле null, ежедневный авторестарт отключен, по умолчанию 05:00 (0 0 5 * * ?)
 "AutoRestartAt" : null,
При 0 0 5 * * ?, ГС не грузится по просту.

3. Какой файл отвечает за появление в точке респавна в деревне Камаель возле Помощника новичка? Не все рассы респавнятся в одной точке, темные эльфы появляются в точке спавна нпц Помощника новичка.
 
Последнее редактирование модератором:
Народ, подскажите как сделать следующее:
1. Нужно убрать права ГМа при создании персонажа
# Выдавать ли всем игрокам права администратора (удобно для тестовых серверов)
# Шаблон с привилегиями находятся в файле configuration\gm\GMAccess.xml, для PlayerID set="0"
"EverybodyHasAdminRights" : "false",
При выключенной опции, пытаюсь добавить ГМа по старой традиции, через таблицу characters, accesslevel 100, не срабатывает. Что не так делаю тут?
configuration\gm\GMAccess.xml
 
Народ, подскажите как сделать следующее:
1. Нужно убрать права ГМа при создании персонажа
# Выдавать ли всем игрокам права администратора (удобно для тестовых серверов)
# Шаблон с привилегиями находятся в файле configuration\gm\GMAccess.xml, для PlayerID set="0"
"EverybodyHasAdminRights" : "false",
При выключенной опции, пытаюсь добавить ГМа по старой традиции, через таблицу characters, accesslevel 100, не срабатывает. Что не так делаю тут?

2. Настройка авторестарта на 5:00
Код:
# An example of a complete cron-expression is the string "0 0 12 ? * WED" - which means "every Wednesday at 12:00:00 pm".
# Если поле null, ежедневный авторестарт отключен, по умолчанию 05:00 (0 0 5 * * ?)
 "AutoRestartAt" : null,
При 0 0 5 * * ?, ГС не грузится по просту.

3. Какой файл отвечает за появление в точке респавна в деревне Камаель возле Помощника новичка? Не все рассы респавнятся в одной точке, темные эльфы появляются в точке спавна нпц Помощника новичка.
Какой старой традиции? В оверах всю жизнь в конфиге указывались права админа по ид перса.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху Снизу