Noticias:

No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.

Menú Principal

Auto Vote Reward Handler

Iniciado por Swarlog, Jul 25, 2025, 11:52 PM

Tema anterior - Siguiente tema

Swarlog

CitarVersión 2.0

/*
 * This is a script completely developed by Rain^ (?)
 * You are not allowed to sell any copies of it.
 * Since 2.0 (by Zoey76 for L2J Forums):
 * Added logger instead of System.out.println()
 * Moved to Datapack.
 * Reworked AutoReward class.
 * Reworked getVotes() method.
 * Time is in minutes instead of milliseconds.
 * Uses different a-beep-t for each item.
 * Only rewards online players, not offline shops.
 * Rewarded players count.
 */
package custom.VoteEngine;

import java.io.*;
import java.net.*;
import java.util.Collection;
import java.util.logging.Level;
import java.util.logging.Logger;

import net.sf.l2j.gameserver.Announcements;
import net.sf.l2j.gameserver.ThreadPoolManager;
import net.sf.l2j.gameserver.model.L2World;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;

/**
 * @author Zoey76
 * @version 2.0
 */
public class AutoVoteRewardHandler
{
	protected static final Logger _log = Logger.getLogger(AutoVoteRewardHandler.class.getName());
	//URL from your server site at HopZone.net
	//Example: [url=http://l2.hopzone.net/lineage2/moreinfo/YourServer/ID.html]http://l2.hopzone.net/lineage2/moreinfo/YourServer/ID.html[/url]
	private final static String _url = "http://l2.hopzone.net/lineage2/moreinfo/L2WorldPvP/74078.html";//Add your URL from HopZone here!
	//Reward all online players each '_votesRequiredForReward' votes.
	private final int _votesRequiredForReward = 1;//
	//Initial check, time in minutes:
	//Default: 1 minute
	private final int initialCheck = 1;
	//Delay interval, time in minutes (do not set it too low):
	//Default: 10 minutes
	private final int delayForCheck = 1;
	
	//Item Id, A-beep-t.
	private final static int[][] ITEMs =
	{
		{ 5575, 10 }, //10 Event - Apiga(s)
		{ 57, 1000000 }, //1 million Adena
	};
	
	//Do not change
	private int _lastVoteCount = 0;
	
	private AutoVoteRewardHandler()
	{
		_log.info("[AutoVoteRewardHandler]: Vote Reward System Initiated.");
		ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoReward(), initialCheck * 60000, delayForCheck * 60000);
	}
	
	private class AutoReward implements Runnable
	{
		public void run()
		{
			int votes = getVotes();
			int rewardedPlayers = 0;
			if (votes > -1)
			{
				if  ((getLastVoteCount() != 0) && (votes >= (getLastVoteCount() + _votesRequiredForReward)))
				{
					Collection<L2PcInstance> pls = L2World.getInstance().getAllPlayers().values();
					for (L2PcInstance player : pls)
					{
						if ((player != null) && !player.getClient().isDetached())
						{
							for (int[] reward : ITEMs)
							{
								if (player.getInventory().validateCapacityByItemId(reward[0]))
								{
									player.addItem("reward", reward[0], reward[1], player, true);
								}
							}
							rewardedPlayers++;
						}
					}
					setLastVoteCount(getLastVoteCount() + _votesRequiredForReward);
				}
				else if (getLastVoteCount() == 0)
				{
					setLastVoteCount(votes);
				}
				_log.info("[AutoVoteRewardHandler]: Server Votes: " + votes + ", Rewarded players: " + rewardedPlayers);
				Announcements.getInstance().announceToAll("Server Votes: " + votes + " | Next Reward on " + (getLastVoteCount() + _votesRequiredForReward) + " votes!");
			}
			else
			{
				_log.log(Level.WARNING, "[AutoVoteRewardHandler]: Error retreiving server votes count!");
			}
		}
	}
	
	private static int getVotes()
	{
       		InputStreamReader isr = null;
		BufferedReader in = null;
		int votes = -1;
		try
		{
		URLConnection conn = new URL(_url).openConnection();
		conn.addRequestProperty("User-Agent", "Mozilla/4.76");
		isr = new InputStreamReader(conn.getInputStream());
         	in = new BufferedReader(isr);
			String inputLine;
			while (((inputLine = in.readLine()) != null) && (votes == -1))
			{
				if (inputLine.contains("Anonymous User Votes"))
				{
					try
					{
						votes = Integer.valueOf(inputLine.split(">")[2].replace("</span", ""));
					}
					catch (Exception e)
					{
					}
				}
			}
			in.close();
		}
		catch (Exception e)
		{
			_log.log(Level.WARNING, "[AutoVoteRewardHandler]: " + e.getMessage(), e);
		}
		return votes;
	}
	
	private void setLastVoteCount(int voteCount)
	{
		_lastVoteCount = voteCount;
	}
	
	private int getLastVoteCount()
	{
		return _lastVoteCount;
	}
	
	public static AutoVoteRewardHandler getInstance()
	{
		return SingletonHolder._instance;
	}
	
	@SuppressWarnings("synthetic-access")
	private static class SingletonHolder
	{
		protected static final AutoVoteRewardHandler _instance = new AutoVoteRewardHandler();
	}
	
	public static void main(String[] args)
	{
		//System.out.println("Server votes: " + getVotes());//Just a test.
		AutoVoteRewardHandler.getInstance();
	}
}

