IsPlayerInArea - Problem mit Kalkulation

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
  • Moin, moin, Nachteulen. Ich fass mich mal kurz:


    IsPlayerInArea:
    stock IsPlayerInArea(playerid, Float:uxa, Float:uxb, Float:uya, Float:uyb) {
    GetPlayerPos(playerid, x, y, z);
    if (x >= uxa && x <= uxb && y >= uya && y <= uyb) return 1;
    return 0;
    }


    PlayerPos:
    x = 1063.4589, y=-1422.5372


    Areal:
    min x = 1044.6500, max x = 1191.6099, min y = -1410.7199, max y = -1567.3900


    Unschwer zu erkenn ist: y ist nicht größer als min y und auch nicht kleiner als max y (aufgrund der negativen Zahlen) - Über Google & Suchfunktion finde ich allerdings keine effizientere Idee, ein Areal abzufragen, offenbar scheint es bei allen zu funktionieren. Demnach gehe ich davon aus, ich habe irgendwo einen Denkfehler eingebaut, sehe ihn nur leider nicht.


    Sieht von euch vielleicht jemand einen Fehler, den ich übersehe?


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'

  • Hier ist der Stock den ich drinne ich bei mir drinne habe , er Funktioniert.
    Vieleicht hilft er dir Weiter :


    stock IsPlayerInArea(playerid,Float:minX,Float:minY,Float:maxX,Float:maxY)
    {
    new Float:pX,Float:pY,Float:pZ;
    GetPlayerPos(playerid,pX,pY,pZ);
    if(pX >= minX && pX <= maxX && pY >= minY && pY <= maxY) return 1;
    else return 0;
    }


    Mfg


    PullDown

  • hmmmm, komisch ^^
    Wiegesagt bei mir Funktioniert er.
    sehe da jetzt auch keinen UInterschied ^^


    //zusatz :
    min y = -1410.7199, max y = -1567.3900



    Tausche mal die beiden coordinaten.


    Ich habe in einem Gebiet von mir diese coordinate :



    -2054.8884,-720.0383


    wie du siehst habe ich die größere -Zahl als minY angegeben.

  • Ich wüsste nicht warum. x, y und z sind global definiert, so oft, wie die gebraucht werden, halte ich das für sinnvoller, als sie in jedem Callback neu deklarieren zu müssen.


    Die Werte werden ja auch korrekt ausgegeben (mit printf geprüft), nur eben, durch die negativen Zahlen, ist die Y-Pos nicht mehr > miny (sondern <miny) und nicht mehr < maxy (sondern >maxy)
    Ich hatte dann überlegt einfach alle Negativwerte * -1 zu rechnen, würde aber heißen, dass man das Script auch in der entgegengesetzten Stelle der Karte (wo diese Werte wirklich positiv sind) ausführen kann - und das möchte ich natürlich nicht :p


    / E PullDown: Danke, das war der Fehler, den ich übersehen hab ^^


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'