Advertisement
VANPER

Renewal Day 24Horas

Feb 16th, 2020
1,311
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 14.82 KB | None | 0 0
  1. Index: net.sf.l2j;Config.java
  2. ===================================================================
  3. --- net.sf.l2j;Config.java (revision 84)
  4. +++ net.sf.l2j;Config.java (working copy)
  5.  
  6. +   public static final int REWARD_PER_TIME_MODE_RESTRICTION = 2;
  7.        
  8.  
  9. Index: l2jban.renwalday;;DailyRewardManager.java
  10. ===================================================================
  11. --- l2jban.renwalday;;DailyRewardManager.java (revision 84)
  12. +++ l2jban.renwalday;;DailyRewardManager.java (working copy)
  13.  
  14.  
  15. +   package l2jban.renwalday;
  16. +  
  17. +   import java.sql.Connection;
  18. +   import java.sql.Date;
  19. +   import java.sql.PreparedStatement;
  20. +   import java.sql.ResultSet;
  21. +   import java.sql.SQLException;
  22. +   import java.text.SimpleDateFormat;
  23. +   import java.util.Calendar;
  24. +  
  25. +   import net.sf.l2j.commons.concurrent.ThreadPool;
  26. +  
  27. +   import net.sf.l2j.Config;
  28. +   import net.sf.l2j.L2DatabaseFactory;
  29. +  
  30. +   import net.sf.l2j.gameserver.model.actor.Player;
  31. +   import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
  32. +  
  33. +   /**
  34. +    * @author Gabia
  35. +    *
  36. +    */
  37. +   public class DailyRewardManager
  38. +   {
  39. +       private static int rewardId = 3470;
  40. +      
  41. +       protected DailyRewardManager()
  42. +       {
  43. +           loadSystemThread();
  44. +  
  45. +           System.out.println("Daily Reward Manager: Loaded");
  46. +       }
  47. +      
  48. +       protected static void loadSystemThread()
  49. +       {
  50. +           long spawnMillis = 0;
  51. +          
  52. +           Calendar c = Calendar.getInstance();
  53. +          
  54. +           String[] time =  "24:00".split(":");
  55. +           c.set(Calendar.DAY_OF_MONTH, c.get(Calendar.DAY_OF_MONTH)+1);
  56. +           c.set(Calendar.HOUR_OF_DAY, Integer.parseInt(time[0]));
  57. +           c.set(Calendar.MINUTE, Integer.parseInt(time[1]));
  58. +           c.set(Calendar.SECOND, 0);
  59. +           spawnMillis = c.getTimeInMillis() - System.currentTimeMillis();
  60. +          
  61. +           ThreadPool.schedule(new Runnable()
  62. +           {
  63. +               @Override
  64. +               public void run()
  65. +               {
  66. +                   clearDBTable();
  67. +                  
  68. +                   // Reload the system
  69. +                   loadSystemThread();
  70. +                  
  71. +                   System.out.println("[Daily Reward] Table cleaned and restart the thread.");
  72. +               }
  73. +           }, spawnMillis);
  74. +       }
  75. +      
  76. +       @SuppressWarnings("resource")
  77. +       protected static void clearDBTable()
  78. +       {
  79. +           try (Connection con = L2DatabaseFactory.getInstance().getConnection())
  80. +           {
  81. +               PreparedStatement statement = con.prepareStatement("DELETE FROM reward_manager");
  82. +               statement.execute();
  83. +               statement.close();
  84. +           }
  85. +           catch (Exception e)
  86. +           {
  87. +               e.printStackTrace();
  88. +           }
  89. +       }
  90. +      
  91. +       public static void initialAllEngines(Player activeChar)
  92. +       {
  93. +           if(checkIfIPorHWIDExistInDB(activeChar, "ip") || checkIfIPorHWIDExistInDB(activeChar, "hwid"))
  94. +           {
  95. +               if(DailyRewardManager.checkForLatestHWIDReward(activeChar, "ip") || DailyRewardManager.checkForLatestHWIDReward(activeChar, "hwid")) // Rewarded
  96. +               {
  97. +                   if(DailyRewardManager.checkForLatestHWIDReward(activeChar, "ip"))
  98. +                       activeChar.sendMessage("Join again in "+Cd(activeChar, "ip", false)+" to get your daily reward.");
  99. +                   else if(DailyRewardManager.checkForLatestHWIDReward(activeChar, "hwid"))
  100. +                       activeChar.sendMessage("Join again in "+Cd(activeChar, "hwid", false)+" to get your daily reward.");
  101. +               }
  102. +               else { // Not rewarded
  103. +                  
  104. +                   openDailyRewardHtml(activeChar);
  105. +               }
  106. +           }
  107. +           else // If not exist in Database
  108. +           {
  109. +               openDailyRewardHtml(activeChar);
  110. +           }
  111. +       }
  112. +      
  113. +       public void claimDailyReward(Player player)
  114. +       {
  115. +           if(checkIfIPorHWIDExistInDB(player, "ip") || checkIfIPorHWIDExistInDB(player, "hwid"))
  116. +           {
  117. +               if(DailyRewardManager.checkForLatestHWIDReward(player, "ip") || DailyRewardManager.checkForLatestHWIDReward(player, "hwid")) // Rewarded
  118. +               {
  119. +                   if(DailyRewardManager.checkForLatestHWIDReward(player, "ip"))
  120. +                       player.sendMessage("Join in "+Cd(player, "ip", false)+" to get your reward.");
  121. +                   else if(DailyRewardManager.checkForLatestHWIDReward(player, "hwid"))
  122. +                       player.sendMessage("Join in "+Cd(player, "hwid", false)+" to get your reward.");
  123. +               }
  124. +               else { // Not rewarded
  125. +                   //System.out.println("Not rewarded");
  126. +                   if(checkIfIPorHWIDExistInDB(player, "ip"))
  127. +                       updateLastReward(player, "ip");
  128. +                  
  129. +                   if(checkIfIPorHWIDExistInDB(player, "hwid"))
  130. +                       updateLastReward(player, "hwid");
  131. +                  
  132. +                   giveReward(player);
  133. +               }
  134. +           }
  135. +           else // Insert new Parent and reward
  136. +           {
  137. +               insertNewParentOfPlayerIPHWID(player);
  138. +               giveReward(player);
  139. +           }
  140. +          
  141. +          
  142. +       }
  143. +      
  144. +       private static void openDailyRewardHtml(Player player)
  145. +       {
  146. +           NpcHtmlMessage htm = new NpcHtmlMessage(0);
  147. +           htm.setFile("data/html/dailyrewards/index.htm");
  148. +           htm.replace("", "");
  149. +           player.sendPacket(htm);
  150. +       }
  151. +      
  152. +       /**
  153. +        * @param player
  154. +        *
  155. +        */
  156. +       private static void giveReward(Player player)
  157. +       {
  158. +           player.addItem("HWIDRewardManager", rewardId, 1, null, true);
  159. +          
  160. +           /*player.sendMessage("You are rewarded from daily reward.");
  161. +           for(double infos[] : Config.REWARD_PER_TIME_ITEMLIST)
  162. +           {
  163. +               int chanceIndex = (int) (infos[2] * 1000);
  164. +              
  165. +               if (Rnd.get(100000) <= chanceIndex)
  166. +               {
  167. +                   int itemId = (int) infos[0];
  168. +                   int itemCount = (int) infos[1];
  169. +  
  170. +                   player.addItem("HWIDRewardManager", itemId, itemCount, null, true);
  171. +               }
  172. +           }*/
  173. +       }
  174. +  
  175. +       @SuppressWarnings("unused")
  176. +       private static boolean checkForLatestHWIDReward(Player activeChar, String mode)
  177. +       {
  178. +           if(Config.REWARD_PER_TIME_MODE_RESTRICTION == 0 && mode.equals("hwid"))
  179. +               return false;
  180. +          
  181. +           if(Config.REWARD_PER_TIME_MODE_RESTRICTION == 1 && mode.equals("ip"))
  182. +               return false;
  183. +          
  184. +           //System.out.println("Config: "+Config.REWARD_PER_TIME_MODE_RESTRICTION+" Mode Check: "+mode);
  185. +           return Long.parseLong(Cd(activeChar, mode, true)) > System.currentTimeMillis();
  186. +       }
  187. +  
  188. +       @SuppressWarnings("resource")
  189. +       private static void updateLastReward(Player player, String mode)
  190. +       {
  191. +           try (Connection con = L2DatabaseFactory.getInstance().getConnection())
  192. +           {
  193. +               PreparedStatement statement = con.prepareStatement("UPDATE reward_manager SET expire_time=? WHERE "+mode+"=?");
  194. +               statement.setLong(1, System.currentTimeMillis());
  195. +               statement.setString(2, (mode.equals("ip") ? player.getIP() : player.getHWID()));
  196. +               statement.execute();
  197. +               statement.close();
  198. +           }
  199. +           catch (Exception e)
  200. +           {
  201. +               e.printStackTrace();
  202. +           }
  203. +       }
  204. +      
  205. +       @SuppressWarnings("resource")
  206. +       private static String Cd(Player player, String mode, boolean returnInTimestamp)
  207. +       {
  208. +           long CdMs = 0;
  209. +           long voteDelay = 1440 * 60000L;
  210. +          
  211. +           PreparedStatement statement = null;
  212. +           try (Connection con = L2DatabaseFactory.getInstance().getConnection())
  213. +           {
  214. +               statement = con.prepareStatement("SELECT expire_time FROM reward_manager WHERE "+mode+"=?");
  215. +               statement.setString(1,  (mode.equals("ip") ? player.getIP() : player.getHWID()));
  216. +              
  217. +               ResultSet rset = statement.executeQuery();
  218. +              
  219. +               while (rset.next())
  220. +               {
  221. +                   CdMs = rset.getLong("expire_time");
  222. +               }
  223. +              
  224. +               if((CdMs + voteDelay) < System.currentTimeMillis())
  225. +                   CdMs = System.currentTimeMillis() - voteDelay;
  226. +              
  227. +               rset.close();
  228. +           }
  229. +           catch (Exception e)
  230. +           {
  231. +               e.printStackTrace();
  232. +           }
  233. +           finally
  234. +           {
  235. +               try
  236. +               {
  237. +                   if(statement != null)
  238. +                       statement.close();
  239. +               }
  240. +               catch (SQLException e)
  241. +               {
  242. +                   // TODO Auto-generated catch block
  243. +                   e.printStackTrace();
  244. +               }
  245. +           }
  246. +  
  247. +           SimpleDateFormat sdf = new SimpleDateFormat("MMM dd,yyyy HH:mm");
  248. +          
  249. +           if(returnInTimestamp)
  250. +               return String.valueOf(CdMs+voteDelay);
  251. +          
  252. +           Date resultdate = new Date(CdMs + voteDelay);
  253. +           return sdf.format(resultdate);
  254. +       }
  255. +      
  256. +       @SuppressWarnings("resource")
  257. +       private static boolean checkIfIPorHWIDExistInDB(Player player, String mode)
  258. +       {
  259. +           boolean flag = false;
  260. +           PreparedStatement statement = null;
  261. +           try (Connection con = L2DatabaseFactory.getInstance().getConnection())
  262. +           {
  263. +               statement = con.prepareStatement("SELECT * FROM reward_manager WHERE "+mode+"=?");
  264. +               statement.setString(1, (mode.equals("ip") ? player.getIP() : player.getHWID()));
  265. +              
  266. +               ResultSet rset = statement.executeQuery();
  267. +              
  268. +               if (rset.next())
  269. +                   flag = true;
  270. +  
  271. +               rset.close();
  272. +           }
  273. +           catch (Exception e)
  274. +           {
  275. +               e.printStackTrace();
  276. +           }
  277. +           finally
  278. +           {
  279. +               try
  280. +               {
  281. +                   if(statement != null)
  282. +                       statement.close();
  283. +               }
  284. +               catch (SQLException e)
  285. +               {
  286. +                   // TODO Auto-generated catch block
  287. +                   e.printStackTrace();
  288. +               }
  289. +           }
  290. +          
  291. +           return flag;
  292. +       }
  293. +      
  294. +       @SuppressWarnings("resource")
  295. +       private static void insertNewParentOfPlayerIPHWID(Player player)
  296. +       {
  297. +           PreparedStatement statement = null;
  298. +           try (Connection con = L2DatabaseFactory.getInstance().getConnection())
  299. +           {
  300. +               statement = con.prepareStatement("INSERT INTO reward_manager (ip,hwid,expire_time) VALUES (?,?,?)");
  301. +               statement.setString(1, player.getIP());
  302. +               statement.setString(2, player.getHWID());
  303. +               statement.setLong(3, System.currentTimeMillis());
  304. +               statement.execute();
  305. +               statement.close();
  306. +           }
  307. +           catch (Exception e)
  308. +           {
  309. +               e.printStackTrace();
  310. +           }
  311. +           finally
  312. +           {
  313. +               try
  314. +               {
  315. +                   if(statement != null)
  316. +                       statement.close();
  317. +               }
  318. +               catch (SQLException e)
  319. +               {
  320. +                   // TODO Auto-generated catch block
  321. +                   e.printStackTrace();
  322. +               }
  323. +           }
  324. +       }
  325. +      
  326. +       public static DailyRewardManager getInstance()
  327. +       {
  328. +           return SingletonHolder._instance;
  329. +       }
  330. +      
  331. +       private static class SingletonHolder
  332. +       {
  333. +           protected static final DailyRewardManager _instance = new DailyRewardManager();
  334. +       }
  335. +      
  336. +   }
  337. +  
  338. +  
  339. Index: net.sf.l2j.gameserver.model.actor;Player.java
  340. ===================================================================
  341. --- net.sf.l2j.gameserver.model.actor;Player.java (revision 84)
  342. +++ net.sf.l2j.gameserver.model.actor;Player.java (working copy)
  343.  
  344.  
  345.     private static final String UPDATE_CHARACTER
  346. +lasthwid=? WHERE obj_id=?";
  347.  
  348.  
  349.     public static Player restore(int objectId)
  350.     {
  351.     Player player = null;
  352.  
  353.     try (Connection con = L2DatabaseFactory.getInstance().getConnection();
  354.     PreparedStatement ps = con.prepareStatement(RESTORE_CHARACTER))
  355.            
  356.            
  357. -   player.setPledgeType(rs.getInt("subpledge"));
  358. +   player.setPledgeType(rs.getInt("subpledge"));
  359. +   player.setLastHWID(rs.getString("lasthwid"));
  360.                    
  361.                    
  362.  
  363. +   private String lasthwid = ""; // Empty String
  364. +  
  365. +   public void setLastHWID(String val)
  366. +   {
  367. +       lasthwid = val;
  368. +   }
  369. +  
  370. +   public String getLastHWID()
  371. +   {
  372. +       return lasthwid;
  373. +   }
  374.    
  375.  
  376. +   public String getHWID()
  377. +   {
  378. +       return getClient().getHWID() != null ? getClient().getHWID() : this.getName();
  379. +   }
  380. +  
  381. +   public String getIP()
  382. +   {
  383. +       if(getClient().getConnection() == null)
  384. +           return "N/A IP";
  385. +      
  386. +       return getClient().getConnection().getInetAddress().getHostAddress();
  387. +   }
  388.  
  389. Index: net.sf.l2j.gameserver.network;GameClient.java
  390. ===================================================================
  391. --- net.sf.l2j.gameserver.network;GameClient.java (revision 84)
  392. +++ net.sf.l2j.gameserver.network;GameClient.java (working copy)
  393.  
  394. +   private String _hwid;
  395. +   public void setHWID(String value)
  396. +   {
  397. +       _hwid = value;
  398. +   }
  399. +  
  400. +   public String getHWID()
  401. +   {
  402. +       return _hwid;
  403. +   }
  404.  
  405. Index: net.sf.l2j.gameserver;GameServer.java
  406. ===================================================================
  407. --- net.sf.l2j.gameserver;GameServer.java (revision 84)
  408. +++ net.sf.l2j.gameserver;GameServer.java (working copy)
  409.  
  410.  
  411. +   import l2jban.renwalday.DailyRewardManager;
  412. +  
  413. +  
  414. +   DailyRewardManager.getInstance();
  415.  
  416.  
  417. Index: net.sf.l2j.gameserver.network.clientpackets;EnterWorld.java
  418. ===================================================================
  419. --- net.sf.l2j.gameserver.network.clientpackets;EnterWorld.java (revision 84)
  420. +++ net.sf.l2j.gameserver.network.clientpackets;EnterWorld.java (working copy)
  421.  
  422. + import l2jban.renwalday.DailyRewardManager.java
  423.  
  424.  
  425. +   // Daily Reward System
  426. +   DailyRewardManager.initialAllEngines(activeChar);
  427.  
  428. Index: net.sf.l2j.gameserver.network.clientpackets;;RequestBypassToServer.java
  429. ===================================================================
  430. --- net.sf.l2j.gameserver.network.clientpackets;;RequestBypassToServer.java (revision 84)
  431. +++ net.sf.l2j.gameserver.network.clientpackets;;RequestBypassToServer.java (working copy)
  432.  
  433. + import l2jban.renwalday.DailyRewardManager.java
  434.  
  435.  
  436. -   else if (_command.startsWith("arenachange")) // change
  437. -   {
  438. -       final boolean isManager = activeChar.getCurrentFolkNPC() instanceof OlympiadManagerNpc;
  439. -       if (!isManager)
  440. -       {
  441. -           // Without npc, command can be used only in observer mode on arena
  442. -           if (!activeChar.isInObserverMode() || activeChar.isInOlympiadMode() || activeChar.getOlympiadGameId() < 0)
  443. -               return;
  444. -       }
  445. -      
  446. -       if (OlympiadManager.getInstance().isRegisteredInComp(activeChar))
  447. -       {
  448. -           activeChar.sendPacket(SystemMessageId.WHILE_YOU_ARE_ON_THE_WAITING_LIST_YOU_ARE_NOT_ALLOWED_TO_WATCH_THE_GAME);
  449. -           return;
  450. -       }
  451. -      
  452. -       final int arenaId = Integer.parseInt(_command.substring(12).trim());
  453. -       activeChar.enterOlympiadObserverMode(arenaId);
  454. -   }
  455.  
  456. +   else if (_command.startsWith("arenachange")) // change
  457. +   {
  458. +       final boolean isManager = activeChar.getCurrentFolkNPC() instanceof OlympiadManagerNpc;
  459. +       if (!isManager)
  460. +       {
  461. +           // Without npc, command can be used only in observer mode on arena
  462. +           if (!activeChar.isInObserverMode() || activeChar.isInOlympiadMode() || activeChar.getOlympiadGameId() < 0)
  463. +               return;
  464. +       }
  465. +      
  466. +       if (OlympiadManager.getInstance().isRegisteredInComp(activeChar))
  467. +       {
  468. +           activeChar.sendPacket(SystemMessageId.WHILE_YOU_ARE_ON_THE_WAITING_LIST_YOU_ARE_NOT_ALLOWED_TO_WATCH_THE_GAME);
  469. +           return;
  470. +       }
  471. +      
  472. +       final int arenaId = Integer.parseInt(_command.substring(12).trim());
  473. +       activeChar.enterOlympiadObserverMode(arenaId);
  474. +   }
  475.  
  476. +   else if (_command.startsWith("claimDailyReward"))
  477. +   {
  478. +       DailyRewardManager.getInstance().claimDailyReward(activeChar);
  479. +   }
  480.  
  481. Index: data/html/dailyrewards/index.htm
  482. ===================================================================
  483. --- data/html/dailyrewards/index.htm (revision 84)
  484. +++ data/html/dailyrewards/index.htm (working copy)
  485.  
  486.  
  487. +   <html>
  488. +   <title>
  489. +   Daily Reward
  490. +   </title>
  491. +   <body>
  492. +   <center>
  493. +   <br>
  494. +   <img src="l2ui.squaregray" width="295" height="1">
  495. +  
  496. +   <font color=LEVEL>Claim your daily chest reward</font>
  497. +   <br>
  498. +   <font color="ff6600">Reset Every 24:00 AM</font>
  499. +   <br>
  500. +  
  501. +   <img src="icon.etc_treasure_box_i02" width=32 height=32>
  502. +   <br><br>
  503. +  
  504. +   <button value="Claim Daily Reward" action="bypass -h claimDailyReward" width=204 height=19 back="ban.btn_over" fore="ban.btn">
  505. +  
  506. +  
  507. +   <img src="l2ui.squaregray" width="295" height="1">
  508. +   <br>
  509. +   <br>
  510. +   <img src="l2ui.squaregray" width="295" height="1">
  511. +   <table width=295 bgcolor="000000">
  512. +   <tr>
  513. +   <td align=center><img src=FondosDevs.domain width=300 height=20></td>
  514. +   </tr>
  515. +   </table>
  516. +   </center>
  517. +   </body>
  518. +   </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement