02-16-2013, 09:59 PM
Добрый день
Сразу приступлю к описанию проблемы:
Начал переделывать квесты, под сервер, всё сделал,всё вроде бы отлично и с клиентом и с сервером,но,есть одна существенная проблема.
В общем суть квеста такова:
Нужно убить 20 игроков противоположной раса,в локации Храм Пхасумандир (пвп-локация)
Когда я убиваю первого игрока,засчитывается сразу 10 и квест обновляется до награды
Изначально брал квест _2702Defeat9thRankElyosSoldiers,изначально в нём нужно было убить 10 игроков.
Я исправил это:
На это
Но изменений не последовало :с
Вот весь код квеста:
QuestHandler.java
Ну вот,по идее,я должен убить 20 игроков и только тогда квест перейдёт в статус REWARD, но я убиваю первого и сразу переходит в этот статус и квест не сдаётся.
Рыл клиент,но там по этому поводу ничего не сказано.
Подскажите пожалуйста где я ошибся.
P.S. Можно ответить в Skype: splashman7
Сразу приступлю к описанию проблемы:
Начал переделывать квесты, под сервер, всё сделал,всё вроде бы отлично и с клиентом и с сервером,но,есть одна существенная проблема.
В общем суть квеста такова:
Нужно убить 20 игроков противоположной раса,в локации Храм Пхасумандир (пвп-локация)
Когда я убиваю первого игрока,засчитывается сразу 10 и квест обновляется до награды
Изначально брал квест _2702Defeat9thRankElyosSoldiers,изначально в нём нужно было убить 10 игроков.
Я исправил это:
Код:
@Override
public boolean onKillRankedEvent(QuestEnv env) {
return defaultOnKillRankedEvent(env, 0, 10, true); // reward
}
Код:
@Override
public boolean onKillRankedEvent(QuestEnv env) {
return defaultOnKillRankedEvent(env, 0, 20, true); // reward
}
Но изменений не последовало :с
Вот весь код квеста:
Код:
/*
* This file is part of Aion-Lightning <http://www.zetta-core.org>.
*
* Aion-Lightning is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published
* by the Free Software Foundation, either version 3 of the License,
* or (at your option) any later version.
*
* Aion-Lightning is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Aion-Lightning. If not, see <http://www.gnu.org/licenses/>.
*/
package quest.reshanta;
import com.aionemu.gameserver.model.PlayerClass;
import com.aionemu.gameserver.model.gameobjects.player.Player;
import com.aionemu.gameserver.questEngine.handlers.QuestHandler;
import com.aionemu.gameserver.questEngine.model.QuestDialog;
import com.aionemu.gameserver.questEngine.model.QuestEnv;
import com.aionemu.gameserver.questEngine.model.QuestState;
import com.aionemu.gameserver.questEngine.model.QuestStatus;
import com.aionemu.gameserver.services.item.ItemService;
import com.aionemu.gameserver.utils.PacketSendUtility;
import com.aionemu.gameserver.utils.stats.AbyssRankEnum;
/**
* @author Hilgert
* @modified vlog
*/
public class _2702Defeat9thRankElyosSoldiers extends QuestHandler {
private final static int questId = 2702;
public _2702Defeat9thRankElyosSoldiers() {
super(questId);
}
@Override
public void register() {
qe.registerQuestNpc(278016).addOnQuestStart(questId);
qe.registerQuestNpc(278016).addOnTalkEvent(questId);
qe.registerOnKillInWorld(300170000, questId);
qe.registerOnKillRanked(AbyssRankEnum.SUPREME_COMMANDER, questId);
qe.registerOnKillRanked(AbyssRankEnum.GREAT_GENERAL, questId);
qe.registerOnKillRanked(AbyssRankEnum.GENERAL, questId);
qe.registerOnKillRanked(AbyssRankEnum.COMMANDER, questId);
qe.registerOnKillRanked(AbyssRankEnum.STAR5_OFFICER, questId);
qe.registerOnKillRanked(AbyssRankEnum.STAR4_OFFICER, questId);
qe.registerOnKillRanked(AbyssRankEnum.STAR3_OFFICER, questId);
qe.registerOnKillRanked(AbyssRankEnum.STAR2_OFFICER, questId);
qe.registerOnKillRanked(AbyssRankEnum.STAR1_OFFICER, questId);
qe.registerOnKillRanked(AbyssRankEnum.GRADE1_SOLDIER, questId);
qe.registerOnKillRanked(AbyssRankEnum.GRADE2_SOLDIER, questId);
qe.registerOnKillRanked(AbyssRankEnum.GRADE3_SOLDIER, questId);
qe.registerOnKillRanked(AbyssRankEnum.GRADE4_SOLDIER, questId);
qe.registerOnKillRanked(AbyssRankEnum.GRADE5_SOLDIER, questId);
qe.registerOnKillRanked(AbyssRankEnum.GRADE6_SOLDIER, questId);
qe.registerOnKillRanked(AbyssRankEnum.GRADE7_SOLDIER, questId);
qe.registerOnKillRanked(AbyssRankEnum.GRADE8_SOLDIER, questId);
qe.registerOnKillRanked(AbyssRankEnum.GRADE9_SOLDIER, questId);
}
@Override
public boolean onKillRankedEvent(QuestEnv env) {
return defaultOnKillRankedEvent(env, 0, 20, true); // reward
}
@Override
public boolean onDialogEvent(QuestEnv env) {
Player player = env.getPlayer();
QuestState qs = player.getQuestStateList().getQuestState(questId);
if (env.getTargetId() == 278016) {
if (qs == null || qs.getStatus() == QuestStatus.NONE || qs.canRepeat()) {
if (env.getDialog() == QuestDialog.START_DIALOG)
return sendQuestDialog(env, 1011);
else
return sendQuestStartDialog(env);
}
else if (qs != null && qs.getStatus() == QuestStatus.REWARD) {
if (env.getTargetId() == 278016) {
if (env.getDialog() == QuestDialog.USE_OBJECT)
return sendQuestDialog(env, 1352);
else
return sendQuestEndDialog(env);
}
}
}
return false;
}
}
QuestHandler.java
Код:
public boolean defaultOnKillRankedEvent(QuestEnv env, int startVar, int endVar, boolean reward) {
Player player = env.getPlayer();
QuestState qs = player.getQuestStateList().getQuestState(questId);
if (qs != null && qs.getStatus() == QuestStatus.START) {
int var = qs.getQuestVarById(0);
if (var >= startVar && var < (endVar - 1)) {
changeQuestStep(env, var, var + 1, false);
return true;
}
else if (var == (endVar - 1)) {
if (reward) {
qs.setStatus(QuestStatus.REWARD);
}
else {
qs.setQuestVarById(0, var + 1);
}
updateQuestStatus(env);
return true;
}
}
return false;
}
Код:
@Override
public boolean onKillRankedEvent(QuestEnv env) {
return defaultOnKillRankedEvent(env, 0, 20, true); // reward
}
Ну вот,по идее,я должен убить 20 игроков и только тогда квест перейдёт в статус REWARD, но я убиваю первого и сразу переходит в этот статус и квест не сдаётся.
Рыл клиент,но там по этому поводу ничего не сказано.
Подскажите пожалуйста где я ошибся.
P.S. Можно ответить в Skype: splashman7