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.


  • Posts

    • Mate your server used to play with full of bots, from where you find that revenue? 
    • IAM one of customers of this project. Have anti cheat, have user panel everything is working. Blocking adrenaline trashy plans without any problems.  So just GL for all lin2 project. I get support every time I need it. 
    • Convert package formats from Old to New in one click Create new packages of any format Lineage2Ver121 encryption (included in the package) Safe editing: work in a copy, full undo history (Ctrl+Z / Ctrl+Shift+Z), single "Save" button System integration Open .utx / .ugx files with a single click in Explorer (associations are registered during installation) One example: open a file and add its tab to an existing window Multilingual interface (EN, RU, UK, ES, PT, EL, KO, VI, ZH) — the language is picked up from the system Supported formats Packages: UTX, UGX Textures: RGBA8, DXT1, DXT3, DXT5, G16, P8 Resources: GFX (Scaleform) Requirements Windows. Java is not required—it's included in the build. Installation Run La2Tools-3.0.2.exe—the installer will create shortcuts and register related files. Alternatively, use the portable version. https://la2.tools/files/La2Tools_3.0.3_setup.exe   https://la2.tools/files/La2Tools_3.0.3_portable.zip  - Portable version  
    • WHEN SAYING “YES” IS A MISTAKE Not every project is worth taking on, even if the client is ready to pay. Sometimes refusing isn’t about losing money — it’s about protecting your reputation and time. Over the years, we’ve learned to quickly spot the cases that are almost guaranteed to turn into problems. Here are the most common situations where we turn down work: ▪ The client wants it “like everyone else’s,” but with lots of custom changes and on a minimal budget ▪ There are no proper source materials, yet the deadlines are already burning and everything is needed “yesterday” ▪ Constant changes to requirements after the work has already started ▪ A task with a very low chance of success, but very high expectations ▪ The client isn’t willing to discuss the process and sees us as just an executor - A good result almost always starts when both sides have an honest understanding of the risks and real possibilities of the project. If you’re currently discussing a project and unsure whether to move forward — write to us. We’ll honestly and directly tell you whether it’s worth taking on or if it’s better to look for another solution. › TG: @mustang_service_ms ( https:// t.me/ mustang_service_ms ) › Channel: Mustang Service ( https:// t.me/ +JPpJCETg-xM1NjNl ) #documents #drawing #photoshop #refuse #cases
    • The price reflects the value of the project, not just the source files. This is a complete, production-ready server that has already proven itself over the course of a full year, with a loyal player base and no major issues requiring ongoing development. To put it into perspective, the asking price is approximately what the server generated in one year. You're not buying an unfinished pack that still needs months of work, you're buying a polished, fully tested, revenue-proven project that's ready to go online. Considering that, I believe €35000 is a fair price.
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..