Jump to content

Question

Posted

hello i have a problem i use one event and after start show me this error

image.jpg

can any help me to fix it tnx!

code:

public class RandomFight
{
	public static RandomFight getInstance()
	{
		return SingletonHolder._instance;
	}
	
	public static enum State
	{
		INACTIVE,
		REGISTER,
		LOADING,
		FIGHT
	}
	
	public static State state = State.INACTIVE;
	
	public static Vector<L2PcInstance> players = new Vector<>();
	
	private L2PcInstance player;
	
	protected void openRegistrations()
	{
		state = State.REGISTER;
		final CreatureSay cs = new CreatureSay(player.getObjectId(), Say2.TRADE, "", "Random Fight Event will start in 1 minute.");
		final CreatureSay cs1 = new CreatureSay(player.getObjectId(), Say2.TRADE, "", "To register press ?register");
		Broadcast.toAllOnlinePlayers(cs);
		Broadcast.toAllOnlinePlayers(cs1);
		ThreadPoolManager.getInstance().scheduleGeneral(new checkRegist(), 60000);
	}
	
	protected void checkRegistrations()
	{
		state = State.LOADING;
		
		if (players.isEmpty() || players.size() < 2)
		{
			final CreatureSay cs = new CreatureSay(player.getObjectId(), Say2.TRADE, "", "Random Fight Event will not start cause of no many partitipations, we are sorry.");
			Broadcast.toAllOnlinePlayers(cs);
			clean();
			return;
		}
		final CreatureSay cs = new CreatureSay(player.getObjectId(), Say2.TRADE, "", "Amount of players Registed: " + players.size());
		final CreatureSay cs1 = new CreatureSay(player.getObjectId(), Say2.TRADE, "", "2 Random players will be choosen in 30 seconds!");
		Broadcast.toAllOnlinePlayers(cs);
		Broadcast.toAllOnlinePlayers(cs1);
		ThreadPoolManager.getInstance().scheduleGeneral(new pickPlayers(), 30000);
	}
	
	protected void pickPlayers()
	{
		if (players.isEmpty() || players.size() < 2)
		{
			final CreatureSay cs = new CreatureSay(player.getObjectId(), Say2.TRADE, "", "Random Fight Event aborted because no many partitipations, we are sorry.");
			Broadcast.toAllOnlinePlayers(cs);
			clean();
			return;
		}
		
		for (L2PcInstance p : players)
			if (p.isInOlympiadMode() || Olympiad.getInstance().isRegistered(p))
			{
				players.remove(p);
				p.sendMessage("You automatically left from event because of your olympiad obligations.");
			}
		
		int rnd1 = Rnd.get(players.size());
		int rnd2 = Rnd.get(players.size());
		
		while (rnd2 == rnd1)
			rnd2 = Rnd.get(players.size());
		
		for (L2PcInstance player : players)
		{
			if (player != players.get(rnd1) && player != players.get(rnd2))
				players.remove(player);
		}
		
		final CreatureSay cs = new CreatureSay(player.getObjectId(), Say2.TRADE, "", "Players selected: " + players.firstElement().getName() + " || " + players.lastElement().getName());
		final CreatureSay cs1 = new CreatureSay(player.getObjectId(), Say2.TRADE, "", "Players will be teleported in 15 seconds");
		Broadcast.toAllOnlinePlayers(cs);
		Broadcast.toAllOnlinePlayers(cs1);
		ThreadPoolManager.getInstance().scheduleGeneral(new teleportPlayers(), 15000);
	}
	
	protected void teleport()
	{
		if (players.isEmpty() || players.size() < 2)
		{
			final CreatureSay cs = new CreatureSay(player.getObjectId(), Say2.TRADE, "", "Random Fight Event aborted because no many partitipations, we are sorry.");
			Broadcast.toAllOnlinePlayers(cs);
			clean();
			return;
		}
		final CreatureSay cs = new CreatureSay(player.getObjectId(), Say2.TRADE, "", "Players teleported!");
		Broadcast.toAllOnlinePlayers(cs);
		
		players.firstElement().teleToLocation(113474, 15552, 3968);
		players.lastElement().teleToLocation(112990, 15489, 3968);
		players.firstElement().setTeam(1);
		players.lastElement().setTeam(2);
		
		// para,etc
		
		players.firstElement().sendMessage("Fight will begin in 15 seconds!");
		players.lastElement().sendMessage("Fight will begin in 15 seconds!");
		
		ThreadPoolManager.getInstance().scheduleGeneral(new fight(), 15000);
	}
	
