Jump to content
  • 0

Vote Rewards


Question

Posted

Kalispera paidia An Mpori kai 3eri kapoios na me voithisei pws tha kanw o kathe enas p kani vote na perni atomika to rewar...An mporite na me voithisete...Episeis an iparxi kai npc p na mporis na kanis vote eki mesa k na perni mono aytos p kani vote to reward...Eyxaristw poly

13 answers to this question

Recommended Posts

  • 0
Posted

Kalispera paidia An Mpori kai 3eri kapoios na me voithisei pws tha kanw o kathe enas p kani vote na perni atomika to rewar...An mporite na me voithisete...Episeis an iparxi kai npc p na mporis na kanis vote eki mesa k na perni mono aytos p kani vote to reward...Eyxaristw poly

Δύσκολα θα πάρεις τέτοιον κώδικα δωρεάν.

  • 0
Posted

Auto Reward Code:

### Eclipse Workspace Patch 1.0
#P L2jFrozen_GameServer
Index: head-src/com/l2jfrozen/gameserver/managers/AutoRewardManager.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/managers/AutoRewardManager.java   (revision 0)
+++ head-src/com/l2jfrozen/gameserver/managers/AutoRewardManager.java   (revision 0)
@@ -0,0 +1,76 @@
+/*
+ * Copyright © 2013 AdminsProL2
+ * 
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later
+ * version.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ * 
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package com.l2jfrozen.gameserver.managers;
+
+import java.util.Collection;
+import java.util.Set;
+
+import com.l2jfrozen.Config;
+import com.l2jfrozen.gameserver.model.L2World;
+import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jfrozen.gameserver.network.serverpackets.ExShowScreenMessage;
+import com.l2jfrozen.gameserver.powerpak.PowerPakConfig;
+import com.l2jfrozen.gameserver.thread.ThreadPoolManager;
+
+
+/**
+ *@author fissban && CaFi
+ */
+public class AutoRewardManager
+{
+   static final int initialCheck = Config.AUTO_REWARD_DELAY * 60000;
+   static final int delayForCheck = Config.AUTO_REWARD_DELAY * 60000;
+   
+   AutoRewardManager()
+   {
+      if (Config.ALLOW_AUTO_REWARDER)
+      {
+         ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoReward(), initialCheck, delayForCheck);   
+      }
+   }
+   
+   protected class AutoReward implements Runnable
+   {
+      @Override
+      public void run()
+      {
+         Collection<L2PcInstance> pls = L2World.getInstance().getAllPlayers();
+         
+         for (L2PcInstance player : pls)
+         {
+            player.sendPacket(new ExShowScreenMessage("Felicitaciones has sido premiado, proximo Reward en: " + delayForCheck, 6000));
+            
+            Set<Integer> items = PowerPakConfig.VOTES_REWARDS_LIST.keySet();
+            for (Integer i : items)
+            {
+               player.addItem("AutoReward", i, Config.AUTO_REWARDS_LIST.get(i), player, true);
+            }
+         }
+      }
+   }
+   
+   public static AutoRewardManager getInstance()
+   {
+      return SingletonHolder._instance;
+   }
+   
+   static class SingletonHolder
+   {
+      protected static final AutoRewardManager _instance = new AutoRewardManager();
+   }
+}
Index: head-src/com/l2jfrozen/FService.java
===================================================================
--- head-src/com/l2jfrozen/FService.java   (revision 1004)
+++ head-src/com/l2jfrozen/FService.java   (working copy)
@@ -53,6 +53,7 @@
    public static final String CRAFTING = "./config/functions/crafting.properties";
    public static final String DEVELOPER = "./config/functions/developer.properties";
    public static final String L2JFROZEN_CONFIG_FILE = "./config/functions/l2jfrozen.properties";
+   public static final String ADMINSPROL2_CONFIG_FILE = "./config/functions/AdminsProL2.properties";
    public static final String PHYSICS_CONFIGURATION_FILE = "./config/functions/physics.properties";
    public static final String PVP_CONFIG_FILE = "./config/functions/pvp.properties";
    public static final String POWERPAK_FILE = "./config/powerpak/powerpak.properties";
Index: head-src/com/l2jfrozen/Config.java
===================================================================
--- head-src/com/l2jfrozen/Config.java   (revision 1004)
+++ head-src/com/l2jfrozen/Config.java   (working copy)
@@ -2525,7 +2525,37 @@
       }
    }
 
+    //============================================================
+    public static boolean ALLOW_AUTO_REWARDER;
+    public static int AUTO_REWARD_DELAY;
+    public static FastMap<Integer, Integer> AUTO_REWARDS_LIST;
+    public static String AUTO_REWARDS;
+       
    //============================================================
+   public static void loadAdminsProL2Config()
+   {
+      final String ADMINSPROL2 = FService.ADMINSPROL2_CONFIG_FILE;
+   
+      try
+      {
+         Properties AdminsProL2Settings = new Properties();
+         InputStream is = new FileInputStream(new File(ADMINSPROL2));
+         AdminsProL2Settings.load(is);
+         is.close();
+            
+          ALLOW_AUTO_REWARDER = Boolean.parseBoolean(AdminsProL2Settings.getProperty("AllowAutoRewarder", "True"));
+          AUTO_REWARD_DELAY = Integer.parseInt(AdminsProL2Settings.getProperty("AutoRewardDelay", "1200"));
+          AUTO_REWARDS = AdminsProL2Settings.getProperty("VotesRewards", "");
+          AUTO_REWARDS_LIST = new FastMap<Integer, Integer>();
+      }
+      catch(Exception e)
+      {
+         e.printStackTrace();
+         throw new Error("Failed to Load " + ADMINSPROL2 + " File.");
+      }
+   }
+   
+   //============================================================
    public static int KARMA_MIN_KARMA;
    public static int KARMA_MAX_KARMA;
    public static int KARMA_XP_DIVIDER;
Index: head-src/com/l2jfrozen/gameserver/GameServer.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/GameServer.java   (revision 1004)
+++ head-src/com/l2jfrozen/gameserver/GameServer.java   (working copy)
@@ -87,6 +87,7 @@
 import com.l2jfrozen.gameserver.handler.VoicedCommandHandler;
 import com.l2jfrozen.gameserver.idfactory.IdFactory;
 import com.l2jfrozen.gameserver.managers.AuctionManager;
