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.

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
Reply to this topic...

×   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.

×
×
  • Create New...