	protected void startFight()
	{
		
		if (players.isEmpty() || players.size() < 2)
		{
			final CreatureSay cs = new CreatureSay(player.getObjectId(), Say2.TRADE, "", "One of the players isn't online, event aborted we are sorry!");
			Broadcast.toAllOnlinePlayers(cs);
			clean();
			return;
		}
		
		state = State.FIGHT;
		final CreatureSay cs = new CreatureSay(player.getObjectId(), Say2.TRADE, "", "FIGHT STARTED!");
		Broadcast.toAllOnlinePlayers(cs);
		players.firstElement().sendMessage("Start Fight!!");
		players.lastElement().sendMessage("Start Fight!");
		ThreadPoolManager.getInstance().scheduleGeneral(new checkLast(), 120000);
	}
	
	protected void lastCheck()
	{
		if (state == State.FIGHT)
		{
			if (players.isEmpty() || players.size() < 2)
			{
				revert();
				clean();
				return;
			}
			
			int alive = 0;
			for (L2PcInstance player : players)
			{
				if (!player.isDead())
					alive++;
			}
			
			if (alive == 2)
			{
				final CreatureSay cs = new CreatureSay(player.getObjectId(), Say2.TRADE, "", "Random Fight ended tie!");
				Broadcast.toAllOnlinePlayers(cs);
				clean();
				revert();
			}
		}
	}
	
	public static void revert()
	{
		if (!players.isEmpty())
			for (L2PcInstance p : players)
			{
				if (p == null)
					continue;
				
				if (p.isDead())
					p.doRevive();
				
				p.setCurrentHp(p.getMaxHp());
				p.setCurrentCp(p.getMaxCp());
				p.setCurrentMp(p.getMaxMp());
				p.broadcastUserInfo();
				p.teleToLocation(82698, 148638, -3473);
				
			}
	}
	
	public static void clean()
	{
		
		if (state == State.FIGHT)
			for (L2PcInstance p : players)
				p.setTeam(0);
		
		players.clear();
		state = State.INACTIVE;
		
	}
	
	protected RandomFight()
	{
		ThreadPoolManager.getInstance().scheduleAiAtFixedRate(new Event(), 60000 * Config.EVERY_MINUTES, 60000 * Config.EVERY_MINUTES);
	}
	
	
	private static class SingletonHolder
	{
		protected static final RandomFight _instance = new RandomFight();
	}
	
	protected class Event implements Runnable
	{
		@Override
		public void run()
		{
			if (state == State.INACTIVE)
				openRegistrations();
		}
		
	}
	
	protected class checkRegist implements Runnable
	{
		
		@Override
		public void run()
		{
			checkRegistrations();
		}
		
	}
	
	protected class pickPlayers implements Runnable
	{
		@Override
		public void run()
		{
			pickPlayers();
		}
		
	}
	
	protected class teleportPlayers implements Runnable
	{
		@Override
		public void run()
		{
			teleport();
		}
		
	}
	
	protected class fight implements Runnable
	{
		
		@Override
		public void run()
		{
			startFight();
		}
		
	}
	
	protected class checkLast implements Runnable
	{
		@Override
		public void run()
		{
			lastCheck();
		}
		
	}
}

6 answers to this question

Recommended Posts

  • 0
Posted

Funny thing is, line 35 is empty :troll: So, consider giving code you have inside sources when the error occurs.

  • 0
Posted

line 35 is empty :troll: So, consider giving code you have inside sources when the error occurs.

Guest
This topic is now closed to further replies.


×
×
  • Create New...