Jump to content

Question

Posted

Hello guys, can you say what the problem is with that?
I have updated all the system, and implemented anarchy
latest updates+system, but anyway there is an error in 
gameserver: there was a problem on getting  for getting votes from server with rank 78..
Hmm, maybe my configs are bad?:
# Vote reward for Topzone.
AllowTopzoneVoteReward = True
# Vote reward server link. Put your server link instead of this one.
TopzoneServerLink = http://l2topzone.com/lineage2/server-info/10815/Line2agenetNetwork.html/
# First page of servers list link.
TopzoneFirstPageLink = http://l2topzone.com/lineage2/server-list/top.html/
# Votes for next reward needed.
TopzoneVotesDifference = 1
# Rank needed for server to be on first page.
TopzoneFirstPageRankNeeded = 78
# Minutes between rewards.
# Eg. You put 5 it checks every 5 minutes for reward.
TopzoneRewardCheckTime = 1
# Small reward(s).
TopzoneSmallReward = 57,100000000;
# Big reward(s).
TopzoneBigReward = 3470,1;
# Hopzone reward max dual boxes reward.
# For example if you put 2 and someone has 3 boxes open 2 will be rewarded.
TopzoneDuaboxesAllowed = 1
# Game server console report.
# If set to true, game server console will get a report of
# current vote count, votes needed for next reward and votes needed for first page.
AllowTopzoneGameServerReport = True

I think they are good..
Can you guys help me and suggest what to do?

That's the code:


 

/*
 * This program is free software: you can redistribute it and/or modify it under
 * the terms of the GNU General Public License as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option) any later
 * version.
 * 
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
 * details.
 * 
 * You should have received a copy of the GNU General Public License along with
 * this program. If not, see <http://www.gnu.org/licenses/>.
 */
package net.sf.l2j.gameserver.model.entity;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

import net.sf.l2j.Config;
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 Anarchy
 *
 */
public class VoteRewardTopzone
{
	// Configurations.
	private static String topzoneUrl = Config.TOPZONE_SERVER_LINK;
	private static String page1Url = Config.TOPZONE_FIRST_PAGE_LINK;
	private static int voteRewardVotesDifference = Config.TOPZONE_VOTES_DIFFERENCE;
	private static int firstPageRankNeeded = Config.TOPZONE_FIRST_PAGE_RANK_NEEDED;
	private static int checkTime = 60*1000*Config.TOPZONE_REWARD_CHECK_TIME;
	
	// Don't-touch variables.
	private static int lastVotes = 0;
	private static Map<String, Integer> playerIps = new HashMap<>();
	
	public static void updateConfigurations()
	{
		topzoneUrl = Config.TOPZONE_SERVER_LINK;
		page1Url = Config.TOPZONE_FIRST_PAGE_LINK;
		voteRewardVotesDifference = Config.TOPZONE_VOTES_DIFFERENCE;
		firstPageRankNeeded = Config.TOPZONE_FIRST_PAGE_RANK_NEEDED;
		checkTime = 60*1000*Config.TOPZONE_REWARD_CHECK_TIME;
	}
	
