package com.l2jserver.gameserver.instancemanager;
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;
public class AutoVoteRewardManager
{
private static Logger _log = Logger.getLogger(AutoVoteRewardManager.class.getName());
private static final String http = "http://l2.hopzone.net/lineage2/moreinfo/L2-NeXtGeN/92153.html";
private static final int initialCheck = 1 * 1000;
private static final int delayForCheck = 400 * 400;
private static final int[] itemId = { 33340, 33399 };
private static final int[] itemCount = { 2, 5 };
private static final int votesRequiredForReward = 10;
private static List<String> _ips = new ArrayList<String>();
private static int lastVoteCount = 0;
private AutoVoteRewardManager()
{
_log.info("AutoVoteRewardManager: Vote reward system initiated.");
if (Config.L2JMOD_VOTE_ENGINE_SAVE)
load();
ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoReward(), initialCheck, delayForCheck);
}
private class AutoReward implements Runnable
{
public void run()
{
int votes = getVotes();
_log.info("AutoVoteRewardManager: We now have " + votes + "/"+(getLastVoteCount()+votesRequiredForReward)+" vote(s). Next check in "+(delayForCheck/1000)+" sec.");
Announcements.getInstance().announceToAll("Visit [url=http://www.l2nextgen.com]www.l2nextgen.com[/url] and vote server on HopZone for Reward");
if (votes >= getLastVoteCount() + votesRequiredForReward)
{
Collection<L2PcInstance> pls = L2World.getInstance().getAllPlayers().values();
{
for (L2PcInstance onlinePlayer : pls)
{
if (onlinePlayer.isOnline() && !onlinePlayer.getClient().isDetached() && !_ips.contains(onlinePlayer.getClient().getConnection().getInetAddress().getHostAddress()))
{
for (int i = 0; i < itemId.length; i++)
{
onlinePlayer.addItem("vote_reward", itemId[i], itemCount[i], onlinePlayer, true);
}
_ips.add(onlinePlayer.getClient().getConnection().getInetAddress().getHostAddress());
}
}
}
_log.info("AutoVoteRewardManager: Reward for votes now!");
Announcements.getInstance().announceToAll("Reward for players! Thanks for Vote.");
setLastVoteCount(getLastVoteCount() + votesRequiredForReward);
}
if (getLastVoteCount() == 0)
{
setLastVoteCount(votes);
}
else if ((getLastVoteCount() + votesRequiredForReward) - votes > votesRequiredForReward || votes > (getLastVoteCount() + votesRequiredForReward))
{
setLastVoteCount(votes);
}
Announcements.getInstance().announceToAll("We have " + votes + " vote(s). Next reward on " + (getLastVoteCount()+votesRequiredForReward) + " vote.");
_ips.clear();
}
}
public static int getVotes()
{
URL url = null;
InputStreamReader isr = null;
BufferedReader in = null;
try
{
url = new URL(http);
URLConnection con = url.openConnection();
con.addRequestProperty("User-Agent", "Mozilla/4.76");
isr = new InputStreamReader(con.getInputStream());
in = new BufferedReader(isr);
String inputLine;
while ((inputLine = in.readLine()) != null)
{
// for top-zone
//if (inputLine.contains("<tr><td><div align=\"center\"><b><font style=\"font-size:14px;color:#018BC1;\""))
//{
//return Integer.valueOf(inputLine.split(">")[5].replace("</font", ""));
//}
//for hopzone
if (inputLine.contains("moreinfo_total_rank_text"))
return Integer.valueOf(inputLine.split(">")[2].replace("</div", ""));
}
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
try
{
in.close();
}
catch (IOException e)
{}
try
{
isr.close();
}
catch (IOException e)
{}
}
return 0;
}
private void setLastVoteCount(int voteCount)
{
lastVoteCount = voteCount;
}
private int getLastVoteCount()
{
return lastVoteCount;
}
private void load()
{
int votes = 0;
Connection con = null;
try
{
con = L2DatabaseFactory.getInstance().getConnection();
PreparedStatement statement = con.prepareStatement("SELECT vote FROM votes LIMIT 1");
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: ", e);
}
finally
{
L2DatabaseFactory.close(con);
}
setLastVoteCount(votes);
}
public void save()
{
Connection con = null;
try
{
con = L2DatabaseFactory.getInstance().getConnection();
PreparedStatement statement = con.prepareStatement("UPDATE votes SET vote = ? WHERE id=1");
statement.setInt(1, getLastVoteCount());
statement.execute();
statement.close();
}
catch (Exception e)
{
_log.log(Level.WARNING, "data error on vote: ", e);
}
finally
{
L2DatabaseFactory.close(con);
}
}
public static AutoVoteRewardManager getInstance()
{
return SingletonHolder._instance;
}
@SuppressWarnings("synthetic-access")
private static class SingletonHolder
{
protected static final AutoVoteRewardManager _instance = new AutoVoteRewardManager();
}
}
And:
AutoVoteRewardHandler.java
/* 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.l2jserver.gameserver.model;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import com.l2jserver.Config;
import com.l2jserver.gameserver.Announcements;
import com.l2jserver.gameserver.GmListTable;
import com.l2jserver.gameserver.ThreadPoolManager;
import com.l2jserver.gameserver.model.L2ItemInstance;
import com.l2jserver.gameserver.model.L2World;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
/**
*
* @author GoldenBoy
*
*/
public class AutoVoteRewardHandler
{
private int lastVoteCount = 0;
private int initialCheck = 60 * 1000;
private int delayForCheck = Config.DELAY_FOR_NEXT_REWARD * 1000;
private AutoVoteRewardHandler()
{
if (Config.VOTE_REWARD_ENABLE)
{
System.out.println("========= "+Config.SERVER_NAME_FOR_VOTES+" =========");
System.out.println("Vote Reward System activated");
System.out.println("========= "+Config.SERVER_NAME_FOR_VOTES+" =========");
ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoReward(), initialCheck, delayForCheck);
}
}
private class AutoReward implements Runnable
{
public void run()
{
if (Config.VOTE_REWARD_ENABLE)
{
System.out.println("");
System.out.println("==================");
System.out.println("Vote Count Check.");
if (Config.VOTE_REWARD1_ID == 0 || Config.VOTE_REWARD1_COUNT == 0 || Config.VOTE_REWARD2_ID == 0 || Config.VOTE_REWARD2_COUNT == 0)
{
GmListTable.broadcastMessageToGMs("The rewards aren't Identified. Please take a look.");
return;
}
int newVoteCount = getVotes(Config.VOTE_HTML_PATCH);
System.out.println("getLastVoteCount:"+getLastVoteCount());
System.out.println("newVoteCount:"+newVoteCount);
System.out.println("==================");
System.out.println("");
if (newVoteCount != 0 && getLastVoteCount() != 0 && newVoteCount >= getLastVoteCount() + Config.VOTES_FOR_REWARD)
{
for (L2PcInstance player : L2World.getInstance().getAllPlayers().values())
{
if (player != null)
{
L2ItemInstance item1 = player.getInventory().getItemByItemId(Config.VOTE_REWARD1_ID);
if (item1 == null || item1.getCount() < Config.MAX_REWARD_COUNT_FOR_STACK_ITEM1)
{
if (player.getAppearance().getNameColor() != Config.OFFLINE_NAME_COLOR)
{
player.addItem("reward", Config.VOTE_REWARD1_ID, Config.VOTE_REWARD1_COUNT, player, true);
}
}
else
{
player.sendMessage("[" + Config.SERVER_NAME_FOR_VOTES+"]" + "You have reached our limit for vote reward items!!");
}
L2ItemInstance item2 = player.getInventory().getItemByItemId(Config.VOTE_REWARD2_ID);
if (item2 == null || item2.getCount() < Config.MAX_REWARD_COUNT_FOR_STACK_ITEM2)
{
if (player.getAppearance().getNameColor() != Config.OFFLINE_NAME_COLOR)
{
player.addItem("reward", Config.VOTE_REWARD2_ID, Config.VOTE_REWARD2_COUNT, player, true);
}
}
else
{
player.sendMessage("[" + Config.SERVER_NAME_FOR_VOTES+"]" + "You have reached our limit for vote reward items!!");
}
}
}
setLastVoteCount(newVoteCount);
}
Announcements.getInstance().announceToAll("[" + Config.SERVER_NAME_FOR_VOTES+"]" + "Our Current vote count is: " + newVoteCount);
Announcements.getInstance().announceToAll("[" + Config.SERVER_NAME_FOR_VOTES+"]" + "The next reward will be given at " + (getLastVoteCount()+ Config.VOTES_FOR_REWARD) + " Votes.");
if (getLastVoteCount() == 0)
{
setLastVoteCount(newVoteCount);
}
}
}
}
private int getVotes(String urlString)
{
InputStreamReader isr = null;
BufferedReader in = null;
try
{
URL url = new URL(urlString);
URLConnection con = (URLConnection) url.openConnection();
con.addRequestProperty("User-Agent", "Mozilla/4.76");
isr = new InputStreamReader(con.getInputStream());
//isr = new InputStreamReader(url.openStream());
in = new BufferedReader(isr);
String inputLine;
int voteCount = 0;
while ((inputLine = in.readLine()) != null)
{
if (inputLine.contains("moreinfo_total_rank_text"))
{
int Sub = 12;
switch (inputLine.length())
{
case 116:
Sub = 13;
break;
case 117:
Sub = 14;
break;
case 118:
Sub = 15;
break;
case 119:
Sub = 16;
break;
}
voteCount = Integer.parseInt(inputLine.substring(inputLine.length() - Sub, inputLine.length() - 11));
break;
}
}
return voteCount;
}
catch (IOException e)
{
e.printStackTrace();
return 0;
}
finally
{
try
{
in.close();
}
catch (IOException e)
{
}
try
{
isr.close();
}
catch (IOException e)
{
}
}
}
/**
* @return
*/
private void setLastVoteCount(int voteCount)
{
lastVoteCount = voteCount;
}
private int getLastVoteCount()
{
return lastVoteCount;
}
public static AutoVoteRewardHandler getInstance()
{
return SingletonHolder._instance;
}
@SuppressWarnings("synthetic-access")
private static class SingletonHolder
{
protected static final AutoVoteRewardHandler _instance = new AutoVoteRewardHandler();
}
}
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.
Thanks for showing us this post, it is clearly seen that some user names pulling hate in that post, have the same name here in maxcheaters....
it is very interesting information, as it shows that the same users here at maxcheaters are scouring other forum posts to spew their hate.
this does not affect much, as the customers understand, that there are only 4 or 5 people globally trying to harm our project....
the rest are all happy, luckily 🙂
Greetings.
PD: You still don't understand that this is going to spread to many servers and it's something you can't avoid... you understand that, don't you?
By the way, if you used an extender like ours, maybe you wouldn't have to reopen your server hundreds of times over the years.
🚨 L2MID RETURNS IN 2025! 🚨
After 3 long years… The wait is FINALLY over!
One of the most legendary Lineage 2 server is coming back stronger, sharper, and more competitive than ever before.
💎 All users who vote will receive exclusive gifts in the future!
👉 Cast your vote now! https://l2mid.com/vote/
Let’s make this the most epic comeback ever!
Stay tuned for more updates and invite your friends L2Mid is BACK!
Question
cutitarii
Hello... i have a new java code:
AutoVoteRewardManager.java
And:
AutoVoteRewardHandler.java
Problem with check
Please help me with corect code :|
9 answers to this question
Recommended Posts
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.