Guten Tag, ich nutze jetzt meinen ersten Timer, mit Timern kenne ich mich allerdings garnicht aus. Der Befehl /ctf an sich funktioniert wunderbar.
Wenn ich mich zu weit von einer Position entferne, soll der Spieler die Flagge verlieren, so sieht alles aus:
forward CTFDistance(playerid);
new CTFTimer;
if(strcmp(cmd, "/ctf", true) == 0)
{
if(IsPlayerInRangeOfPoint(playerid, 15, 757.7704,-1596.4019,13.7374))
{
if(YakuzaHasFlag == 0 && Spieler[playerid][Team] == 2)
{
YakuzaHasFlag = 0;
TriadenHasFlag = 1;
SendClientMessageToAll(0xFFBE00FF, "Die Triaden haben die Flagge erobert!");
SendClientMessage(playerid, COLOR_GREY, "Entferne dich nicht zuweit vom CTF-Punkt, sonst verlierst du die Flagge!");
}
if(TriadenHasFlag == 0 && Spieler[playerid][Team] == 1)
{
TriadenHasFlag = 1;
YakuzaHasFlag = 0;
SendClientMessageToAll(0xFFBE00FF, "Die Yakuza haben die Flagge erobert!");
SendClientMessage(playerid, COLOR_GREY, "Entferne dich nicht zuweit vom CTF-Punkt, sonst verlierst du die Flagge!");
}
else if(YakuzaHasFlag == 1 || TriadenHasFlag == 1)
{
SendClientMessage(playerid, COLOR_GREY, "Dein Team ist schon im Besitz der Flagge!");
}
CTFTimer = SetTimer("CTFDistance", 1000, 1);
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Du musst an einem /ctf-Punkt sein!");
}
return 1;
}
{
if(IsPlayerInRangeOfPoint(playerid, 15, 757.7704,-1596.4019,13.7374))
{
if(YakuzaHasFlag == 0 && Spieler[playerid][Team] == 2)
{
YakuzaHasFlag = 0;
TriadenHasFlag = 1;
SendClientMessageToAll(0xFFBE00FF, "Die Triaden haben die Flagge erobert!");
SendClientMessage(playerid, COLOR_GREY, "Entferne dich nicht zuweit vom CTF-Punkt, sonst verlierst du die Flagge!");
}
if(TriadenHasFlag == 0 && Spieler[playerid][Team] == 1)
{
TriadenHasFlag = 1;
YakuzaHasFlag = 0;
SendClientMessageToAll(0xFFBE00FF, "Die Yakuza haben die Flagge erobert!");
SendClientMessage(playerid, COLOR_GREY, "Entferne dich nicht zuweit vom CTF-Punkt, sonst verlierst du die Flagge!");
}
else if(YakuzaHasFlag == 1 || TriadenHasFlag == 1)
{
SendClientMessage(playerid, COLOR_GREY, "Dein Team ist schon im Besitz der Flagge!");
}
CTFTimer = SetTimer("CTFDistance", 1000, 1);
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Du musst an einem /ctf-Punkt sein!");
}
return 1;
}
public CTFDistance(playerid)
{
if(TriadenHasFlag == 1 && YakuzaHasFlag == 1)
{
if(!IsPlayerInRangeOfPoint(playerid, 15, 757.7704,-1596.4019,13.7374))
{
SendClientMessage(playerid, COLOR_GREY, "Du bist zuweit vom CTF Punkt entfernt, du hast die Flagge verloren!");
TriadenHasFlag = 0;
YakuzaHasFlag = 0;
KillTimer(CTFTimer);
}
}
return 1;
}
{
if(TriadenHasFlag == 1 && YakuzaHasFlag == 1)
{
if(!IsPlayerInRangeOfPoint(playerid, 15, 757.7704,-1596.4019,13.7374))
{
SendClientMessage(playerid, COLOR_GREY, "Du bist zuweit vom CTF Punkt entfernt, du hast die Flagge verloren!");
TriadenHasFlag = 0;
YakuzaHasFlag = 0;
KillTimer(CTFTimer);
}
}
return 1;
}
Hat da jemand einen Lösungsvorschlag? Ich bin langsam am verzweifeln
Ist es Schwer das Problem zu lösen? Der Spieler soll wie gesagt nur die Flagge entzogen bekommen, wenn er zuweit vom CTF Punkt entfernt ist.
Edit: // Pawn Code richtig anzeigen lassen
Edit2: // Fehler korrigiert
Edit3: // Nochmals Fehler Korrigiert