Du setzt bei OnPlayerDeath eine Spielervariable auf 1, die heißt zum Beispiel pTod. Dann fragst du diese bei OnPlayerSpawn ab, wenn sie 1 ist, dann setzt du den Spieler mit SetPlayerPos zum Friedhof und setzt mit SetPlayerWorldBounds die unsichtbaren Grenzen. Gleichzeitig startest du einen SetTimerEx von 120000 ms. Wenn dieser dann aufgerufen wird, setzt du den Spieler wieder aus dem Friedhof raus, entfernst die Grenzen und setzt pTod wieder auf 0.
Codebeispiel:
Im enum:
pTod,
OnPlayerDeath:
public OnPlayerDeath(playerid, killerid, reason)
{
if(IsPlayerConnected(killerid) && killerid != playerid)
{
SendClientMessage(killerid,Rot, "Du hast ein Verbrechen begangen! (Mord) Reporter: Anonym");
PlayerInfo[killerid][Verbrechen] += 1;
SendClientMessage(playerid,Rot,"Du bist Gestorben! Grund: Unbekannt");
PlayerInfo[playerid][Tode] += 1;
GivePlayerMoney(playerid, 100);
}
PlayerInfo[playerid][InSkinChange] = false;
PlayerInfo[playerid][Duty] = false;
if(PlayerInfo[playerid][pTod] == 0) PlayerInfo[playerid][pTod] = 1;
return 1;
}
OnPlayerSpawn:
if(PlayerInfo[playerid][pTod] == 1)
{
SetPlayerPos(playerid, /* Position */);
SetPlayerWorldBounds(playerid, /* Poisitionen */);
SetTimerEx("WegVonFriedhof", 120000, 0, "d", playerid);
PlayerInfo[playerid][pTod] = 2; //Falls er auf dem Friedhof stirbt, dass der Timer nicht nochmal gestartet wird.
}
Das Timer-Callback:
forward WegVonFriedhof(playerid);
public WegVonFriedhof(playerid)
{
PlayerInfo[playerid][pTod] = 0;
SetPlayerPos(playerid, /* Position */);
SetPlayerWorldBounds(playerid, 99999.0, -99999.0, 99999.0, -99999.0);
return 1;
}