Jump to content

Question

Posted

Hey guys can anyone help me fix the code in order to make hopzone work too??

 

this is the error i'm getting for HOPZONE ,  [topzone and network are working.]

 

https://postimg.org/image/7h9r3u1nj/

https://postimg.org/image/a0a08du0f/

https://postimg.org/image/bu705n613/

 

So here's the code of the Auto Vote Reward system im currently using:

package com.l2jfrozen.gameserver.handler;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Set;

import org.apache.log4j.Level;
import org.apache.log4j.Logger;

import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.l2jfrozen.Config;
import com.l2jfrozen.gameserver.model.L2World;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfrozen.gameserver.model.entity.Announcements;
import com.l2jfrozen.gameserver.powerpak.PowerPakConfig;
import com.l2jfrozen.gameserver.thread.ThreadPoolManager;

/**
 * @author L2jFrozen <br>
 * <br>
 *         Network working with L2jFrozen AutoVoteReward: <br>
 *         Hopzone -> http://l2.hopzone.net/ <br>
 *         Topzone -> http://l2topzone.com/ <br>
 *         L2network -> http://l2network.eu/ <br>
 */

public class AutoVoteRewardHandler
{
	protected static final Logger LOGGER = Logger.getLogger(AutoVoteRewardHandler.class);
	
	protected List<String> already_rewarded;
	
	private int _l2networkVotesCount = 0;
	private int _hopzoneVotesCount = 0;
	private int _topzoneVotesCount = 0;
	protected List<String> _already_rewarded;
	
	protected static boolean _l2network = false;
	protected static boolean _topzone = false;
	protected static boolean _hopzone = false;
	
	private AutoVoteRewardHandler()
	{
		LOGGER.info("Vote Reward System Initiated.");
		
		if (_hopzone)
		{
			int hopzone_votes = getHopZoneVotes();
			
			if (hopzone_votes == -1)
			{
				hopzone_votes = 0;
			}
			
			setHopZoneVoteCount(hopzone_votes);
		}
		
		if (_l2network)
		{
			int l2network_votes = getL2NetworkVotes();
			
			if (l2network_votes == -1)
			{
				l2network_votes = 0;
			}
			
			setL2NetworkVoteCount(l2network_votes);
		}
		
		if (_topzone)
		{
			int topzone_votes = getTopZoneVotes();
			
			if (topzone_votes == -1)
			{
				topzone_votes = 0;
			}
			
			setTopZoneVoteCount(topzone_votes);
		}
		
		ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoReward(), PowerPakConfig.VOTES_SYSYEM_INITIAL_DELAY, PowerPakConfig.VOTES_SYSYEM_STEP_DELAY);
	}
	
	protected class AutoReward implements Runnable
	{
		@Override
		public void run()
		{
			final int minutes = (PowerPakConfig.VOTES_SYSYEM_STEP_DELAY / 1000) / 60;
			
			if (_hopzone)
			{
				final int hopzone_votes = getHopZoneVotes();
				
				if (hopzone_votes != -1)
				{
					LOGGER.info("[VoteReward] Server HOPZONE Votes: " + hopzone_votes);
					Announcements.getInstance().gameAnnounceToAll("[VoteReward] Actual HOPZONE Votes are " + hopzone_votes + "");
					
					if (hopzone_votes != 0 && hopzone_votes >= getHopZoneVoteCount() + PowerPakConfig.VOTES_FOR_REWARD)
					{
						_already_rewarded = new ArrayList<>();
						
						final Collection<L2PcInstance> pls = L2World.getInstance().getAllPlayers();
						
						Announcements.getInstance().gameAnnounceToAll("[VoteReward] Great Work! Check your inventory for Reward!");
						
						// L2ItemInstance item;
						for (final L2PcInstance player : pls)
						{
							if (player != null && !player.isInOfflineMode() && player.isOnline() == 1)
							{
								if (player._active_boxes <= 1 || (player._active_boxes > 1 && checkSingleBox(player)))
								{
									
									final Set<Integer> items = PowerPakConfig.VOTES_REWARDS_LIST.keySet();
									for (final Integer i : items)
									{
										// item = player.getInventory().getItemByItemId(i);
										
										// TODO: check on maxstack for item
										player.addItem("reward", i, PowerPakConfig.VOTES_REWARDS_LIST.get(i), player, true);
										
									}
									
								}
							}
						}
						setHopZoneVoteCount(hopzone_votes);
					}
					Announcements.getInstance().gameAnnounceToAll("[VoteReward] Next Reward in " + minutes + " minutes at " + (getHopZoneVoteCount() + PowerPakConfig.VOTES_FOR_REWARD) + " Votes!");
					// site web
					
					
				}
				
			}
			
			if (_topzone && _hopzone && PowerPakConfig.VOTES_SYSYEM_STEP_DELAY > 0)
			{
				try
				{
					Thread.sleep(PowerPakConfig.VOTES_SYSYEM_STEP_DELAY / 2);
				}
				catch (final InterruptedException e)
				{
					if (Config.ENABLE_ALL_EXCEPTIONS)
						e.printStackTrace();
				}
			}
			
			if (_topzone)
			{
				final int topzone_votes = getTopZoneVotes();
				
				if (topzone_votes != -1)
				{
					LOGGER.info("[VoteReward] Server TOPZONE Votes: " + topzone_votes);
					Announcements.getInstance().gameAnnounceToAll("[VoteReward] Actual TOPZONE Votes are " + topzone_votes + "");
					
					if (topzone_votes != 0 && topzone_votes >= getTopZoneVoteCount() + PowerPakConfig.VOTES_FOR_REWARD)
					{
						_already_rewarded = new ArrayList<>();
						
						final Collection<L2PcInstance> pls = L2World.getInstance().getAllPlayers();
						
						Announcements.getInstance().gameAnnounceToAll("[VoteReward] Great Work! Check your inventory for Reward!");
						
						// L2ItemInstance item;
						for (final L2PcInstance player : pls)
						{
							if (player != null && !player.isInOfflineMode() && player.isOnline() == 1)
							{
								if (player._active_boxes <= 1 || (player._active_boxes > 1 && checkSingleBox(player)))
								{
									final Set<Integer> items = PowerPakConfig.VOTES_REWARDS_LIST.keySet();
									for (final Integer i : items)
									{
										// item = player.getInventory().getItemByItemId(i);
										
										// TODO: check on maxstack for item
										player.addItem("reward", i, PowerPakConfig.VOTES_REWARDS_LIST.get(i), player, true);
									}
								}
							}
						}
						setTopZoneVoteCount(topzone_votes);
					}
					
					Announcements.getInstance().gameAnnounceToAll("[VoteReward] Next Reward in " + minutes + " minutes at " + (getTopZoneVoteCount() + PowerPakConfig.VOTES_FOR_REWARD) + " Votes!");
					// site web
					
				}
			}
			
			if (_topzone && _hopzone && _l2network && PowerPakConfig.VOTES_SYSYEM_STEP_DELAY > 0)
			{
				try
				{
					Thread.sleep(PowerPakConfig.VOTES_SYSYEM_STEP_DELAY / 2);
				}
				catch (final InterruptedException e)
				{
					if (Config.ENABLE_ALL_EXCEPTIONS)
						e.printStackTrace();
				}
			}
			
			if (_l2network)
			{
				final int l2network_votes = getL2NetworkVotes();
				
				if (l2network_votes != -1)
				{
					LOGGER.info("[VoteReward] Server L2NETWORK Votes: " + l2network_votes);
					Announcements.getInstance().gameAnnounceToAll("[VoteReward] Actual L2Network Votes are " + l2network_votes + "");
					
					if (l2network_votes != 0 && l2network_votes >= getL2NetworkVoteCount() + PowerPakConfig.VOTES_FOR_REWARD)
					{
						already_rewarded = new ArrayList<>();
						
						final Collection<L2PcInstance> pls = L2World.getInstance().getAllPlayers();
						
						Announcements.getInstance().gameAnnounceToAll("[VoteReward] Great Work! Check your inventory for Reward!");
						
						// L2ItemInstance item;
						for (final L2PcInstance player : pls)
						{
							if (player != null && !player.isInOfflineMode() && player.isOnline() == 1)
							{
								if (player._active_boxes <= 1 || (player._active_boxes > 1 && checkSingleBox(player)))
								{
									final Set<Integer> items = PowerPakConfig.VOTES_REWARDS_LIST.keySet();
									for (final Integer i : items)
									{
										// item = player.getInventory().getItemByItemId(i);
										
										// TODO: check on maxstack for item
										player.addItem("reward", i, PowerPakConfig.VOTES_REWARDS_LIST.get(i), player, true);
									}
								}
							}
						}
						setL2NetworkVoteCount(l2network_votes);
					}
					Announcements.getInstance().gameAnnounceToAll("[VoteReward] Next Reward in " + minutes + " minutes at " + (getL2NetworkVoteCount() + PowerPakConfig.VOTES_FOR_REWARD) + " Votes!");
					// site web
					
				}
			}
		}
	}
	
	// Check boxes
	protected boolean checkSingleBox(final L2PcInstance player)
	{
		if (player == null)
			return false;
		
		if (player.getClient() != null && player.getClient().getConnection() != null && !player.getClient().getConnection().isClosed() && player.isOnline() == 1 && !player.isInOfflineMode())
		{
			final String playerip = player.getClient().getConnection().getInetAddress().getHostAddress();
			
			if (_already_rewarded.contains(playerip))
				return false;
			_already_rewarded.add(playerip);
			return true;
		}
		
		// if no connection (maybe offline shop) dnt reward
		return false;
	}
	
	protected int getHopZoneVotes()
	{
		int votes = -1;
		
		try
		{
			final WebClient webClient = new WebClient(BrowserVersion.CHROME);
			webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
			webClient.getOptions().setThrowExceptionOnScriptError(false);
			webClient.getOptions().setPrintContentOnFailingStatusCode(false);
			
			final HtmlPage page = webClient.getPage(PowerPakConfig.VOTES_SITE_HOPZONE_URL);
			
			final String fullPage = page.asXml();
			final int constrainA = fullPage.indexOf("rank anonymous tooltip") + 24;
			String voteSection = fullPage.substring(constrainA);
			final int constrainB = voteSection.indexOf("span") - 2;
			voteSection = voteSection.substring(0, constrainB).trim();
			votes = Integer.parseInt(voteSection);
			
			// Try to free all the freaking resources
			page.cleanUp();
			webClient.getJavaScriptEngine().shutdown();
			webClient.closeAllWindows();
		}
		catch (final Exception e)
		{
			LOGGER.warn("[VoteReward] HOPZONE is offline or something is wrong in link", e);
			Announcements.getInstance().gameAnnounceToAll("[VoteReward] HOPZONE is offline. We will check reward as it will be online again");
		}
		
		return votes;
	}
	
	protected int getTopZoneVotes()
	{
		int votes = -1;
		URL url = null;
		URLConnection con = null;
		InputStream is = null;
		InputStreamReader isr = null;
		BufferedReader in = null;
		
		try
		{
		url = new URL(PowerPakConfig.VOTES_SITE_TOPZONE_URL);
		con = url.openConnection();
		con.addRequestProperty("User-Agent", "L2TopZone");
		is = con.getInputStream();
		isr = new InputStreamReader(is);
		in = new BufferedReader(isr);
		String inputLine;
		while ((inputLine = in.readLine()) != null)
		{
		votes = Integer.valueOf(inputLine);
		break;
		}
		}
		catch (final Exception e)
		{
			LOGGER.warn("[VoteReward] TOPZONE is offline or something is wrong in link");
			Announcements.getInstance().gameAnnounceToAll("[VoteReward] TOPZONE is offline. We will check reward as it will be online again");
			// e.printStackTrace();
		}
		finally
		{
			if (in != null)
				try
				{
					in.close();
				}
				catch (final IOException e1)
				{
					e1.printStackTrace();
				}
			if (isr != null)
				try
				{
					isr.close();
				}
				catch (final IOException e1)
				{
					e1.printStackTrace();
				}
			if (is != null)
				try
				{
					is.close();
				}
				catch (final IOException e1)
				{
					e1.printStackTrace();
				}
		}
		return votes;
	}
	
	protected int getL2NetworkVotes()
	{
		int votes = -1;
		URL url = null;
		URLConnection con = null;
		InputStream is = null;
		InputStreamReader isr = null;
		BufferedReader in = null;
		
		try
		{
			url = new URL(PowerPakConfig.VOTES_SITE_L2NETWORK_URL);
			con = url.openConnection();
			con.addRequestProperty("User-Agent", "L2Network");
			is = con.getInputStream();
			isr = new InputStreamReader(is);
			in = new BufferedReader(isr);
			String inputLine;
			while ((inputLine = in.readLine()) != null)
			{
				if (inputLine.contains("color:#e7ebf2"))
				{
					votes = Integer.valueOf(inputLine.split(">")[2].replace("</b", ""));
					break;
				}
			}
		}
		catch (final Exception e)
		{
			LOGGER.warn("[VoteReward] L2NETWORK is offline or something is wrong in link");
			Announcements.getInstance().gameAnnounceToAll("[VoteReward] L2Network is offline. We will check reward as it will be online again");
			// e.printStackTrace();
		}
		finally
		{
			if (in != null)
				try
				{
					in.close();
				}
				catch (final IOException e1)
				{
					e1.printStackTrace();
				}
			if (isr != null)
				try
				{
					isr.close();
				}
				catch (final IOException e1)
				{
					e1.printStackTrace();
				}
			if (is != null)
				try
				{
					is.close();
				}
				catch (final IOException e1)
				{
					e1.printStackTrace();
				}
		}
		return votes;
	}
	
	protected void setHopZoneVoteCount(final int voteCount)
	{
		_hopzoneVotesCount = voteCount;
	}
	
	protected int getHopZoneVoteCount()
	{
		return _hopzoneVotesCount;
	}
	
	protected void setTopZoneVoteCount(final int voteCount)
	{
		_topzoneVotesCount = voteCount;
	}
	
	protected int getTopZoneVoteCount()
	{
		return _topzoneVotesCount;
	}
	
	protected void setL2NetworkVoteCount(final int voteCount)
	{
		_l2networkVotesCount = voteCount;
	}
	
	protected int getL2NetworkVoteCount()
	{
		return _l2networkVotesCount;
	}
	
	public static AutoVoteRewardHandler getInstance()
	{
		Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF);
		
		if (PowerPakConfig.VOTES_SITE_HOPZONE_URL != null && !PowerPakConfig.VOTES_SITE_HOPZONE_URL.equals(""))
			_hopzone = true;
		
		if (PowerPakConfig.VOTES_SITE_TOPZONE_URL != null && !PowerPakConfig.VOTES_SITE_TOPZONE_URL.equals(""))
			_topzone = true;
		
		if (PowerPakConfig.VOTES_SITE_L2NETWORK_URL != null && !PowerPakConfig.VOTES_SITE_L2NETWORK_URL.equals(""))
			_l2network = true;
		
		if (_topzone || _hopzone || _l2network)
			return SingletonHolder._instance;
		
		return null;
	}
	
	@SuppressWarnings("synthetic-access")
	private static class SingletonHolder
	{
		protected static final AutoVoteRewardHandler _instance = new AutoVoteRewardHandler();
	}
}

