Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
quest крашит клиент
#1
Всем привет. Подскажите по проблеме.
Сборка L2open 690rev. Gracia Final
Квест 152_ShardsOfGolem
не правильно были прописаны ссылки <a action="bypass -h ...>
я поправил. Квест заработал. Прошел квест. Сдаю. Как только выдается награда сразу игра останавливается и намертво виснет. Кое-как снял задачу. Подумал совпадение. Прошел другим чаром квест, результат тот же. Что может быть и как править?
Ответ
#2
CABA Написал:Всем привет. Подскажите по проблеме.
Сборка L2open 690rev. Gracia Final
Квест 152_ShardsOfGolem
не правильно были прописаны ссылки <a action="bypass -h ...>
я поправил. Квест заработал. Прошел квест. Сдаю. Как только выдается награда сразу игра останавливается и намертво виснет. Кое-как снял задачу. Подумал совпадение. Прошел другим чаром квест, результат тот же. Что может быть и как править?

Функцию выдачи награды сюда. Были ли подобные проблемы с другими квестами?
Ответ
#3
Ну очевидно что на моменте выдачи крашит. Значит проблема именно там.
Ответ
#4
GenCloud Написал:Функцию выдачи награды сюда.

C другими проблем не замечал.
Скрипт:
http://pastebin.com/qda1zFZU
Ответ
#5
CABA Написал:C другими проблем не замечал.
Скрипт:
http://pastebin.com/qda1zFZU

1) переведите этот кусок говна на Java
2) вот говнопример этого квеста
Код:
public class ShardsOfGolem extends Quest
{
    private static final String qn = "152_ShardsOfGolem";
    private final int HARRYS_RECEIPT1_ID = 1008;
    private final int HARRYS_RECEIPT2_ID = 1009;
    private final int GOLEM_SHARD_ID = 1010;
    private final int TOOL_BOX_ID = 1011;
    private final int WOODEN_BP_ID = 23;
    private final int HARRIS = 30035;
    private final int ALTRAN = 30283;
    private final int[] questItems;
    private final QuestHolder[] _qArray;
    
    public ShardsOfGolem() {
        super(152, "152_ShardsOfGolem", "Ремонт храма");
        questItems = new int[] { 1008, 1009, 1010, 1011 };
        addStartNpc(30035);
        addTalkId(30035);
        addTalkId(30283);
        addKillId(20016);
        questItemIds = questItems;
        _qArray = getQuestDrop(getQuestIntId());
    }
    
    @Override
    public String onAdvEvent(final String event, final L2NpcInstance npc, final L2PcInstance player) {
        final QuestState st = player.getQuestState("152_ShardsOfGolem");
        if (st == null) {
            return null;
        }
        final int id = st.getState();
        final int cond = st.getInt("cond");
        if (id != 2) {
            if (event.equalsIgnoreCase("30035-04.htm") && cond == 0) {
                st.set("cond", "1");
                st.setState((byte)1);
                st.playSound("ItemSound.quest_accept");
                st.giveItems(1008, 1);
            }
            else if (event.equalsIgnoreCase("30283-02.htm") && cond == 1 && st.getQuestItemsCount(1008) != 0) {
                st.takeItems(1008, -1L);
                st.giveItems(1009, 1);
                st.set("cond", "2");
            }
        }
        return event;
    }
    
