Показать сообщение отдельно
Непрочитано 27.01.2014, 06:26   #1
Пользователь

Автор темы (Топик Стартер) Вывод минимального количества игроков в конфиг для прохода к Antharas

Здравствуйте, появилась необходимость вывести минимальное количество игроков для входа к Антарасу. Исходники команды First-Team.

Сначала по ID телепорта к Тарасу нашёл его диалог в HTML:
Код HTML:
!Heart of Warding:
Доносится очень громкий голос, от которого дрожит все тело:
<font color="LEVEL">Он был брошен с самого рождения.%%
Его мать была обманута детьми.%%
Он спустился на землю,%%
Чтобы умерить ее гнев.Паломник Земли Тьмы!%%
Как Вы смеете бросать вызов Антарасу?</font>
(Бросить вызов Антарасу могут максимум 200 игроков.)
[npc_%objectId%_enter_lair|Переместиться в Гнездо Антараса]
Затем пошёл посмотреть тип NPC и найти его в xml файле, тип был такой:
Код HTML:
<set name="type" value="HeartOfWarding" />
Далее я проследовал до sripts/npc/model/NpcTypeInstance.java где NpcTypeInstance = HeartOfWardingUnstance
Код HTML:
package npc.model;
import l2ft.gameserver.model.Player;
import l2ft.gameserver.model.instances.NpcInstance;
import l2ft.gameserver.templates.npc.NpcTemplate;
import bosses.AntharasManager;
/**
* @author pchayka
*/
public final class HeartOfWardingInstance extends NpcInstance
{
public HeartOfWardingInstance(int objectId, NpcTemplate template)
{
  super(objectId, template);
}
@Override
public void onBypassFeedback(Player player, String command)
{
  if(!canBypassCheck(player, this))
   return;
  if(command.equalsIgnoreCase("enter_lair"))
  {
   AntharasManager.enterTheLair(player);
   return;
  }
  else
   super.onBypassFeedback(player, command);
}
}
Где ясно сказано что нужно выполнять:
Код HTML:
if(command.equalsIgnoreCase("enter_lair"))
  {
   AntharasManager.enterTheLair(player);
   return;
  }
идём дальше, в AntharasManager, а именно в enterTheLair(player)
Код HTML:
public static void enterTheLair(Player player)
{
  if(player == null)
   return;
  // Телепортироваться могут только ЦЦ, не знаю нужно ли но оставлю.
  if(player.getParty() == null || !player.getParty().isInCommandChannel())
  {
   player.sendPacket(Msg.YOU_CANNOT_ENTER_BECAUSE_YOU_ARE_NOT_IN_A_CURRENT_COMMAND_CHANNEL);
   return;
  }
  CommandChannel cc = player.getParty().getCommandChannel();
  if(cc.getChannelLeader() != player)
  {
   player.sendPacket(Msg.ONLY_THE_ALLIANCE_CHANNEL_LEADER_CAN_ATTEMPT_ENTRY);
   return;
  }
  if(cc.getMemberCount() > 200)
  {
   player.sendMessage("The maximum of 200 players can invade the Antharas Nest");
   return;
  }
  if(getPlayersInside().size() > 200)
  {
   player.sendMessage("The maximum of 200 players can invade the Antharas Nest");
   return;
  }
  if(_state.getState() != EpicBossState.State.NOTSPAWN)
  {
   player.sendMessage("Antharas is still reborning. You cannot invade the nest now");
   return;
  }
  if(_entryLocked || _state.getState() == EpicBossState.State.ALIVE)
  {
   player.sendMessage("Antharas has already been reborned and is being attacked. The entrance is sealed.");
   return;
  }
  // checking every member of CC for the proper conditions
  for(Player p : cc)
   if(p.isDead() || p.isFlying() || p.isCursedWeaponEquipped() || p.getInventory().getCountOf(PORTAL_STONE) < 1 || !p.isInRange(player, 500))
   {
        player.sendMessage("Command Channel member " + p.getName() + " doesn't meet the requirements to enter the nest");
        return;
   }
  for(Player p : cc)
   p.teleToLocation(TELEPORT_POSITION);
  _checkPlayer = ThreadPoolManager.getInstance().scheduleAtFixedDelay(new CheckPlayerIsInCommandChannel(), 1000, 1000);
  setAntharasSpawnTask();
}
Есть только проверка на максимальное количество игроков при входе и внутри. Подскажите пожалуйста куда рыть дальше?
texport вне форума Отправить сообщение для texport с помощью Skype™ Ответить с цитированием