Noticias:

Debes de estar registrado para poder ver el contenido indicado. Registrate o Conectate

Menú Principal

Evento Player Vs Player

Iniciado por Swarlog, Ago 06, 2022, 02:20 AM

Tema anterior - Siguiente tema

Swarlog

Debes de estar registrado para poder ver el contenido indicado. Registrate o Conectate

CitarINFORMACIÓN:

- El evento es todos contra todos, el admin iniciar el evento con el comando "// pvp_start" y termina con "// pvp_end".
- Recompensa se encuentra en el archivo Debes de estar registrado para poder ver el contenido indicado. Registrate o Conectate
- Todos los jugadores inscritos son llamados a la arena y el recuento comienza.
- ¿Quién mató a entre 5, 15 y 25 asesinatos seguidos (no puede morir) serán los ganadores.
- Quien murió reinicia la cuenta de las muertes.
- Es auto generar la matriz tiene que VILAGE cuando estás en el evento.
- Usted puede dar el personaje del héroe en el máximo kill consecutivo (25)
- Se ejecuta durante un tiempo que se está configurando en minutos

CitarCORE:

### Eclipse Workspace Patch 1.0
#P trunk 2
Index: aCis/acis_game/java/net/sf/l2j/gameserver/model/entity/custom/PvPEvent.java
===================================================================
--- aCis/acis_game/java/net/sf/l2j/gameserver/model/entity/custom/PvPEvent.java (revision 0)
+++ aCis/acis_game/java/net/sf/l2j/gameserver/model/entity/custom/PvPEvent.java (working copy)
@@ -0,0 +1,230 @@
+package net.sf.l2j.gameserver.model.entity.custom;
+
+import java.util.ArrayList;
+
+import net.sf.l2j.Config;
+import net.sf.l2j.gameserver.ThreadPoolManager;
+import net.sf.l2j.gameserver.datatables.MapRegionTable;
+import net.sf.l2j.gameserver.model.L2World;
+import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
+import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
+import net.sf.l2j.gameserver.util.Broadcast;
+import net.sf.l2j.util.Rnd;
+
+/**
+ * @author Leoonardo and Bluur
+ */
+public class PvPEvent implements Runnable
+{
+ private static ArrayList<L2PcInstance> _players = new ArrayList<>();
+ private static EventState pvpstates = EventState.INACTIVE;
+ private static int allplayers = 0;
+
+ public enum EventState{
+ INACTIVE,REGISTER,TELEPORT,FIGHT,END;
+ }
+ public static void starting()
+ {
+ setStatePVP(EventState.REGISTER);
+ Broadcast.announceToOnlinePlayers("Will start the registrations for the event in a verse one.");
+
+ for (L2PcInstance p : L2World.getInstance().getAllPlayers().values())
+ {
+ if (p == null)
+ return;
+
+ regWindow(p);
+ }
+ time(Config.PVP_EVENT_REG_TIME);
+ if(_players.size() < 2){
+ Broadcast.announceToOnlinePlayers("The event was canceled due to lack of players.");
+ _players.clear();
+ setStatePVP(EventState.INACTIVE);
+ return;
+ }
+ setStatePVP(EventState.TELEPORT);
+ Broadcast.announceToOnlinePlayers("Stay tuned to the teleporter.");
+ Broadcast.announceToOnlinePlayers("Total number of participants: " + allplayers);
+ Broadcast.announceToOnlinePlayers("10 seconds to teleport players registered");
+ time(10);
+ teleporting();
+ Broadcast.announceToOnlinePlayers("The event ends in " + Config.PVP_EVENT_TIME / 60 + " minutes.");
+ time(Config.PVP_EVENT_TIME);
+ Broadcast.announceToOnlinePlayers("The time is up!");
+ reload();
+ }
+
+ public static void teleporting()
+ {
+ Broadcast.announceToOnlinePlayers("HaHaHa, We're going to fight !!!!.");
+ for (L2PcInstance player : _players)
+ {
+ if (player == null)
+ return;
+ player.teleToLocation(Config.PVP_EVENT_X, Config.PVP_EVENT_Y, Config.PVP_EVENT_Z, Rnd.get(100));
+ }
+ Broadcast.announceToOnlinePlayers("Kill all!.");
+ setStatePVP(EventState.FIGHT);
+ }
+
+ public static void finish()
+ {
+ for (L2PcInstance player : _players)
+ {
+ if (player == null)
+ return;
+
+ player.teleToLocation(MapRegionTable.TeleportWhereType.Town);
+ }
+
+ allplayers = 0;
+ _players.clear();
+ setStatePVP(EventState.INACTIVE);
+ Broadcast.announceToOnlinePlayers("Event Finish time over!!!");
+ }
+
+ public static void regWindow(L2PcInstance p)
+ {
+ NpcHtmlMessage html = new NpcHtmlMessage(1);
+ html.setFile("data/html/mods/pvp/event.htm");
+ p.sendPacket(html);
+ }
+
+ private static void reload()
+ {
+ for (L2PcInstance player : _players)
+ {
+ if (player == null)
+ return;
+
+ player.setPointPvPEvent(0);
+ player.teleToLocation(MapRegionTable.TeleportWhereType.Town);
+ }
+
+ allplayers = 0;
+ _players.clear();
+ setStatePVP(EventState.INACTIVE);
+ }
+
+ public static boolean checkPlayerInEvent(L2PcInstance p)
+ {
+ return _players.contains(p);
+ }
+
+ public static void onDie(L2PcInstance player, L2PcInstance killer)
+ {
+ if (player != null)
+ {
+ countKills(killer);
+ res(player, 5 * 1000);
+ }
+ }
+
+ private static void res(final L2PcInstance player, long millis)
+ {
+ if (player != null)
+ {
+ ThreadPoolManager.getInstance().scheduleGeneral(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ player.doRevive();
+ player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp());
+ player.setCurrentCp(player.getMaxCp());
+ player.setPointPvPEvent(0);
+ player.teleToLocation(Config.PVP_EVENT_X, Config.PVP_EVENT_Y, Config.PVP_EVENT_Z, 0);
+ }
+ }, millis);
+ }
+ }
+
+ private static void countKills(L2PcInstance p)
+ {
+ p.setPointPvPEvent(p.getPointPvPEvent() + 1);
+
+ switch (p.getPointPvPEvent())
+ {
+ case 5:
+ Broadcast.announceToOnlinePlayers(p.getName() + " have been successfully awarded 5 kills, congratulations.");
+ Broadcast.announceToOnlinePlayers(p.getName() + " 5 consecutive kills !!!");
+ for(int[] recebendo : getRewards())
+ p.addItem("Reward Item", recebendo[0], recebendo[1], p, true);
+ break;
+ case 15:
+ Broadcast.announceToOnlinePlayers(p.getName() + " have been successfully awarded 15 kills, congratulations.");
+ Broadcast.announceToOnlinePlayers(p.getName() + " 15 consecutive kills !!!");
+ for(int[] recebendo : getRewards())
+ p.addItem("Reward Item", recebendo[0], recebendo[1], p, true);
+ break;
+ case 25:
+ Broadcast.announceToOnlinePlayers(p.getName() + " have been successfully awarded heroi and items, congratulations.");
+ Broadcast.announceToOnlinePlayers(p.getName() + " 25 consecutive kills !!!");
+ p.setHero(Config.PVP_EVENT_SETHERO);
+ p.setPointPvPEvent(0);
+ for(int[] recebendo : getRewards())
+ p.addItem("Reward Item", recebendo[0], recebendo[1], p, true);
+ break;
+ }
+ }
+ private static final int [][] getRewards(){
+ return Config.PVP_EVENT_REWARDS;
+ }
+ public static void registerPlayer(L2PcInstance player)
+ {
+ if (getStatePVP() == EventState.INACTIVE || getStatePVP() == EventState.END)
+ {
+ player.sendMessage("This event is offline.");
+ return;
+ }
+ else if (getStatePVP() == EventState.TELEPORT)
+ {
+ player.sendMessage("This event in teleport.");
+ return;
+ }
+ else if (getStatePVP() == EventState.FIGHT)
+ {
+ player.sendMessage("This event in progress.");
+ return;
+ }
+ else if (player.getKarma() > 0 || player.isInOlympiadMode() || player.isCursedWeaponEquipped())
+ {
+ player.sendMessage("you can't register");
+ return;
+ }
+ else if (checkPlayerInEvent(player))
+ {
+ player.sendMessage("you're already registred in evento.");
+ return;
+ }
+ _players.add(player);
+ allplayers++;
+ player.sendMessage("you have been successfully registered");
+ }
+
+ private static void time(int segundos)
+ {
+ try
+ {
+ Thread.sleep(segundos * 1000);
+ }
+ catch (InterruptedException e)
+ {
+ System.out.println("[PvP Event]: Erro in method: time()");
+ }
+ }
+    public static void setStatePVP(EventState state)
+    {
+     pvpstates = state;
+    }

+    public static EventState getStatePVP()
+    {
+        return pvpstates;
+    }
+ @Override
+ public void run()
+ {
+ starting();
+ }
+}
Index: aCis/acis_game/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminPVP.java
===================================================================
--- aCis/acis_game/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminPVP.java (revision 0)
+++ aCis/acis_game/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminPVP.java (working copy)
@@ -0,0 +1,31 @@
+package net.sf.l2j.gameserver.handler.admincommandhandlers;
+
+import net.sf.l2j.gameserver.ThreadPoolManager;
+import net.sf.l2j.gameserver.handler.IAdminCommandHandler;
+import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
+import net.sf.l2j.gameserver.model.entity.custom.PvPEvent;
+import net.sf.l2j.gameserver.model.entity.custom.PvPEvent.EventState;
+
+public class AdminPVP implements IAdminCommandHandler {
+
+ private static final String[] ADMIN_COMMANDS = { "admin_pvp_start",
+ "admin_pvp_end" };
+
+ @Override
+ public boolean useAdminCommand(String command, L2PcInstance activeChar) {
+ if (command.startsWith("admin_pvp_start"))
+ if (PvPEvent.getStatePVP() != EventState.INACTIVE) {
+ activeChar.sendMessage("[PVP] Evento esta em progresso.");
+ return false;
+ }
+ ThreadPoolManager.getInstance().scheduleAi(new PvPEvent(), 0);
+ activeChar.sendMessage("[PVP]: Evento executado.");
+ return true;
+ }
+
+ @Override
+ public String[] getAdminCommandList() {
+ return ADMIN_COMMANDS;
+ }
+
+}
Index: aCis/acis_game/config/events.properties
===================================================================
--- aCis/acis_game/config/events.properties (revision 7)
+++ aCis/acis_game/config/events.properties (working copy)
@@ -1,4 +1,19 @@
 #=============================================================
