/*
* This program 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.
*
* This program 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
* this program. If not, see .
*/
package handlers.admincommandhandlers;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javolution.text.TextBuilder;
import com.l2jserver.L2DatabaseFactory;
import com.l2jserver.gameserver.handler.IAdminCommandHandler;
import com.l2jserver.gameserver.instancemanager.QuestManager;
import com.l2jserver.gameserver.model.L2Object;
import com.l2jserver.gameserver.model.L2World;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState;
import com.l2jserver.gameserver.model.quest.State;
import com.l2jserver.gameserver.network.SystemMessageId;
import com.l2jserver.gameserver.network.serverpackets.ExShowQuestMark;
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jserver.gameserver.network.serverpackets.QuestList;
/**
* @author Korvin
* con.close() change by Zoey76 24/02/2011
*/
public class AdminShowQuests implements IAdminCommandHandler
{
private static final String[] ADMIN_COMMANDS =
{
"admin_charquestmenu",
"admin_setcharquest"
};
@Override
public boolean useAdminCommand(String command, L2PcInstance activeChar)
{
String[] cmdParams = command.split(" ");
L2PcInstance target = null;
L2Object targetObject = null;
String[] val = new String[4];
val[0] = null;
if (cmdParams.length > 1)
{
target = L2World.getInstance().getPlayer(cmdParams[1]);
if (cmdParams.length > 2)
{
if (cmdParams[2].equals("0")) { val[0] = "var"; val[1] = "Start"; }
if (cmdParams[2].equals("1")) { val[0] = "var"; val[1] = "Started"; }
if (cmdParams[2].equals("2")) { val[0] = "var"; val[1] = "Completed"; }
if (cmdParams[2].equals("3")) { val[0] = "full"; }
if (cmdParams[2].indexOf("_") != -1) { val[0] = "name"; val[1] = cmdParams[2]; }
if (cmdParams.length > 3)
{
if (cmdParams[3].equals("custom"))
{
val[0] = "custom"; val[1] = cmdParams[2];
}
}
}
}
else
{
targetObject = activeChar.getTarget();
if (targetObject != null && targetObject instanceof L2PcInstance)
target = (L2PcInstance) targetObject;
}
if (target == null)
{
activeChar.sendPacket(SystemMessageId.INCORRECT_TARGET);
return false;
}
if (command.startsWith("admin_charquestmenu"))
{
if (val[0] != null)
try
{
showquestmenu(target,activeChar,val);
}
catch (Exception e)
{
}
else
showfirstquestmenu(target,activeChar);
}
else if (command.startsWith("admin_setcharquest"))
{
if (cmdParams.length >= 5)
{
val[0] = cmdParams[2];
val[1] = cmdParams[3];
val[2] = cmdParams[4];
if (cmdParams.length == 6) val[3] = cmdParams[5];
try
{
setquestvar(target,activeChar,val);
}
catch (Exception e)
{
};
}
else
return false;
}
return true;
}
private void showfirstquestmenu(L2PcInstance target, L2PcInstance actor)
{
TextBuilder replyMSG = new TextBuilder("
"
+ "
"
+ "
Player: "+target.getName()+"
"
+ "
");
NpcHtmlMessage adminReply = new NpcHtmlMessage(5);
int ID = target.getObjectId();
replyMSG.append("Quest Menu for "+target.getName()+" (ID:"+ID+")
");
replyMSG.append("
");
replyMSG.append("
");
replyMSG.append("
");
replyMSG.append("
");
replyMSG.append("
Manual Edit by Quest number:
");
replyMSG.append("
");
replyMSG.append("
");
adminReply.setHtml(replyMSG.toString());
actor.sendPacket(adminReply);
}
private void showquestmenu(L2PcInstance target, L2PcInstance actor, String[] val)
{
Connection con = null;
try
{
ResultSet rs;
PreparedStatement req;
int ID = target.getObjectId();
TextBuilder replyMSG = new TextBuilder("");
NpcHtmlMessage adminReply = new NpcHtmlMessage(5);
con = L2DatabaseFactory.getInstance().getConnection();
if (val[0].equals("full"))
{
replyMSG.append("
Full Quest List for "+target.getName()+" (ID:"+ID+")
");
req = con.prepareStatement("SELECT DISTINCT name FROM character_quests WHERE charId='" + ID +"' ORDER by name");
req.execute();
rs = req.getResultSet();
while(rs.next()) replyMSG.append("