Hello guys, can you say what the problem is with that? I have updated all the system, and implemented anarchy latest updates+system, but anyway there is an error in gameserver: there was a problem on getting for getting votes from server with rank 78.. Hmm, maybe my configs are bad?: # Vote reward for Topzone. AllowTopzoneVoteReward = True # Vote reward server link. Put your server link instead of this one. TopzoneServerLink = http://l2topzone.com/lineage2/server-info/10815/Line2agenetNetwork.html/ # First page of servers list link. TopzoneFirstPageLink = http://l2topzone.com/lineage2/server-list/top.html/ # Votes for next reward needed. TopzoneVotesDifference = 1 # Rank needed for server to be on first page. TopzoneFirstPageRankNeeded = 78 # Minutes between rewards. # Eg. You put 5 it checks every 5 minutes for reward. TopzoneRewardCheckTime = 1 # 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
I think they are good.. Can you guys help me and suggest what to do?
That's the code:
/*
* 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 java.util.HashMap;
import java.util.Map;
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 Map<String, Integer> playerIps = new HashMap<>();
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);
}
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.announceToAll("Vote reward: Current vote count is "+currentVotes+".");
Announcements.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.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.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.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.announceToAll("Vote reward: Everyone has been rewarded with big reward.");
Announcements.announceToAll("Vote reward: Current vote count is "+currentVotes+".");
Announcements.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.announceToAll("Vote reward: Everyone has been rewarded with small reward.");
Announcements.announceToAll("Vote reward: Current vote count is "+currentVotes+".");
Announcements.announceToAll("Vote reward: We need "+(firstPageVotes-currentVotes)+" vote(s) to get to the first page of topzone for big reward.");
Announcements.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.announceToAll("Vote reward: Current vote count is "+currentVotes+".");
Announcements.announceToAll("Vote reward: We need "+((lastVotes+voteRewardVotesDifference)-currentVotes)+" vote(s) for big reward.");
Announcements.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.announceToAll("Vote reward: Current vote count is "+currentVotes+".");
Announcements.announceToAll("Vote reward: We need "+((lastVotes+voteRewardVotesDifference)-currentVotes)+" vote(s) for small reward.");
Announcements.announceToAll("Vote reward: We need "+(firstPageVotes-currentVotes)+" vote(s) to get to the first page of topzone for big reward.");
Announcements.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;
}
}
Hello!
• I specialize in creating visuals for game projects: I draw art, logos, UI elements, create 2D/3D animations, and design launchers and game-related websites. I work in a unique style tailored to the client's needs.
• I always strive to present something unique and unseen before, to help you stand out from the rest.
• I’d be happy to create awesome work for you to make your projects stronger!
You can check out a more detailed portfolio and starting prices on my website.
My Telegram: @Melvinex
My site: https://mev.studio
Without discouraging your enthusiasm, and having looked at what you went through... I think you asked Cursor to migrate l2j to .net.... on the other hand clearly you don't have experience in programming or in a high concurrency project... since in this kind of issues ORMs don't work... think that if it would work well in l2j we would use Spring Data with hibernate and that kind of things. it's not like that, unfortunately the best way to talk to the database in an efficient way is optimizing queries and interaction with the database.
Don't get discouraged just keep researching!
저는 시스템을 한국어로 번역하고 인터페이스를 다운로드하여 적용했습니다.
/target /attack 명령이 작동하지 않습니다.
actionname.commandname을 변경했는데, 어디에서 변경해야 할까요?
전문가 여러분, 말씀해 주세요.
이걸 해결할 수 없어서 다음 단계로 넘어갈 수가 없어요 ㅠㅠ
명령어 이름이 문제인 것 같아요. 한국어로 번역하면 단축키가 안 먹히고, 영어로 번역하면 /attack 같은 명령어가 안 먹히네요. ㅠㅠ
Question
Blast0
Hello guys, can you say what the problem is with that?
I have updated all the system, and implemented anarchy
latest updates+system, but anyway there is an error in
gameserver: there was a problem on getting for getting votes from server with rank 78..
Hmm, maybe my configs are bad?:
# Vote reward for Topzone.
AllowTopzoneVoteReward = True
# Vote reward server link. Put your server link instead of this one.
TopzoneServerLink = http://l2topzone.com/lineage2/server-info/10815/Line2agenetNetwork.html/
# First page of servers list link.
TopzoneFirstPageLink = http://l2topzone.com/lineage2/server-list/top.html/
# Votes for next reward needed.
TopzoneVotesDifference = 1
# Rank needed for server to be on first page.
TopzoneFirstPageRankNeeded = 78
# Minutes between rewards.
# Eg. You put 5 it checks every 5 minutes for reward.
TopzoneRewardCheckTime = 1
# 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
I think they are good..
Can you guys help me and suggest what to do?
That's the code:
Please can someone help me with that?
8 answers to this question
Recommended Posts