IsPlayerInArea Bug?

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
  • public ZweiSekunden(playerid)
    {
    //for(new i;i<ZONENODM;i++)
    //{
    if(IsPlayerInArea(playerid, 1189.6478, -1345.3881, 1170.4673, -1305.7911))
    {
    NODM(playerid);
    return 1;
    }
    else if(IsPlayerInArea(playerid, 1286.3705, -1812.2021, 1246.7028, -1790.8199))
    {
    NODM(playerid);
    return 1;
    }
    else if(IsPlayerInArea(playerid, 1811.1853, -1882.1539, 1752.1873, -1941.7321))
    {
    NODM(playerid);
    return 1;
    }
    else if(IsPlayerInArea(playerid, -2135.883, 408.6485, -2000.689, 534.8873))
    {
    NODM(playerid);
    return 1;
    }
    else
    {
    if(SpielerInfo[playerid][pNODM] == 0)
    {
    if(SpielerInfo[playerid][pDebug] == 1)
    {
    Echo(playerid, cRot, "[DEBUG] Spieler nicht in NODM Zone, tue nichts.");
    return 1;
    }
    return 1;
    }
    if(SpielerInfo[playerid][pNODM] == 1)
    {
    TextDrawHideForPlayer(playerid, NoDM);
    SpielerInfo[playerid][pNODM] = 0;
    if(SpielerInfo[playerid][pDebug] == 1)
    {
    Echo(playerid, cRot, "[DEBUG] Nicht mehr in der NODM Zone, setze Var auf 1 und lasse Textdraw verschwinden.");
    return 1;
    }
    return 1;
    }
    }
    //}
    return 1;
    }



    /*
    ==================================Stocks=================================================
    =========================================================================================
    */
    stock NODM(playerid)
    {
    if(SpielerInfo[playerid][pNODM] == 1)
    {
    if(SpielerInfo[playerid][pDebug] == 1)
    {
    Echo(playerid, cRot, "[DEBUG] Var bereits auf 1, tue nichts.");
    return 1;
    }
    return 1;
    }
    else
    {
    TextDrawShowForPlayer(playerid, NoDM);
    SpielerInfo[playerid][pNODM] = 1;
    if(SpielerInfo[playerid][pDebug] == 1)
    {
    Echo(playerid, cRot, "[DEBUG] Textdraw anzeigen, Var auf 1");
    return 1;
    }
    return 1;
    }
    }


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


    Trotz der richtigen Koordinaten, wird nicht ausgegeben, dass ich in der NODM Zone bin. Weiß jemand warum? X(



    edit: Ganzer Code

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

    Einmal editiert, zuletzt von ElDiabolo ()

  • Die Koordinarten können richtig sein, aber es würde nie das gewünschte Feld detecten, da die Koordinarten in einer falschen Reihenfolge stehen. MinX kann nicht größer sein als MaxX - MaxX kann nicht kleiner sein als MinX. Beim ersten wäre es dementsprechend 1170.4673,-1305.7911, 1189.6478 , -1345.3881

  • Ahh, danke klappt.


    Und wieso geht das ganze damit nicht?
    for(new i;i<ZONENODM;i++)
    {
    if(IsPlayerInArea(playerid, NODMZone[i][minX],NODMZone[i][minY],NODMZone[i][maxX],NODMZone[i][maxY]))
    {
    NODM(playerid);
    return 1;
    }


    #define ZONENODM 3 //Gesamt
    new ZoneNODM[ZONENODM];
    new NODMZone[ZONENODM][zoneenum]=
    {
    {1069.9680, -1388.4618, 1189.7433, -1286.8961, NoDMColor}, //No Dm KH
    {1224.0693,-1842.0380, 1287.3325, -1766.4668, NoDMColor}, //No DM Fahrschule
    {1699.8706, -1942.5875, 1811.5170, -1860.4978, NoDMColor} //No DM Zivispawn
    };
    enum zoneenum{Float:minX,Float:minY,Float:maxX,Float:maxY,zonecolor};



    edit: Goldkiller, wieso löscht du deinen Beitrag? :O Ich habe schon extra returnt, damit nur das NODM(); abgespielt wird.

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

    Einmal editiert, zuletzt von ElDiabolo ()

  • Wenn ein Kollege von mir da is, zeige ich dem mal den Thread, vielleicht kann der dir weiterhelfen.

  • Wenn ein Kollege von mir da is, zeige ich dem mal den Thread, vielleicht kann der dir weiterhelfen.


    Wäre nett :=)
    edit: Kommt da noch was von deinem Freund?
    edit2: Zitiert

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

    2 Mal editiert, zuletzt von ElDiabolo ()

  • Ne der hatte keine Zeit, der arbeitet momentan dran LUA zu lernen und hat keine Zeit für PAWN :D Sorry

  • Hallo ElDiabolo


    ich hoffe, das du damit was anfangen kannst
    Habe es mal von meinen Bruder als Muster bekommen
    es kann daran liegen, das du die coordinaten falsch gesetzt hast


    if(pX >= kleinerer X Wert && pX <= größerer X wert && pY >= kleinerer Y wert && pY <= größerer Y wert) return 1;

    Mit freundlichen Grüßen


    Perry_Cox



  • Eldia zeig mal bitte die AddPlayerClass zu den Zonen anhand dieser, kann ich erkennen ob es da ein Fehler gibt


    //edit
    new NODMZone[ZONENODM][zoneenum]=
    {
    {1069.9680, -1388.4618, 1189.7433, -1286.8961, NoDMColor}, //No Dm KH
    {1224.0693,-1842.0380, 1287.3325, -1766.4668, NoDMColor}, //No DM Fahrschule
    {1699.8706, -1942.5875, 1811.5170, -1860.4978, NoDMColor} //No DM Zivispawn
    };
    enum zoneenum{Float:minX,Float:minY,Float:maxX,Float:maxY,zonecolor};


    was Fällt dir da auf?


    minX ist größer als maxX = austauschen min = kleiner Max = Größer
    minY ist größer als maxY = austauschen min = kleiner Max = Größer


    Daher kommt dein fehler

    All in all it's just another brick in the wall

    Einmal editiert, zuletzt von Beavis ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • hm?

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!


  • ich bitte dich was ist hier geringfügiger


    beispiel 1:

    1069.9680, -1388.4618, 1189.7433, -1286.8961


    1069.9680 < 1189.7433
    -1388.4618 < -1286.8961
    und zum letzten seit wann ist -4 größer als -1 tja zwar in den negativen bereich aber nicht gesammt

    first read then think after that write down your post


    //edit


    du kannst nicht immer aus lust und laune ihrgend welche scheiße returnen das macht doch gar kein sinn das bricht hier die schleife ab


    for(new i;i<zonenodm;i++){
    if(IsPlayerInArea(playerid, NODMZone[i][minX],NODMZone[i][minY],NODMZone[i][maxX],NODMZone[i][maxY])){
    NODM(playerid);
    }
    }
    return 1;


    daher ist das return 1: auch ausserhalb es gibt an ob der code erfolgreich war oder nicht 0 ist in dem fall dann false also der code ist gescheitert
    schonmal bei einem command das return 1; vergessen dann kommt unknow command da der code nicht erfolgreich.

  • Danach kommt aber ne else abfrage^^
    edit: Es geht auch nicht um die Koordinaten, diese sind nämlich richtig, sondern wie man das für alle gleichzeitig abfragen kann... Schaut euch bitte mal die Abfrage an.

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

    Einmal editiert, zuletzt von ElDiabolo ()

  • Ich weiß garnicht, wieso du so ausfallend wirst, denkst du, du wärst was besseres? Oben steht der Code und zudem ist der vollständige in meinem PRP Script. Das das return falsch ist, stimmt auch nicht, also halte dich mal zurück!

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

  • mach ein stock daraus
    bsp:


    stock IsInNoDM(playerid)
    {
    for(new i;i<NDM;i++)
    {
    if(IsPlayerInArea(playerid,NDMZone[i][dm_minX],NDMZone[i][dm_minY],NDMZone[i][dm_maxX],NDMZone[i][dm_maxY]))return 1;
    }
    return 0;
    }


    Anwendung:
    if(IsInNoDM(i))
    {
    er is
    }
    else
    {
    er is nicht drin
    }

    All in all it's just another brick in the wall

  • der sinn ist einfach dabei, das du nicht tausende abfragen machen musst um zu wissen ob er in einer der Zone ist
    So hast du eine für alle und sparst zeilen aber ich denke mir solangsam, das du nicht wirklich hilfe anehmen willst

    All in all it's just another brick in the wall

  • Ich brauch es nur einmal. Außerdem möchte ich, dass es geht, nicht immer irgendwelche anderen Vorschläge...

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen