|
@@ -18,11 +18,15 @@ import java.util.StringTokenizer;
|
|
|
import java.util.logging.Level;
|
|
|
import java.util.logging.Logger;
|
|
|
|
|
|
+import javolution.util.FastList;
|
|
|
+
|
|
|
import com.l2jserver.Config;
|
|
|
import com.l2jserver.gameserver.datatables.SkillTable;
|
|
|
+import com.l2jserver.gameserver.datatables.SkillTreesData;
|
|
|
import com.l2jserver.gameserver.handler.IAdminCommandHandler;
|
|
|
import com.l2jserver.gameserver.model.L2Clan;
|
|
|
import com.l2jserver.gameserver.model.L2Object;
|
|
|
+import com.l2jserver.gameserver.model.L2SkillLearn;
|
|
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
|
|
import com.l2jserver.gameserver.model.skills.L2Skill;
|
|
|
import com.l2jserver.gameserver.network.SystemMessageId;
|
|
@@ -31,24 +35,25 @@ import com.l2jserver.gameserver.network.serverpackets.PledgeSkillList;
|
|
|
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
|
|
|
import com.l2jserver.util.StringUtil;
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
* This class handles following admin commands:
|
|
|
- * - show_skills
|
|
|
- * - remove_skills
|
|
|
- * - skill_list
|
|
|
- * - skill_index
|
|
|
- * - add_skill
|
|
|
- * - remove_skill
|
|
|
- * - get_skills
|
|
|
- * - reset_skills
|
|
|
- * - give_all_skills
|
|
|
- * - give_all_skills_fs
|
|
|
- * - remove_all_skills
|
|
|
- * - add_clan_skills
|
|
|
- * - admin_setskill
|
|
|
- *
|
|
|
- * @version $Revision: 1.2.4.7 $ $Date: 2005/04/11 10:06:02 $
|
|
|
+ * <ul>
|
|
|
+ * <li>show_skills</li>
|
|
|
+ * <li>remove_skills</li>
|
|
|
+ * <li>skill_list</li>
|
|
|
+ * <li>skill_index</li>
|
|
|
+ * <li>add_skill</li>
|
|
|
+ * <li>remove_skill</li>
|
|
|
+ * <li>get_skills</li>
|
|
|
+ * <li>reset_skills</li>
|
|
|
+ * <li>give_all_skills</li>
|
|
|
+ * <li>give_all_skills_fs</li>
|
|
|
+ * <li>admin_give_all_clan_skills</li>
|
|
|
+ * <li>remove_all_skills</li>
|
|
|
+ * <li>add_clan_skills</li>
|
|
|
+ * <li>admin_setskill</li>
|
|
|
+ * </ul>
|
|
|
+ * @version 2012/02/26
|
|
|
* Small fixes by Zoey76 05/03/2011
|
|
|
*/
|
|
|
public class AdminSkill implements IAdminCommandHandler
|
|
@@ -67,6 +72,7 @@ public class AdminSkill implements IAdminCommandHandler
|
|
|
"admin_reset_skills",
|
|
|
"admin_give_all_skills",
|
|
|
"admin_give_all_skills_fs",
|
|
|
+ "admin_give_all_clan_skills",
|
|
|
"admin_remove_all_skills",
|
|
|
"admin_add_clan_skill",
|
|
|
"admin_setskill"
|
|
@@ -146,18 +152,27 @@ public class AdminSkill implements IAdminCommandHandler
|
|
|
{
|
|
|
adminGiveAllSkills(activeChar, true);
|
|
|
}
|
|
|
+ else if (command.equals("admin_give_all_clan_skills"))
|
|
|
+ {
|
|
|
+ adminGiveAllClanSkills(activeChar);
|
|
|
+ }
|
|
|
else if (command.equals("admin_remove_all_skills"))
|
|
|
{
|
|
|
- if (activeChar.getTarget() instanceof L2PcInstance)
|
|
|
+ final L2Object target = activeChar.getTarget();
|
|
|
+ if ((target == null) || target.isPlayer())
|
|
|
{
|
|
|
- L2PcInstance player = (L2PcInstance) activeChar.getTarget();
|
|
|
- for (L2Skill skill : player.getAllSkills())
|
|
|
- player.removeSkill(skill);
|
|
|
- activeChar.sendMessage("You removed all skills from " + player.getName());
|
|
|
- player.sendMessage("Admin removed all skills from you.");
|
|
|
- player.sendSkillList();
|
|
|
- player.broadcastUserInfo();
|
|
|
+ activeChar.sendPacket(SystemMessageId.INCORRECT_TARGET);
|
|
|
+ return false;
|
|
|
}
|
|
|
+ final L2PcInstance player = target.getActingPlayer();
|
|
|
+ for (L2Skill skill : player.getAllSkills())
|
|
|
+ {
|
|
|
+ player.removeSkill(skill);
|
|
|
+ }
|
|
|
+ activeChar.sendMessage("You have removed all skills from " + player.getName() + ".");
|
|
|
+ player.sendMessage("Admin removed all skills from you.");
|
|
|
+ player.sendSkillList();
|
|
|
+ player.broadcastUserInfo();
|
|
|
}
|
|
|
else if (command.startsWith("admin_add_clan_skill"))
|
|
|
{
|
|
@@ -191,39 +206,81 @@ public class AdminSkill implements IAdminCommandHandler
|
|
|
*/
|
|
|
private void adminGiveAllSkills(L2PcInstance activeChar, boolean includedByFs)
|
|
|
{
|
|
|
- L2Object target = activeChar.getTarget();
|
|
|
- L2PcInstance player = null;
|
|
|
- if (target instanceof L2PcInstance)
|
|
|
- player = (L2PcInstance) target;
|
|
|
- else
|
|
|
+ final L2Object target = activeChar.getTarget();
|
|
|
+ if ((target == null) || target.isPlayer())
|
|
|
{
|
|
|
activeChar.sendPacket(SystemMessageId.INCORRECT_TARGET);
|
|
|
return;
|
|
|
}
|
|
|
+ final L2PcInstance player = target.getActingPlayer();
|
|
|
//Notify player and admin
|
|
|
activeChar.sendMessage("You gave " + player.giveAvailableSkills(includedByFs, true) + " skills to " + player.getName());
|
|
|
player.sendSkillList();
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public String[] getAdminCommandList()
|
|
|
+ /**
|
|
|
+ * This function will give all the skills that the target's clan can learn at it's level.<br>
|
|
|
+ * If the target is not the clan leader, a system message will be sent to the Game Master.
|
|
|
+ * @param activeChar the active char, probably a Game Master.
|
|
|
+ */
|
|
|
+ private void adminGiveAllClanSkills(L2PcInstance activeChar)
|
|
|
{
|
|
|
- return ADMIN_COMMANDS;
|
|
|
+ final L2Object target = activeChar.getTarget();
|
|
|
+ if ((target == null) || !target.isPlayer())
|
|
|
+ {
|
|
|
+ activeChar.sendPacket(SystemMessageId.INCORRECT_TARGET);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ final L2PcInstance player = target.getActingPlayer();
|
|
|
+ final L2Clan clan = player.getClan();
|
|
|
+ if (clan == null)
|
|
|
+ {
|
|
|
+ activeChar.sendPacket(SystemMessageId.TARGET_MUST_BE_IN_CLAN);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!player.isClanLeader())
|
|
|
+ {
|
|
|
+ final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.TARGET_MUST_BE_IN_CLAN);
|
|
|
+ sm.addPcName(player);
|
|
|
+ activeChar.sendPacket(sm);
|
|
|
+ }
|
|
|
+
|
|
|
+ final FastList<L2SkillLearn> skills = SkillTreesData.getInstance().getAvailablePledgeSkills(clan);
|
|
|
+ SkillTable st = SkillTable.getInstance();
|
|
|
+ for (L2SkillLearn s : skills)
|
|
|
+ {
|
|
|
+ clan.addNewSkill(st.getInfo(s.getSkillId(), s.getSkillLevel()));
|
|
|
+ }
|
|
|
+
|
|
|
+ // Notify target and active char
|
|
|
+ clan.broadcastToOnlineMembers(new PledgeSkillList(clan));
|
|
|
+ for (L2PcInstance member : clan.getOnlineMembers(0))
|
|
|
+ {
|
|
|
+ member.sendSkillList();
|
|
|
+ }
|
|
|
+
|
|
|
+ activeChar.sendMessage("You gave " + skills.size() + " skills to " + player.getName() + "'s clan " + clan.getName() + ".");
|
|
|
+ player.sendMessage("Your clan received " + skills.size() + " skills.");
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * TODO: Externalize HTML
|
|
|
+ * @param activeChar the active Game Master.
|
|
|
+ * @param page
|
|
|
+ */
|
|
|
private void removeSkillsPage(L2PcInstance activeChar, int page)
|
|
|
- { //TODO: Externalize HTML
|
|
|
- L2Object target = activeChar.getTarget();
|
|
|
- L2PcInstance player = null;
|
|
|
- if (target instanceof L2PcInstance)
|
|
|
- player = (L2PcInstance) target;
|
|
|
- else
|
|
|
+ {
|
|
|
+ final L2Object target = activeChar.getTarget();
|
|
|
+ if ((target == null) || !target.isPlayer())
|
|
|
{
|
|
|
activeChar.sendPacket(SystemMessageId.TARGET_IS_INCORRECT);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- L2Skill[] skills = player.getAllSkills();
|
|
|
+ final L2PcInstance player = target.getActingPlayer();
|
|
|
+ final L2Skill[] skills = player.getAllSkills();
|
|
|
|
|
|
int maxSkillsPerPage = 10;
|
|
|
int maxPages = skills.length / maxSkillsPerPage;
|
|
@@ -238,7 +295,7 @@ public class AdminSkill implements IAdminCommandHandler
|
|
|
if (skillsEnd - skillsStart > maxSkillsPerPage)
|
|
|
skillsEnd = skillsStart + maxSkillsPerPage;
|
|
|
|
|
|
- NpcHtmlMessage adminReply = new NpcHtmlMessage(5);
|
|
|
+ final NpcHtmlMessage adminReply = new NpcHtmlMessage(5);
|
|
|
final StringBuilder replyMSG = StringUtil.startAppend(
|
|
|
500 + maxPages * 50 + (skillsEnd - skillsStart + 1) * 50,
|
|
|
"<html><body>" +
|
|
@@ -309,18 +366,19 @@ public class AdminSkill implements IAdminCommandHandler
|
|
|
activeChar.sendPacket(adminReply);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * @param activeChar the active Game Master.
|
|
|
+ */
|
|
|
private void showMainPage(L2PcInstance activeChar)
|
|
|
{
|
|
|
- L2Object target = activeChar.getTarget();
|
|
|
- L2PcInstance player = null;
|
|
|
- if (target instanceof L2PcInstance)
|
|
|
- player = (L2PcInstance) target;
|
|
|
- else
|
|
|
+ final L2Object target = activeChar.getTarget();
|
|
|
+ if ((target == null) || !target.isPlayer())
|
|
|
{
|
|
|
activeChar.sendPacket(SystemMessageId.INCORRECT_TARGET);
|
|
|
return;
|
|
|
}
|
|
|
- NpcHtmlMessage adminReply = new NpcHtmlMessage(5);
|
|
|
+ final L2PcInstance player = target.getActingPlayer();
|
|
|
+ final NpcHtmlMessage adminReply = new NpcHtmlMessage(5);
|
|
|
adminReply.setFile(activeChar.getHtmlPrefix(), "data/html/admin/charskills.htm");
|
|
|
adminReply.replace("%name%", player.getName());
|
|
|
adminReply.replace("%level%", String.valueOf(player.getLevel()));
|
|
@@ -328,19 +386,22 @@ public class AdminSkill implements IAdminCommandHandler
|
|
|
activeChar.sendPacket(adminReply);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * @param activeChar the active Game Master.
|
|
|
+ */
|
|
|
private void adminGetSkills(L2PcInstance activeChar)
|
|
|
{
|
|
|
- L2Object target = activeChar.getTarget();
|
|
|
- L2PcInstance player = null;
|
|
|
- if (target instanceof L2PcInstance)
|
|
|
- player = (L2PcInstance) target;
|
|
|
- else
|
|
|
+ final L2Object target = activeChar.getTarget();
|
|
|
+ if ((target == null) || !target.isPlayer())
|
|
|
{
|
|
|
activeChar.sendPacket(SystemMessageId.INCORRECT_TARGET);
|
|
|
return;
|
|
|
}
|
|
|
+ final L2PcInstance player = target.getActingPlayer();
|
|
|
if (player.getName().equals(activeChar.getName()))
|
|
|
+ {
|
|
|
player.sendPacket(SystemMessageId.CANNOT_USE_ON_YOURSELF);
|
|
|
+ }
|
|
|
else
|
|
|
{
|
|
|
L2Skill[] skills = player.getAllSkills();
|
|
@@ -355,19 +416,22 @@ public class AdminSkill implements IAdminCommandHandler
|
|
|
showMainPage(activeChar);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * @param activeChar the active Game Master.
|
|
|
+ */
|
|
|
private void adminResetSkills(L2PcInstance activeChar)
|
|
|
{
|
|
|
- L2Object target = activeChar.getTarget();
|
|
|
- L2PcInstance player = null;
|
|
|
- if (target instanceof L2PcInstance)
|
|
|
- player = (L2PcInstance) target;
|
|
|
- else
|
|
|
+ final L2Object target = activeChar.getTarget();
|
|
|
+ if ((target == null) || !target.isPlayer())
|
|
|
{
|
|
|
activeChar.sendPacket(SystemMessageId.INCORRECT_TARGET);
|
|
|
return;
|
|
|
}
|
|
|
+ final L2PcInstance player = target.getActingPlayer();
|
|
|
if (adminSkills == null)
|
|
|
+ {
|
|
|
activeChar.sendMessage("You must get the skills of someone in order to do this.");
|
|
|
+ }
|
|
|
else
|
|
|
{
|
|
|
L2Skill[] skills = player.getAllSkills();
|
|
@@ -388,19 +452,21 @@ public class AdminSkill implements IAdminCommandHandler
|
|
|
showMainPage(activeChar);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * @param activeChar the active Game Master.
|
|
|
+ * @param val
|
|
|
+ */
|
|
|
private void adminAddSkill(L2PcInstance activeChar, String val)
|
|
|
{
|
|
|
- L2Object target = activeChar.getTarget();
|
|
|
- L2PcInstance player = null;
|
|
|
- if (target instanceof L2PcInstance)
|
|
|
- player = (L2PcInstance) target;
|
|
|
- else
|
|
|
+ final L2Object target = activeChar.getTarget();
|
|
|
+ if ((target == null) || !target.isPlayer())
|
|
|
{
|
|
|
- showMainPage(activeChar);
|
|
|
activeChar.sendPacket(SystemMessageId.INCORRECT_TARGET);
|
|
|
+ showMainPage(activeChar);
|
|
|
return;
|
|
|
}
|
|
|
- StringTokenizer st = new StringTokenizer(val);
|
|
|
+ final L2PcInstance player = target.getActingPlayer();
|
|
|
+ final StringTokenizer st = new StringTokenizer(val);
|
|
|
if (st.countTokens() != 2)
|
|
|
{
|
|
|
showMainPage(activeChar);
|
|
@@ -439,17 +505,19 @@ public class AdminSkill implements IAdminCommandHandler
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * @param activeChar the active Game Master.
|
|
|
+ * @param idval
|
|
|
+ */
|
|
|
private void adminRemoveSkill(L2PcInstance activeChar, int idval)
|
|
|
{
|
|
|
- L2Object target = activeChar.getTarget();
|
|
|
- L2PcInstance player = null;
|
|
|
- if (target instanceof L2PcInstance)
|
|
|
- player = (L2PcInstance) target;
|
|
|
- else
|
|
|
+ final L2Object target = activeChar.getTarget();
|
|
|
+ if ((target == null) || !target.isPlayer())
|
|
|
{
|
|
|
activeChar.sendPacket(SystemMessageId.INCORRECT_TARGET);
|
|
|
return;
|
|
|
}
|
|
|
+ final L2PcInstance player = target.getActingPlayer();
|
|
|
L2Skill skill = SkillTable.getInstance().getInfo(idval, player.getSkillLevel(idval));
|
|
|
if (skill != null)
|
|
|
{
|
|
@@ -467,18 +535,21 @@ public class AdminSkill implements IAdminCommandHandler
|
|
|
removeSkillsPage(activeChar, 0); //Back to previous page
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * @param activeChar the active Game Master.
|
|
|
+ * @param id
|
|
|
+ * @param level
|
|
|
+ */
|
|
|
private void adminAddClanSkill(L2PcInstance activeChar, int id, int level)
|
|
|
{
|
|
|
- L2Object target = activeChar.getTarget();
|
|
|
- L2PcInstance player = null;
|
|
|
- if (target instanceof L2PcInstance)
|
|
|
- player = (L2PcInstance) target;
|
|
|
- else
|
|
|
+ final L2Object target = activeChar.getTarget();
|
|
|
+ if ((target == null) || !target.isPlayer())
|
|
|
{
|
|
|
- showMainPage(activeChar);
|
|
|
activeChar.sendPacket(SystemMessageId.INCORRECT_TARGET);
|
|
|
+ showMainPage(activeChar);
|
|
|
return;
|
|
|
}
|
|
|
+ final L2PcInstance player = target.getActingPlayer();
|
|
|
if (!player.isClanLeader())
|
|
|
{
|
|
|
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_IS_NOT_A_CLAN_LEADER);
|
|
@@ -518,4 +589,9 @@ public class AdminSkill implements IAdminCommandHandler
|
|
|
showMainPage(activeChar);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public String[] getAdminCommandList()
|
|
|
+ {
|
|
|
+ return ADMIN_COMMANDS;
|
|
|
+ }
|
|
|
}
|