Перейти к содержанию
Авторизация  
Wros

Gameserver error

Рекомендуемые сообщения

i have this error:

can any help for this. thanks

java.lang.IndexOutOfBoundsException: index: 0
        at javolution.util.FastList.get(FastList.java:196)
        at net.sf.l2j.gameserver.event.Event.getRandomPlayerFromTeam(Event.java:
365)
        at net.sf.l2j.gameserver.event.VIPTvT.selectNewVipOfTeam(VIPTvT.java:125
)
        at net.sf.l2j.gameserver.event.VIPTvT$Core.run(VIPTvT.java:36)
        at net.sf.l2j.gameserver.ThreadPoolManager$RunnableWrapper.run(ThreadPoo
lManager.java:85)
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
        at java.util.concurrent.FutureTask.run(Unknown Source)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.
access$201(Unknown Source)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.
run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)

package net.sf.l2j.gameserver.event.Event

 
    import java.util.ArrayList;
    import java.util.Set;
    
    import javolution.util.FastList;
    import javolution.util.FastMap;
    
    import net.sf.l2j.gameserver.ThreadPoolManager;
    import net.sf.l2j.gameserver.datatables.NpcTable;
    import net.sf.l2j.gameserver.datatables.SpawnTable;
    import net.sf.l2j.gameserver.model.L2Effect;
    import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
    import net.sf.l2j.gameserver.model.L2Object;
    import net.sf.l2j.gameserver.model.L2Party;
    import net.sf.l2j.gameserver.model.L2Skill;
    import net.sf.l2j.gameserver.model.L2Spawn;
    import net.sf.l2j.gameserver.model.actor.L2Character;
    import net.sf.l2j.gameserver.model.actor.L2Npc;
    import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
    import net.sf.l2j.gameserver.network.serverpackets.CreatureSay;
    import net.sf.l2j.gameserver.network.serverpackets.ExShowScreenMessage;
    import net.sf.l2j.gameserver.skills.AbnormalEffect;
    import net.sf.l2j.gameserver.model.actor.template.NpcTemplate;
    import net.sf.l2j.gameserver.model.item.type.EtcItemType;
    import net.sf.l2j.gameserver.templates.skills.L2SkillType;
    import net.sf.l2j.util.Rnd;
    
    public abstract class Event
    {
     protected static final int[] ITEMS = {6707, 6709, 6708, 6710, 6704, 6701, 6702, 6703, 6706, 6705, 6713, 6714, 6712, 6711, 6697, 6688, 6696, 6691, 7579, 6695, 6694, 6689, 6693, 6690};
     protected int eventId;
     protected EventConfig config = EventConfig.getInstance();
     protected FastMap<Integer, EventTeam> teams;
     protected ThreadPoolManager tpm;
     protected ResurrectorTask resurrectorTask;
     protected Clock clock;
     protected String scorebartext;
     protected int time;
     protected int winnerTeam;
     protected int loserTeam;
     private FastMap<L2PcInstance, ArrayList<L2Skill>> summons;
     
     // TEAM-STATUS-SCORE
     protected FastMap<L2PcInstance, int[]> players;
     
     protected class Clock implements Runnable
     {
     private int totalTime;
     
     protected String getTime()
     {
     String mins = "" + time / 60;
     String secs = (time % 60 < 10 ? "0" + time % 60 : "" + time % 60);
     return mins + ":" + secs + "";
     }
     
     @Override
     public void run()
     {
     clockTick();
     
     if (time < totalTime)
     {
     scorebartext = getScorebar();
     if (scorebartext != "")
     {
     for (L2PcInstance player : getPlayerList())
     player.sendPacket(new ExShowScreenMessage(1, -1, 3, false, 1, 0, 0, false, 2000, false, scorebartext));
     }
     }
     
     if (time <= 0)
     schedule(1);
     else
     {
     time--;
     tpm.scheduleGeneral(clock, 1000);
     }
     }
     
     protected void setTime(int t)
     {
     time = t;
     }
     
     protected void startClock(int mt)
     {
     totalTime = mt - 2;
     time = mt;
     tpm.scheduleGeneral(clock, 1);
     }
     }
     
     protected class ResurrectorTask implements Runnable
     {
     private L2PcInstance player;
     
     public ResurrectorTask(L2PcInstance p)
     {
     player = p;
     ThreadPoolManager.getInstance().scheduleGeneral(this, 7000);
     }
     
     @Override
     public void run()
     {
     if (EventManager.getInstance().isRegistered(player))
     {
     player.doRevive();
     
     player.setCurrentCp(player.getMaxCp());
     player.setCurrentHp(player.getMaxHp());
     player.setCurrentMp(player.getMaxMp());
     teleportToTeamPos(player);
     }
     }
     }
     
     public Event()
     {
     teams = new FastMap<>();
     clock = new Clock();
     tpm = ThreadPoolManager.getInstance();
     players = new FastMap<>();
     summons = new FastMap<>();
     time = 0;
     }
     
     protected void clockTick()
     {
     
     }
     
     public void dropBomb(L2PcInstance player)
     {
     
     }
     
     public void onHit(L2PcInstance actor, L2PcInstance target)
     {
     
     }
     
     public void useCapture(L2PcInstance player, L2Npc base)
     {
     
     }
     
     protected void addToResurrector(L2PcInstance player)
     {
     new ResurrectorTask(player);
     }
     
     protected void announce(Set<L2PcInstance> list, String text)
     {
     for (L2PcInstance player : list)
     player.sendPacket(new CreatureSay(0, 18, "", "[Event] " + text));
     }
     
     public boolean canAttack(L2PcInstance player, L2Object target)
     {
     return true;
     }
     
     protected int countOfPositiveStatus()
     {
     int count = 0;
     for (L2PcInstance player : getPlayerList())
     if (getStatus(player) >= 0)
     count++;
     
     return count;
     }
     
     protected void createNewTeam(int id, String name, int[] color, int[] startPos)
     {
     teams.put(id, new EventTeam(id, name, color, startPos));
     }
     
     protected void createPartyOfTeam(int teamId)
     {
     int count = 0;
     L2Party party = null;
     
     FastList<L2PcInstance> list = new FastList<>();
     
     for (L2PcInstance p : players.keySet())
     if (getTeam(p) == teamId)
     list.add(p);
     
     for (L2PcInstance player : list)
     {
     if (count % 9 == 0 && list.size() - count != 1)
     party = new L2Party(player, 1);
     if (count % 9 < 9)
     player.joinParty(party);
     count++;
     }
     }
     
     protected void divideIntoTeams(int number)
     {
     int i = 0;
     
     while (EventManager.getInstance().players.size() != 0)
     {
     i++;
     L2PcInstance player = EventManager.getInstance().players.get(Rnd.get(EventManager.getInstance().players.size()));
     
     // skip healers
     if (player.getClassId().getId() == 16 || player.getClassId().getId() == 97)
     continue;
     
     players.put(player, new int[] { i, 0, 0 });
     EventManager.getInstance().players.remove(player);
     if (i == number)
     i = 0;
     }
     
     i = getPlayersOfTeam(1).size() > getPlayersOfTeam(2).size() ? 1 : 0;
     
     // healers here
     while (EventManager.getInstance().players.size() != 0)
     {
     i++;
     L2PcInstance player = EventManager.getInstance().players.get(Rnd.get(EventManager.getInstance().players.size()));
     
     players.put(player, new int[] { i, 0, 0 });
     EventManager.getInstance().players.remove(player);
     if (i == number)
     i = 0;
     }
     }
     
     protected void forceSitAll()
     {
     for (L2PcInstance player : players.keySet())
     {
     player.abortAttack();
     player.abortCast();
     player.setIsParalyzed(true);
     player.setIsInvul(true);
     player.startAbnormalEffect(AbnormalEffect.HOLD_2);
     }
     }
     
     protected void forceStandAll()
     {
     for (L2PcInstance player : players.keySet())
     {
     player.stopAbnormalEffect(AbnormalEffect.HOLD_2);
     player.setIsInvul(false);
     player.setIsParalyzed(false);
     }
     }
     
     protected void InvisAll()
     {
     for (L2PcInstance player : players.keySet())
     {
     player.abortAttack();
     player.abortCast();
     player.getAppearance().setInvisible();
     }
     }
     
     protected void unInvisAll()
     {
     for (L2PcInstance player : players.keySet())
     {
     player.getAppearance().setVisible();
     player.broadcastCharInfo();
     }
     }
     
     public boolean getBoolean(String propName)
     {
     return config.getBoolean(eventId, propName);
     }
     
     public int[] getColor(String owner)
     {
     return config.getColor(eventId, owner);
     }
     
     public int getInt(String propName)
     {
     return config.getInt(eventId, propName);
     }
     
     protected Set<L2PcInstance> getPlayerList()
     {
     return players.keySet();
     }
     
     protected FastList<L2PcInstance> getPlayersOfTeam(int team)
     {
     FastList<L2PcInstance> list = new FastList<>();
     
     for (L2PcInstance player : getPlayerList())
     if (getTeam(player) == team)
     list.add(player);
     
     return list;
     }
     
     protected EventTeam getPlayersTeam(L2PcInstance player)
     {
     return teams.get(players.get(player)[0]);
     }
     
     protected FastList<L2PcInstance> getPlayersWithStatus(int status)
     {
     FastList<L2PcInstance> list = new FastList<>();
     
     for (L2PcInstance player : getPlayerList())
     if (getStatus(player) == status)
     list.add(player);
     
     return list;
     }
     
     protected L2PcInstance getPlayerWithMaxScore()
     {
     L2PcInstance max = players.head().getNext().getKey();
     
     for (L2PcInstance player : players.keySet())
     if (players.get(player)[2] > players.get(max)[2])
     max = player;
     
     return max;
     }
     
     protected void unequip()
     {
     for (L2PcInstance player : players.keySet())
     {
     player.getInventory().unEquipItemInSlot(7);
     player.getInventory().unEquipItemInSlot(;
     }
     }
     
     public int[] getPosition(String owner, int num)
     {
     return config.getPosition(eventId, owner, num);
     }
     
     protected L2PcInstance getRandomPlayer()
     {
     FastList<L2PcInstance> temp = new FastList<>();
     for (L2PcInstance player : players.keySet())
     temp.add(player);
     
     return temp.get(Rnd.get(temp.size()));
     }
     
     protected L2PcInstance getRandomPlayerFromTeam(int team)
     {
     FastList<L2PcInstance> temp = new FastList<>();
     for (L2PcInstance player : players.keySet())
     if (getTeam(player) == team)
     temp.add(player);
     
     return temp.get(Rnd.get(temp.size()));
     }
     
     protected FastList<L2PcInstance> getPlayersFromTeamWithStatus(int team, int status)
     {
     FastList<L2PcInstance> players = getPlayersWithStatus(status);
     FastList<L2PcInstance> temp = new FastList<>();
     
     for (L2PcInstance player : players)
     if (getTeam(player) == team)
     temp.add(player);
     
     return temp;
     }
     
     protected L2PcInstance getRandomPlayerFromTeamWithStatus(int team, int status)
     {
     FastList<L2PcInstance> temp = getPlayersFromTeamWithStatus(team, status);
     return temp.get(Rnd.get(temp.size()));
     }
     
     public FastList<Integer> getRestriction(String type)
     {
     return config.getRestriction(eventId, type);
     }
     
     protected int getScore(L2PcInstance player)
     {
     return players.get(player)[2];
     }
     
     protected int getStatus(L2PcInstance player)
     {
     return players.get(player)[1];
     }
     
     public String getString(String propName)
     {
     return config.getString(eventId, propName);
     }
     
     public int getTeam(L2PcInstance player)
     {
     return players.get(player)[0];
     }
     
     protected int getWinnerTeam()
     {
     FastList<EventTeam> t = new FastList<>();
     
     for (EventTeam team : teams.values())
     {
     if (t.size() == 0)
     {
     t.add(team);
     continue;
     }
     
     if (team.getScore() > t.getFirst().getScore())
     {
     t.clear();
     t.add(team);
     continue;
     }
     
     if (team.getScore() == t.getFirst().getScore())
     t.add(team);
     }
     
     if (t.size() > 1)
     return 0;
     
     return t.getFirst().getId();
     }
     
     protected void giveReward(FastList<L2PcInstance> players, int id, int ammount)
     {
     for (L2PcInstance player : players)
     {
     if (player == null)
     continue;
     
     player.addItem("Event", id, ammount, player, true);
     EventStats.getInstance().tempTable.get(player.getObjectId())[0] = 1;
     }
     }
     
     protected void giveReward(L2PcInstance player, int id, int ammount)
     {
     EventStats.getInstance().tempTable.get(player.getObjectId())[0] = 1;
     player.addItem("Event", id, ammount, player, true);
     }
     
     protected void increasePlayersScore(L2PcInstance player)
     {
     int old = getScore(player);
     setScore(player, old + 1);
     EventStats.getInstance().tempTable.get(player.getObjectId())[3] = EventStats.getInstance().tempTable.get(player.getObjectId())[3] + 1;
     }
     
     protected void msgToAll(String text)
     {
     for (L2PcInstance player : players.keySet())
     player.sendMessage(text);
     }
     
     public void onDie(L2PcInstance victim, L2Character killer)
     {
     EventStats.getInstance().tempTable.get(victim.getObjectId())[2] = EventStats.getInstance().tempTable.get(victim.getObjectId())[2] + 1;
     }
     
     public void onKill(L2Character victim, L2PcInstance killer)
     {
     EventStats.getInstance().tempTable.get(killer.getObjectId())[1] = EventStats.getInstance().tempTable.get(killer.getObjectId())[1] + 1;
     }
     
     public void onLogout(L2PcInstance player)
     {
     if (players.containsKey(player))
     removePlayer(player);
     
     player.setXYZ(EventManager.getInstance().positions.get(player)[0], EventManager.getInstance().positions.get(player)[1], EventManager.getInstance().positions.get(player)[2]);
     player.setTitle(EventManager.getInstance().titles.get(player));
     
     if (teams.size() == 1)
     {
     if (getPlayerList().size() == 1)
     endEvent();
     }
     else
     {
     int t = players.head().getNext().getValue()[0];
     for (L2PcInstance p : getPlayerList())
     if (getTeam(p) != t)
     return;
     
     endEvent();
     }
     }
     
     public boolean onSay(int type, L2PcInstance player, String text)
     {
     return true;
     }
     
     public boolean onTalkNpc(L2Npc npc, L2PcInstance player)
     {
     return false;
     }
     
     public boolean onUseItem(L2PcInstance player, ItemInstance item)
     {
     if (EventManager.getInstance().getRestriction("item").contains(item.getItemId()) || getRestriction("item").contains(item.getItemId()))
     return false;
     
     if (item.getItemType() == EtcItemType.POTION && !getBoolean("allowPotions"))
     return false;
     
     if (item.getItemType() == EtcItemType.SCROLL)
     return false;
     
     if (item.getItemType() == EtcItemType.PET_COLLAR)
     return false;
     
     return true;
     }
     
     public boolean onUseMagic(L2Skill skill)
     {
     if (EventManager.getInstance().getRestriction("skill").contains(skill.getId()) || getRestriction("skill").contains(skill.getId()))
     return false;
     
     if (skill.getSkillType() == L2SkillType.RESURRECT && !(this instanceof RaidBoss))
     return false;
     
     if (skill.getSkillType() == L2SkillType.SUMMON_FRIEND)
     return false;
     
     if (skill.getSkillType() == L2SkillType.RECALL)
     return false;
     
     if (skill.getSkillType() == L2SkillType.FAKE_DEATH)
     return false;
     
     return true;
     }
     
     protected void prepare(L2PcInstance player)
     {
     if (player.isDead())
     player.doRevive();
     
     if (player.isCastingNow())
     player.abortCast();
     
     player.getAppearance().setVisible();
     
     if (player.hasPet())
     player.getPet().unSummon(player);
     
     if (player.isMounted())
     player.dismount();
     
     if (getBoolean("removeBuffs"))
     {
     player.stopAllEffects();
     if (player.hasServitor())
     player.getPet().unSummon(player);
     }
     else
     {
     for (L2Effect e : player.getAllEffects())
     if (e.getStackType().equals("hero_buff"))
     e.exit();
     
     if (player.hasServitor())
     {
     ArrayList<L2Skill> summonBuffs = new ArrayList<>();
     
     for (L2Effect e : player.getPet().getAllEffects())
     {
     if (e.getStackType().equals("hero_buff"))
     e.exit();
     else
     summonBuffs.add(e.getSkill());
     }
     
     summons.put(player, summonBuffs);
     }
     }
     
     ItemInstance wpn = player.getActiveWeaponInstance();
     if (wpn != null && wpn.isHeroItem())
     player.useEquippableItem(wpn, false);
     
     if (player.getParty() != null)
     {
     L2Party party = player.getParty();
     party.removePartyMember(player);
     }
     
     int[] nameColor = getPlayersTeam(player).getTeamColor();
     player.getAppearance().setNameColor(nameColor[0], nameColor[1], nameColor[2]);
     player.setTitle("<- 0 ->");
     
     if (EventManager.getInstance().getBoolean("eventBufferEnabled")) 
     EventBuffer.getInstance().buffPlayer(player);
     
     player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp());
     player.setCurrentCp(player.getMaxCp());
     
     player.broadcastUserInfo();
     }
     
     public ArrayList<L2Skill> getSummonBuffs(L2PcInstance player)
     {
     return summons.get(player);
     }
     
     protected void preparePlayers()
     {
     for (L2PcInstance player : players.keySet())
     prepare(player);
     }
     
     protected void removePlayer(L2PcInstance player)
     {
     players.remove(player);
     }
     
     public void reset()
     {
     players.clear();
     summons.clear();
     tpm.purge();
     winnerTeam = 0;
     
     for (EventTeam team : teams.values())
     team.setScore(0);
     }
     
     protected void selectPlayers(int teamId, int playerCount)
     {
     for (int i = 0; i < playerCount; i++)
     {
     L2PcInstance player = EventManager.getInstance().players.get(Rnd.get(EventManager.getInstance().players.size()));
     players.put(player, new int[] { teamId, 0, 0 });
     EventManager.getInstance().players.remove(player);
     }
     }
     
     protected void setScore(L2PcInstance player, int score)
     {
     players.get(player)[2] = score;
     player.setTitle("<- " + score + " ->");
     player.broadcastUserInfo();
     }
     
     protected void setStatus(L2PcInstance player, int status)
     {
     if (players.containsKey(player))
     players.get(player)[1] = status;
     }
     
     protected void setTeam(L2PcInstance player, int team)
     {
     players.get(player)[0] = team;
     }
     
     protected L2Spawn spawnNPC(int xPos, int yPos, int zPos, int npcId)
     {
     final NpcTemplate template = NpcTable.getInstance().getTemplate(npcId);
     
     try
     {
     final L2Spawn spawn = new L2Spawn(template);
     spawn.setLocx(xPos);
     spawn.setLocy(yPos);
     spawn.setLocz(zPos);
     spawn.setHeading(0);
     spawn.setRespawnDelay(1);
     SpawnTable.getInstance().addNewSpawn(spawn, false);
     spawn.init();
     return spawn;
     }
     catch (Exception e)
     {
     return null;
     }
     }
     
     protected void teleportPlayer(L2PcInstance player, int[] coordinates)
     {
     player.teleToLocation(coordinates[0] + (Rnd.get(coordinates[3] * 2) - coordinates[3]), coordinates[1] + (Rnd.get(coordinates[3] * 2) - coordinates[3]), coordinates[2], 0);
     }
     
     protected void teleportToTeamPos()
     {
     for (L2PcInstance player : players.keySet())
     teleportToTeamPos(player);
     }
     
     protected void teleportToTeamPos(L2PcInstance player)
     {
     int[] pos = getPosition(teams.get(getTeam(player)).getName(), 0);
     teleportPlayer(player, pos);
     }
     
     protected void unspawnNPC(L2Spawn npcSpawn)
     {
     if (npcSpawn == null)
     return;
     
     npcSpawn.getLastSpawn().deleteMe();
     npcSpawn.stopRespawn();
     SpawnTable.getInstance().deleteSpawn(npcSpawn, true);
     }
     
     public int numberOfTeams()
     {
     return teams.size();
     }
     
     protected void sendMsg()
     {
     for (L2PcInstance player : getPlayerList())
     player.sendPacket(new ExShowScreenMessage(1, -1, 2, false, 0, 0, 0, false, 3000, false, getStartingMsg()));
     }
     
     protected abstract void endEvent();
     protected abstract String getStartingMsg();
     protected abstract String getScorebar();
     protected abstract void start();
     protected abstract void showHtml(L2PcInstance player, int obj);
     protected abstract void schedule(int time);
    }

