Hallo,
kann mir jemand helfen?
Ich bräuchte den Code für:
Wenn der User sich aus dem Bereich XY bewegt, soll das und das passieren.
Irgendwie klappt das bei mir nie so richtig.
Achso. Und der timer sollte sich auch irgendwie killen lassen.
BTW: Kann ich mir irgendwo den Radius anzeigen lassen?
Danke
Samy
IsPlayerInRangeOfPoint Script soll prüfen, ob sich User noch im definierten Bereich aufhält.
- Samy-t42
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Hier bitte
new bool:gPlayerIn[MAX_PLAYERS];
forward CheckPlayer();
public OnGameModeInit()
{
SetTimer("CheckPlayer", 1000, 1);
return 1;
}public CheckPlayer()
{
new playerid = 0;
for(; playerid < MAX_PLAYERS; playerid++)
{
if(IsPlayerInRangeOfPoint(playerid, Float:radius, Float:X, Float:Y, Float:Z) && gPlayerIn[playerid] == false) //Koordinaten einsetzen
{
gPlayerIn[playerid] = true; //Um unnötige Loops zu vermeiden
//Code wenn Spieler IM Radius
}
else if(!IsPlayerInRangeOfPoint(playerid, Float:radius, Float:X, Float:Y, Float:Z) && gPlayerIn[playerid] == true) //Koordinaten einsetzen
{
gPlayerIn[playerid] = false; //Um unnötige Loops zu vermeiden
//Code wenn Spieler AUS Radius
}
}
return true;
} -
Mmmm. irgendwie klappt das nicht....
genau genommen, geht es um eine Art "mini Job".
Hier soll geprüft werden, ob der Spieler das entsprechende Gebiet verlässt.
Allerdings soll der Timer nur angehen, wenn
mission[playerid] =1;
ist.
Oder wäre es vielleicht einfacher, die Zeitabstände zwischen den Cps (im Job) zu messen, und wenn der Spieler länger als X Minuten von Cp zu Cp braucht einfach davon ausgehen, das er das Gelände verlassen hat? -
Achso ja wenn du es so verwenden willst, dann ist deine 2. Variante um einiges besser
-
Meine Idee war es jetzt, beim durchfahren des Cps einen Timer zu starten, der irgendwann "auslöst", wenn er nicht vorher durch "KillTimer" im nächsten Cp deaktiviert wurde.
Das steht oben:
new timer1;forward timer(playerid);
Das steht in dem "OnPlayerSelectedMenuRow"
weil da die CPs erstellt werden.:
timer1 = SetTimer("timer", 30000, 0);
Und beom compilen kriege ich:Zitatsymbol is assigned a value that is never used: "timer1"
Ich habe es doch beim Timer benutzt..... -
Das schon, aber du musst es auch "Richtig" verwenden, also du musst auch einen KillTimer(timer1); einfügen
-
Ok, habe ich dann gemacht, grade mal ausprobiert.
Nichts
Er reagiert einfach nicht.
Die public hatte ich auch gemacht. Mit einer einfachen
SendClientMessage(playerid,0xFFFFFFFF,"Go back!");
Aber er reagiert nicht.
BTW: Wenn ich das so machen würde, müsste ich ca. 30 timer erstellen (für jeden CP)
Geht das nicht einfacher?
Ich möchte einfach nur prüfen, ob der Spieler das Gelände verlässt. -
//Ganz neuer Edit:
Uff bin grad überfordert... Sry ich antworte nachher gscheider xD
-
Nein, wenn der Spieler nicht bis zum Ablauf des Timers den CP erreicht hat, wird davon ausgegangen, das er abgehauen ist.
EDIT:
Es geht! Danke!