+import com.l2jfrozen.gameserver.managers.AutoRewardManager;
 import com.l2jfrozen.gameserver.managers.AutoSaveManager;
 import com.l2jfrozen.gameserver.managers.AwayManager;
 import com.l2jfrozen.gameserver.managers.BoatManager;
@@ -565,6 +566,9 @@
       if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.RESTORE_OFFLINERS)
          OfflineTradeTable.restoreOfflineTraders();
       
+      Util.printSection("L2jAdmins");
+      AutoRewardManager.getInstance();
+      
       Util.printSection("Info");
       _log.info("Operating System: " + Util.getOSName() + " " + Util.getOSVersion() + " " + Util.getOSArch());
       _log.info("Available CPUs: " + Util.getAvailableProcessors());
Index: config/functions/Adminsprol2.properties
===================================================================
--- config/functions/Adminsprol2.properties   (revision 0)
+++ config/functions/Adminsprol2.properties   (revision 0)
@@ -0,0 +1,10 @@
+#============================================================#
+#                        Server Config                      #
+#============================================================#
+
+# Auto rewarder.
+AllowAutoRewarder = True
+# Delay for reward. (in seconds)
+AutoRewardDelay = 1200
+# ID of item reward.
+AutoRewards= 6392,20;
 
Code Vote RewardTopzone/Hopzone:
 
### Eclipse Workspace Patch 1.0
#P L2jFrozen_GameServer
Index: head-src/com/l2jfrozen/Config.java
===================================================================
--- head-src/com/l2jfrozen/Config.java (revision 938)
+++ head-src/com/l2jfrozen/Config.java (working copy)
@@ -878,6 +878,89 @@
  throw new Error("Failed to Load " + OTHER + " File.");
  }
  }
+
+ public static boolean ALLOW_HOPZONE_VOTE_REWARD;
+    public static String HOPZONE_SERVER_LINK;
+    public static String HOPZONE_FIRST_PAGE_LINK;
+    public static int HOPZONE_VOTES_DIFFERENCE;
+    public static int HOPZONE_FIRST_PAGE_RANK_NEEDED;
+    public static int HOPZONE_REWARD_CHECK_TIME;
+ public static Map<Integer, Integer> HOPZONE_SMALL_REWARD = new FastMap<Integer, Integer>();
+ public static Map<Integer, Integer> HOPZONE_BIG_REWARD = new FastMap<Integer, Integer>();
+ public static int HOPZONE_DUALBOXES_ALLOWED;
+    public static boolean ALLOW_HOPZONE_GAME_SERVER_REPORT;
+    public static boolean ALLOW_TOPZONE_VOTE_REWARD;
+    public static String TOPZONE_SERVER_LINK;
+    public static String TOPZONE_FIRST_PAGE_LINK;
+    public static int TOPZONE_VOTES_DIFFERENCE;
+    public static int TOPZONE_FIRST_PAGE_RANK_NEEDED;
+    public static int TOPZONE_REWARD_CHECK_TIME;
+ public static Map<Integer, Integer> TOPZONE_SMALL_REWARD = new FastMap<Integer, Integer>();
+ public static Map<Integer, Integer> TOPZONE_BIG_REWARD = new FastMap<Integer, Integer>();
+ public static int TOPZONE_DUALBOXES_ALLOWED;
+    public static boolean ALLOW_TOPZONE_GAME_SERVER_REPORT;
+    
+ public static void loadVoteConfig()
+ {
+ final String VOTE = FService.VOTE_FILE;
+ try
+ {
+ Properties elcardia = new Properties();
+ InputStream is = new FileInputStream(new File(VOTE));
+ elcardia.load(is);
+ is.close();
+
+ ALLOW_HOPZONE_VOTE_REWARD = Boolean.parseBoolean(elcardia.getProperty("AllowHopzoneVoteReward", "false"));
+ HOPZONE_SERVER_LINK = elcardia.getProperty("HopzoneServerLink", "http://l2.hopzone.net/lineage2/details/74078/L2World-Servers/");
+ HOPZONE_FIRST_PAGE_LINK = elcardia.getProperty("HopzoneFirstPageLink", "http://l2.hopzone.net/lineage2/");
+ HOPZONE_VOTES_DIFFERENCE = Integer.parseInt(elcardia.getProperty("HopzoneVotesDifference", "5"));
+ HOPZONE_FIRST_PAGE_RANK_NEEDED = Integer.parseInt(elcardia.getProperty("HopzoneFirstPageRankNeeded", "15"));
+ HOPZONE_REWARD_CHECK_TIME = Integer.parseInt(elcardia.getProperty("HopzoneRewardCheckTime", "5"));
+ String HOPZONE_SMALL_REWARD_VALUE = elcardia.getProperty("HopzoneSmallReward", "57,100000000;");
+ String[] hopzone_small_reward_splitted_1 = HOPZONE_SMALL_REWARD_VALUE.split(";");
+ for (String i : hopzone_small_reward_splitted_1)
+ {
+ String[] hopzone_small_reward_splitted_2 = i.split(",");
+ HOPZONE_SMALL_REWARD.put(Integer.parseInt(hopzone_small_reward_splitted_2[0]), Integer.parseInt(hopzone_small_reward_splitted_2[1]));
+ }
+ String HOPZONE_BIG_REWARD_VALUE = elcardia.getProperty("HopzoneBigReward", "3470,1;");
+ String[] hopzone_big_reward_splitted_1 = HOPZONE_BIG_REWARD_VALUE.split(";");
+ for (String i : hopzone_big_reward_splitted_1)
+ {
+ String[] hopzone_big_reward_splitted_2 = i.split(",");
+ HOPZONE_BIG_REWARD.put(Integer.parseInt(hopzone_big_reward_splitted_2[0]), Integer.parseInt(hopzone_big_reward_splitted_2[1]));
+ }
+ HOPZONE_DUALBOXES_ALLOWED = Integer.parseInt(elcardia.getProperty("HopzoneDualboxesAllowed", "1"));
+ ALLOW_HOPZONE_GAME_SERVER_REPORT = Boolean.parseBoolean(elcardia.getProperty("AllowHopzoneGameServerReport", "false"));
+ ALLOW_TOPZONE_VOTE_REWARD = Boolean.parseBoolean(elcardia.getProperty("AllowTopzoneVoteReward", "false"));
+ TOPZONE_SERVER_LINK = elcardia.getProperty("TopzoneServerLink", "http://l2.topzone.net/lineage2/details/74078/L2World-Servers/");
+ TOPZONE_FIRST_PAGE_LINK = elcardia.getProperty("TopzoneFirstPageLink", "http://l2.topzone.net/lineage2/");
+ TOPZONE_VOTES_DIFFERENCE = Integer.parseInt(elcardia.getProperty("TopzoneVotesDifference", "5"));
+ TOPZONE_FIRST_PAGE_RANK_NEEDED = Integer.parseInt(elcardia.getProperty("TopzoneFirstPageRankNeeded", "15"));
+ TOPZONE_REWARD_CHECK_TIME = Integer.parseInt(elcardia.getProperty("TopzoneRewardCheckTime", "5"));
+ String TOPZONE_SMALL_REWARD_VALUE = elcardia.getProperty("TopzoneSmallReward", "57,100000000;");
+ String[] topzone_small_reward_splitted_1 = TOPZONE_SMALL_REWARD_VALUE.split(";");
+ for (String i : topzone_small_reward_splitted_1)
+ {
+ String[] topzone_small_reward_splitted_2 = i.split(",");
+ TOPZONE_SMALL_REWARD.put(Integer.parseInt(topzone_small_reward_splitted_2[0]), Integer.parseInt(topzone_small_reward_splitted_2[1]));
+ }
+ String TOPZONE_BIG_REWARD_VALUE = elcardia.getProperty("TopzoneBigReward", "3470,1;");
+ String[] topzone_big_reward_splitted_1 = TOPZONE_BIG_REWARD_VALUE.split(";");
+ for (String i : topzone_big_reward_splitted_1)
+ {
+ String[] topzone_big_reward_splitted_2 = i.split(",");
+ TOPZONE_BIG_REWARD.put(Integer.parseInt(topzone_big_reward_splitted_2[0]), Integer.parseInt(topzone_big_reward_splitted_2[1]));
+ }
+ TOPZONE_DUALBOXES_ALLOWED = Integer.parseInt(elcardia.getProperty("TopzoneDualboxesAllowed", "1"));
+ ALLOW_TOPZONE_GAME_SERVER_REPORT = Boolean.parseBoolean(elcardia.getProperty("AllowTopzoneGameServerReport", "false"));
+ }
+ catch(Exception e)
+ {
+ e.printStackTrace();
+ throw new Error("Failed to Load " + VOTE + " File.");
+ }
+ }
 
  //============================================================
  public static float RATE_XP;
Index: head-src/com/l2jfrozen/gameserver/GameServer.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/GameServer.java (revision 938)
+++ head-src/com/l2jfrozen/gameserver/GameServer.java (working copy)
@@ -118,6 +118,8 @@
 import com.l2jfrozen.gameserver.model.entity.Announcements;
 import com.l2jfrozen.gameserver.model.entity.Hero;
 import com.l2jfrozen.gameserver.model.entity.MonsterRace;
+import com.l2jfrozen.gameserver.model.entity.VoteRewardHopzone;
+import com.l2jfrozen.gameserver.model.entity.VoteRewardTopzone;
 import com.l2jfrozen.gameserver.model.entity.event.manager.EventManager;
 import com.l2jfrozen.gameserver.model.entity.olympiad.Olympiad;
 import com.l2jfrozen.gameserver.model.entity.sevensigns.SevenSigns;
@@ -514,6 +516,11 @@
 
  Util.printSection("Custom Mods");
 
+ if (Config.ALLOW_HOPZONE_VOTE_REWARD)
+ VoteRewardHopzone.getInstance();
+ if (Config.ALLOW_TOPZONE_VOTE_REWARD)
+ VoteRewardTopzone.getInstance();
+
  if(Config.L2JMOD_ALLOW_WEDDING || Config.ALLOW_AWAY_STATUS || Config.PCB_ENABLE || Config.POWERPAK_ENABLED)
  {
  if(Config.L2JMOD_ALLOW_WEDDING)
Index: head-src/com/l2jfrozen/FService.java
===================================================================
--- head-src/com/l2jfrozen/FService.java (revision 938)
+++ head-src/com/l2jfrozen/FService.java (working copy)
@@ -48,6 +48,7 @@
  public static final String SIEGE_CONFIGURATION_FILE = "./config/head/siege.properties";
  public static final String ELIT_CLANHALL_CONFIG_FILE = "./config/head/elitclanhall.properties";
  public static final String BOSS_CONFIG_FILE = "./config/head/boss.properties";
+ public static final String VOTE_FILE = "./config/head/vote.properties";
 
  //functions
  public static final String ACCESS_CONFIGURATION_FILE = "./config/functions/access.properties";
Index: head-src/com/l2jfrozen/gameserver/model/entity/VoteRewardTopzone.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/model/entity/VoteRewardTopzone.java (revision 0)
+++ head-src/com/l2jfrozen/gameserver/model/entity/VoteRewardTopzone.java (revision 0)
@@ -0,0 +1,330 @@
+/*
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later
+ * version.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ * 
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.l2jfrozen.gameserver.model.entity;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.Collection;
+
+import javolution.util.FastMap;
+
+import com.l2jfrozen.Config;
+import com.l2jfrozen.gameserver.model.entity.Announcements;
+import com.l2jfrozen.gameserver.thread.ThreadPoolManager;
+import com.l2jfrozen.gameserver.model.L2World;
+import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
+/**
+ * @author Anarchy
+ *
+ */
+public class VoteRewardTopzone
+{
+ // Configurations.
+ private static String topzoneUrl = Config.TOPZONE_SERVER_LINK;
+ private static String page1Url = Config.TOPZONE_FIRST_PAGE_LINK;
+ private static int voteRewardVotesDifference = Config.TOPZONE_VOTES_DIFFERENCE;
+ private static int firstPageRankNeeded = Config.TOPZONE_FIRST_PAGE_RANK_NEEDED;
+ private static int checkTime = 60*1000*Config.TOPZONE_REWARD_CHECK_TIME;
+
+ // Don't-touch variables.
+ private static int lastVotes = 0;
+ private static FastMap<String, Integer> playerIps = new FastMap<String, Integer>();
+
+ public static void updateConfigurations()
+ {
+ topzoneUrl = Config.TOPZONE_SERVER_LINK;
+ page1Url = Config.TOPZONE_FIRST_PAGE_LINK;
+ voteRewardVotesDifference = Config.TOPZONE_VOTES_DIFFERENCE;
+ firstPageRankNeeded = Config.TOPZONE_FIRST_PAGE_RANK_NEEDED;
+ checkTime = 60*1000*Config.TOPZONE_REWARD_CHECK_TIME;
+ }
+
+ public static void getInstance()
+ {
+ System.out.println("Vote reward system initialized.");
+ ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ if (Config.ALLOW_TOPZONE_VOTE_REWARD)
+ {
+ reward();
+ }
+ else
+ {
+ return;
+ }
+ }
+ }, checkTime/2, checkTime);
+ }
+
+ private static void reward()
+ {
+ int firstPageVotes = getFirstPageRankVotes();
+ int currentVotes = getVotes();
+
+ if (firstPageVotes == -1 || currentVotes == -1)
+ {
+ if (firstPageVotes == -1)
+ {
+ System.out.println("There was a problem on getting votes from server with rank "+firstPageRankNeeded+".");
+ }
+ if (currentVotes == -1)
+ {
+ System.out.println("There was a problem on getting server votes.");
+ }
+
+ return;
+ }
+
+ if (lastVotes == 0)
+ {
+ lastVotes = currentVotes;
+ Announcements.getInstance().announceToAll("Vote reward: Current vote count is "+currentVotes+".");
+ Announcements.getInstance().announceToAll("Vote reward: We need "+((lastVotes+voteRewardVotesDifference)-currentVotes)+" vote(s) for reward.");
+ if (Config.ALLOW_TOPZONE_GAME_SERVER_REPORT)
+ {
+ System.out.println("Server votes on topzone: "+currentVotes);
+ System.out.println("Votes needed for reward: "+((lastVotes+voteRewardVotesDifference)-currentVotes));
+ }
+ if (firstPageVotes-lastVotes <= 0)
+ {
+ Announcements.getInstance().announceToAll("Vote reward: We are in the first page of topzone, so the reward will be big.");
+ if (Config.ALLOW_TOPZONE_GAME_SERVER_REPORT)
+ {
+ System.out.println("Server is on the first page of topzone.");
+ }
+ }
+ else
+ {
+ Announcements.getInstance().announceToAll("Vote reward: We need "+(firstPageVotes-lastVotes)+" vote(s) to get to the first page of topzone for big reward.");
+ if (Config.ALLOW_TOPZONE_GAME_SERVER_REPORT)
+ {
+ System.out.println("Server votes needed for first page: "+(firstPageVotes-lastVotes));
+ }
+ }
+ Announcements.getInstance().announceToAll("Vote reward: Type .menu to see what the big and what the small reward is.");
+ return;
+ }
+
+ if (currentVotes >= lastVotes+voteRewardVotesDifference)
+ {
+ Collection<L2PcInstance> pls = L2World.getInstance().getAllPlayers();
+ if (firstPageVotes-currentVotes <= 0)
+ {
+ if (Config.ALLOW_TOPZONE_GAME_SERVER_REPORT)
+ {
+ System.out.println("Server votes on topzone: "+currentVotes);
+ System.out.println("Server is on the first page of topzone.");
+ System.out.println("Votes needed for next reward: "+((currentVotes+voteRewardVotesDifference)-currentVotes));
+ }
+ Announcements.getInstance().announceToAll("Vote reward: Everyone has been rewarded with big reward.");
+ Announcements.getInstance().announceToAll("Vote reward: Current vote count is "+currentVotes+".");
+ Announcements.getInstance().announceToAll("Vote reward: Type .menu to see what the big and what the small reward is.");
+ for (L2PcInstance p : pls)
+ {
+ boolean canReward = false;
+ String pIp = p.getClient().getConnection().getInetAddress().getHostAddress();
+ if (playerIps.containsKey(pIp))
+ {
+ int count = playerIps.get(pIp);
+ if (count < Config.TOPZONE_DUALBOXES_ALLOWED)
+ {
+ playerIps.remove(pIp);
+ playerIps.put(pIp, count+1);
+ canReward = true;
+ }
+ }
+ else
+ {
+ canReward = true;
+ playerIps.put(pIp, 1);
+ }
+ if (canReward)
+ {
+ for (int i : Config.TOPZONE_BIG_REWARD.keySet())
+ {
+ p.addItem("Vote reward.", i, Config.TOPZONE_BIG_REWARD.get(i), p, true);
+ }
+ }
+ else
+ {
+ p.sendMessage("Already "+Config.TOPZONE_DUALBOXES_ALLOWED+" character(s) of your ip have been rewarded, so this character won't be rewarded.");
+ }
+ }
+ playerIps.clear();
+ }
+ else
+ {
+ if (Config.ALLOW_TOPZONE_GAME_SERVER_REPORT)
+ {
+ System.out.println("Server votes on topzone: "+currentVotes);
+ System.out.println("Server votes needed for first page: "+(firstPageVotes-lastVotes));
+ System.out.println("Votes needed for next reward: "+((currentVotes+voteRewardVotesDifference)-currentVotes));
+ }
+ Announcements.getInstance().announceToAll("Vote reward: Everyone has been rewarded with small reward.");
+ Announcements.getInstance().announceToAll("Vote reward: Current vote count is "+currentVotes+".");
+ Announcements.getInstance().announceToAll("Vote reward: We need "+(firstPageVotes-currentVotes)+" vote(s) to get to the first page of topzone for big reward.");
+ Announcements.getInstance().announceToAll("Vote reward: Type .menu to see what the big and what the small reward is.");
+ for (L2PcInstance p : pls)
+ {
+ boolean canReward = false;
+ String pIp = p.getClient().getConnection().getInetAddress().getHostAddress();
+ if (playerIps.containsKey(pIp))
+ {
+ int count = playerIps.get(pIp);
+ if (count < Config.TOPZONE_DUALBOXES_ALLOWED)
+ {
+ playerIps.remove(pIp);
+ playerIps.put(pIp, count+1);
+ canReward = true;
+ }
+ }
+ else
+ {
+ canReward = true;
+ playerIps.put(pIp, 1);
+ }
+ if (canReward)
+ {
+ for (int i : Config.TOPZONE_SMALL_REWARD.keySet())
+ {
+ p.addItem("Vote reward.", i, Config.TOPZONE_SMALL_REWARD.get(i), p, true);
+ }
+ }
+ else
+ {
+ p.sendMessage("Already "+Config.TOPZONE_DUALBOXES_ALLOWED+" character(s) of your ip have been rewarded, so this character won't be rewarded.");
+ }
+ }
+ playerIps.clear();
+ }
+
+ lastVotes = currentVotes;
+ }
+ else
+ {
+ if (firstPageVotes-currentVotes <= 0)
+ {
+ if (Config.ALLOW_TOPZONE_GAME_SERVER_REPORT)
+ {
+ System.out.println("Server votes on topzone: "+currentVotes);
+ System.out.println("Server is on the first page of topzone.");
+ System.out.println("Votes needed for next reward: "+((lastVotes+voteRewardVotesDifference)-currentVotes));
+ }
+ Announcements.getInstance().announceToAll("Vote reward: Current vote count is "+currentVotes+".");
+ Announcements.getInstance().announceToAll("Vote reward: We need "+((lastVotes+voteRewardVotesDifference)-currentVotes)+" vote(s) for big reward.");
+ Announcements.getInstance().announceToAll("Vote reward: Type .menu to see what the big and what the small reward is.");
+ }
+ else
+ {
+ if (Config.ALLOW_TOPZONE_GAME_SERVER_REPORT)
+ {
+ System.out.println("Server votes on topzone: "+currentVotes);
+ System.out.println("Server votes needed for first page: "+(firstPageVotes-lastVotes));
+ System.out.println("Votes needed for next reward: "+((lastVotes+voteRewardVotesDifference)-currentVotes));
+ }
+ Announcements.getInstance().announceToAll("Vote reward: Current vote count is "+currentVotes+".");
+ Announcements.getInstance().announceToAll("Vote reward: We need "+((lastVotes+voteRewardVotesDifference)-currentVotes)+" vote(s) for small reward.");
+ Announcements.getInstance().announceToAll("Vote reward: We need "+(firstPageVotes-currentVotes)+" vote(s) to get to the first page of topzone for big reward.");
+ Announcements.getInstance().announceToAll("Vote reward: Type .menu to see what the big and what the small reward is.");
+ }
+ }
+ }
+
+ private static int getFirstPageRankVotes()
+ {
+ InputStreamReader isr = null;
+ BufferedReader br = null;
+
+ try
+ {
+ URLConnection con = new URL(page1Url).openConnection();
+ con.addRequestProperty("User-Agent", "Mozilla/4.76");
+ isr = new InputStreamReader(con.getInputStream());
+ br = new BufferedReader(isr);
+
+ String line;
+ int i = 0;
+ while ((line = br.readLine()) != null)
+ {
+ if (line.contains("<td><div align=\"center\">"+firstPageRankNeeded+"</div></td>"))
+ {
+ i++;
+ }
+ if (line.contains("<td><div align=\"center\">") && i == 1)
+ {
+ i++;
+ }
+ if (line.contains("<td><div align=\"center\">") && i == 2)
+ {
+ i = 0;
+ int votes = Integer.valueOf(line.split(">")[2].replace("</div", ""));
+ return votes;
+ }
+ }
+
+ br.close();
+ isr.close();
+ }
+ catch (Exception e)
+ {
+ System.out.println(e);
+ System.out.println("Error while getting server vote count.");
+ }
+
+ return -1;
+ }
+
+ private static int getVotes()
+ {
+ InputStreamReader isr = null;
+ BufferedReader br = null;
+
+ try
+ {
+ URLConnection con = new URL(topzoneUrl).openConnection();
+ con.addRequestProperty("User-Agent", "Mozilla/4.76");
+ isr = new InputStreamReader(con.getInputStream());
+ br = new BufferedReader(isr);
+
+ boolean got = false;
+
+ String line;
+ while ((line = br.readLine()) != null)
+ {
+ if (line.contains("<tr><td><div align=\"center\"><b><font style=\"font-size:14px;color:#018BC1;\"") && !got)
+ {
+ got = true;
+ int votes = Integer.valueOf(line.split("=\"font-size:14px;color:#018BC1;\">")[1].replace("</font></b></div></td></tr>", ""));
+ return votes;
+ }
+ }
+
+ br.close();
+ isr.close();
+ }
+ catch (Exception e)
+ {
+ System.out.println(e);
+ System.out.println("Error while getting server vote count.");
+ }
+
+ return -1;
+ }
+}
\ No newline at end of file
Index: config/head/vote.properties
===================================================================
--- config/head/vote.properties (revision 0)
+++ config/head/vote.properties (revision 0)
@@ -0,0 +1,49 @@
+# Vote reward for Hopzone.
+AllowHopzoneVoteReward = True
+# Vote reward server link.
+# First page of servers list link.
+HopzoneFirstPageLink = http://l2.hopzone.net/lineage2/
+# Votes for next reward needed.
+HopzoneVotesDifference = 5
+# Rank needed for server to be on first page.
+HopzoneFirstPageRankNeeded = 15
+# Minutes between rewards.
+# Eg. You put 5 it checks every 5 minutes for reward.
+HopzoneRewardCheckTime = 5
+# Small reward(s).
+HopzoneSmallReward = 57,100000000;
+# Big reward(s).
+HopzoneBigReward = 3470,1;
+# Hopzone reward max dual boxes reward.
+# For example if you put 2 and someone has 3 boxes open 2 will be rewarded.
+HopzoneDuaboxesAllowed = 1
+# Game server console report.
+# If set to true, game server console will get a report of
+# current vote count, votes needed for next reward and votes needed for first page.
+AllowHopzoneGameServerReport = True
+
+# Vote reward for Topzone.
+AllowTopzoneVoteReward = True
+# Vote reward server link.
+# First page of servers list link.
+# Votes for next reward needed.
+TopzoneVotesDifference = 5
+# Rank needed for server to be on first page.
+TopzoneFirstPageRankNeeded = 15
+# Minutes between rewards.
+# Eg. You put 5 it checks every 5 minutes for reward.
+TopzoneRewardCheckTime = 5
+# Small reward(s).
+TopzoneSmallReward = 57,100000000;
+# Big reward(s).
+TopzoneBigReward = 3470,1;
+# Hopzone reward max dual boxes reward.
+# For example if you put 2 and someone has 3 boxes open 2 will be rewarded.
+TopzoneDuaboxesAllowed = 1
+# Game server console report.
+# If set to true, game server console will get a report of
+# current vote count, votes needed for next reward and votes needed for first page.
+AllowTopzoneGameServerReport = True
\ No newline at end of file
Index: head-src/com/l2jfrozen/gameserver/model/entity/VoteRewardHopzone.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/model/entity/VoteRewardHopzone.java (revision 0)
+++ head-src/com/l2jfrozen/gameserver/model/entity/VoteRewardHopzone.java (revision 0)
@@ -0,0 +1,323 @@
+/*
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later
+ * version.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ * 
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.l2jfrozen.gameserver.model.entity;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.Collection;
+
+import javolution.util.FastMap;
+
+import com.l2jfrozen.Config;
+import com.l2jfrozen.gameserver.model.entity.Announcements;
+import com.l2jfrozen.gameserver.thread.ThreadPoolManager;
+import com.l2jfrozen.gameserver.model.L2World;
+import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
+/**
+ * @author Anarchy
+ *
+ */
+public class VoteRewardHopzone
+{
+ // Configurations.
+ private static String hopzoneUrl = Config.HOPZONE_SERVER_LINK;
+ private static String page1Url = Config.HOPZONE_FIRST_PAGE_LINK;
+ private static int voteRewardVotesDifference = Config.HOPZONE_VOTES_DIFFERENCE;
+ private static int firstPageRankNeeded = Config.HOPZONE_FIRST_PAGE_RANK_NEEDED;
+ private static int checkTime = 60*1000*Config.HOPZONE_REWARD_CHECK_TIME;
+
+ // Don't-touch variables.
+ private static int lastVotes = 0;
+ private static FastMap<String, Integer> playerIps = new FastMap<String, Integer>();
+
+ public static void updateConfigurations()
+ {
+ hopzoneUrl = Config.HOPZONE_SERVER_LINK;
+ page1Url = Config.HOPZONE_FIRST_PAGE_LINK;
+ voteRewardVotesDifference = Config.HOPZONE_VOTES_DIFFERENCE;
+ firstPageRankNeeded = Config.HOPZONE_FIRST_PAGE_RANK_NEEDED;
+ checkTime = 60*1000*Config.HOPZONE_REWARD_CHECK_TIME;
+ }
+
+ public static void getInstance()
+ {
+ System.out.println("Vote reward system initialized.");
+ ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ if (Config.ALLOW_HOPZONE_VOTE_REWARD)
+ {
+ reward();
+ }
+ else
+ {
+ return;
+ }
+ }
+ }, checkTime/2, checkTime);
+ }
+
+ private static void reward()
+ {
+ int firstPageVotes = getFirstPageRankVotes();
+ int currentVotes = getVotes();
+
+ if (firstPageVotes == -1 || currentVotes == -1)
+ {
+ if (firstPageVotes == -1)
+ {
+ System.out.println("There was a problem on getting votes from server with rank "+firstPageRankNeeded+".");
+ }
+ if (currentVotes == -1)
+ {
+ System.out.println("There was a problem on getting server votes.");
+ }
+
+ return;
+ }
+
+ if (lastVotes == 0)
+ {
+ lastVotes = currentVotes;
+ Announcements.getInstance().announceToAll("Vote reward: Current vote count is "+currentVotes+".");
+ Announcements.getInstance().announceToAll("Vote reward: We need "+((lastVotes+voteRewardVotesDifference)-currentVotes)+" vote(s) for reward.");
+ if (Config.ALLOW_HOPZONE_GAME_SERVER_REPORT)
+ {
+ System.out.println("Server votes on hopzone: "+currentVotes);
+ System.out.println("Votes needed for reward: "+((lastVotes+voteRewardVotesDifference)-currentVotes));
+ }
+ if (firstPageVotes-lastVotes <= 0)
+ {
+ Announcements.getInstance().announceToAll("Vote reward: We are in the first page of Hopzone, so the reward will be big.");
+ if (Config.ALLOW_HOPZONE_GAME_SERVER_REPORT)
+ {
+ System.out.println("Server is on the first page of hopzone.");
+ }
+ }
+ else
+ {
+ Announcements.getInstance().announceToAll("Vote reward: We need "+(firstPageVotes-lastVotes)+" vote(s) to get to the first page of Hopzone for big reward.");
+ if (Config.ALLOW_HOPZONE_GAME_SERVER_REPORT)
+ {
+ System.out.println("Server votes needed for first page: "+(firstPageVotes-lastVotes));
+ }
+ }
+ Announcements.getInstance().announceToAll("Vote reward: Type .menu to see what the big and what the small reward is.");
+ return;
+ }
+
+ if (currentVotes >= lastVotes+voteRewardVotesDifference)
+ {
+ Collection<L2PcInstance> pls = L2World.getInstance().getAllPlayers();
+ if (firstPageVotes-currentVotes <= 0)
+ {
+ if (Config.ALLOW_HOPZONE_GAME_SERVER_REPORT)
+ {
+ System.out.println("Server votes on hopzone: "+currentVotes);
+ System.out.println("Server is on the first page of hopzone.");
+ System.out.println("Votes needed for next reward: "+((currentVotes+voteRewardVotesDifference)-currentVotes));
+ }
+ Announcements.getInstance().announceToAll("Vote reward: Everyone has been rewarded with big reward.");
+ Announcements.getInstance().announceToAll("Vote reward: Current vote count is "+currentVotes+".");
+ Announcements.getInstance().announceToAll("Vote reward: Type .menu to see what the big and what the small reward is.");
+ for (L2PcInstance p : pls)
+ {
+ boolean canReward = false;
+ String pIp = p.getClient().getConnection().getInetAddress().getHostAddress();
+ if (playerIps.containsKey(pIp))
+ {
+ int count = playerIps.get(pIp);
+ if (count < Config.HOPZONE_DUALBOXES_ALLOWED)
+ {
+ playerIps.remove(pIp);
+ playerIps.put(pIp, count+1);
+ canReward = true;
+ }
+ }
+ else
+ {
+ canReward = true;
+ playerIps.put(pIp, 1);
+ }
+ if (canReward)
+ {
+ for (int i : Config.HOPZONE_BIG_REWARD.keySet())
+ {
+ p.addItem("Vote reward.", i, Config.HOPZONE_BIG_REWARD.get(i), p, true);
+ }
+ }
+ else
+ {
+ p.sendMessage("Already "+Config.HOPZONE_DUALBOXES_ALLOWED+" character(s) of your ip have been rewarded, so this character won't be rewarded.");
+ }
+ }
+ playerIps.clear();
+ }
+ else
+ {
+ if (Config.ALLOW_HOPZONE_GAME_SERVER_REPORT)
+ {
+ System.out.println("Server votes on hopzone: "+currentVotes);
+ System.out.println("Server votes needed for first page: "+(firstPageVotes-lastVotes));
+ System.out.println("Votes needed for next reward: "+((currentVotes+voteRewardVotesDifference)-currentVotes));
+ }
+ Announcements.getInstance().announceToAll("Vote reward: Everyone has been rewarded with small reward.");
+ Announcements.getInstance().announceToAll("Vote reward: Current vote count is "+currentVotes+".");
+ Announcements.getInstance().announceToAll("Vote reward: We need "+(firstPageVotes-currentVotes)+" vote(s) to get to the first page of Hopzone for big reward.");
+ Announcements.getInstance().announceToAll("Vote reward: Type .menu to see what the big and what the small reward is.");
+ for (L2PcInstance p : pls)
+ {
+ boolean canReward = false;
+ String pIp = p.getClient().getConnection().getInetAddress().getHostAddress();
+ if (playerIps.containsKey(pIp))
+ {
+ int count = playerIps.get(pIp);
+ if (count < Config.HOPZONE_DUALBOXES_ALLOWED)
+ {
+ playerIps.remove(pIp);
+ playerIps.put(pIp, count+1);
+ canReward = true;
+ }
+ }
+ else
+ {
+ canReward = true;
+ playerIps.put(pIp, 1);
+ }
+ if (canReward)
+ {
+ for (int i : Config.HOPZONE_SMALL_REWARD.keySet())
+ {
+ p.addItem("Vote reward.", i, Config.HOPZONE_SMALL_REWARD.get(i), p, true);
+ }
+ }
+ else
+ {
+ p.sendMessage("Already "+Config.HOPZONE_DUALBOXES_ALLOWED+" character(s) of your ip have been rewarded, so this character won't be rewarded.");
+ }
+ }
+ playerIps.clear();
+ }
+
+ lastVotes = currentVotes;
+ }
+ else
+ {
+ if (firstPageVotes-currentVotes <= 0)
+ {
+ if (Config.ALLOW_HOPZONE_GAME_SERVER_REPORT)
+ {
+ System.out.println("Server votes on hopzone: "+currentVotes);
+ System.out.println("Server is on the first page of hopzone.");
+ System.out.println("Votes needed for next reward: "+((lastVotes+voteRewardVotesDifference)-currentVotes));
+ }
+ Announcements.getInstance().announceToAll("Vote reward: Current vote count is "+currentVotes+".");
+ Announcements.getInstance().announceToAll("Vote reward: We need "+((lastVotes+voteRewardVotesDifference)-currentVotes)+" vote(s) for big reward.");
+ Announcements.getInstance().announceToAll("Vote reward: Type .menu to see what the big and what the small reward is.");
+ }
+ else
+ {
+ if (Config.ALLOW_HOPZONE_GAME_SERVER_REPORT)
+ {
+ System.out.println("Server votes on hopzone: "+currentVotes);
+ System.out.println("Server votes needed for first page: "+(firstPageVotes-lastVotes));
+ System.out.println("Votes needed for next reward: "+((lastVotes+voteRewardVotesDifference)-currentVotes));
+ }
+ Announcements.getInstance().announceToAll("Vote reward: Current vote count is "+currentVotes+".");
+ Announcements.getInstance().announceToAll("Vote reward: We need "+((lastVotes+voteRewardVotesDifference)-currentVotes)+" vote(s) for small reward.");
+ Announcements.getInstance().announceToAll("Vote reward: We need "+(firstPageVotes-currentVotes)+" vote(s) to get to the first page of Hopzone for big reward.");
+ Announcements.getInstance().announceToAll("Vote reward: Type .menu to see what the big and what the small reward is.");
+ }
+ }
+ }
+
+ private static int getFirstPageRankVotes()
+ {
+ InputStreamReader isr = null;
+ BufferedReader br = null;
+
+ try
+ {
+ URLConnection con = new URL(page1Url).openConnection();
+ con.addRequestProperty("User-Agent", "Mozilla/4.76");
+ isr = new InputStreamReader(con.getInputStream());
+ br = new BufferedReader(isr);
+
+ String line;
+ int i = 0;
+ while ((line = br.readLine()) != null)
+ {
+ if (line.contains("<span class=\"no\">"+firstPageRankNeeded+"</span>"))
+ {
+ i++;
+ }
+ if (line.contains("Anonymous Votes") && i == 1)
+ {
+ i = 0;
+ int votes = Integer.valueOf(line.split(">")[1].replace("</span", ""));
+ return votes;
+ }
+ }
+
+ br.close();
+ isr.close();
+ }
+ catch (Exception e)
+ {
+ System.out.println(e);
+ System.out.println("Error while getting server vote count.");
+ }
+
+ return -1;
+ }
+
+ private static int getVotes()
+ {
+ InputStreamReader isr = null;
+ BufferedReader br = null;
+
+ try
+ {
+ URLConnection con = new URL(hopzoneUrl).openConnection();
+ con.addRequestProperty("User-Agent", "Mozilla/4.76");
+ isr = new InputStreamReader(con.getInputStream());
+ br = new BufferedReader(isr);
+
+ String line;
+ while ((line = br.readLine()) != null)
+ {
+ if (line.contains("Anonymous User Votes"))
+ {
+ int votes = Integer.valueOf(line.split(">")[2].replace("</span", ""));
+ return votes;
+ }
+ }
+
+ br.close();
+ isr.close();
+ }
+ catch (Exception e)
+ {
+ System.out.println(e);
+ System.out.println("Error while getting server vote count.");
+ }
+
+ return -1;
+ }
+}
\ No newline at end of file
 
  • 0
