Problem mit Gangzonen :(

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, habe hier einen Bug.


    Habe ein Gangzonen System.
    Die Sache ist: Wenn ich in einer Zone bin, und 30Meter und näher von dem Checkpoint in der Zone entfernt bin, soll er angezeigt werden.


    Doch wenn ich in eine Zone gehe, wird nur Debug 1 und 2 ausgeführt, als bei ROT, "Debug"); das Goldene ist erstmal nicht wichtig.


    NUR bei der Ersten Zone die bei "Gebiete" eingetragen ist, werden alle Debug's ausgeführt, bei allen anderen, wenn ich da in die Zone gehe, passiert nichts.
    ABER sie werden erstellt, also ich sehe sie auf der Map.


    enum gebiet//Dies leitet eine genauere Beschreibung für einen Array ein.
    {
    gOwner,//Hier wird die Fraktionsid gespeichert, der das Gebiet im moment gehört
    Float:gMinX,//MinX - Koordinate für die Gangzone
    Float:gMinY,//MinY
    Float:gMaxX,//MaxX
    Float:gMaxY,//MaxY
    Float:gCheckX,//CheckX
    Float:gCheckY,//CheckY
    Float:gCheckZ,//CheckZ
    gOn,//Ob der Gangfight läuft
    gStatus,//Wieviel Prozent erobert
    gStand1,//Der Score für das Owner Team
    gStand2,//Score für die Angreifer
    gAngreifer//Hier wird die Fraktionsid gespeichert
    };
    new Gebiete[][gebiet] = {//Erstellt eine Variable mit der Anzahl der Gebiete in der ersten [] angegeben und in der zweiten wird das Enum von oben eingefügt. (Dient zur genaueren Beschreibnung)
    {5,35.15625,2421.875,458.984375,2609.375,413.8684,2537.2888,19.1484,0,0,0,0,0},//Hier werden dann die Zonen erstellt, eigentlich alles auf 0 lassen, außer die Koordinaten...
    {5,93.75,1330.078125,289.0625,1490.234375,221.0299,1421.0905,10.5859,0,0,0,0,0},//Zone
    {5,-58.59375,1320.3125,52.734375,1421.875,-10.8091,1393.6879,9.1719,0,0,0,0,0},//Caravans
    {5,-412.109375,1500.0,-257.8125,1626.953125,-298.5329,1538.5736,75.5625,0,0,0,0,0},//Big Ear
    {5,-732.421875,914.0625,-650.390625,980.46875,-688.6170,938.4021,13.6328,0,0,0,0,0},//GRP Haus
    {5,-482.421875,2179.6875,-341.796875,2279.296875,-427.8325,2232.1704,42.4297,0,0,0,0,0},//Kleines Dorf
    {5,-621.09375,2541.015625,-509.765625,2644.53125,-551.7822,2593.9885,53.9348,0,0,0,0,0},//Fire Department
    {5,-810.546875,2740.234375,-730.46875,2783.203125,-778.9518,2745.5300,45.6877,0,0,0,0,0},//Motel
    {5,1025.390625,2894.53125,1085.9375,2992.1875,1048.8763,2908.3472,47.8231,0,0,0,0,0},//Oil Rafinery
    {5,-914.0625,1400.390625,-718.75,1623.046875,-731.2035,1546.0305,38.9973,0,0,0,0,0},//Kleine Stadt
    {5,-56.6406250000005,2333.984375,0.0,2384.765625,-24.1189,2346.4600,24.1347,0,0,0,0,0},//3 Häuser Stadt
    {5,56.640625,1769.53125,369.140625,2115.234375,247.4024,1858.8533,14.0840,0,0,0,0,0}//Area 51
    /*{0,,,0,0,0,0,0},
    {0,,,0,0,0,0,0}*/
    };


    stock IsPlayerInGebietT(playerid)//Funktion bennen mit den jeweiligen Variablen oder auch Parameter genannt.
    {
    SendClientMessageToAll(ROT, "Debug 1");
    for(new i; i<sizeof(Gebiete); i++)//Damit wieder nach allen Zonen geschaut wird.
    {
    SendClientMessageToAll(ROT, "Debug 2");
    new Float:GetX,Float:GetY,Float:GetZ;//Neue Float Variablen erstellen, damit wir dort die Positionen des Spielers speichern können
    GetPlayerPos(playerid,GetX,GetY,GetZ);//Die Position des Spielers in den oben genannten Variablen speichern.
    //if(IsPlayerInRangeOfPoint(playerid, 5.0, Gebiete[i][gCheckX], Gebiete[i][gCheckY], Gebiete[i][gCheckZ]))
    if(Gebiete[i][gMinX] < GetX && Gebiete[i][gMaxX] > GetX && Gebiete[i][gMinY] < GetY && Gebiete[i][gMaxY] > GetY)//Hier wird abgefragt ob die Spielerkooridnanten in dem Bereich der Gangzone sind.
    {
    SendClientMessageToAll(ROT, "Debug 3");
    return i;//Hier wird die Gebietsid returned
    }
    return -1;//Wenn der nirgendwo drin ist wird halt -1 returned damit wir einen unterschied haben
    }
    return -1;//Siehe oben
    }


    forward IsPlayerInNaehe(playerid);//Funktion bennen mit den jeweiligen Variablen oder auch Parameter genannt.
    public IsPlayerInNaehe(playerid)//Funktion bennen mit den jeweiligen Variablen oder auch Parameter genannt.
    {
    SendClientMessageToAll(COLOR_GOLD, "Debug 1");
    for(new i;i<sizeof(Gebiete);i++)//Damit wieder nach allen Zonen geschaut wird.
    {
    if(IsPlayerInGebietT(playerid) > -1)
    {
    SendClientMessageToAll(COLOR_GOLD, "Debug 2");
    new Float:GetX,Float:GetY,Float:GetZ;//Neue Float Variablen erstellen, damit wir dort die Positionen des Spielers speichern können
    GetPlayerPos(playerid,GetX,GetY,GetZ);//Die Position des Spielers in den oben genannten Variablen speichern.
    SendClientMessageToAll(COLOR_GOLD, "Debug 3");
    if(IsPlayerInRangeOfPoint(playerid, 30.0, Gebiete[i][gCheckX], Gebiete[i][gCheckY], Gebiete[i][gCheckZ]))
    //if(Gebiete[i][gMinX] < GetX && Gebiete[i][gMaxX] > GetX && Gebiete[i][gMinY] < GetY && Gebiete[i][gMaxY] > GetY)//Hier wird abgefragt ob die Spielerkooridnanten in dem Bereich der Gangzone sind.
    {
    SendClientMessageToAll(COLOR_GOLD, "Debug 4");
    SetPlayerCheckpoint(playerid, Gebiete[i][gCheckX], Gebiete[i][gCheckY], Gebiete[i][gCheckZ], 2.0);
    }
    else
    {
    SendClientMessageToAll(COLOR_GOLD, "Debug 5");
    /*if(IsPlayerInGebiet(playerid))
    {
    if(!IsPlayerInRangeOfPoint(playerid, 30.0, Gebiete[i][gCheckX], Gebiete[i][gCheckY], Gebiete[i][gCheckZ]))
    {*/
    DisablePlayerCheckpoint(playerid);
    //}
    //}
    }
    }
    return -1;//Wenn der nirgendwo drin ist wird halt -1 returned damit wir einen unterschied haben
    }
    return -1;//Siehe oben
    }


    Hoffe ihr könnt mir dabei helfen.


    MfG
    Me