Jump to content
  • 0

Question

Recommended Posts

  • 0
Posted

if you have made this mod please write little mod how to do this

i think its best if you start learning a bit more java.. before thinking of moding your server more than what config files allow..

 

great.. and now that youre so good.. you can keep answering the next 10posts of how do i add that to my server?

 

 

//off topic

 

ohhh cmon the modern worlds post hunting leave it as it is

 

if someone dont get it he talk about a diff file

 

obviously my post wasnt spam, however yourse is..

 

ofc but this is a simple way :)

L2NpcInstance

   public int getExpReward()

   {

      double rateXp = getStat().calcStat(Stats.MAX_HP , 1, this, null);

+      if (player.isDonator())

+         return (int)(getTemplate().rewardExp * rateXp * Config.RATE_XP * Config.DONATOR_XP);

+      else

        return (int)(getTemplate().rewardExp * rateXp * Config.RATE_XP);

   }

 

im not sure why you quoted me.. however now you can start explaining it to lekino.. gl.

 

  • 0
Posted

i have found this patch for premium accounts

 

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.sql
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);

 

can someone make it for l2jteon?

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.




  • Posts

    • 🌟 Arena Fights – PvP System for Lineage II servers 📋 Overview The Arena Fights Manager is a fully automated and battle-proven PvP tournament system built for Lineage 2 servers (based on aCis pack standards). It offers hourly or custom-scheduled 1v1 fights, spectator options, disconnection handling, automatic NPC managers, and dynamic rescheduling, ensuring continuous and engaging PvP without the need for GM intervention. Ideal for any serious server that wants to offer competitive, organized, rewarding PvP content.   ⚙️ Features ✅ Full Automation Automatic start/stop based on your custom schedule (Config.ARENA_FIGHTS_SCHEDULE). Reschedules every day at 23:59 for the next day's tournaments. Server restarts during an event? No problem — the system self-detects and continues! ✅ Matchmaking System Smart queue system for 1v1 match creation. Automatic pairing: when two players are queued, a match is instantly created. Validation checks to remove disconnected or invalid players from the queue. ✅ Dynamic PvP Arenas Predefined player teleport locations for fair 1v1 battles. Spectator mode available: players can view live battles through the event interface. ✅ NPC Manager Control Spawns special Arena Manager NPCs during event times. NPCs are deleted when the event finishes to keep the world clean. Multiple Managers can be placed easily. ✅ Robust Player Handling Handles disconnects gracefully: Saves disconnected players. Restores them to a safe location on reconnection. Removes them from the queue or match without crashes or bugs. Players receive a system message upon restoration. ✅ Clean Coding Practices Fully integrated with ThreadPool tasks for efficient, non-blocking performance. Uses CopyOnWriteArrayList for thread-safe collections (queues, matches, disconnected players). Singleton Pattern ensures only one Arena Manager instance exists. ✅ Visual Enhancements World Announcements during important event phases ("Arena Fights have started!", "Battles are over!"). Red Sky Effect (ExRedSky) during Arena start and end for immersive atmosphere. ✅ Admin-Friendly Commands Allows NPC broadcast announcements. Easy to check current running matches and spectate them. Display list of ongoing matches dynamically.   📦 Technical Highlights Built with a modular and clean structure. Zero dependency on hardcoded values — everything configurable via the server Config. Handles dynamic spawning and safe deletion of NPCs through SpawnTable. Utilizes InstanceManager to safely handle player instances.   🎯 Why Choose This Arena System? Feature Other           Arena Fights Disconnection handling ❌ ✅ Fully automatic scheduling ❌ ✅ Daily rescheduling ❌ ✅ Manager NPC auto-spawn/despawn ❌ ✅ Queue matchmaking without GMs ❌ ✅ Clean code with thread-safety ❌ ✅ Integrated visual effects (Red Sky) ❌ ✅ Instant spectating capabilities ❌ ✅ 📈 Expandability Can be adapted to reward players with custom currencies (e.g., Arena Trophy). Could integrate ranking systems based on wins/loses. Room to add betting systems for spectators!   🔥 Screenshots / Preview (Optional) Lobby NPC screenshots Battle happening Spectator UI Disconnection restoration notification   💬 Final Words The Arena Fights Manager is not just a PvP mini-event — it's a major daily PvP engine that will boost: Player activity Server competitiveness Community engagement   It’s optimized for performance, designed for smoothness, and built for growth.   🛒 Available for purchase! Interested? Contact me and let's make your server shine.   PM me directly for inquiries and purchases. Discord: @Luminous   Pricing: Full License: 70e (One-time payment) Support & Updates: included on full licence
    • As if he's dead? Jesus christ  
    • I've heard a rumor that he's no more with us, I hope it's not true
  • Topics

×
×
  • Create New...