Hallo ich habe ein kleines Problem
Und zwar habe ich wenn der Spieler stirbt einen Timer erstellt.
Wenn der Timer abgelaufen ist Spawnt der Spieler im Himmel, das klappt auch Prima,
doch das soll in der Regel nur passieren wenn der Spieler nicht wiederbelebt wird.
Wenn er wiederbelebt wird soll der Timer ja eigentlich beendet sein. Als abgebrochen werden,
das habe ich mit KIllTimer gemacht. Nun ist mein Problem aber, wenn ich ihn revive den Spieler mit /revive oder /arevive, dann muss ich machmal trotzdem noch in den Himmel. Der Timer wurde dann wohl nicht richtig gekillt oder zweimal erstellt dachte ich mir,
denn vorher habe ich noch einen grösseren Bug gehabt, man spawnte ganz oft im Himmel, aber das habe ich behoeben. ich habe einfach den Timer nochmal im Himmel, also wenn er im Himmel spawnt gekillt, das klappt auch,. aber warum das andere nicht ???
Hier mal die Codes
Und die Befehle
ocmd:arevive(playerid,params[])
{
new pid;
if(sscanf(params,"u",pid)) return SendClientMessage(playerid,grau,"Benutze: /arevive [ID]");
if(!IsPlayerConnected(pid))return SendClientMessage(playerid,weiss,"Ungültiger Spieler");
if(pid==playerid)return SendClientMessage(playerid,weiss,"Du kannst dich nicht selber wiederbeleben");
if(tod[pid]==1)
if(GetPVarInt(playerid,"Adminlevel") >= 8)
{
TogglePlayerControllable(pid,1);
SetPlayerHealth(pid,100);
tod[pid]=0;
KillTimer(timer1);
new string [128];
format(string, sizeof(string),"AdmCmd: %s wurde von %s wiederbelebt.",SpielerName(pid),SpielerName(playerid));
SendClientMessageToAll(0x2a77a1AA,string);
SetPlayerColor(pid,weiss);
SetPVarInt(pid,"Godmode",0);//an
new Float:X,Float:Y,Float:Z;
GetPlayerPos(pid,X,Y,Z);
new eric[128];
format(eric,sizeof(eric),"*%s wurde von %s wiederbelebt (AdmCmd).",SpielerName(pid),SpielerName(playerid));
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerInRangeOfPoint(i,25,X,Y,Z))
{
SendClientMessage(i,grau,eric);
}
}
}
else
{
SendClientMessage(playerid,orange,"Fehler: Du bist kein Admin 8/9/10");
}
return 1;
}
ocmd:revive(playerid,params[])
{
new pid;
if(sscanf(params,"u",pid))return SendClientMessage(playerid,grau,"Benutze: /revive [ID]");
if(pid==playerid)return SendClientMessage(playerid,weiss,"Du kannst dich nicht selber wiederbeleben");//die if abfrage da fragen wir ab ob pid deine id ist wenn ja kommt die message
if(tod[pid]==1)
if(IsPlayerInFrak(playerid,2))
{
if(IsPlayerInRangeOfPoint(playerid,10.0,x[pid],y[pid],z[pid]))
{
ApplyAnimation(playerid,"BOMBER","BOM_Plant",4.1,0,1,1,1,1);
SetTimerEx("wiederbelebung",10000,false,"u",pid);
SetTimerEx("makeanim",1000,false,"u",playerid);
KillTimer(timer1);
SendClientMessage(playerid,grau,"Du beginnst mit der Reanimation");
new string [128];
format(string, sizeof(string),"Du wirst von %s wiederbelebt",MeinName(playerid));
SendClientMessage(pid,weiss,string);
SetPlayerColor(playerid,weiss);
GivePlayerMoney(playerid,120);
GivePlayerMoney(pid,-120);
SetPVarInt(pid,"Godmode",0);//an
}
}
else
{
SendClientMessage(playerid,weiss,"Du bist kein Arzt");
}
return 1;
}
OnPlayerDeath
Hier ist eig nichts besonderes
public OnPlayerDeath(playerid, killerid, reason)
{
new killer[MAX_PLAYER_NAME], string[128];
HasKey[playerid] = 0;
Dienst[playerid] = 0;
SetPlayerColor(playerid,weiss);
gestorben[playerid] = 1;
new Float:xx,Float:yy,Float:zz;
GetPlayerPos(playerid,xx,yy,zz);
x[playerid] = xx;
y[playerid] = yy;
z[playerid] = zz;
inte[playerid] = GetPlayerInterior(playerid);
SetPlayerPos(playerid,x[playerid],y[playerid],z[playerid]);
GetPlayerName(killerid,killer,sizeof(killer));
format(string,sizeof(string),"Der Mörder hieß: %s",killer);
new Float:Xt,Float:Yt,Float:Zt;
GetPlayerPos(playerid,Xt,Yt,Zt);
CreatePickup(1254,1,Xt,Yt,Zt,-1);
SendClientMessage(playerid,-1,string);
SetPlayerInterior(playerid,inte[playerid]);
PlayerPlaySound(playerid,1169,0,0,0);
if(Maske[playerid] == 1)
{
for(new i = 0; i < MAX_PLAYERS; i++) ShowPlayerNameTagForPlayer(i, playerid, 0);
SetPlayerAttachedObject(playerid,1, 19036, 2, 0.107, 0.035, 0.0, 90, 90, 0);//Objekt erscheint
}
if(GetPlayerScore(killerid)>=3)
{
if(Dienst[playerid]==1)
{
if(IsPlayerInFrak(playerid,1)||IsPlayerInFrak(playerid,5)||IsPlayerInFrak(playerid,3)||IsPlayerInFrak(playerid,2)||IsPlayerInFrak(playerid,16))
{
if(Dienst[killerid]==0)
{
if(Maske[playerid]==0)
{
new rnd=random(2);
if(rnd==0)
if(SpielerInfo[killerid][Wanteds]<69)
{
new wps=30;
new grund[64]="Beamtenmord";
SpielerInfo[killerid][Wanteds]+=wps;
if(SpielerInfo[killerid][Wanteds]>69){SpielerInfo[killerid][Wanteds]=69;}
format(string,sizeof(string),"Wantedpunkte: %i Gesamt: %i Reporter: %s Grund: %s",wps,SpielerInfo[killerid][Wanteds],SpielerName(playerid),grund);
SendClientMessage(killerid,rot,string);
format(string,sizeof(string),"<<Gesuchter: %s Wantedpunkte: %i Gesamt: %i Reporter: %s Grund: %s>>",SpielerName(killerid),wps,SpielerInfo[killerid][Wanteds],SpielerName(playerid),grund);
for (new i = 0; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i))continue;
if(!IsPlayerInFrak(i,1)&&!IsPlayerInFrak(i,5)&&!IsPlayerInFrak(i,16))continue;
SendClientMessage(i,rot,string);
}
PlayCrimeReportForPlayer(killerid,playerid,22);
}
}
}
}
}
}
return 1;
}
OnPlayerSpawn
if(tod[playerid] == 1)
{
new Float:xx = x[playerid];
new Float:yy = y[playerid];
new Float:zz = z[playerid];
SetPlayerPos(playerid,xx,yy,zz);
SetPlayerInterior(playerid,inte[playerid]);
GameTextForPlayer(playerid,"~r~Du bist verwundet.",2000,6);
SendClientMessage(playerid,rot,"Du bist nun schwer Verletzt");
timer1 = SetTimerEx("leben",480000,false,"u",playerid);
SetPlayerHealth(playerid,11);
SetPlayerColor(playerid,weiss);
ApplyAnimation(playerid,"CRACK","crckdeth2",4.0,1,0,0,0,0);
Dienst[playerid] = 0;
SetPVarInt(playerid,"Godmode",1);//an
}
timer 1 ist der Timer
Und noch mal der Public von den Timer
forward leben(playerid);
public leben(playerid)
{
TogglePlayerControllable(playerid,1);
SetPlayerHealth(playerid,20);
SetPlayerPos(playerid,1066.4554,-1279.8220,2005.9932);
SetPlayerFacingAngle(playerid,230.5919);
SetPlayerInterior(playerid,1);
SetPlayerVirtualWorld(playerid,34);
SetPlayerWeather(playerid,11);
tod[playerid]=0;
SendClientMessage(playerid,gelb,"Laufe ins Licht...");
SetPVarInt(playerid,"Godmode",0);//aus
SetPlayerHealth(playerid,100);
SetPlayerArmour(playerid,0);
SetPVarInt(playerid,"Godmode",0);//an
KillTimer(timer1);
return 1;
}
Woran liegst