Jump to content
  • 0

Vote Reward Problem Fix dont work!


Question

Posted

Γεια σας παιδια εχω θεμα με το "VOTE REWARD" απο topzone. Δοκιμασα τα φιξ που προτινουν καποιοι αλλα το δικο μου δεν εχει καν αυτες τις γραμμες του κωδικα εχω αυτο εδω....

======================================
confings
===================================

# Vote reward for Topzone.
AllowTopzoneVoteReward = True
# Vote reward server link.
TopzoneServerLink = http://l2topzone.com/lineage2/server-info/6296/L2ToxiccomProMMORPG.html/
# First page of servers list link.
TopzoneFirstPageLink = http://l2topzone.com/lineage2/server-list/top.html/
# Votes for next reward needed.
TopzoneVotesDifference = 5
# Rank needed for server to be on first page.
TopzoneFirstPageRankNeeded = 15
# Minutes between rewards.
# Eg. You put 5 it checks every 5 minutes for reward.
TopzoneRewardCheckTime = 5
# 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

================================================
Config.java
=================================================
    
    public static boolean ALLOW_TOPZONE_VOTE_REWARD;
    public static String TOPZONE_SERVER_LINK;
    public static String TOPZONE_FIRST_PAGE_LINK;
    public static int TOPZONE_VOTES_DIFFERENCE;
    public static int TOPZONE_FIRST_PAGE_RANK_NEEDED;
    public static int TOPZONE_REWARD_CHECK_TIME;
public static Map<Integer, Integer> TOPZONE_SMALL_REWARD = new FastMap<Integer, Integer>();
public static Map<Integer, Integer> TOPZONE_BIG_REWARD = new FastMap<Integer, Integer>();
public static int TOPZONE_DUALBOXES_ALLOWED;
    public static boolean ALLOW_TOPZONE_GAME_SERVER_REPORT;






                ALLOW_TOPZONE_VOTE_REWARD = Boolean.parseBoolean(elcardia.getProperty("AllowTopzoneVoteReward", "false"));
                TOPZONE_SERVER_LINK = elcardia.getProperty("TopzoneServerLink", "http://l2.topzone.net/lineage2/details/74078/L2World-Servers/");
                TOPZONE_FIRST_PAGE_LINK = elcardia.getProperty("TopzoneFirstPageLink", "http://l2.topzone.net/lineage2/");
                TOPZONE_VOTES_DIFFERENCE = Integer.parseInt(elcardia.getProperty("TopzoneVotesDifference", "5"));
               	TOPZONE_FIRST_PAGE_RANK_NEEDED = Integer.parseInt(elcardia.getProperty("TopzoneFirstPageRankNeeded", "15"));
               	TOPZONE_REWARD_CHECK_TIME = Integer.parseInt(elcardia.getProperty("TopzoneRewardCheckTime", "5"));
                String TOPZONE_SMALL_REWARD_VALUE = elcardia.getProperty("TopzoneSmallReward", "57,100000000;");
                String[] topzone_small_reward_splitted_1 = TOPZONE_SMALL_REWARD_VALUE.split(";");
                for (String i : topzone_small_reward_splitted_1)
                {
                	String[] topzone_small_reward_splitted_2 = i.split(",");
                	TOPZONE_SMALL_REWARD.put(Integer.parseInt(topzone_small_reward_splitted_2[0]), Integer.parseInt(topzone_small_reward_splitted_2[1]));
                }
                String TOPZONE_BIG_REWARD_VALUE = elcardia.getProperty("TopzoneBigReward", "3470,1;");
                String[] topzone_big_reward_splitted_1 = TOPZONE_BIG_REWARD_VALUE.split(";");
                for (String i : topzone_big_reward_splitted_1)
                {
                	String[] topzone_big_reward_splitted_2 = i.split(",");
                	TOPZONE_BIG_REWARD.put(Integer.parseInt(topzone_big_reward_splitted_2[0]), Integer.parseInt(topzone_big_reward_splitted_2[1]));
                }
                TOPZONE_DUALBOXES_ALLOWED = Integer.parseInt(elcardia.getProperty("TopzoneDualboxesAllowed", "1"));
                ALLOW_TOPZONE_GAME_SERVER_REPORT = Boolean.parseBoolean(elcardia.getProperty("AllowTopzoneGameServerReport", "false"));






===================================================
GameServer.java
===================================================

	if (Config.ALLOW_TOPZONE_VOTE_REWARD)
	{
		VoteRewardTopzone.getInstance();
	}




==================================================================
VoteRewardTopzone.java
==================================================================
/*
* 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 javolution.util.FastMap;

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 FastMap<String, Integer> playerIps = new FastMap<String, Integer>();

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);
}

private 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.getInstance().announceToAll("Vote reward: Current vote count is "+currentVotes+".");
		Announcements.getInstance().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.getInstance().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.getInstance().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.getInstance().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.getInstance().announceToAll("Vote reward: Everyone has been rewarded with big reward.");
			Announcements.getInstance().announceToAll("Vote reward: Current vote count is "+currentVotes+".");
			Announcements.getInstance().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.getInstance().announceToAll("Vote reward: Everyone has been rewarded with small reward.");
			Announcements.getInstance().announceToAll("Vote reward: Current vote count is "+currentVotes+".");
			Announcements.getInstance().announceToAll("Vote reward: We need "+(firstPageVotes-currentVotes)+" vote(s) to get to the first page of topzone for big reward.");
			Announcements.getInstance().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.getInstance().announceToAll("Vote reward: Current vote count is "+currentVotes+".");
			Announcements.getInstance().announceToAll("Vote reward: We need "+((lastVotes+voteRewardVotesDifference)-currentVotes)+" vote(s) for big reward.");
			Announcements.getInstance().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.getInstance().announceToAll("Vote reward: Current vote count is "+currentVotes+".");
			Announcements.getInstance().announceToAll("Vote reward: We need "+((lastVotes+voteRewardVotesDifference)-currentVotes)+" vote(s) for small reward.");
			Announcements.getInstance().announceToAll("Vote reward: We need "+(firstPageVotes-currentVotes)+" vote(s) to get to the first page of topzone for big reward.");
			Announcements.getInstance().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;
}
}

1 answer to this question

Recommended Posts

  • 0
Posted (edited)

Αυτο εδω :

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();
        }

καντω ετσι:

private static int getVotes()

{
int votes = -1;
URL url = null;
URLConnection con = null;
InputStream is = null;
InputStreamReader isr = null;
BufferedReader in = null;
try
{
url = new URL(Config.TOPZONE_SERVER_LINK);
con = url.openConnection();    
con.addRequestProperty("User-Agent", "Mozilla/4.76");
is = con.getInputStream();
isr = new InputStreamReader(is);    
in = new BufferedReader(isr);
String inputLine;
while ((inputLine = in.readLine()) != null)
{
if (inputLine.contains("Votes:"))
{
String votesLine = in.readLine() ;
 
votes = Integer.valueOf(votesLine.split(">")[5].replace("</font", ""));
break;
}
}
}
catch (Exception e)
{
Εδω αν θες βαλε ενα δικο σου σφαλμα πχ announce,log console οτι θες...
}
finally
{
if(in!=null)
try
{
in.close();
}
catch(IOException e1)
{
e1.printStackTrace();
}
if(isr!=null)
try
{
isr.close();
}
catch(IOException e1)
{
e1.printStackTrace();
}
if(is!=null)
try
{
is.close();
}
catch(IOException e1)
{
e1.printStackTrace();
}
}
return -1;
}
Edited by Kwstakis

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

    • Buying Epics/ S Gear on Elixir Whisper me
    • Hello everyone, I am looking to purchase a Premium Lineage 2 High Five server pack. My main requirements are: Stability & Quality (Most Important): The pack must be highly stable with no system errors or major bugs. Custom Features: It must include ready-to-use custom features such as a fully functional Community Board, custom NPC Buffers, and Custom Item Sellers (GM Shops), etc. Complete Files: It is absolutely necessary that the full source code (src) and complete Geodata are included. If you are selling a pack that meets these criteria, please send me a PM or leave a reply with the following information: Brief details and key features of the pack Price Test server availability (I would like to test it before buying) Thank you!
    • L2jmobiusDevClon — Classic Interlude p110 Emulator L2jmobiusDevClon is actively developing a Lineage 2 Classic Interlude p110 emulator. Development is done in free time with a strong focus on: • Stability • Authentic Classic mechanics • Clean and optimized architecture The project is based on the L2jMobius source and is continuously evolving and improving. System Requirements: • Java 25 • MariaDB 12.0 • Client p110 Current Revision: 3.0 Development Status: Active Distribution: Free Official Website: https://www.l2jmobiusdevclon.pp.ua Discord Server: https://discord.gg/23a9S8g4Bn Contact: Telegram — @L2jmobiusDevClon Also available via private messages Project Goals: ✔ Improved stability ✔ Maximum Classic accuracy ✔ Core optimization We are currently looking for: • Testers • Server administrators Suggestions, bug reports, and ideas are always welcome. Contact us via: ✔ Discord ✔ Telegram ✔ Private Messages
    • i guess loading only the effects that are needed it will maybe work, like removing from reshade shader folder the ones that are not needed, depends on the pc also i guess, also limithing the game at 30fps can be better maybe
  • 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..