Изменено пользователем Wros

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

i have this error:

can any help for this. thanks

java.lang.IndexOutOfBoundsException: index: 0
        at javolution.util.FastList.get(FastList.java:196)
        at net.sf.l2j.gameserver.event.Event.getRandomPlayerFromTeam(Event.java:
365)
        at net.sf.l2j.gameserver.event.VIPTvT.selectNewVipOfTeam(VIPTvT.java:125
)
        at net.sf.l2j.gameserver.event.VIPTvT$Core.run(VIPTvT.java:36)
        at net.sf.l2j.gameserver.ThreadPoolManager$RunnableWrapper.run(ThreadPoo
lManager.java:85)
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
        at java.util.concurrent.FutureTask.run(Unknown Source)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.
access$201(Unknown Source)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.
run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)

package net.sf.l2j.gameserver.event

 
    import java.util.ArrayList;
    import java.util.Set;
    
    import javolution.util.FastList;
    import javolution.util.FastMap;
    
    import net.sf.l2j.gameserver.ThreadPoolManager;
    import net.sf.l2j.gameserver.datatables.NpcTable;
    import net.sf.l2j.gameserver.datatables.SpawnTable;
    import net.sf.l2j.gameserver.model.L2Effect;
    import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
    import net.sf.l2j.gameserver.model.L2Object;
    import net.sf.l2j.gameserver.model.L2Party;
    import net.sf.l2j.gameserver.model.L2Skill;
    import net.sf.l2j.gameserver.model.L2Spawn;
    import net.sf.l2j.gameserver.model.actor.L2Character;
    import net.sf.l2j.gameserver.model.actor.L2Npc;
    import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
    import net.sf.l2j.gameserver.network.serverpackets.CreatureSay;
    import net.sf.l2j.gameserver.network.serverpackets.ExShowScreenMessage;
    import net.sf.l2j.gameserver.skills.AbnormalEffect;
    import net.sf.l2j.gameserver.model.actor.template.NpcTemplate;
    import net.sf.l2j.gameserver.model.item.type.EtcItemType;
    import net.sf.l2j.gameserver.templates.skills.L2SkillType;
    import net.sf.l2j.util.Rnd;
    
    public abstract class Event
    {
     protected static final int[] ITEMS = {6707, 6709, 6708, 6710, 6704, 6701, 6702, 6703, 6706, 6705, 6713, 6714, 6712, 6711, 6697, 6688, 6696, 6691, 7579, 6695, 6694, 6689, 6693, 6690};
     protected int eventId;
     protected EventConfig config = EventConfig.getInstance();
     protected FastMap<Integer, EventTeam> teams;
     protected ThreadPoolManager tpm;
     protected ResurrectorTask resurrectorTask;
     protected Clock clock;
     protected String scorebartext;
     protected int time;
     protected int winnerTeam;
     protected int loserTeam;
     private FastMap<L2PcInstance, ArrayList<L2Skill>> summons;
     
     // TEAM-STATUS-SCORE
     protected FastMap<L2PcInstance, int[]> players;
     
     protected class Clock implements Runnable
     {
     private int totalTime;
     
     protected String getTime()
     {
     String mins = "" + time / 60;
     String secs = (time % 60 < 10 ? "0" + time % 60 : "" + time % 60);
     return mins + ":" + secs + "";
     }
     
     @Override
     public void run()
     {
     clockTick();
     
     if (time < totalTime)
     {
     scorebartext = getScorebar();
     if (scorebartext != "")
     {
     for (L2PcInstance player : getPlayerList())
     player.sendPacket(new ExShowScreenMessage(1, -1, 3, false, 1, 0, 0, false, 2000, false, scorebartext));
     }
     }
     
     if (time <= 0)
     schedule(1);
     else
     {
     time--;
     tpm.scheduleGeneral(clock, 1000);
     }
     }
     
     protected void setTime(int t)
     {
     time = t;
     }
     
     protected void startClock(int mt)
     {
     totalTime = mt - 2;
     time = mt;
     tpm.scheduleGeneral(clock, 1);
     }
     }
     
     protected class ResurrectorTask implements Runnable
     {
     private L2PcInstance player;
     
     public ResurrectorTask(L2PcInstance p)
     {
     player = p;
     ThreadPoolManager.getInstance().scheduleGeneral(this, 7000);
     }
     
     @Override
     public void run()
     {
     if (EventManager.getInstance().isRegistered(player))
     {
     player.doRevive();
     
     player.setCurrentCp(player.getMaxCp());
     player.setCurrentHp(player.getMaxHp());
     player.setCurrentMp(player.getMaxMp());
     teleportToTeamPos(player);
     }
     }
     }
     
     public Event()
     {
     teams = new FastMap<>();
     clock = new Clock();
     tpm = ThreadPoolManager.getInstance();
     players = new FastMap<>();
     summons = new FastMap<>();
     time = 0;
     }
     
     protected void clockTick()
     {
     
     }
     
     public void dropBomb(L2PcInstance player)
     {
     
     }
     
     public void onHit(L2PcInstance actor, L2PcInstance target)
     {
     
     }
     
     public void useCapture(L2PcInstance player, L2Npc base)
     {
     
     }
     
     protected void addToResurrector(L2PcInstance player)
     {
     new ResurrectorTask(player);
     }
     
     protected void announce(Set<L2PcInstance> list, String text)
     {
     for (L2PcInstance player : list)
     player.sendPacket(new CreatureSay(0, 18, "", "[Event] " + text));
     }
     
     public boolean canAttack(L2PcInstance player, L2Object target)
     {
     return true;
     }
     
     protected int countOfPositiveStatus()
     {
     int count = 0;
     for (L2PcInstance player : getPlayerList())
     if (getStatus(player) >= 0)
     count++;
     
     return count;
     }
     
     protected void createNewTeam(int id, String name, int[] color, int[] startPos)
     {
     teams.put(id, new EventTeam(id, name, color, startPos));
     }
     
     protected void createPartyOfTeam(int teamId)
     {
     int count = 0;
     L2Party party = null;
     
     FastList<L2PcInstance> list = new FastList<>();
     
     for (L2PcInstance p : players.keySet())
     if (getTeam(p) == teamId)
     list.add(p);
     
     for (L2PcInstance player : list)
     {
     if (count % 9 == 0 && list.size() - count != 1)
     party = new L2Party(player, 1);
     if (count % 9 < 9)
     player.joinParty(party);
     count++;
     }
     }
     
     protected void divideIntoTeams(int number)
     {
     int i = 0;
     
     while (EventManager.getInstance().players.size() != 0)
     {
     i++;
     L2PcInstance player = EventManager.getInstance().players.get(Rnd.get(EventManager.getInstance().players.size()));
     
     // skip healers
     if (player.getClassId().getId() == 16 || player.getClassId().getId() == 97)
     continue;
     
     players.put(player, new int[] { i, 0, 0 });
     EventManager.getInstance().players.remove(player);
     if (i == number)
     i = 0;
     }
     
     i = getPlayersOfTeam(1).size() > getPlayersOfTeam(2).size() ? 1 : 0;
     
     // healers here
     while (EventManager.getInstance().players.size() != 0)
     {
     i++;
     L2PcInstance player = EventManager.getInstance().players.get(Rnd.get(EventManager.getInstance().players.size()));
     
     players.put(player, new int[] { i, 0, 0 });
     EventManager.getInstance().players.remove(player);
     if (i == number)
     i = 0;
     }
     }
     
     protected void forceSitAll()
     {
     for (L2PcInstance player : players.keySet())
     {
     player.abortAttack();
     player.abortCast();
     player.setIsParalyzed(true);
     player.setIsInvul(true);
     player.startAbnormalEffect(AbnormalEffect.HOLD_2);
     }
     }
     
     protected void forceStandAll()
     {
     for (L2PcInstance player : players.keySet())
     {
     player.stopAbnormalEffect(AbnormalEffect.HOLD_2);
     player.setIsInvul(false);
     player.setIsParalyzed(false);
     }
     }
     
     protected void InvisAll()
     {
     for (L2PcInstance player : players.keySet())
     {
     player.abortAttack();
     player.abortCast();
     player.getAppearance().setInvisible();
     }
     }
     
     protected void unInvisAll()
     {
     for (L2PcInstance player : players.keySet())
     {
     player.getAppearance().setVisible();
     player.broadcastCharInfo();
     }
     }
     
     public boolean getBoolean(String propName)
     {
     return config.getBoolean(eventId, propName);
     }
     
     public int[] getColor(String owner)
     {
     return config.getColor(eventId, owner);
     }
     
     public int getInt(String propName)
     {
     return config.getInt(eventId, propName);
     }
     
     protected Set<L2PcInstance> getPlayerList()
     {
     return players.keySet();
     }
     
     protected FastList<L2PcInstance> getPlayersOfTeam(int team)
     {
     FastList<L2PcInstance> list = new FastList<>();
     
     for (L2PcInstance player : getPlayerList())
     if (getTeam(player) == team)
     list.add(player);
     
     return list;
     }
     
     protected EventTeam getPlayersTeam(L2PcInstance player)
     {
     return teams.get(players.get(player)[0]);
     }
     
     protected FastList<L2PcInstance> getPlayersWithStatus(int status)
     {
     FastList<L2PcInstance> list = new FastList<>();
     
     for (L2PcInstance player : getPlayerList())
     if (getStatus(player) == status)
     list.add(player);
     
     return list;
     }
     
     protected L2PcInstance getPlayerWithMaxScore()
     {
     L2PcInstance max = players.head().getNext().getKey();
     
     for (L2PcInstance player : players.keySet())
     if (players.get(player)[2] > players.get(max)[2])
     max = player;
     
     return max;
     }
     
     protected void unequip()
     {
     for (L2PcInstance player : players.keySet())
     {
     player.getInventory().unEquipItemInSlot(7);
     player.getInventory().unEquipItemInSlot(;
     }
     }
     
     public int[] getPosition(String owner, int num)
     {
     return config.getPosition(eventId, owner, num);
     }
     
     protected L2PcInstance getRandomPlayer()
     {
     FastList<L2PcInstance> temp = new FastList<>();
     for (L2PcInstance player : players.keySet())
     temp.add(player);
     
     return temp.get(Rnd.get(temp.size()));
     }
     
     protected L2PcInstance getRandomPlayerFromTeam(int team)
     {
     FastList<L2PcInstance> temp = new FastList<>();
     for (L2PcInstance player : players.keySet())
     if (getTeam(player) == team)
     temp.add(player);
     
     return temp.get(Rnd.get(temp.size()));
     }
     
     protected FastList<L2PcInstance> getPlayersFromTeamWithStatus(int team, int status)
     {
     FastList<L2PcInstance> players = getPlayersWithStatus(status);
     FastList<L2PcInstance> temp = new FastList<>();
     
     for (L2PcInstance player : players)
     if (getTeam(player) == team)
     temp.add(player);
     
     return temp;
     }
     
     protected L2PcInstance getRandomPlayerFromTeamWithStatus(int team, int status)
     {
     FastList<L2PcInstance> temp = getPlayersFromTeamWithStatus(team, status);
     return temp.get(Rnd.get(temp.size()));
     }
     
     public FastList<Integer> getRestriction(String type)
     {
     return config.getRestriction(eventId, type);
     }
     
     protected int getScore(L2PcInstance player)
     {
     return players.get(player)[2];
     }
     
     protected int getStatus(L2PcInstance player)
     {
     return players.get(player)[1];
     }
     
     public String getString(String propName)
     {
     return config.getString(eventId, propName);
     }
     
     public int getTeam(L2PcInstance player)
     {
     return players.get(player)[0];
     }
     
     protected int getWinnerTeam()
     {
     FastList<EventTeam> t = new FastList<>();
     
     for (EventTeam team : teams.values())
     {
     if (t.size() == 0)
     {
     t.add(team);
     continue;
     }
     
     if (team.getScore() > t.getFirst().getScore())
     {
     t.clear();
     t.add(team);
     continue;
     }
     
     if (team.getScore() == t.getFirst().getScore())
     t.add(team);
     }
     
     if (t.size() > 1)
     return 0;
     
     return t.getFirst().getId();
     }
     
     protected void giveReward(FastList<L2PcInstance> players, int id, int ammount)
     {
     for (L2PcInstance player : players)
     {
     if (player == null)
     continue;
     
     player.addItem("Event", id, ammount, player, true);
     EventStats.getInstance().tempTable.get(player.getObjectId())[0] = 1;
     }
     }
     
     protected void giveReward(L2PcInstance player, int id, int ammount)
     {
     EventStats.getInstance().tempTable.get(player.getObjectId())[0] = 1;
     player.addItem("Event", id, ammount, player, true);
     }
     
     protected void increasePlayersScore(L2PcInstance player)
     {
     int old = getScore(player);
     setScore(player, old + 1);
     EventStats.getInstance().tempTable.get(player.getObjectId())[3] = EventStats.getInstance().tempTable.get(player.getObjectId())[3] + 1;
     }
     
     protected void msgToAll(String text)
     {
     for (L2PcInstance player : players.keySet())
     player.sendMessage(text);
     }
     
     public void onDie(L2PcInstance victim, L2Character killer)
     {
     EventStats.getInstance().tempTable.get(victim.getObjectId())[2] = EventStats.getInstance().tempTable.get(victim.getObjectId())[2] + 1;
     }
     
     public void onKill(L2Character victim, L2PcInstance killer)
     {
     EventStats.getInstance().tempTable.get(killer.getObjectId())[1] = EventStats.getInstance().tempTable.get(killer.getObjectId())[1] + 1;
     }
     
     public void onLogout(L2PcInstance player)
     {
     if (players.containsKey(player))
     removePlayer(player);
     
     player.setXYZ(EventManager.getInstance().positions.get(player)[0], EventManager.getInstance().positions.get(player)[1], EventManager.getInstance().positions.get(player)[2]);
     player.setTitle(EventManager.getInstance().titles.get(player));
     
     if (teams.size() == 1)
     {
     if (getPlayerList().size() == 1)
     endEvent();
     }
     else
     {
     int t = players.head().getNext().getValue()[0];
     for (L2PcInstance p : getPlayerList())
     if (getTeam(p) != t)
     return;
     
     endEvent();
     }
     }
     
     public boolean onSay(int type, L2PcInstance player, String text)
     {
     return true;
     }
     
     public boolean onTalkNpc(L2Npc npc, L2PcInstance player)
     {
     return false;
     }
     
     public boolean onUseItem(L2PcInstance player, ItemInstance item)
     {
     if (EventManager.getInstance().getRestriction("item").contains(item.getItemId()) || getRestriction("item").contains(item.getItemId()))
     return false;
     
     if (item.getItemType() == EtcItemType.POTION && !getBoolean("allowPotions"))
     return false;
     
     if (item.getItemType() == EtcItemType.SCROLL)
     return false;
     
     if (item.getItemType() == EtcItemType.PET_COLLAR)
     return false;
     
     return true;
     }
     
     public boolean onUseMagic(L2Skill skill)
     {
     if (EventManager.getInstance().getRestriction("skill").contains(skill.getId()) || getRestriction("skill").contains(skill.getId()))
     return false;
     
     if (skill.getSkillType() == L2SkillType.RESURRECT && !(this instanceof RaidBoss))
     return false;
     
     if (skill.getSkillType() == L2SkillType.SUMMON_FRIEND)
     return false;
     
     if (skill.getSkillType() == L2SkillType.RECALL)
     return false;
     
     if (skill.getSkillType() == L2SkillType.FAKE_DEATH)
     return false;
     
     return true;
     }
     
     protected void prepare(L2PcInstance player)
     {
     if (player.isDead())
     player.doRevive();
     
     if (player.isCastingNow())
     player.abortCast();
     
     player.getAppearance().setVisible();
     
     if (player.hasPet())
     player.getPet().unSummon(player);
     
     if (player.isMounted())
     player.dismount();
     
     if (getBoolean("removeBuffs"))
     {
     player.stopAllEffects();
     if (player.hasServitor())
     player.getPet().unSummon(player);
     }
     else
     {
     for (L2Effect e : player.getAllEffects())
     if (e.getStackType().equals("hero_buff"))
     e.exit();
     
     if (player.hasServitor())
     {
     ArrayList<L2Skill> summonBuffs = new ArrayList<>();
     
     for (L2Effect e : player.getPet().getAllEffects())
     {
     if (e.getStackType().equals("hero_buff"))
     e.exit();
     else
     summonBuffs.add(e.getSkill());
     }
     
     summons.put(player, summonBuffs);
     }
     }
     
     ItemInstance wpn = player.getActiveWeaponInstance();
     if (wpn != null && wpn.isHeroItem())
     player.useEquippableItem(wpn, false);
     
     if (player.getParty() != null)
     {
     L2Party party = player.getParty();
     party.removePartyMember(player);
     }
     
     int[] nameColor = getPlayersTeam(player).getTeamColor();
     player.getAppearance().setNameColor(nameColor[0], nameColor[1], nameColor[2]);
     player.setTitle("<- 0 ->");
     
     if (EventManager.getInstance().getBoolean("eventBufferEnabled")) 
     EventBuffer.getInstance().buffPlayer(player);
     
     player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp());
     player.setCurrentCp(player.getMaxCp());
     
     player.broadcastUserInfo();
     }
     
     public ArrayList<L2Skill> getSummonBuffs(L2PcInstance player)
     {
     return summons.get(player);
     }
     
     protected void preparePlayers()
     {
     for (L2PcInstance player : players.keySet())
     prepare(player);
     }
     
     protected void removePlayer(L2PcInstance player)
     {
     players.remove(player);
     }
     
     public void reset()
     {
     players.clear();
     summons.clear();
     tpm.purge();
     winnerTeam = 0;
     
     for (EventTeam team : teams.values())
     team.setScore(0);
     }
     
     protected void selectPlayers(int teamId, int playerCount)
     {
     for (int i = 0; i < playerCount; i++)
     {
     L2PcInstance player = EventManager.getInstance().players.get(Rnd.get(EventManager.getInstance().players.size()));
     players.put(player, new int[] { teamId, 0, 0 });
     EventManager.getInstance().players.remove(player);
     }
     }
     
     protected void setScore(L2PcInstance player, int score)
     {
     players.get(player)[2] = score;
     player.setTitle("<- " + score + " ->");
     player.broadcastUserInfo();
     }
     
     protected void setStatus(L2PcInstance player, int status)
     {
     if (players.containsKey(player))
     players.get(player)[1] = status;
     }
     
     protected void setTeam(L2PcInstance player, int team)
     {
     players.get(player)[0] = team;
     }
     
     protected L2Spawn spawnNPC(int xPos, int yPos, int zPos, int npcId)
     {
     final NpcTemplate template = NpcTable.getInstance().getTemplate(npcId);
     
     try
     {
     final L2Spawn spawn = new L2Spawn(template);
     spawn.setLocx(xPos);
     spawn.setLocy(yPos);
     spawn.setLocz(zPos);
     spawn.setHeading(0);
     spawn.setRespawnDelay(1);
     SpawnTable.getInstance().addNewSpawn(spawn, false);
     spawn.init();
     return spawn;
     }
     catch (Exception e)
     {
     return null;
     }
     }
     
     protected void teleportPlayer(L2PcInstance player, int[] coordinates)
     {
     player.teleToLocation(coordinates[0] + (Rnd.get(coordinates[3] * 2) - coordinates[3]), coordinates[1] + (Rnd.get(coordinates[3] * 2) - coordinates[3]), coordinates[2], 0);
     }
     
     protected void teleportToTeamPos()
     {
     for (L2PcInstance player : players.keySet())
     teleportToTeamPos(player);
     }
     
     protected void teleportToTeamPos(L2PcInstance player)
     {
     int[] pos = getPosition(teams.get(getTeam(player)).getName(), 0);
     teleportPlayer(player, pos);
     }
     
     protected void unspawnNPC(L2Spawn npcSpawn)
     {
     if (npcSpawn == null)
     return;
     
     npcSpawn.getLastSpawn().deleteMe();
     npcSpawn.stopRespawn();
     SpawnTable.getInstance().deleteSpawn(npcSpawn, true);
     }
     
     public int numberOfTeams()
     {
     return teams.size();
     }
     
     protected void sendMsg()
     {
     for (L2PcInstance player : getPlayerList())
     player.sendPacket(new ExShowScreenMessage(1, -1, 2, false, 0, 0, 0, false, 3000, false, getStartingMsg()));
     }
     
     protected abstract void endEvent();
     protected abstract String getStartingMsg();
     protected abstract String getScorebar();
     protected abstract void start();
     protected abstract void showHtml(L2PcInstance player, int obj);
     protected abstract void schedule(int time);
    }

Пиши в лс дам скайп помогу!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ок добавил!!!

Изменено пользователем SuperRussianMan

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

any can help ?(i don't speak russian :( )

 

 

OR this error

Exception in thread "GeneralSTPool-15" java.lang.IndexOutOfBoundsException: inde
x: 0
        at javolution.util.FastList.get(FastList.java:196)
        at net.sf.l2j.gameserver.event.Event.getRandomPlayer(Event.java:355)
        at net.sf.l2j.gameserver.event.Mutant.onLogout(Mutant.java:119)
        at net.sf.l2j.gameserver.event.EventManager$AntiAfk.run(EventManager.jav
a:168)
        at net.sf.l2j.gameserver.ThreadPoolManager$RunnableWrapper.run(ThreadPoo
lManager.java:85)
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
        at java.util.concurrent.FutureTask.run(Unknown Source)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.
access$201(Unknown Source)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.
run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
Exception in thread "GeneralSTPool-12" java.lang.NullPointerException
        at javolution.util.FastMap.getEntry(FastMap.java:418)
        at javolution.util.FastMap.get(FastMap.java:406)
        at net.sf.l2j.gameserver.event.Event.getScore(Event.java:393)
        at net.sf.l2j.gameserver.event.Mutant.getScorebar(Mutant.java:205)
        at net.sf.l2j.gameserver.event.Event$Clock.run(Event.java:65)
        at net.sf.l2j.gameserver.ThreadPoolManager$RunnableWrapper.run(ThreadPoo
lManager.java:85)
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
        at java.util.concurrent.FutureTask.run(Unknown Source)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.
access$201(Unknown Source)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.
run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)

(i add l2j phoenix event engine)

 

Index: java/net/sf/l2j/gameserver/event/Event.java

	protected L2PcInstance getRandomPlayer()
	{
		FastList<L2PcInstance> temp = new FastList<>();
		for (L2PcInstance player : players.keySet())
			temp.add(player);
		
		return temp.get(Rnd.get(temp.size()));
	}
	
	protected L2PcInstance getRandomPlayerFromTeam(int team)
	{
		FastList<L2PcInstance> temp = new FastList<>();
		for (L2PcInstance player : players.keySet())
			if (getTeam(player) == team)
				temp.add(player);
		
		return temp.get(Rnd.get(temp.size()));
	}
	
	protected FastList<L2PcInstance> getPlayersFromTeamWithStatus(int team, int status)
	{
		FastList<L2PcInstance> players = getPlayersWithStatus(status);
		FastList<L2PcInstance> temp = new FastList<>();
		
		for (L2PcInstance player : players)
			if (getTeam(player) == team)
				temp.add(player);
		
		return temp;
	}
	
	protected L2PcInstance getRandomPlayerFromTeamWithStatus(int team, int status)
	{
		FastList<L2PcInstance> temp = getPlayersFromTeamWithStatus(team, status);
		return temp.get(Rnd.get(temp.size()));
	}
	
	public FastList<Integer> getRestriction(String type)
	{
		return config.getRestriction(eventId, type);
	}
	
	protected int getScore(L2PcInstance player)
	{
		return players.get(player)[2];
	}
	
	protected int getStatus(L2PcInstance player)
	{
		return players.get(player)[1];
	}
Изменено пользователем Wros

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...