Advertisement
warc222

paprem

Oct 10th, 2015
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.02 KB | None | 0 0
  1. Index: /trunk/DataPack/sql/character_premium.sql
  2. ===================================================================
  3. --- /trunk/DataPack/sql/character_premium.sql (revision 258)
  4. +++ /trunk/DataPack/sql/character_premium.sql (revision 258)
  5. @@ -0,0 +1,18 @@
  6. +-- ----------------------------
  7. +-- Table structure for character_premium
  8. +-- ----------------------------
  9. +CREATE TABLE IF NOT EXISTS `character_premium` (
  10. + `account_name` varchar(45) NOT NULL DEFAULT '',
  11. + `premium_service` int(1) NOT NULL DEFAULT '0',
  12. + `enddate` decimal(20,0) NOT NULL DEFAULT '0',
  13. + PRIMARY KEY (`account_name`)
  14. +);
  15. +-- ----------------------------
  16. +-- Table structure for character_premium
  17. +-- ----------------------------
  18. +CREATE TABLE IF NOT EXISTS `character_premium` (
  19. + `account_name` varchar(45) NOT NULL DEFAULT '',
  20. + `premium_service` int(1) NOT NULL DEFAULT '0',
  21. + `enddate` decimal(20,0) NOT NULL DEFAULT '0',
  22. + PRIMARY KEY (`account_name`)
  23. +);
  24. Index: /trunk/DataPack/tools/database_installer.bat
  25. ===================================================================
  26. --- /trunk/DataPack/tools/database_installer.bat (revision 252)
  27. +++ /trunk/DataPack/tools/database_installer.bat (revision 258)
  28. @@ -542,4 +542,5 @@
  29. character_quest_global_data.sql
  30. character_quests.sql
  31. +character_premium.sql
  32. character_raid_points.sql
  33. character_recipebook.s ql
  34. Index: /trunk/DataPack/tools/full_install.sql
  35. ===================================================================
  36. --- /trunk/DataPack/tools/full_install.sql (revision 251)
  37. +++ /trunk/DataPack/tools/full_install.sql (revision 258)
  38. @@ -67,4 +67,5 @@
  39. DROP TABLE IF EXISTS character_quest_global_data;
  40. DROP TABLE IF EXISTS character_quests;
  41. +DROP TABLE IF EXISTS character_premium;
  42. DROP TABLE IF EXISTS character_raid_points;
  43. DROP TABLE IF EXISTS character_recipebook;
  44. Index: /trunk/DataPack/tools/database_installer.sh
  45. ===================================================================
  46. --- /trunk/DataPack/tools/database_installer.sh (revision 251)
  47. +++ /trunk/DataPack/tools/database_installer.sh (revision 258)
  48. @@ -287,4 +287,5 @@
  49. $MYG < ../sql/character_quest_global_data.sql &> /dev/null
  50. $MYG < ../sql/character_quests.sql &> /dev/null
  51. +$MYG < ../sql/character_premium.sql &> /dev/null
  52. $MYG < ../sql/character_raid_points.sql &> /dev/null
  53. $MYG < ../sql/character_recipebook.sql &> /dev/null
  54. Index: /trunk/DataPack/data/html/admin/premium_menu.htm
  55. ===================================================================
  56. --- /trunk/DataPack/data/html/admin/premium_menu.htm (revision 258)
  57. +++ /trunk/DataPack/data/html/admin/premium_menu.htm (revision 258)
  58. @@ -0,0 +1,29 @@
  59. +<html><title>Premium Service Menu</title><body>
  60. +<center>
  61. +<table width=270 border=0 bgcolor="666666">
  62. +<tr>
  63. +<td><button value="Main" action="bypass -h admin_admin" width=50 height=15 back="L2UI_ct1.button_df_down" fore="L2UI_ct1.button_df"></td>
  64. +<td><button value="Game" action="bypass -h admin_admin2" width=50 height=15 back="L2UI_ct1.button_df_down" fore="L2UI_ct1.button_df"></td>
  65. +<td><button value="Effects" action="bypass -h admin_admin3" width=50 height=15 back="L2UI_ct1.button_df_down" fore="L2UI_ct1.button_df"></td>
  66. +<td><button value="Server" action="bypass -h admin_admin4" width=50 height=15 back="L2UI_ct1.button_df_down" fore="L2UI_ct1.button_df"></td>
  67. +<td><button value="Mods" action="bypass -h admin_admin5" width=50 height=15 back="L2UI_ct1.button_df_down" fore="L2UI_ct1.button_df"></td>
  68. +</tr>
  69. +</table>
  70. +<br>
  71. +<font color="LEVEL">Premium Service Menu</font><br>
  72. +<table width=250>
  73. +<tr>
  74. +<td>Enter Account Name:</td>
  75. +<td><edit var="acc_name" width=200></td>
  76. +</tr>
  77. +</table>
  78. +<br>
  79. +<table width=260>
  80. +<tr>
  81. +<td><button value="Add 1 month Premium Services" action="bypass -h admin_premium_add1 $acc_name" width=200 height=25 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
  82. +<td><button value="Add 2 month Premium Services" action="bypass -h admin_premium_add2 $acc_name" width=200 height=25 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
  83. +<td><button value="Add 3 month Premium Services" action="bypass -h admin_premium_add3 $acc_name" width=200 height=25 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
  84. +</tr>
  85. +</table>
  86. +</center>
  87. +</body></html>
  88. Index: /trunk/DataPack/data/html/admin/main_menu.htm
  89. ===================================================================
  90. --- /trunk/DataPack/data/html/admin/main_menu.htm (revision 221)
  91. +++ /trunk/DataPack/data/html/admin/main_menu.htm (revision 258)
  92. @@ -54,4 +54,5 @@
  93. <td><button value="TradeOff" action="bypass -h admin_tradeoff" width=65 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
  94. <td><button value="Invul" action="bypass -h admin_invul" width=65 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
  95. +<td><button value="Pr.Service" action="bypass -h admin_premium_menu" width=65 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
  96. </tr><tr>
  97. <td><button value="Wyvern" action="bypass -h admin_ride_wyvern" width=65 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
  98. Index: /trunk/Game/config/main/rates.ini
  99. ===================================================================
  100. --- /trunk/Game/config/main/rates.ini (revision 221)
  101. +++ /trunk/Game/config/main/rates.ini (revision 258)
  102. @@ -49,4 +49,18 @@
  103. # Рейт на дроп квестовых предметов. Внимание: данная опция работает не во всех квестах. Многие квесты нужно редактировать в датапаке для работы этой опции.
  104. RateDropQuest = 1
  105. +
  106. +# ---------------------------------------------------------------------------
  107. +# Система Премиум-Аккаунт (ПА)
  108. +# ---------------------------------------------------------------------------
  109. +# Включить функцию Премиум-Аккаунт (ПА)?
  110. +# По умолчанию: False
  111. +UsePremiumServices = False
  112. +# Какие рейты будут приниматься для обладателей ПА?
  113. +PremiumRateXp = 2
  114. +PremiumRateSp = 2
  115. +PremiumRateDropAdena = 2
  116. +PremiumRateDropItems = 2
  117. +PremiumRateDropSpoil = 2
  118. +PremiumRateDropQuest = 2
  119.  
  120. # List of RaidBoss items affected by RateDropBossJewel (separated by ",")
  121. Index: /trunk/Game/src/main/java/com/l2open/gameserver/model/actor/instance/L2PcInstance.java
  122. ===================================================================
  123. --- /trunk/Game/src/main/java/com/l2open/gameserver/model/actor/instance/L2PcInstance.java (revision 221)
  124. +++ /trunk/Game/src/main/java/com/l2open/gameserver/model/actor/instance/L2PcInstance.java (revision 258)
  125. @@ -299,4 +299,7 @@
  126. // Character Transformation SQL String Definitions:
  127. private static final String UPDATE_CHAR_TRANSFORM = "UPDATE characters SET transform_id=? WHERE charId=?";
  128. + // Character PremiumService String Definitions:
  129. + private static final String RESTORE_PREMIUMSERVICE = "SELECT premium_service,enddate FROM character_premium WHERE account_name=?";
  130. + private static final String UPDATE_PREMIUMSERVICE = "UPDATE character_premium SET premium_service=?,enddate=? WHERE account_name=?";
  131. public static final int REQUEST_TIMEOUT = 15;
  132. public static final int STORE_PRIVATE_NONE = 0;
  133. @@ -13752,3 +13755,119 @@
  134. return new PcKnownList(this);
  135. }
  136. +
  137. + private void createPSdb()
  138. + {
  139. + Connection con = null;
  140. + try
  141. + {
  142. + con = L2DatabaseFactory.getInstance().getConnection();
  143. + PreparedStatement statement = con.prepareStatement("INSERT INTO character_premium (account_name,premium_service,enddate) values(?,?,?)");
  144. + statement.setString(1, _accountName);
  145. + statement.setInt(2, 0);
  146. + statement.setLong(3, 0);
  147. + statement.executeUpdate();
  148. + statement.close();
  149. + }
  150. + catch (Exception e)
  151. + {
  152. + _log.warn("Could not insert char data: "+e);
  153. + e.printStackTrace();
  154. + return;
  155. + }
  156. + finally
  157. + {
  158. + try
  159. + {
  160. + if (con != null)
  161. + con.close();
  162. + }
  163. + catch (SQLException e)
  164. + {
  165. + e.printStackTrace();
  166. + }
  167. + }
  168. + }
  169. +
  170. + private static void PStimeOver(String account)
  171. + {
  172. + Connection con = null;
  173. + try
  174. + {
  175. + con = L2DatabaseFactory.getInstance().getConnection();
  176. + PreparedStatement statement = con.prepareStatement(UPDATE_PREMIUMSERVICE);
  177. + statement.setInt(1, 0);
  178. + statement.setLong(2, 0);
  179. + statement.setString(3, account);
  180. + statement.execute();
  181. + statement.close();
  182. + }
  183. + catch (SQLException e)
  184. + {
  185. + _log.warn("PremiumService: Could not increase data");
  186. + }
  187. + finally
  188. + {
  189. + try
  190. + {
  191. + if (con != null)
  192. + con.close();
  193. + }
  194. + catch (SQLException e)
  195. + {
  196. + e.printStackTrace();
  197. + }
  198. + }
  199. + }
  200. +
  201. + private static void restorePremServiceData(L2PcInstance player, String account)
  202. + {
  203. + boolean sucess=false;
  204. + Connection con = null;
  205. + try
  206. + {
  207. + con = L2DatabaseFactory.getInstance().getConnection();
  208. + PreparedStatement statement = con.prepareStatement(RESTORE_PREMIUMSERVICE);
  209. + statement.setString(1, account);
  210. + ResultSet rset = statement.executeQuery();
  211. + while (rset.next())
  212. + {
  213. + sucess=true;
  214. + if (Config.USE_PREMIUMSERVICE){
  215. + if (rset.getLong("enddate") <= System.currentTimeMillis()){
  216. + PStimeOver(account);
  217. + player.setPremiumService(0);
  218. + }
  219. + else
  220. + player.setPremiumService(rset.getInt("premium_service"));
  221. + }
  222. + else
  223. + player.setPremiumService(0);
  224. + }
  225. +
  226. + statement.close();
  227. +
  228. + }
  229. + catch (Exception e)
  230. + {
  231. + _log.warn("PremiumService: Could not restore PremiumService data for:" + account + "."+e);
  232. + e.printStackTrace();
  233. + }
  234. + finally
  235. + {
  236. + try
  237. + {
  238. + if (con != null)
  239. + con.close();
  240. + }
  241. + catch (SQLException e)
  242. + {
  243. + e.printStackTrace();
  244. + }
  245. + }
  246. + if (sucess==false)
  247. + {
  248. + player.createPSdb();
  249. + player.setPremiumService(0);
  250. + }
  251. + }
  252. }
  253. Index: /trunk/Game/src/main/java/com/l2open/gameserver/model/actor/L2Character.java
  254. ===================================================================
  255. --- /trunk/Game/src/main/java/com/l2open/gameserver/model/actor/L2Character.java (revision 249)
  256. +++ /trunk/Game/src/main/java/com/l2open/gameserver/model/actor/L2Character.java (revision 258)
  257. @@ -6886,3 +6886,15 @@
  258. }
  259.  
  260. + private int _PremiumService;
  261. +
  262. + public void setPremiumService(int PS)
  263. + {
  264. + _PremiumService=PS;
  265. + }
  266. +
  267. + public int getPremiumService()
  268. + {
  269. + return _PremiumService;
  270. +
  271. + }
  272. }
  273. Index: /trunk/Game/src/main/java/com/l2open/gameserver/handler/AdminCommandHandler.java
  274. ===================================================================
  275. --- /trunk/Game/src/main/java/com/l2open/gameserver/handler/AdminCommandHandler.java (revision 221)
  276. +++ /trunk/Game/src/main/java/com/l2open/gameserver/handler/AdminCommandHandler.java (revision 258)
  277. @@ -67,4 +67,5 @@
  278. import com.l2open.gameserver.handler.admincommandhandlers.AdminPledge;
  279. import com.l2open.gameserver.handler.admincommandhandlers.AdminPolymorph;
  280. +import com.l2open.gameserver.handler.admincommandhandlers.AdminPremium;
  281. import com.l2open.gameserver.handler.admincommandhandlers.AdminQuest;
  282. import com.l2open.gameserver.handler.admincommandhandlers.AdminReload;
  283. Index: /trunk/Game/src/main/java/com/l2open/gameserver/handler/admincommandhandlers/AdminPremium.java
  284. ===================================================================
  285. --- /trunk/Game/src/main/java/com/l2open/gameserver/handler/admincommandhandlers/AdminPremium.java (revision 258)
  286. +++ /trunk/Game/src/main/java/com/l2open/gameserver/handler/admincommandhandlers/AdminPremium.java (revision 258)
  287. @@ -0,0 +1,108 @@
  288. +package com.l2open.gameserver.handler.admincommandhandlers;
  289. +
  290. +import java.sql.Connection;
  291. +import java.sql.SQLException;
  292. +import java.sql.PreparedStatement;
  293. +
  294. +import java.util.Calendar;
  295. +import java.util.logging.Level;
  296. +import java.util.logging.Logger;
  297. +
  298. +import com.l2open.L2DatabaseFactory;
  299. +import com.l2open.gameserver.handler.IAdminCommandHandler;
  300. +import com.l2open.gameserver.model.actor.instance.L2PcInstance;
  301. +
  302. +public class AdminPremium implements IAdminCommandHandler
  303. +{
  304. + private static final String[] ADMIN_COMMANDS = { "admin_premium_menu", "admin_premium_add1", "admin_premium_add2", "admin_premium_add3" };
  305. +
  306. +private static final String UPDATE_PREMIUMSERVICE = "UPDATE character_premium SET premium_service=?,enddate=? WHERE account_name=?";
  307. +private static final Logger _log = Logger.getLogger(AdminPremium.class.getName());
  308. +
  309. + public boolean useAdminCommand(String command, L2PcInstance activeChar)
  310. + {
  311. + if (command.equals("admin_premium_menu"))
  312. + {
  313. + AdminHelpPage.showHelpPage(activeChar, "premium_menu.htm");
  314. + }
  315. + else if (command.startsWith("admin_premium_add1"))
  316. + {
  317. + try
  318. + {
  319. + String val = command.substring(19);
  320. + addPremiumServices(1, val);
  321. + }
  322. + catch(StringIndexOutOfBoundsException e)
  323. + {
  324. + activeChar.sendMessage("Err");
  325. + }
  326. + }
  327. + else if(command.startsWith("admin_premium_add2"))
  328. + {
  329. + try
  330. + {
  331. + String val = command.substring(19);
  332. + addPremiumServices(2, val);
  333. + }
  334. + catch(StringIndexOutOfBoundsException e)
  335. + {
  336. + activeChar.sendMessage("Err");
  337. + }
  338. + }
  339. + else if(command.startsWith("admin_premium_add3"))
  340. + {
  341. + try
  342. + {
  343. + String val = command.substring(19);
  344. + addPremiumServices(3, val);
  345. + }
  346. + catch(StringIndexOutOfBoundsException e)
  347. + {
  348. + activeChar.sendMessage("Err");
  349. + }
  350. + }
  351. + return true;
  352. + }
  353. +
  354. + public String[] getAdminCommandList()
  355. + {
  356. + return ADMIN_COMMANDS;
  357. + }
  358. +
  359. + private void addPremiumServices(int Months,String AccName)
  360. + {
  361. + Connection con = null;
  362. + try
  363. + {
  364. + Calendar finishtime = Calendar.getInstance();
  365. + finishtime.setTimeInMillis(System.currentTimeMillis());
  366. + finishtime.set(Calendar.SECOND, 0);
  367. + finishtime.add(Calendar.MONTH, Months);
  368. +
  369. + con = L2DatabaseFactory.getInstance().getConnection();
  370. + PreparedStatement statement = con.prepareStatement(UPDATE_PREMIUMSERVICE);
  371. + statement.setInt(1, 1);
  372. + statement.setLong(2, finishtime.getTimeInMillis());
  373. + statement.setString(3, AccName);
  374. + statement.execute();
  375. + statement.close();
  376. + }
  377. + catch (SQLException e)
  378. + {
  379. + _log.info("PremiumService: Could not increase data");
  380. + }
  381. + finally
  382. + {
  383. + try
  384. + {
  385. + if (con != null)
  386. + con.close();
  387. + }
  388. + catch (SQLException e)
  389. + {
  390. + e.printStackTrace();
  391. + }
  392. + }
  393. +
  394. + }
  395. +}
  396. Index: /trunk/Game/src/main/java/com/l2open/Config.java
  397. ===================================================================
  398. --- /trunk/Game/src/main/java/com/l2open/Config.java (revision 233)
  399. +++ /trunk/Game/src/main/java/com/l2open/Config.java (revision 258)
  400. @@ -298,4 +298,11 @@
  401. public static int RATE_DROP_MANOR;
  402. public static float RATE_DROP_QUEST;
  403. + public static boolean USE_PREMIUMSERVICE;
  404. + public static float PREMIUM_RATE_XP;
  405. + public static float PREMIUM_RATE_SP;
  406. + public static float PREMIUM_RATE_DROP_ADENA;
  407. + public static float PREMIUM_RATE_DROP_SPOIL;
  408. + public static float PREMIUM_RATE_DROP_ITEMS;
  409. + public static float PREMIUM_RATE_DROP_QUEST;
  410. public static float RATE_KARMA_EXP_LOST;
  411. public static float RATE_SIEGE_GUARDS_PRICE;
  412. @@ -350,4 +357,11 @@
  413. RATE_DROP_MANOR = Integer.parseInt(ratesSettings.getProperty("RateDropManor", "1"));
  414. RATE_DROP_QUEST = Float.parseFloat(ratesSettings.getProperty("RateDropQuest", "1."));
  415. + USE_PREMIUMSERVICE = Boolean.parseBoolean(ratesSettings.getProperty("UsePremiumServices", "False"));
  416. + PREMIUM_RATE_XP = Float.parseFloat(ratesSettings.getProperty("PremiumRateXp", "2"));
  417. + PREMIUM_RATE_SP = Float.parseFloat(ratesSettings.getProperty("PremiumRateSp", "2"));
  418. + PREMIUM_RATE_DROP_ADENA = Float.parseFloat(ratesSettings.getProperty("PremiumRateDropAdena", "2"));
  419. + PREMIUM_RATE_DROP_SPOIL = Float.parseFloat(ratesSettings.getProperty("PremiumRateDropSpoil", "2"));
  420. + PREMIUM_RATE_DROP_ITEMS = Float.parseFloat(ratesSettings.getProperty("PremiumRateDropItems", "2"));
  421. + PREMIUM_RATE_DROP_QUEST = Float.parseFloat(ratesSettings.getProperty("PremiumRateDropQuest", "2"));
  422. RATE_KARMA_EXP_LOST = Float.parseFloat(ratesSettings.getProperty("RateKarmaExpLost", "1."));
  423. RATE_SIEGE_GUARDS_PRICE = Float.parseFloat(ratesSettings.getProperty("RateSiegeGuardsPrice", "1."));
  424. @@ -2931,4 +2945,16 @@
  425. else if (pName.equalsIgnoreCase("RateDropQuest"))
  426. RATE_DROP_QUEST = Float.parseFloat(pValue);
  427. + else if (pName.equalsIgnoreCase("PremiumRateXp"))
  428. + PREMIUM_RATE_XP = Float.parseFloat(pValue);
  429. + else if (pName.equalsIgnoreCase("PremiumRateSp"))
  430. + PREMIUM_RATE_SP = Float.parseFloat(pValue);
  431. + else if (pName.equalsIgnoreCase("PremiumRateDropAdena"))
  432. + PREMIUM_RATE_DROP_ADENA = Float.parseFloat(pValue);
  433. + else if (pName.equalsIgnoreCase("PremiumRateDropSpoil"))
  434. + PREMIUM_RATE_DROP_SPOIL = Float.parseFloat(pValue);
  435. + else if (pName.equalsIgnoreCase("PremiumRateDropItems"))
  436. + PREMIUM_RATE_DROP_ITEMS = Float.parseFloat(pValue);
  437. + else if (pName.equalsIgnoreCase("PremiumRateDropQuest"))
  438. + PREMIUM_RATE_DROP_QUEST = Float.parseFloat(pValue);
  439. else if (pName.equalsIgnoreCase("RateKarmaExpLost"))
  440. RATE_KARMA_EXP_LOST = Float.parseFloat(pValue);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement