hello i have a problem i use one event and after start show me this error
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();
}
}
}
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.
Question
tazerman2
hello i have a problem i use one event and after start show me this error
can any help me to fix it tnx!
code:
Link to comment
Share on other sites
6 answers to this question
Recommended Posts