Продам Скрипт для Instances (Таймер На Экране).

  1. ### Eclipse Workspace Patch 1.0
  2. #P
  3. Index: java/net/sf/l2j/gameserver/model/zone/type/TownZone.java
  4. ===================================================================
  5. --- java/net/sf/l2j/gameserver/model/zone/type/TownZone.java (revision 3)
  6. +++ java/net/sf/l2j/gameserver/model/zone/type/TownZone.java (working copy)
  7. @@ -1,10 +1,18 @@
  8. package net.sf.l2j.gameserver.model.zone.type;
  9. +import java.util.Collection;
  10. +import java.util.concurrent.ScheduledFuture;
  11. +import java.util.stream.Collectors;
  12. +
  13. +import net.sf.l2j.commons.concurrent.ThreadPool;
  14. +
  15. import net.sf.l2j.Config;
  16. import net.sf.l2j.gameserver.model.actor.Creature;
  17. import net.sf.l2j.gameserver.model.actor.instance.Player;
  18. import net.sf.l2j.gameserver.model.zone.SpawnZoneType;
  19. import net.sf.l2j.gameserver.model.zone.ZoneId;
  20. +import net.sf.l2j.gameserver.network.serverpackets.ExShowScreenMessage;
  21. +import net.sf.l2j.gameserver.network.serverpackets.ExShowScreenMessage.SMPOS;
  22. /**
  23. * A zone extending {@link SpawnZoneType}, used by towns. A town zone is generally associated to a castle for taxes.
  24. @@ -13,6 +21,8 @@
  25. {
  26. private int _townId;
  27. private int _castleId;
  28. + protected ScheduledFuture<?> _counterTask = null;
  29. + protected int _timer = 5 * 60;
  30. private boolean _isPeaceZone = true;
  31. @@ -37,6 +47,9 @@
  32. @Override
  33. protected void onEnter(Creature character)
  34. {
  35. + if (character instanceof Player && _counterTask == null)
  36. + _counterTask = startCounter();
  37. +
  38. if (Config.ZONE_TOWN == 1 && character instanceof Player && ((Player) character).getSiegeState() != 0)
  39. return;
  40. @@ -46,6 +59,11 @@
  41. character.setInsideZone(ZoneId.TOWN, true);
  42. }
  43. + private ScheduledFuture<?> startCounter()
  44. + {
  45. + return ThreadPool.scheduleAtFixedRate(new Counter(), 1000, 1000);
  46. + }
  47. +
  48. @Override
  49. protected void onExit(Creature character)
  50. {
  51. @@ -53,6 +71,9 @@
  52. character.setInsideZone(ZoneId.PEACE, false);
  53. character.setInsideZone(ZoneId.TOWN, false);
  54. +
  55. + if (getPlayers().size() < 1)
  56. + resetCounter();
  57. }
  58. @Override
  59. @@ -75,8 +96,49 @@
  60. return _castleId;
  61. }
  62. + public Collection<Player> getPlayers()
  63. + {
  64. + return getCharacters().stream().filter(pl -> pl instanceof Player).map(cr -> (Player) cr).collect(Collectors.toList());
  65. + }
  66. +
  67. public final boolean isPeaceZone()
  68. {
  69. return _isPeaceZone;
  70. }
  71. +
  72. + protected void resetCounter()
  73. + {
  74. + if (_counterTask != null)
  75. + {
  76. + _counterTask.cancel(true);
  77. + _counterTask = null;
  78. + }
  79. + _timer = 5 * 60;
  80. + }
  81. +
  82. + class Counter implements Runnable
  83. + {
  84. +
  85. + protected Counter()
  86. + {
  87. + }
  88. +
  89. + @Override
  90. + public void run()
  91. + {
  92. + if (_timer < 1)
  93. + {
  94. + resetCounter();
  95. + return;
  96. + }
  97. + for (Player player : getPlayers())
  98. + {
  99. + int minutes = _timer / 60;
  100. + int second = _timer % 60;
  101. + String timing = ((minutes < 10) ? ("0" + minutes) : minutes) + ":" + ((second < 10) ? ("0" + second) : second);
  102. + player.sendPacket(new ExShowScreenMessage("Next town at : " + timing, 1100, SMPOS.TOP_CENTER, false));
  103. + }
  104. + _timer--;
  105. + }
  106. + }
  107. }
  108. \ No newline at end of file
 
  1. ### Eclipse Workspace Patch 1.0
  2. #P
  3. Index: java/net/sf/l2j/gameserver/model/zone/type/TownZone.java
  4. ===================================================================
  5. --- java/net/sf/l2j/gameserver/model/zone/type/TownZone.java (revision 3)
  6. +++ java/net/sf/l2j/gameserver/model/zone/type/TownZone.java (working copy)
  7. @@ -1,10 +1,18 @@
  8. package net.sf.l2j.gameserver.model.zone.type;

  9. +import java.util.Collection;
  10. +import java.util.concurrent.ScheduledFuture;
  11. +import java.util.stream.Collectors;
  12. +
  13. +import net.sf.l2j.commons.concurrent.ThreadPool;
  14. +
  15. import net.sf.l2j.Config;
  16. import net.sf.l2j.gameserver.model.actor.Creature;
  17. import net.sf.l2j.gameserver.model.actor.instance.Player;
  18. import net.sf.l2j.gameserver.model.zone.SpawnZoneType;
  19. import net.sf.l2j.gameserver.model.zone.ZoneId;
  20. +import net.sf.l2j.gameserver.network.serverpackets.ExShowScreenMessage;
  21. +import net.sf.l2j.gameserver.network.serverpackets.ExShowScreenMessage.SMPOS;

  22. /**
  23. * A zone extending {@link SpawnZoneType}, used by towns. A town zone is generally associated to a castle for taxes.
  24. @@ -13,6 +21,8 @@
  25. {
  26. private int _townId;
  27. private int _castleId;
  28. + protected ScheduledFuture<?> _counterTask = null;
  29. + protected int _timer = 5 * 60;
  30. private boolean _isPeaceZone = true;
  31. @@ -37,6 +47,9 @@
  32. @Override
  33. protected void onEnter(Creature character)
  34. {
  35. + if (character instanceof Player && _counterTask == null)
  36. + _counterTask = startCounter();
  37. +
  38. if (Config.ZONE_TOWN == 1 && character instanceof Player && ((Player) character).getSiegeState() != 0)
  39. return;
  40. @@ -46,6 +59,11 @@
  41. character.setInsideZone(ZoneId.TOWN, true);
  42. }
  43. + private ScheduledFuture<?> startCounter()
  44. + {
  45. + return ThreadPool.scheduleAtFixedRate(new Counter(), 1000, 1000);
  46. + }
  47. +
  48. @Override
  49. protected void onExit(Creature character)
  50. {
  51. @@ -53,6 +71,9 @@
  52. character.setInsideZone(ZoneId.PEACE, false);
  53. character.setInsideZone(ZoneId.TOWN, false);
  54. +
  55. + if (getPlayers().size() < 1)
  56. + resetCounter();
  57. }
  58. @Override
  59. @@ -75,8 +96,49 @@
  60. return _castleId;
  61. }
  62. + public Collection<Player> getPlayers()
  63. + {
  64. + return getCharacters().stream().filter(pl -> pl instanceof Player).map(cr -> (Player) cr).collect(Collectors.toList());
  65. + }
  66. +
  67. public final boolean isPeaceZone()
  68. {
  69. return _isPeaceZone;
  70. }
  71. +
  72. + protected void resetCounter()
  73. + {
  74. + if (_counterTask != null)
  75. + {
  76. + _counterTask.cancel(true);
  77. + _counterTask = null;
  78. + }
  79. + _timer = 5 * 60;
  80. + }
  81. +
  82. + class Counter implements Runnable
  83. + {
  84. +
  85. + protected Counter()
  86. + {
  87. + }
  88. +
  89. + @Override
  90. + public void run()
  91. + {
  92. + if (_timer < 1)
  93. + {
  94. + resetCounter();
  95. + return;
  96. + }
  97. + for (Player player : getPlayers())
  98. + {
  99. + int minutes = _timer / 60;
  100. + int second = _timer % 60;
  101. + String timing = ((minutes < 10) ? ("0" + minutes) : minutes) + ":" + ((second < 10) ? ("0" + second) : second);
  102. + player.sendPacket(new ExShowScreenMessage("Next town at : " + timing, 1100, SMPOS.TOP_CENTER, false));
  103. + }
  104. + _timer--;
  105. + }
  106. + }
  107. }
  108. \ No newline at end of file
Если уж взял с ммодева хоть бы указал ссылкой)
И под тег код запихнул)
 
Back
Top