nein, wird nicht gehen.
Spieler stirbt = OnPlayerDeath
Spieler respawnt nach der Todesanimation = OnPlayerSpawn
Es gibt zwei Möglichkeiten:
1. Bei OnPlayerDeath setzt du ne Variable, das der Spieler gestorben ist und rufst sie dann bei OnPlayerSpawn ab. Beispiel:
public OnPlayerDeath(playerid,reason)
{
playerdeath[playerid]=1;
return 1;
}
public OnPlayerSpawn(playerid)
{
if (playerdeath[playerid] // <-- Spawn nach tot
{
playerdeath[playerid]=0;SetPlayerPos(playerid,x,y,z);
}
else // <-- normaler Spawn
{
}
return 1;
}
----------------------
oder du benutzt die saubere Variante, die ich die empfehlen würde und vorallem Resourcenschonender ist:
public OnPlayerDeath(playerid,reason)
{
SetSpawnInfo(playerid,team,x,y,z,a,w1,a1,w2,a2,w3,a3);
playerdeath[playerid]=1;
return 1;
}
/* Anmerkung: die Felder in SetSpawnInfo siehe natürlich Wiki und sollen hier so nicht verwendet werden */
public OnPlayerSpawn(playerid)
{
if (playerdeath[playerid]) // <-- Spawn nach tot
{
playerdeath[playerid]=0;
}
else // <-- normaler Spawn
{
}
return 1;
}
Nachtrag:
Der Unterschied liegt einfach daran, daß du auf die Funktion SetSpawnInfo zugreifst, die für das Setzen der Koords zuständig ist VOR dem Spawnen. Weiterer Vorteil ist, wenn ein Spieler F4 drückt und dann krepiert, dort auch spawnt wo du das willst. Noch ein Vorteil ist, es sieht sauberer IG aus. Probier beide Varianten aus, du wirst es sehen