+# Player vs Player // Created Leonardo and Bluur
+#=============================================================
+# Event total time in seconds.
+PVPEventTime = 300
+# Coord Arena and Respawn.
+EventTeleportX = -87895
+EventTeleportY = 142150
+EventTeleportZ = -3646
+# Rewards Event.
+# id,count.
+PVPEventRewards = 6622,1
+# Event player set hero for 25 kills.
+PVPEventSetHero = false
+
+#=============================================================
 #                          Olympiad
 #=============================================================
 # Olympiad start time hour, default 18 (6PM).
Index: aCis/acis_game/java/net/sf/l2j/gameserver/network/clientpackets/Logout.java
===================================================================
--- aCis/acis_game/java/net/sf/l2j/gameserver/network/clientpackets/Logout.java (revision 7)
+++ aCis/acis_game/java/net/sf/l2j/gameserver/network/clientpackets/Logout.java (working copy)
@@ -18,6 +18,7 @@
 import net.sf.l2j.gameserver.instancemanager.SevenSignsFestival;
 import net.sf.l2j.gameserver.model.L2Party;
 import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
+import net.sf.l2j.gameserver.model.entity.custom.PvPEvent;
 import net.sf.l2j.gameserver.model.zone.ZoneId;
 import net.sf.l2j.gameserver.network.SystemMessageId;
 import net.sf.l2j.gameserver.network.serverpackets.ActionFailed;
