Jump to content

Question

Posted (edited)

Edit : I add one new vote Autovotereward and i have some errors.  L2jserver high five last version 

errors : http://prnt.sc/afihhb

 

Code : 

package com.l2jserver.gameserver.instancemanager;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
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.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

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.model.items.instance.L2ItemInstance;
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;
   
   @SuppressWarnings("synthetic-access")
   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
   {
      @SuppressWarnings(
      {
         "null",
         "synthetic-access"
      })
      @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 loginserver.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
            {
               try
               {
                  con.close();
               }
               catch (SQLException e)
               {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
               }
            }
            
            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);
         }
      }
   }
   
   @SuppressWarnings("null")
   private int getVotes(String urlString)
   {
      URL url = null;
      InputStreamReader isr = null;
      BufferedReader in = null;
      try
      {
         url = new URL(urlString);
         URLConnection connection = url.openConnection();
         connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2");
         connection.connect();
         InputStream response = connection.getInputStream();
         isr = new InputStreamReader(response);
         in = new BufferedReader(isr);
         String inputLine;
         while ((inputLine = in.readLine()) != null)
         {
            if (Config.VOTE_REWARD_TOPZONE_ENABLE)
            {
               // for TopZone
               if (inputLine.contains("<div class=\"rank\"><div class=\"votes2\">Votes:<br>"))
               {
                  return Integer.valueOf(inputLine.split(">")[5].replace("</font", ""));
               }
            }
            if (Config.VOTE_REWARD_HOPZONE_ENABLE)
            {
               // for HopZone
               if (inputLine.contains("no steal make love") || inputLine.contains("no votes here") || inputLine.contains("bang, you don't have votes") || inputLine.contains("la vita e bella"))
               {
                  @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;
   }
   
   @SuppressWarnings("null")
   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
      {
         try
         {
            con.close();
         }
         catch (SQLException e)
         {
            // TODO Auto-generated catch block
            e.printStackTrace();
         }
      }
      
      setLastVoteCount(votes);
   }
   
   @SuppressWarnings("null")
   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
      {
         try
         {
            con.close();
         }
         catch (SQLException e)
         {
            // TODO Auto-generated catch block
            e.printStackTrace();
         }
      }
   }
   
   public static AutoVoteRewardHandler getInstance()
   {
      return SingletonHolder._instance;
   }
   
   @SuppressWarnings("synthetic-access")
   private static class SingletonHolder
   {
      protected static final AutoVoteRewardHandler _instance = new AutoVoteRewardHandler();
   }
}
Edited by kris131

Recommended Posts

Guest
This topic is now closed to further replies.


×
×
  • Create New...