Jump to content
  • 0

Question

Posted

Hello all i have a problem with my vote system ... it works only for hopzone and topzone not ...2months ago worked fine then stopped working 

/*
 * 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 2, 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, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 * 02111-1307, USA.
 *
 * http://www.gnu.org/copyleft/gpl.html
 */
package com.l2jfrozen.gameserver.handler;

import com.l2jfrozen.gameserver.powerpak.PowerPakConfig;
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.thread.ThreadPoolManager;

import java.util.logging.Logger;
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;

public class AutoVoteRewardHandler {
	protected static final Logger _log = Logger.getLogger(AutoVoteRewardHandler.class.getName());

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

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

    private AutoVoteRewardHandler() {
        _log.info("Vote Reward System Initiated.");

        if (hopzone) {
            int hopzone_votes = getHopZoneVotes();

            if (hopzone_votes == -1) {
                hopzone_votes = 0;
            }

            setHopZoneVoteCount(hopzone_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() {
            int minutes = (PowerPakConfig.VOTES_SYSYEM_STEP_DELAY / 1000) / 60;

            if (hopzone) {
                int hopzone_votes = getHopZoneVotes();

                if (hopzone_votes != -1) {
                    _log.info("[AutoVoteReward] Server HOPZONE Votes: " + hopzone_votes);
                    Announcements.getInstance().gameAnnounceToAll("[AutoVoteReward] Actual HOPZONE Votes are " + hopzone_votes + "...");

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

                        Collection<L2PcInstance> pls = L2World.getInstance().getAllPlayers();

                        Announcements.getInstance().gameAnnounceToAll("[AutoVoteReward] Great Work! Check your inventory for Reward!!");

                        //L2ItemInstance item;
                        for (L2PcInstance player : pls) {
                            if (player != null && !player.isOffline() && player.isOnline() == 1) {
                                if (player._active_boxes <= 1 || (player._active_boxes > 1 && checkSingleBox(player))) {

                                    Set<Integer> items = PowerPakConfig.VOTES_REWARDS_LIST.keySet();
                                    for (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("[AutoVoteReward] Next HOPZONE Reward in " + minutes + " minutes at " + (getHopZoneVoteCount() + PowerPakConfig.VOTES_FOR_REWARD) + " Votes!!");
                    //site web
                    Announcements.getInstance().gameAnnounceToAll("[SiteWeb] " + PowerPakConfig.SERVER_WEB_SITE);

                }

            }

            if (topzone && hopzone && PowerPakConfig.VOTES_SYSYEM_STEP_DELAY > 0) {
                try {
                    Thread.sleep(PowerPakConfig.VOTES_SYSYEM_STEP_DELAY / 2);
                } catch (InterruptedException e) {
                    _log.info("");
                }
            }

            if (topzone) {
                int topzone_votes = getTopZoneVotes();

                if (topzone_votes != -1) {

                    _log.info("[AutoVoteReward] Server TOPZONE Votes: " + topzone_votes);
                    Announcements.getInstance().gameAnnounceToAll("[AutoVoteReward] Actual TOPZONE Votes are " + topzone_votes + "...");

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

                        Collection<L2PcInstance> pls = L2World.getInstance().getAllPlayers();

                        Announcements.getInstance().gameAnnounceToAll("[AutoVoteReward] Great Work! Check your inventory for Reward!!");

                        //L2ItemInstance item;
                        for (L2PcInstance player : pls) {
                            if (player != null && !player.isOffline() && player.isOnline() == 1) {
                                if (player._active_boxes <= 1 || (player._active_boxes > 1 && checkSingleBox(player))) {

                                    Set<Integer> items = PowerPakConfig.VOTES_REWARDS_LIST.keySet();
                                    for (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("[AutoVoteReward] Next TOPZONE Reward in " + minutes + " minutes at " + (getTopZoneVoteCount() + PowerPakConfig.VOTES_FOR_REWARD) + " Votes!!");
                    //site web
                    Announcements.getInstance().gameAnnounceToAll("[SiteWeb] " + PowerPakConfig.SERVER_WEB_SITE);

                }


            }

        }
    }

    protected boolean checkSingleBox(L2PcInstance player) {

        if (player.getClient() != null && player.getClient().getConnection() != null && !player.getClient().getConnection().isClosed() && !player.isOffline()) {

            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;
        URL url = null;
        URLConnection con = null;
        InputStream is = null;
        InputStreamReader isr = null;
        BufferedReader in = null;
        try {
            url = new URL(PowerPakConfig.VOTES_SITE_HOPZONE_URL);
            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("rank anonymous tooltip")) {
                    votes = Integer.valueOf(inputLine.split(">")[2].replace("</span", ""));
                    break;
                }
            }
        } catch (Exception e) {
            _log.info("[AutoVoteReward] Server HOPZONE is offline or something is wrong in link");
            Announcements.getInstance().gameAnnounceToAll("[AutoVoteReward] HOPZONE is offline. We will check reward as it will be online again");
            //e.printStackTrace();
        } finally {
            if (in != null) {
                try {
                    in.close();
                } catch (IOException e1) {
                    _log.info("unhandled exception");
                }
            }
            if (isr != null) {
                try {
                    isr.close();
                } catch (IOException e1) {
                    _log.info("unhandled exception");
                }
            }
            if (is != null) {
                try {
                    is.close();
                } catch (IOException e1) {
                    _log.info("unhandled exception");
                }
            }

        }
        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", "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 = inputLine;

                    votes = Integer.valueOf(votesLine.split(">")[3].replace("</div", ""));
                    break;
                }
            }
        } catch (Exception e) {
            _log.info("[AutoVoteReward] Server TOPZONE is offline or something is wrong in link");
            Announcements.getInstance().gameAnnounceToAll("[AutoVoteReward] TOPZONE is offline. We will check reward as it will be online again");
            //e.printStackTrace();
        } finally {
            if (in != null) {
                try {
                    in.close();
                } catch (IOException e1) {
                    _log.info("unhandled exception");
                }
            }
            if (isr != null) {
                try {
                    isr.close();
                } catch (IOException e1) {
                    _log.info("unhandled exception");
                }
            }
            if (is != null) {
                try {
                    is.close();
                } catch (IOException e1) {
                    _log.info("unhandled exception");
                }
            }
        }
        return votes;
    }

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

    protected int getHopZoneVoteCount() {
        return hopzoneVotesCount;
    }

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

    protected int getTopZoneVoteCount() {
        return topzoneVotesCount;
    }

    public static AutoVoteRewardHandler getInstance() {
        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 (topzone || hopzone) {
            return SingletonHolder._instance;
        }
        return null;
    }

    @SuppressWarnings("synthetic-access")
    private static class SingletonHolder {
        protected static final AutoVoteRewardHandler _instance = new AutoVoteRewardHandler();
    }
}

6 answers to this question

Recommended Posts

  • 0
Posted

Change this:
Code: [select]
 

Code: [select]

String votesLine = in.readLine();
To this:
 

Code: [select]

String votesLine = inputLine;


Find this line:

Code: [select]

votes = Integer.valueOf(votesLine.split(">")[5].replace("</font", ""));
and replace with this:

Code: [select]

votes = Integer.valueOf(votesLine.split(">")[3].replace("</div", ""));

  • 0
Posted

Change this:

Code: [select]

 

Code: [select]

String votesLine = in.readLine();

To this:

 

Code: [select]

String votesLine = inputLine;

 

 

Find this line:

Code: [select]

votes = Integer.valueOf(votesLine.split(">")[5].replace("</font", ""));

and replace with this:

Code: [select]

votes = Integer.valueOf(votesLine.split(">")[3].replace("</div", ""));

 

 

 

Code: [select]

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

or something like this and replace with this:

 

Code: [select]

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

 

the 1st i've already done it i'll try the other

  • 0
Posted

Pease help! This is my code. But i got always Votes = 0. What can I change to work?

/*
 * Copyright (C) 2013 AdminsProL2
 * 
 * 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 com.l2jserver.gameserver.instancemanager.votereward;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
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.Config;
import com.l2jserver.L2DatabaseFactory;
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 ???
 * @reworked fissban
 */

public class VoteRewardTopzone
{
	static Logger _log = Logger.getLogger(VoteRewardTopzone.class.getName());
	
	static final int initialCheck = Config.VOTE_SYSTEM_START_TIME * 1000;
	static final int delayForCheck = Config.VOTE_SYSTEM_CHECK_TIME * 1000;
	int votesneed;
	
	static List<String> _ips = new ArrayList<>();
	static List<String> _accounts = new ArrayList<>();
	
	static int lastVoteCount = 0;
	
	VoteRewardTopzone()
	{
		if (Config.VOTE_SYSTEM_DATABASE_SAVE)
		{
			load();
		}
		
		ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoReward(), initialCheck, delayForCheck);
	}
	
	public class AutoReward implements Runnable
	{
		@Override
		public void run()
		{
			int votes = getVotes();
			_log.info("VoteReward: Current Votes Topzone: " + votes);
			
			if (votes >= (getLastVoteCount() + Config.VOTE_SYSTEM_COUNT))
			{
				Collection<L2PcInstance> pls = L2World.getInstance().getAllPlayers().valueCollection();
				{
					for (L2PcInstance onlinePlayer : pls)
					{
						if (onlinePlayer.isOnline() && !onlinePlayer.getClient().isDetached() && !_accounts.contains(onlinePlayer.getAccountName()) && !_ips.contains(onlinePlayer.getClient().getConnection().getInetAddress().getHostAddress()))
						{
							String[] parase = Config.VOTE_SYSTEM_ITEM_ID_TOPZONE.split(",");
							String[] parase3 = Config.VOTE_SYSTEM_ITEM_COUNT_TOPZONE.split(",");
							
							for (int o = 0; o < parase.length; o++)
							{
								int parase2 = Integer.parseInt(parase[o]);
								int parase4 = Integer.parseInt(parase3[o]);
								
								onlinePlayer.addItem("vote_reward", parase2, parase4, onlinePlayer, true);
							}
							
							_ips.add(onlinePlayer.getClient().getConnection().getInetAddress().getHostAddress());
							_accounts.add(onlinePlayer.getAccountName());
						}
					}
				}
				
				_log.info("VoteReward Topzone: All players has been rewared!");
				
				Announcements.getInstance().announceToAll("be rewarded!");
				Announcements.getInstance().announceToAll("for Topzone vote!");
				setLastVoteCount(getLastVoteCount() + Config.VOTE_SYSTEM_COUNT);
			}
			
			if (getLastVoteCount() == 0)
			{
				setLastVoteCount(votes);
			}
			
			else if ((((getLastVoteCount() + Config.VOTE_SYSTEM_COUNT) - votes) > Config.VOTE_SYSTEM_COUNT) || (votes > (getLastVoteCount() + Config.VOTE_SYSTEM_COUNT)))
			{
				setLastVoteCount(votes);
			}
			
			votesneed = (getLastVoteCount() + Config.VOTE_SYSTEM_COUNT) - votes;
			
			if (votesneed == 0)
			{
				votesneed = Config.VOTE_SYSTEM_COUNT;
			}
			
			Announcements.getInstance().announceToAll("== VoteReward ==");
			Announcements.getInstance().announceToAll("Current votes " + votes + ".");
			Announcements.getInstance().announceToAll("Missing " + votesneed + " votes in Topzone!");
			
			_ips.clear();
			_accounts.clear();
		}
	}
	
	public int getVotes()
	{
		URL url = null;
		InputStreamReader isr = null;
		BufferedReader in = null;
		try
		{
			url = new URL(Config.VOTE_SYSTEM_PAGE_TOPZONE);
			URLConnection con = url.openConnection();
			con.addRequestProperty("User-Agent", "L2TopZone");
			isr = new InputStreamReader(con.getInputStream());
			in = new BufferedReader(isr);
			String inputLine;
			
			while ((inputLine = in.readLine()) != null)
			{
				if (inputLine.contains("<tr><td><div align=\"center\"><b><font style=\"font-size:14px;color:#018BC1;\">"))
				{
					  i = inputLine.replace("<tr><td><div align=\"center\"><b><font style=\"font-size:14px;color:#018BC1;\">", "");
					i = i.replace("</font></b></div></td></tr>", "");
					i = i.trim();
					int o = Integer.parseInt(i);
					return Integer.valueOf(o);
				}
			}
		}
		catch (IOException e)
		{
			Announcements.getInstance().announceToAll("Topzone is offline");
			_log.warning("AutoVoteRewardHandler: " + e);
		}
		return 0;
	}
	
	public void setLastVoteCount(int voteCount)
	{
		lastVoteCount = voteCount;
	}
	
	public int getLastVoteCount()
	{
		return lastVoteCount;
	}
	
	public void load()
	{
		int votes = 0;
		
		try (Connection con = L2DatabaseFactory.getInstance().getConnection())
		{
			PreparedStatement statement = con.prepareStatement("SELECT vote FROM votetopzone LIMIT 1");// DB votetopzone
			ResultSet rset = statement.executeQuery();
			
			while (rset.next())
			{
				votes = rset.getInt("vote");
			}
			rset.close();
			statement.close();
		}
		catch (Exception e)
		{
			_log.log(Level.WARNING, "data error on vote Topzone: ", e);
		}
		
		setLastVoteCount(votes);
	}
	
	public void save()
	{
		try (Connection con = L2DatabaseFactory.getInstance().getConnection())
		{
			PreparedStatement statement = con.prepareStatement("UPDATE votetopzone SET vote = ? WHERE id=1");
			statement.setInt(1, getLastVoteCount());
			statement.execute();
			statement.close();
		}
		catch (Exception e)
		{
			_log.log(Level.WARNING, "data error on vote Topzone: ", e);
		}
	}
	
	public static VoteRewardTopzone getInstance()
	{
		return SingletonHolder._instance;
	}
	
	static class SingletonHolder
	{
		protected static final VoteRewardTopzone _instance = new VoteRewardTopzone();
	}
}

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