Advertisement
BossForever

Player Vs Player (Frozen)

May 6th, 2017
381
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 28.52 KB | None | 0 0
  1. ### Eclipse Workspace Patch 1.0
  2. #P L2jFrozen_GameServer
  3. Index: head-src/com/l2jfrozen/gameserver/network/clientpackets/Logout.java
  4. ===================================================================
  5. --- head-src/com/l2jfrozen/gameserver/network/clientpackets/Logout.java (revision 1132)
  6. +++ head-src/com/l2jfrozen/gameserver/network/clientpackets/Logout.java (working copy)
  7. @@ -24,6 +24,7 @@
  8.  import com.l2jfrozen.gameserver.model.L2Character;
  9.  import com.l2jfrozen.gameserver.model.L2Party;
  10.  import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
  11. +import com.l2jfrozen.gameserver.model.entity.PvPEvent;
  12.  import com.l2jfrozen.gameserver.model.entity.olympiad.Olympiad;
  13.  import com.l2jfrozen.gameserver.model.entity.sevensigns.SevenSignsFestival;
  14.  import com.l2jfrozen.gameserver.network.SystemMessageId;
  15. @@ -56,6 +57,13 @@
  16.             return;
  17.         }
  18.        
  19. +       if (PvPEvent.checkPlayerInEvent(player))
  20. +       {
  21. +           player.sendMessage("You cannot Logout while is in PvP Event");
  22. +           player.sendPacket(ActionFailed.STATIC_PACKET);
  23. +           return;
  24. +       }
  25. +      
  26.         if (player.isAway())
  27.         {
  28.             player.sendMessage("You can't restart in Away mode.");
  29. Index: head-src/com/l2jfrozen/gameserver/model/entity/PvPEvent.java
  30. ===================================================================
  31. --- head-src/com/l2jfrozen/gameserver/model/entity/PvPEvent.java    (nonexistent)
  32. +++ head-src/com/l2jfrozen/gameserver/model/entity/PvPEvent.java    (working copy)
  33. @@ -0,0 +1,246 @@
  34. +package com.l2jfrozen.gameserver.model.entity;
  35. +
  36. +import java.util.ArrayList;
  37. +
  38. +import com.l2jfrozen.Config;
  39. +import com.l2jfrozen.gameserver.datatables.csv.MapRegionTable;
  40. +import com.l2jfrozen.gameserver.model.L2World;
  41. +import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
  42. +import com.l2jfrozen.gameserver.network.serverpackets.NpcHtmlMessage;
  43. +import com.l2jfrozen.gameserver.thread.ThreadPoolManager;
  44. +
  45. +/**
  46. + * @author Leoonardo and Bluur
  47. + * @adapted Leonardo Holanda
  48. + */
  49. +public class PvPEvent implements Runnable
  50. +{
  51. +   private static ArrayList<L2PcInstance> _players = new ArrayList<>();
  52. +   private static EventState pvpstates = EventState.INACTIVE;
  53. +   private static int allplayers = 0;
  54. +  
  55. +   public enum EventState
  56. +   {
  57. +       INACTIVE,
  58. +       REGISTER,
  59. +       TELEPORT,
  60. +       FIGHT,
  61. +       END;
  62. +   }
  63. +  
  64. +   public static void starting()
  65. +   {
  66. +       setStatePVP(EventState.REGISTER);
  67. +       Announcements.getInstance().announceToAll("Will start the registrations for the event in a verse one.");
  68. +      
  69. +       for (L2PcInstance p : L2World.getInstance().getAllPlayers())
  70. +       {
  71. +           if (p == null)
  72. +               return;
  73. +          
  74. +           regWindow(p);
  75. +       }
  76. +       time(Config.PVP_EVENT_REG_TIME);
  77. +       if (_players.size() < 2)
  78. +       {
  79. +           Announcements.getInstance().announceToAll("The event was canceled due to lack of players.");
  80. +           _players.clear();
  81. +           setStatePVP(EventState.INACTIVE);
  82. +           return;
  83. +       }
  84. +       setStatePVP(EventState.TELEPORT);
  85. +       Announcements.getInstance().announceToAll("Stay tuned to the teleporter.");
  86. +       Announcements.getInstance().announceToAll("Total number of participants: " + allplayers);
  87. +       Announcements.getInstance().announceToAll("10 seconds to teleport players registered");
  88. +       time(10);
  89. +       teleporting();
  90. +       Announcements.getInstance().announceToAll("The event ends in " + Config.PVP_EVENT_TIME / 60 + " minutes.");
  91. +       time(Config.PVP_EVENT_TIME);
  92. +       Announcements.getInstance().announceToAll("The time is up!");
  93. +       reload();
  94. +   }
  95. +  
  96. +   public static void teleporting()
  97. +   {
  98. +       Announcements.getInstance().announceToAll("HaHaHa, We're going to fight !!!!.");
  99. +       for (L2PcInstance player : _players)
  100. +       {
  101. +           if (player == null)
  102. +               return;
  103. +           player.teleToLocation(Config.PVP_EVENT_X, Config.PVP_EVENT_Y, Config.PVP_EVENT_Z, true);
  104. +       }
  105. +       Announcements.getInstance().announceToAll("Kill all!.");
  106. +       setStatePVP(EventState.FIGHT);
  107. +   }
  108. +  
  109. +   public static void finish()
  110. +   {
  111. +       for (L2PcInstance player : _players)
  112. +       {
  113. +           if (player == null)
  114. +               return;
  115. +          
  116. +           player.teleToLocation(MapRegionTable.TeleportWhereType.Town);
  117. +       }
  118. +      
  119. +       allplayers = 0;
  120. +       _players.clear();
  121. +       setStatePVP(EventState.INACTIVE);
  122. +       Announcements.getInstance().announceToAll("Event Finish time over!!!");
  123. +   }
  124. +  
  125. +   public static void regWindow(L2PcInstance p)
  126. +   {
  127. +       NpcHtmlMessage html = new NpcHtmlMessage(1);
  128. +       html.setFile("data/html/mods/pvp/event.htm");
  129. +       p.sendPacket(html);
  130. +   }
  131. +  
  132. +   private static void reload()
  133. +   {
  134. +       for (L2PcInstance player : _players)
  135. +       {
  136. +           if (player == null)
  137. +               return;
  138. +          
  139. +           player.setPointPvPEvent(0);
  140. +           player.teleToLocation(MapRegionTable.TeleportWhereType.Town);
  141. +       }
  142. +      
  143. +       allplayers = 0;
  144. +       _players.clear();
  145. +       setStatePVP(EventState.INACTIVE);
  146. +   }
  147. +  
  148. +   public static boolean checkPlayerInEvent(L2PcInstance p)
  149. +   {
  150. +       return _players.contains(p);
  151. +   }
  152. +  
  153. +   public static void onDie(L2PcInstance player, L2PcInstance killer)
  154. +   {
  155. +       if (player != null)
  156. +       {
  157. +           countKills(killer);
  158. +           res(player, 5 * 1000);
  159. +       }
  160. +   }
  161. +  
  162. +   private static void res(final L2PcInstance player, long millis)
  163. +   {
  164. +       if (player != null)
  165. +       {
  166. +           ThreadPoolManager.getInstance().scheduleGeneral(new Runnable()
  167. +           {
  168. +               @Override
  169. +               public void run()
  170. +               {
  171. +                   player.doRevive();
  172. +                   player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp());
  173. +                   player.setCurrentCp(player.getMaxCp());
  174. +                   player.setPointPvPEvent(0);
  175. +                   player.teleToLocation(Config.PVP_EVENT_X, Config.PVP_EVENT_Y, Config.PVP_EVENT_Z, false);
  176. +               }
  177. +           }, millis);
  178. +       }
  179. +   }
  180. +  
  181. +   private static void countKills(L2PcInstance p)
  182. +   {
  183. +       p.setPointPvPEvent(p.getPointPvPEvent() + 1);
  184. +      
  185. +       switch (p.getPointPvPEvent())
  186. +       {
  187. +           case 5:
  188. +               Announcements.getInstance().announceToAll(p.getName() + " have been successfully awarded 5 kills, congratulations.");
  189. +               Announcements.getInstance().announceToAll(p.getName() + " 5 consecutive kills !!!");
  190. +               for (int[] recebendo : getRewards())
  191. +                   p.addItem("Reward Item", recebendo[0], recebendo[1], p, true);
  192. +               break;
  193. +           case 15:
  194. +               Announcements.getInstance().announceToAll(p.getName() + " have been successfully awarded 15 kills, congratulations.");
  195. +               Announcements.getInstance().announceToAll(p.getName() + " 15 consecutive kills !!!");
  196. +               for (int[] recebendo : getRewards())
  197. +                   p.addItem("Reward Item", recebendo[0], recebendo[1], p, true);
  198. +               break;
  199. +           case 25:
  200. +               Announcements.getInstance().announceToAll(p.getName() + " have been successfully awarded heroi and items, congratulations.");
  201. +               Announcements.getInstance().announceToAll(p.getName() + " 25 consecutive kills !!!");
  202. +               p.setHero(Config.PVP_EVENT_SETHERO);
  203. +               p.setPointPvPEvent(0);
  204. +               for (int[] recebendo : getRewards())
  205. +                   p.addItem("Reward Item", recebendo[0], recebendo[1], p, true);
  206. +               break;
  207. +       }
  208. +   }
  209. +  
  210. +   private static final int[][] getRewards()
  211. +   {
  212. +       return Config.PVP_EVENT_REWARDS;
  213. +   }
  214. +  
  215. +   public static void registerPlayer(L2PcInstance player)
  216. +   {
  217. +       if (getStatePVP() == EventState.INACTIVE || getStatePVP() == EventState.END)
  218. +       {
  219. +           player.sendMessage("This event is offline.");
  220. +           return;
  221. +       }
  222. +       else if (getStatePVP() == EventState.TELEPORT)
  223. +       {
  224. +           player.sendMessage("This event in teleport.");
  225. +           return;
  226. +       }
  227. +       else if (getStatePVP() == EventState.FIGHT)
  228. +       {
  229. +           player.sendMessage("This event in progress.");
  230. +           return;
  231. +       }
  232. +       else if (player.getKarma() > 0 || player.isInOlympiadMode() || player.isCursedWeaponEquipped())
  233. +       {
  234. +           player.sendMessage("you can't register");
  235. +           return;
  236. +       }
  237. +       else if (checkPlayerInEvent(player))
  238. +       {
  239. +           player.sendMessage("you're already registred in evento.");
  240. +           return;
  241. +       }
  242. +       else if (_players.size() >= 99)
  243. +       {
  244. +           player.sendMessage("Event is full players : "+allplayers);
  245. +           return;
  246. +       }
  247. +       _players.add(player);
  248. +       allplayers++;
  249. +       player.sendMessage("you have been successfully registered");
  250. +   }
  251. +  
  252. +   private static void time(int segundos)
  253. +   {
  254. +       try
  255. +       {
  256. +           Thread.sleep(segundos * 1000);
  257. +       }
  258. +       catch (InterruptedException e)
  259. +       {
  260. +           System.out.println("[PvP Event]: Erro in method: time()");
  261. +       }
  262. +   }
  263. +  
  264. +   public static void setStatePVP(EventState state)
  265. +   {
  266. +       pvpstates = state;
  267. +   }
  268. +  
  269. +   public static EventState getStatePVP()
  270. +   {
  271. +       return pvpstates;
  272. +   }
  273. +  
  274. +   @Override
  275. +   public void run()
  276. +   {
  277. +       starting();
  278. +   }
  279. +}
  280. \ No newline at end of file
  281. Index: config/frozen/pvp.properties
  282. ===================================================================
  283. --- config/frozen/pvp.properties    (nonexistent)
  284. +++ config/frozen/pvp.properties    (working copy)
  285. @@ -0,0 +1,14 @@
  286. + #=============================================================
  287. +# Player vs Player // Created Leonardo and Bluur
  288. +#=============================================================
  289. +# Event total time in seconds.
  290. +PVPEventTime = 300
  291. +# Coord Arena and Respawn.
  292. +EventTeleportX = -87895
  293. +EventTeleportY = 142150
  294. +EventTeleportZ = -3646
  295. +# Rewards Event.
  296. +# id,count.
  297. +PVPEventRewards = 6622,1
  298. +# Event player set hero for 25 kills.
  299. +PVPEventSetHero = false
  300. Index: head-src/com/l2jfrozen/gameserver/model/entity/olympiad/Olympiad.java
  301. ===================================================================
  302. --- head-src/com/l2jfrozen/gameserver/model/entity/olympiad/Olympiad.java   (revision 1132)
  303. +++ head-src/com/l2jfrozen/gameserver/model/entity/olympiad/Olympiad.java   (working copy)
  304. @@ -53,8 +53,10 @@
  305.  import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
  306.  import com.l2jfrozen.gameserver.model.entity.Announcements;
  307.  import com.l2jfrozen.gameserver.model.entity.Hero;
  308. +import com.l2jfrozen.gameserver.model.entity.PvPEvent;
  309.  import com.l2jfrozen.gameserver.model.spawn.L2Spawn;
  310.  import com.l2jfrozen.gameserver.network.SystemMessageId;
  311. +import com.l2jfrozen.gameserver.network.serverpackets.ActionFailed;
  312.  import com.l2jfrozen.gameserver.network.serverpackets.NpcHtmlMessage;
  313.  import com.l2jfrozen.gameserver.network.serverpackets.SystemMessage;
  314.  import com.l2jfrozen.gameserver.templates.StatsSet;
  315. @@ -432,7 +434,13 @@
  316.             noble.sendPacket(sm);
  317.             return false;
  318.         }
  319. -      
  320. +       if (PvPEvent.checkPlayerInEvent(noble))
  321. +       {
  322. +           noble.sendMessage("You are registered in another event, please try again later...");
  323. +           noble.sendPacket(ActionFailed.STATIC_PACKET);
  324. +           return false;
  325. +       }
  326. +        
  327.         /** Begin Olympiad Restrictions */
  328.         if (noble.getBaseClass() != noble.getClassId().getId())
  329.         {
  330. Index: head-src/com/l2jfrozen/gameserver/handler/admincommandhandlers/AdminPVP.java
  331. ===================================================================
  332. --- head-src/com/l2jfrozen/gameserver/handler/admincommandhandlers/AdminPVP.java    (nonexistent)
  333. +++ head-src/com/l2jfrozen/gameserver/handler/admincommandhandlers/AdminPVP.java    (working copy)
  334. @@ -0,0 +1,38 @@
  335. +package com.l2jfrozen.gameserver.handler.admincommandhandlers;
  336. +
  337. +import com.l2jfrozen.gameserver.handler.IAdminCommandHandler;
  338. +import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
  339. +import com.l2jfrozen.gameserver.model.entity.PvPEvent;
  340. +import com.l2jfrozen.gameserver.model.entity.PvPEvent.EventState;
  341. +import com.l2jfrozen.gameserver.thread.ThreadPoolManager;
  342. +
  343. +public class AdminPVP implements IAdminCommandHandler
  344. +{
  345. +  
  346. +   private static final String[] ADMIN_COMMANDS =
  347. +   {
  348. +       "admin_pvp_start",
  349. +       "admin_pvp_end"
  350. +   };
  351. +  
  352. +   @Override
  353. +   public boolean useAdminCommand(String command, L2PcInstance activeChar)
  354. +   {
  355. +       if (command.startsWith("admin_pvp_start"))
  356. +           if (PvPEvent.getStatePVP() != EventState.INACTIVE)
  357. +           {
  358. +               activeChar.sendMessage("[PVP] Evento esta em progresso.");
  359. +               return false;
  360. +           }
  361. +       ThreadPoolManager.getInstance().scheduleAi(new PvPEvent(), 0);
  362. +       activeChar.sendMessage("[PVP]: Evento executado.");
  363. +       return true;
  364. +   }
  365. +  
  366. +   @Override
  367. +   public String[] getAdminCommandList()
  368. +   {
  369. +       return ADMIN_COMMANDS;
  370. +   }
  371. +  
  372. +}
  373. \ No newline at end of file
  374. Index: head-src/com/l2jfrozen/FService.java
  375. ===================================================================
  376. --- head-src/com/l2jfrozen/FService.java    (revision 1132)
  377. +++ head-src/com/l2jfrozen/FService.java    (working copy)
  378. @@ -72,6 +72,7 @@
  379.     public static final String EVENT_TVT_FILE = "./config/frozen/tvt.properties";
  380.     public static final String EVENT_TW_FILE = "./config/frozen/tw.properties";
  381.     public static final String IRC_FILE = "./config/frozen/irc.properties";
  382. +   public static final String EVENT_PVP_FILE = "./config/frozen/pvp.properties";
  383.    
  384.     // fun -- events
  385.     public static final String AWAY_FILE = "./config/fun/away.properties";
  386. Index: head-src/com/l2jfrozen/gameserver/handler/AdminCommandHandler.java
  387. ===================================================================
  388. --- head-src/com/l2jfrozen/gameserver/handler/AdminCommandHandler.java  (revision 1132)
  389. +++ head-src/com/l2jfrozen/gameserver/handler/AdminCommandHandler.java  (working copy)
  390. @@ -72,6 +72,7 @@
  391.  import com.l2jfrozen.gameserver.handler.admincommandhandlers.AdminMonsterRace;
  392.  import com.l2jfrozen.gameserver.handler.admincommandhandlers.AdminNoble;
  393.  import com.l2jfrozen.gameserver.handler.admincommandhandlers.AdminPForge;
  394. +import com.l2jfrozen.gameserver.handler.admincommandhandlers.AdminPVP;
  395.  import com.l2jfrozen.gameserver.handler.admincommandhandlers.AdminPetition;
  396.  import com.l2jfrozen.gameserver.handler.admincommandhandlers.AdminPledge;
  397.  import com.l2jfrozen.gameserver.handler.admincommandhandlers.AdminPolymorph;
  398. @@ -188,6 +189,7 @@
  399.         registerAdminCommandHandler(new AdminAio());
  400.         registerAdminCommandHandler(new AdminCharSupervision());
  401.         registerAdminCommandHandler(new AdminWho()); // L2OFF command
  402. +       registerAdminCommandHandler(new AdminPVP());
  403.         // ATTENTION: adding new command handlers, you have to change the
  404.         // sql file containing the access levels rights
  405.        
  406. Index: head-src/com/l2jfrozen/gameserver/network/clientpackets/EnterWorld.java
  407. ===================================================================
  408. --- head-src/com/l2jfrozen/gameserver/network/clientpackets/EnterWorld.java (revision 1132)
  409. +++ head-src/com/l2jfrozen/gameserver/network/clientpackets/EnterWorld.java (working copy)
  410. @@ -59,6 +59,8 @@
  411.  import com.l2jfrozen.gameserver.model.entity.Announcements;
  412.  import com.l2jfrozen.gameserver.model.entity.ClanHall;
  413.  import com.l2jfrozen.gameserver.model.entity.Hero;
  414. +import com.l2jfrozen.gameserver.model.entity.PvPEvent;
  415. +import com.l2jfrozen.gameserver.model.entity.PvPEvent.EventState;
  416.  import com.l2jfrozen.gameserver.model.entity.Wedding;
  417.  import com.l2jfrozen.gameserver.model.entity.event.CTF;
  418.  import com.l2jfrozen.gameserver.model.entity.event.DM;
  419. @@ -417,6 +419,10 @@
  420.         if (DM._savePlayers.contains(activeChar.getName()))
  421.             DM.addDisconnectedPlayer(activeChar);
  422.        
  423. +       if (PvPEvent.getStatePVP() == EventState.REGISTER){
  424. +           PvPEvent.regWindow(activeChar);
  425. +       }
  426. +          
  427.         // Means that it's not ok multiBox situation, so logout
  428.         if (!activeChar.checkMultiBox())
  429.         {
  430. Index: head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestRestart.java
  431. ===================================================================
  432. --- head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestRestart.java (revision 1132)
  433. +++ head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestRestart.java (working copy)
  434. @@ -29,6 +29,7 @@
  435.  import com.l2jfrozen.gameserver.model.Inventory;
  436.  import com.l2jfrozen.gameserver.model.L2Party;
  437.  import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
  438. +import com.l2jfrozen.gameserver.model.entity.PvPEvent;
  439.  import com.l2jfrozen.gameserver.model.entity.olympiad.Olympiad;
  440.  import com.l2jfrozen.gameserver.model.entity.sevensigns.SevenSignsFestival;
  441.  import com.l2jfrozen.gameserver.network.L2GameClient;
  442. @@ -77,6 +78,13 @@
  443.             return;
  444.         }
  445.        
  446. +       if (PvPEvent.checkPlayerInEvent(player))
  447. +       {
  448. +           player.sendMessage("Cannot restart in is PvP Event");
  449. +           sendPacket(RestartResponse.valueOf(false));
  450. +           return;
  451. +       }
  452. +      
  453.         player.getInventory().updateDatabase();
  454.        
  455.         // Check if player is in private store
  456. Index: head-src/com/l2jfrozen/gameserver/network/serverpackets/Die.java
  457. ===================================================================
  458. --- head-src/com/l2jfrozen/gameserver/network/serverpackets/Die.java    (revision 1132)
  459. +++ head-src/com/l2jfrozen/gameserver/network/serverpackets/Die.java    (working copy)
  460. @@ -28,6 +28,7 @@
  461.  import com.l2jfrozen.gameserver.model.L2Character;
  462.  import com.l2jfrozen.gameserver.model.L2SiegeClan;
  463.  import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
  464. +import com.l2jfrozen.gameserver.model.entity.PvPEvent;
  465.  import com.l2jfrozen.gameserver.model.entity.event.CTF;
  466.  import com.l2jfrozen.gameserver.model.entity.event.DM;
  467.  import com.l2jfrozen.gameserver.model.entity.event.TvT;
  468. @@ -87,6 +88,9 @@
  469.         // 6d 03 00 00 00 - to siege HQ
  470.         // sweepable
  471.         // 6d 04 00 00 00 - FIXED
  472. +        
  473. +        if (_activeChar instanceof L2PcInstance && PvPEvent.checkPlayerInEvent(((L2PcInstance)_activeChar)))
  474. +             return;
  475.        
  476.         writeD(_canTeleport ? 0x01 : 0); // 6d 00 00 00 00 - to nearest village
  477.        
  478. Index: head-src/com/l2jfrozen/Config.java
  479. ===================================================================
  480. --- head-src/com/l2jfrozen/Config.java  (revision 1132)
  481. +++ head-src/com/l2jfrozen/Config.java  (working copy)
  482. @@ -1739,8 +1739,44 @@
  483.             throw new Error("Failed to Load " + EVENT_TW + " File.");
  484.         }
  485.     }
  486. +   // ============================================================
  487. +   public static int PVP_EVENT_TIME;
  488. +   public static int PVP_EVENT_REG_TIME;
  489. +   public static int PVP_EVENT_X;
  490. +   public static int PVP_EVENT_Y;
  491. +   public static int PVP_EVENT_Z;
  492. +   public static int [][] PVP_EVENT_REWARDS;
  493. +   public static boolean PVP_EVENT_SETHERO;
  494.    
  495.     // ============================================================
  496. +  
  497. +   public static void loadPvPEventConfig()
  498. +   {
  499. +       final String EVENT_PVP_FILE = FService.EVENT_PVP_FILE;
  500. +      
  501. +       try
  502. +       {
  503. +           final Properties pvpSettings = new Properties();
  504. +           final InputStream is = new FileInputStream(new File(EVENT_PVP_FILE));
  505. +           pvpSettings.load(is);
  506. +           is.close();
  507. +          
  508. +           PVP_EVENT_TIME = Integer.parseInt(pvpSettings.getProperty("PVPEventTime", "300"));
  509. +           PVP_EVENT_REG_TIME = Integer.parseInt(pvpSettings.getProperty("PVPEventRegisterTime", "30"));
  510. +           PVP_EVENT_X = Integer.parseInt(pvpSettings.getProperty("EventTeleportX", "0"));
  511. +           PVP_EVENT_Y = Integer.parseInt(pvpSettings.getProperty("EventTeleportY", "0"));
  512. +           PVP_EVENT_Z = Integer.parseInt(pvpSettings.getProperty("EventTeleportZ", "0"));
  513. +           PVP_EVENT_REWARDS = parseItemsList(pvpSettings.getProperty("PVPEventRewards", "6622,1"));
  514. +           PVP_EVENT_SETHERO = Boolean.parseBoolean(pvpSettings.getProperty("PVPEventSetHero", "false"));
  515. +       }
  516. +       catch (final Exception e)
  517. +       {
  518. +           e.printStackTrace();
  519. +           throw new Error("Failed to Load " + EVENT_PVP_FILE + " File.");
  520. +       }
  521. +   }
  522. +  
  523. +   // ============================================================
  524.     public static boolean IRC_ENABLED;
  525.     public static boolean IRC_LOG_CHAT;
  526.     public static boolean IRC_SSL;
  527. @@ -4542,6 +4578,7 @@
  528.             loadTVTConfig();
  529.             loadTWConfig();
  530.             loadIRCConfig();
  531. +           loadPvPEventConfig();
  532.            
  533.             // Protect
  534.             loadFloodConfig();
  535. @@ -5573,4 +5610,53 @@
  536.         LOGGER.info("Cleaning Chat Filter..");
  537.         FILTER_LIST.clear();
  538.     }
  539. +  
  540. +   /**
  541. +    * itemId1,itemNumber1;itemId2,itemNumber2... to the int[n][2] = [itemId1][itemNumber1],[itemId2][itemNumber2]...
  542. +    * @param line
  543. +    * @return an array consisting of parsed items.
  544. +    */
  545. +   private static final int[][] parseItemsList(String line)
  546. +   {
  547. +       final String[] propertySplit = line.split(";");
  548. +       if (propertySplit.length == 0)
  549. +           return null;
  550. +      
  551. +       int i = 0;
  552. +       String[] valueSplit;
  553. +       final int[][] result = new int[propertySplit.length][];
  554. +       for (String value : propertySplit)
  555. +       {
  556. +           valueSplit = value.split(",");
  557. +           if (valueSplit.length != 2)
  558. +           {
  559. +               LOGGER.warn("Config: Error parsing entry -> \"" + valueSplit[0] + "\", should be itemId,itemNumber");
  560. +               return null;
  561. +           }
  562. +          
  563. +           result[i] = new int[2];
  564. +           try
  565. +           {
  566. +               result[i][0] = Integer.parseInt(valueSplit[0]);
  567. +           }
  568. +           catch (NumberFormatException e)
  569. +           {
  570. +               LOGGER.warn("Config: Error parsing item ID -> \"" + valueSplit[0] + "\"");
  571. +               return null;
  572. +           }
  573. +          
  574. +           try
  575. +           {
  576. +               result[i][1] = Integer.parseInt(valueSplit[1]);
  577. +           }
  578. +           catch (NumberFormatException e)
  579. +           {
  580. +               LOGGER.warn("Config: Error parsing item amount -> \"" + valueSplit[1] + "\"");
  581. +               return null;
  582. +           }
  583. +           i++;
  584. +       }
  585. +       return result;
  586. +   }
  587. +  
  588.  }
  589. Index: head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PcInstance.java
  590. ===================================================================
  591. --- head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PcInstance.java    (revision 1132)
  592. +++ head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PcInstance.java    (working copy)
  593. @@ -143,6 +143,7 @@
  594.  import com.l2jfrozen.gameserver.model.entity.Announcements;
  595.  import com.l2jfrozen.gameserver.model.entity.Duel;
  596.  import com.l2jfrozen.gameserver.model.entity.L2Rebirth;
  597. +import com.l2jfrozen.gameserver.model.entity.PvPEvent;
  598.  import com.l2jfrozen.gameserver.model.entity.event.CTF;
  599.  import com.l2jfrozen.gameserver.model.entity.event.DM;
  600.  import com.l2jfrozen.gameserver.model.entity.event.L2Event;
  601. @@ -7394,6 +7395,7 @@
  602.         if (killer != null)
  603.         {
  604.             final L2PcInstance pk = killer.getActingPlayer();
  605. +           PvPEvent.onDie(this, pk);  
  606.             if (pk != null)
  607.             {
  608.                 if (Config.ENABLE_PK_INFO)
  609. @@ -19643,5 +19645,16 @@
  610.        
  611.         _currentPetSkill = new SkillDat(currentSkill, ctrlPressed, shiftPressed);
  612.     }
  613. +   private int _pointsPvPEvent;
  614.    
  615. +   public void setPointPvPEvent(int point)
  616. +   {
  617. +       _pointsPvPEvent = point;
  618. +   }
  619. +    
  620. +   public int getPointPvPEvent()
  621. +   {
  622. +       return _pointsPvPEvent;
  623. +   }
  624. +  
  625.  }
  626. \ No newline at end of file
  627. Index: head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestBypassToServer.java
  628. ===================================================================
  629. --- head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestBypassToServer.java  (revision 1132)
  630. +++ head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestBypassToServer.java  (working copy)
  631. @@ -36,6 +36,7 @@
  632.  import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
  633.  import com.l2jfrozen.gameserver.model.actor.instance.L2SymbolMakerInstance;
  634.  import com.l2jfrozen.gameserver.model.actor.position.L2CharPosition;
  635. +import com.l2jfrozen.gameserver.model.entity.PvPEvent;
  636.  import com.l2jfrozen.gameserver.model.entity.event.CTF;
  637.  import com.l2jfrozen.gameserver.model.entity.event.DM;
  638.  import com.l2jfrozen.gameserver.model.entity.event.L2Event;
  639. @@ -121,6 +122,10 @@
  640.             {
  641.                 comeHere(activeChar);
  642.             }
  643. +           else if (_command.startsWith("join_pvp"))
  644. +           {
  645. +               PvPEvent.registerPlayer(activeChar);
  646. +           }
  647.             else if (_command.startsWith("player_help "))
  648.             {
  649.                 playerHelp(activeChar, _command.substring(12));
  650. #P L2jFrozen_DataPack
  651. Index: sql/admin_command_access_rights.sql
  652. ===================================================================
  653. --- sql/admin_command_access_rights.sql (revision 1132)
  654. +++ sql/admin_command_access_rights.sql (working copy)
  655. @@ -636,4 +636,8 @@
  656.  
  657.  -- Section: AIO
  658.  ('admin_setaio','2'),
  659. -('admin_removeaio','2');
  660. +('admin_removeaio','2'),
  661. +
  662. +-- Section: PvP Event
  663. +('admin_pvp_start','2'),
  664. +('admin_pvp_end','2');
  665. \ No newline at end of file
  666. Index: data/html/mods/pvp/event.htm
  667. ===================================================================
  668. --- data/html/mods/pvp/event.htm    (nonexistent)
  669. +++ data/html/mods/pvp/event.htm    (working copy)
  670. @@ -0,0 +1,59 @@
  671. +<html>
  672. +<title>Event Manager</title>
  673. +<body>
  674. +<center>
  675. +<center><img src=L2UI.SquareGray width=250 height=1></center>
  676. +<td><img src="L2UI.SquareBlank" width=40 height=2></td>
  677. +<center><img src="L2UI.SquareGray" width=300 height=1></center>
  678. +<table bgcolor=000000 width=300 height=40>
  679. +<tr>
  680. +<td width="300" align="center"><font color="666666">Lineage II - PVP EVENT</font></td>
  681. +</tr>
  682. +</table>
  683. +<center><img src="L2UI.SquareGray" width=300 height=1></center>
  684. +<td><img src="L2UI.SquareBlank" width=40 height=2></td>
  685. +<center><img src=L2UI.SquareGray width=250 height=1></center>
  686. +<br>
  687. +<center><img src=L2UI.SquareGray width=250 height=1></center>
  688. +<td><img src="L2UI.SquareBlank" width=40 height=2></td>
  689. +<center><img src="L2UI.SquareGray" width=300 height=1></center>
  690. +</center>
  691. +<center>
  692. +<table bgcolor=000000 width=300 height=12>
  693. +<tr>
  694. +<td width="300" align="center"><font color="FF0000">Event Manager</font></td>
  695. +</tr>
  696. +<tr>
  697. +<td width="300" align="center"><font color="666666">...Event Info...</font></td>
  698. +</tr>
  699. +</table>
  700. +<center><img src="L2UI.SquareGray" width=300 height=1></center>
  701. +<td><img src="L2UI.SquareBlank" width=40 height=2></td>
  702. +<center><img src=L2UI.SquareGray width=250 height=1></center>
  703. +<br>
  704. +<center><img src=L2UI.SquareGray width=250 height=1></center>
  705. +<td><img src="L2UI.SquareBlank" width=40 height=2></td>
  706. +<center><img src="L2UI.SquareGray" width=300 height=1></center>
  707. +<table border=0 bgcolor=000000 width=300 height=10>
  708. +<tr>
  709. +<td width="300" align="center"><font color="FF9900">Deseja participar do evento ? - </font></td>
  710. +</tr>
  711. +</table>
  712. +<center><img src="L2UI.SquareGray" width=300 height=1></center>
  713. +<td><img src="L2UI.SquareBlank" width=40 height=2></td>
  714. +<center><img src=L2UI.SquareGray width=250 height=1></center>
  715. +<br>
  716. +<center><img src=L2UI.SquareGray width=250 height=1></center>
  717. +<td><img src="L2UI.SquareBlank" width=40 height=2></td>
  718. +<center><img src="L2UI.SquareGray" width=300 height=1></center>
  719. +<table border=0 bgcolor=000000 width=300 height=20>
  720. +<tr>
  721. +<td align="center" width="300"><button value="Join" action="bypass -h join_pvp" width=85 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></center></td>
  722. +</tr>
  723. +</table>
  724. +<center><img src="L2UI.SquareGray" width=300 height=1></center>
  725. +<td><img src="L2UI.SquareBlank" width=40 height=2></td>
  726. +<center><img src=L2UI.SquareGray width=250 height=1></center>
  727. +</center>
  728. +</body>
  729. +</html>
  730. \ No newline at end of file
  731. Index: data/html/mods/pvp/event.htm
  732. ===================================================================
  733. --- data/html/mods/pvp/event.htm    (nonexistent)
  734. +++ data/html/mods/pvp/event.htm    (working copy)
  735. @@ -0,0 +1,59 @@
  736. +<html>
  737. +<title>Event Manager</title>
  738. +<body>
  739. +<center>
  740. +<center><img src=L2UI.SquareGray width=250 height=1></center>
  741. +<td><img src="L2UI.SquareBlank" width=40 height=2></td>
  742. +<center><img src="L2UI.SquareGray" width=300 height=1></center>
  743. +<table bgcolor=000000 width=300 height=40>
  744. +<tr>
  745. +<td width="300" align="center"><font color="666666">Lineage II - PVP EVENT</font></td>
  746. +</tr>
  747. +</table>
  748. +<center><img src="L2UI.SquareGray" width=300 height=1></center>
  749. +<td><img src="L2UI.SquareBlank" width=40 height=2></td>
  750. +<center><img src=L2UI.SquareGray width=250 height=1></center>
  751. +<br>
  752. +<center><img src=L2UI.SquareGray width=250 height=1></center>
  753. +<td><img src="L2UI.SquareBlank" width=40 height=2></td>
  754. +<center><img src="L2UI.SquareGray" width=300 height=1></center>
  755. +</center>
  756. +<center>
  757. +<table bgcolor=000000 width=300 height=12>
  758. +<tr>
  759. +<td width="300" align="center"><font color="FF0000">Event Manager</font></td>
  760. +</tr>
  761. +<tr>
  762. +<td width="300" align="center"><font color="666666">...Event Info...</font></td>
  763. +</tr>
  764. +</table>
  765. +<center><img src="L2UI.SquareGray" width=300 height=1></center>
  766. +<td><img src="L2UI.SquareBlank" width=40 height=2></td>
  767. +<center><img src=L2UI.SquareGray width=250 height=1></center>
  768. +<br>
  769. +<center><img src=L2UI.SquareGray width=250 height=1></center>
  770. +<td><img src="L2UI.SquareBlank" width=40 height=2></td>
  771. +<center><img src="L2UI.SquareGray" width=300 height=1></center>
  772. +<table border=0 bgcolor=000000 width=300 height=10>
  773. +<tr>
  774. +<td width="300" align="center"><font color="FF9900">Deseja participar do evento ? - </font></td>
  775. +</tr>
  776. +</table>
  777. +<center><img src="L2UI.SquareGray" width=300 height=1></center>
  778. +<td><img src="L2UI.SquareBlank" width=40 height=2></td>
  779. +<center><img src=L2UI.SquareGray width=250 height=1></center>
  780. +<br>
  781. +<center><img src=L2UI.SquareGray width=250 height=1></center>
  782. +<td><img src="L2UI.SquareBlank" width=40 height=2></td>
  783. +<center><img src="L2UI.SquareGray" width=300 height=1></center>
  784. +<table border=0 bgcolor=000000 width=300 height=20>
  785. +<tr>
  786. +<td align="center" width="300"><button value="Join" action="bypass -h join_pvp" width=85 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></center></td>
  787. +</tr>
  788. +</table>
  789. +<center><img src="L2UI.SquareGray" width=300 height=1></center>
  790. +<td><img src="L2UI.SquareBlank" width=40 height=2></td>
  791. +<center><img src=L2UI.SquareGray width=250 height=1></center>
  792. +</center>
  793. +</body>
  794. +</html>
  795. \ No newline at end of file
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement