Advertisement
Guest User

Untitled

a guest
Nov 17th, 2016
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.34 KB | None | 0 0
  1. package com.l2jfrozen.gameserver.handler;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.InputStreamReader;
  5. import java.net.HttpURLConnection;
  6. import java.net.URL;
  7. import java.util.ArrayList;
  8. import java.util.Collection;
  9. import java.util.List;
  10. import java.util.Set;
  11.  
  12. import org.apache.log4j.Level;
  13. import org.apache.log4j.Logger;
  14.  
  15. import com.l2jfrozen.Config;
  16. import com.l2jfrozen.gameserver.model.L2World;
  17. import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
  18. import com.l2jfrozen.gameserver.model.entity.Announcements;
  19. import com.l2jfrozen.gameserver.powerpak.PowerPakConfig;
  20. import com.l2jfrozen.gameserver.thread.ThreadPoolManager;
  21.  
  22. /**
  23. * @author L2jFrozen <br>
  24. * <br>
  25. * Network working with L2jFrozen AutoVoteReward: <br>
  26. * Hopzone -> http://l2.hopzone.net/ <br>
  27. * Topzone -> http://l2topzone.com/ <br>
  28. * L2network -> http://l2network.eu/ <br>
  29. */
  30.  
  31. public class AutoVoteRewardHandler
  32. {
  33. protected static final Logger LOGGER = Logger.getLogger(AutoVoteRewardHandler.class);
  34.  
  35. protected List<String> already_rewarded;
  36.  
  37. private int _l2networkVotesCount = 0;
  38. private int _hopzoneVotesCount = 0;
  39. private int _topzoneVotesCount = 0;
  40. protected List<String> _already_rewarded;
  41.  
  42. protected static boolean _l2network = false;
  43. protected static boolean _topzone = false;
  44. protected static boolean _hopzone = false;
  45.  
  46. private AutoVoteRewardHandler()
  47. {
  48. LOGGER.info("Vote Reward System Initiated.");
  49.  
  50. if (_hopzone)
  51. {
  52. int hopzone_votes = getHopZoneVotes();
  53.  
  54. if (hopzone_votes == -1)
  55. {
  56. hopzone_votes = 0;
  57. }
  58.  
  59. setHopZoneVoteCount(hopzone_votes);
  60. }
  61.  
  62. if (_l2network)
  63. {
  64. int l2network_votes = getL2NetworkVotes();
  65.  
  66. if (l2network_votes == -1)
  67. {
  68. l2network_votes = 0;
  69. }
  70.  
  71. setL2NetworkVoteCount(l2network_votes);
  72. }
  73.  
  74. if (_topzone)
  75. {
  76. int topzone_votes = getTopZoneVotes();
  77.  
  78. if (topzone_votes == -1)
  79. {
  80. topzone_votes = 0;
  81. }
  82.  
  83. setTopZoneVoteCount(topzone_votes);
  84. }
  85.  
  86. ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoReward(), PowerPakConfig.VOTES_SYSYEM_INITIAL_DELAY, PowerPakConfig.VOTES_SYSYEM_STEP_DELAY);
  87. }
  88.  
  89. protected class AutoReward implements Runnable
  90. {
  91. @SuppressWarnings("unused")
  92. @Override
  93. public void run()
  94. {
  95. final int minutes = (PowerPakConfig.VOTES_SYSYEM_STEP_DELAY / 1000) / 60;
  96.  
  97. if (_hopzone)
  98. {
  99. final int hopzone_votes = getHopZoneVotes();
  100.  
  101. if (hopzone_votes != -1)
  102. {
  103. LOGGER.info("Server votes on HopZone: " + hopzone_votes);
  104. LOGGER.info("Votes needed for reward: " + (getHopZoneVoteCount() + PowerPakConfig.VOTES_FOR_REWARD) + "");
  105. Announcements.getInstance().PartyAnnounce("Hopzone: Vote count is " + hopzone_votes + ".");
  106.  
  107. if (hopzone_votes != 0 && hopzone_votes >= getHopZoneVoteCount() + PowerPakConfig.VOTES_FOR_REWARD)
  108. {
  109. _already_rewarded = new ArrayList<>();
  110.  
  111. final Collection<L2PcInstance> pls = L2World.getInstance().getAllPlayers();
  112.  
  113. LOGGER.info("HopZone: All players got their reward ");
  114. Announcements.getInstance().PartyAnnounce("Hopzone: All players got their reward.");
  115.  
  116. // L2ItemInstance item;
  117. for (final L2PcInstance player : pls)
  118. {
  119. if (player != null && !player.isInOfflineMode() && player.isOnline() == 1)
  120. {
  121. if (player._active_boxes <= 1 || (player._active_boxes > 1 && checkSingleBox(player)))
  122. {
  123.  
  124. final Set<Integer> items = PowerPakConfig.VOTES_REWARDS_LIST.keySet();
  125. for (final Integer i : items)
  126. {
  127. // item = player.getInventory().getItemByItemId(i);
  128.  
  129. // TODO: check on maxstack for item
  130. player.addItem("reward", i, PowerPakConfig.VOTES_REWARDS_LIST.get(i), player, true);
  131. player.sendMessage("You have been rewarded for your votes, Thanks!");
  132.  
  133. }
  134.  
  135. }
  136. }
  137. }
  138. setHopZoneVoteCount(hopzone_votes);
  139. }
  140. Announcements.getInstance().PartyAnnounce("Hopzone: We need " + (getHopZoneVoteCount() + PowerPakConfig.VOTES_FOR_REWARD) + " Votes to get rewards.");
  141. // site web
  142. Announcements.getInstance().PartyAnnounce("Server Site: " + PowerPakConfig.SERVER_WEB_SITE);
  143.  
  144.  
  145. }
  146.  
  147. }
  148.  
  149. if (_topzone && _hopzone && PowerPakConfig.VOTES_SYSYEM_STEP_DELAY > 0)
  150. {
  151. try
  152. {
  153. Thread.sleep(PowerPakConfig.VOTES_SYSYEM_STEP_DELAY / 2);
  154. }
  155. catch (final InterruptedException e)
  156. {
  157. if (Config.ENABLE_ALL_EXCEPTIONS)
  158. e.printStackTrace();
  159. }
  160. }
  161.  
  162. if (_topzone)
  163. {
  164. final int topzone_votes = getTopZoneVotes();
  165.  
  166. if (topzone_votes != -1)
  167. {
  168. LOGGER.info("Server votes on TopZone: " + topzone_votes);
  169. LOGGER.info("Votes needed for Reward: " + (getTopZoneVoteCount() + PowerPakConfig.VOTES_FOR_REWARD) + "");
  170. Announcements.getInstance().PartyAnnounce("Topzone: Votes count is " + topzone_votes + ".");
  171.  
  172. if (topzone_votes != 0 && topzone_votes >= getTopZoneVoteCount() + PowerPakConfig.VOTES_FOR_REWARD)
  173. {
  174. _already_rewarded = new ArrayList<>();
  175.  
  176. final Collection<L2PcInstance> pls = L2World.getInstance().getAllPlayers();
  177.  
  178. LOGGER.info("Topzone: All players got their reward ");
  179. Announcements.getInstance().PartyAnnounce("Topzone: All players got their reward.");
  180.  
  181. // L2ItemInstance item;
  182. for (final L2PcInstance player : pls)
  183. {
  184. if (player != null && !player.isInOfflineMode() && player.isOnline() == 1)
  185. {
  186. if (player._active_boxes <= 1 || (player._active_boxes > 1 && checkSingleBox(player)))
  187. {
  188. final Set<Integer> items = PowerPakConfig.VOTES_REWARDS_LIST.keySet();
  189. for (final Integer i : items)
  190. {
  191. // item = player.getInventory().getItemByItemId(i);
  192.  
  193. // TODO: check on maxstack for item
  194. player.addItem("reward", i, PowerPakConfig.VOTES_REWARDS_LIST.get(i), player, true);
  195. player.sendMessage("You have been rewarded for your votes, Thanks!");
  196. }
  197. }
  198. }
  199. }
  200. setTopZoneVoteCount(topzone_votes);
  201. }
  202.  
  203. Announcements.getInstance().PartyAnnounce("Topzone: We need " + (getTopZoneVoteCount() + PowerPakConfig.VOTES_FOR_REWARD) + " Votes to get rewards.");
  204. // site web
  205. Announcements.getInstance().PartyAnnounce("Server Site: " + PowerPakConfig.SERVER_WEB_SITE);
  206. }
  207. }
  208.  
  209. if (_topzone && _hopzone && _l2network && PowerPakConfig.VOTES_SYSYEM_STEP_DELAY > 0)
  210. {
  211. try
  212. {
  213. Thread.sleep(PowerPakConfig.VOTES_SYSYEM_STEP_DELAY / 2);
  214. }
  215. catch (final InterruptedException e)
  216. {
  217. if (Config.ENABLE_ALL_EXCEPTIONS)
  218. e.printStackTrace();
  219. }
  220. }
  221.  
  222. if (_l2network)
  223. {
  224. final int l2network_votes = getL2NetworkVotes();
  225.  
  226. if (l2network_votes != -1)
  227. {
  228. LOGGER.info("Server votes L2Network Votes: " + l2network_votes);
  229. Announcements.getInstance().PartyAnnounce("L2Network: Votes count is " + l2network_votes + ".");
  230.  
  231. if (l2network_votes != 0 && l2network_votes >= getL2NetworkVoteCount() + PowerPakConfig.VOTES_FOR_REWARD)
  232. {
  233. already_rewarded = new ArrayList<>();
  234.  
  235. final Collection<L2PcInstance> pls = L2World.getInstance().getAllPlayers();
  236.  
  237. Announcements.getInstance().PartyAnnounce("L2Netowrk: All players got their reward.");
  238.  
  239. // L2ItemInstance item;
  240. for (final L2PcInstance player : pls)
  241. {
  242. if (player != null && !player.isInOfflineMode() && player.isOnline() == 1)
  243. {
  244. if (player._active_boxes <= 1 || (player._active_boxes > 1 && checkSingleBox(player)))
  245. {
  246. final Set<Integer> items = PowerPakConfig.VOTES_REWARDS_LIST.keySet();
  247. for (final Integer i : items)
  248. {
  249. // item = player.getInventory().getItemByItemId(i);
  250.  
  251. // TODO: check on maxstack for item
  252. player.addItem("reward", i, PowerPakConfig.VOTES_REWARDS_LIST.get(i), player, true);
  253. player.sendMessage("You have been rewarded for your votes, Thanks!");
  254. }
  255. }
  256. }
  257. }
  258. setL2NetworkVoteCount(l2network_votes);
  259. }
  260. Announcements.getInstance().PartyAnnounce("L2Network: We need " + (getL2NetworkVoteCount() + PowerPakConfig.VOTES_FOR_REWARD) + " Votes to get rewards.");
  261. // site web
  262. Announcements.getInstance().PartyAnnounce("Server Site: " + PowerPakConfig.SERVER_WEB_SITE);
  263. }
  264. }
  265. }
  266. }
  267.  
  268. // Check boxes
  269. protected boolean checkSingleBox(final L2PcInstance player)
  270. {
  271. if (player == null)
  272. return false;
  273.  
  274. if (player.getClient() != null && player.getClient().getConnection() != null && !player.getClient().getConnection().isClosed() && player.isOnline() == 1 && !player.isInOfflineMode())
  275. {
  276.  
  277. final String playerip = player.getClient().getConnection().getInetAddress().getHostAddress();
  278.  
  279. if (_already_rewarded.contains(playerip))
  280. return false;
  281. _already_rewarded.add(playerip);
  282. return true;
  283. }
  284.  
  285. // if no connection (maybe offline shop) dnt reward
  286. return false;
  287. }
  288.  
  289. public static int getHopZoneVotes()
  290. {
  291.  
  292. int votes = -1;
  293. try
  294. {
  295. final URL obj = new URL(PowerPakConfig.VOTES_SITE_HOPZONE_URL);
  296. final HttpURLConnection con = (HttpURLConnection) obj.openConnection();
  297. con.addRequestProperty("User-Agent", "L2Hopzone");
  298. con.setConnectTimeout(5000);
  299.  
  300. final int responseCode = con.getResponseCode();
  301. if (responseCode == 200)
  302. {
  303. try (BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())))
  304. {
  305. String line;
  306. while ((line = in.readLine()) != null)
  307. {
  308. if (line.contains("Total Votes"))
  309. {
  310. String inputLine = line.split(">")[2].replace("</span", "");
  311. votes = Integer.parseInt(inputLine);
  312. break;
  313. }
  314. }
  315. }
  316. }
  317. }
  318. catch (Exception e)
  319. {
  320. e.printStackTrace();
  321. System.out.println("HOPZONE is offline. We will check reward as it will be online again.");
  322. }
  323. return votes;
  324. }
  325.  
  326. public static int getTopZoneVotes()
  327. {
  328. int votes = -1;
  329. try
  330. {
  331. final URL obj = new URL(PowerPakConfig.VOTES_SITE_TOPZONE_URL);
  332. final HttpURLConnection con = (HttpURLConnection) obj.openConnection();
  333. con.addRequestProperty("User-Agent", "L2TopZone");
  334. con.setConnectTimeout(5000);
  335.  
  336. final int responseCode = con.getResponseCode();
  337. if (responseCode == 200)
  338. {
  339. try (BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())))
  340. {
  341. String inputLine;
  342. while ((inputLine = in.readLine()) != null)
  343. {
  344. votes = Integer.valueOf(inputLine);
  345. break;
  346. }
  347. }
  348. }
  349. }
  350. catch (Exception e)
  351. {
  352. e.printStackTrace();
  353. System.out.println("TOPZONE is offline. We will check reward as it will be online again.");
  354. }
  355.  
  356. return votes;
  357. }
  358.  
  359. public static int getL2NetworkVotes()
  360. {
  361. int votes = -1;
  362. try
  363. {
  364. final URL obj = new URL(PowerPakConfig.VOTES_SITE_L2NETWORK_URL);
  365. final HttpURLConnection con = (HttpURLConnection) obj.openConnection();
  366.  
  367. con.addRequestProperty("User-Agent", "L2Network");
  368. con.setConnectTimeout(5000);
  369.  
  370. final int responseCode = con.getResponseCode();
  371. if (responseCode == 200)
  372. {
  373. try (BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())))
  374. {
  375. String inputLine;
  376. while ((inputLine = in.readLine()) != null)
  377. {
  378. if (inputLine.contains("color:#e7ebf2"))
  379. {
  380. votes = Integer.valueOf(inputLine.split(">")[2].replace("</b", ""));
  381. break;
  382. }
  383. }
  384. }
  385. }
  386. }
  387. catch (Exception e)
  388. {
  389. e.printStackTrace();
  390. System.out.println("NetWork is offline. We will check reward as it will be online again.");
  391. }
  392. return votes;
  393. }
  394.  
  395. protected void setHopZoneVoteCount(final int voteCount)
  396. {
  397. _hopzoneVotesCount = voteCount;
  398. }
  399.  
  400. protected int getHopZoneVoteCount()
  401. {
  402. return _hopzoneVotesCount;
  403. }
  404.  
  405. protected void setTopZoneVoteCount(final int voteCount)
  406. {
  407. _topzoneVotesCount = voteCount;
  408. }
  409.  
  410. protected int getTopZoneVoteCount()
  411. {
  412. return _topzoneVotesCount;
  413. }
  414.  
  415. protected void setL2NetworkVoteCount(final int voteCount)
  416. {
  417. _l2networkVotesCount = voteCount;
  418. }
  419.  
  420. protected int getL2NetworkVoteCount()
  421. {
  422. return _l2networkVotesCount;
  423. }
  424.  
  425. public static AutoVoteRewardHandler getInstance()
  426. {
  427. Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF);
  428.  
  429. if (PowerPakConfig.VOTES_SITE_HOPZONE_URL != null && !PowerPakConfig.VOTES_SITE_HOPZONE_URL.equals(""))
  430. _hopzone = true;
  431.  
  432. if (PowerPakConfig.VOTES_SITE_TOPZONE_URL != null && !PowerPakConfig.VOTES_SITE_TOPZONE_URL.equals(""))
  433. _topzone = true;
  434.  
  435. if (PowerPakConfig.VOTES_SITE_L2NETWORK_URL != null && !PowerPakConfig.VOTES_SITE_L2NETWORK_URL.equals(""))
  436. _l2network = true;
  437.  
  438. if (_topzone || _hopzone || _l2network)
  439. return SingletonHolder._instance;
  440.  
  441. return null;
  442. }
  443.  
  444. @SuppressWarnings("synthetic-access")
  445. private static class SingletonHolder
  446. {
  447. protected static final AutoVoteRewardHandler _instance = new AutoVoteRewardHandler();
  448. }
  449. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement