Remove that link or fix the functions below. You are using eval which can be easily exploited. I also have a feeling this gives out eval errors with people having spaces in their names. Use stuff like $DeathSchedule::Name[%client.getPlayerName()]
Here is your main problem.
function endDeathTimer(%client)
{
eval("if (isEventPending($" @ %client.getPlayerName() @ "::DeathSchedule)) { cancel($" @ %client.getPlayerName() @ "::DeathSchedule); }");
%client.DeathTimer = "";
%client.bottomPrint("", 0.01); //removes the bottomprint
}
function startDeathTimer(%client)
{
if (%client.player && %client.player.getDamagePercent() < 1) //if player exists and player is not dead, then
{
%client.DeathTimer = 10; //initializing
%client.bottomPrint("\c5Time to re-enter vehicle: " @ %client.DeathTimer);
eval("%client = " @ %client @ "; if (isEventPending($" @ %client.getPlayerName() @ "::DeathSchedule)) { cancel($" @ %client.getPlayerName( @ "::DeathSchedule); } $" @ %client.getPlayerName() @ "::DeathSchedule = schedule(1000, %client, decrementDeathTimer, %client);"); //we do cancel here because onUnmount actually runs a LOT of times at once, so this makes the schedule not repeat. thanks Blockland.
}
}
function decrementDeathTimer(%client)
{
if (%client.player)
{
if (%client.DeathTimer > 0 && %client.player.getDamagePercent() < 1) //if player exists, not already mounted, and player is not dead, then
{
%client.DeathTimer--; //decrement timer
%client.bottomPrint("\c5Time to re-enter vehicle: " @ %client.DeathTimer);
eval("%client = " @ %client @ "; $" @ %client.getPlayerName() @ "::DeathSchedule = schedule(1000, %client, decrementDeathTimer, %client);");
}
else
{
if (%client.player.getDamagePercent() < 1 && (%client.DeathTimer !$= ""))
{
%client.player.kill();
}
endDeathTimer(%client);
}
}
else
{
endDeathTimer(%client);
}
}
Tip on using eval: Avoid it unless you REALLY need to use it - there are many ways of doing what you tried to do in eval without using eval
Eval is extremely dangerous if there is a tiny mistake in it