    @Override
    public String onTalk(final L2NpcInstance npc, final L2PcInstance player) {
        String htmltext = "<html><body>Вы не взяли квест для этого NPC или просто не соответствуете его минимальным требованиям!</body></html>";
        final QuestState st = player.getQuestState("152_ShardsOfGolem");
        if (st == null) {
            return htmltext;
        }
        final int id = st.getState();
        if (id == 2) {
            htmltext = "<html><body>Данный квест уже Вами пройден.</body></html>";
        }
        final int npcId = npc.getNpcId();
        final int cond = st.getInt("cond");
        final int receipt1 = st.getQuestItemsCount(1008);
        final int receipt2 = st.getQuestItemsCount(1009);
        final int toolbox = st.getQuestItemsCount(1011);
        if (npcId == 30035) {
            if (cond == 0) {
                if (player.getLevel() >= 10 && player.getLevel() <= 17) {
                    htmltext = "30035-03.htm";
                }
                else {
                    htmltext = "30035-02.htm";
                    st.exitQuest(true);
                }
            }
            else if (cond == 1 && receipt1 != 0 && toolbox == 0) {
                htmltext = "30035-05.htm";
            }
            else if (cond == 3 && toolbox != 0) {
                st.takeItems(1011, -1L);
                st.takeItems(1009, -1L);
                st.unset("cond");
                st.exitQuest(false);
                st.playSound("ItemSound.quest_finish");
                st.giveItems(23, 1);
                st.addExpAndSp(5000, 0);
                htmltext = "30035-06.htm";
            }
        }
        else if (npcId == 30283 && id == 1) {
            final int shards = st.getQuestItemsCount(1010);
            if (cond == 1 && receipt1 != 0) {
                htmltext = "30283-01.htm";
            }
            else if (cond == 2 && receipt2 != 0 && shards < 5 && toolbox == 0) {
                htmltext = "30283-03.htm";
            }
            else if (cond == 3 && receipt2 != 0 && shards >= 5 && toolbox == 0) {
                st.takeItems(1010, -1L);
                st.giveItems(1011, 1);
                htmltext = "30283-04.htm";
            }
            else if (cond == 3 && receipt2 != 0 && toolbox != 0) {
                htmltext = "30283-05.htm";
            }
        }
        return htmltext;
    }
    
    @Override
    public String onKill(final L2NpcInstance npc, final L2PcInstance player, final boolean isPet) {
        final QuestState st = player.getQuestState("152_ShardsOfGolem");
        if (st == null) {
            return null;
        }
        if (st.getState() != 1) {
            return null;
        }
        if (player.getLevel() < 10 && player.getLevel() > 17) {
            return null;
        }
        if (st.getInt("cond") == 2 && st.getQuestItemsCount(1010) < 5 && _qArray != null) {
            final int chance = st.getRandom(100);
            for (int i = 0; i < _qArray.length; ++i) {
                if (chance < _qArray[i].getChance()) {
                    st.giveQuestItems(_qArray[i].getId(), 1 * _qArray[i].getRate(), _qArray[i].useRate());
                    if (st.getQuestItemsCount(1010) >= 5) {
                        st.playSound("ItemSound.quest_middle");
                        st.set("cond", "3");
                    }
                    else {
                        st.playSound("ItemSound.quest_itemget");
                    }
                }
            }
        }
        return super.onKill(npc, player, isPet);
    }
}
Ответ
#6
GenCloud Написал:1) переведите этот кусок говна на Java
[/CODE]
я так понимаю просто так не перевести. это же в движке зашито, как он квесты воспринимает. и если вместо jyphon будет ява, он просто его не загрузит
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  время баффов, клиент с3 tpls 4 2,667 05-12-2024, 03:34 AM
Последний пост: Magican
  Вопрос Клиент-Сервер Melargus 12 3,292 07-12-2016, 11:13 PM
Последний пост: FaintSmile
  [Help]Quest _10363_ RequestOfSeeker Wait_Me 4 1,444 05-06-2013, 09:55 PM
Последний пост: Wait_Me
  Quest.java kloni1 3 1,583 09-25-2012, 01:29 PM
Последний пост: kloni1
  Разбор полетов по Quest GOODPower 11 3,628 05-05-2012, 09:13 PM
Последний пост: Lihoy
  array mob's in quest weTr1k 11 4,164 03-10-2011, 06:32 PM
Последний пост: ANZO
  Quest: как узнать CharId? Stasev 2 2,583 04-21-2009, 01:36 PM
Последний пост: Stasev

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)