Jump to content
  • 0

Event Problem


tazerman2

Question

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();
		}
		
	}
}
Link to comment
Share on other sites

6 answers to this question

Recommended Posts

Guest
This topic is now closed to further replies.


  • Posts

    • DISCORD : utchiha_market telegram : https://t.me/utchiha_market SELLIX STORE : https://utchihamkt.mysellix.io/ Join our server for more products : https://discord.gg/hood-services https://campsite.bio/utchihaamkt  
    • Server Rates: » Xp 500x. » Sp 500x. » Aden 500x. » Drop 1x. » PartyXp 2x. » PartySp 2x. » Starting character level -61. Enchant rates: » Safe enchant +4. » Blessed and simple scrolls max enchant (+16). » Crystal scrolls max enchant (+20). » Simple enchant scrolls chance – 65%. » Blessed enchant scrolls chance – 100%. » Crystal enchant scrolls chance – 50% Augmentations: » Mid life stone skill chance – 5%. » High life stone skill chance – 10%. » Top life stone skill chance – 20%. » Augments 1+1 Unique features: » Main town – Giran » Automatic-Manual Potions. » Working 2 castle sieges. (Giran-Aden) » SPS cancel lasts 10 seconds and than buffs come back. » Stackable scrolls, lifestones, book of giants. » Unique pvp zone » More then 11 active raid bosses. » Wedding system. » Unique farming areas. » Npc skill enchanter. » Full npc buffer with auto buff. » Max count of buffs – 55. » Max subclasses – 4. » Free and no quest class change. » Free and no quest sub class. » Raid boss drop nobless item. » No weight limit. » Unique protection anti-hwy armor for archers/daggers etc. » Ingame password change. » Top pvp/pk/online ranks NPC. » Unique monsters & NPC. » Interlude retail skills. » Server up-time [24/7] [99]%. » Perfect class balance (all class can kill all class depending on players skill and setup knowledge,gear,augmentations). » Announcements on double kills triple kills etc. » Announcements on Grand Boss death , with the name of the killer as well as clan name of the player. » Information Npc in game with all servers infromations. Custom server gear : 1). Titanium Armor Lv.1 2). Epic Armor Lv.2 3). Epic Weapons-Kamikaze-Black S grade (Same Stats) 4). Demonic-Angelic Wings-Baium Hair-Custom Accessories (SameStats) 5). Custom Fighter/Mage tattoo Lv1-Lv2-Lv3 6). Shirt (STR,CON,INT +1) 7). Custom Shields Server Commands: .tvtjoin .tvtleave – Join or leave tvt event. .ctfjoin .ctfleave – Join or leave ctf event. .dmjoin .dmleave – Join of leave dm event. .online – current online players count. .repair – repairs stuck character in world. .menu – opens online menu panel. .exit – PVP zone exit in case you are bullied. .changepassword - Opens online menu then u can change ur password in game. .farm - Enable/disable autofarm Event system: » TVT event » CTF event » DM event » Tournament Event » Party Zone » Unique event shop. Olympiad game: » Retail olympiad game. » Competition period [1] week. » Olympiad start time [18:00] end [00:00] GMT+2. » New Heroes every Sunday.
    • Tomorrow grand opening lests go 🙂 
  • Topics

×
×
  • Create New...