@@ -52,7 +53,12 @@
  player.sendPacket(ActionFailed.STATIC_PACKET);
  return;
  }
-
+ if (PvPEvent.checkPlayerInEvent(player))
+ {
+ player.sendPacket(SystemMessageId.NO_LOGOUT_HERE);
+ player.sendPacket(ActionFailed.STATIC_PACKET);
+ return;
+ }
  if (player.isInsideZone(ZoneId.NO_RESTART))
  {
  player.sendPacket(SystemMessageId.NO_LOGOUT_HERE);
Index: aCis/acis_game/java/net/sf/l2j/gameserver/handler/AdminCommandHandler.java
===================================================================
--- aCis/acis_game/java/net/sf/l2j/gameserver/handler/AdminCommandHandler.java (revision 7)
+++ aCis/acis_game/java/net/sf/l2j/gameserver/handler/AdminCommandHandler.java (working copy)
@@ -55,6 +55,7 @@
 import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminPetition;
 import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminPledge;
 import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminPolymorph;
+import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminPVP;
 import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminRepairChar;
 import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminRes;
 import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminRideWyvern;
@@ -117,6 +118,7 @@
  registerAdminCommandHandler(new AdminPledge());
  registerAdminCommandHandler(new AdminPolymorph());
  registerAdminCommandHandler(new AdminRepairChar());
+ registerAdminCommandHandler(new AdminPVP());
  registerAdminCommandHandler(new AdminRes());
  registerAdminCommandHandler(new AdminRideWyvern());
  registerAdminCommandHandler(new AdminShop());
\ No newline at end of file
Index: aCis/acis_game/java/net/sf/l2j/gameserver/network/clientpackets/RequestBypassToServer.java
===================================================================
--- aCis/acis_game/java/net/sf/l2j/gameserver/network/clientpackets/RequestBypassToServer.java (revision 7)
+++ aCis/acis_game/java/net/sf/l2j/gameserver/network/clientpackets/RequestBypassToServer.java (working copy)
@@ -28,6 +28,7 @@
 import net.sf.l2j.gameserver.model.actor.instance.L2OlympiadManagerInstance;
 import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
 import net.sf.l2j.gameserver.model.entity.Hero;
+import net.sf.l2j.gameserver.model.entity.custom.PvPEvent;
 import net.sf.l2j.gameserver.model.olympiad.OlympiadManager;
 import net.sf.l2j.gameserver.network.SystemMessageId;
 import net.sf.l2j.gameserver.network.serverpackets.ActionFailed;
@@ -93,6 +94,10 @@
  {
  playerHelp(activeChar, _command.substring(12));
  }
+ else if (_command.startsWith("join_pvp"))
+ {
+       PvPEvent.registerPlayer(activeChar);
+ }
  else if (_command.startsWith("npc_"))
  {
  if (!activeChar.validateBypass(_command))
Index: aCis/acis_game/java/net/sf/l2j/Config.java
===================================================================
--- aCis/acis_game/java/net/sf/l2j/Config.java (revision 7)
+++ aCis/acis_game/java/net/sf/l2j/Config.java (working copy)
@@ -138,7 +138,15 @@
  // --------------------------------------------------
  // Events settings
  // --------------------------------------------------
-
+ /** Player Vs Player*/
+ public static int PVP_EVENT_TIME;
+ public static int PVP_EVENT_REG_TIME;
+ public static int PVP_EVENT_X;
+ public static int PVP_EVENT_Y;
+ public static int PVP_EVENT_Z;
+ public static int [][] PVP_EVENT_REWARDS;
+ public static boolean PVP_EVENT_SETHERO;
+
  /** Olympiad */
  public static int ALT_OLY_START_TIME;
  public static int ALT_OLY_MIN;
@@ -809,6 +817,13 @@
 
  // Events config
  ExProperties events = load(EVENTS_FILE);
+ PVP_EVENT_TIME = events.getProperty("PVPEventTime", 300);
+ PVP_EVENT_REG_TIME = events.getProperty("PVPEventRegisterTime", 30);
+ PVP_EVENT_X = events.getProperty("EventTeleportX", 0);
+ PVP_EVENT_Y = events.getProperty("EventTeleportY", 0);
+ PVP_EVENT_Z = events.getProperty("EventTeleportZ", 0);
+ PVP_EVENT_REWARDS = parseItemsList(events.getProperty("PVPEventRewards", "6622,1"));
+ PVP_EVENT_SETHERO = events.getProperty("PVPEventSetHero", false);
  ALT_OLY_START_TIME = events.getProperty("AltOlyStartTime", 18);
  ALT_OLY_MIN = events.getProperty("AltOlyMin", 0);
  ALT_OLY_CPERIOD = events.getProperty("AltOlyCPeriod", 21600000);
Index: aCis/acis_game/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- aCis/acis_game/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 7)
+++ aCis/acis_game/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (working copy)
@@ -127,6 +127,7 @@
 import net.sf.l2j.gameserver.model.entity.Duel;
 import net.sf.l2j.gameserver.model.entity.Hero;
 import net.sf.l2j.gameserver.model.entity.Siege;
+import net.sf.l2j.gameserver.model.entity.custom.PvPEvent;
 import net.sf.l2j.gameserver.model.holder.ItemHolder;
 import net.sf.l2j.gameserver.model.holder.SkillUseHolder;
 import net.sf.l2j.gameserver.model.item.Henna;
@@ -575,9 +576,8 @@
  private final int _race[] = new int[2];
 
  private final BlockList _blockList = new BlockList(this);
-
+ private int _pointsPvPEvent;
  private int _team = 0;
-
  private int _alliedVarkaKetra = 0; // lvl of alliance with ketra orcs or varka silenos, used in quests and aggro checks [-5,-1] varka, 0 neutral, [1,5] ketra
 
  private Location _fishingLoc;
@@ -4025,7 +4025,7 @@
  if (killer != null)
  {
  L2PcInstance pk = killer.getActingPlayer();
-
+ PvPEvent.onDie(this, pk);
  // Clear resurrect xp calculation
  setExpBeforeDeath(0);
 
@@ -9843,7 +9843,16 @@
  {
  _punishTimer = time;
  }
-
+ public void setPointPvPEvent(int point)
+ {
+     _pointsPvPEvent = point;
+ }
+
+ public int getPointPvPEvent()
+ {
+      return _pointsPvPEvent;
+ }
+
  private void updatePunishState()
  {
  if (getPunishLevel() != PunishLevel.NONE)
Index: aCis/acis_game/java/net/sf/l2j/gameserver/network/serverpackets/Die.java
===================================================================
--- aCis/acis_game/java/net/sf/l2j/gameserver/network/serverpackets/Die.java (revision 7)
+++ aCis/acis_game/java/net/sf/l2j/gameserver/network/serverpackets/Die.java (working copy)
@@ -21,6 +21,7 @@
 import net.sf.l2j.gameserver.model.actor.L2Character;
 import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
 import net.sf.l2j.gameserver.model.entity.Castle;
+import net.sf.l2j.gameserver.model.entity.custom.PvPEvent;
 
 public class Die extends L2GameServerPacket
 {
@@ -57,6 +58,10 @@
 
  writeC(0x06);
  writeD(_charObjId);
+
+ if (_activeChar instanceof L2PcInstance && PvPEvent.checkPlayerInEvent(((L2PcInstance)_activeChar)))
+      return;
+
  writeD(0x01); // to nearest village
 
  if (_clan != null)
Index: aCis/acis_game/java/net/sf/l2j/gameserver/model/olympiad/OlympiadManager.java
===================================================================
--- aCis/acis_game/java/net/sf/l2j/gameserver/model/olympiad/OlympiadManager.java (revision 7)
+++ aCis/acis_game/java/net/sf/l2j/gameserver/model/olympiad/OlympiadManager.java (working copy)
@@ -22,7 +22,9 @@
 
 import net.sf.l2j.Config;
 import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
+import net.sf.l2j.gameserver.model.entity.custom.PvPEvent;
 import net.sf.l2j.gameserver.network.SystemMessageId;
+import net.sf.l2j.gameserver.network.serverpackets.ActionFailed;
 import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
 import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;
 import net.sf.l2j.gameserver.templates.StatsSet;
@@ -256,7 +258,12 @@
  player.sendPacket(SystemMessageId.ONLY_NOBLESS_CAN_PARTICIPATE_IN_THE_OLYMPIAD);
  return false;
  }
-
+ if (PvPEvent.checkPlayerInEvent(player))
+ {
+ player.sendMessage("You are registered in another event, please try again later...");
+ player.sendPacket(ActionFailed.STATIC_PACKET);
+ return false;
+ }
  if (player.isSubClassActive())
  {
  player.sendPacket(SystemMessageId.YOU_CANT_JOIN_THE_OLYMPIAD_WITH_A_SUB_JOB_CHARACTER);
Index: aCis/acis_game/java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java
===================================================================
--- aCis/acis_game/java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java (revision 7)
+++ aCis/acis_game/java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java (working copy)
@@ -37,6 +37,8 @@
 import net.sf.l2j.gameserver.model.entity.ClanHall;
 import net.sf.l2j.gameserver.model.entity.Couple;
 import net.sf.l2j.gameserver.model.entity.Siege;
+import net.sf.l2j.gameserver.model.entity.custom.PvPEvent;
+import net.sf.l2j.gameserver.model.entity.custom.PvPEvent.EventState;
 import net.sf.l2j.gameserver.model.olympiad.Olympiad;
 import net.sf.l2j.gameserver.model.quest.Quest;
 import net.sf.l2j.gameserver.model.quest.QuestState;
@@ -173,7 +175,10 @@
  activeChar.sendPacket(SystemMessageId.WELCOME_TO_LINEAGE);
  SevenSigns.getInstance().sendCurrentPeriodMsg(activeChar);
  Announcements.getInstance().showAnnouncements(activeChar);
-
+ if (PvPEvent.getStatePVP() == EventState.REGISTER){
+ PvPEvent.regWindow(activeChar);
+ }
+
  // if player is DE, check for shadow sense skill at night
  if (activeChar.getRace() == Race.DarkElf && activeChar.getSkillLevel(294) == 1)
  activeChar.sendPacket(SystemMessage.getSystemMessage((GameTimeController.getInstance().isNight()) ? SystemMessageId.NIGHT_S1_EFFECT_APPLIES : SystemMessageId.DAY_S1_EFFECT_DISAPPEARS).addSkillName(294));
Index: aCis/acis_game/java/net/sf/l2j/gameserver/network/clientpackets/RequestRestart.java
===================================================================
--- aCis/acis_game/java/net/sf/l2j/gameserver/network/clientpackets/RequestRestart.java (revision 7)
+++ aCis/acis_game/java/net/sf/l2j/gameserver/network/clientpackets/RequestRestart.java (working copy)
@@ -18,6 +18,7 @@
 import net.sf.l2j.gameserver.instancemanager.SevenSignsFestival;
 import net.sf.l2j.gameserver.model.L2Party;
 import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
+import net.sf.l2j.gameserver.model.entity.custom.PvPEvent;
 import net.sf.l2j.gameserver.model.zone.ZoneId;
 import net.sf.l2j.gameserver.network.L2GameClient;
 import net.sf.l2j.gameserver.network.L2GameClient.GameClientState;
@@ -59,6 +60,12 @@
  sendPacket(RestartResponse.valueOf(false));
  return;
  }
+ if (PvPEvent.checkPlayerInEvent(player))
+ {
+ player.sendPacket(SystemMessageId.NO_LOGOUT_HERE);
+ sendPacket(RestartResponse.valueOf(false));
+ return;
+ }
 
  if (player.isInStoreMode())
  {
 

CitarDATA:

### Eclipse Workspace Patch 1.0
#P trunk 2
Index: aCis/acis_datapack/data/xml/admin_commands_rights.xml
===================================================================
--- aCis/acis_datapack/data/xml/admin_commands_rights.xml (revision 7)
+++ aCis/acis_datapack/data/xml/admin_commands_rights.xml (working copy)
@@ -370,4 +370,7 @@
  <aCar name="admin_zone_visual" accessLevel="1" />
  <aCar name="admin_zone_visual_clear" accessLevel="1" />
 
+ <!-- CUSTOM -->
+ <aCar name="admin_pvp_start" accessLevel="1" />
+ <aCar name="admin_pvp_end" accessLevel="1" />
 </list>
\ No newline at end of file
Index: aCis/acis_datapack/data/html/mods/pvp/event.htm
===================================================================
--- aCis/acis_datapack/data/html/mods/pvp/event.htm (revision 0)
+++ aCis/acis_datapack/data/html/mods/pvp/event.htm (working copy)
@@ -0,0 +1,59 @@
+<html>
+<title>Event Manager</title>
+<body>
+<center>
+<center><img src=L2UI.SquareGray width=250 height=1></center>
+<td><img src="L2UI.SquareBlank" width=40 height=2></td>
+<center><img src="L2UI.SquareGray" width=300 height=1></center>
+<table bgcolor=000000 width=300 height=40>
+<tr>
+<td width="300" align="center"><font color="666666">Lineage II - PVP EVENT</font></td>
+</tr>
+</table>
+<center><img src="L2UI.SquareGray" width=300 height=1></center>
+<td><img src="L2UI.SquareBlank" width=40 height=2></td>
+<center><img src=L2UI.SquareGray width=250 height=1></center>
+<br>
+<center><img src=L2UI.SquareGray width=250 height=1></center>
+<td><img src="L2UI.SquareBlank" width=40 height=2></td>
+<center><img src="L2UI.SquareGray" width=300 height=1></center>
+</center>
+<center>
+<table bgcolor=000000 width=300 height=12>
+<tr>
+<td width="300" align="center"><font color="FF0000">Event Manager</font></td>
+</tr>
+<tr>
+<td width="300" align="center"><font color="666666">...Event Info...</font></td>
+</tr>
+</table>
+<center><img src="L2UI.SquareGray" width=300 height=1></center>
+<td><img src="L2UI.SquareBlank" width=40 height=2></td>
+<center><img src=L2UI.SquareGray width=250 height=1></center>
+<br>
+<center><img src=L2UI.SquareGray width=250 height=1></center>
+<td><img src="L2UI.SquareBlank" width=40 height=2></td>
+<center><img src="L2UI.SquareGray" width=300 height=1></center>
+<table border=0 bgcolor=000000 width=300 height=10>
+<tr>
+<td width="300" align="center"><font color="FF9900">Deseja participar do evento ? - </font></td>
+</tr>
+</table>
+<center><img src="L2UI.SquareGray" width=300 height=1></center>
+<td><img src="L2UI.SquareBlank" width=40 height=2></td>
+<center><img src=L2UI.SquareGray width=250 height=1></center>
+<br>
+<center><img src=L2UI.SquareGray width=250 height=1></center>
+<td><img src="L2UI.SquareBlank" width=40 height=2></td>
+<center><img src="L2UI.SquareGray" width=300 height=1></center>
+<table border=0 bgcolor=000000 width=300 height=20>
+<tr>
+<td align="center" width="300"><button value="Join" action="bypass -h join_pvp" width=85 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></center></td>
+</tr>
+</table>
+<center><img src="L2UI.SquareGray" width=300 height=1></center>
+<td><img src="L2UI.SquareBlank" width=40 height=2></td>
+<center><img src=L2UI.SquareGray width=250 height=1></center>
+</center>
+</body>
+</html>
\ No newline at end of file

CitarIMPLEMENTACIONES:

### Eclipse Workspace Patch 1.0
#P trunk 2
Index: aCis/acis_game/java/net/sf/l2j/gameserver/model/entity/custom/PvPEvent.java
===================================================================
--- aCis/acis_game/java/net/sf/l2j/gameserver/model/entity/custom/PvPEvent.java (revision 8)
+++ aCis/acis_game/java/net/sf/l2j/gameserver/model/entity/custom/PvPEvent.java (working copy)
@@ -197,6 +197,11 @@
  player.sendMessage("you're already registred in evento.");
  return;
  }
+ else if (_players.size() >= 99)
+ {
+ player.sendMessage("Event is full players : "+allplayers);
+ return;
+ }
  _players.add(player);
  allplayers++;
  player.sendMessage("you have been successfully registered");