Posted (edited)

http://www.maxcheaters.com/topic/134612-vortex-vote-reward-engine-ingame-personal-system-100-secure/

 

to exw gia H5 ama thes sto deinw.

pantos ean exeis upomoni perase to L2JHellas.

to exei perasmeno mpwreis na to pareis mesa apo to source 

Edited by ExCaLiBuR®
  • 0
Posted

File mou to thema m ine oti doulevw se frozen project...Kai epidi ton exw vali twra se eteria mou ipan oti prepei na ton parw sto pc m na tou valw code mesw eclipse k 3ana anevasma swsta???

  • 0
Posted

File mou to thema m ine oti doulevw se frozen project...Kai epidi ton exw vali twra se eteria mou ipan oti prepei na ton parw sto pc m na tou valw code mesw eclipse k 3ana anevasma swsta???

oxi. ektos kai ean ekanes malakia kai esvises to source apo to pc sou.

apla ean thes na peraseis kapoion kwdika to pairnas sto pc sou kaneis compile

pairneis to .JAR kai sto stelneis sto dedicated

  • 0
Posted

den exw svisi file tpt ta source iparxoun sto workspace alla poio .jar pernis egw thimame ekana apla extract ta files se ena fakelo server kai eftiaxna ta config

  • 0
Posted

