Noticias:

No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.

Menú Principal

Multifunction zone -No da pvp en Giran Town-

Iniciado por heladito, Oct 23, 2025, 03:04 PM

Tema anterior - Siguiente tema

heladito

hola, agregue este codigo que es una zona multifunction   y puse zona de pvp como giran town, el tema es que no suma los pvp :/ alguien tiene idea de por que y como lo puedo solucionar? gracias.

### Eclipse Workspace Patch 1.0
#P L2jFrozen_GameServer
Index: head-src/com/l2jfrozen/gameserver/model/L2Character.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/model/L2Character.java    (revision 948)
+++ head-src/com/l2jfrozen/gameserver/model/L2Character.java    (working copy)
@@ -339,6 +339,9 @@
       
        /** The Constant ZONE_DANGERAREA. */
        public static final int ZONE_DANGERAREA = 16384;
+      
+       /** The Constant ZONE_MULTIFUNCTION. */
+       public static final int ZONE_MULTIFUNCTION = 16385;
 
        /** The _current zones. */
        private int _currentZones = 0;
Index: head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestRecipeShopListSet.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestRecipeShopListSet.java       (revision 948)
+++ head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestRecipeShopListSet.java       (working copy)
@@ -19,9 +19,11 @@
 package com.l2jfrozen.gameserver.network.clientpackets;
 
 import com.l2jfrozen.Config;
+import com.l2jfrozen.gameserver.model.L2Character;
 import com.l2jfrozen.gameserver.model.L2ManufactureItem;
 import com.l2jfrozen.gameserver.model.L2ManufactureList;
 import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jfrozen.gameserver.model.zone.type.L2MultiFunctionZone;
 import com.l2jfrozen.gameserver.network.SystemMessageId;
 import com.l2jfrozen.gameserver.network.serverpackets.RecipeShopMsg;
 import com.l2jfrozen.gameserver.network.serverpackets.SystemMessage;
@@ -64,6 +66,12 @@
                        player.sendPacket(new SystemMessage(SystemMessageId.CANT_CRAFT_DURING_COMBAT));
                        return;
                }
+              
+               if (player.isInsideZone(L2Character.ZONE_MULTIFUNCTION) && !L2MultiFunctionZone.store_zone)
+               {
+                       player.sendMessage("You cannot craft while inside Multifunction zone.");
+                       return;
+               }
 
                if(player.isTradeDisabled())
                {
Index: head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestRestart.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestRestart.java (revision 948)
+++ head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestRestart.java (working copy)
@@ -25,10 +25,12 @@
 import com.l2jfrozen.gameserver.communitybbs.Manager.RegionBBSManager;
 import com.l2jfrozen.gameserver.datatables.SkillTable;
 import com.l2jfrozen.gameserver.model.Inventory;
+import com.l2jfrozen.gameserver.model.L2Character;
 import com.l2jfrozen.gameserver.model.L2Party;
 import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jfrozen.gameserver.model.entity.olympiad.Olympiad;
 import com.l2jfrozen.gameserver.model.entity.sevensigns.SevenSignsFestival;
+import com.l2jfrozen.gameserver.model.zone.type.L2MultiFunctionZone;
 import com.l2jfrozen.gameserver.network.L2GameClient;
 import com.l2jfrozen.gameserver.network.L2GameClient.GameClientState;
 import com.l2jfrozen.gameserver.network.SystemMessageId;
@@ -103,6 +105,13 @@
                        sendPacket(RestartResponse.valueOf(false));
                        return;
                }
+              
+               if(player.isInsideZone(L2Character.ZONE_MULTIFUNCTION) && !L2MultiFunctionZone.restart_zone)
+               {
+                       player.sendMessage("You cannot restart while inside a Multifunction zone.");
+                       sendPacket(RestartResponse.valueOf(false));
+                       return;
+               }
 
                // Check if player is in away mode
                if(player.isAway())
