Noticias:

Debes de estar registrado para poder ver el contenido indicado. Registrate o Conectate

Menú Principal

Vote Reward Hop/Top

Iniciado por Swarlog, Ago 19, 2022, 01:18 AM

Tema anterior - Siguiente tema

Swarlog

CitarCORE:

Index: java/com/l2jserver/Config.java
===================================================================
--- java/com/l2jserver/Config.java  (revision 4422)
+++ java/com/l2jserver/Config.java  (working copy)
@@ -620,6 +625,8 @@
    //--------------------------------------------------
    // L2JMods Settings
    //--------------------------------------------------
+  public static boolean L2JMOD_VOTE_ENGINE_ENABLE;
+  public static boolean L2JMOD_VOTE_ENGINE_SAVE;
    public static boolean L2JMOD_CHAMPION_ENABLE;
    public static boolean L2JMOD_CHAMPION_PASSIVE;
    public static int L2JMOD_CHAMPION_FREQUENCY;
@@ -2162,6 +2174,8 @@
                    is = new FileInputStream(new File(L2JMOD_CONFIG_FILE));
                    L2JModSettings.load(is);
                 
+                  L2JMOD_VOTE_ENGINE_ENABLE = Boolean.parseBoolean(L2JModSettings.getProperty("EnableAutoVoteEngine", "false"));
+                  L2JMOD_VOTE_ENGINE_SAVE = Boolean.parseBoolean(L2JModSettings.getProperty("AutoVoteEngineSaveLoad", "false"));
                    L2JMOD_CHAMPION_ENABLE = Boolean.parseBoolean(L2JModSettings.getProperty("ChampionEnable", "false"));
                    L2JMOD_CHAMPION_PASSIVE = Boolean.parseBoolean(L2JModSettings.getProperty("ChampionPassive", "false"));
                    L2JMOD_CHAMPION_FREQUENCY = Integer.parseInt(L2JModSettings.getProperty("ChampionFrequency", "0"));
@@ -3071,8 +3085,11 @@
        else if (pName.equalsIgnoreCase("AltSubclassEverywhere")) ALT_GAME_SUBCLASS_EVERYWHERE = Boolean.parseBoolean(pValue);
        else if (pName.equalsIgnoreCase("AltMembersCanWithdrawFromClanWH")) ALT_MEMBERS_CAN_WITHDRAW_FROM_CLANWH = Boolean.parseBoolean(pValue);
        else if (pName.equalsIgnoreCase("DwarfRecipeLimit")) DWARF_RECIPE_LIMIT = Integer.parseInt(pValue);
-      else if (pName.equalsIgnoreCase("CommonRecipeLimit")) COMMON_RECIPE_LIMIT = Integer.parseInt(pValue);
+      else if (pName.equalsIgnoreCase("CommonRecipeLimit")) COMMON_RECIPE_LIMIT = Integer.parseInt(pValue);     
     
+      else if (pName.equalsIgnoreCase("EnableAutoVoteEngine")) L2JMOD_VOTE_ENGINE_ENABLE = Boolean.parseBoolean(pValue);
+      else if (pName.equalsIgnoreCase("AutoVoteEngineSaveLoad")) L2JMOD_VOTE_ENGINE_SAVE = Boolean.parseBoolean(pValue);
+     
        else if (pName.equalsIgnoreCase("ChampionEnable")) L2JMOD_CHAMPION_ENABLE = Boolean.parseBoolean(pValue);
        else if (pName.equalsIgnoreCase("ChampionFrequency")) L2JMOD_CHAMPION_FREQUENCY = Integer.parseInt(pValue);
        else if (pName.equalsIgnoreCase("ChampionMinLevel")) L2JMOD_CHAMP_MIN_LVL = Integer.parseInt(pValue);
Index: java/com/l2jserver/gameserver/GameServer.java
===================================================================
--- java/com/l2jserver/gameserver/GameServer.java  (revision 4422)
+++ java/com/l2jserver/gameserver/GameServer.java  (working copy)
@@ -87,6 +89,7 @@
 import com.l2jserver.gameserver.instancemanager.AirShipManager;
 import com.l2jserver.gameserver.instancemanager.AntiFeedManager;
 import com.l2jserver.gameserver.instancemanager.AuctionManager;