Epidi einai se alo pc to source tha sto stilw ayrio eyxaristw poly ek ton proterwn..An thelis mporis na me kani k skype(lampros.xiroudakis)pou exis mia alfa gnwsi apo oti vlepw

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

    • I’ve worked with teams spread across a few regions, and having a group that actually connects tech, security, and digital assets made things smoother for us, especially during cross‑city projects. I liked how straightforward their setup was, and tapping into their digital assets side helped us speed up a couple of integrations. If you’re scaling across different markets, it might be a handy option to look into.
    • Hello guys, I’m Morientes, owner of the servers you might know: L2Lionna / L2Pandora / L2Ramona / L2ERA / L2Zaken / L2Classic / L2Peri / L2Alice / L2EVA / L2Dragon and more. Over the years I’ve been developing Lineage II projects starting from High Five, then Classic, and later Essence. I started with High Five, which I turned into a very well-tested server with over 100 openings. My peak was around 2800 players online, and the server was stable (no crashes). With every opening there was always something to improve, fix, or optimize, and over time it became more and more stable. I still have all SVN commits from all those years, I can show everything via screen share if needed. The reason I’m selling is not because of the quality. The files are solid and ready to run any type of server (any rates). The problem was on our side;  we didn’t have a good long-term strategy for reopening servers as a team. About Classic: I started from 2.0 (Zaken version) and gradually upgraded it up to 4.7 Kamael. Each chronicle upgrade came with a lot of improvements, especially in terms of stability. About Essence: I started from the very first version and developed it up to High Elf (Protocol 464). Starting from Protocol 286 (Secrets of Empire), I worked with PTS files and extracted a lot of deep fixes. I unpacked AI.obj with full functionality, used official sniffers, and whenever something wasn’t clear, I checked directly on official servers and sniffed packets or data. For every chronicle update, I basically sniffed the entire official server, zones, monsters, events, mechanics, everything. From Chronicle 388, Reborn approached us to buy our files. The current L2Reborn Essence is based on my work! I can prove everything. I also have their updates integrated into my pack. I stopped development after High Elf mainly because my main developer was constantly looking for other opportunities. It became difficult to maintain a stable team, especially with everything going on (including the situation in Ukraine at that time). Eventually, I couldn’t find a reliable dev to continue working on Essence, so I decided to step away from this market last year. Now I’ve decided to sell everything. What I’m selling: All necessary tools (sniffing, geodata build, pack upgrade tools, game client parsers, L2Wiki parser, interfaces etc.) Full SVN repositories with all commits (Essence / Classic / High Five) All edited clients I still have All my data I can also include on sell an official character that is active daily, ranked, end up gear, and has access to end-game zones!!! useful for deep sniffing where normal players don’t have access. If someone wants to buy everything, I prefer a full deal and I will transfer full ownership. If needed, I can also sell parts separately, but honestly I’d prefer to sell everything to one team that can continue this project — this has been my work, my hobby, my baby. Important: I don’t offer further updates. The files are sold exactly as they are. I will, of course, explain everything you need to know to continue working on them. Contact: Telegram: @AlexAlexey Discord: .primsl2
    • Grand Opening: April 11, 2026 Website: https://l2strive.com Discord: https://discord.gg/SsUARZpbkG   🛡️ Server Rates Strive is a High Five Mid-PvP/Craft Server  Experience (XP): x15 Skill Points (SP): x15 Adena: x10 Drop: x15 Spoil: x3 Safe Enchant: +3 Max Enchant: +16 ⚔️ Enhanced Boss Jewelry     ⚔️ Making Bosses Useful Again Let’s be real: usually, Core, Orfen, and Baylor are just placeholder bosses that nobody cares about. We’ve overhauled their jewelry to make them legit end-game gear. We’ve turned these into high-value targets for PvP—if you want these massive percentage boosts, you’re going to have to fight for them.   ⚔️ Enhanced Boss Jewelry   💍 Improved Ring of Core Base Stats: M.Def 48 | HP +445 | MP +21 Offensive: P. Atk +12% | M. Atk +12% Critical: Physical Critical Rate +14 | Magic Critical Rate +2 Utility: Skill Reuse Delay -10% | MP Consumption -5% 🛡️ Improved Earring of Orfen Base Stats: M.Def 71 | MP +31 Defensive: P. Def +15% | M. Def +15% Recovery: Vampiric Rage +4% | Healing Received +6% Resistances: Bleed / Poison / Root / Sleep +20% (Chance & Resistance) 💎 Baylor's Earring Base Stats: M.Def 71 | MP +31 Speed: Atk. Spd +5% | Casting Spd +5% Combat: MP Regeneration +5% Resistances: Stun / Paralyze +30% (Chance & Resistance) 🚀 Core Features Full & Enchanted Buffs: Enjoy 6-hour durations on all standard and enchanted buffs. Premium Buffs: Premium users benefit from extended 9-hour buff durations. 100% Free AutoFarm: Built-in system for seamless progression while away from your PC. Custom Shop: Professional and intuitive UI for all essential equipment and consumables. NPC Buffer: Full scheme support to get you battle-ready instantly. Stability: Dedicated high-performance hardware with professional Anti-DDoS protection.  
    • Hello,   im looking for c4 client developer that can fix some issues, missing icons etc. if you are l2off developer then even better.   its easy ones, fix few skill icons, item icon, easy money if someone has time. I guess its lack of files in my patch, but might be smth other   contact with me on discord: endART_#6190 @DumanisT @SkyLord @XManton @Fr3DBr @mjst @Sighed any ideas who could help me XD
  • 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..