Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Aion (https://forum.zone-game.info/forumdisplay.php?f=139)
-   -   [Помощь] Редактирование квестов (https://forum.zone-game.info/showthread.php?t=26815)

timki 16.02.2013 21:59

[Помощь] Редактирование квестов
 
Добрый день
Сразу приступлю к описанию проблемы:
Начал переделывать квесты, под сервер, всё сделал,всё вроде бы отлично и с клиентом и с сервером,но,есть одна существенная проблема.
В общем суть квеста такова:
Нужно убить 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

Murzik 25.02.2013 11:58

Re: [Помощь] Редактирование квестов
 
квест:
Свернуть ↑Развернуть ↓

на попробуй, у меня пашет норм


Текущее время: 04:47. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot