Guest User

Hidde&Seek Event By AbsolutePower!

a guest
Aug 13th, 2013
924
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.60 KB | None | 0 0
  1. /* This program is free software; you can redistribute it and/or modify
  2. * it under the terms of the GNU General Public License as published by
  3. * the Free Software Foundation; either version 2, or (at your option)
  4. * any later version.
  5. *
  6. * This program is distributed in the hope that it will be useful,
  7. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  8. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  9. * GNU General Public License for more details.
  10. *
  11. * You should have received a copy of the GNU General Public License
  12. * along with this program; if not, write to the Free Software
  13. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
  14. * 02111-1307, USA.
  15. *
  16. * http://www.gnu.org/copyleft/gpl.html
  17. */
  18.  
  19. package net.sf.l2j.gameserver.model.entity.events;
  20.  
  21. import java.util.List;
  22. import java.util.concurrent.ScheduledFuture;
  23.  
  24. import javolution.util.FastList;
  25.  
  26. import net.sf.l2j.gameserver.Announcements;
  27. import net.sf.l2j.gameserver.ThreadPoolManager;
  28. import net.sf.l2j.gameserver.instancemanager.TownManager;
  29. import net.sf.l2j.gameserver.model.L2World;
  30. import net.sf.l2j.gameserver.model.actor.L2Character;
  31. import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
  32. import net.sf.l2j.gameserver.model.zone.L2ZoneType;
  33. import net.sf.l2j.gameserver.util.Util;
  34. import net.sf.l2j.util.Rnd;
  35.  
  36.  
  37. /**
  38. *
  39. * @author AbsolutePower
  40. */
  41. public class HiddeSeek
  42. {
  43.  
  44. static boolean started = false;
  45. final int timeToSearch = 6;
  46. final int waitinTimeForSearch = 1;
  47. final static int rewardId = 3470;
  48. final static int rewardAmount = 3;
  49.  
  50. public static State state = State.INACTIVE;
  51. public static enum State{ INACTIVE,PICKING,SEARCHING}
  52. public static FastList<L2PcInstance> _players = new FastList<L2PcInstance>();
  53. public static L2PcInstance hidden = null;
  54.  
  55.  
  56. public class Task implements Runnable
  57. {
  58. @Override
  59. public void run()
  60. {
  61. if (state != State.INACTIVE || TvTEvent.isStarted() )
  62. {
  63. clear();
  64. return;
  65. }
  66. startHide();
  67. }
  68. }
  69.  
  70. public void startHide()
  71. {
  72. Announce("Hidde Event Started! In 10 seconds a random player from Giran will be picked!");
  73. state = State.PICKING;
  74. wait(10,false);
  75. pickhidden();
  76. Announce("The event started someone in Giran is the Hidden!");
  77. Announce("You have 6 minutes to search for him.");
  78. wait(timeToSearch,true);
  79. while(state == State.SEARCHING)
  80. {
  81. Announce("One minute left! Still searching for him!");
  82. wait(waitinTimeForSearch,true);
  83. while(state == State.SEARCHING)
  84. {
  85. Announce("No one found the hidden. " + hidden + " was the hidden.");
  86. Announce(hidden + " rewarded because no one could not find him.");
  87. hidden.getInventory().addItem("Reward hidde", rewardId, rewardAmount, hidden, null);
  88. hidden.setIsImmobilized(false);
  89. clear();
  90. new HiddeSeek();
  91. }
  92. }
  93. }
  94.  
  95. public static void Announce(String msg)
  96. {
  97. Announcements.announceToAll(msg);
  98. }
  99.  
  100. static String _title ="";
  101.  
  102. static void clearTitle()
  103. {
  104. _title=null;
  105. }
  106. static void saveTitle(String title)
  107. {
  108. _title = title;
  109. }
  110.  
  111. final static String getTitle()
  112. {
  113. return _title;
  114. }
  115.  
  116. public static void pickhidden()
  117. {
  118. state = State.SEARCHING;
  119. L2ZoneType zone = TownManager.getTown(9);
  120.  
  121.  
  122. for (L2Character character : zone.getCharactersInside())
  123. {
  124. if ((character instanceof L2PcInstance) && !((L2PcInstance) character).isInCombat() && !((L2PcInstance) character).isInParty() && !((L2PcInstance) character).isInOlympiadMode() && !((L2PcInstance) character).isCursedWeaponEquipped() && !(((L2PcInstance) character).isInStoreMode()))
  125. {
  126. _players.add((L2PcInstance) character);
  127. }
  128.  
  129. if(_players.size() >2)
  130. {
  131. hidden = _players.get(Rnd.get(1, _players.size() - 1));
  132.  
  133. saveTitle(hidden.getTitle());
  134.  
  135. hidden.getAppearance().setInvisible();
  136. hidden.decayMe();
  137. hidden.broadcastUserInfo();
  138. hidden.spawnMe();
  139.  
  140. hidden.sendMessage("You picked for the event!you got 3 minutes until you will be visible!");
  141. hidden.sendMessage("Run Run go hide!");
  142. wait(3,true);
  143. hidden.getAppearance().setVisible();
  144. hidden.setTitle("Hidden");
  145. hidden.setIsImmobilized(true);
  146. hidden.sendMessage("You are visible now! you can't move");
  147. hidden.getAppearance().setVisible();
  148. hidden.broadcastUserInfo();
  149. started = true;
  150. StartcheckTarget();
  151. }
  152. else
  153. {
  154. Announce("Non enough players in giran for the event to start.");
  155. state = State.INACTIVE;
  156. clear();
  157. new HiddeSeek();
  158. }
  159. }
  160.  
  161. }
  162.  
  163.  
  164. public static void clear()
  165. {
  166. started = false;
  167. stopcheckTarget();
  168. _players.clear();
  169. hidden = null;
  170. state = State.INACTIVE;
  171. clearTitle();
  172. }
  173.  
  174.  
  175. private static ScheduledFuture<?> _TargetChecker;
  176.  
  177. static class checkTarget implements Runnable
  178. {
  179.  
  180. @Override
  181. public void run()
  182. {
  183. final L2ZoneType zone = TownManager.getTown(9);
  184. final List<L2PcInstance> zo = zone.getPlayersInside();
  185.  
  186. if(zo.contains(hidden))
  187. zo.remove(hidden);
  188.  
  189. if(started)
  190. {
  191. for(L2PcInstance pl: zo)
  192. {
  193. if(hidden==null || pl==null)
  194. {
  195. started = false;
  196. return;
  197. }
  198. if (Util.calculateDistance(hidden, pl, true) <= 15)
  199. {
  200. pl.sendMessage("you win");
  201.  
  202. Announce(pl.getName()+ " found the hidden player "+hidden.getName());
  203. pl.getInventory().addItem("Reward hidde", rewardId, rewardAmount, pl, null);
  204. hidden.setIsImmobilized(false);
  205. hidden.setTitle(getTitle());
  206. clear();
  207. HiddeSeek.getInstance();
  208. }
  209. else
  210. StartcheckTarget();
  211. }
  212. }
  213. else
  214. stopcheckTarget();
  215. }
  216.  
  217. }
  218.  
  219. static void stopcheckTarget()
  220. {
  221. if(_TargetChecker!=null)
  222. _TargetChecker.cancel(true);
  223. _TargetChecker = null;
  224. }
  225.  
  226. static void StartcheckTarget()
  227. {
  228. _TargetChecker = ThreadPoolManager.getInstance().scheduleGeneral(new checkTarget(), 1* 1000);
  229. }
  230.  
  231. private HiddeSeek()
  232. {
  233. ThreadPoolManager.getInstance().scheduleGeneral(new Task(), 2500* 1000);
  234. }
  235.  
  236. public static void wait(int i,boolean minutes)
  237. {
  238. if(minutes)
  239. try
  240. {
  241. Thread.sleep(i * 60000);
  242. }
  243. catch (InterruptedException ie)
  244. {
  245. ie.printStackTrace();
  246. }
  247. else
  248.  
  249. try
  250. {
  251. Thread.sleep(i * 1000);
  252. }
  253. catch (InterruptedException ie)
  254. {
  255. ie.printStackTrace();
  256. }
  257. }
  258.  
  259. public static HiddeSeek getInstance()
  260. {
  261. return SingletonHolder._instance;
  262. }
  263.  
  264. private static class SingletonHolder
  265. {
  266. @SuppressWarnings("synthetic-access")
  267. protected static final HiddeSeek _instance = new HiddeSeek();
  268. }
  269. }
Advertisement
Add Comment
Please, Sign In to add comment