Jump to content

extr3me

Members
  • Posts

    332
  • Credits

  • Joined

  • Last visited

  • Feedback

    0%

Posts posted by extr3me

  1. Hy all MXC Users this is an hopzone and topzone vote reward for freya with sql to save all vote count on server restart  ;) HF with it

     

     

    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

     

     

    And The Sql to save votes count on restart server becouse all vote reward reset votes on server restart

     

    -- ----------------------------
    -- 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');

     

     

×
×
  • Create New...