IsPlayerInRangeOfPoint Script soll prüfen, ob sich User noch im definierten Bereich aufhält.

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
  • 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

  • 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;
    }

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • 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 ^^

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • 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:

    Zitat

    symbol 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 ^^

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • 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

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!