I tried but i don't know if this works.
package net.sf.l2j.gameserver.events;
import javolution.util.FastSet;
import net.sf.l2j.Config;
import net.sf.l2j.gameserver.Announcements;
import net.sf.l2j.gameserver.ThreadPoolManager;
import net.sf.l2j.gameserver.datatables.MapRegionTable.TeleportWhereType;
import net.sf.l2j.gameserver.model.L2World;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.model.entity.TvTEvent;
import net.sf.l2j.gameserver.model.entity.TvTEventIPs;
/**
*
* @author DrHouse
*/
public class DeathMatch extends Thread
{
private static boolean _scheduled = false;
private static volatile Status _status = Status.SLEEPING;
private static final FastSet<L2PcInstance> _players = new FastSet<L2PcInstance>();
private static final DeathMatch _instance = new DeathMatch();
private static TvTEventIPs _participantsIPs; // config values
private static final int MAX_PLAYERS = 100;
private static final int X = -250403; // HERE ok
private static final int Y = 208464;
private static final int Z = -11957;
private static final int EVENT_DURATION = 6; // minutes
private static final int INITIAL_DELAY = 190000; // minutes
private static final int PERIOD_BETWEEN_EVENTS = 190000; // minutes
private static final int[] ON_KILL_REWARD = {57,5000};
private static final int[] WINNER_REWARD = {57,1000000}; // REWARDS
public static enum Status
{
SLEEPING,
REGISTERING,
TELEPORTING,
RUNNING,
REWARDING
}
public static void pulse()
{
_instance.notifyAll();
}
public void run()
{
synchronized (this)
{
if (_status != Status.SLEEPING)
return;
if (TvTEvent.isStarting() || TvTEvent.isStarted())
{
try
{
wait(Config.TVT_EVENT_RUNNING_TIME*60*1000);
}
catch (InterruptedException e)
{}
}
_status = Status.REGISTERING;
}
Announcements.getInstance().announceToAll(" Wellcome to ");
Announcements.getInstance().announceToAll(" ");
Announcements.getInstance().announceToAll("DEATH MATCH EVENT");
Announcements.getInstance().announceToAll("------------------");
Announcements.getInstance().announceToAll(" ");
Announcements.getInstance().announceToAll("3 minutes left until registration period ends");
Announcements.getInstance().announceToAll("Use .dmjoin to set your request

");
try{
Thread.sleep(120*1000);
}
catch (Exception e){
e.printStackTrace();
}
Announcements.getInstance().announceToAll("DM: Just 60 secs left!");
try{
Thread.sleep(45*1000);
}
catch (Exception e){
e.printStackTrace();
}
Announcements.getInstance().announceToAll("DM: Just 15 secs left!");
try{
Thread.sleep(15*1000);
}
catch (Exception e){
e.printStackTrace();
}
Announcements.getInstance().announceToAll("DM: Registration period is over. Get ready for the event!");
_status = Status.TELEPORTING;
try{
Thread.sleep(5*1000);
}
catch (Exception e){
e.printStackTrace();
}
synchronized (_players) // against removing onlogout players etc
{
for (L2PcInstance player : _players)
{
//add reset to deaths flag
//set status flag to true
player.DeathMatchCount = 0;
player.OnDeathMatch = true;
player.teleToLocation(X, Y, Z, true);
player.sendMessage("Teleporting, event will start in 10 seconds");
}
}
try{
Thread.sleep(5*1000);
}
catch (Exception e){
e.printStackTrace();
}
Announcements.getInstance().announceToAll("DM: 5 seconds");
for (int i = 5; i > 0; i--)
{
Announcements.getInstance().announceToAll("DM: "+i+" seconds");
try{
Thread.sleep(1*1000);
}
catch (Exception e){
e.printStackTrace();
}
}
Announcements.getInstance().announceToAll("DM: GOOOOO!");
_status = Status.RUNNING;
try{
Thread.sleep(EVENT_DURATION*60*950);
}
catch (Exception e){
e.printStackTrace();
}
Announcements.getInstance().announceToAll("DM: Event is about to finalize");
try{
Thread.sleep(EVENT_DURATION*60*50);
}
catch (Exception e){
e.printStackTrace();
}
_status = Status.REWARDING;
Announcements.getInstance().announceToAll("DM: Event Finalized");
L2PcInstance winner = null;
synchronized (_players) // against removing onlogout players etc
{
for (L2PcInstance player : _players)
{
player.teleToLocation(TeleportWhereType.Town);
_participantsIPs.clear(); player.OnDeathMatch = false;
player.sendMessage("Event is done");
//calculate winner
if (winner == null)
winner = player;
else if (winner.DeathMatchCount < player.DeathMatchCount)
winner = player;
}
}
if (winner != null && winner.isOnline() == 1)
{
Announcements.getInstance().announceToAll(winner.getName()+" won event killing you "+winner.DeathMatchCount+" times;");
winner.addItem("DEATHMATCHWINNER", WINNER_REWARD[0], WINNER_REWARD[1], null, true);
}
else
Announcements.getInstance().announceToAll("Event ended with no winner

");
_status = Status.SLEEPING;
}
public static boolean registerPlayer(L2PcInstance player)
{
if (player == null)
return false;
if (!_participantsIPs.checkAndAddPlayer(player))
{
player.sendMessage("DeathMatch: Only one participant per IP address allowed!");
return false;
} if (_status != Status.REGISTERING)
return false;
synchronized (_players)
{
if (_players.size() >= DeathMatch.MAX_PLAYERS)
return false;
_players.add(player);
_participantsIPs.clear();
_participantsIPs.removePlayer(player);
return true; }
}
public static boolean onLogout(L2PcInstance player)
{
if (player == null)
return false;
player.DeathMatchCount = 0;
player.OnDeathMatch = false;
synchronized (_players)
{
_players.remove(player);
_participantsIPs.clear();
return true; }
}
public static void onKill(L2PcInstance player)
{
if (isRunning())
player.addItem("DEATH MATCH", ON_KILL_REWARD[0], ON_KILL_REWARD[1], null, true);
}
public static boolean isRunning()
{
return (_status == Status.RUNNING);
}
public static void startEvent()
{
new Thread(_instance).start();
_participantsIPs = new TvTEventIPs(); }
public static boolean stopEvent()
{
if (_status == Status.SLEEPING)
return false;
try
{
_instance.interrupt();
return true;
}
catch(Exception e)
{
return true;
}
finally
{
synchronized(_players){
for (L2PcInstance player : _players)
{
player.DeathMatchCount = 0;
player.OnDeathMatch = false;
player.teleToLocation(TeleportWhereType.Town);
player.sendMessage("Event ended abnormally");
}
_players.clear();
_participantsIPs.clear();
_status = Status.SLEEPING;
}
}
}
public synchronized static void scheduleEventAtFixedRate()
{
if (_scheduled)
return;
ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new Runnable()
{
public void run()
{
startEvent();
}
}, INITIAL_DELAY*60*1000, PERIOD_BETWEEN_EVENTS*60*1000);
}
public static boolean onEscapeUse(int id)
{
if (_status != Status.RUNNING)
return true;
synchronized(_players)
{
if (_players.contains(L2World.getInstance().findObject(id)))
return false;
}
return true;
}
public static boolean doRevive(final L2PcInstance player)
{
if (_status != Status.RUNNING)
return false;
if (!player.OnDeathMatch)
return false;
player.sendMessage("You will be revived within next 5 seconds");
ThreadPoolManager.getInstance().scheduleGeneral(new Runnable()
{
public void run()
{
player.doRevive();
player.setCurrentCp(player.getMaxCp());
player.setCurrentHpMp(player.getMaxHp(),player.getMaxMp());
player.teleToLocation(X, Y, Z, true);
}
}, 3000);
return true;
}
}
The part in red is the part added.