CitarVersión 3.0

/*
 * This is a script completely developed by Rain^ (?)
 * You are not allowed to sell any copies of it.
 *
 * Since 2.0 (by Zoey76 for L2J Forums):
 * Added logger instead of System.out.println()
 * Moved to Datapack.
 * Reworked AutoReward class.
 * Reworked getVotes() method.
 * Time is in minutes instead of milliseconds.
 * Uses different a-beep-t for each item.
 * Only rewards online players, not offline shops.
 * Rewarded players count.
 *
 * Since 3.0 (by KsrZ for L2JServer):
 * Multi-Reward same time, if needed ((votes - getLastVoteCount() / _votesRequiredForReward) * ITEMs)
 * log player name's
 * 1 reward per ip
 * 
 */

package custom.VoteEngine;
 
import java.io.*;
import java.net.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

import com.l2jserver.gameserver.Announcements;
import com.l2jserver.gameserver.ThreadPoolManager;
import com.l2jserver.gameserver.model.L2World;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;

/**
 * @author KsrZ
 * @version 3.0
 */

public class AutoVoteRewardHandler
{
	protected static final Logger _log = Logger.getLogger(AutoVoteRewardHandler.class.getName());
	
	//-----------------------------------------------------------------------------------------------------------------------------
	//-----------------------------------------------------------------------------------------------------------------------------
	// Settings
	
	private final static String _url = "http://l2.hopzone.net/lineage2/details/91037/L2-Orbis";//Add your URL from HopZone here!
	private final int _votesRequiredForReward = 1; //Votes Requiered for next check
	
	//Initial check
	private final int initialCheck = 1; //initial Time to check
	
	//Delay interval:
	private final int delayForCheck = 15; //Delay for next check
	
	//Reward:
	//{ItemID, COUNT},
	private final static int[][] ITEMs =
		{
			{ 4033, 1 }, // Blue Paper
			{ 57, 300000 }, // Adena
		};
	
	//-----------------------------------------------------------------------------------------------------------------------------
	//-----------------------------------------------------------------------------------------------------------------------------
	//-----------------------------------------------------------------------------------------------------------------------------
	//System --> Don't touch anything from here.
	
	private int _lastVoteCount = 0;
	private List<String> already_rewarded;
	
