Hello mates i whant to make my first share in maxcheaters , i will share with you my fixed MultifuctionZone, and bug that was allowing same account to be logged in twice.
I hope to Help some newbies that cant addapt the codes here it is have fun soon i will share more codes ;)
Fixed Pach. by me have fun...!
Update: 2:42 Am 23/5/2014 i fix some Bugs now are all fine.!
### Eclipse Workspace Patch 1.0
#P L2jFrozen_GameServer
Index: config/functions/PvPZone.properties
===================================================================
--- config/functions/PvPZone.properties (revision 0)
+++ config/functions/PvPZone.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/model/L2Character.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/model/L2Character.java (revision 1004)
+++ head-src/com/l2jfrozen/gameserver/model/L2Character.java (working copy)
@@ -340,6 +340,9 @@
/** The Constant ZONE_DANGERAREA. */
public static final int ZONE_DANGERAREA = 16384;
+
+ /** The Constant ZONE_MULTIFUNCTION. */
+ public static final int ZONE_MULTIFUNCTION = 32;
/** The Constant ZONE_NOSTORE. */
public static final int ZONE_NOSTORE = 32768;
Index: head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestRecipeShopListSet.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestRecipeShopListSet.java (revision 1004)
+++ head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestRecipeShopListSet.java (working copy)
@@ -19,10 +19,12 @@
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.L2PvPZone;
import com.l2jfrozen.gameserver.network.SystemMessageId;
import com.l2jfrozen.gameserver.network.serverpackets.ActionFailed;
import com.l2jfrozen.gameserver.network.serverpackets.RecipeShopMsg;
@@ -67,7 +69,14 @@
player.sendPacket(ActionFailed.STATIC_PACKET);
return;
}
-
+
+
+ if (player.isInsideZone(L2Character.ZONE_MULTIFUNCTION) && !L2PvPZone.store_zone)
+ {
+ player.sendMessage("You cannot craft while inside Multifunction zone.");
+ return;
+ }
+
if(player.isTradeDisabled())
{
player.sendMessage("Private manufacture are disable here. Try in another place.");
Index: head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestRestart.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestRestart.java (revision 1004)
+++ head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestRestart.java (working copy)
@@ -20,15 +20,18 @@
import java.util.logging.Logger;
+
import com.l2jfrozen.Config;
import com.l2jfrozen.gameserver.GameServer;
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.L2PvPZone;
import com.l2jfrozen.gameserver.network.L2GameClient;
import com.l2jfrozen.gameserver.network.L2GameClient.GameClientState;
import com.l2jfrozen.gameserver.network.SystemMessageId;
@@ -103,6 +106,13 @@
sendPacket(RestartResponse.valueOf(false));
return;
}
+
+ if(player.isInsideZone(L2Character.ZONE_MULTIFUNCTION) && !L2PvPZone.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: head-src/com/l2jfrozen/gameserver/network/clientpackets/Logout.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/network/clientpackets/Logout.java (revision 1004)
+++ head-src/com/l2jfrozen/gameserver/network/clientpackets/Logout.java (working copy)
@@ -16,6 +16,7 @@
import java.util.logging.Logger;
+
import com.l2jfrozen.Config;
import com.l2jfrozen.gameserver.communitybbs.Manager.RegionBBSManager;
import com.l2jfrozen.gameserver.datatables.SkillTable;
@@ -24,6 +25,7 @@
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.L2PvPZone;
import com.l2jfrozen.gameserver.network.SystemMessageId;
import com.l2jfrozen.gameserver.network.serverpackets.ActionFailed;
import com.l2jfrozen.gameserver.network.serverpackets.SystemMessage;
@@ -53,7 +55,13 @@
player.sendPacket(ActionFailed.STATIC_PACKET);
return;
}
-
+
+ if(player.isInsideZone(L2Character.ZONE_MULTIFUNCTION) && !L2PvPZone.logout_zone)
+ {
+ player.sendMessage("You cannot Logout while inside a Multifunction zone.");
+ player.sendPacket(ActionFailed.STATIC_PACKET);
+ return;
+ }
if (player.isAway())
{
player.sendMessage("You can't restart in Away mode.");
Index: head-src/com/l2jfrozen/gameserver/network/clientpackets/UseItem.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/network/clientpackets/UseItem.java (revision 1004)
+++ head-src/com/l2jfrozen/gameserver/network/clientpackets/UseItem.java (working copy)
@@ -19,6 +19,7 @@
package com.l2jfrozen.gameserver.network.clientpackets;
import java.util.Arrays;
+
import java.util.logging.Logger;
import com.l2jfrozen.Config;
@@ -29,10 +30,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.L2PvPZone;
import com.l2jfrozen.gameserver.network.SystemMessageId;
import com.l2jfrozen.gameserver.network.serverpackets.ActionFailed;
import com.l2jfrozen.gameserver.network.serverpackets.EtcStatusUpdate;
@@ -101,7 +104,11 @@
// NOTE: disabled due to deadlocks
// synchronized (activeChar.getInventory())
// {
-
+ if(getClient().getActiveChar().isInsideZone(L2Character.ZONE_MULTIFUNCTION) && !L2PvPZone.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/datatables/xml/ZoneData.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/datatables/xml/ZoneData.java (revision 1004)
+++ head-src/com/l2jfrozen/gameserver/datatables/xml/ZoneData.java (working copy)
@@ -18,6 +18,7 @@
package com.l2jfrozen.gameserver.datatables.xml;
import java.io.File;
+
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
@@ -58,6 +59,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.L2PvPZone;
import com.l2jfrozen.gameserver.model.zone.type.L2NoHqZone;
import com.l2jfrozen.gameserver.model.zone.type.L2NoLandingZone;
import com.l2jfrozen.gameserver.model.zone.type.L2NoStoreZone;
@@ -245,6 +247,10 @@
{
temp = new L2NoHqZone(zoneId);
}
+ else if(zoneType.equals("PvPZone"))
+ {
+ temp = new L2PvPZone(zoneId);
+ }
else if(zoneType.equals("BossZone"))
{
int boss_id = -1;
Index: head-src/com/l2jfrozen/gameserver/network/clientpackets/SetPrivateStoreListSell.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/network/clientpackets/SetPrivateStoreListSell.java (revision 1004)
+++ head-src/com/l2jfrozen/gameserver/network/clientpackets/SetPrivateStoreListSell.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.TradeList;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jfrozen.gameserver.model.zone.type.L2PvPZone;
import com.l2jfrozen.gameserver.network.SystemMessageId;
import com.l2jfrozen.gameserver.network.serverpackets.ActionFailed;
import com.l2jfrozen.gameserver.network.serverpackets.PrivateStoreManageListSell;
@@ -106,7 +108,14 @@
player.sendPacket(ActionFailed.STATIC_PACKET);
return;
}
-
+
+ if (player.isInsideZone(L2Character.ZONE_MULTIFUNCTION) && !L2PvPZone.store_zone)
+ {
+ player.sendPacket(new PrivateStoreManageListSell(player));
+ player.sendMessage("You cannot start store while inside Multifunction zone.");
+ return;
+ }
+
TradeList tradeList = player.getSellList();
tradeList.clear();
tradeList.setPackaged(_packageSale);
Index: head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PcInstance.java (revision 1004)
+++ head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PcInstance.java (working copy)
@@ -20,6 +20,7 @@
import static com.l2jfrozen.gameserver.ai.CtrlIntention.AI_INTENTION_MOVE_TO;
+
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
@@ -156,6 +157,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.L2PvPZone;
import com.l2jfrozen.gameserver.model.zone.type.L2TownZone;
import com.l2jfrozen.gameserver.network.L2GameClient;
import com.l2jfrozen.gameserver.network.SystemMessageId;
@@ -281,6 +283,9 @@
/** The _vote timestamp. */
private long _voteTimestamp = 0;
+
+
+ public int counter = 0;
/** The _posticipate sit. */
private boolean _posticipateSit;
@@ -8297,6 +8302,9 @@
// Add karma to attacker and increase its PK counter
setPvpKills(getPvpKills() + 1);
+
+ L2PvPZone.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 1004)
+++ 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/thread/LoginServerThread.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/thread/LoginServerThread.java (revision 1004)
+++ head-src/com/l2jfrozen/gameserver/thread/LoginServerThread.java (working copy)
@@ -507,9 +507,19 @@
pl = null;
}
- public void addGameServerLogin(String account, L2GameClient client)
- {
- _accountsInGameServer.put(account, client);
+ /*
+
+ * @return {@code true} if account was not already logged in, {@code false}
+
+ * otherwise
+
+ */
+
+ public boolean addGameServerLogin(String account, L2GameClient client) {
+
+ return ((FastMap<String, L2GameClient>) _accountsInGameServer).putIfAbsent(account, client) == null;
+
+
}
public void sendAccessLevel(String account, int level)
Index: head-src/com/l2jfrozen/gameserver/network/serverpackets/Die.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/network/serverpackets/Die.java (revision 1004)
+++ head-src/com/l2jfrozen/gameserver/network/serverpackets/Die.java (working copy)
@@ -19,6 +19,7 @@
package com.l2jfrozen.gameserver.network.serverpackets;
import com.l2jfrozen.gameserver.datatables.AccessLevel;
+
import com.l2jfrozen.gameserver.datatables.sql.AccessLevels;
import com.l2jfrozen.gameserver.managers.CastleManager;
import com.l2jfrozen.gameserver.managers.FortManager;
@@ -31,6 +32,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.L2PvPZone;
/**
* sample 0b 952a1048 objectId 00000000 00000000 00000000 00000000 00000000 00000000 format dddddd rev 377 format
@@ -64,7 +66,8 @@
|| (DM.is_started() && player._inEventDM)
|| (CTF.is_started() && player._inEventCTF)
|| player.isInFunEvent()
- || player.isPendingRevive());
+ || player.isPendingRevive()
+ || (player.isInsideZone(L2Character.ZONE_MULTIFUNCTION) && L2PvPZone.revive));
}
_charObjId = cha.getObjectId();
_fake = !cha.isDead();
Index: head-src/com/l2jfrozen/gameserver/network/clientpackets/AuthLogin.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/network/clientpackets/AuthLogin.java (revision 1004)
+++ head-src/com/l2jfrozen/gameserver/network/clientpackets/AuthLogin.java (working copy)
@@ -16,8 +16,10 @@
import java.util.logging.Logger;
+
import com.l2jfrozen.Config;
import com.l2jfrozen.gameserver.network.L2GameClient;
+import com.l2jfrozen.gameserver.network.serverpackets.L2GameServerPacket;
import com.l2jfrozen.gameserver.thread.LoginServerThread;
import com.l2jfrozen.gameserver.thread.LoginServerThread.SessionKey;
@@ -55,9 +57,26 @@
// avoid potential exploits
if (client.getAccountName() == null)
{
- client.setAccountName(_loginName);
- LoginServerThread.getInstance().addGameServerLogin(_loginName, client);
- LoginServerThread.getInstance().addWaitingClientAndSendRequest(_loginName, client, key);
+ // Preventing duplicate login in case client login server socket was
+
+ // disconnected or this packet was not sent yet
+
+ if (LoginServerThread.getInstance().addGameServerLogin(_loginName,client)) {
+
+ client.setAccountName(_loginName);
+
+ LoginServerThread.getInstance().addWaitingClientAndSendRequest(
+
+ _loginName, client, key);
+
+ } else {
+
+ client.close((L2GameServerPacket) null);
+
+ }
+
+
+
}
}
Index: head-src/com/l2jfrozen/gameserver/model/zone/type/L2PvPZone.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/model/zone/type/L2PvPZone.java (revision 0)
+++ head-src/com/l2jfrozen/gameserver/model/zone/type/L2PvPZone.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.2
+ *
+ */
+
+public class L2PvPZone extends L2ZoneType
+{
+
+ public L2PvPZone(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>();
+ private static List<String> grades = new FastList<String>();
+ public static List<int[]> rewards = new ArrayList<int[]>();
+ static String[] gradeNames = {"","D","C","B","A","S"};
+
+
+ @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 Special PvP 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 Special PvP zone.");
+ clear(activeChar);
+ if(give_noblesse)
+ noblesse.getEffects(activeChar, activeChar);
+ if(pvp_enabled && activeChar.getPvpFlag() == 0)
+ 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 Special PvP zone bay baby..!");
+
+ 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/functions/PvPZone.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"))
+ 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/network/clientpackets/SetPrivateStoreListBuy.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/network/clientpackets/SetPrivateStoreListBuy.java (revision 1004)
+++ head-src/com/l2jfrozen/gameserver/network/clientpackets/SetPrivateStoreListBuy.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.TradeList;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jfrozen.gameserver.model.zone.type.L2PvPZone;
import com.l2jfrozen.gameserver.network.SystemMessageId;
import com.l2jfrozen.gameserver.network.serverpackets.ActionFailed;
import com.l2jfrozen.gameserver.network.serverpackets.PrivateStoreManageListBuy;
@@ -106,7 +108,13 @@
player.sendPacket(ActionFailed.STATIC_PACKET);
return;
}
-
+
+ if (player.isInsideZone(L2Character.ZONE_MULTIFUNCTION) && !L2PvPZone.store_zone)
+ {
+ player.sendPacket(new PrivateStoreManageListBuy(player));
+ player.sendMessage("You cannot start store while inside Special PvP zone.");
+ return;
+ }
TradeList tradeList = player.getBuyList();
tradeList.clear();
-----------------------------------------
Zone.xml
-----------------------------------------
<zone id="61000" type="PvPZone" shape="NPoly" minZ="-4000" maxZ="-3000">
<stat name='noPeace' val='true'/>
<spawn X='11468' Y='-24749' Z='-3646'/>
<spawn X='9904' Y='-22846' Z='-3697'/>
<spawn X='7889' Y='-22686' Z='-3684'/>
<spawn X='5380' Y='-23475' Z='-3717'/>
</zone>
--------------------------------------------
ZoneDaTa.Sql Primeval Isle wharf
-------------------------------------------
INSERT INTO `zone_vertices` VALUES ('61000', '0', '11880', '-25221');
INSERT INTO `zone_vertices` VALUES ('61000', '1', '10000', '-25073');
INSERT INTO `zone_vertices` VALUES ('61000', '2', '9319', '-24224');
INSERT INTO `zone_vertices` VALUES ('61000', '3', '5153', '-24258');
INSERT INTO `zone_vertices` VALUES ('61000', '4', '5125', '-22591');
INSERT INTO `zone_vertices` VALUES ('61000', '5', '9618', '-21319');
INSERT INTO `zone_vertices` VALUES ('61000', '6', '10993', '-22303');
INSERT INTO `zone_vertices` VALUES ('61000', '7', '12323', '-24775');