Как сделать премиум аккаунт в lineage 2

Как сделать премиум аккаунт в lineage 2
Как сделать премиум аккаунт в lineage 2
Как сделать премиум аккаунт в lineage 2
Как сделать премиум аккаунт в lineage 2

Таких уже довольн омного, одна из них - L2Open.

Code

Index: /trunk/DataPack/sql/character_premium.sql
===================================================================
--- /trunk/DataPack/sql/character_premium.sql (revision 258)
+++ /trunk/DataPack/sql/character_premium.sql (revision 258)
@@ -0,0 +1,18 @@
+-- ----------------------------
+-- Table structure for character_premium
+-- ----------------------------
+CREATE TABLE IF NOT EXISTS `character_premium` (
+  `account_name` varchar(45) NOT NULL DEFAULT '',
+  `premium_service` int(1) NOT NULL DEFAULT '0',
+  `enddate` decimal(20,0) NOT NULL DEFAULT '0',
+  PRIMARY KEY (`account_name`)
+);
+-- ----------------------------
+-- Table structure for character_premium
+-- ----------------------------
+CREATE TABLE IF NOT EXISTS `character_premium` (
+  `account_name` varchar(45) NOT NULL DEFAULT '',
+  `premium_service` int(1) NOT NULL DEFAULT '0',
+  `enddate` decimal(20,0) NOT NULL DEFAULT '0',
+  PRIMARY KEY (`account_name`)
+);
Index: /trunk/DataPack/tools/database_installer.bat
===================================================================
--- /trunk/DataPack/tools/database_installer.bat (revision 252)
+++ /trunk/DataPack/tools/database_installer.bat (revision 258)
@@ -542,4 +542,5 @@
   character_quest_global_data.sql
   character_quests.sql
+character_premium.sql
   character_raid_points.sql
   character_recipebook.s ql
Index: /trunk/DataPack/tools/full_install.sql
===================================================================
--- /trunk/DataPack/tools/full_install.sql (revision 251)
+++ /trunk/DataPack/tools/full_install.sql (revision 258)
@@ -67,4 +67,5 @@
   DROP TABLE IF EXISTS character_quest_global_data;
   DROP TABLE IF EXISTS character_quests;
+DROP TABLE IF EXISTS character_premium;
   DROP TABLE IF EXISTS character_raid_points;
   DROP TABLE IF EXISTS character_recipebook;
Index: /trunk/DataPack/tools/database_installer.sh
===================================================================
--- /trunk/DataPack/tools/database_installer.sh (revision 251)
+++ /trunk/DataPack/tools/database_installer.sh (revision 258)
@@ -287,4 +287,5 @@
   $MYG < ../sql/character_quest_global_data.sql &> /dev/null
   $MYG < ../sql/character_quests.sql &> /dev/null
+$MYG < ../sql/character_premium.sql &> /dev/null
   $MYG < ../sql/character_raid_points.sql &> /dev/null
   $MYG < ../sql/character_recipebook.sql &> /dev/null
Index: /trunk/DataPack/data/html/admin/premium_menu.htm
===================================================================
--- /trunk/DataPack/data/html/admin/premium_menu.htm (revision 258)
+++ /trunk/DataPack/data/html/admin/premium_menu.htm (revision 258)
@@ -0,0 +1,29 @@
+<html><title>Premium Service Menu</title><body>
+<center>
+<table width=270 border=0 bgcolor="666666">
+<tr>
+<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>
+<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>
+<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>
+<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>
+<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>
+</tr>
+</table>
+<br>
+<font color="LEVEL">Premium Service Menu</font><br>
+<table width=250>
+<tr>
+<td>Enter Account Name:</td>
+<td><edit var="acc_name" width=200></td>
+</tr>
+</table>
+<br>
+<table width=260>
+<tr>
+<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>
+<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>
+<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>
+</tr>
+</table>
+</center>
+</body></html>
Index: /trunk/DataPack/data/html/admin/main_menu.htm
===================================================================
--- /trunk/DataPack/data/html/admin/main_menu.htm (revision 221)
+++ /trunk/DataPack/data/html/admin/main_menu.htm (revision 258)
@@ -54,4 +54,5 @@
   <td><button value="TradeOff" action="bypass -h admin_tradeoff" width=65 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
   <td><button value="Invul" action="bypass -h admin_invul" width=65 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td>
+<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>
   </tr><tr>
   <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>
Index: /trunk/Game/config/main/rates.ini
===================================================================
--- /trunk/Game/config/main/rates.ini (revision 221)
+++ /trunk/Game/config/main/rates.ini (revision 258)
@@ -49,4 +49,18 @@
   # Рейт на дроп квестовых предметов. Внимание: данная опция работает не во всех квестах. Многие квесты нужно редактировать в датапаке для работы этой опции.
   RateDropQuest = 1
