Jump to content

Recommended Posts

Posted

tested and working on HI5 L2J Revision 5051

 

wtf r u talking about.

 

 

+              //for hopzone

+              if (inputLine.contains("moreinfo_total_rank_text"))

+                  return Integer.valueOf(inputLine.split(">")[2].replace("</div", ""))

 

:/ the whole hopzone web change and the template this doesnt work anymore :)

Posted

man i install it without error..but it doesnt say "1 vote has the server"when someone vote and say everytime 0 votes :S lol why?

 

beacuse need to be rework and the last post made by the creator of the script was  on agust 31. I think a mod should close this topic :D

  • 2 months later...
Posted

i need some help!!! who give me one tutorial for install this java on my server :( i have L2Jserver with Eclipse... and not working java with my tutorial...

so bad my english

  • 2 months later...
Posted

man i install it without error..but it doesnt say "1 vote has the server"when someone vote and say everytime 0 votes :S lol why?

i have same problem compile all good but make vote and say 0 in announce how fix the server is topzone i try and two links but same problem vote 0 say
Posted

sorry fort bublre post but

 

+              // for top-zone

+              //if (inputLine.contains("<tr><td><div align=\"center\"><b><font style=\"font-size:14px;color:#018BC1;\""))Should we put link on vote here #018BC1;\"here put nothing"))?

  • 4 weeks later...
Posted

Try with this. This is with Razield "hack" for Hopzone..

AutoVoteRewardManager.java

package com.l2jserver.gameserver.instancemanager;
    
import java.io.BufferedReader;
import java.io.IOException;
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.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/L2Empire/88729.html";
   private static final int initialCheck  = 1 * 1000;
   private static final int delayForCheck = 900 * 1000;
   private static final int[] itemId    = { 14721, 3794 };
   private static final int[] itemCount = { 50, 250 };
   private static final int votesRequiredForReward = 30;

   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://l2.gamesempire.ro/");

           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);
           URLConnection con = url.openConnection();
           con.addRequestProperty("User-Agent", "Mozilla/4.76"); 
           isr = new InputStreamReader(con.getInputStream());
           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();
   }
}

i try this for topzone and dont work make vote and say 0 vote next reward 15
  • 9 months later...
Posted

Still works on latest H5 BETA. But you must fix the code for hopzone, i would share mine but i lost all my files recently. As soon as i fix my pc i will share the working code.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



  • Posts

    • To use this exploit you have to:   1) Have access to the castle vault, aka you have to own a castle. 2) Send through Adrenaline Engine.BypassToServer(Bypass) as emommy said 3) In the crafted packet you will put a negative amount eg -100000000 What this does is it multiplies it by -1 so it becomes positive. 4) You won't see anything in your inventory, but if you open the castle vault through the Chamberlain you will see that the warehouse now has 10000000 adena. The negative became positive. 5) Withdraw the adena normally and you now have all the adena you need.   I wouldn't bother explaining how to do it, but this idiot (Galagard) wanted to challenge me. And from what I can see, they haven't patched the exploit even if I reported it to them a week ago so it's obvious that people will start sharing it around.   Maybe I should start positing here instead of the official channels.   All public versions of L2JMobius for all chronicles are vulnerable and not patched yet.   And thanks to this idiot (Galagard), everyone now knows.   Baldurian. EDIT:    Ok I just got informed that Mobius decided to accept the fix in the public repo.   So I will now post a proof of the exploit as Galagard requested. Normally I don't do so, but my good friend Galagard who has his nose so far stuck up his asshole, insulted me, and challenged me to show proof:     And to be fair to everyone, this is not an L2JMobius issue as the thread claims. It's L2JServer leftover, so if you have L2JServer derivative packs, you should patch too. 
    • Already fixed in subscriber version, but this bug report is classified as "Invalid" because since the author did not explain the method in detail, the validation flaw does indeed exist—but that alone does not prove it is possible to duplicate adena or any other item by exploiting said flaw. It looks like yet another AI hallucinating a vulnerability, then deducing that it could be used to exploit a different vulnerability. No have proofs in video or a detailed way to reproduce the potential failure Go find something else to do, Baldurian; you don’t even know how to exploit the flaw you reported yourself.
    • Interface sources for P196 (Secret of Empire 2 or aka Fafurion) for Main/Classic. This protocol is commonly used for classic interlude. You can use the xdat editors which support this protocol from my other shares.   NWindow + Interface UC + L2Editor Compiler   Download  
    • Interface sources for P166 (Secret of Empire 1) for Main/Classic. This protocol is commonly used for classic interlude. You can use the xdat editors which support this protocol from my other shares.   NWindow + Interface UC + L2Editor Compiler   Download  
    • You can manually send the bypass (if this is a bypass not a packet function) using:   Engine.BypassToServer(Bypass); Click the red circle to record game actions (it should capture bypasses) and then you can manipulate it as such with a simple script begin Engine.BypassToServer(Bypass); end.  
  • 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..