13 answers to this question

Recommended Posts

  • 0
Posted (edited)

there are no errors in eclipse and gameserver but im not getting hopzone votes at all

only topzone and network are shown properly.

 

also i had to:

 

change: public int getHopzoneVotes()     to    public int getHopZoneVotes()

 

import:   HttpURLConnection

 

change:  announce    to    Announcements.getInstance().gameAnnounceToAll

 

i think i should change:

 

Config.VOTES_SITE_HOPZONE_URL  to PowerPakConfig.VOTES_SITE_HOPZONE_URL

 

right?

public int getHopZoneVotes()
    {
        int votes = -1;
        try
        {
            final URL obj = new URL(Config.VOTES_SITE_HOPZONE_URL);
            final HttpURLConnection con = (HttpURLConnection) obj.openConnection();
           
            con.addRequestProperty("User-Agent", "L2Hopzone");
            con.setConnectTimeout(5000);
           
            final int responseCode = con.getResponseCode();
            if (responseCode == 200)
            {
                try (BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())))
                {
                    String inputLine;
                    while ((inputLine = in.readLine()) != null)
                    {
                        if (inputLine.contains("<li><span class=\"rank anonymous tooltip\" title"))
                        {
                            votes = Integer.valueOf(inputLine.split(">")[2].replace("</span", ""));
                            break;
                        }
                    }
                }
            }
        }
        catch (Exception e)
        {
            Announcements.getInstance().gameAnnounceToAll("HOPZONE is offline. We will check reward as it will be online again.");
        }
        return votes;
    }
