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