Сообщений: 61
Тем: 14
Зарегистрирован: Oct 2010
Репутация:
-13
Всем привет. Подскажите по проблеме.
Сборка L2open 690rev. Gracia Final
Квест 152_ShardsOfGolem
не правильно были прописаны ссылки <a action="bypass -h ...>
я поправил. Квест заработал. Прошел квест. Сдаю. Как только выдается награда сразу игра останавливается и намертво виснет. Кое-как снял задачу. Подумал совпадение. Прошел другим чаром квест, результат тот же. Что может быть и как править?
Сообщений: 329
Тем: 16
Зарегистрирован: Nov 2014
CABA Написал:Всем привет. Подскажите по проблеме.
Сборка L2open 690rev. Gracia Final
Квест 152_ShardsOfGolem
не правильно были прописаны ссылки <a action="bypass -h ...>
я поправил. Квест заработал. Прошел квест. Сдаю. Как только выдается награда сразу игра останавливается и намертво виснет. Кое-как снял задачу. Подумал совпадение. Прошел другим чаром квест, результат тот же. Что может быть и как править?
Функцию выдачи награды сюда. Были ли подобные проблемы с другими квестами?
Сообщений: 1,610
Тем: 44
Зарегистрирован: Jan 2016
Репутация:
1,353
Ну очевидно что на моменте выдачи крашит. Значит проблема именно там.
Сообщений: 329
Тем: 16
Зарегистрирован: Nov 2014
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);
}
}