	public static void getInstance()
	{
		System.out.println("Vote reward system initialized.");
		ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new Runnable()
		{
			@Override
			public void run()
			{
				if (Config.ALLOW_TOPZONE_VOTE_REWARD)
				{
					reward();
				}
				else
				{
					return;
				}
			}
		}, checkTime/2, checkTime);
	}
	
	static void reward()
	{
		int firstPageVotes = getFirstPageRankVotes();
		int currentVotes = getVotes();
		
		if (firstPageVotes == -1 || currentVotes == -1)
		{
			if (firstPageVotes == -1)
			{
				System.out.println("There was a problem on getting votes from server with rank "+firstPageRankNeeded+".");
			}
			if (currentVotes == -1)
			{
				System.out.println("There was a problem on getting server votes.");
			}
			
			return;
		}
		
		if (lastVotes == 0)
		{
			lastVotes = currentVotes;
			Announcements.announceToAll("Vote reward: Current vote count is "+currentVotes+".");
			Announcements.announceToAll("Vote reward: We need "+((lastVotes+voteRewardVotesDifference)-currentVotes)+" vote(s) for reward.");
			if (Config.ALLOW_TOPZONE_GAME_SERVER_REPORT)
			{
				System.out.println("Server votes on topzone: "+currentVotes);
				System.out.println("Votes needed for reward: "+((lastVotes+voteRewardVotesDifference)-currentVotes));
			}
			if (firstPageVotes-lastVotes <= 0)
			{
				Announcements.announceToAll("Vote reward: We are in the first page of topzone, so the reward will be big.");
				if (Config.ALLOW_TOPZONE_GAME_SERVER_REPORT)
				{
					System.out.println("Server is on the first page of topzone.");
				}
			}
			else
			{
				Announcements.announceToAll("Vote reward: We need "+(firstPageVotes-lastVotes)+" vote(s) to get to the first page of topzone for big reward.");
				if (Config.ALLOW_TOPZONE_GAME_SERVER_REPORT)
				{
					System.out.println("Server votes needed for first page: "+(firstPageVotes-lastVotes));
				}
			}
			Announcements.announceToAll("Vote reward: Type .menu to see what the big and what the small reward is.");
			return;
		}
		
		if (currentVotes >= lastVotes+voteRewardVotesDifference)
		{
			Collection<L2PcInstance> pls = L2World.getInstance().getAllPlayers().values();
			if (firstPageVotes-currentVotes <= 0)
			{
				if (Config.ALLOW_TOPZONE_GAME_SERVER_REPORT)
				{
					System.out.println("Server votes on topzone: "+currentVotes);
					System.out.println("Server is on the first page of topzone.");
					System.out.println("Votes needed for next reward: "+((currentVotes+voteRewardVotesDifference)-currentVotes));
				}
				Announcements.announceToAll("Vote reward: Everyone has been rewarded with big reward.");
				Announcements.announceToAll("Vote reward: Current vote count is "+currentVotes+".");
				Announcements.announceToAll("Vote reward: Type .menu to see what the big and what the small reward is.");
				for (L2PcInstance p : pls)
				{
					boolean canReward = false;
					String pIp = p.getClient().getConnection().getInetAddress().getHostAddress();
					if (playerIps.containsKey(pIp))
					{
						int count = playerIps.get(pIp);
						if (count < Config.TOPZONE_DUALBOXES_ALLOWED)
						{
							playerIps.remove(pIp);
							playerIps.put(pIp, count+1);
							canReward = true;
						}
					}
					else
					{
						canReward = true;
						playerIps.put(pIp, 1);
					}
					if (canReward)
					{
						for (int i : Config.TOPZONE_BIG_REWARD.keySet())
						{
							p.addItem("Vote reward.", i, Config.TOPZONE_BIG_REWARD.get(i), p, true);
						}
					}
					else
					{
						p.sendMessage("Already "+Config.TOPZONE_DUALBOXES_ALLOWED+" character(s) of your ip have been rewarded, so this character won't be rewarded.");
					}
				}
				playerIps.clear();
			}
			else
			{
				if (Config.ALLOW_TOPZONE_GAME_SERVER_REPORT)
				{
					System.out.println("Server votes on topzone: "+currentVotes);
					System.out.println("Server votes needed for first page: "+(firstPageVotes-lastVotes));
					System.out.println("Votes needed for next reward: "+((currentVotes+voteRewardVotesDifference)-currentVotes));
				}
				Announcements.announceToAll("Vote reward: Everyone has been rewarded with small reward.");
				Announcements.announceToAll("Vote reward: Current vote count is "+currentVotes+".");
				Announcements.announceToAll("Vote reward: We need "+(firstPageVotes-currentVotes)+" vote(s) to get to the first page of topzone for big reward.");
				Announcements.announceToAll("Vote reward: Type .menu to see what the big and what the small reward is.");
				for (L2PcInstance p : pls)
				{
					boolean canReward = false;
					String pIp = p.getClient().getConnection().getInetAddress().getHostAddress();
					if (playerIps.containsKey(pIp))
					{
						int count = playerIps.get(pIp);
						if (count < Config.TOPZONE_DUALBOXES_ALLOWED)
						{
							playerIps.remove(pIp);
							playerIps.put(pIp, count+1);
							canReward = true;
						}
					}
					else
					{
						canReward = true;
						playerIps.put(pIp, 1);
					}
					if (canReward)
					{
						for (int i : Config.TOPZONE_SMALL_REWARD.keySet())
						{
							p.addItem("Vote reward.", i, Config.TOPZONE_SMALL_REWARD.get(i), p, true);
						}
					}
					else
					{
						p.sendMessage("Already "+Config.TOPZONE_DUALBOXES_ALLOWED+" character(s) of your ip have been rewarded, so this character won't be rewarded.");
					}
				}
				playerIps.clear();
			}
			
			lastVotes = currentVotes;
		}
		else
		{
			if (firstPageVotes-currentVotes <= 0)
			{
				if (Config.ALLOW_TOPZONE_GAME_SERVER_REPORT)
				{
					System.out.println("Server votes on topzone: "+currentVotes);
					System.out.println("Server is on the first page of topzone.");
					System.out.println("Votes needed for next reward: "+((lastVotes+voteRewardVotesDifference)-currentVotes));
				}
				Announcements.announceToAll("Vote reward: Current vote count is "+currentVotes+".");
				Announcements.announceToAll("Vote reward: We need "+((lastVotes+voteRewardVotesDifference)-currentVotes)+" vote(s) for big reward.");
				Announcements.announceToAll("Vote reward: Type .menu to see what the big and what the small reward is.");
			}
			else
			{
				if (Config.ALLOW_TOPZONE_GAME_SERVER_REPORT)
				{
					System.out.println("Server votes on topzone: "+currentVotes);
					System.out.println("Server votes needed for first page: "+(firstPageVotes-lastVotes));
					System.out.println("Votes needed for next reward: "+((lastVotes+voteRewardVotesDifference)-currentVotes));
				}

				Announcements.announceToAll("Vote reward: Current vote count is "+currentVotes+".");
				Announcements.announceToAll("Vote reward: We need "+((lastVotes+voteRewardVotesDifference)-currentVotes)+" vote(s) for small reward.");
				Announcements.announceToAll("Vote reward: We need "+(firstPageVotes-currentVotes)+" vote(s) to get to the first page of topzone for big reward.");
				Announcements.announceToAll("Vote reward: Type .menu to see what the big and what the small reward is.");
			}
		}
	}
	
	private static int getFirstPageRankVotes()
	{
		InputStreamReader isr = null;
		BufferedReader br = null;
		
		try
		{
			URLConnection con = new URL(page1Url).openConnection();
			 con.addRequestProperty("User-Agent", "Mozilla/4.76");
			isr = new InputStreamReader(con.getInputStream());
			br = new BufferedReader(isr);
			
			String line;
			int i = 0;
			while ((line = br.readLine()) != null)
			{
				if (line.contains("<td><div align=\"center\">"+firstPageRankNeeded+"</div></td>"))
				{
					i++;
				}
				if (line.contains("<td><div align=\"center\">") && i == 1)
				{
					i++;
				}
				if (line.contains("<td><div align=\"center\">") && i == 2)
				{
					i = 0;
					int votes = Integer.valueOf(line.split(">")[2].replace("</div", ""));
					return votes;
				}
			}
			
			br.close();
			isr.close();
		}
		catch (Exception e)
		{
			System.out.println(e);
			System.out.println("Error while getting server vote count.");
		}
		
		return -1;
	}
	
	private static int getVotes()
	{
		InputStreamReader isr = null;
		BufferedReader br = null;
		
		try
		{
			URLConnection con = new URL(topzoneUrl).openConnection();
			 con.addRequestProperty("User-Agent", "Mozilla/4.76");
			isr = new InputStreamReader(con.getInputStream());
			br = new BufferedReader(isr);
			
			boolean got = false;
			
			String line;
			while ((line = br.readLine()) != null)
			{
				if (line.contains("<tr><td><div align=\"center\"><b><font style=\"font-size:14px;color:#018BC1;\"") && !got)
				{
					got = true;
					int votes = Integer.valueOf(line.split("=\"font-size:14px;color:#018BC1;\">")[1].replace("</font></b></div></td></tr>", ""));
					return votes;
				}
			}
			
			br.close();
			isr.close();
		}
		catch (Exception e)
		{
			System.out.println(e);
			System.out.println("Error while getting server vote count.");
		}
		
		return -1;
	}
}

Please can someone help me with that?

 

8 answers to this question

Recommended Posts

  • 0
Posted

Replace this line:

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

With this:

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

 


        try
        {
            URL url = new URL(Config.VOTE_LINK_TOPZONE);
            URLConnection 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)
            {
                if (inputLine.contains("Votes"))
                {
                    String votesLine = inputLine ;
                    
                    votes = Integer.valueOf(votesLine.split(">")[3].replace("</div", ""));
                    break;
                }
            }
        }

 

Dont even dare to say "it's not working" since I checked and it is working ;)

  • 0
Posted (edited)

im not sure: try:
 

 

            {
                if (line.contains("<td><div align=\"center\">"+firstPageRankNeeded+"</div></td>"))
                {
                    i++;
                }
                if (line.contains("<td><div align=\"center\">") && i == 1)
                {
                    i++;
                }
                if (line.contains("<td><div align=\"center\">") && i == 2)
                {
                    i = 0;
                    int votes = Integer.valueOf(line.split(">")[2].replace("</div", ""));
                    return votes;
                }
            }

replace with
 

 

            {
                if (line.contains("<div class=\"slr\">"+firstPageRankNeeded+"<div class=\"votes\">Votes:<br><span>"))
                {
                    int votes = Integer.valueOf(line.split("<div class=\"slr\">"+firstPageRankNeeded+"<div class=\"votes\">Votes:<br><span>")[1].replace("</span></div></div>", ""));
                    return votes;
                }
            }

