No DM Zonen Problem

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,


    Ich habe ein Problem mit meinen NO-DM Zonen System ( Naja, ich weiß nicht ob ich es System nennen kann. )
    Jedenfalls, habe ich ein Textdraw erstellt und dies sollte kommen, wenn man in die Zone geht.
    Dazu habe ich ein Public erstellt, welches unter OnGameModeInit alle 1,5 Sekunden aufgerufen wird.
    Hier das Public:


    public Nodm_Abfrage()
    {
    for(new i;i<MAX_PLAYERS; i++)
    for(new nodmsys;nodmsys<sizeof(NoDmSystem);nodmsys ++)
    {
    if(GetPVarInt(i,"loggedin") == 0)continue;
    if(IsPlayerInArea(i,NoDmSystem[nodmsys][MinX],NoDmSystem[nodmsys][MinY],NoDmSystem[nodmsys][MaxX],NoDmSystem[nodmsys][MaxY]))
    {
    TextDrawShowForPlayer(i,Text:blackTD);
    }
    else
    {
    TextDrawHideForPlayer(i,Text:blackTD);
    }
    }
    return 1;
    }


    Jedoch, wenn jemand in die Zone geht, kommt kein Textdraw.
    Wenn ich es so machen würde:


    if(IsPlayerInArea(i,1813.8855,-1862.1486,1698.2018,-1948.9227))


    Klappt es, aber halt nur für die angegebene Zone.


    Hier das Enum und das andere, KP wie man es nennt ^^


    enum nodm
    {
    Float:MinX,
    Float:MinY,
    Float:MaxX,
    Float:MaxY,
    ZoneID
    };
    new NoDmSystem[][nodm]=
    {
    /*MinX, MinY, MaxX, MaxY*/
    {1813.8855,-1862.1486,1698.2018,-1948.9227}, // Zivispawn
    {1060.145,-1721.339,1166.624,-1583.168},
    {}
    };



    Ich hoffe ihr könnt mir weiterhelfen.


    Gruß,

  • Versuch es mal so



    public Nodm_Abfrage()
    {
    for(new i;i<MAX_PLAYERS; i++)
    for(new nodmsys;nodmsys<sizeof(NoDmSystem);nodmsys ++)
    {
    if(GetPVarInt(i,"loggedin") == 0)continue;
    if(IsPlayerInRangeOfPoint(i,NoDmSystem[nodmsys][MinX],NoDmSystem[nodmsys][MinY],NoDmSystem[nodmsys][MaxX],NoDmSystem[nodmsys][MaxY]))
    {
    TextDrawShowForPlayer(i,Text:blackTD);
    }
    else
    {
    TextDrawHideForPlayer(i,Text:blackTD);
    }
    }
    return 1;
    }

    Die Kritik an anderen hat noch keinem die eigene Leistung erspart.

    – Noël Coward

  • Genau Eddy, das hat mir nicht weitergeholfen, trotzdem danke :)


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


    Ich denke mal der Stock ist richtig.

  • es kann sein das du die coordinaten falsch gesetzt hast
    Ich hab dir hier mal nen Muster zurhand, da kannst du sehen wie die coordinate sein sollen
    if(pX >= kleinerer X Wert && pX <= größerer X wert && pY >= kleinerer Y wert && pY <= größerer Y wert) return 1;

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

  • es ist nicht das selbe das ist ja das
    Du musst gucken guck ma die if abfrage an die ich da hab da steht wie die coordinaten sein sollen
    wenn du nen größeren wert in den kleineren machst, und nen kleinerer weit in den Größeren machst, dann ist es schon völlig anderswertig

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

  • Hm ok, ich mach es nun so:
    Hier unten nun die Saves:
    AddPlayerClass(166,1164.3928,-877.2994,43.9815,104.3437,0,0,0,0,0,0); //1
    AddPlayerClass(166,1236.1652,-925.6865,42.5068,283.1373,0,0,0,0,0,0); // 2
    ( vielleicht hilft euch das hier oben weiter )
    Dann schreibe ich es oben so hinein:


    enum nodm
    {
    Float:nMinX,
    Float:nMinY,
    Float:nMaxX,
    Float:nMaxY,
    ZoneID
    };


    new NoDmSystem[][nodm]=
    {
    /*MinX, MinY, MaxX, MaxY*/
    {1164.3928,-877.2994,1236.1652,-925.6865}// BSN
    };


    Dann so im Public:
    if(IsPlayerInArea(i,NoDmSystem[nodmsys][nMinX],NoDmSystem[nodmsys][nMinY],NoDmSystem[nodmsys][nMaxX],NoDmSystem[nodmsys][nMaxY]))


    Tut mir leid, ich finde den Fehler einfach nicht..