+
+# ---------------------------------------------------------------------------
+# Система Премиум-Аккаунт (ПА)
+# ---------------------------------------------------------------------------
+# Включить функцию Премиум-Аккаунт (ПА)?
+# По умолчанию: False
+UsePremiumServices = False
+# Какие рейты будут приниматься для обладателей ПА?
+PremiumRateXp = 2
+PremiumRateSp = 2
+PremiumRateDropAdena = 2
+PremiumRateDropItems = 2
+PremiumRateDropSpoil = 2
+PremiumRateDropQuest = 2
     
   # List of RaidBoss items affected by RateDropBossJewel (separated by ",")
Index: /trunk/Game/src/main/java/com/l2open/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- /trunk/Game/src/main/java/com/l2open/gameserver/model/actor/instance/L2PcInstance.java (revision 221)
+++ /trunk/Game/src/main/java/com/l2open/gameserver/model/actor/instance/L2PcInstance.java (revision 258)
@@ -299,4 +299,7 @@
    // Character Transformation SQL String Definitions:
    private static final String UPDATE_CHAR_TRANSFORM = "UPDATE characters SET transform_id=? WHERE charId=?";
+    // Character PremiumService String Definitions:
+    private static final String RESTORE_PREMIUMSERVICE = "SELECT premium_service,enddate FROM character_premium WHERE account_name=?";
+    private static final String    UPDATE_PREMIUMSERVICE = "UPDATE character_premium SET premium_service=?,enddate=? WHERE account_name=?";
    public static final int REQUEST_TIMEOUT = 15;
    public static final int STORE_PRIVATE_NONE = 0;
@@ -13752,3 +13755,119 @@
     return new PcKnownList(this);
    }
+   
+    private void createPSdb()
+    {
+  Connection con = null;
+  try
+  {
+   con = L2DatabaseFactory.getInstance().getConnection();
+   PreparedStatement statement = con.prepareStatement("INSERT INTO character_premium (account_name,premium_service,enddate) values(?,?,?)");
+   statement.setString(1, _accountName);
+   statement.setInt(2, 0);
+   statement.setLong(3, 0);     
+   statement.executeUpdate();
+   statement.close();
+  }
+  catch (Exception e)
+  {
+   _log.warn("Could not insert char data: "+e);
+            e.printStackTrace();
+   return;
+  }
+  finally
+  {
+   try
+   {
+    if (con != null)
+     con.close();
+   }
+   catch (SQLException e)
+   {
+    e.printStackTrace();
+   }
+  }
+    }
+   
+    private static void PStimeOver(String account)
+    {
+  Connection con = null;
+  try
+  {
+   con = L2DatabaseFactory.getInstance().getConnection();
+   PreparedStatement statement = con.prepareStatement(UPDATE_PREMIUMSERVICE);
+   statement.setInt(1, 0);
+   statement.setLong(2, 0);
+   statement.setString(3, account);
+   statement.execute();
+   statement.close();
+  }
+  catch (SQLException e)
+  {
+   _log.warn("PremiumService:  Could not increase data");
+  }
+  finally
+  {
+   try
+   {
+    if (con != null)
+     con.close();
+   }
+   catch (SQLException e)
+   {
+    e.printStackTrace();
+   }
+  }    
+    }
+   
+    private static void restorePremServiceData(L2PcInstance player, String account)
+    {
+     boolean sucess=false;   
+  Connection con = null;
+  try
+  {
+   con = L2DatabaseFactory.getInstance().getConnection();
+   PreparedStatement statement = con.prepareStatement(RESTORE_PREMIUMSERVICE);
+   statement.setString(1, account);
+   ResultSet rset = statement.executeQuery();
+   while (rset.next())
+   {
+    sucess=true;
+    if (Config.USE_PREMIUMSERVICE){
+     if (rset.getLong("enddate") <= System.currentTimeMillis()){
+      PStimeOver(account);
+      player.setPremiumService(0);
+     }
+     else
+      player.setPremiumService(rset.getInt("premium_service"));
+    }
+    else
+     player.setPremiumService(0);
+   }
+
+   statement.close();
+     
+  }
+  catch (Exception e)
+  {
+   _log.warn("PremiumService: Could not restore PremiumService data for:" + account + "."+e);
+            e.printStackTrace();
+  }
+  finally
+  {
+   try
+   {
+    if (con != null)
+     con.close();
+   }
+   catch (SQLException e)
+   {
+    e.printStackTrace();
+   }
+  }
+  if (sucess==false)
+  {
+   player.createPSdb();
+   player.setPremiumService(0);
+  }
+    }
   }
Index: /trunk/Game/src/main/java/com/l2open/gameserver/model/actor/L2Character.java
===================================================================
--- /trunk/Game/src/main/java/com/l2open/gameserver/model/actor/L2Character.java (revision 249)
+++ /trunk/Game/src/main/java/com/l2open/gameserver/model/actor/L2Character.java (revision 258)
@@ -6886,3 +6886,15 @@
    }
     
