Advertisement
Guest User

Untitled

a guest
Jan 19th, 2017
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.77 KB | None | 0 0
  1. /*
  2. * This program is free software: you can redistribute it and/or modify it under
  3. * the terms of the GNU General Public License as published by the Free Software
  4. * Foundation, either version 3 of the License, or (at your option) any later
  5. * version.
  6. *
  7. * This program is distributed in the hope that it will be useful, but WITHOUT
  8. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  9. * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
  10. * details.
  11. *
  12. * You should have received a copy of the GNU General Public License along with
  13. * this program. If not, see <http://www.gnu.org/licenses/>.
  14. */
  15. package net.sf.l2j.gameserver.handler.admincommandhandlers;
  16.  
  17. import java.util.Collection;
  18. import java.util.HashMap;
  19. import java.util.List;
  20. import java.util.Map;
  21. import java.util.StringTokenizer;
  22.  
  23. import net.sf.l2j.Config;
  24. import net.sf.l2j.gameserver.datatables.ArmorSetsTable;
  25. import net.sf.l2j.gameserver.datatables.ItemTable;
  26. import net.sf.l2j.gameserver.handler.IAdminCommandHandler;
  27. import net.sf.l2j.gameserver.model.World;
  28. import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
  29. import net.sf.l2j.gameserver.model.item.ArmorSet;
  30. import net.sf.l2j.gameserver.model.item.kind.Item;
  31. import net.sf.l2j.gameserver.network.serverpackets.ItemList;
  32.  
  33. /**
  34. * This class handles following admin commands:<br>
  35. * <br>
  36. * - itemcreate = show "item creation" menu<br>
  37. * - create_item = creates num items with respective id, if num is not specified, assumes 1.<br>
  38. * - create_set = creates armorset with respective chest id.<br>
  39. * - create_coin = creates currency, using the choice box or typing good IDs.<br>
  40. * - reward_all = reward all online players with items.
  41. */
  42. public class AdminCreateItem implements IAdminCommandHandler
  43. {
  44. static Map<String, Integer> playerIps = new HashMap<>();
  45. private static final String[] ADMIN_COMMANDS =
  46. {
  47. "admin_itemcreate",
  48. "admin_create_item",
  49. "admin_create_set",
  50. "admin_create_coin",
  51. "admin_reward_all"
  52. };
  53.  
  54. @Override
  55. public boolean useAdminCommand(String command, L2PcInstance activeChar)
  56. {
  57. StringTokenizer st = new StringTokenizer(command);
  58. command = st.nextToken();
  59.  
  60. if (command.equals("admin_itemcreate"))
  61. {
  62. AdminHelpPage.showHelpPage(activeChar, "itemcreation.htm");
  63. }
  64. else if (command.equals("admin_reward_all"))
  65. {
  66. try
  67. {
  68. final int id = Integer.parseInt(st.nextToken());
  69. final int count = (st.hasMoreTokens()) ? Integer.parseInt(st.nextToken()) : 1;
  70.  
  71. final Collection<L2PcInstance> players = World.getInstance().getPlayers();
  72. for (L2PcInstance player : players)
  73. {
  74. if (player.getClient() == null || player.getClient().isDetached()) // offline shops protection
  75. continue;
  76.  
  77. boolean canReward = false;
  78. String pIp = player.getClient().getConnection().getInetAddress().getHostAddress();
  79. if (playerIps.containsKey(pIp))
  80. {
  81. int count1 = playerIps.get(pIp);
  82. if (count1 < Config.VOTE_BOXES_ALLOWED)
  83. {
  84. playerIps.remove(pIp);
  85. playerIps.put(pIp, count1 + 1);
  86. canReward = true;
  87. }
  88. }
  89. else
  90. {
  91. canReward = true;
  92. playerIps.put(pIp, 1);
  93. }
  94. if (canReward)
  95. createItem(activeChar, player, id, count, 0, false);
  96. activeChar.sendMessage(players.size() + " players rewarded with " + ItemTable.getInstance().getTemplate(id).getName());
  97. }
  98. playerIps.clear();
  99. }
  100. catch (Exception e)
  101. {
  102. activeChar.sendMessage("Usage: //reward_all <itemId> [amount]");
  103. }
  104. AdminHelpPage.showHelpPage(activeChar, "itemcreation.htm");
  105. }
  106. else
  107. {
  108. L2PcInstance target = activeChar;
  109. if (activeChar.getTarget() != null && activeChar.getTarget() instanceof L2PcInstance)
  110. target = (L2PcInstance) activeChar.getTarget();
  111.  
  112. if (command.equals("admin_create_item"))
  113. {
  114. try
  115. {
  116. final int id = Integer.parseInt(st.nextToken());
  117.  
  118. int count = 1;
  119. int radius = 0;
  120.  
  121. if (st.hasMoreTokens())
  122. {
  123. count = Integer.parseInt(st.nextToken());
  124. if (st.hasMoreTokens())
  125. radius = Integer.parseInt(st.nextToken());
  126. }
  127.  
  128. createItem(activeChar, target, id, count, radius, true);
  129. }
  130. catch (Exception e)
  131. {
  132. activeChar.sendMessage("Usage: //create_item <itemId> [amount] [radius]");
  133. }
  134. AdminHelpPage.showHelpPage(activeChar, "itemcreation.htm");
  135. }
  136. else if (command.equals("admin_create_coin"))
  137. {
  138. try
  139. {
  140. final int id = getCoinId(st.nextToken());
  141. if (id <= 0)
  142. {
  143. activeChar.sendMessage("Usage: //create_coin <name> [amount]");
  144. return false;
  145. }
  146.  
  147. createItem(activeChar, target, id, (st.hasMoreTokens()) ? Integer.parseInt(st.nextToken()) : 1, 0, true);
  148. }
  149. catch (Exception e)
  150. {
  151. activeChar.sendMessage("Usage: //create_coin <name> [amount]");
  152. }
  153. AdminHelpPage.showHelpPage(activeChar, "itemcreation.htm");
  154. }
  155. else if (command.equals("admin_create_set"))
  156. {
  157. try
  158. {
  159. final int chestId = Integer.parseInt(st.nextToken());
  160. final ArmorSet set = ArmorSetsTable.getInstance().getSet(chestId);
  161. if (set == null)
  162. {
  163. activeChar.sendMessage("This chest has no set.");
  164. return false;
  165. }
  166.  
  167. for (int itemId : set.getSetItemsId())
  168. {
  169. if (ItemTable.getInstance().getTemplate(itemId) != null)
  170. target.getInventory().addItem("Admin", itemId, 1, target, activeChar);
  171. }
  172.  
  173. if (set.getShield() > 0)
  174. target.getInventory().addItem("Admin", set.getShield(), 1, target, activeChar);
  175.  
  176. activeChar.sendMessage("You have spawned " + ItemTable.getInstance().getTemplate(chestId) + " set in " + target.getName() + "'s inventory.");
  177.  
  178. // Send the whole item list and open inventory window.
  179. target.sendPacket(new ItemList(target, true));
  180. }
  181. catch (Exception e)
  182. {
  183. activeChar.sendMessage("Usage: //create_set <chestId>");
  184. }
  185. }
  186. }
  187. return true;
  188. }
  189.  
  190. private static void createItem(L2PcInstance activeChar, L2PcInstance target, int id, int num, int radius, boolean sendGmMessage)
  191. {
  192. final Item template = ItemTable.getInstance().getTemplate(id);
  193. if (template == null)
  194. {
  195. activeChar.sendMessage("This item doesn't exist.");
  196. return;
  197. }
  198.  
  199. if (num > 1 && !template.isStackable())
  200. {
  201. activeChar.sendMessage("This item doesn't stack - Creation aborted.");
  202. return;
  203. }
  204.  
  205. if (radius > 0)
  206. {
  207. final List<L2PcInstance> players = activeChar.getKnownTypeInRadius(L2PcInstance.class, radius);
  208. for (L2PcInstance obj : players)
  209. {
  210. obj.addItem("Admin", id, num, activeChar, false);
  211. obj.sendMessage("A GM spawned " + num + " " + template.getName() + " in your inventory.");
  212. }
  213.  
  214. if (sendGmMessage)
  215. activeChar.sendMessage(players.size() + " players rewarded with " + num + " " + template.getName() + " in a " + radius + " radius.");
  216. }
  217. else
  218. {
  219. target.getInventory().addItem("Admin", id, num, target, activeChar);
  220. if (activeChar != target)
  221. target.sendMessage("A GM spawned " + num + " " + template.getName() + " in your inventory.");
  222.  
  223. if (sendGmMessage)
  224. activeChar.sendMessage("You have spawned " + num + " " + template.getName() + " (" + id + ") in " + target.getName() + "'s inventory.");
  225.  
  226. // Send the whole item list and open inventory window.
  227. target.sendPacket(new ItemList(target, true));
  228. }
  229. }
  230.  
  231. private static int getCoinId(String name)
  232. {
  233. if (name.equalsIgnoreCase("adena"))
  234. return 57;
  235.  
  236. if (name.equalsIgnoreCase("ancientadena"))
  237. return 5575;
  238.  
  239. if (name.equalsIgnoreCase("festivaladena"))
  240. return 6673;
  241.  
  242. return 0;
  243. }
  244.  
  245. @Override
  246. public String[] getAdminCommandList()
  247. {
  248. return ADMIN_COMMANDS;
  249. }
  250. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement