Hello :D i have adapted GoldenBoy™ Vote Reward System from Interlude to High Five and i have made few changes ... ( votes are saved in db now and more .. )
### Eclipse Workspace Patch 1.0
#P L2J_Server_H5
Index: java/com/l2jserver/gameserver/instancemanager/AutoVoteRewardHandler.java
===================================================================
--- java/com/l2jserver/gameserver/instancemanager/AutoVoteRewardHandler.java (revision 0)
+++ java/com/l2jserver/gameserver/instancemanager/AutoVoteRewardHandler.java (revision 0)
@@ -0,0 +1,235 @@
+package com.l2jserver.gameserver.instancemanager;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import com.l2jserver.gameserver.model.item.instance.L2ItemInstance;
+import com.l2jserver.Config;
+import com.l2jserver.L2DatabaseFactory;
+import com.l2jserver.gameserver.ThreadPoolManager;
+import com.l2jserver.gameserver.model.L2World;
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.network.clientpackets.Say2;
+import com.l2jserver.gameserver.network.serverpackets.CreatureSay;
+import com.l2jserver.gameserver.util.Broadcast;
+
+public class AutoVoteRewardHandler
+{
+ private static Logger _log = Logger.getLogger(AutoVoteRewardHandler.class.getName());
+
+ private static final int initialCheck = 1 * 1000;
+ private static final int delayForCheck = Config.DELAY_FOR_NEXT_REWARD * 1000;
+
+ private static int lastVoteCount = 0;
+
+ private AutoVoteRewardHandler()
+ {
+ _log.info("Vote Reward System: Vote reward system initiated.");
+ if (Config.VOTE_REWARD_ENABLE)
+ load();
+ ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoReward(), initialCheck, delayForCheck);
+ }
+
+ private class AutoReward implements Runnable
+ {
+ @Override
+ public void run()
+ {
+ int votes = getVotes(Config.VOTE_HTML_PATCH);
+ System.out.println("Server Votes: " + votes);
+ if (votes != 0 && getLastVoteCount() != 0 && votes >= getLastVoteCount() + Config.VOTES_FOR_REWARD)
+ {
+ Connection con = null;
+ try
+ {
+ con = L2DatabaseFactory.getInstance().getConnection();
+ PreparedStatement statement = con.prepareStatement("SELECT c.charId, c.char_name FROM characters AS c LEFT JOIN accounts AS a ON c.account_name = a.login WHERE c.online > 0 GROUP BY a.lastIP ORDER BY c.level DESC");
+ ResultSet rset = statement.executeQuery();
+ L2PcInstance player = null;
+ L2ItemInstance item = null;
+ L2ItemInstance item2 = null;
+ while (rset.next())
+ {
+ player = L2World.getInstance().getPlayer(rset.getInt("charId"));
+ if (player != null && !player.getClient().isDetached())
+ {
+ item = player.getInventory().getItemByItemId(Config.VOTE_REWARD1_ID);
+ if (item == null || item.getCount() < Config.MAX_REWARD_COUNT_FOR_STACK_ITEM1)
+ player.addItem("reward", Config.VOTE_REWARD1_ID, Config.VOTE_REWARD1_COUNT, player, true);
+ item2 = player.getInventory().getItemByItemId(Config.VOTE_REWARD1_ID);
+
+ if (item2 == null || item2.getCount() < Config.MAX_REWARD_COUNT_FOR_STACK_ITEM1)
+ player.addItem("reward", Config.VOTE_REWARD2_ID, Config.VOTE_REWARD2_COUNT, player, true);
+ }
+ }
+ setLastVoteCount(getLastVoteCount() + Config.VOTES_FOR_REWARD);
+ statement.close();
+ _log.info("Vote Reward System: Reward for votes now!");
+ Broadcast.toAllOnlinePlayers(new CreatureSay(1, Say2.CRITICAL_ANNOUNCE, "", "Vote Manager: Reward for players! Thanks for Vote."));
+ }
+ catch (SQLException e)
+ {
+ e.printStackTrace();
+ }
+ finally
+ {
+ L2DatabaseFactory.close(con);
+ }
+
+ setLastVoteCount(getLastVoteCount() + Config.VOTES_FOR_REWARD);
+ }
+ Broadcast.toAllOnlinePlayers(new CreatureSay(1, Say2.CRITICAL_ANNOUNCE, "", "Vote Manager: Server votes: " + votes + " | Next Reward on " + (getLastVoteCount() + Config.VOTES_FOR_REWARD) + " Votes."));
+ if (getLastVoteCount() == 0)
+ setLastVoteCount(votes);
+ }
+ }
+
+ private int getVotes(String urlString)
+ {
+ URL url = null;
+ InputStreamReader isr = null;
+ BufferedReader in = null;
+ try
+ {
+ url = new URL(urlString);
+ isr = new InputStreamReader(url.openStream());
+ in = new BufferedReader(isr);
+ String inputLine;
+ while ((inputLine = in.readLine()) != null)
+ {
+ if (Config.VOTE_REWARD_TOPZONE_ENABLE)
+ {
+ // for TopZone
+ if (inputLine.contains("<tr><td><div align=\"center\"><b><font style=\"font-size:14px;color:#018BC1;\""))
+ {
+ return Integer.valueOf(inputLine.split(">")[5].replace("</font", ""));
+ }
+ }
+ if (Config.VOTE_REWARD_HOPZONE_ENABLE)
+ {
+ // for HopZone
+ if (inputLine.contains("rank anonymous tooltip"))
+ {
+ @SuppressWarnings("unused")
+ 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;
+ }
+ return Integer.valueOf(inputLine.split(">")[2].replace("</span", ""));
+ }
+ }
+ }
+ }
+ catch (IOException e)
+ {
+ _log.warning("Vote Reward System: "+e);
+ }
+ 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 AutoVoteRewardHandler getInstance()
+ {
+ return SingletonHolder._instance;
+ }
+
+ @SuppressWarnings("synthetic-access")
+ private static class SingletonHolder
+ {
+ protected static final AutoVoteRewardHandler _instance = new AutoVoteRewardHandler();
+ }
+}
\ No newline at end of file
### Eclipse Workspace Patch 1.0
#P L2J_Server_H5
Index: java/com/l2jserver/gameserver/Shutdown.java
===================================================================
--- java/com/l2jserver/gameserver/Shutdown.java (revision 5219)
+++ java/com/l2jserver/gameserver/Shutdown.java (working copy)
@@ -33,6 +33,7 @@
import com.l2jserver.gameserver.instancemanager.ItemsOnGroundManager;
import com.l2jserver.gameserver.instancemanager.QuestManager;
import com.l2jserver.gameserver.instancemanager.RaidBossSpawnManager;
+import com.l2jserver.gameserver.instancemanager.AutoVoteRewardHandler;
import com.l2jserver.gameserver.model.L2World;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.entity.Hero;
@@ -562,6 +564,10 @@
ClanTable.getInstance().storeClanScore();
_log.info("Clan System: Data saved("+tc.getEstimatedTimeAndRestartCounter()+"ms).");
+ if (Config.VOTE_REWARD_ENABLE)
+ AutoVoteRewardHandler.getInstance().save();
+ _log.info("Vote Reward Manager: Data saved("+tc.getEstimatedTimeAndRestartCounter()+"ms).");
+
// Save Cursed Weapons data before closing.
CursedWeaponsManager.getInstance().saveData();
_log.info("Cursed Weapons Manager: Data saved("+tc.getEstimatedTimeAndRestartCounter()+"ms).");
________________
### Eclipse Workspace Patch 1.0
#P L2J_Server_H5
Index: java/com/l2jserver/Config.java
===================================================================
--- java/com/l2jserver/Config.java (revision 5219)
+++ java/com/l2jserver/Config.java (working copy)
@@ -765,7 +781,41 @@
public static int L2JMOD_DUALBOX_CHECK_MAX_OLYMPIAD_PARTICIPANTS_PER_IP;
public static int L2JMOD_DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP;
public static TIntIntHashMap L2JMOD_DUALBOX_CHECK_WHITELIST;
+ public static String VOTE_HTML_PATCH;
+ public static int VOTE_REWARD1_ID;
+ public static int VOTE_REWARD2_ID;
+ public static int VOTE_REWARD1_COUNT;
+ public static int VOTE_REWARD2_COUNT;
+ public static int VOTES_FOR_REWARD;
+ public static boolean VOTE_REWARD_ENABLE;
+ public static String SERVER_NAME_FOR_VOTES;
+ public static int MAX_REWARD_COUNT_FOR_STACK_ITEM1;
+ public static int MAX_REWARD_COUNT_FOR_STACK_ITEM2;
+ public static int DELAY_FOR_NEXT_REWARD;
+ public static boolean VOTE_REWARD_HOPZONE_ENABLE;
+ public static boolean VOTE_REWARD_TOPZONE_ENABLE;
public static boolean L2JMOD_ALLOW_CHANGE_PASSWORD;
//--------------------------------------------------
// NPC Settings
@@ -2646,6 +2717,47 @@
}
}
L2JMOD_ALLOW_CHANGE_PASSWORD = Boolean.parseBoolean(L2JModSettings.getProperty("AllowChangePassword", "False"));
+ VOTE_HTML_PATCH = L2JModSettings.getProperty("VoteHtmlPatch", "Null");
+ VOTE_REWARD1_COUNT = Integer.parseInt(L2JModSettings.getProperty("VoteReward1Count", "1000"));
+ VOTE_REWARD2_COUNT = Integer.parseInt(L2JModSettings.getProperty("VoteReward2Count", "1000"));
+ VOTE_REWARD1_ID = Integer.parseInt(L2JModSettings.getProperty("VoteReward1Id", "57"));
+ VOTE_REWARD2_ID = Integer.parseInt(L2JModSettings.getProperty("VoteReward2Id", "57"));
+ VOTES_FOR_REWARD = Integer.parseInt(L2JModSettings.getProperty("VotesForReward", "5"));
+ VOTE_REWARD_ENABLE = Boolean.parseBoolean(L2JModSettings.getProperty("EnableVoteReward", "False"));
+ SERVER_NAME_FOR_VOTES = L2JModSettings.getProperty("ServerNameForVotes", "L2ServerName");
+ MAX_REWARD_COUNT_FOR_STACK_ITEM1 = Integer.parseInt(L2JModSettings.getProperty("MaxRewardCountForStackItem1", "2000000000"));
+ MAX_REWARD_COUNT_FOR_STACK_ITEM2 = Integer.parseInt(L2JModSettings.getProperty("MaxRewardCountForStackItem2", "2000000000"));
+ DELAY_FOR_NEXT_REWARD = Integer.parseInt(L2JModSettings.getProperty("DelayForNextReward", "600"));
+ VOTE_REWARD_HOPZONE_ENABLE = Boolean.parseBoolean(L2JModSettings.getProperty("EnableHopzoneReward", "False"));
+ VOTE_REWARD_TOPZONE_ENABLE = Boolean.parseBoolean(L2JModSettings.getProperty("EnableTopzoneReward", "False"));
}
catch (Exception e)
{
______________
Add this after "AllowChangePassword = True" in l2jmods.prop
# ---------------------------------------------------------------------------
# Vote Reward System
# ---------------------------------------------------------------------------
# Set it "True" if you want to Enable Vote Reward System.
EnableVoteReward = False
# If you enable Vote Reward System you must fill your Html Patch.
# e.g. VoteHtmlPatch = http://l2.hopzone.net / http://l2topzone.net
# Html Patch for Your Vote Site
# Works with TopZone & HopZone
ServerNameForVotes = ServerName
VoteHtmlPatch = http://l2.hopzone.net
VoteReward1Count = 5
VoteReward2Count = 2
VoteReward1Id = 9627
VoteReward2Id = 3470
VotesForReward = 10
# Max a-beep-t of reward items that you want to stop reward
# the player that have more than "MaxRewardCountForStack".
MaxRewardCountForStackItem1 = 500
MaxRewardCountForStackItem2 = 500
# DelayForNextReward in seconds
DelayForNextReward = 300
# Enable TopZone Vote Reward
# Default = False
EnableTopzoneReward = False
# Enable HopZone Vote Reward
# Default = False
EnableHopzoneReward = True
DISCORD :
https://discord.com/users/325653525793210378
utchiha_market
telegram :
https://t.me/utchiha_market
SELLIX STORE :
https://utchihamkt.mysellix.io/
Join our server for more products :
https://discord.gg/uthciha-services
https://campsite.bio/utchihaamkt
Question
Stewie
It check l2jgs/accounts... for IP
It need to check L2jls for IP....
I make L2jls database to be in L2jgs... all table's are now in L2JGS.... and it's working BUT:
I guess problem is not big, but if i wanna apply another Event wich check IP, and if it check in L2jls it will be problem
7 answers to this question
Recommended Posts