Jump to content
  • 0

Auto Vote Reward System Problem:


Question

Posted

After some hours auto vote reward stop checking about votes any reason?

 

Here is the code:

 

 

package com.l2jfrozen.gameserver.handler;

 
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
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.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
{
@SuppressWarnings("unused")
@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("Server votes on HopZone: " + hopzone_votes);
LOGGER.info("Votes needed for reward: " + (getHopZoneVoteCount() + PowerPakConfig.VOTES_FOR_REWARD) + "");
Announcements.getInstance().PartyAnnounce("Hopzone: Vote count is " + hopzone_votes + ".");
 
if (hopzone_votes != 0 && hopzone_votes >= getHopZoneVoteCount() + PowerPakConfig.VOTES_FOR_REWARD)
{
_already_rewarded = new ArrayList<>();
 
final Collection<L2PcInstance> pls = L2World.getInstance().getAllPlayers();
 
LOGGER.info("HopZone: All players got their reward ");
Announcements.getInstance().PartyAnnounce("Hopzone: All players got their 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);
player.sendMessage("You have been rewarded for your votes, Thanks!");
 
}
 
}
}
}
setHopZoneVoteCount(hopzone_votes);
}
Announcements.getInstance().PartyAnnounce("Hopzone: We need " + (getHopZoneVoteCount() + PowerPakConfig.VOTES_FOR_REWARD) + " Votes to get rewards.");
// site web
Announcements.getInstance().PartyAnnounce("Server Site: " + PowerPakConfig.SERVER_WEB_SITE);
 
 
}
 
}
 
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("Server votes on TopZone: " + topzone_votes);
LOGGER.info("Votes needed for Reward: " + (getTopZoneVoteCount() + PowerPakConfig.VOTES_FOR_REWARD) + "");
Announcements.getInstance().PartyAnnounce("Topzone: Votes count is " + topzone_votes + ".");
 
if (topzone_votes != 0 && topzone_votes >= getTopZoneVoteCount() + PowerPakConfig.VOTES_FOR_REWARD)
{
_already_rewarded = new ArrayList<>();
 
final Collection<L2PcInstance> pls = L2World.getInstance().getAllPlayers();
 
LOGGER.info("Topzone: All players got their reward ");
Announcements.getInstance().PartyAnnounce("Topzone: All players got their 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);
player.sendMessage("You have been rewarded for your votes, Thanks!");
}
}
}
}
setTopZoneVoteCount(topzone_votes);
}
 
Announcements.getInstance().PartyAnnounce("Topzone: We need " + (getTopZoneVoteCount() + PowerPakConfig.VOTES_FOR_REWARD) + " Votes to get rewards.");
// site web
Announcements.getInstance().PartyAnnounce("Server Site: " + PowerPakConfig.SERVER_WEB_SITE);
}
}
 
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("Server votes L2Network Votes: " + l2network_votes);
Announcements.getInstance().PartyAnnounce("L2Network: Votes count is " + 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().PartyAnnounce("L2Netowrk: All players got their 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);
player.sendMessage("You have been rewarded for your votes, Thanks!");
}
}
}
}
setL2NetworkVoteCount(l2network_votes);
}
Announcements.getInstance().PartyAnnounce("L2Network: We need " + (getL2NetworkVoteCount() + PowerPakConfig.VOTES_FOR_REWARD) + " Votes to get rewards.");
// site web
Announcements.getInstance().PartyAnnounce("Server Site: " + PowerPakConfig.SERVER_WEB_SITE);
}
}
}
}
 
// 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;
}
 
public static int getHopZoneVotes()
{
 
int votes = -1;
try
{
final URL obj = new URL(PowerPakConfig.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 line;
           while ((line = in.readLine()) != null)
           {
               if (line.contains("Total Votes"))
               {
                   String inputLine = line.split(">")[2].replace("</span", "");
                   votes = Integer.parseInt(inputLine);
                   break;
}
}
}
}
}
catch (Exception e)
{
e.printStackTrace();
System.out.println("HOPZONE is offline. We will check reward as it will be online again.");
}
return votes;
}
 
public static int getTopZoneVotes()
{
int votes = -1;
try
{
final URL obj = new URL(PowerPakConfig.VOTES_SITE_TOPZONE_URL);
final HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.addRequestProperty("User-Agent", "L2TopZone");
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)
{
votes = Integer.valueOf(inputLine);
break;
}
}
}
}
catch (Exception e)
{
e.printStackTrace();
System.out.println("TOPZONE is offline. We will check reward as it will be online again.");
}
 
return votes;
}
 
public static int getL2NetworkVotes()
{
int votes = -1;
try
{
final URL obj = new URL(PowerPakConfig.VOTES_SITE_L2NETWORK_URL);
final HttpURLConnection con = (HttpURLConnection) obj.openConnection();
 
con.addRequestProperty("User-Agent", "L2Network");
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("color:#e7ebf2"))
{
votes = Integer.valueOf(inputLine.split(">")[2].replace("</b", ""));
break;
}
}
}
}
}
catch (Exception e)
{
e.printStackTrace();
System.out.println("NetWork is offline. We will check reward as it will be online again.");
}
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();
}
}

 

Recommended Posts

  • 0
Posted (edited)

 

So i will go on any line on the code and add this?

 

Not any line, the debug has to have a meaning right? Otherwise it's just a useless print at your console.

Just add multiple prints at multiple different locations and of course set different messages.

 

 

lol'd at the pros "judging"

lol'd at how every single post of yours is a troll post. Says a lot about your character.

Edited by Versus
  • 0
Posted (edited)

Not any line, the debug has to have a meaning right? Otherwise it's just a useless print at your console.

Just add multiple prints at multiple different locations and of course set different messages.

 

 

lol'd at how every single post of yours is a troll post. Says a lot about your character.

 

says alot about how much I appreciate the forum and its members "lol'd"

Edited by xxdem
  • 0
Posted

says alot about how much I appreciate the forum and its members "lol'd"

There's a simple solution for that, stop posting, or even better stop logging in..

  • 0
Posted

There's a simple solution for that, stop posting, or even better stop logging in..

without defending anyone:

 

OP comes with an old leeched code asking for help.People discussed about it and suggested several things.

After his latest post about debugging and adding prints after every other line,this is a NO NO anymore.

That dude might open a server and become an owner of a BALANCED server.The community has to stop encourage that kind of stupids from keep going.

Just imagine if most of the servers had experienced admins/devs with a decent background.Both admins/community would have fun and they wouldnt complain around

for a "dead game"/"stupid community"/"1 week servers only for donations".

 

Even if someone has "decent knowledge"* in Java,that doesnt mean he is able to jump into l2j developing and he is ready to make his own BALANCED server.

 

*Decent i mean knowing the basics/basics in designing and analysis of algorithms/his code has decent flow not spaghetti-readable code

  • 0
Posted

I need someone to test individual and global vote reward for l2jfrozen made for l2topzone . Here are the files https://bitbucket.org/dmsj/l2topzonevotesystem-frozen

 

For any other questions please visit this topic  https://l2topzone.com/forum/l2-server-support-and-problems/9/vote-reward-system-for-l2jacis-and-l2jfrozen/26737/

  • 0
Posted

without defending anyone:

 

OP comes with an old leeched code asking for help.People discussed about it and suggested several things.

After his latest post about debugging and adding prints after every other line,this is a NO NO anymore.

That dude might open a server and become an owner of a BALANCED server.The community has to stop encourage that kind of stupids from keep going.

Just imagine if most of the servers had experienced admins/devs with a decent background.Both admins/community would have fun and they wouldnt complain around

for a "dead game"/"stupid community"/"1 week servers only for donations".

 

Even if someone has "decent knowledge"* in Java,that doesnt mean he is able to jump into l2j developing and he is ready to make his own BALANCED server.

 

*Decent i mean knowing the basics/basics in designing and analysis of algorithms/his code has decent flow not spaghetti-readable code

I completely agree with you, although this is simply a help section, what the user will do with the information he gathered here, is completely up to him and if he doesn't realize that opening a server at his current state will be a complete failure, that's again up to him, if he wishes to waste time/money who are we to tell him otherwise..

 

Maybe you didn't notice, but xdem ironically commented on the people who "judged" this code, so my response was towards his post.

  • 0
Posted

i do it , no error freeze it again. its like someone write //setoff and it just stops. we have no ERROR maybe its wrong with the new vote systems because this vote reward is old? But its work perfect until it freezes.

  • 0
Posted

i do it , no error freeze it again. its like someone write //setoff and it just stops. we have no ERROR maybe its wrong with the new vote systems because this vote reward is old? But its work perfect until it freezes.

No, the fact that's its old is completely irrelevant with the fact that it works and then suddenly stops.

 

Alright, what were the results from debugging the AutoReward class? When it "froze" did it keep printing the debugs you added? Or they stopped as well? Specifically any debug you added above line 97.

  • 0
Posted

still cant find a solution..any new idea?

So you tested all the suggestions in this topic and nothing worked (i assume), where is the response to my post? You can't fix something if you don't know what's broken, you NEED to debug it, or move on like sweets told you to.

  • 0
Posted

Don't you see that he can't debug it? He is waiting for ready code.. :P

Yeah but coming here asking for more suggestions when he didn't even bother doing the things we originally suggested, it's just a waste of time for all of us at this point :P

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