+    private int _PremiumService;   
+   
+    public void setPremiumService(int PS)
+     {
+          _PremiumService=PS;
+     }       
+       
+          public int getPremiumService()
+     {
+          return _PremiumService;
+        
+     }
   }
Index: /trunk/Game/src/main/java/com/l2open/gameserver/handler/AdminCommandHandler.java
===================================================================
--- /trunk/Game/src/main/java/com/l2open/gameserver/handler/AdminCommandHandler.java (revision 221)
+++ /trunk/Game/src/main/java/com/l2open/gameserver/handler/AdminCommandHandler.java (revision 258)
@@ -67,4 +67,5 @@
   import com.l2open.gameserver.handler.admincommandhandlers.AdminPledge;
   import com.l2open.gameserver.handler.admincommandhandlers.AdminPolymorph;
+import com.l2open.gameserver.handler.admincommandhandlers.AdminPremium;
   import com.l2open.gameserver.handler.admincommandhandlers.AdminQuest;
   import com.l2open.gameserver.handler.admincommandhandlers.AdminReload;
Index: /trunk/Game/src/main/java/com/l2open/gameserver/handler/admincommandhandlers/AdminPremium.java
===================================================================
--- /trunk/Game/src/main/java/com/l2open/gameserver/handler/admincommandhandlers/AdminPremium.java (revision 258)
+++ /trunk/Game/src/main/java/com/l2open/gameserver/handler/admincommandhandlers/AdminPremium.java (revision 258)
@@ -0,0 +1,108 @@
+package com.l2open.gameserver.handler.admincommandhandlers;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.PreparedStatement;
+
+import java.util.Calendar;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import com.l2open.L2DatabaseFactory;
+import com.l2open.gameserver.handler.IAdminCommandHandler;
+import com.l2open.gameserver.model.actor.instance.L2PcInstance;
+
+public class AdminPremium implements IAdminCommandHandler
+{
+    private static final String[] ADMIN_COMMANDS = { "admin_premium_menu", "admin_premium_add1", "admin_premium_add2", "admin_premium_add3" };
+   
+private static final String UPDATE_PREMIUMSERVICE = "UPDATE character_premium SET premium_service=?,enddate=? WHERE account_name=?";
+private static final Logger _log = Logger.getLogger(AdminPremium.class.getName());
+   
+    public boolean useAdminCommand(String command, L2PcInstance activeChar)
+    {
+  if (command.equals("admin_premium_menu"))
+  {
+   AdminHelpPage.showHelpPage(activeChar, "premium_menu.htm");
+  }
+  else if (command.startsWith("admin_premium_add1"))
+  {
+   try
+            {
+                String val = command.substring(19);
+                addPremiumServices(1, val);
+            }
+            catch(StringIndexOutOfBoundsException e)
+            {
+                activeChar.sendMessage("Err");
+            }
+        }
+  else if(command.startsWith("admin_premium_add2"))
+        {
+            try
+            {
+                String val = command.substring(19);
+                addPremiumServices(2, val);
+            }
+            catch(StringIndexOutOfBoundsException e)
+            {
+                activeChar.sendMessage("Err");
+            }
+        }
+  else if(command.startsWith("admin_premium_add3"))
+        {
+            try
+            {
+                String val = command.substring(19);
+                addPremiumServices(3, val);
+            }
+            catch(StringIndexOutOfBoundsException e)
+            {
+                activeChar.sendMessage("Err");
+            }
+        }
+        return true;
+    }
+   
+    public String[] getAdminCommandList()
+    {
+  return ADMIN_COMMANDS;
+    }
+   
+    private void addPremiumServices(int Months,String AccName)
+    {
+  Connection con = null;
+  try
+  {
+   Calendar finishtime = Calendar.getInstance();
+   finishtime.setTimeInMillis(System.currentTimeMillis());
+   finishtime.set(Calendar.SECOND, 0);
+   finishtime.add(Calendar.MONTH, Months);
+     
+   con = L2DatabaseFactory.getInstance().getConnection();
+   PreparedStatement statement = con.prepareStatement(UPDATE_PREMIUMSERVICE);
+   statement.setInt(1, 1);
+   statement.setLong(2, finishtime.getTimeInMillis());
+   statement.setString(3, AccName);
+   statement.execute();
+   statement.close();
+  }
+  catch (SQLException e)
+  {
+   _log.info("PremiumService:  Could not increase data");
+  }
+  finally
+  {
+   try
+   {
+    if (con != null)
+     con.close();
+   }
+   catch (SQLException e)
+   {
+    e.printStackTrace();
+   }
+  }    
+    
+    }
+}
Index: /trunk/Game/src/main/java/com/l2open/Config.java
===================================================================
--- /trunk/Game/src/main/java/com/l2open/Config.java (revision 233)
+++ /trunk/Game/src/main/java/com/l2open/Config.java (revision 258)
@@ -298,4 +298,11 @@
    public static int RATE_DROP_MANOR;
    public static float RATE_DROP_QUEST;