+import com.l2jserver.gameserver.instancemanager.AutoVoteRewardManager;
 import com.l2jserver.gameserver.instancemanager.BoatManager;
 import com.l2jserver.gameserver.instancemanager.CastleManager;
 import com.l2jserver.gameserver.instancemanager.CastleManorManager;
@@ -478,6 +488,9 @@
        _log.info("Server Loaded in " + ((serverLoadEnd - serverLoadStart) / 1000) + " seconds");
     
        AutoAnnounceTaskManager.getInstance();
+     
+      if (Config.L2JMOD_VOTE_ENGINE_ENABLE)
+          AutoVoteRewardManager.getInstance();
    }
Index: java/com/l2jserver/gameserver/Shutdown.java
===================================================================
--- java/com/l2jserver/gameserver/Shutdown.java (revision 4422)
+++ java/com/l2jserver/gameserver/Shutdown.java (working copy)
@@ -20,8 +20,10 @@
 
 import com.l2jserver.Config;
 import com.l2jserver.L2DatabaseFactory;
 import com.l2jserver.gameserver.datatables.ClanTable;
 import com.l2jserver.gameserver.datatables.OfflineTradersTable;
+import com.l2jserver.gameserver.instancemanager.AutoVoteRewardManager;
 import com.l2jserver.gameserver.instancemanager.CastleManorManager;
 import com.l2jserver.gameserver.instancemanager.CursedWeaponsManager;
 import com.l2jserver.gameserver.instancemanager.GrandBossManager;
@@ -538,12 +540,19 @@
        ClanTable.getInstance().storeClanScore();
        _log.info("Clan System: Data saved!!");
     
+      if (Config.L2JMOD_VOTE_ENGINE_SAVE && Config.L2JMOD_VOTE_ENGINE_ENABLE)
+          AutoVoteRewardManager.getInstance().save();
+     
Index: java/com/l2jserver/gameserver/instancemanager/AutoVoteRewardManager.java
===================================================================
--- java/com/l2jserver/gameserver/instancemanager/AutoVoteRewardManager.java    (revision 0)
+++ java/com/l2jserver/gameserver/instancemanager/AutoVoteRewardManager.java    (revision 0)
@@ -0,0 +1,220 @@
+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.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/L2WorldPvP/74078.html";
+  private static final int initialCheck  = 1 * 1000;
+  private static final int delayForCheck = 1800 * 1000;
+  private static final int[] itemId    = { 20034, 57 };
+  private static final int[] itemCount = { 2, 1000 };
+  private static final int votesRequiredForReward = 8;
+
+  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("Vote on http://L2TopZone.com");
+
+          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();
+      }
+  }
+     
+  private int getVotes()
+  {
+      URL url = null;
+      InputStreamReader isr = null;
+      BufferedReader in = null;
+      try
+      {
+          url = new URL(http);
+          isr = new InputStreamReader(url.openStream());
+          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)
+      {
+          _log.warning("AutoVoteRewardHandler: "+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 AutoVoteRewardManager getInstance()
+  {
+      return SingletonHolder._instance;
+  }
+     
+  @SuppressWarnings("synthetic-access")
+  private static class SingletonHolder
+  {
+      protected static final AutoVoteRewardManager _instance = new AutoVoteRewardManager();
+  }
+}
\ No newline at end of file
Index: java/config/l2jmods.properties
===================================================================
--- java/config/l2jmods.properties  (revision 4422)
+++ java/config/l2jmods.properties  (working copy)
@@ -418,3 +417,14 @@
 will be 1+2=3. Use 0 or negative value for unlimited number of connections.
 Default: 127.0.0.1,0 (no limits from localhost)
 DualboxCheckWhitelist = 127.0.0.1,0
+
+---------------------------------------------------------------------------
+Auto Vote Event Manager
+---------------------------------------------------------------------------
+Enable
+Default: False
+EnableAutoVoteEngine = False
+
+Save and Load votes count on start/shutdown to database
+Default: False
+AutoVoteEngineSaveLoad = False

CitarSQL:

-- ----------------------------
-- Table structure for `votes`
-- ----------------------------
DROP TABLE IF EXISTS `votes`;
CREATE TABLE `votes` (
  `id` int(6) NOT NULL,
  `vote` int(6) NOT NULL,
  PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;
 
-- ----------------------------
-- Records of votes
-- ----------------------------
INSERT INTO votes VALUES ('1', '0');