package consolecommands; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import com.aionemu.gameserver.dataholders.DataManager; import com.aionemu.gameserver.model.gameobjects.VisibleObject; import com.aionemu.gameserver.model.gameobjects.player.Player; import com.aionemu.gameserver.model.templates.QuestTemplate; import com.aionemu.gameserver.model.templates.quest.FinishedQuestCond; import com.aionemu.gameserver.model.templates.quest.XMLStartCondition; 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.QuestService; import com.aionemu.gameserver.utils.PacketSendUtility; import com.aionemu.gameserver.utils.chathandlers.ConsoleCommand; /** * @author ginho1 */ public class Addquest extends ConsoleCommand { public Addquest() { super("addquest"); } @Override public void execute(Player admin, String... params) { if (params.length < 1) { info(admin, null); return; } final VisibleObject target = admin.getTarget(); if (target == null) { PacketSendUtility.sendMessage(admin, "No target selected."); return; } if (!(target instanceof Player)) { PacketSendUtility.sendMessage(admin, "This command can only be used on a player!"); return; } final Player player = (Player) target; int id; try { String quest = params[0]; Pattern questId = Pattern.compile("\\[quest:([^%]+)]"); Matcher result = questId.matcher(quest); if (result.find()) id = Integer.parseInt(result.group(1)); else id = Integer.parseInt(params[0]); } catch (NumberFormatException e) { info(admin, null); return; } QuestEnv env = new QuestEnv(null, player, id); if (QuestService.startQuest(env)) { PacketSendUtility.sendMessage(admin, "Quest started."); } else { QuestTemplate template = DataManager.QUEST_DATA.getQuestById(id); List preconditions = template.getXMLStartConditions(); if (preconditions != null && preconditions.size() > 0) { for (XMLStartCondition condition : preconditions) { List finisheds = condition.getFinishedPreconditions(); if (finisheds != null && finisheds.size() > 0) { for (FinishedQuestCond fcondition : finisheds) { QuestState qs1 = admin.getQuestStateList().getQuestState(fcondition.getQuestId()); if (qs1 == null || qs1.getStatus() != QuestStatus.COMPLETE) { PacketSendUtility.sendMessage(admin, "You have to finish " + fcondition.getQuestId() + " first!"); } } } } } PacketSendUtility.sendMessage(admin, "Quest not started. Some preconditions failed"); } } @Override public void info(Player player, String message) { PacketSendUtility.sendMessage(player, "syntax ///addquest "); } }