Jump to content
  • 0

Auto Vote Reward System Problem:


xNostradamus

Question

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

 

Link to comment
Share on other sites

Recommended Posts

  • 0

 

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
Link to comment
Share on other sites

  • 0

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
Link to comment
Share on other sites

  • 0

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

Link to comment
Share on other sites

  • 0

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

Link to comment
Share on other sites

  • 0

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/

Link to comment
Share on other sites

  • 0

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.

Link to comment
Share on other sites

  • 0

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.

Link to comment
Share on other sites

  • 0

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.

Link to comment
Share on other sites

  • 0

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.

Link to comment
Share on other sites

  • 0

still cant find a solution..any new idea?

Did you try our vote reward system ?  https://l2topzone.com/forum/l2-server-support-and-problems/9/vote-reward-system-for-l2jacis-and-l2jfrozen/26737/

Link to comment
Share on other sites

  • 0

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

Link to comment
Share on other sites

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.




  • Posts

    • to my store : https://topestore.mysellix.io/fr/ 2015-2022 Aged Discord Account 2015 Discord Account : 50.99 $ 2016 Discord Account : 10$ 2017 Discord Account :3.99 $ 2018 Discord Account : 3.50$ 2019 Discord Account : 2.70 $ 2020 Discord Account :1.50$ 2021 Discord Account :0.99$ 2022 Discord Account :0.70$ Warranty :Lifetime Payment Methods : Crypto/ PayPal Contact Me On Discord Or Telegram Discord : @ultrasstore11 Telegram : https://t.me/ultrastore11 Whatsapp ; +212614849119
    • This is my first and last topic created on a Lineage Forum, because if there's one thing that causes headaches for a lot of people, it's the critical error, that's why I decided to share it...   I'm creating a server again and before starting configurations I started collecting dozens of customs, without realizing my system folder had 950MB of files, so I started to enter the game, every 1 to 2 hours my client was reaching the maximum limit of virtual memory of the game due to the absurd amount of customs inside the system folder, reaching the maximum limit of 2047MB virtual ram, automatically we get critical, regardless of the error that appears on your screen, "THE WORDS ARE IRRELEVANT, unless it is a critical error before the ram memory limit reaches its limit", if you are seeing "2047 MB", it means that the game's virtual memory has reached its limit, and this memory is not configurable due to the game being created on 32-bit architecture, so I significantly reduced the amount of customs within the system from 950MB to 625MB, so my client started to reach the maximum memory limit every 10 to 12h, a huge progress, but my goal was at least 24h before reaching the virtual memory limit (playing frantically), so I reduced the system's custom files from 625MB to 267MB, the result was a first virtual memory limit critical error appearing after 41h.   My client is H5, the only types of customs I added to the game were focused only on equipment, one of the main causes were these skins and cloaks, they consume a huge amount of MB's within the "system", the problem is not adding customs to the client, the problem is adapting a custom and adding it inside the system folder, the system folder was not created with the intention of storing a huge amount of files.   Adding customs to the system folder means significantly reducing the time your client can remain open before reaching the virtual ram limit and make no mistake, there are hundreds of different critical errors with a small summary of the cause of the error, but if the critical table shows 2047MB of RAM, the problem is only 1. Example: I can see 3, 5, 9 critical error with different messages, but if this table is showing 2047MB ram, the reason was the virtual memory limit, an important detail is that this 2047MB ram is not a "fixed message or information from your computer", this 2047MB only appear when the cause is the virtual ram limit, it means that when you get a critical error with random numbers of ram memory appearing, such as 358MB ram, 715MB ram, it means that the cause of this error has no connection with ram virtual memory.
    • DISCORD : utchiha_market telegram : https://t.me/utchiha_market SELLIX STORE : https://utchihamkt.mysellix.io/ Join our server for more products  https://discord.gg/hoodservices https://campsite.bio/utchihaamkt
  • Topics

×
×
  • Create New...