Secret Experience

Secret Experience (https://secretexperience.net/)
-   [Lineage] Java Mods (https://secretexperience.net/lineage-java-mods/)
-   -   [L2JServer] Siege Reward System (https://secretexperience.net/lineage-java-mods/29186-siege-reward-system.html)

Lanterna-Verde 31-01-2011 02:12 PM

Siege Reward System
 
Código:

Index: E:/L2j Development/workspace/L2_GameServer_It/java/config/SiegeRewards.properties
===================================================================
--- E:/L2j Development/workspace/L2_GameServer_It/java/config/SiegeRewards.properties        (revision 0)
+++ E:/L2j Development/workspace/L2_GameServer_It/java/config/SiegeRewards.properties        (revision 0)
@@ -0,0 +1,18 @@
+# ===============================================
+# Siege Reward System. By Erol & Setekh
+# ===============================================
+# Description: Siege Reward System is a system that rewards the victor's clan members on a siege.
+# - This engine contains a boolean that enables offline clan member to get rewarded too.
+# - And a list that will get parsed once the engine is instanced.
+# - The list will parse the items id and count and rewords the siege's victor clan.
+# ===============================================
+# Activates the system if its set as true
+ActivateSystem = False
+
+# Set as true it will reward only the online clan members,
+# setting it as false it will reward all members including offline.
+RewardOnlineOnly = False
+
+# The item info list.
+# To add a item with count just add " , " to split the item and count and " ; " to close the statement
+RewardInfo = 57,2000;5575,2000000
\ No newline at end of file
Index: E:/L2j Development/workspace/L2_GameServer_It/java/net/sf/l2j/gameserver/clientpackets/EnterWorld.java
===================================================================
--- E:/L2j Development/workspace/L2_GameServer_It/java/net/sf/l2j/gameserver/clientpackets/EnterWorld.java        (revision 4034)
+++ E:/L2j Development/workspace/L2_GameServer_It/java/net/sf/l2j/gameserver/clientpackets/EnterWorld.java        (working copy)
@@ -41,6 +41,7 @@
 import net.sf.l2j.gameserver.instancemanager.DimensionalRiftManager;
 import net.sf.l2j.gameserver.instancemanager.PetitionManager;
 import net.sf.l2j.gameserver.instancemanager.SiegeManager;
+import net.sf.l2j.gameserver.instancemanager.SiegeRewardManager;
 import net.sf.l2j.gameserver.model.L2Character;
 import net.sf.l2j.gameserver.model.L2Clan;
 import net.sf.l2j.gameserver.model.L2Effect;
@@ -347,6 +348,10 @@
            activeChar.sendPacket(new GameGuardQuery());*/
 
        TvTEvent.onLogin(activeChar);
+       
+        if(SiegeRewardManager.ACTIVATED_SYSTEM && !SiegeRewardManager.REWARD_ACTIVE_MEMBERS_ONLY)
+                SiegeRewardManager.getInstance().processWorldEnter(activeChar);
+
        }
 
    /**
Index: E:/L2j Development/workspace/L2_GameServer_It/java/net/sf/l2j/gameserver/model/entity/Siege.java
===================================================================
--- E:/L2j Development/workspace/L2_GameServer_It/java/net/sf/l2j/gameserver/model/entity/Siege.java        (revision 4034)
+++ E:/L2j Development/workspace/L2_GameServer_It/java/net/sf/l2j/gameserver/model/entity/Siege.java        (working copy)
@@ -34,6 +34,7 @@
 import net.sf.l2j.gameserver.instancemanager.MercTicketManager;
 import net.sf.l2j.gameserver.instancemanager.SiegeGuardManager;
 import net.sf.l2j.gameserver.instancemanager.SiegeManager;
+import net.sf.l2j.gameserver.instancemanager.SiegeRewardManager;
 import net.sf.l2j.gameserver.instancemanager.SiegeManager.SiegeSpawn;
 import net.sf.l2j.gameserver.model.L2Character;
 import net.sf.l2j.gameserver.model.L2Clan;
@@ -290,6 +291,10 @@
            if (getCastle().getOwnerId() > 0) _siegeGuardManager.removeMercs();
            getCastle().spawnDoor(); // Respawn door to castle
            getCastle().getZone().updateZoneStatusForCharactersInside();
+
+            // Siege Reward Manager
+            if(getCastle().getOwnerId() > 0)
+                    SiegeRewardManager.getInstance().notifySiegeEnded(ClanTable.getInstance().getClan(getCastle().getOwnerId()), getCastle().getName());
        }
    }
 
Index: E:/L2j Development/workspace/L2_GameServer_It/java/net/sf/l2j/gameserver/GameServer.java
===================================================================
--- E:/L2j Development/workspace/L2_GameServer_It/java/net/sf/l2j/gameserver/GameServer.java        (revision 4034)
+++ E:/L2j Development/workspace/L2_GameServer_It/java/net/sf/l2j/gameserver/GameServer.java        (working copy)
@@ -214,6 +214,7 @@
 import net.sf.l2j.gameserver.instancemanager.QuestManager;
 import net.sf.l2j.gameserver.instancemanager.RaidBossSpawnManager;
 import net.sf.l2j.gameserver.instancemanager.SiegeManager;
+import net.sf.l2j.gameserver.instancemanager.SiegeRewardManager;
 import net.sf.l2j.gameserver.model.AutoChatHandler;
 import net.sf.l2j.gameserver.model.AutoSpawnHandler;
 import net.sf.l2j.gameserver.model.L2Manor;
@@ -413,6 +414,10 @@
                //PartyCommandManager.getInstance();
                PetitionManager.getInstance();
                QuestManager.getInstance();
+               
+                // Siege Reward Manager - Seth
+                SiegeRewardManager.getInstance();
+               
                AugmentationData.getInstance();
                if (Config.SAVE_DROPPED_ITEM)
                        ItemsOnGroundManager.getInstance();
Index: E:/L2j Development/workspace/L2_GameServer_It/java/net/sf/l2j/gameserver/instancemanager/SiegeRewardManager.java
===================================================================
--- E:/L2j Development/workspace/L2_GameServer_It/java/net/sf/l2j/gameserver/instancemanager/SiegeRewardManager.java        (revision 0)
+++ E:/L2j Development/workspace/L2_GameServer_It/java/net/sf/l2j/gameserver/instancemanager/SiegeRewardManager.java        (revision 0)
@@ -0,0 +1,306 @@
+/* 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 2, 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+package net.sf.l2j.gameserver.instancemanager;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.Properties;
+import java.util.logging.Logger;
+
+import javolution.util.FastList;
+import javolution.util.FastMap;
+import net.sf.l2j.L2DatabaseFactory;
+import net.sf.l2j.gameserver.model.L2Clan;
+import net.sf.l2j.gameserver.model.L2ClanMember;
+import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
+
+/**
+ * @author  Setekh
+ * Doing your mom while ur reading
+ */
+public class SiegeRewardManager
+{
+        // Singleton
+        private static SiegeRewardManager _instance;
+        static Logger _log = Logger.getLogger(SiegeRewardManager.class.getName());
+       
+        // Config
+        public static boolean ACTIVATED_SYSTEM;
+        public static boolean REWARD_ACTIVE_MEMBERS_ONLY;
+
+        // Constant
+        private final FastList<RewardInfoz> _list;
+        private final FastMap<Integer, FastList<ToReward>> _toReward; // Offline players that didn't get rewarded. =( poor guys, But they'll have a surprise
+       
+        public SiegeRewardManager()
+        {
+                _list = new FastList<RewardInfoz>();
+                _toReward = new FastMap<Integer, FastList<ToReward>>();
+                _log.info("SiegeRewardManager: Activated.");
+        }
+
+        public static SiegeRewardManager getInstance()
+        {
+                if(_instance == null)
+                {
+                        _instance = new SiegeRewardManager();
+                        _instance.loadConfigs();
+                        _instance.loadOfflineMembers();
+                }
+               
+                return _instance;
+        }
+       
+        private void loadOfflineMembers()
+        {
+                // Mysql connector
+                Connection con = null;
+               
+                try
+                {
+                        con = L2DatabaseFactory.getInstance().getConnection();
+                        PreparedStatement st = con.prepareStatement("select charId, itemId, count, castle_name, rewarded from reward_list");
+                        ResultSet rs = st.executeQuery();
+                       
+                        while(rs.next())
+                        {
+                                int charId = rs.getInt("charId");
+                                int itemId = rs.getInt("itemId");
+                                int count = rs.getInt("count");
+                                String castle_name = rs.getString("castle_name");
+                                boolean rewarded = rs.getBoolean("rewarded");
+                               
+                                if(rewarded)
+                                {
+                                        deleteRewarded(charId, itemId);
+                                        continue;
+                                }
+                               
+                                ToReward tr = new ToReward();
+                                tr.charId = charId;
+                                tr.itemId = itemId;
+                                tr.count = count;
+                                tr.castleName = castle_name;
+                               
+                                if(!_toReward.containsKey(charId))
+                                {
+                                        try // prevent errors
+                                        {
+                                                _toReward.put(charId, new FastList<ToReward>());
+                                        }
+                                        finally
+                                        {
+                                                _toReward.get(charId).add(tr);
+                                        }
+                                }
+                                else
+                                        _toReward.get(charId).add(tr);
+                               
+                        }
+                       
+                        rs.close();
+                        st.close();
+                }
+                catch(Exception e)
+                {
+                        e.printStackTrace();
+                }
+                finally
+                {
+                        try
+                        {
+                                con.close();
+                        }
+                        catch (SQLException e)
+                        {
+                                e.printStackTrace();
+                        }
+                }
+        }
+
+        public void deleteRewarded(int charId, int itemId)
+        {
+                // Mysql connector
+                Connection con = null;
+               
+                try
+                {
+                        con = L2DatabaseFactory.getInstance().getConnection();
+                        PreparedStatement st = con.prepareStatement("delete from reward_list where charId=? and itemId=?");
+                        st.setInt(1, charId);
+                        st.setInt(2, itemId);
+                        st.execute();
+                        st.close();
+                }
+                catch(Exception e)
+                {
+                        e.printStackTrace();
+                }
+                finally
+                {
+                        try
+                        {
+                                con.close();
+                        }
+                        catch (SQLException e)
+                        {
+                                e.printStackTrace();
+                        }
+                }
+        }
+       
+        private void loadConfigs()
+        {
+                try
+                {
+                        Properties prop = new Properties();
+                        prop.load(new FileInputStream(new File("./config/SiegeRewards.properties")));
+                       
+                        ACTIVATED_SYSTEM = Boolean.parseBoolean(prop.getProperty("ActivateSystem", "false"));
+                        REWARD_ACTIVE_MEMBERS_ONLY = Boolean.parseBoolean(prop.getProperty("RewardOnlineOnly", "false"));
+                       
+                        if(ACTIVATED_SYSTEM)
+                        {
+                                String[] splitz = prop.getProperty("RewardInfo").split(";");
+                               
+                                for(String str: splitz)
+                                {
+                                        String[] splits = str.split(",");
+                                        _list.add(new RewardInfoz(splits));
+                                }
+                        }
+                }
+                catch(Exception e)
+                {
+                        e.printStackTrace();
+                }
+                finally
+                {
+                        _log.info("SiegeRewardManager Loaded: "+_list.size()+" Reword Item(s).");
+                }
+        }
+
+        public void storeDataBase(int charId, String castleName)
+        {
+                // Mysql connector
+                Connection con = null;
+               
+                try
+                {
+                        con = L2DatabaseFactory.getInstance().getConnection();
+                       
+                        for(RewardInfoz rewz : _list)
+                        {
+                                PreparedStatement st = con.prepareStatement("replace into reward_list values(?,?,?,?,?)");
+                                st.setInt(1, charId);
+                                st.setInt(2, rewz.getItemId());
+                                st.setInt(3, rewz.getItemCount());
+                                st.setString(4, castleName);
+                                st.setInt(5, 0);
+                                st.execute();
+                                st.close();
+                        }
+                }
+                catch(Exception e)
+                {
+                        e.printStackTrace();
+                }
+                finally
+                {
+                        try
+                        {
+                                con.close();
+                        }
+                        catch (SQLException e)
+                        {
+                                e.printStackTrace();
+                        }
+                }
+        }
+       
+        public void processWorldEnter(L2PcInstance activeChar)
+        {
+                if(_toReward.containsKey(activeChar.getObjectId()))
+                {
+                        String castleName = "";
+                       
+                        for(ToReward tr :_toReward.get(activeChar.getObjectId()))
+                        {
+                                activeChar.addItem("SiegeReward", tr.itemId, tr.count, activeChar, true);
+                                castleName = tr.castleName;
+                                tr.rewarded = true;
+                        }
+                        activeChar.sendMessage("Congratulations! You have been rewarded for the " +castleName+ " siege victory!");
+                }
+        }
+       
+        public class ToReward { String castleName; int charId, itemId, count; boolean rewarded; }
+       
+        public class RewardInfoz
+        {
+                // Constants
+                private final int _itemId;
+                private final int _itemCount;
+               
+                public RewardInfoz(String...strings)
+                {
+                        _itemId = Integer.parseInt(strings[0]);
+                        _itemCount = Integer.parseInt(strings[1]);
+                }
+
+                /**
+                * @return Returns the itemId.
+                */
+                public int getItemId()
+                {
+                        return _itemId;
+                }
+
+                /**
+                * @return Returns the itemCount.
+                */
+                public int getItemCount()
+                {
+                        return _itemCount;
+                }
+               
+        }
+
+        public void notifySiegeEnded(L2Clan clan, String castleName)
+        {
+                for(L2ClanMember member : clan.getMembers())
+                {
+                        if(member.isOnline())
+                        {
+                                L2PcInstance activeChar = member.getPlayerInstance();
+                               
+                                for(RewardInfoz tr : _list)
+                                        activeChar.addItem("SiegeReward", tr.getItemId(), tr.getItemCount(), activeChar, true);
+
+                                activeChar.sendMessage("Congratulations! You have been rewarded for the " +castleName+ " siege victory!");
+                        }
+                        else
+                                storeDataBase(member.getObjectId(), castleName);
+                }
+        }
+       
+}

Código:

SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `reward_list`
-- ----------------------------
DROP TABLE IF EXISTS `reward_list`;
CREATE TABLE `reward_list` (
  `charid` int(11) NOT NULL default '0',
  `itemId` int(11) NOT NULL default '0',
  `count` int(22) NOT NULL default '0',
  `castle_name` varchar(50) NOT NULL default '',
  `rewarded` int(2) NOT NULL default '0',
  PRIMARY KEY  (`charid`,`itemId`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Link
[Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar] | [Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar]

xadresz 31-01-2011 04:00 PM

Oque ele exatamente faz?
Ele entrega os itens ao player a cada kill ou quando ganha a siege?
Vlw!

Lanterna-Verde 31-01-2011 04:03 PM

ao término da siege, o clan vitorioso ganha determinado item (pode ser configurado se é somente os jogadores online ou não)

leonardoalves 13-02-2011 01:53 PM

addcionei mais falta as opções config.java né. ¬¬'

ADMxPaGoDeiRo 12-01-2012 10:27 AM

alguém adapta para l2jfrozen por favor.

OliverSykes 12-01-2012 10:33 AM

Amigo adptar para frozen é mole achou cada arquivo ai que se pede a unica coisa que vai ter que mudar pra frozen é essa parte aqui +import net.sf.l2j.

ADMxPaGoDeiRo 12-01-2012 04:43 PM

Mais nem é isso mano, as vezes as linhas de referencia são diferentes ai não consigo colocar.

OliverSykes 12-01-2012 08:42 PM

Achei a linhas aqui no pack da frozen e foi normalmente o codigo !

xdavison 13-01-2012 02:11 AM

Duvida: Dar itens para todos do Clan ou só para o líder?

OliverSykes 13-01-2012 02:22 AM

Citação:

+# Set as true it will reward only the online clan members,
+# setting it as false it will reward all members including offline.
+RewardOnlineOnly = False
Resumindo todos os players online no momento da SIEGE terminando ira ganhar os itens que você escolherar aqui

Citação:

+
+# The item info list.
+# To add a item with count just add " , " to split the item and count and " ; " to close the statement
+RewardInfo = 57,2000;5575,2000000



Horários baseados na GMT -3. Agora são 05:09 AM.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.3.0