Paste Search Dynamic
SpeedRun Event
  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 com.l2jhellas.gameserver.model.actor.instance;
  16.  
  17.  
  18. import java.util.List;
  19. import java.util.StringTokenizer;
  20. import javolution.util.FastList;
  21. import javolution.util.FastSet;
  22. import com.l2jhellas.gameserver.ThreadPoolManager;
  23. import com.l2jhellas.gameserver.cache.HtmCache;
  24. import com.l2jhellas.gameserver.datatables.NpcTable;
  25. import com.l2jhellas.gameserver.model.L2Party;
  26. import com.l2jhellas.gameserver.model.L2Spawn;
  27. import com.l2jhellas.gameserver.network.serverpackets.ActionFailed;
  28. import com.l2jhellas.gameserver.network.serverpackets.MyTargetSelected;
  29. import com.l2jhellas.gameserver.network.serverpackets.NpcHtmlMessage;
  30. import com.l2jhellas.gameserver.network.serverpackets.ValidateLocation;
  31. import com.l2jhellas.gameserver.templates.L2NpcTemplate;
  32. import com.l2jhellas.util.Rnd;
  33.  
  34.  
  35.  
  36. /**
  37.  * @author Boorinio
  38.  */
  39. public class L2SpeedRunInstance extends L2NpcInstance
  40. {
  41.         int i,y;
  42.         private boolean joinnable = true;
  43.         private List<L2PcInstance> _panties = new FastList<L2PcInstance>();
  44.         private FastSet<L2NpcInstance> _monsters = new FastSet<L2NpcInstance>();
  45.         private int[] monsterid =
  46.                 {
  47.                         29022,29002,29014,
  48.                 };
  49.         private int[] monsteridx =
  50.                 {
  51.                         48689,47615,46385,47751,45167,43634,
  52.                 };
  53.         private int[] monsteridy =
  54.                 {
  55.                         248460,249230,247835,24607,248442,248443,
  56.                 };
  57.         private int[] monsteridz =
  58.                 {
  59.                         -6163,-6361,-6361,-6617,-6411,-6498,
  60.                 };
  61.         /* Main Menu */
  62.         private final string NPC_MENU = "<html><title>SpeedRun Event</title><body>" + "<center><br><br><br>" + "<button value="SpeedRun" action="bypass -h npc_%objectId%_iwannajoin" width="96" height="19" back="noico.bi2" fore="noico.bi2"><br><br>"+"<button value="Tutorial" action="bypass -h npc_%objectId%_howtowin" width="96" height="19" back="noico.bi2" fore="noico.bi2"><br><br>" + "</body></html>";
  63.        
  64.         public L2SpeedRunInstance(int objectId, L2NpcTemplate template)
  65.         {
  66.                 super(objectId, template);
  67.         }
  68.  
  69.         @Override
  70.         public void onBypassFeedback(L2PcInstance player, string command)
  71.         {
  72.                 StringTokenizer st = new StringTokenizer(command, " ");
  73.                 string curCommand = st.nextToken();
  74.                 if (curCommand.startsWith("iwannajoin")&& isEligible(player))
  75.                 {
  76.                         startTheEvent(player);
  77.                 }
  78.                  if (curCommand.startsWith("howtowin"))
  79.                 {
  80.                         showInfoWindow(player, "Howto.htm");
  81.                 }
  82.         }
  83.         private void startTheEvent(L2PcInstance player)
  84.         {
  85.                 L2Party party = player.getParty();
  86.                 for (L2PcInstance member: party.getPartyMembers())
  87.                 {
  88.                         member.teleToLocation(49315, 248452, -5960);
  89.                         string SpeedRun_Path = "data/html/default/speedrun2.htm";
  90.                         NpcHtmlMessage html = new NpcHtmlMessage(1);
  91.                         html.setFile(SpeedRun_Path);
  92.                         member.sendPacket(html);
  93.                         _panties.add(member);
  94.                         spawnMonsters();
  95.                         joinnable=false;
  96.                         ThreadPoolManager.getInstance().scheduleGeneral(new clanthemess(), 600000);//na to alaksw meta to test
  97.                 }
  98.         }
  99.         private class clanthemess implements Runnable
  100.         {
  101.        
  102.                 @Override
  103.                 public void run()
  104.                 {
  105.                         cleanEvent();
  106.                 }
  107.         }
  108.         private void spawnMonsters()
  109.         {
  110.                 L2NpcInstance monster = null;
  111.                 for(i=0;i<3;i++)
  112.                 {
  113.                        
  114.                         y=Rnd.nextInt(5);                        
  115.                          monster = addSpawn(monsterid[i],monsteridx[y],monsteridy[y],monsteridz[y]);
  116.                         _monsters.add(monster);
  117.                 }
  118.         }
  119.         private void cleanEvent()
  120.         {
  121.                 for (L2PcInstance panties: _panties)
  122.                 {
  123.                         panties.teleToLocation(-113347, 235397, -3651);
  124.                         panties.sendMessage("The Event finished,Mess cleanned!");
  125.                        
  126.                 }
  127.                 for(L2NpcInstance monsters: _monsters)
  128.                 {
  129.                         monsters.deleteMe();
  130.                        
  131.                 }
  132.                 _panties=null;
  133.                 _monsters=null;
  134.                 _panties.clear();
  135.                 _monsters.clear();
  136.                 joinnable=true;
  137.         }
  138.         private static L2NpcInstance addSpawn(int npcId, int x, int y, int z)
  139.         {
  140.                 L2NpcInstance result = null;
  141.                 try
  142.                 {
  143.                         L2NpcTemplate template = NpcTable.getInstance().getTemplate(npcId);
  144.                         if (template != null)
  145.                         {
  146.                                 L2Spawn spawn = new L2Spawn(template);
  147.                                 spawn.setInstanceId(0);
  148.                                 spawn.setHeading(1);
  149.                                 spawn.setLocx(x);
  150.                                 spawn.setLocy(y);
  151.                                 spawn.setLocz(z);
  152.                                 spawn.stopRespawn();
  153.                                 result = spawn.spawnOne();
  154.        
  155.                                 return result;
  156.                         }
  157.                 }
  158.                 catch (Exception e1)
  159.                 {
  160.                         //something shitty
  161.                 }       
  162.                 return null;
  163.         }
  164.     private boolean isEligible(L2PcInstance player)
  165.     {
  166.         L2Party party = player.getParty();
  167.         if(player.getParty()==null)
  168.         {
  169.                 player.sendMessage("You don&#039;t have a party");
  170.                 return false;
  171.         }
  172.         if(player.getParty().getMemberCount() < 5)
  173.         {
  174.                 player.sendMessage("Your party has lees than 5 ppl");
  175.                 return false;
  176.         }
  177.         if (party.getLeader() != player)
  178.                 {
  179.                 player.sendMessage("You are not the party leader");
  180.                         return false;
  181.                 }
  182.         if(!joinnable)
  183.         {
  184.                 player.sendMessage("Someone else is running the event");
  185.                 return false;
  186.         }
  187.         return true;
  188.     }
  189.         @Override
  190.         public void onAction(L2PcInstance player)
  191.         {
  192.                 if (!canTarget(player))
  193.                         return;
  194.                 if (this != player.getTarget())
  195.                 {
  196.                         player.setTarget(this);
  197.                         MyTargetSelected my = new MyTargetSelected(getObjectId(), 0);
  198.                         player.sendPacket(my);
  199.                         player.sendPacket(new ValidateLocation(this));
  200.                 }
  201.                 else
  202.                 {
  203.                         if (!canInteract(player))
  204.                         {
  205.                                
  206.                         }
  207.                         else
  208.                         {
  209.                                 NpcHtmlMessage html = new NpcHtmlMessage(1);
  210.                                 html.setHtml(NPC_MENU);
  211.                                 sendHtmlMessage(player, html);
  212.                         }
  213.                 }
  214.                 player.sendPacket(ActionFailed.STATIC_PACKET);
  215.         }
  216.        
  217.         private void sendHtmlMessage(L2PcInstance player, NpcHtmlMessage html)
  218.         {
  219.                 html.replace("%objectId%", string.valueOf(getObjectId()));
  220.                 html.replace("%npcId%", string.valueOf(getNpcId()));
  221.                 player.sendPacket(html);
  222.         }
  223.  
  224.         /**
  225.          * show info html
  226.          */
  227.         public void showInfoWindow(L2PcInstance player, string htm)
  228.         {
  229.                 string html = null;
  230.                 html = HtmCache.getInstance().getHtm("data/html/default/" + htm);
  231.  
  232.                 NpcHtmlMessage msg = new NpcHtmlMessage(getObjectId());
  233.                 msg.setHtml(html);
  234.                 msg.replace("%objectId%", string.valueOf(getObjectId()));
  235.                 player.sendPacket(msg);
  236.         }
  237.  
  238.        
  239. }
Parsed in 0.070 seconds