+    public static boolean    USE_PREMIUMSERVICE;
+    public static float  PREMIUM_RATE_XP;
+    public static float  PREMIUM_RATE_SP;
+    public static float  PREMIUM_RATE_DROP_ADENA;
+    public static float  PREMIUM_RATE_DROP_SPOIL;
+    public static float  PREMIUM_RATE_DROP_ITEMS;
+    public static float  PREMIUM_RATE_DROP_QUEST;
    public static float RATE_KARMA_EXP_LOST;
    public static float RATE_SIEGE_GUARDS_PRICE;
@@ -350,4 +357,11 @@
      RATE_DROP_MANOR = Integer.parseInt(ratesSettings.getProperty("RateDropManor", "1"));
      RATE_DROP_QUEST = Float.parseFloat(ratesSettings.getProperty("RateDropQuest", "1."));
+   USE_PREMIUMSERVICE = Boolean.parseBoolean(ratesSettings.getProperty("UsePremiumServices", "False"));
+   PREMIUM_RATE_XP = Float.parseFloat(ratesSettings.getProperty("PremiumRateXp", "2"));
+   PREMIUM_RATE_SP = Float.parseFloat(ratesSettings.getProperty("PremiumRateSp", "2"));
+   PREMIUM_RATE_DROP_ADENA = Float.parseFloat(ratesSettings.getProperty("PremiumRateDropAdena", "2"));
+   PREMIUM_RATE_DROP_SPOIL = Float.parseFloat(ratesSettings.getProperty("PremiumRateDropSpoil", "2"));
+   PREMIUM_RATE_DROP_ITEMS = Float.parseFloat(ratesSettings.getProperty("PremiumRateDropItems", "2"));
+   PREMIUM_RATE_DROP_QUEST = Float.parseFloat(ratesSettings.getProperty("PremiumRateDropQuest", "2"));
      RATE_KARMA_EXP_LOST = Float.parseFloat(ratesSettings.getProperty("RateKarmaExpLost", "1."));
      RATE_SIEGE_GUARDS_PRICE = Float.parseFloat(ratesSettings.getProperty("RateSiegeGuardsPrice", "1."));
@@ -2931,4 +2945,16 @@
     else if (pName.equalsIgnoreCase("RateDropQuest"))
      RATE_DROP_QUEST = Float.parseFloat(pValue);
+  else if (pName.equalsIgnoreCase("PremiumRateXp"))
+   PREMIUM_RATE_XP = Float.parseFloat(pValue);
+  else if (pName.equalsIgnoreCase("PremiumRateSp"))
+   PREMIUM_RATE_SP = Float.parseFloat(pValue);
+  else if (pName.equalsIgnoreCase("PremiumRateDropAdena"))
+   PREMIUM_RATE_DROP_ADENA = Float.parseFloat(pValue);
+  else if (pName.equalsIgnoreCase("PremiumRateDropSpoil"))
+   PREMIUM_RATE_DROP_SPOIL = Float.parseFloat(pValue);
+  else if (pName.equalsIgnoreCase("PremiumRateDropItems"))
+   PREMIUM_RATE_DROP_ITEMS = Float.parseFloat(pValue);
+  else if (pName.equalsIgnoreCase("PremiumRateDropQuest"))
+   PREMIUM_RATE_DROP_QUEST = Float.parseFloat(pValue);
     else if (pName.equalsIgnoreCase("RateKarmaExpLost"))
      RATE_KARMA_EXP_LOST = Float.parseFloat(pValue);

это мало что кому-т оскажет, но тот кто понимает в исходниках - прикрутит.
И плюсики нужно естественно будет удалить ибо они не нужны.

Как сделать премиум аккаунт в lineage 2 Как сделать премиум аккаунт в lineage 2 Как сделать премиум аккаунт в lineage 2 Как сделать премиум аккаунт в lineage 2 Как сделать премиум аккаунт в lineage 2 Как сделать премиум аккаунт в lineage 2 Как сделать премиум аккаунт в lineage 2 Как сделать премиум аккаунт в lineage 2 Как сделать премиум аккаунт в lineage 2 Как сделать премиум аккаунт в lineage 2 Как сделать премиум аккаунт в lineage 2

Читать далее:




Модель дирижабля из бумаги своими руками




Схема вязания шапки и шарфа мальчику




Поздравление имениннику с переодеванием




Вязание крючком боксерские перчатки




Овечка крючком мастер-классы схема