Drogensystem - Grünflächen erkennen usw.

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 Community,


    ich möchte mich jetzt mal an mein Drogen-System setzen, bei dem man logischerweise auch Pflanzen benötigt etc.
    Leider habe ich folgendes Problem, ich weis nicht wie ich sogenannte "Grünflächen" definieren kann.
    Ich habe schon darüber nachgedacht, alle Grünflächen per Zone zu speichern, aber das wäre viiiiieeeeel zu umständlich und würde auch 500 Zonen in Anspruch nehmen.
    Was ich jetzt wissen möchte ist, ob man das irgendwie einfach machen kann, sodass man Drogenpflanzen nur auf Grünflächen platzieren kann, selbst auf kleinen Grasflächen die sich auf einem Gehweg befinden.
    Sowas gesehen habe ich auf jeden Fall schon, also muss es auch irgendwie funktionieren.
    Die Frage ist nur wie?


    Wenn es jemand von euch weis, wäre es super nett wenn ihr mir verraten könntet wie.


    Danke im Voraus


    MfG

  • Du kannst leider nicht abfragen ob der Spieler sich gerade auf einer Grünfläche befindet :/.


    Daher müsstest du tatsächlich Zonen definieren, da sollte dir das Streamer Plugin helfen mit der Polygon-Funktion


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



    CreateDynamicPolygon(Float:points[], Float:minz = -FLOAT_INFINITY, Float:maxz = FLOAT_INFINITY, maxpoints = sizeof points, worldid = -1, interiorid = -1, playerid = -1);Beim setzten kannst du durch die Zonen iterieren und abfragen ob die Position an der die Pflanze gesetzt werden soll eine valide Zone ist oder nichtDa sollten dir folgende Funktionen helfen:native IsPointInDynamicArea(STREAMER_TAG_AREA areaid, Float:x, Float:y, Float:z);native IsPointInAnyDynamicArea(Float:x, Float:y, Float:z);Der Grund dafür wieso das nicht anders funktioniert ist das es wie bereits erwähnt keine Möglichkeit gibt abzuprüfen ob der Spieler sich auf einerGrünfläche befindet, aber eventuell hast du Glück bei der Suche und findest eventuell ein Array mit Zonne für alle Grünflächen.Aber es ist auch möglich ein Polygon für alle Straßen zu erstellen und den Spieß umzudrehen und abzufragen ob der Spieler in keiner Zone ist.Da musst du jedoch die ganzen Wasserzonen auch berücksichtigen

  • Vielen Dank erstmal!
    Das wird ja ein riesen Haufen Arbeit für nur ein Teil des Systems.
    Ojeee, ich hatte gehofft es gibt einen Weg der nicht so umständlich ist :D
    Ich schaue mal, aber so ein Array wäre schon super.


    #EDIT - Vor allem wie soll ich mir merken was ich bereits gespeichert habe an Zonen und was nicht? :D
    San Andreas ist so riesig das ist ja fast unmöglich ohhhh mann :D

  • Druck dir die Map aus und mal mit Buntstiften rein ;)

    Klingt dumm, ist aber wirklich keine schlechte Idee, vorallem wenn man das mit 2-3 Personen macht sollte das super klappen, also abwechselnd.
    Mann kann die Map ja auch mit Paint bemalen oder sowas :/
    Danke für eure Hilfe, das wird ein riesen Haufen Arbeit, aber das gehört zu einem guten Script dazu! :)

  • Die Zonen kannst du ja statisch erstellen, es geht ja nur darum die Drogen zu setzen und die DrogenPflanzen musst du speichern,
    Float:X, Float:Y, Float:Z <= die koordinaten sind wichtig , Leben, Wasserstand, etc ..


    Es kann sein das dafür das Zonen-Array genutzt wurde, aber ich kann leider kein Server , welcher sowas genau hat und die Möglichkeit zu testen, sonst könntest du 2 Sachen testen einmal das setzten der Pflanze in LS hinter einem Haus mit Steinboden und Gras und außerhalb von LS in einem Hinterhof auf dem Asphalt.


    //edit


    Daher nutz ein Polygon da machst du dir ein Befehl mit dem du deine Koordinate einem File hinzufügst und läufst deine Flächen ab