	private AutoVoteRewardHandler()
	{
		_log.info("	|>===================================================================<|");
		_log.info("	|>		 [Auto Vote Reward]: Vote Reward System Initiated.		 <|");
		_log.info("	|>===================================================================<|");
		ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoReward(), initialCheck * 60000, delayForCheck * 60000);
	}
	
	private class AutoReward implements Runnable
	{
		public void run()
		{
			String Player_Rewared = null;
			int votes = getVotes();
			int rewardedPlayers = 0;
			int VGV = (votes - getLastVoteCount()) / _votesRequiredForReward;
			if (votes > -1)
			{
				if ((getLastVoteCount() != 0) && (votes >= (getLastVoteCount() + _votesRequiredForReward)))
				{
					already_rewarded = new ArrayList<String>();
					Collection<L2PcInstance> pls = L2World.getInstance().getAllPlayers().valueCollection();
					
					for (L2PcInstance player : pls)
					{
						if ((player != null) && !player.getClient().isDetached())
						{
							
							for (int[] reward : ITEMs)
							{
								if (checkSingleBox(player))
								{
									if (player.getInventory().validateCapacityByItemId(reward[0]))
									{
										
										player.addItem("reward", reward[0], reward[1]*VGV, player, true);
									
										if(Player_Rewared == null)
											Player_Rewared = " " + player.getName();
										else if(Player_Rewared != null && !Player_Rewared.contains(player.getName()))
										Player_Rewared = Player_Rewared + " | " + player.getName();
									}
								}
							}
							rewardedPlayers++;
							
						}
					}
					setLastVoteCount((int)(votes - ((votes - getLastVoteCount()) - (VGV * _votesRequiredForReward))));
				}
				else if (getLastVoteCount() == 0 || votes < getLastVoteCount())
				{
					setLastVoteCount(votes);
				}
				
				if (VGV == votes / _votesRequiredForReward && Player_Rewared == null) 
				{
					VGV= 0;
					Player_Rewared = " ";
				}
				else if (Player_Rewared == null)
				{
					Player_Rewared = " ";
				}
				
				_log.info("   >------------------> Vote Reward Edited By KsrZ >---------------------------->");
				_log.info("   >| Server Votes: " + votes );
				_log.info("   >| Checking votes evry " + delayForCheck + " minutes.");
				_log.info("   >| " + rewardedPlayers + " rewarded, players: ");
				_log.info("	 (" + Player_Rewared + ")");
				_log.info("   >| Reward X" + VGV + " times.");
				_log.info("   <----------------------------------------------------------------------------<");
				Announcements.getInstance().announceToAll("[HopZone Votes]: " + votes + ".");
				Announcements.getInstance().announceToAll("[HopZone]: Next Reward on " + (getLastVoteCount() + _votesRequiredForReward) + " votes!");
			}
			else
			{
				_log.log(Level.WARNING, "[Auto Vote Reward]: Error retreiving server votes count!");
			}
		}
	}
	
	private static int getVotes()
	{
		InputStreamReader isr = null;
		BufferedReader in = null;
		int votes = -1;
		try
		{
			URLConnection conn = new URL(_url).openConnection();
			conn.addRequestProperty("User-Agent", "Mozilla/4.76");
			isr = new InputStreamReader(conn.getInputStream());
				in = new BufferedReader(isr);
				String inputLine;
				while (((inputLine = in.readLine()) != null) && (votes == -1))
				{
					if (inputLine.contains("Anonymous User Votes"))
					{
						try
						{
							votes = Integer.valueOf(inputLine.split(">")[2].replace("</span", ""));
						}
						catch (Exception e)
						{
						}
					}
				}
				in.close();
		}
		catch (Exception e)
		{
			_log.log(Level.WARNING, "[Auto Vote Reward]: " + e.getMessage(), e);
		}
		
		return votes;
	}
	
	private boolean checkSingleBox(L2PcInstance player)
	{	
		if (player.getClient()!=null && player.getClient().getConnection()!=null && !player.getClient().getConnection().isClosed())
		{
			String playerip = player.getClient().getConnection().getInetAddress().getHostAddress();
			
			if (already_rewarded.contains(playerip))
			{
				return false;
			}
			already_rewarded.add(playerip);
			return true;
		}
		
		return false;
	}
	
	private void setLastVoteCount(int voteCount)
	{
		_lastVoteCount = voteCount;
	}
	
	private int getLastVoteCount()
	{
		return _lastVoteCount;
	}
	
	public static AutoVoteRewardHandler getInstance()
	{
		return SingletonHolder._instance;
	}
	
	@SuppressWarnings("synthetic-access")
	private static class SingletonHolder
	{
		protected static final AutoVoteRewardHandler _instance = new AutoVoteRewardHandler();
	}
	
	public static void main(String[] args)
	{
		AutoVoteRewardHandler.getInstance();
	}
}