Jump to content
  • 0

Vote System Problem


Question

Posted (edited)

Hi there,

 

My vote system wasnt work, so i try to fix it. i find some guides and try this one ; https://goo.gl/JP5Oxf

 

Old codes just error like " toptzone offline or smt " but now gameserver giving error, not working.  How can i fix this ?

 

http://tinypic.com/r/n4w2t5/9

 

L2 Frozen - rev989

Edited by delamis

Recommended Posts

  • 0
Posted

i gonna lost my mind. i did a mistake on voterewardhandler so im tryin to change it with old codes, not working. But when i put there old class folder its working. How could this be possible

  • 0
Posted

i gonna lost my mind. i did a mistake on voterewardhandler so im tryin to change it with old codes, not working. But when i put there old class folder its working. How could this be possible

Cause you fucked up somethink change the get vote method only

  • 0
Posted

This code is default, then i did some mistake on eclipse, so im trying to paste this codes back again but gameserver giving error, not working. But when i put backup autovote.class its goin to work.

This is that error again : http://tinypic.com/r/op1jec/9

But i did paste old default codes back, why its not working ?

package com.l2jfrozen.gameserver.handler;


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


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()
{
if(hopzone){
int hopzone_votes = getHopZoneVotes();


if(hopzone_votes != -1){
_log.info("[Vote reward] Server Hopzone Votes: " + hopzone_votes);
Announcements.getInstance().announceToAll("L2 Elysium votes on hopzone: " + 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().announceToAll("the next reward will be at " + (getHopZoneVoteCount() + PowerPakConfig.VOTES_FOR_REWARD) + " votes !");
//site web
Announcements.getInstance().announceToAll("Vote for us. "+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)
{
if(Config.ENABLE_ALL_EXCEPTIONS)
e.printStackTrace();
}


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


if(topzone_votes != -1){


_log.info("[Vote Reward] Server topzone votes: " + topzone_votes);
Announcements.getInstance().announceToAll("L2 Elysium TOPZONE Votes: " + 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().announceToAll("The next reward will be at " + (getTopZoneVoteCount() + PowerPakConfig.VOTES_FOR_REWARD) + " votes !");
//site web
Announcements.getInstance().announceToAll("Vote for us. "+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("[Vote Reward] Server HOPZONE is offline or something is wrong in link");
Announcements.getInstance().gameAnnounceToAll("[Vote reward] hopzone seems to be offline. The script will check again till the site is on.");
//e.printStackTrace();
}
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 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("[Vote reward] Server TOPZONE is offline or something is wrong in link");
Announcements.getInstance().gameAnnounceToAll("[Vote reward] topzone seems to be offline. Please be patient.");
//e.printStackTrace();
}
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 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();
}
}
  • 0
Posted

NoSuchMethodError (or Class) comes if you replaced the jar while server was still on ; drop entirely the server, replace the jar, launch the server back. It's the only way to fix it, it's a problem of "method address". I never experienced this issue personally so...

  • 0
Posted

NoSuchMethodError (or Class) comes if you replaced the jar while server was still on ; drop entirely the server, replace the jar, launch the server back. It's the only way to fix it, it's a problem of "method address". I never experienced this issue personally so...

 

nope its done when i use old autovote.class, but im compiling it with same default autovote codes. Whats the difference, i cant understand..

  • 0
Posted

yes i did save old .class file before changin codes. its working. Now when i use default codes, still not working. Only that backup working

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

    • You can find some H5 skins shared in old L2 modding Discords, but most of the higher‑quality ones are either paid or come bundled with full client edits. I usually mix in commissioned work and whatever I can patch myself. On a side note, I fund a lot of these commissions by selling off game items through instant sell cs2 skins, which has been a quick way for me to get some cash for projects.
    • There is no need for gRPC in this case, even tho originally it was gRPC based but since we don't need it to be bi-directional, we switched to simple http requests for the web calls and SSEs for the data streamed from the server. There are distributed locks in place to precent race conditions between actions that can happen between multiple web instances and the server.   Local models can also be slow depending on the model, and most external models can actually be faster than local ones if you use Flash 2.5 or something along those lines. I am running on 512GB of Unified Memory on my Mac Studio M3 Ultra so the speed of the local model for a small model is pretty good but I tested it with Gemini too and it works equally as fast and in some cases faster. The way it works is that I'm using pgvector (one of the benefits of moving to Postgres) to search the data and see what the player can see etc and there is some batching of the next few actions for 2-4 seconds for the user until the next LLM request fires. The batching also includes branching on logic so if they for example fall under some HP they will move to kiting instead of attacking or maybe they heal etc.   Everything is authed and permission-based. The server and the backend of the frontend have secure communication between them, either with a symmetric key (not recommended for production) or a certificate (the recommended way), so there is no worry. It's all tied to the account's access level, etc., so nobody can make an action that they normally wouldn't be allowed to do. Even the MCP is token-based, and there are prompt injection protections in place. The MCP is audited, and every mutation needs confirmation. The admin area is only accessible to the admin account anyway so normal users can't access it.  
    • First of all, its great to finally have something meaningful to discuss on this forum  and good job pushing this community forward, even if its mostly dead. I always wondered why, in the last 15 years, no one has properly documented any of the source code (acis mobius) or at least exposed common functionality through something like a rest api, which is straightforward enough for most people to understand and use.   I have some technical questions since im really interested   Regarding real time features like maps and enchanting  are you using technologies like grpc? And what happens when both a logged in player and panel try to enchant the same item at the same time? Do we run into a race condition how do you handle that ?   Regarding  fake player system  external models calls typically take 1-2 seconds to respond, while an local models might take around 200-300ms. During that time a lot can happen in game. So when the plan becomes stale you override it and wait for the new one  meaning the node handles everything in real time and the LLM simply sets the goal asynchronously. Is that the correct understanding ?   Regarding the security aspect a lot can go wrong when exposing crucial server logic to the open web (experimental is good). My real concern is  the mcp in the panel where  a lot can go wrong with bad user input.      Wasn't the game client always the limiting factor for l2j?
    • Migrating a legacy Interlude server to PostgreSQL while adding real observability is basically forcing 2006 MMO engineering to attend a 2026 infrastructure conference at gunpoint. PS: which revision of aCis? PS: 🧻what was broken during this whatever you call it.    AAC Guard beign asked to adapt to this be like: - Creating bugs since early 2018
  • 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..