Gangzone erstellt sich doppelt/ID=0!

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 breadfish, (2 Probleme siehe weiter unten)


    wenn ich ingame eine Zone lösche, löscht sich nur die Zone in der ich mich gerade befinde. Nach einem Serverrestart sind alle Zonen weg. Die werden komischerweise alle mit der Zonenid 0 erstellt.


    ocmd:createflag(playerid, params[])
    {
    new query[500], Float:x, Float:y, Float:z;
    if(SpielerInfo[playerid][sEingeloggt] == 0) return SendClientMessage(playerid, COLOR_LIGHTGREY, "[Warnung]: Du musst dich erst einloggen, um den Befehl zu benutzen!");
    if(SpielerInfo[playerid][sAdminlevel] < 3) return SendClientMessage(playerid, COLOR_LIGHTGREY, "[Warnung]: Du bist nicht berechtigt diesen Befehl zu benutzen!");
    if(SpielerInfo[playerid][sAdminduty] == 0) return SendClientMessage(playerid, COLOR_LIGHTGREY, "[Warnung]: Du befindest dich nicht im Administrator Dienst!");
    if(CZ[playerid][create] != 1) return SendClientMessage(playerid, COLOR_WHITE, "Um eine Gangzone zu erstellen, benutze '/createzone'!");
    CZ[playerid][zid] = M_GetPlayerZone(playerid);
    if(!M_IsPlayerInAnyZone(playerid)) return SendClientMessage(playerid, COLOR_WHITE, "Du bist in keiner Gangzone!");
    if(CZ[playerid][zid] < 0) return SendClientMessage(playerid, COLOR_WHITE, "Du bist in keiner CZ!");
    GetPlayerPos(playerid, x, y, z);
    GZ[CZ[playerid][zid]][flagge_x] = x, GZ[CZ[playerid][zid]][flagge_y] = y, GZ[CZ[playerid][zid]][flagge_z] = z, CZ[playerid][create] = 0;
    GZ[CZ[playerid][zid]][pickup] = CreatePickup(1314, 1, x, y, z, 0);
    GZ[CZ[playerid][zid]][label] = Create3DTextLabel("{0099FF}[Gangfight]{FFFFFF}\nTippe {0099FF}/angriff{FFFFFF} um das Gebiet anzugreifen.\nTippe {0099FF}/flagge{FFFFFF} um die Flagge zu erobern.", COLOR_WHITE, x, y, z, 20, 0);
    format(query, sizeof(query), "INSERT INTO gangfight (owner, maxX, maxY, minX, minY, flaggeX, flaggeY, flaggeZ, erstellt) VALUES ('%s', '%f', '%f', '%f', '%f', '%f', '%f', '%f', '%d')",
    GZ[CZ[playerid][zid]][owner], GZ[CZ[playerid][zid]][max_x], GZ[CZ[playerid][zid]][max_y], GZ[CZ[playerid][zid]][min_x], GZ[CZ[playerid][zid]][min_y], GZ[CZ[playerid][zid]][flagge_x], GZ[CZ[playerid][zid]][flagge_y], GZ[CZ[playerid][zid]][flagge_z], CZ[playerid][zid]);
    mysql_pquery(handle, query);
    return SendClientMessage(playerid, COLOR_WHITE, "Du hast die Zone erfolgreich erstellt.");
    }


    Wenn ich eine Zone ingame erstelle, gehört sie noch keiner Gang an. Wenn ich die Zone dann angreife damit die Zone einer Gang angehört und einen Serverrestart mache, erstellt sich noch eine Zone die niemanden gehört und die Zone die der Gang angehört.


    public LoadGZ()
    {
    new rows, fields, string[128], string2[128], Counter = 0;
    cache_get_data(rows, fields);
    for(new i = 0; i < rows; i++)
    {
    GZ[i][zid] = i;
    GZ[i][owner] = cache_get_field_content_int(i, "owner", handle);
    GZ[i][max_x] = cache_get_field_content_float(i, "maxX", handle);
    GZ[i][max_y] = cache_get_field_content_float(i, "maxY", handle);
    GZ[i][min_x] = cache_get_field_content_float(i, "minX", handle);
    GZ[i][min_y] = cache_get_field_content_float(i, "minY", handle);
    GZ[i][flagge_x] = cache_get_field_content_float(i, "flaggeX", handle);
    GZ[i][flagge_y] = cache_get_field_content_float(i, "flaggeY", handle);
    GZ[i][flagge_z] = cache_get_field_content_float(i, "flaggeZ", handle);
    GZ[i][erstellt] = true;
    M_CreateZone(GZ[i][min_x], GZ[i][min_y], GZ[i][max_x], GZ[i][max_y], FrakColor(GZ[i][owner]), string, FrakColor(GZ[i][owner]));
    GZ[i][pickup] = CreatePickup(1314,1,GZ[i][flagge_x],GZ[i][flagge_y],GZ[i][flagge_z],0);
    GZ[i][label] = Create3DTextLabel("{0099FF}[Gangfight]{FFFFFF}\nTippe {0099FF}/angriff{FFFFFF} um das Gebiet anzugreifen.\nTippe {0099FF}/flagge{FFFFFF} um die Flagge zu erobern.", COLOR_WHITE, GZ[i][flagge_x], GZ[i][flagge_y], GZ[i][flagge_z], 20, 0);
    format(string2, sizeof(string2), "%i| Besitzer: '%s'", GZ[i][zid], FrakName(GZ[i][owner]));
    M_ZoneSetTextDraw(i, string2, FrakColor(GZ[i][owner]));
    Counter++;
    }
    return printf("(%d) Gangzone(n) wurde(n) erfolgreich erstellt und geladen.", Counter);
    }


    Mit freundlichen Grüßen
    Grapefruit

  • ocmd:destroyzone(playerid, params[])
    {
    new zone = M_GetPlayerCurrentZone(playerid), query[100];
    if(SpielerInfo[playerid][sEingeloggt] == 0) return SendClientMessage(playerid, COLOR_LIGHTGREY, "[Warnung]: Du musst dich erst einloggen, um den Befehl zu benutzen!");
    if(SpielerInfo[playerid][sAdminlevel] < 3) return SendClientMessage(playerid, COLOR_LIGHTGREY, "[Warnung]: Du bist nicht berechtigt diesen Befehl zu benutzen!");
    if(SpielerInfo[playerid][sAdminduty] == 0) return SendClientMessage(playerid, COLOR_LIGHTGREY, "[Warnung]: Du befindest dich nicht im Administrator Dienst!");
    if(!M_IsPlayerInAnyZone(playerid)) return SendClientMessage(playerid, COLOR_WHITE, "Du bist in keiner Zone!");
    GZ[zone][flagge_x] = 0, GZ[zone][flagge_y] = 0, GZ[zone][flagge_z] = 0,
    GZ[zone][min_x] = 0, GZ[zone][min_y] = 0, GZ[zone][max_x] = 0, GZ[zone][max_y] = 0;
    DisableZone(zone);
    DestroyPickup(GZ[zone][pickup]);
    Delete3DTextLabel(GZ[zone][label]);
    if(GF[zone][started] >= 1) GF[zone][zeit] = GFTime;
    GZ[zone][erstellt] = 0;
    format(query, sizeof(query), "DELETE FROM gangfight WHERE zoneid = %d", zone);
    mysql_pquery(handle, query);
    return SendClientMessage(playerid, COLOR_WHITE, "Du hast die Zone erfolgreich gelöscht.");
    }



    http://fs1.directupload.net/images/150530/gynw566d.png



    http://fs2.directupload.net/images/150530/arffibsb.png

  • Beim Erstellen:
    format(query, sizeof(query), "INSERT INTO gangfight (owner, maxX, maxY, minX, minY, flaggeX, flaggeY, flaggeZ, erstellt) VALUES ('%s', '%f', '%f', '%f', '%f', '%f', '%f', '%f', '%d')",
    GZ[CZ[playerid][zid]][owner], GZ[CZ[playerid][zid]][max_x], GZ[CZ[playerid][zid]][max_y], GZ[CZ[playerid][zid]][min_x], GZ[CZ[playerid][zid]][min_y], GZ[CZ[playerid][zid]][flagge_x], GZ[CZ[playerid][zid]][flagge_y], GZ[CZ[playerid][zid]][flagge_z], CZ[playerid][zid]);
    zu:
    format(query, sizeof(query), "INSERT INTO gangfight (zoneid, owner, maxX, maxY, minX, minY, flaggeX, flaggeY, flaggeZ, erstellt) VALUES ('%s', '%f', '%f', '%f', '%f', '%f', '%f', '%f', '%d')",
    CZ[playerid][zid], GZ[CZ[playerid][zid]][owner], GZ[CZ[playerid][zid]][max_x], GZ[CZ[playerid][zid]][max_y], GZ[CZ[playerid][zid]][min_x], GZ[CZ[playerid][zid]][min_y], GZ[CZ[playerid][zid]][flagge_x], GZ[CZ[playerid][zid]][flagge_y], GZ[CZ[playerid][zid]][flagge_z], 1);
    Außerdem musst du dort "erstellt" auf true setzen.


    Das Laden:
    public LoadGZ()
    {
    new rows, fields, string[128], string2[128], Counter = 0, id;
    cache_get_data(rows, fields);
    for(new i = 0; i < rows; i++)
    {
    id = cache_get_field_content_int(i, "zoneid", handle);
    if(id > -1 && id < sizeof(GZ))
    {
    GZ[id][zid] = id;
    GZ[id][owner] = cache_get_field_content_int(i, "owner", handle);
    GZ[id][max_x] = cache_get_field_content_float(i, "maxX", handle);
    GZ[id][max_y] = cache_get_field_content_float(i, "maxY", handle);
    GZ[id][min_x] = cache_get_field_content_float(i, "minX", handle);
    GZ[id][min_y] = cache_get_field_content_float(i, "minY", handle);
    GZ[id][flagge_x] = cache_get_field_content_float(i, "flaggeX", handle);
    GZ[id][flagge_y] = cache_get_field_content_float(i, "flaggeY", handle);
    GZ[id][flagge_z] = cache_get_field_content_float(i, "flaggeZ", handle);
    GZ[id][erstellt] = true;
    M_CreateZone(GZ[id][min_x], GZ[id][min_y], GZ[id][max_x], GZ[id][max_y], FrakColor(GZ[id][owner]), string, FrakColor(GZ[id][owner]));
    GZ[id][pickup] = CreatePickup(1314,1,GZ[id][flagge_x],GZ[id][flagge_y],GZ[id][flagge_z],0);
    GZ[id][label] = Create3DTextLabel("{0099FF}[Gangfight]{FFFFFF}\nTippe {0099FF}/angriff{FFFFFF} um das Gebiet anzugreifen.\nTippe {0099FF}/flagge{FFFFFF} um die Flagge zu erobern.", COLOR_WHITE, GZ[id][flagge_x], GZ[id][flagge_y], GZ[id][flagge_z], 20, 0);
    format(string2, sizeof(string2), "%i| Besitzer: '%s'", GZ[id][zid], FrakName(GZ[id][owner]));
    M_ZoneSetTextDraw(i, string2, FrakColor(GZ[id][owner]));
    Counter++;
    }
    }
    return printf("(%d) Gangzone(n) wurde(n) erfolgreich erstellt und geladen.", Counter);
    }

  • Jetzt hab ich das problem, wenn ich /angriff mach steht dort "Du stehst nicht an der Flagge dieser Zone!".


    ocmd:angriff(playerid, params[])
    {
    new zone = M_GetPlayerCurrentZone(playerid), string[128];
    if(SpielerInfo[playerid][sEingeloggt] == 0) return SendClientMessage(playerid, COLOR_LIGHTGREY, "[Warnung]: Du musst dich erst einloggen, um den Befehl zu benutzen!");
    if(NoGang(playerid)) return SendClientMessage(playerid, COLOR_WHITE, "Du bist in keiner Gang / Mafia!");
    if(!M_IsPlayerInAnyZone(playerid)) return SendClientMessage(playerid, COLOR_WHITE, "Du bist in keiner Zone!");
    if(GZ[zone][owner] == GetFraktion(playerid)) return SendClientMessage(playerid, COLOR_WHITE, "Du kannst deine eigene Zone nicht angreifen!");
    if(GZ[zone][ruhe] >= 1) return SendClientMessage(playerid, COLOR_WHITE, "Die Zone kann noch nicht angegriffen werden!");
    if(!IsPlayerInRangeOfPoint(playerid, 5, GZ[zone][flagge_x], GZ[zone][flagge_y], GZ[zone][flagge_z])) return SendClientMessage(playerid, COLOR_WHITE, "Du stehst nicht an der Flagge dieser Zone!");
    if(GF[zone][started] == 1) return SendClientMessage(playerid, COLOR_WHITE, "Der Gangfight wurde bereits gestartet!");
    if(ImGF[GF[zone][owner]] >= 1) return SendClientMessage(playerid, COLOR_WHITE, "Diese Gang ist bereits in einem Gangfight!");
    if(GZ[zone][owner] <= 0)
    {
    GZ[zone][owner] = GetFraktion(playerid);
    format(string, sizeof(string), "%d |Besitzer: '%s'", zone, FrakName(GZ[zone][owner]));
    M_ZoneSetTextDraw(zone, string, FrakColor(GetFraktion(playerid)));
    M_ZoneSetColor(zone, FrakColor(GetFraktion(playerid)));
    return SaveGZ_(zone);
    }
    M_ZoneFlashForAll(zone, FrakColor(GetFraktion(playerid)));
    GF[zone][angreifer] = GetFraktion(playerid);
    GF[zone][owner] = GZ[zone][owner], GF[zone][flaggewerobert] = 0;
    GF[zone][started] = 1, GF[zone][punkte_o] = 0, GF[zone][punkte_a] = 0,GF[zone][zeit] = 0;
    ImGF[GetFraktion(playerid)] = 1,ImGF[GF[zone][owner]] = 1;
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i))continue;
    if((GetFraktion(i) != GF[zone][owner]) && (GetFraktion(i) != GF[zone][angreifer])) continue;
    TextDrawShowForPlayer(i, GFBox);
    TextDrawShowForPlayer(i, GFUeber);
    TextDrawShowForPlayer(i, GFInfo);
    }
    TextDrawShowForPlayer(playerid, GFBox);
    TextDrawShowForPlayer(playerid, GFUeber);
    TextDrawShowForPlayer(playerid, GFInfo);
    format(string, sizeof(string), "Punkte (Owner): %d~n~ ~n~Punkte (Angreifer): %d~n~ ~n~Zeit: %d/%d Minute(n)", GF[zone][punkte_o], GF[zone][punkte_a], GF[zone][zeit], GFTime);
    TextDrawSetString(GFInfo, string);
    SendClientMessage(playerid, COLOR_WHITE, "Du hast den Gangfight gestartet!");
    return GF[zone][timer] = SetTimerEx("Gangwar", 888*60, true, "i", zone);
    }

  • if(!IsPlayerInRangeOfPoint(playerid, 5, GZ[zone][flagge_x], GZ[zone][flagge_y], GZ[zone][flagge_z])) return SendClientMessage(playerid, COLOR_WHITE, "Du stehst nicht an der Flagge dieser Zone!");
    zu:
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    printf("zone: %d / %f / %f / %f", zone, GZ[zone][flagge_x], GZ[zone][flagge_y], GZ[zone][flagge_z]);
    printf("Player: %f / %f / %f", x, y, z);
    if(!IsPlayerInRangeOfPoint(playerid, 5, GZ[zone][flagge_x], GZ[zone][flagge_y], GZ[zone][flagge_z])) return SendClientMessage(playerid, COLOR_WHITE, "Du stehst nicht an der Flagge dieser Zone!");


    Was wird so geprintet?

  • Zonen hab ich nur 2


    stock M_GetPlayerCurrentZone(playerid)
    {
    for(new zoneid=0; zoneid<MAX_ZONES; zoneid++)
    {
    if(M_IsValidZone(zoneid))
    {
    if(M_IsPlayerInZone(playerid,zoneid))
    {
    return zoneid;
    }
    }
    }
    return -1;
    }


    stock M_GetPlayerZone(playerid)
    {
    for(new zoneid=0; zoneid<MAX_ZONES; zoneid++)
    {
    if(M_IsValidZone(zoneid))
    {
    if(M_IsPlayerInZone(playerid,zoneid))
    {
    return zoneid;
    }
    }
    }
    return -1;
    }

  • Also das ist die gleiche Funktion jeweils, daher dürfte das keine Probleme machen.
    Entweder die Koordinaten der Flagge werden nicht geladen, oder sie werden irgendwo wieder entfernt, nachdem du sie gesetzt hast.
    Schau da mal nach, warum die alle auf 0 sind. Poste gegebenenfalls den Code, mit dem du die Flaggen aus der Datenbank lädst.

  • Also das hier hab ich unter OnGameModeInit


    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    GetPlayerName(i, PlayerName[i], MAX_PLAYER_NAME);
    }
    for(new i = 0; i < MAX_FRAKTIONEN; i++) ImGF[i] = 0;
    mysql_tquery(handle, "SELECT * FROM `gangfight` ORDER BY id ASC", "LoadGZ");


    public LoadGZ()
    {
    new rows, fields, string[128], string2[128], Counter = 0, id;
    cache_get_data(rows, fields);
    for(new i = 0; i < rows; i++)
    {
    id = cache_get_field_content_int(i, "zoneid", handle);
    if(id > -1 && id < sizeof(GZ))
    {
    GZ[id][zid] = id;
    GZ[id][owner] = cache_get_field_content_int(i, "owner", handle);
    GZ[id][max_x] = cache_get_field_content_float(i, "maxX", handle);
    GZ[id][max_y] = cache_get_field_content_float(i, "maxY", handle);
    GZ[id][min_x] = cache_get_field_content_float(i, "minX", handle);
    GZ[id][min_y] = cache_get_field_content_float(i, "minY", handle);
    GZ[id][flagge_x] = cache_get_field_content_float(i, "flaggeX", handle);
    GZ[id][flagge_y] = cache_get_field_content_float(i, "flaggeY", handle);
    GZ[id][flagge_z] = cache_get_field_content_float(i, "flaggeZ", handle);
    GZ[id][erstellt] = true;
    M_CreateZone(GZ[id][min_x], GZ[id][min_y], GZ[id][max_x], GZ[id][max_y], FrakColor(GZ[id][owner]), string, FrakColor(GZ[id][owner]));
    GZ[id][pickup] = CreatePickup(1314,1,GZ[id][flagge_x],GZ[id][flagge_y],GZ[id][flagge_z],0);
    GZ[id][label] = Create3DTextLabel("{0099FF}[Gangfight]{FFFFFF}\nTippe {0099FF}/angriff{FFFFFF} um das Gebiet anzugreifen.\nTippe {0099FF}/flagge{FFFFFF} um die Flagge zu erobern.", COLOR_WHITE, GZ[id][flagge_x], GZ[id][flagge_y], GZ[id][flagge_z], 20, 0);
    format(string2, sizeof(string2), "%i| Besitzer: '%s'", GZ[id][zid], FrakName(GZ[id][owner]));
    M_ZoneSetTextDraw(i, string2, FrakColor(GZ[id][owner]));
    Counter++;
    }
    }
    return printf("(%d) Gangzone(n) wurde(n) erfolgreich erstellt und geladen.", Counter);
    }



    stock LoadGZ_(zoneid)
    {
    new string[128];
    GZ[zoneid][zid] = zoneid;
    GZ[zoneid][owner] = cache_get_field_content_int(0, "owner", handle);
    GZ[zoneid][max_x] = cache_get_field_content_float(0, "maxX", handle);
    GZ[zoneid][max_y] = cache_get_field_content_float(0, "maxY", handle);
    GZ[zoneid][min_x] = cache_get_field_content_float(0, "minX", handle);
    GZ[zoneid][min_y] = cache_get_field_content_float(0, "minY", handle);
    GZ[zoneid][flagge_x] = cache_get_field_content_float(0, "flaggeX", handle);
    GZ[zoneid][flagge_y] = cache_get_field_content_float(0, "flaggeY", handle);
    GZ[zoneid][flagge_z] = cache_get_field_content_float(0, "flaggeZ", handle);
    GZ[zoneid][erstellt] = cache_get_field_content_int(0, "erstellt", handle);
    M_CreateZone(GZ[zoneid][min_x], GZ[zoneid][min_y], GZ[zoneid][max_x], GZ[zoneid][max_y], FrakColor(GZ[zoneid][owner]), string, FrakColor(GZ[zoneid][owner]));
    GZ[zoneid][pickup] = CreatePickup(1314, 1, GZ[zoneid][flagge_x], GZ[zoneid][flagge_y], GZ[zoneid][flagge_z], 0);
    GZ[zoneid][label] = Create3DTextLabel("{0099FF}[Gangfight]{FFFFFF}\nTippe {0099FF}/angriff{FFFFFF} um das Gebiet anzugreifen.\nTippe {0099FF}/flagge{FFFFFF} um die Flagge zu erobern.", COLOR_WHITE, GZ[zoneid][flagge_x], GZ[zoneid][flagge_y], GZ[zoneid][flagge_z], 20, 0);
    return 1;
    }

  • public Gangwar(zoneid)
    {
    if(GF[zoneid][started] != 1) return KillTimer(GF[zoneid][timer]);
    GF[zoneid][zeit] ++;
    new string[128];
    format(string, sizeof(string), "Punkte (Owner): %d~n~ ~n~Punkte (Angreifer): %d~n~ ~n~Zeit: %d/%d Minute(n)", GF[zoneid][punkte_o], GF[zoneid][punkte_a], GF[zoneid][zeit], GFTime);
    TextDrawSetString(GFInfo, string);
    if(GF[zoneid][punkte_a] >= MaxPoints || GF[zoneid][punkte_o] >= MaxPoints)
    {
    ImGF[GF[zoneid][owner]] = 0, ImGF[GF[zoneid][angreifer]] = 0;
    if(GF[zoneid][punkte_o] > GF[zoneid][punkte_a])format(string, sizeof(string), "Die Gang '%s' hat den Gangfight gegen die Fraktion '%s' mit %i / %i gewonnen.", FrakName(GF[zoneid][owner]), FrakName(GF[zoneid][angreifer]), GF[zoneid][punkte_o],GF[zoneid][punkte_a]);
    else if(GF[zoneid][punkte_a] > GF[zoneid][punkte_o])
    {
    format(string, sizeof(string), "Die Gang '%s' hat den Gangfight gegen die Fraktion '%s' mit %i / %i gewonnen.", FrakName(GF[zoneid][angreifer]), FrakName(GF[zoneid][owner]), GF[zoneid][punkte_a], GF[zoneid][punkte_o]);
    GZ[zoneid][owner] = GF[zoneid][angreifer];
    }
    SendClientMessageToAll(COLOR_WHITE, string);
    GF[zoneid][punkte_o] = 0,GF[zoneid][punkte_a] = 0;
    M_ZoneStopFlashForAll(zoneid);
    GZ[zoneid][ruhe] = GFRuhe;
    GZ[zoneid][ruhetimer] = SetTimerEx("GFRuheTimer", 888*60, true, "i", zoneid);
    format(string, sizeof(string), "%i| Besitzer: '%s'", GZ[zoneid][zid], FrakName(GZ[zoneid][owner]));
    M_ZoneSetTextDraw(zoneid, string, FrakColor(GZ[zoneid][owner]));
    M_ZoneSetColor(zoneid, FrakColor(GZ[zoneid][owner]));
    TextDrawHideForAll(GFUeber),
    TextDrawHideForAll(GFInfo),
    TextDrawHideForAll(GFBox),
    TextDrawHideForAll(GFFlagge);
    return SaveGZ_(zoneid);
    }
    else if(GF[zoneid][zeit] >= GFTime)
    {
    GF[zoneid][started] = 0;
    if(GF[zoneid][punkte_o] > GF[zoneid][punkte_a]) format(string, sizeof(string), "Die Gang '%s' hat den Gangfight gegen die Fraktion '%s' mit %i / %i gewonnen.", FrakName(GF[zoneid][owner]), FrakName(GF[zoneid][angreifer]), GF[zoneid][punkte_o], GF[zoneid][punkte_a]);
    else if(GF[zoneid][punkte_a] > GF[zoneid][punkte_o])
    {
    format(string, sizeof(string), "Die Gang '%s' hat den Gangfight gegen die Fraktion '%s' mit %i / %i gewonnen.", FrakName(GF[zoneid][angreifer]), FrakName(GF[zoneid][owner]), GF[zoneid][punkte_a], GF[zoneid][punkte_o]);
    GZ[zoneid][owner] = GF[zoneid][angreifer];
    }
    SendClientMessageToAll(COLOR_WHITE, string);
    GF[zoneid][punkte_o] = 0,GF[zoneid][punkte_a] = 0;
    M_ZoneStopFlashForAll(zoneid);
    GZ[zoneid][ruhe] = GFRuhe;
    GZ[zoneid][ruhetimer] = SetTimerEx("GFRuheTimer", 888*60, true, "i", zoneid);
    format(string, sizeof(string), "%i| Besitzer: '%s'", GZ[zoneid][zid], FrakName(GZ[zoneid][owner]));
    M_ZoneSetTextDraw(zoneid, string, FrakColor(GZ[zoneid][owner]));
    M_ZoneSetColor(zoneid, FrakColor(GZ[zoneid][owner]));
    TextDrawHideForAll(GFUeber),
    TextDrawHideForAll(GFInfo),
    TextDrawHideForAll(GFBox),
    TextDrawHideForAll(GFFlagge);
    return SaveGZ_(zoneid), LoadGZ_(zoneid);
    }
    return 1;
    }

  • return SaveGZ_(zoneid), LoadGZ_(zoneid);
    Das kannst du so nicht machen. Der Cache existiert zu diesem Zeitpunkt wahrscheinlich gar nicht mehr, daher wird alles auf 0 gesetzt.


    Mach es zu:
    return SaveGZ_(zoneid);


    Dann lösche mal alle Zonen, und erstelle zwei neue, und versuche dann ob das mit der Flagge geht.

  • Naja, 0 ist es nicht mehr. Und wenn du dir die Koordinaten anschaust, dann bist du nicht in der Nähe der Flagge, sondern ca. 50 Meter davon entfernt.
    Geh mal zu den Koordinaten die da stehen, du kannst dich ja näher hinbewegen, kannst ja immer im Log schauen, wo du bist.

  • Jetzt ist es wieder 0, keine ahnung warum er mir gerade was anderes gesagt hat.


    [18:37:32] zone: 1 / 0.000000 / 0.000000 / 0.000000
    [18:37:32] Player: 2038.736083 / 1335.517333 / 10.671875
    [18:37:34] zone: 1 / 0.000000 / 0.000000 / 0.000000
    [18:37:34] Player: 2038.837402 / 1331.456298 / 10.671875
    [18:37:36] zone: 1 / 0.000000 / 0.000000 / 0.000000
    [18:37:36] Player: 2039.821777 / 1329.722534 / 10.671875
    [18:37:37] zone: 1 / 0.000000 / 0.000000 / 0.000000
    [18:37:37] Player: 2039.996093 / 1327.646362 / 10.671875
    [18:37:38] zone: 1 / 0.000000 / 0.000000 / 0.000000
    [18:37:38] Player: 2043.304443 / 1327.771972 / 10.671875
    [18:37:39] zone: 1 / 0.000000 / 0.000000 / 0.000000
    [18:37:39] Player: 2046.486694 / 1327.654785 / 10.671875
    [18:37:41] zone: 1 / 0.000000 / 0.000000 / 0.000000
    [18:37:41] Player: 2050.703613 / 1327.498779 / 10.671875
    [18:37:43] zone: 1 / 0.000000 / 0.000000 / 0.000000
    [18:37:43] Player: 2055.597656 / 1327.318359 / 10.813357
    [18:37:44] zone: 1 / 0.000000 / 0.000000 / 0.000000
    [18:37:44] Player: 2059.304199 / 1327.182250 / 10.803987
    [18:37:45] zone: 1 / 0.000000 / 0.000000 / 0.000000
    [18:37:45] Player: 2062.950439 / 1327.046875 / 10.671875
    [18:37:47] zone: 1 / 0.000000 / 0.000000 / 0.000000
    [18:37:47] Player: 2063.338378 / 1330.786010 / 10.671875
    [18:37:49] zone: 1 / 0.000000 / 0.000000 / 0.000000
    [18:37:49] Player: 2063.490234 / 1334.939208 / 10.671875
    [18:37:50] zone: 1 / 0.000000 / 0.000000 / 0.000000
    [18:37:50] Player: 2066.843261 / 1335.068847 / 10.679658
    [18:37:52] zone: 1 / 0.000000 / 0.000000 / 0.000000
    [18:37:52] Player: 2068.351806 / 1335.013183 / 10.679658
    [18:37:57] zone: 1 / 0.000000 / 0.000000 / 0.000000
    [18:37:57] Player: 2062.895507 / 1340.344482 / 10.671875
    [18:38:03] zone: 1 / 0.000000 / 0.000000 / 0.000000
    [18:38:03] Player: 2052.535156 / 1346.557983 / 10.671875
    [18:38:04] zone: 1 / 0.000000 / 0.000000 / 0.000000
    [18:38:04] Player: 2051.174804 / 1343.610473 / 10.671875

  • Poste bitte mal die Befehle in der Reihenfolge, in der du sie verwendet hast hier, nachdem du alle Zonen entfernt hast.


    Beispiel:
    1.) Server an gemacht
    2.) /createzone 1
    3.) /createzone 2
    4.) /flaggesetzen 1
    5.) ...


    Und dann zu allen Command die du verwendet hast den aktuellen Code.

  • ocmd:createzone(playerid, params[])
    {
    new Float:x, Float:y, Float:z;
    if(SpielerInfo[playerid][sEingeloggt] == 0) return SendClientMessage(playerid, COLOR_LIGHTGREY, "[Warnung]: Du musst dich erst einloggen, um den Befehl zu benutzen!");
    if(SpielerInfo[playerid][sAdminlevel] < 3) return SendClientMessage(playerid, COLOR_LIGHTGREY, "[Warnung]: Du bist nicht berechtigt diesen Befehl zu benutzen!");
    if(SpielerInfo[playerid][sAdminduty] == 0) return SendClientMessage(playerid, COLOR_LIGHTGREY, "[Warnung]: Du befindest dich nicht im Administrator Dienst!");
    if(M_IsPlayerInAnyZone(playerid)) return SendClientMessage(playerid, COLOR_WHITE, "Du kannst hier keine Gangzone erstellen!");
    GetPlayerPos(playerid, x, y, z);
    CZ[playerid][min_x] = x, CZ[playerid][min_y] = y, CZ[playerid][create] = 1;
    SendClientMessage(playerid, COLOR_WHITE, "Bitte überquere jetzt die Zone um die Zone zu erstellen.");
    return SendClientMessage(playerid, COLOR_WHITE, "Wenn du die Zone überquert hast tippe '/createzone2'.");
    }


    ocmd:createzone2(playerid, params[])
    {
    new Float:x, Float:y, Float:z, i,string[64];
    if(SpielerInfo[playerid][sEingeloggt] == 0) return SendClientMessage(playerid, COLOR_LIGHTGREY, "[Warnung]: Du musst dich erst einloggen, um den Befehl zu benutzen!");
    if(SpielerInfo[playerid][sAdminlevel] < 3) return SendClientMessage(playerid, COLOR_LIGHTGREY, "[Warnung]: Du bist nicht berechtigt diesen Befehl zu benutzen!");
    if(SpielerInfo[playerid][sAdminduty] == 0) return SendClientMessage(playerid, COLOR_LIGHTGREY, "[Warnung]: Du befindest dich nicht im Administrator Dienst!");
    if(CZ[playerid][create] != 1) return SendClientMessage(playerid, COLOR_WHITE, "Um eine Gangzone zu erstellen, benutze '/createzone'!");
    GetPlayerPos(playerid, x, y, z);
    CZ[playerid][max_x] = x, CZ[playerid][max_y] = y;
    for(; i<MAX_GZ; i++)
    {
    new zone = M_GetPlayerCurrentZone(playerid);
    if(GZ[i][erstellt] == 1) continue;
    GZ[i][min_x] = CZ[playerid][min_x], GZ[i][min_y] = CZ[playerid][min_y], GZ[i][max_x] = CZ[playerid][max_x], GZ[i][max_y] = CZ[playerid][max_y];
    GZ[i][erstellt] = 1, GZ[i][owner] = 0;
    format(string, sizeof(string), "%i| Besitzer: '%s'", GZ[i][zid], FrakName(GZ[i][owner]));
    M_CreateZone(GZ[i][min_x], GZ[i][min_y], GZ[i][max_x], GZ[i][max_y], FrakColor(GZ[i][owner]), string, FrakColor(GZ[i][owner]));
    GZ[i][zid] = zone, CZ[playerid][zid] = zone;
    break;
    }
    return SendClientMessage(playerid, COLOR_WHITE, "Nun gehe zum Angriffspunkt hin und tippe '/createflag'.");
    }


    ocmd:createflag(playerid, params[])
    {
    new query[500], Float:x, Float:y, Float:z;
    if(SpielerInfo[playerid][sEingeloggt] == 0) return SendClientMessage(playerid, COLOR_LIGHTGREY, "[Warnung]: Du musst dich erst einloggen, um den Befehl zu benutzen!");
    if(SpielerInfo[playerid][sAdminlevel] < 3) return SendClientMessage(playerid, COLOR_LIGHTGREY, "[Warnung]: Du bist nicht berechtigt diesen Befehl zu benutzen!");
    if(SpielerInfo[playerid][sAdminduty] == 0) return SendClientMessage(playerid, COLOR_LIGHTGREY, "[Warnung]: Du befindest dich nicht im Administrator Dienst!");
    if(CZ[playerid][create] != 1) return SendClientMessage(playerid, COLOR_WHITE, "Um eine Gangzone zu erstellen, benutze '/createzone'!");
    CZ[playerid][zid] = M_GetPlayerZone(playerid);
    if(!M_IsPlayerInAnyZone(playerid)) return SendClientMessage(playerid, COLOR_WHITE, "Du bist in keiner Gangzone!");
    if(CZ[playerid][zid] < 0) return SendClientMessage(playerid, COLOR_WHITE, "Du bist in keiner CZ!");
    GetPlayerPos(playerid, x, y, z);
    GZ[CZ[playerid][zid]][flagge_x] = x, GZ[CZ[playerid][zid]][flagge_y] = y, GZ[CZ[playerid][zid]][flagge_z] = z, CZ[playerid][create] = 0;
    GZ[CZ[playerid][zid]][pickup] = CreatePickup(1314, 1, x, y, z, 0);
    GZ[CZ[playerid][zid]][label] = Create3DTextLabel("{0099FF}[Gangfight]{FFFFFF}\nTippe {0099FF}/angriff{FFFFFF} um das Gebiet anzugreifen.\nTippe {0099FF}/flagge{FFFFFF} um die Flagge zu erobern.", COLOR_WHITE, x, y, z, 20, 0);
    format(query, sizeof(query), "INSERT INTO gangfight (zoneid, owner, maxX, maxY, minX, minY, flaggeX, flaggeY, flaggeZ, erstellt) VALUES ('%s', '%f', '%f', '%f', '%f', '%f', '%f', '%f', '%d')",
    CZ[playerid][zid], GZ[CZ[playerid][zid]][owner], GZ[CZ[playerid][zid]][max_x], GZ[CZ[playerid][zid]][max_y], GZ[CZ[playerid][zid]][min_x], GZ[CZ[playerid][zid]][min_y], GZ[CZ[playerid][zid]][flagge_x], GZ[CZ[playerid][zid]][flagge_y], GZ[CZ[playerid][zid]][flagge_z], 1);
    mysql_pquery(handle, query);
    return SendClientMessage(playerid, COLOR_WHITE, "Du hast die Zone erfolgreich erstellt.");
    }

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