Secret Experience

Secret Experience (https://secretexperience.net/index.php)
-   [L2J] Dúvidas (https://secretexperience.net/forumdisplay.php?f=37)
-   -   [Interlude] Gameserver Error (https://secretexperience.net/showthread.php?t=35006)

refuelgozos 21-02-2016 10:56 AM

Gameserver Error
 
I have this error can any help me?

Código:

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
Código:

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(8);
    }
    }
   
    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);
    }



Horários baseados na GMT -3. Agora são 10:25 PM.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.