Advertisement
Guest User

Limit Players in Zone

a guest
Jun 8th, 2021
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.96 KB | None | 0 0
  1. diff --git a/aCis/java/net/sf/l2j/gameserver/model/zone/type/BossZone.java b/aCis/java/net/sf/l2j/gameserver/model/zone/type/BossZone.java
  2. index 56adf02..fe19610 100644
  3. --- a/aCis/java/net/sf/l2j/gameserver/model/zone/type/BossZone.java
  4. +++ b/aCis/java/net/sf/l2j/gameserver/model/zone/type/BossZone.java
  5. @@ -3,6 +3,8 @@
  6. import java.sql.Connection;
  7. import java.sql.PreparedStatement;
  8. import java.sql.ResultSet;
  9. +import java.util.ArrayList;
  10. +import java.util.HashMap;
  11. import java.util.List;
  12. import java.util.Map;
  13. import java.util.Set;
  14. @@ -13,6 +15,7 @@
  15. import net.sf.l2j.Config;
  16. import net.sf.l2j.gameserver.data.xml.MapRegionData.TeleportType;
  17. import net.sf.l2j.gameserver.enums.ZoneId;
  18. +import net.sf.l2j.gameserver.model.World;
  19. import net.sf.l2j.gameserver.model.actor.Attackable;
  20. import net.sf.l2j.gameserver.model.actor.Creature;
  21. import net.sf.l2j.gameserver.model.actor.Playable;
  22. @@ -35,12 +38,13 @@
  23. // Track players admitted to the zone who should be allowed back in after reboot/server downtime, within 30min of server restart
  24. private final Set<Integer> _allowedPlayers = ConcurrentHashMap.newKeySet();
  25.  
  26. + private final Map<String, List<Player>> _players = new HashMap<>();
  27. + private int _maxPlayers;
  28. +
  29. private final int[] _oustLoc = new int[3];
  30.  
  31. private int _invadeTime;
  32.  
  33. public BossZone(int id)
  34. {
  35. super(id);
  36. @@ -73,8 +77,6 @@
  37. _oustLoc[1] = Integer.parseInt(value);
  38. else if (name.equals("oustZ"))
  39. _oustLoc[2] = Integer.parseInt(value);
  40. + else if (name.equals("maxPlayers"))
  41. + _maxPlayers = Integer.parseInt(value);
  42. else
  43. super.setParameter(name, value);
  44. }
  45. @@ -90,16 +92,29 @@
  46. final Player player = (Player) character;
  47. player.setInsideZone(ZoneId.NO_SUMMON_FRIEND, true);
  48.  
  49. + for (Player players : World.getInstance().getPlayers())
  50. + {
  51. + final String playerOne = players.getName();
  52. + final String playerTwo = player.getName();
  53. +
  54. + if (playerOne.equals(playerTwo))
  55. + {
  56. + if (_players.get(playerOne) == null)
  57. + _players.put(playerOne, new ArrayList<Player>());
  58. +
  59. + _players.get(playerOne).add(player);
  60. +
  61. + if (_players.get(playerOne).size() > _maxPlayers)
  62. + {
  63. + player.sendMessage("Only "+ _maxPlayers +" players per ip in this zone.");
  64. + player.teleportTo(TeleportType.TOWN);
  65. + }
  66. + }
  67. + }
  68. +
  69. if (player.isFlying())
  70. player.dismount();
  71.  
  72. // Skip other checks for GM or if no invade time is set.
  73. if (player.isGM() || _invadeTime == 0 || Config.ACCEPT_PLAYERS_WITHOUT_QUEST)
  74. return;
  75. @@ -150,9 +165,9 @@
  76. // Get player and set zone info.
  77. final Player player = (Player) character;
  78. player.setInsideZone(ZoneId.NO_SUMMON_FRIEND, false);
  79. +
  80. + if (_players.containsKey(player.getName()))
  81. + _players.remove(player.getName());
  82. +
  83. // Skip other checks for GM or if no invade time is set.
  84. if (player.isGM() || _invadeTime == 0)
  85. \ No newline at end of file
  86.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement