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.
It doesn't say that anywhere.
https://acis.i-live.eu/index.php?topic=30.0
check it from source java file names
example in 367 ->
https://acis.i-live.eu/index.php?topic=30.255 l2bufferinstance renamed to schemebuffer | l2pcinstance renamed to player
check changeset 367 to understand
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.