Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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;
- -- ----------------------------
- -- Records of reward_list
- -- ----------------------------
- 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);
- + }
- + }
- +
- +}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement