Jump to content

Recommended Posts

Posted

A light donate system , made by me.

It works like all but it's faster and it works with .txt file.

Tested

 

*No SQL Connections

*Less memory usage

*can be easy handled

 

For add/remove donator:

//setdonator or in the text file in a new line add the new character name.

//removedonator or delete the character name from the txt file.

 

Example:

Iracundus
Test
Blabla
Donator32
Lordofpvp

 

### Eclipse Workspace Patch 1.0
#P Chr.6GMS
Index: java/net/sf/l2j/gameserver/clientpackets/EnterWorld.java
===================================================================
--- java/net/sf/l2j/gameserver/clientpackets/EnterWorld.java	(revision 5263)
+++ java/net/sf/l2j/gameserver/clientpackets/EnterWorld.java	(working copy)
@@ -27,6 +27,7 @@
import net.sf.l2j.Config;
import net.sf.l2j.L2DatabaseFactory;
import net.sf.l2j.gameserver.Announcements;
+import net.sf.l2j.gameserver.Donate;
import net.sf.l2j.gameserver.GmListTable;
import net.sf.l2j.gameserver.LoginServerThread;
import net.sf.l2j.gameserver.Olympiad;
@@ -251,6 +252,7 @@

         SevenSigns.getInstance().sendCurrentPeriodMsg(activeChar);
         Announcements.getInstance().showAnnouncements(activeChar);
+        Donate.onEnter(activeChar);

		Quest.playerEnter(activeChar);
		activeChar.sendPacket(new QuestList());
