Abfragen ob sich ein Object im Umkreis befindet?

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


    Ich möchte für mein Gabelstabler System abfragen können, ob er ein Object dabei hat wenn er einen Checkpoint einfährt.
    Es gibt ja GetObjectPos(obj,x,y,z); aber wie stell ich es an das ich die Rage abfragen kann?


    if(LagerPlatz[playerid]==1&& IsPlayerInRangeOfPoint(playerid,3.0,2160.4749,-2299.6975,13.5166))
    {
    /// Hier möcht ich gerne noch Abfragen ob sich das Objekt ebenfalls hier im Umkreis befindet damit das nachfolgende ausgeführt wird
    LagerPlatz[playerid]=0;
    SendClientMessage(playerid,HELLBLAU,"Du hast die Ware erfolgreich eingelagert.");
    Lageraufgabe(playerid);


    }


    Oder gibt es noch bessere Optionen?


    Gruß

  • Ich habe dir mal schnell ne Funktion geschrieben: (ungetestet)
    ObjectRange(playerid,objectid,Float:range)
    {
    new opos[3];
    GetObjectPos(objectid, opos[0],opos[1],opos[2]);
    if(IsPlayerInRangeOfPoint(range,opos[0],opos[1],opos[2])); return 1;
    return 0;
    }


    Anwendung:
    if(ObjectRange(playerid, 1000, 10.0) == 0) return SendClientMessage(playerid, color, "Du bist nicht in der 10 meterigen Umgebung des Objektes 1000.");


    Viel Spaß
    L.G.

  • stock ObjectToPoint(Float:radi, objectid, Float:x, Float:y, Float:z)
    {
    new Float:oldposx, Float:oldposy, Float:oldposz;
    new Float:tempposx, Float:tempposy, Float:tempposz;
    GetObjectPos(playerid, oldposx, oldposy, oldposz);
    tempposx = (oldposx -x);
    tempposy = (oldposy -y);
    tempposz = (oldposz -z);
    if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
    {
    return 1;
    }
    return 0;
    }


    Quelle http://forum.sa-mp.com/showthread.php?t=149225


    Google ist dein freund wah 20 Sekunden!!!

  • if(LagerPlatz[playerid]==1&& IsPlayerInRangeOfPoint(playerid,3.0,2160.4749,-2299.6975,13.5166))
    {
    if(!IsObjectInRangeOfPoint(objectid,3.0,x,y,z))return SCM(playerid,-1,"Das Object nicht mitgenommen?");
    LagerPlatz[playerid]=0;
    SendClientMessage(playerid,HELLBLAU,"Du hast die Ware erfolgreich eingelagert.");
    Lageraufgabe(playerid);


    }
    //quelle forum.samp.com
    stock IsObjectInRangeOfPoint(objectid,Float:radi, Float:x, Float:y, Float:z)
    {
    new Float:oldposx, Float:oldposy, Float:oldposz;
    new Float:tempposx, Float:tempposy, Float:tempposz;
    GetObjectPos(playerid, oldposx, oldposy, oldposz);
    tempposx = (oldposx -x);
    tempposy = (oldposy -y);
    tempposz = (oldposz -z);
    if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi))) return 1;
    return 0;
    }

  • Wenn du mir mit nem ; ankommst dann sag nicht stock ... [ SCRIPTING ] Der Mythos "stock"


    Das soll jetzt nicht zur einer privaten Eskalation kommen, dennoch schau lieber mal drauf was und wie du scriptest, was ist daran schlimm eben zwei zeilen dazu einzufügen und man dafür ne richtige Funktion hata nstatt deinen "LOW" stock!
    Ernsthaft das Niveau sinkt doch hier ich helfe und dnan kommen solche Kiddys und heulen das man zwei Zeilen nichtmal einfügen kann dazu ist dieses Mythos stock nicht von mir sondern eben schnell ergooglet und wenn du noch irgendwas hast danns chreib mich doch bitte einfach privat an okay ;)

  • Ich glaube du hast das System der Funktionen noch nicht verstanden.
    Sie sind dafür da, Leuten das Schreiben zu Verkürzen, Einfacher und universeller zu machen.
    Wenn du meinst solche coolen Wörter wie Low zu verwenden, kommst du bei mir auch nicht weiter.
    Ich hoffe wir sind beide noch auf einer Ebene und können anständig miteinander reden....


    Außerdem, hättest du mal auf den Link drauf geklickt, wüsstest du, dass ich nicht deine Funktion meine.


    L.G.
    -> Alle weiteren Anspielungen oder Provokationen werden von mir gerne ignoriert.

  • stock ObjectRange(playerid,obj,Float:range){new Float:ObjPos[3];GetObjectPos(obj,ObjPos[0],ObjPos[1],ObjPos[2]);if(IsPlayerInRangeOfPoint(playerid,range,ObjPos[0],ObjPos[1],ObjPos[2]))return 1;return 0;}


    Ich habe das in einer Funktion noch einmal kurz gefasst ;)


    EDIT: Klappt auch einwandfrei, wurde getestet ;)