Index: config/MultiFunctionZone.properties
===================================================================
--- config/MultiFunctionZone.properties (revision 0)
+++ config/MultiFunctionZone.properties (revision 0)
@@ -0,0 +1,60 @@
+# ---------------------------------------------------------------------------
+# MultiFunctionZone - custom addon for your server
+# ---------------------------------------------------------------------------
+# This option will turn on PvP flag to all people when entering to the zone
+EnablePvP = True
+
+# If set to false, zone will be no-restart zone
+NoRestartZone = False
+
+# If set to false, zone will be no-logout zone
+NoLogoutZone = False
+
+# If set to false, zone will be no-store zone
+NoStoreZone = False
+
+# Give noblesse after revive?
+ReviveNoblesse = False
+
+# Heal after revive?
+ReviveHeal = False
+
+# Delay, in seconds, to wait before revive
+# 0 to disable
+ReviveDelay = 10
+
+# Set the spawn points where players will be teleported on revive, if enabled
+# example:150111,144740,-12248;143665,144418,-12022;144443,147685,-12139
+SpawnLoc = 150111,144740,-12248;143665,144418,-12022;144443,147685,-12139
+
+# Random respawn radius
+RespawnRadius = 500
+
+# If set to true, players will take noblesse blessing when entering
+GiveNoblesse = True
+
+# Remove buffs when entering to the zone
+RemoveBuffs = False
+
+# Remove pets when entering to the zone
+RemovePets = False
+
+# Special rewards when hunting inside this zone
+# example: 57,100000;14720,1
+Rewards = 57,100000;14720,1
+
+# List of Items(id's) that won't be usable inside this area and also will be unequiped when entering
+# (armor, weapons, scrolls, potions, etc), example: 728,7575, 6383, 1538
+Items = 728,7575,6383,1538
+
+# List of Grades that won't be usable inside this area and also will be unequiped when entering
+# example: D,C,B,A,S,S80,S84
+Grades = C,B,A
+
+# Items with this enchant or more won't be usable inside this area and also will be unequiped when entering
+# 0 to disable
+Enchant = 0
+
+# Players with one of that classes won't be able to enter to the zone
+# example: 93,85,12
+Classes = 92
\ No newline at end of file
Index: head-src/com/l2jfrozen/gameserver/network/clientpackets/Logout.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/network/clientpackets/Logout.java (revision 948)
+++ head-src/com/l2jfrozen/gameserver/network/clientpackets/Logout.java (working copy)
@@ -19,10 +19,12 @@
import com.l2jfrozen.Config;
import com.l2jfrozen.gameserver.communitybbs.Manager.RegionBBSManager;
import com.l2jfrozen.gameserver.datatables.SkillTable;
+import com.l2jfrozen.gameserver.model.L2Character;
import com.l2jfrozen.gameserver.model.L2Party;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfrozen.gameserver.model.entity.olympiad.Olympiad;
import com.l2jfrozen.gameserver.model.entity.sevensigns.SevenSignsFestival;
+import com.l2jfrozen.gameserver.model.zone.type.L2MultiFunctionZone;
import com.l2jfrozen.gameserver.network.SystemMessageId;
import com.l2jfrozen.gameserver.network.serverpackets.ActionFailed;
import com.l2jfrozen.gameserver.network.serverpackets.SystemMessage;
@@ -50,6 +52,13 @@
                        player.sendPacket(ActionFailed.STATIC_PACKET);
                        return;
                }
+              
+               if(player.isInsideZone(L2Character.ZONE_MULTIFUNCTION) && !L2MultiFunctionZone.logout_zone)
+               {
+                       player.sendMessage("You cannot Logout while inside a Multifunction zone.");
+                       player.sendPacket(ActionFailed.STATIC_PACKET);
+                       return;
+               }
 
                if (player.isAway())
                {
Index: head-src/com/l2jfrozen/gameserver/datatables/xml/ZoneData.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/datatables/xml/ZoneData.java      (revision 948)
+++ head-src/com/l2jfrozen/gameserver/datatables/xml/ZoneData.java      (working copy)
@@ -58,6 +58,7 @@
import com.l2jfrozen.gameserver.model.zone.type.L2FortZone;
import com.l2jfrozen.gameserver.model.zone.type.L2JailZone;
import com.l2jfrozen.gameserver.model.zone.type.L2MotherTreeZone;
+import com.l2jfrozen.gameserver.model.zone.type.L2MultiFunctionZone;
import com.l2jfrozen.gameserver.model.zone.type.L2NoHqZone;
import com.l2jfrozen.gameserver.model.zone.type.L2NoLandingZone;
import com.l2jfrozen.gameserver.model.zone.type.L2OlympiadStadiumZone;
@@ -240,6 +241,10 @@
                                                                {
                                                                        temp = new L2NoHqZone(zoneId);
                                                                }
+                                                               else if(zoneType.equals("MultiFunctionZone"))
+                                                               {
+                                                                       temp = new L2MultiFunctionZone(zoneId);
+                                                               }
                                                                else if(zoneType.equals("BossZone"))
                                                                {
                                                                        int boss_id = -1;
Index: head-src/com/l2jfrozen/gameserver/network/clientpackets/UseItem.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/network/clientpackets/UseItem.java        (revision 948)
+++ head-src/com/l2jfrozen/gameserver/network/clientpackets/UseItem.java        (working copy)
@@ -29,10 +29,12 @@
import com.l2jfrozen.gameserver.managers.CastleManager;
import com.l2jfrozen.gameserver.managers.ClanHallManager;
import com.l2jfrozen.gameserver.model.Inventory;
+import com.l2jfrozen.gameserver.model.L2Character;
import com.l2jfrozen.gameserver.model.L2Clan;
import com.l2jfrozen.gameserver.model.L2Object;
import com.l2jfrozen.gameserver.model.actor.instance.L2ItemInstance;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jfrozen.gameserver.model.zone.type.L2MultiFunctionZone;
import com.l2jfrozen.gameserver.network.SystemMessageId;
import com.l2jfrozen.gameserver.network.serverpackets.ActionFailed;
import com.l2jfrozen.gameserver.network.serverpackets.EtcStatusUpdate;
@@ -95,6 +97,11 @@
                if(item == null)
                        return;
 
+               if(getClient().getActiveChar().isInsideZone(L2Character.ZONE_MULTIFUNCTION) && !L2MultiFunctionZone.checkItem(item))
+               {
+                       getClient().getActiveChar().sendMessage("You cannot use "+item.getName()+" inside this zone.");
+                       return;
+               }
                if(item.isWear())
                        // No unequipping wear-items
                        return;
Index: head-src/com/l2jfrozen/gameserver/network/clientpackets/SetPrivateStoreListSell.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/network/clientpackets/SetPrivateStoreListSell.java        (revision 948)
+++ head-src/com/l2jfrozen/gameserver/network/clientpackets/SetPrivateStoreListSell.java        (working copy)
@@ -19,8 +19,10 @@
package com.l2jfrozen.gameserver.network.clientpackets;
 
import com.l2jfrozen.Config;
+import com.l2jfrozen.gameserver.model.L2Character;
import com.l2jfrozen.gameserver.model.TradeList;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jfrozen.gameserver.model.zone.type.L2MultiFunctionZone;
import com.l2jfrozen.gameserver.network.SystemMessageId;
import com.l2jfrozen.gameserver.network.serverpackets.ActionFailed;
import com.l2jfrozen.gameserver.network.serverpackets.PrivateStoreManageListSell;
@@ -96,6 +98,13 @@
                        player.sendPacket(new PrivateStoreManageListSell(player));
                        return;
                }
+              
+               if (player.isInsideZone(L2Character.ZONE_MULTIFUNCTION) && !L2MultiFunctionZone.store_zone)
+               {
+                       player.sendPacket(new PrivateStoreManageListSell(player));
+                       player.sendMessage("You cannot start store while inside Multifunction zone.");
+                       return;
+               }
 
                TradeList tradeList = player.getSellList();
                tradeList.clear();
Index: head-src/com/l2jfrozen/gameserver/model/zone/type/L2MultiFunctionZone.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/model/zone/type/L2MultiFunctionZone.java  (revision 0)
+++ head-src/com/l2jfrozen/gameserver/model/zone/type/L2MultiFunctionZone.java  (revision 0)
@@ -0,0 +1,342 @@
+/*
+ * 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/>.
+ */
+/*
+ * 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.zone.type;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+import com.l2jfrozen.gameserver.datatables.SkillTable;
+import com.l2jfrozen.gameserver.model.L2Character;
+import com.l2jfrozen.gameserver.model.L2Skill;
+import com.l2jfrozen.gameserver.model.L2Summon;
+import com.l2jfrozen.gameserver.model.PcInventory;
+import com.l2jfrozen.gameserver.model.actor.instance.L2ItemInstance;
+import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jfrozen.gameserver.model.zone.L2ZoneType;
+import com.l2jfrozen.gameserver.thread.ThreadPoolManager;
+import com.l2jfrozen.util.random.Rnd;
+import javolution.util.FastList;
+
+/**
+ *
+ * @author Wyatt
+ * @version 1.3
+ *
+ */
+
+public class L2MultiFunctionZone extends L2ZoneType
+{
+      
+       public L2MultiFunctionZone(int id)
+       {
+               super(id);
+               loadConfigs();
+       }
+      
+       public static boolean pvp_enabled, restart_zone, store_zone, logout_zone, revive_noblesse, revive_heal, revive, remove_buffs, remove_pets, give_noblesse;
+       static int radius, enchant, revive_delay;
+       static int[][] spawn_loc;
+       L2Skill noblesse = SkillTable.getInstance().getInfo(1323, 1);
+       private static List<String> items = new FastList<String>();
+       private static List<String> classes = new FastList<String>(), grades = new FastList<String>();
+       public static List<int[]> rewards = new ArrayList<int[]>();
+       static String[] gradeNames = {"","D","C","B","A","S","S80","S84"};
+      
+      
+       @Override
+       protected void onEnter(L2Character character)
+       {
+               character.setInsideZone(L2Character.ZONE_NOSUMMONFRIEND, true);
+               character.setInsideZone(L2Character.ZONE_MULTIFUNCTION, true);
+              
+               if (character instanceof L2PcInstance)
+               {
+                       L2PcInstance activeChar = ((L2PcInstance) character);
+                       if(classes != null && classes.contains(""+activeChar.getClassId().getId()))
+                       {
+                               activeChar.teleToLocation(83597,147888,-3405);
+                               activeChar.sendMessage("Your class is not allowed in the MultiFunction zone.");
+                               return;
+                       }
+                      
+                       for(L2ItemInstance o : activeChar.getInventory()._items)
+                       {
+                               if(o.isEquipable() && o.isEquipped() && !checkItem(o))
+                               {
+                                       int slot = activeChar.getInventory().getSlotFromItem(o);
+                                       activeChar.getInventory().unEquipItemInBodySlotAndRecord(slot);
+                                       activeChar.sendMessage(o.getItemName()+" unequiped because is not allowed inside this zone.");
+                               }
+                       }
+                       activeChar.sendMessage("You entered in a MultiFunction zone.");
+                       clear(activeChar);
+                       if(give_noblesse)
+                       noblesse.getEffects(activeChar, activeChar);  
+                       if(pvp_enabled)
+                               activeChar.updatePvPFlag(1);                   
+               }
+       }
+      
+       @Override
+       protected void onExit(L2Character character)
+       {
+               character.setInsideZone(L2Character.ZONE_NOSUMMONFRIEND, false);
+               character.setInsideZone(L2Character.ZONE_MULTIFUNCTION, false);
+              
+               if (character instanceof L2PcInstance)
+               {
+                       L2PcInstance activeChar = ((L2PcInstance) character);
+                       activeChar.sendMessage("You left from a MultiFunction zone.");
+                      
+                       if(pvp_enabled)
+                               activeChar.stopPvPFlag();  
+               }
+       }
+      
+       @Override
+       public void onDieInside(final L2Character character)
+       {
+               if (character instanceof L2PcInstance)
+           {
+                       final L2PcInstance activeChar = ((L2PcInstance) character);
+                       if(revive)
+                       {
+                               ThreadPoolManager.getInstance().scheduleGeneral(new Runnable()
+                               {
+                               @Override
+                                       public void run()
+                                       {
+                                       activeChar.doRevive();
+                                       heal(activeChar);
+                                       int[] loc = spawn_loc[Rnd.get(spawn_loc.length)];
+                                       activeChar.teleToLocation(loc[0]+Rnd.get(-radius,radius), loc[1]+Rnd.get(-radius,radius), loc[2]);
+                                       }
+                               },revive_delay*1000);  
+                       }
+           }
+       }
+
+       @Override
+       public void onReviveInside(L2Character character)
+       {      
+               if (character instanceof L2PcInstance)
+           {
+                       L2PcInstance activeChar = ((L2PcInstance) character);
+                       if(revive_noblesse)
+                               noblesse.getEffects(activeChar, activeChar);  
+                       if(revive_heal)
+                               heal(activeChar);
+           }
+       }
+      
+       static void heal(L2PcInstance activeChar)
+       {
+               activeChar.setCurrentHp(activeChar.getMaxHp());
+               activeChar.setCurrentCp(activeChar.getMaxCp());
+               activeChar.setCurrentMp(activeChar.getMaxMp());
+       }
+      
+       private void clear (L2PcInstance player)
+       {
+               if(remove_buffs)
+               {
+                       player.stopAllEffects();
+                       if(remove_pets)
+                       {
+                               L2Summon pet = player.getPet();
+                               if(pet!= null)
+                               {
+                                       pet.stopAllEffects();
+                                       pet.unSummon(player);  
+                               }      
+                       }
+               }
+               else
+               {
+                       if(remove_pets)
+                       {
+                               L2Summon pet = player.getPet();
+                               if(pet!= null)
+                               {
+                                       pet.unSummon(player);  
+                               }      
+                       }
+               }
+       }
+      
+       public static void givereward(L2PcInstance player)
+       {
+               if(player.isInsideZone(L2Character.ZONE_MULTIFUNCTION))
+               {
+                       for (int[] reward : rewards)
+                       {
+                               PcInventory inv = player.getInventory();
+                               inv.addItem("Custom Reward", reward[0], reward[1], player,  player);   
+                       }
+               }
+       }
+      
+       public static boolean checkItem (L2ItemInstance item)
+       {
+               int o = item.getItem().getCrystalType();
+               int e = item.getEnchantLevel();
+              
+               if(enchant != 0 && e >= enchant)
+               {
+                       return false;
+               }
+              
+               if(grades.contains(gradeNames[o]))
+                       return false;
+
+               if(items != null && items.contains(""+item.getItemId()))
+                       return false;
+               return true;
+       }
+      
+       private static void loadConfigs()
+       {
+               try
+               {
+                       Properties prop = new Properties();
+                       prop.load(new FileInputStream(new File("./config/MultiFunctionZone.properties")));
+                       pvp_enabled = Boolean.parseBoolean(prop.getProperty("EnablePvP", "False"));
+                       spawn_loc = parseItemsList(prop.getProperty("SpawnLoc", "150111,144740,-12248"));
+                       revive_delay = Integer.parseInt(prop.getProperty("ReviveDelay", "10"));
+                       if(revive_delay != 0)
+                       {
+                               revive = true;
+                       }
+                       give_noblesse = Boolean.parseBoolean(prop.getProperty("GiveNoblesse", "False"));
+                       String[] propertySplit = prop.getProperty("Items", "").split(",");
+                       if (propertySplit.length != 0)
+                       {
+                               for(String i : propertySplit)
+                               {
+                                       items.add(i);
+                               }
+                       }
+                       propertySplit = prop.getProperty("Grades", "").split(",");
+                       if (propertySplit.length != 0)
+                       {
+                               for(String i : propertySplit)
+                               {
+                                       if(i.equals("D") || i.equals("C") || i.equals("B") || i.equals("A") || i.equals("S") || i.equals("S80") || i.equals("S84"))
+                                               grades.add(i);
+                               }
+                       }
+                       propertySplit = prop.getProperty("Classes", "").split(",");
+                       if (propertySplit.length != 0)
+                       {
+                               for(String i : propertySplit)
+                               {
+                                       classes.add(i);
+                               }
+                       }
+                       radius =  Integer.parseInt(prop.getProperty("RespawnRadius", "500"));
+                       enchant =  Integer.parseInt(prop.getProperty("Enchant", "0"));
+                       remove_buffs = Boolean.parseBoolean(prop.getProperty("RemoveBuffs", "False"));
+                       remove_pets = Boolean.parseBoolean(prop.getProperty("RemovePets", "False"));
+                       restart_zone = Boolean.parseBoolean(prop.getProperty("NoRestartZone", "False"));
+                       store_zone = Boolean.parseBoolean(prop.getProperty("NoStoreZone", "False"));
+                       logout_zone = Boolean.parseBoolean(prop.getProperty("NoLogoutZone", "False"));
+                       revive_noblesse = Boolean.parseBoolean(prop.getProperty("ReviveNoblesse", "False"));
+                       revive_heal = Boolean.parseBoolean(prop.getProperty("ReviveHeal", "False"));   
+                       propertySplit = prop.getProperty("Rewards", "57,100000").split(";");
+                       for (String reward : propertySplit)
+                       {
+                               String[] rewardSplit = reward.split(",");
+                               if (rewardSplit.length == 2)
+                               {
+                                       try
+                                       {
+                                               rewards.add(new int[]{Integer.parseInt(rewardSplit[0]), Integer.parseInt(rewardSplit[1])});
+                                       }
+                                       catch (NumberFormatException nfe)
+                                       {
+                                       }
+                               }
+                       }
+               }
+               catch(Exception e)
+               {
+                       e.printStackTrace();
+               }
+       }      
+      
+       private static int[][] parseItemsList(String line)
+       {
+               final String[] propertySplit = line.split(";");
+               if (propertySplit.length == 0)
+                       return null;
+
+               int i = 0;
+               String[] valueSplit;
+               final int[][] result = new int[propertySplit.length][];
+               for (String value : propertySplit)
+               {
+                       valueSplit = value.split(",");
+                       if (valueSplit.length != 3)
+                       {
+                               return null;
+                       }
+
+                       result[i] = new int[3];
+                       try
+                       {
+                               result[i][0] = Integer.parseInt(valueSplit[0]);
+                       }
+                       catch (NumberFormatException e)
+                       {
+                               return null;
+                       }
+                       try
+                       {
+                               result[i][1] = Integer.parseInt(valueSplit[1]);
+                       }
+                       catch (NumberFormatException e)
+                       {
+                               return null;
+                       }
+                       try
+                       {
+                               result[i][2] = Integer.parseInt(valueSplit[2]);
+                       }
+                       catch (NumberFormatException e)
+                       {
+                               return null;
+                       }
+                       i++;
+               }
+               return result;
+       }
+}
\ No newline at end of file
Index: head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PcInstance.java    (revision 948)
+++ head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PcInstance.java    (working copy)
@@ -151,6 +151,7 @@
import com.l2jfrozen.gameserver.model.extender.BaseExtender.EventType;
import com.l2jfrozen.gameserver.model.quest.Quest;
import com.l2jfrozen.gameserver.model.quest.QuestState;
+import com.l2jfrozen.gameserver.model.zone.type.L2MultiFunctionZone;
import com.l2jfrozen.gameserver.model.zone.type.L2TownZone;
import com.l2jfrozen.gameserver.network.L2GameClient;
import com.l2jfrozen.gameserver.network.SystemMessageId;
@@ -274,6 +275,8 @@
       
        /** The _vote timestamp. */
        private long _voteTimestamp = 0;
+      
+       public int counter = 0;
 
        /** The _posticipate sit. */
        private boolean _posticipateSit;
@@ -7990,6 +7993,8 @@
               
                // Add karma to attacker and increase its PK counter
                setPvpKills(getPvpKills() + 1);
+              
+               L2MultiFunctionZone.givereward(this);
 
                 // Increase the kill count for a special hero aura
                 heroConsecutiveKillCount++;
Index: head-src/com/l2jfrozen/gameserver/model/ItemContainer.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/model/ItemContainer.java  (revision 948)
+++ head-src/com/l2jfrozen/gameserver/model/ItemContainer.java  (working copy)
@@ -44,7 +44,7 @@
{
        protected static final Logger _log = Logger.getLogger(ItemContainer.class.getName());
 
-       protected final List<L2ItemInstance> _items;
+       public final List<L2ItemInstance> _items;
 
        protected ItemContainer()
        {
Index: head-src/com/l2jfrozen/gameserver/network/serverpackets/Die.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/network/serverpackets/Die.java    (revision 948)
+++ head-src/com/l2jfrozen/gameserver/network/serverpackets/Die.java    (working copy)
@@ -31,6 +31,7 @@
import com.l2jfrozen.gameserver.model.entity.event.TvT;
import com.l2jfrozen.gameserver.model.entity.siege.Castle;
import com.l2jfrozen.gameserver.model.entity.siege.Fort;
+import com.l2jfrozen.gameserver.model.zone.type.L2MultiFunctionZone;
 
/**
 * sample 0b 952a1048 objectId 00000000 00000000 00000000 00000000 00000000 00000000 format dddddd rev 377 format
@@ -64,7 +65,8 @@
                                                        || (DM.is_started() && player._inEventDM)
                                                        || (CTF.is_started() && player._inEventCTF)
                                                        || player.isInFunEvent()
-                                                       || player.isPendingRevive());
+                                                       || player.isPendingRevive()
+                                                       || (player.isInsideZone(L2Character.ZONE_MULTIFUNCTION) && L2MultiFunctionZone.revive));
                }
                _charObjId = cha.getObjectId();
                _fake = !cha.isDead();
Index: head-src/com/l2jfrozen/gameserver/network/clientpackets/SetPrivateStoreListBuy.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/network/clientpackets/SetPrivateStoreListBuy.java (revision 948)
+++ head-src/com/l2jfrozen/gameserver/network/clientpackets/SetPrivateStoreListBuy.java (working copy)
@@ -19,8 +19,10 @@
package com.l2jfrozen.gameserver.network.clientpackets;
 
import com.l2jfrozen.Config;
+import com.l2jfrozen.gameserver.model.L2Character;
import com.l2jfrozen.gameserver.model.TradeList;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jfrozen.gameserver.model.zone.type.L2MultiFunctionZone;
import com.l2jfrozen.gameserver.network.SystemMessageId;
import com.l2jfrozen.gameserver.network.serverpackets.ActionFailed;
import com.l2jfrozen.gameserver.network.serverpackets.PrivateStoreManageListBuy;
@@ -95,6 +97,13 @@
                        player.sendPacket(new PrivateStoreManageListBuy(player));
                        return;
                }
+              
+               if (player.isInsideZone(L2Character.ZONE_MULTIFUNCTION) && !L2MultiFunctionZone.store_zone)
+               {
+                       player.sendPacket(new PrivateStoreManageListBuy(player));
+                       player.sendMessage("You cannot start store while inside Multifunction zone.");
+                       return;
+               }
 
                TradeList tradeList = player.getBuyList();
                tradeList.clear();
 
### Eclipse Workspace Patch 1.0
#P L2jFrozen_DataPack
Index: data/zones/zone.xml
===================================================================
--- data/zones/zone.xml (revision 948)
+++ data/zones/zone.xml (working copy)
@@ -4489,4 +4489,10 @@
                <node X="-85870" Y="-46233" />
                <node X="-86090" Y="-46061" />
        </zone>
+       <zone id="16385" name="Custom" type="MultiFunctionZone" shape="NPoly" minZ="-15000" maxZ="-10000">
+               <node X="130000" Y="160000" />
+               <node X="130000" Y="130000" />
+               <node X="160000" Y="130000" />
+               <node X="160000" Y="160000" />
+       </zone>
</list>
\ No newline at end of file