Edited by protoftw
  • 0
Posted


package net.sf.l2j.gameserver.voteengine;

 

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.net.URL;

import java.net.URLConnection;

import java.util.ArrayList;

import java.util.Collection;

import java.util.List;

import java.util.logging.Logger;

 

import net.sf.l2j.commons.concurrent.ThreadPool;

 

import net.sf.l2j.Config;

import net.sf.l2j.gameserver.model.World;

import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;

import net.sf.l2j.gameserver.network.L2GameClient;

import net.sf.l2j.gameserver.network.serverpackets.CreatureSay;

import net.sf.l2j.gameserver.util.Broadcast;

 

 

 

public class AutoVoteReward

{

public static Logger _log = Logger.getLogger(AutoVoteReward.class.getName());

 

private int hopzoneVotesCount = 0;

private int topzoneVotesCount = 0;

private int networkVotesCount = 0;

protected List<String> already_rewarded;

 

protected static boolean topzone = false;

protected static boolean hopzone = false;

protected static boolean network = false;

 

private AutoVoteReward()

{

_log.info("VoteRewardSystem: Initialized.");

if(Config.VOTE_HOPZONE_ENABLED)

{

if(hopzone)

{

int hopzone_votes = getHopZoneVotes();

if(hopzone_votes == -1)

{

hopzone_votes = 0;

}

 

setHopZoneVoteCount(hopzone_votes);

}

}

 

if(Config.VOTE_TOPZONE_ENABLED)

{

if(topzone)

{

int topzone_votes = getTopZoneVotes();

if(topzone_votes == -1)

{

topzone_votes = 0;

}

 

setTopZoneVoteCount(topzone_votes);

}

}

 

if(Config.VOTE_NETWORK_ENABLED)

{

if(network)

{

int network_votes = getNetworkVotes();

if(network_votes == -1)

{

network_votes = 0;

}

 

setNetworkVoteCount(network_votes);

}

}

 

ThreadPool.scheduleAtFixedRate(new AutoReward(), Config.VOTES_SYSTEM_INITIAL_DELAY, Config.VOTES_SYSTEM_STEP_DELAY);

}

 

protected class AutoReward implements Runnable

{

@Override

public void run()

{

if(Config.VOTE_HOPZONE_ENABLED)

{

if(hopzone)

{

int hopzone_votes = getHopZoneVotes();

if(hopzone_votes != -1)

{

_log.info("Hopzone Votes: " + hopzone_votes);

Broadcast.toAllOnlinePlayers(new CreatureSay(0,8,"Hopzone", "Actual Votes are " + hopzone_votes + "..."));

 

if(hopzone_votes != 0 && hopzone_votes >= getHopZoneVoteCount() + Config.VOTES_FOR_REWARD)

{

already_rewarded = new ArrayList<>();

 

Collection<L2PcInstance> pls = World.getInstance().getPlayers();

Broadcast.toAllOnlinePlayers(new CreatureSay(0,8,"Hopzone", "Great Work! Check your inventory for Reward!!"));

 

for(L2PcInstance player : pls)

{

if(player != null)

{

if(checkSingleBox(player))

{

player.addItem("reward", Config.HOPZONE_REWARD_ID, Config.HOPZONE_REWARD_COUNT, player, true);

}

}

}

 

setHopZoneVoteCount(hopzone_votes);

}

Broadcast.toAllOnlinePlayers(new CreatureSay(0,8,"Hopzone", "Next Reward will be on - " + (getHopZoneVoteCount() + Config.VOTES_FOR_REWARD) + " Votes!!"));

Broadcast.toAllOnlinePlayers(new CreatureSay(0,8,"Hopzone", "For Vote Visit our website - http://site.com"));

}

}

}

if (hopzone && Config.VOTES_SYSTEM_STEP_DELAY > 0)

{

try

{

Thread.sleep(Config.VOTES_SYSTEM_STEP_DELAY / 2);

}

catch (final InterruptedException e)

{

e.printStackTrace();

}

}

 

if(Config.VOTE_TOPZONE_ENABLED)

{

if(topzone)

{

int topzone_votes = getTopZoneVotes();

if(topzone_votes != -1)

{

_log.info("TopZone Votes: " + topzone_votes);

Broadcast.toAllOnlinePlayers(new CreatureSay(0,8,"Topzone", "Actual Votes are " + topzone_votes + "..."));

 

if(topzone_votes != 0 && topzone_votes >= getTopZoneVoteCount() + Config.VOTES_FOR_REWARD)

{

already_rewarded = new ArrayList<>();

 

Collection<L2PcInstance> pls = World.getInstance().getPlayers();

Broadcast.toAllOnlinePlayers(new CreatureSay(0,8,"Topzone", "Great Work! Check your inventory for Reward!!"));

 

for(L2PcInstance player : pls)

{

if(player != null)

{

if(checkSingleBox(player))

{

player.addItem("reward", Config.TOPZONE_REWARD_ID, Config.TOPZONE_REWARD_COUNT, player, true);

}

}

}

 

setTopZoneVoteCount(topzone_votes);

}

Broadcast.toAllOnlinePlayers(new CreatureSay(0,8,"Topzone", "Next Reward will be on - " + (getTopZoneVoteCount() + Config.VOTES_FOR_REWARD) + " Votes!!"));

Broadcast.toAllOnlinePlayers(new CreatureSay(0,8,"Topzone", "For Vote Visit our website - http://site.com"));

}

}

}

if (topzone && hopzone && Config.VOTES_SYSTEM_STEP_DELAY > 0)

{

try

{

Thread.sleep(Config.VOTES_SYSTEM_STEP_DELAY / 2);

}

catch (final InterruptedException e)

{

e.printStackTrace();

}

}

if(Config.VOTE_NETWORK_ENABLED)

{

if(network)

{

int network_votes = getNetworkVotes();

if(network_votes != -1)

{

_log.info("Network Votes: " + network_votes);

Broadcast.toAllOnlinePlayers(new CreatureSay(0,8,"Network", "Actual Votes are " + network_votes + "..."));

 

if(network_votes != 0 && network_votes >= getNetworkVoteCount() + Config.VOTES_FOR_REWARD)

{

already_rewarded = new ArrayList<>();

 

Collection<L2PcInstance> pls = World.getInstance().getPlayers();

Broadcast.toAllOnlinePlayers(new CreatureSay(0,8,"Network", "Great Work! Check your inventory for Reward!!"));

 

for(L2PcInstance player : pls)

{

if(player != null)

{

if(checkSingleBox(player))

{

player.addItem("reward", Config.NETWORK_REWARD_ID, Config.NETWORK_REWARD_COUNT, player, true);

}

}

}

 

setNetworkVoteCount(network_votes);

}

Broadcast.toAllOnlinePlayers(new CreatureSay(0,8,"Network", "Next Reward will be on - " + (getNetworkVoteCount() + Config.VOTES_FOR_REWARD) + " Votes!!"));

Broadcast.toAllOnlinePlayers(new CreatureSay(0,8,"Network", "For Vote Visit our website - http://site.com"));

}

}

}

if (topzone && hopzone && network && Config.VOTES_SYSTEM_STEP_DELAY > 0)

{

try

{

Thread.sleep(Config.VOTES_SYSTEM_STEP_DELAY / 2);

}

catch (final InterruptedException e)

{

e.printStackTrace();

}

}

}

}

 

protected boolean checkSingleBox(L2PcInstance player)

{

L2GameClient client = player.getClient();

if(player.getClient()!=null && player.getClient().getConnection()!=null && !client.isDetached() && !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;

}

 

 

 

protected int getHopZoneVotes()

{

try

{

BufferedReader in = new BufferedReader(new InputStreamReader(new URL(Config.VOTES_SITE_HOPZONE_URL).openConnection().getInputStream()));

String[] tokens = in.readLine().split(",");

in.close();

return Integer.parseInt(tokens[1].substring(tokens[1].indexOf(":") + 1, tokens[1].length()));

}

catch (final Exception e)

{

_log.warning("[AutoVoteReward] Server L2Hopzone is offline or something is wrong in link");

Broadcast.toAllOnlinePlayers(new CreatureSay(0,8,"Hopzone", "is offline. We will check reward as it will be online again"));

}

return -1;

}

 

protected int getTopZoneVotes()

{

InputStreamReader isr = null;

BufferedReader br = null;

try

{

URLConnection con = new URL(Config.VOTES_SITE_TOPZONE_URL).openConnection();

con.addRequestProperty("User-Agent", "L2TopZone");

con.setConnectTimeout(5000);

isr = new InputStreamReader(con.getInputStream());

br = new BufferedReader(isr);

 

String line;

while ((line = br.readLine()) != null)

{

 

int votes = Integer.valueOf(line);

return votes;

 

}

 

br.close();

isr.close();

}

catch (Exception e)

{

if (topzone)

System.out.println("TOPZONE is offline. We will check reward as it will be online again.");

Broadcast.toAllOnlinePlayers(new CreatureSay(0,8,"Topzone", "is offline. We will check reward as it will be online again"));

}

return -1;

}

 

protected int getNetworkVotes()

{

InputStreamReader isr = null;

BufferedReader br = null;

try

{

URLConnection con = new URL(Config.VOTES_SITE_NETWORK_URL).openConnection();

con.addRequestProperty("User-Agent", "Mozilla/5.0");

con.setConnectTimeout(5000);

isr = new InputStreamReader(con.getInputStream());

br = new BufferedReader(isr);

 

String line;

while ((line = br.readLine()) != null)

{

if (line.contains("<div class=\"tls-in-sts\"><b style"))

{

int votes = Integer.valueOf(line.split(">")[2].replace("</b", ""));

return votes;

}

}

 

br.close();

isr.close();

}

catch (Exception e)

{

if (network)

System.out.println("NETWORK is offline. We will check reward as it will be online again.");

Broadcast.toAllOnlinePlayers(new CreatureSay(0,8,"Network", "is offline. We will check reward as it will be online again"));

}

return -1;

}

 

protected void setHopZoneVoteCount(int voteCount)

{

hopzoneVotesCount = voteCount;

}

 

protected int getHopZoneVoteCount()

{

return hopzoneVotesCount;

}

 

protected void setTopZoneVoteCount(int voteCount)

{

topzoneVotesCount = voteCount;

}

 

protected int getTopZoneVoteCount()

{

return topzoneVotesCount;

}

 

protected void setNetworkVoteCount(int voteCount)

{

networkVotesCount = voteCount;

}

 

protected int getNetworkVoteCount()

{

return networkVotesCount;

}

 

public static AutoVoteReward getInstance()

{

if(Config.VOTES_SITE_HOPZONE_URL != null && !Config.VOTES_SITE_HOPZONE_URL.equals("")){

hopzone = true;

}

 

if(Config.VOTES_SITE_TOPZONE_URL != null && !Config.VOTES_SITE_TOPZONE_URL.equals("")){

topzone = true;

}

 

if(Config.VOTES_SITE_NETWORK_URL != null && !Config.VOTES_SITE_NETWORK_URL.equals("")){

network = true;

}

 

if(topzone || hopzone || network)

return SingletonHolder._instance;

return null;

}

 

 

@SuppressWarnings("synthetic-access")

private static class SingletonHolder

{

protected static final AutoVoteReward _instance = new AutoVoteReward();

}

 

}

  • 0
Posted (edited)

 

there are no errors in eclipse and gameserver but im not getting hopzone votes at all

only topzone and network are shown properly.

 

also i had to:

 

change: public int getHopzoneVotes()     to    public int getHopZoneVotes()

 

import:   HttpURLConnection

 

change:  announce    to    Announcements.getInstance().gameAnnounceToAll

 

i think i should change:

 

Config.VOTES_SITE_HOPZONE_URL  to PowerPakConfig.VOTES_SITE_HOPZONE_URL

 

right?

public int getHopZoneVotes()
    {
        int votes = -1;
        try
        {
            final URL obj = new URL(Config.VOTES_SITE_HOPZONE_URL);
            final HttpURLConnection con = (HttpURLConnection) obj.openConnection();
           
            con.addRequestProperty("User-Agent", "L2Hopzone");
            con.setConnectTimeout(5000);
           
            final int responseCode = con.getResponseCode();
            if (responseCode == 200)
            {
                try (BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())))
                {
                    String inputLine;
                    while ((inputLine = in.readLine()) != null)
                    {
                        if (inputLine.contains("<li><span class=\"rank anonymous tooltip\" title"))
                        {
                            votes = Integer.valueOf(inputLine.split(">")[2].replace("</span", ""));
                            break;
                        }
                    }
                }
            }
        }
        catch (Exception e)
        {
            Announcements.getInstance().gameAnnounceToAll("HOPZONE is offline. We will check reward as it will be online again.");
        }
        return votes;
    }

If u read the error (3rd pic) it says "parseInt " and "NumberFormatException.

 

Try to "try/catch" /throw the error or just  print that string and see by urself whats going on...

First,try to confirm by urself that u can actually get the number properly.

 

change: public int getHopzoneVotes()     to    public int getHopZoneVotes()

Nice change mate!

Edited by bravetobe
  • 0
Posted

If u read the error (3rd pic) it says "parseInt " and "NumberFormatException.

 

Try to "try/catch" /throw the error or just  print that string and see by urself whats going on...

First,try to confirm by urself that u can actually get the number properly.

 

change: public int getHopzoneVotes()     to    public int getHopZoneVotes()

Nice change mate!

 

hahahahahah cmon...i posted it to let people know what to do....i had to post it ...if someone uses l2jfrozen and see this topic then he will also be able to fix hopzone problem

  • 0
Posted
package net.sf.l2j.gameserver.voteengine;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.logging.Logger;

import net.sf.l2j.commons.concurrent.ThreadPool;

import net.sf.l2j.Config;
import net.sf.l2j.gameserver.model.World;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.network.L2GameClient;
import net.sf.l2j.gameserver.network.serverpackets.CreatureSay;
import net.sf.l2j.gameserver.util.Broadcast;



public class AutoVoteReward
{
    public static Logger _log = Logger.getLogger(AutoVoteReward.class.getName());

    private int hopzoneVotesCount = 0;
    private int topzoneVotesCount = 0;
    private int networkVotesCount = 0;
    protected List<String> already_rewarded;

    protected static boolean topzone = false;
    protected static boolean hopzone = false;
    protected static boolean network = false;

    private AutoVoteReward()
    {
        _log.info("VoteRewardSystem: Initialized.");
        if(Config.VOTE_HOPZONE_ENABLED)
        {
        if(hopzone)
        {
            int hopzone_votes = getHopZoneVotes();
            if(hopzone_votes == -1)
            {
                hopzone_votes = 0;
            }

            setHopZoneVoteCount(hopzone_votes);
        }
        }
        
        if(Config.VOTE_TOPZONE_ENABLED)
        {
           if(topzone)
           {
            int topzone_votes = getTopZoneVotes();
            if(topzone_votes == -1)
            {
                topzone_votes = 0;
            }

            setTopZoneVoteCount(topzone_votes);
           }
        }
        
        if(Config.VOTE_NETWORK_ENABLED)
        {
           if(network)
           {
            int network_votes = getNetworkVotes();
            if(network_votes == -1)
            {
                network_votes = 0;
            }

            setNetworkVoteCount(network_votes);
           }
        }
        
        ThreadPool.scheduleAtFixedRate(new AutoReward(), Config.VOTES_SYSTEM_INITIAL_DELAY, Config.VOTES_SYSTEM_STEP_DELAY);
    }