Index: java/net/sf/l2j/gameserver/Donate.java
===================================================================
--- java/net/sf/l2j/gameserver/Donate.java	(revision 0)
+++ java/net/sf/l2j/gameserver/Donate.java	(revision 0)
@@ -0,0 +1,134 @@
+package net.sf.l2j.gameserver;
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.LineNumberReader;
+import java.util.StringTokenizer;
+
+import net.sf.l2j.Config;
+import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
+import javolution.util.FastList;
+
+
+public class Donate{
+	private static Donate _instance = null;
+	public static FastList<String> donators = new FastList<String>();
+	static File file = new File(Config.DATAPACK_ROOT, "data/donators.txt");
+	
+	public Donate(){
+		loadDonatorsAtStart();
+	}
+	
+	public static Donate getInstance(){
+		if(_instance == null)
+			_instance = new Donate();
+		
+		return _instance;
+	}
+	
+	public static boolean isDonator(L2PcInstance activeChar){
+		if(donators.contains(activeChar.getName()))
+			return true;
+		return false;
+	}
+	
+	public static void onEnter(L2PcInstance activeChar){
+		if(donators.contains(activeChar.getName())){
+		Announcements.getInstance().announceToAll("Donator: "+activeChar.getName()+" is now online");
+		activeChar.getAppearance().setNameColor(0xFFFF);
+		}	
+	}
+		
+	public static void newDonate(L2PcInstance activeChar){
+		 Announcements.getInstance().announceToAll("Player "+activeChar.getName()+" is a server donator now");
+	     activeChar.getAppearance().setNameColor(0xFFFF);
+	     activeChar.broadcastUserInfo();
+	     activeChar.sendMessage("You have become a server donator now , congratulations");
+	}
+	
+	public static void oldDonate(L2PcInstance activeChar){
+		Announcements.getInstance().announceToAll("Player "+activeChar.getName()+" is no more a server donator");
+	     activeChar.sendMessage("You are no longer a server donator");
+	}
+	
+	public static void removeDonator(L2PcInstance activeChar){
+		String name = activeChar.getName();
+		donators.remove(name);
+		
+		FileWriter s = null;
+		try
+		{
+			s = new FileWriter(file);
+			for (int i = 0; i < donators.size(); i++)
+			{
+				s.write(donators.get(i));
+				s.write("\r\n");
+			}
+			s.flush();
+			s.close();
+			s = null;
+		}
+		catch (IOException e)
+		{
+			e.printStackTrace();
+		}
+	}
+	
+	public static void addExtraDonator(L2PcInstance activeChar){
+		String name = activeChar.getName();
+		donators.add(name);
+		
+		FileWriter s = null;
+		try
+		{
+			s = new FileWriter(file);
+			for (int i = 0; i < donators.size(); i++)
+			{
+				s.write(donators.get(i));
+				s.write("\r\n");
+			}
+			s.flush();
+			s.close();
+			s = null;
+		}
+		catch (IOException e)
+		{
+			e.printStackTrace();
+		}
+	}
+	
+	public static void loadDonatorsAtStart(){
+		LineNumberReader l = null;
+		try{
+			String line = null;
+			int counter = 0;
+			l = new LineNumberReader(new FileReader(file));
+			while ( (line = l.readLine()) != null)
+			{
+				StringTokenizer st = new StringTokenizer(line,"\n\r");
+				if (st.hasMoreTokens())
+				{
+					String n = st.nextToken();
+					donators.add(n);
+					counter++;
+				}
+			}
+          System.out.print("Loaded: "+counter+" donator players");
+		}
+		catch(Exception e){
+			e.printStackTrace();
+		}
+		finally
+		{
+			try
+			{
+				l.close();
+			}
+			catch (Exception e)
+			{
+			}
+	}
+  }
+}
\ No newline at end of file
Index: java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminDonate.java
===================================================================
--- java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminDonate.java	(revision 0)
+++ java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminDonate.java	(revision 0)
@@ -0,0 +1,77 @@
+
+package net.sf.l2j.gameserver.handler.admincommandhandlers;
+
+import net.sf.l2j.gameserver.Donate;
+import net.sf.l2j.gameserver.handler.IAdminCommandHandler;
+import net.sf.l2j.gameserver.model.L2Object;
+import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
+
+
+public class AdminDonate implements IAdminCommandHandler
+{
+	
+	private static final String[] commands = {"admin_setdonator","admin_removedonator"};
+
+	public boolean useAdminCommand(String command, L2PcInstance activeChar)
+	{
+		if(command.equalsIgnoreCase("admin_setdonator")){
+			if(activeChar == null)
+				return false;
+			
+			L2Object t = activeChar.getTarget();
+			L2PcInstance target = null;
+			
+			if(t == null)
+				return false;
+			
+			if(!(t instanceof L2PcInstance))
+				return false;
+		     target = (L2PcInstance) t;
+		     
+		     if(target == activeChar)
+		    	 return false;
+		     
+		     if(Donate.isDonator(target)){
+		    	 activeChar.sendMessage("This player is already a donator");
+		    	 return false;
+		     }
+		     
+		     Donate.addExtraDonator(target);
+		     Donate.newDonate(target);	
+		}
+			
+		else if(command.equalsIgnoreCase("admin_removedonator")){
+			if(activeChar == null)
+				return false;
+			
+			L2Object t = activeChar.getTarget();
+			L2PcInstance target = null;
+			
+			if(t == null)
+				return false;
+			
+			if(!(t instanceof L2PcInstance))
+				return false;
+		     target = (L2PcInstance) t;
+		     
+		     if(target == activeChar)
+		    	 return false;
+		     
+		     if(!Donate.isDonator(target)){
+		    	 activeChar.sendMessage("This player is not a donator");
+		    	 return false;
+		     }
+		     
+		     Donate.removeDonator(target);
+		     Donate.oldDonate(target);
+		  }
+			
+			return true;
+	}
+
+	
+	public String[] getAdminCommandList()
+	{
+		return commands;
+	}	
+}
Index: data/donators.txt
===================================================================
Index: java/net/sf/l2j/gameserver/GameServer.java
===================================================================
--- java/net/sf/l2j/gameserver/GameServer.java	(revision 5263)
+++ java/net/sf/l2j/gameserver/GameServer.java	(working copy)
@@ -78,6 +78,7 @@
import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminCreateItem;
import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminCursedWeapons;
import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminDelete;
+import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminDonate;
import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminDoorControl;
import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminEditChar;
import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminEditNpc;
@@ -404,6 +405,7 @@
		Announcements.getInstance();
		MapRegionTable.getInstance();
		EventDroplist.getInstance();
+		Donate.getInstance();

		/** Load Manor data */
		L2Manor.getInstance();
@@ -518,6 +520,7 @@

		_adminCommandHandler = AdminCommandHandler.getInstance();
		_adminCommandHandler.registerAdminCommandHandler(new AdminAdmin());
+		_adminCommandHandler.registerAdminCommandHandler(new AdminDonate());
		_adminCommandHandler.registerAdminCommandHandler(new AdminInvul());
		_adminCommandHandler.registerAdminCommandHandler(new AdminDelete());
		_adminCommandHandler.registerAdminCommandHandler(new AdminKill());

 

And create a new file name donators.txt in data folder.

Posted

Since a getInstance() method exists in Donate.java, you don't need to set the methods to static. You get a new object of the class with the getInstance() method...

Posted

Since a getInstance() method exists in Donate.java, you don't need to set the methods to static. You get a new object of the class with the getInstance() method...