*IM NOT SURE*!

Edited by Chucky™
  • 0
Posted

Sweet I'm not saying that is not working, but as I said before, I'm not good at working with java..
Thx, Chuncky for reply, I'll test in a momment.

Guest
This topic is now closed to further replies.


  • Posts

    • https://vpslab.cloud/ Premium DDoS Protection now included with every server.
    • # Changelog - Public Updates   This changelog tracks user-facing updates and improvements to Top.MaxCheaters.com.   ---   ## [1.2.0] - 2026-01-XX   ### ⚡ Performance Improvements - **Faster Page Loads**: Implemented intelligent caching system that makes pages load significantly faster - **My Servers Page**: Now loads instantly when revisiting (no more loading delays) - **Main Page**: Server listings and filters now load faster on repeat visits - **Premium Ads**: Pricing information loads instantly - **Overall Performance**: Site now loads 60-80% faster with reduced server load   ### 🔄 Improvements - Pages now remember recent data, reducing wait times when navigating - Automatic cache refresh ensures you always see up-to-date information - Better user experience with instant page loads on repeat visits   ---   ## [1.1.1] - 2026-01-XX   ### 🐛 Bug Fixes - **VIP Server Filter**: Fixed "VIP L2 Servers" filter to correctly show all premium tier servers (VIP, Gold VIP, and Pinned) - **Ad Pricing Display**: Fixed ad pricing on Premium Ads page to automatically update when changed in admin panel   ### 🔄 Improvements - Ad pricing now syncs automatically across all pages - More accurate server filtering by tier   ---   ## [1.1.0] - 2026-01-XX   ### ✨ New Features - **Complete Chronicle List**: All chronicle options are now available in server forms and filters, including the latest Lineage 2 chronicles - **Improved Chronicle Display**: Server rows now show cleaner, shorter chronicle names for better readability   ### 🐛 Bug Fixes - **Chronicle Filter**: Fixed issue where "Infinite Odyssey" chronicle filter was not working correctly - **Missing Chronicles**: Fixed missing chronicle options in server creation and editing forms   ### 🔄 Improvements - Chronicle filters and dropdowns now stay in sync with the latest available chronicles - Better chronicle name formatting in server listings for improved visual clarity   ---   ## [1.0.0] - Initial Release   ### Features - 🎮 Server listings with multiple tiers (Normal, VIP, Gold VIP, Pinned) - 📊 Click tracking and server statistics - 🌍 Multi-language support (English, Spanish, Portuguese, Greek, Russian) - 💳 Payment system for premium server features - 🔐 Secure authentication system - 👑 Admin panel for server management - 📱 Fully responsive design for all devices - 🔍 Advanced filtering system (by chronicle, rate, server type, date) - 📅 Server opening date tracking - 🎯 Two viewing modes: By Date and By Votes (coming soon for all users)   ---   ## About This Changelog   This changelog focuses on updates that directly impact the user experience. Internal development changes and technical improvements are not included here.   For questions or feedback, please contact support.v
    • Now Acc Registration open. Create your account and get ready 🙂
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..