hi leute,
wie schaffe ich es das man nach dem man stirbt nicht mehr spawnt?
Ich brauch das für einen Death timer, wenn man im krankenhaus liegt soll man halt ne zeit lang warten und dann wieder gespawnt werden z.b.
Nur das Problem ist, dass er bei mir nach dem sterben nach 1-2sec respawnt also der automatismus, denk ich mal. wie krieg ich den weg ?
Ich benutze nirgends Spawnplayer o.ä
außer hier: // so in der art sieht mein timer aus (mit y_timers.inc)
timer TOTTimer[60000]()
{
for(new i=0; i<MAX_PLAYERS; i++)
{
new Spielerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(i,name,sizeof(name));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",name);
if(IsPlayerConnected(i))
{
if(dini_Int(Spielerdatei,"pTot") == 1)
{
dini_IntSet(Spielerdatei,"pTot",0);
SetPlayerVirtualWorld(i,0);
SetPlayerSpawn(i);
SpawnPlayer(i);
SendClientMessage(i, COLOR_LIGHTBLUE, "Du wurdest aus dem Krankenhaus entlassen!");
LoadAccount(i);
TogglePlayerControllable(i, 1);
}
}
}
return 1;
}
dieser wird in OnPlayerDeath verwendet mit: defer TOTTimer();
Ich Spawne immer in der luft irgendwo, fehlt da noch die onplayerstatechange und wenn ja was soll da rein das der nicht mehr spawnt
Ich hätte den Topic Spawn nach Tod unterdrücken? nennen sollen, wär wohl verständlicher
//*************************** EDIT ********************************** //
Hey da keiner antwortet
hier mein Code, mein Ziel ist es Den Spieler nach dem sterben nicht sofort nach 1-2sec zu spawnen.
public OnPlayerDeath(playerid, killerid, reason)
{
new Spielerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",name);
dini_IntSet(Spielerdatei,"pTot",1); // 1 == WAHR 0 == FALSCH
if(dini_Int(Spielerdatei,"pTot") == 1)
{
SendClientMessage(playerid,COLOR_LIGHTBLUE, "Du wurdest schwer verletzt ins Krankenhaus gebracht!");
GameTextForPlayer(playerid, "~w~IN BEHANDLUNG ~n~~r~ DAUER CA. 60 SEKUNDEN", 5000, 3);
SetPlayerCameraPos(playerid, 1223.379028, -1333.354126, 33.809105);
SetPlayerCameraLookAt(playerid, 1178.824829, -1325.804077, 13.284119);
TogglePlayerControllable(playerid,0);
return 1;
}
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_SPAWNED)
{
new Float: lwx, Float:lwy, Float:lwz;
GetPlayerPos(playerid, lwx, lwy, lwz);
if(lwz > 530.0) //the highest land point in sa = 526.8
{
SetPlayerSpawn(playerid);
}
}
return 1;
}
timer SetPlayerSpawn[3000](playerid)
{
new Spielerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",name);
if(dini_Int(Spielerdatei,"pTot") == 1)
{
SetPlayerPos(playerid,1181.9417,-1323.1649,13.5815);
SetPlayerFacingAngle(playerid,260.3822);
TogglePlayerControllable(playerid,0);
defer TOTTimer();
return 1;
}
else
{
SetPlayerPos(playerid,1107.4147,-1796.2593,16.5938);
SetPlayerFacingAngle(playerid,89.0384);
SetPlayerCameraPos(playerid,1107.4147,-1796.2593,16.5938);
TogglePlayerControllable(playerid,1);
return 1;
}
}
timer TOTTimer[60000]()
{
for(new i=0; i<MAX_PLAYERS; i++)
{
new Spielerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(i,name,sizeof(name));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",name);
if(IsPlayerConnected(i))
{
if(dini_Int(Spielerdatei,"pTot") == 1)
{
dini_IntSet(Spielerdatei,"pTot",0);
SetPlayerVirtualWorld(i,0);
LoadAccount(i);
SetPlayerSpawn(i);
SpawnPlayer(i);
SendClientMessage(i, COLOR_LIGHTBLUE, "Du wurdest aus dem Krankenhaus entlassen!");
TogglePlayerControllable(i, 1);
}
}
}
return 1;
}
// hier noch meine login fkt wenn ihr euch für die interessiert :P
timer Login[3000](playerid,string:key[])
{
new Spielerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",name);
if(!strcmp(key,dini_Get(Spielerdatei,"Passwort"),false))
{
if(SpielerInfo[playerid][Banned] == 1)
{
SendClientMessage(playerid, COLOR_GRAD2, "Dein Account wurde gebannt!");
Kick(playerid);
}
LoadAccount(playerid);
SetPlayerSpawn(playerid);
SendClientMessage(playerid,COLOR_LIGHTBLUE,"Du hast dich erfolgreich eingeloggt!");
SpawnPlayer(playerid);
TogglePlayerControllable(playerid,1);
SpielerInfo[playerid][LoggedIn] = 1;
return 1;
}
else
{
SendClientMessage(playerid,COLOR_LIGHTBLUE,"Passwort Falsch! Versuch es erneut!");
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Passwort eingeben:","Einloggen","Abbrechen");
return 1;
}
}
Meine Frage wäre dann noch, wird nach dem OnPlayerDeath cb das OnPlayerStateChange cb aufgerufen ?? wenn ja was mach ich falsch?:D wenn nein wie kann ich das anders machen?
hat sich erledigt habs iwie hinbekommen