Grüße, ich wollte meinen Timer beenden unter bestimmten Bedingungen. Natürlich habe ich nachgeprüft wo der Fehler liegt und ordentlich geprintet. Der Timer wird nur einmal gesetzt und läuft dann in seiner Schleife weiter. An den Stellen wo ich KillTimer nutze habe ich einen Print gesetzt und dieser wird auch angezeigt. Jedoch wird der Timer nicht gestoppt und die Schleife geht immer weiter ohne das er irgendwo neu gesetzt wurde. Sieht jemand den Fehler?
public ActorSchiessen()
{
if(JamaicaGibtBefehl == 1)
{
JamaicaGibtBefehl =0;
KillTimer(ActorSchiessenTimer);
ActorSchiessenTimer = SetTimer("ActorSchiessen", 5000, true);
}
MotelRuhigAbfragen();
print("Schiessen Timer läuft");
new IfSchiesst;
if(MotelUnruhig == 1)
{
for(new p;p<MAX_PLAYERS;p++)
{
if(!IsCrip(p))
{
if(IsSchlaeger[p] == 1 || IsMotelSchuetze(p) || IsSchusswaffe(p))
{
if(JamaicaAngeschossen == 0 && RezepLadyTot == 0 && JamaicaVerletzt == 0)
{
if(IsPlayerInRangeOfPoint(p,4.5,2216.503906,-1152.774169,1025.796875) || IsPlayerInRangeOfPoint(p,3.0,2221.090576,-1153.498657,1025.796875) || IsPlayerInRangeOfPoint(p,3.0,2216.586425,-1147.341552,1025.796875) || IsPlayerInRangeOfPoint(p,3.0,2215.256835,-1150.719726,1025.796875))
{
new Float:health;
GetPlayerHealth(p,health);
if(health < 81){ImMotel[p]=0;}
SetPlayerHealth(p,health-80);
IfSchiesst = 1;
}
}
}
}
if(IfSchiesst == 1)
{
if(IsPlayerInRangeOfPoint(p,20.0,2216.407714,-1148.544921,1025.796875))
{
SendClientMessage(p,COLOR_PURPLE,"Jamaica_Nolan schießt mit ihrer AK um sich!");
}
}
}
}
if(MotelUnruhig == 0)
{
if(ActorLeben())
{
print("Actor Waffen weg wird gesetzt");
KillTimer(ActorSchiessenTimer);
ActorWaffenWeg();
return 1;
}
}
return 1;
}
Der Timer schickt dann immer wieder die Befehle MotelRuhigAbfragen und ActorWaffenWeg los.