    protected class AutoReward implements Runnable
    {
        @Override
        public void run()
        {
        if(Config.VOTE_HOPZONE_ENABLED)	
        {
            if(hopzone)
            {
                int hopzone_votes = getHopZoneVotes();
                if(hopzone_votes != -1)
                {
                    _log.info("Hopzone Votes: " + hopzone_votes);
                    Broadcast.toAllOnlinePlayers(new CreatureSay(0,8,"Hopzone", "Actual Votes are " + hopzone_votes + "..."));

                    if(hopzone_votes != 0 && hopzone_votes >= getHopZoneVoteCount() + Config.VOTES_FOR_REWARD)
                    {
                        already_rewarded = new ArrayList<>();

                        Collection<L2PcInstance> pls = World.getInstance().getPlayers();
                        Broadcast.toAllOnlinePlayers(new CreatureSay(0,8,"Hopzone", "Great Work! Check your inventory for Reward!!"));

                        for(L2PcInstance player : pls)
                        {
                            if(player != null)
                            {
                                if(checkSingleBox(player))
                                {
                                    player.addItem("reward", Config.HOPZONE_REWARD_ID, Config.HOPZONE_REWARD_COUNT, player, true);
                                }
                            }
                        }

                        setHopZoneVoteCount(hopzone_votes);
                    }
                    Broadcast.toAllOnlinePlayers(new CreatureSay(0,8,"Hopzone", "Next Reward will be on - " + (getHopZoneVoteCount() + Config.VOTES_FOR_REWARD) + " Votes!!"));
                    Broadcast.toAllOnlinePlayers(new CreatureSay(0,8,"Hopzone", "For Vote Visit our website - http://site.com"));
                }
            }
        }
            if (hopzone && Config.VOTES_SYSTEM_STEP_DELAY > 0)
            {
                try
                {
                    Thread.sleep(Config.VOTES_SYSTEM_STEP_DELAY / 2);
                }
                catch (final InterruptedException e)
                {
                        e.printStackTrace();
                }
            }
            
    if(Config.VOTE_TOPZONE_ENABLED)	
    {
            if(topzone)
            {
                int topzone_votes = getTopZoneVotes();
                if(topzone_votes != -1)
                {
                    _log.info("TopZone Votes: " + topzone_votes);
                    Broadcast.toAllOnlinePlayers(new CreatureSay(0,8,"Topzone", "Actual Votes are " + topzone_votes + "..."));

                    if(topzone_votes != 0 && topzone_votes >= getTopZoneVoteCount() + Config.VOTES_FOR_REWARD)
                    {
                        already_rewarded = new ArrayList<>();

                        Collection<L2PcInstance> pls = World.getInstance().getPlayers();
                        Broadcast.toAllOnlinePlayers(new CreatureSay(0,8,"Topzone", "Great Work! Check your inventory for Reward!!"));

                        for(L2PcInstance player : pls)
                        {
                            if(player != null)
                            {
                                if(checkSingleBox(player))
                                {
                                   player.addItem("reward", Config.TOPZONE_REWARD_ID, Config.TOPZONE_REWARD_COUNT, player, true);
                                }
                            }
                        }

                        setTopZoneVoteCount(topzone_votes);
                    }
                    Broadcast.toAllOnlinePlayers(new CreatureSay(0,8,"Topzone", "Next Reward will be on - " + (getTopZoneVoteCount() + Config.VOTES_FOR_REWARD) + " Votes!!"));
                    Broadcast.toAllOnlinePlayers(new CreatureSay(0,8,"Topzone", "For Vote Visit our website - http://site.com"));
                }
            }
        }
    if (topzone && hopzone && Config.VOTES_SYSTEM_STEP_DELAY > 0)
    {
        try
        {
            Thread.sleep(Config.VOTES_SYSTEM_STEP_DELAY / 2);
        }
        catch (final InterruptedException e)
        {
                e.printStackTrace();
        }
    }
    if(Config.VOTE_NETWORK_ENABLED)	
    {
            if(network)
            {
                int network_votes = getNetworkVotes();
                if(network_votes != -1)
                {
                    _log.info("Network Votes: " + network_votes);
                    Broadcast.toAllOnlinePlayers(new CreatureSay(0,8,"Network", "Actual Votes are " + network_votes + "..."));

                    if(network_votes != 0 && network_votes >= getNetworkVoteCount() + Config.VOTES_FOR_REWARD)
                    {
                        already_rewarded = new ArrayList<>();

                        Collection<L2PcInstance> pls = World.getInstance().getPlayers();
                        Broadcast.toAllOnlinePlayers(new CreatureSay(0,8,"Network", "Great Work! Check your inventory for Reward!!"));

                        for(L2PcInstance player : pls)
                        {
                            if(player != null)
                            {
                                if(checkSingleBox(player))
                                {
                                   player.addItem("reward", Config.NETWORK_REWARD_ID, Config.NETWORK_REWARD_COUNT, player, true);
                                }
                            }
                        }

                        setNetworkVoteCount(network_votes);
                    }
                    Broadcast.toAllOnlinePlayers(new CreatureSay(0,8,"Network", "Next Reward will be on - " + (getNetworkVoteCount() + Config.VOTES_FOR_REWARD) + " Votes!!"));
                    Broadcast.toAllOnlinePlayers(new CreatureSay(0,8,"Network", "For Vote Visit our website - http://site.com"));
                }
            }
        }
    if (topzone && hopzone && network && Config.VOTES_SYSTEM_STEP_DELAY > 0)
    {
        try
        {
            Thread.sleep(Config.VOTES_SYSTEM_STEP_DELAY / 2);
        }
        catch (final InterruptedException e)
        {
                e.printStackTrace();
        }
    }
        }
    }
    
    protected boolean checkSingleBox(L2PcInstance player)
    {
        L2GameClient client = player.getClient();
        if(player.getClient()!=null && player.getClient().getConnection()!=null && !client.isDetached() && !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;
    }
    

    
    protected int getHopZoneVotes()
    {
        try
        {
            BufferedReader in = new BufferedReader(new InputStreamReader(new URL(Config.VOTES_SITE_HOPZONE_URL).openConnection().getInputStream()));
            String[] tokens = in.readLine().split(",");
            in.close();
            return Integer.parseInt(tokens[1].substring(tokens[1].indexOf(":") + 1, tokens[1].length()));
        }
        catch (final Exception e)
        {
                _log.warning("[AutoVoteReward] Server L2Hopzone is offline or something is wrong in link");
                Broadcast.toAllOnlinePlayers(new CreatureSay(0,8,"Hopzone", "is offline. We will check reward as it will be online again"));
        }
        return -1;
    }

    protected int getTopZoneVotes()
    {
        InputStreamReader isr = null;
        BufferedReader br = null;
        try
        {
     	   URLConnection con = new URL(Config.VOTES_SITE_TOPZONE_URL).openConnection();
                 con.addRequestProperty("User-Agent", "L2TopZone");
                 con.setConnectTimeout(5000);
                 isr = new InputStreamReader(con.getInputStream());
                 br = new BufferedReader(isr);

                 String line;
                 while ((line = br.readLine()) != null)
                 {
                         
                                 int votes = Integer.valueOf(line);
                                 return votes;
                       
                 }
                
                 br.close();
                 isr.close();
         }
        catch (Exception e)
        {
            if (topzone)
            	System.out.println("TOPZONE is offline. We will check reward as it will be online again.");
            Broadcast.toAllOnlinePlayers(new CreatureSay(0,8,"Topzone", "is offline. We will check reward as it will be online again"));
        }
        return -1;
    }
    
    protected int getNetworkVotes()
    {
        InputStreamReader isr = null;
        BufferedReader br = null;
        try
        {
                URLConnection con = new URL(Config.VOTES_SITE_NETWORK_URL).openConnection();
                con.addRequestProperty("User-Agent", "Mozilla/5.0");
                con.setConnectTimeout(5000);
                isr = new InputStreamReader(con.getInputStream());
                br = new BufferedReader(isr);
               
                String line;
                while ((line = br.readLine()) != null)
                {
                        if (line.contains("<div class=\"tls-in-sts\"><b style"))
                        {
                                int votes = Integer.valueOf(line.split(">")[2].replace("</b", ""));
                                return votes;
                        }
                }
               
                br.close();
                isr.close();
        }
        catch (Exception e)
        {
            if (network)
            	System.out.println("NETWORK is offline. We will check reward as it will be online again.");
            Broadcast.toAllOnlinePlayers(new CreatureSay(0,8,"Network", "is offline. We will check reward as it will be online again"));
        }
        return -1;
    }

    protected void setHopZoneVoteCount(int voteCount)
    {
        hopzoneVotesCount = voteCount;
    }

    protected  int getHopZoneVoteCount()
    {
        return hopzoneVotesCount;
    }

    protected  void setTopZoneVoteCount(int voteCount)
    {
        topzoneVotesCount = voteCount;
    }

    protected  int getTopZoneVoteCount()
    {
        return topzoneVotesCount;
    }
    
    protected  void setNetworkVoteCount(int voteCount)
    {
        networkVotesCount = voteCount;
    }

    protected  int getNetworkVoteCount()
    {
        return networkVotesCount;
    }

    public static AutoVoteReward getInstance()
    {
        if(Config.VOTES_SITE_HOPZONE_URL != null && !Config.VOTES_SITE_HOPZONE_URL.equals("")){
            hopzone = true;
        }
        
        if(Config.VOTES_SITE_TOPZONE_URL != null && !Config.VOTES_SITE_TOPZONE_URL.equals("")){
            topzone = true;
        }
        
        if(Config.VOTES_SITE_NETWORK_URL != null && !Config.VOTES_SITE_NETWORK_URL.equals("")){
            network = true;
        }
        
        if(topzone || hopzone || network)
            return SingletonHolder._instance;
        return null;
    }
    
    
    @SuppressWarnings("synthetic-access")
    private static class SingletonHolder
    {
        protected static final AutoVoteReward _instance = new AutoVoteReward();
    }

}

 

 i used the hopzone part and at gs i get : hopzone is offline or sth is wrong with the link

i use that link: http://l2.hopzone.net/lineage2/details/93067/L2-DAMAGE/

  • 0
Posted

 

for hopzone is this

http://prnt.sc/b0brdg

 

use this for test if u want

http://api.hopzone.net/lineage2/votes?token=4dkBi72AztjXocda

 

http://api.hopzone.net/lineage2/votes?token=4dkBi72AztjXocda

 

so how am i gonna find that last part after "token" ?

  • 0
Posted

its already done man just change the link in config...

all i am asking is if this link is for every server..

if i want to use it for my server to count my server's votes am i gonna use the link u gave me?

or am i gonna use another link??that's what i am asking

  • 0
Posted

when u add server in hopzone there is button see screnshot i give u 

thank you mate and thanks for the code ...it's working!! :)

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.



×
×
  • Create New...