True, i didn't care it.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • Hello trying to edit Armorgrp_Classic.dat using L2ClientDat Editor - l2jmobius edition I can normally open a file but can't save, even can't save "clean" version of file (just open and then click save) Other files i can normally open, edit and save. but there is problem with Armorgrp_Classic.dat Anyone find solution, or other Editor for protocol 166 ?   [25/12 15:10:11] --------------------------------------- [25/12 15:10:11] Open file: Armorgrp_Classic.dat [25/12 15:10:11] File Armorgrp_Classic.dat encrypted. Lineage2Ver413 decrypt ... [25/12 15:10:11] Decrypt Armorgrp_Classic.dat file successfully by v413_encdec decrypter. [25/12 15:10:11] Read the file structure ... [25/12 15:10:11] Unpacking [L2GameDataName.dat] [25/12 15:10:11] GameDataName: Load 97534 count. [25/12 15:10:11] Completed. [25/12 15:11:32] Wrong param count for wrapper: fertheia_mesh_add, paramIndex: 1, params: {{{[LineageAccessory3.fertheia_pvp_Hrm_ad11];[None];[LineageAccessory3.fertheia_pvp_Hrm_ad11];[None];[LineageAccessory3.fertheia_pvp_Hrm_ad11;[none]};{{109;114};{0;-1};{109;114};{0;-1};{109;114}}};{[Mantleguild.kingdom.E_elmd_1_t00];[None];[Mantleguild.kingdom.E_elmd_1_t00];[None];[Mantleguild.kingdom.E_elmd_1_t00];[None]};[None]} -node: fertheia_mesh_add[WRAPPER][null][null] param: {{{[LineageAccessory3.fertheia_pvp_Hrm_ad11];[None];[LineageAccessory3.fertheia_pvp_Hrm_ad11];[None];[LineageAccessory3.fertheia_pvp_Hrm_ad11;[none]};{{109;114};{0;-1};{109;114};{0;-1};{109;114}}};{[Mantleguild.kingdom.E_elmd_1_t00];[None];[Mantleguild.kingdom.E_elmd_1_t00];[None];[Mantleguild.kingdom.E_elmd_1_t00];[None]};[None]} org.l2jmobius.xml.exceptions.PackDataException: Wrong param count for wrapper: fertheia_mesh_add, paramIndex: 1, params: {{{[LineageAccessory3.fertheia_pvp_Hrm_ad11];[None];[LineageAccessory3.fertheia_pvp_Hrm_ad11];[None];[LineageAccessory3.fertheia_pvp_Hrm_ad11;[none]};{{109;114};{0;-1};{109;114};{0;-1};{109;114}}};{[Mantleguild.kingdom.E_elmd_1_t00];[None];[Mantleguild.kingdom.E_elmd_1_t00];[None];[Mantleguild.kingdom.E_elmd_1_t00];[None]};[None]} -node: fertheia_mesh_add[WRAPPER][null][null] param: {{{[LineageAccessory3.fertheia_pvp_Hrm_ad11];[None];[LineageAccessory3.fertheia_pvp_Hrm_ad11];[None];[LineageAccessory3.fertheia_pvp_Hrm_ad11;[none]};{{109;114};{0;-1};{109;114};{0;-1};{109;114}}};{[Mantleguild.kingdom.E_elmd_1_t00];[None];[Mantleguild.kingdom.E_elmd_1_t00];[None];[Mantleguild.kingdom.E_elmd_1_t00];[None]};[None]} at org.l2jmobius.xml.DescriptorWriter.packData(DescriptorWriter.java:275) at org.l2jmobius.xml.DescriptorWriter.packData(DescriptorWriter.java:184) at org.l2jmobius.xml.DescriptorWriter.parseData(DescriptorWriter.java:100) at org.l2jmobius.actions.SaveDat.action(SaveDat.java:70) at org.l2jmobius.actions.ActionTask.doInBackground(ActionTask.java:48) at org.l2jmobius.actions.ActionTask.doInBackground(ActionTask.java:27) at java.desktop/javax.swing.SwingWorker$1.call(SwingWorker.java:303) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:328) at java.desktop/javax.swing.SwingWorker.run(SwingWorker.java:340) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1095) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:619) at java.base/java.lang.Thread.run(Thread.java:1447) [25/12 15:11:32] buff == null.  
    • Leave your contact information or write to me on Telegram @dieorditsa
    • Hello everyone, I’m looking for a graphic designer to design a custom logo that will be used in NPC HTML interfaces for Lineage. Please send me a private message if you are interested.
    • ok sounds good sign me up
  • Topics

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock