Problem mit den Gangzone Farben

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, ich habe ein Problem mit meinen Gangzone Farben.
    Undzwar habe ich vor Ingame den Besitzer einer Gebietszone zu setzen bzw zuzuweisen.
    Mein Problem ist jetzt aber, sobald ich das Ingame mache kommen Komische Farben raus.
    Sobald ich aber den Server neustarte ist die Richtige farbe da..


    So sollte es bsp ausshehen:

    Und so sieht es aus:


    Mein Command:
    ocmd:SetOwner(playerid,params[])
    {
    new Fraktion,string[123],ftext[60],query[500];
    if(sInfo[playerid][pAdmin] < 4) return SendClientMessage(playerid,CMD_COLOR,"***INFO: Das ist ein Adminbefehl, du bist kein Admin.");
    if(sscanf(params,"i",Fraktion)) return SendClientMessage(playerid,CMD_COLOR,"Bentuze: /SetOwner[Fraktions ID]");
    if(Fraktion == 0 || Fraktion == 1 || Fraktion == 2)
    {
    for (new GangZoneLoad = 1; GangZoneLoad < GFCount+1; GangZoneLoad++)
    {
    if(IsPlayerInArea(playerid,GFInfo[GangZoneLoad][xMin],GFInfo[GangZoneLoad][yMin],GFInfo[GangZoneLoad][xMax],GFInfo[GangZoneLoad][yMax]))
    {
    GFInfo[GangZoneLoad][OwnerID] = Fraktion;
    GangZoneHideForAll(GFInfo[GangZoneLoad][gID]);
    GFInfo[GangZoneLoad][gID] = GangZoneCreate(GFInfo[GangZoneLoad][xMin],GFInfo[GangZoneLoad][yMin],GFInfo[GangZoneLoad][xMax],GFInfo[GangZoneLoad][yMax]);
    mysql_format(Data,query,sizeof(query),"UPDATE gangfight SET Ownerid='%d' WHERE id='%d'",Fraktion,GangZoneLoad);
    printf("%s",query);
    mysql_tquery(Data, query, "", "");
    mysql_function_query(Data, "SELECT * FROM gangfight", true, "MySQLCreateGF","d",0);
    Delete3DTextLabel(GFInfo[GangZoneLoad][Owner]);
    format(string,sizeof(string),"Fraktions Gebiet gesetzt. Das Gebiet gehört nun der Fraktion %s.",GetFactionName(GFInfo[GangZoneLoad][OwnerID]));
    SendClientMessage(playerid,COLOR_GREEN,string);
    SetPVarInt(playerid, "NichtInGFZone", 1);
    break;
    }
    else SetPVarInt(playerid, "NichtInGFZone",1337);
    }
    if(GetPVarInt(playerid, "NichtInGFZone") == 1337) return SendClientMessage(playerid, -1, "Du bist in keiner Gangzone");
    }
    else SendClientMessage(playerid,-1, "Nur von Fraktion 0-3 ist eine gültige Eingabe!");
    return 1;
    }
    Mein Verdacht ist, das die Farben sich irgendwie vermissen.
    Jedoch hilft nichtmal das Zerstören des Gebiets sowie neu erstellen..
    Ich hoffe ihr könnt mir helfen.

  • Hier lass ich die Werte auslesen aus der DB
    public OnGFLoad(id)
    {
    new rows, fields,string[64],tmp[128];
    cache_get_data(rows, fields);
    GFInfo[id][xMin] = cache_get_row_float(0,0);
    GFInfo[id][xMax] = cache_get_row_float(0,2);
    GFInfo[id][yMax] = cache_get_row_float(0,3);
    GFInfo[id][yMin] = cache_get_row_float(0,1);
    GFInfo[id][ctfX] = cache_get_row_float(0,4);
    GFInfo[id][ctfY] = cache_get_row_float(0,5);
    GFInfo[id][ctfZ] = cache_get_row_float(0,6);
    GFInfo[id][OwnerID] = cache_get_row_int(0,7);
    GFInfo[id][Time] = cache_get_row_int(0,8);
    GFInfo[id][GfCooldown] = cache_get_row_int(0,9);
    GFInfo[id][KillsOwner] = cache_get_row_int(0,10);
    GFInfo[id][KillsAttacker] = cache_get_row_int(0,11);
    GFInfo[id][Attacker] = cache_get_row_int(0,12);
    GFInfo[id][gActive] = cache_get_row_int(0,15);
    GFInfo[id][gID] = cache_get_row_int(0,13);
    cache_get_row(0,14, tmp);format(GFInfo[id][Name], 128, "%s", tmp);
    new string2[128];
    printf("%d | %s(%d)",id,GetFactionName(GFInfo[id][OwnerID]),GFInfo[id][OwnerID]);
    //printf("%d\n - %f - %f - %f - %f - OnGFLoad(%d)\nBesitzer: %s\nFarbe:%s\n%f - %f - %f ",GFInfo[id][gID],GFInfo[id][xMin],GFInfo[id][xMax],GFInfo[id][yMax],GFInfo[id][yMin],id,string,gz,GFInfo[id][ctfX],GFInfo[id][ctfY],GFInfo[id][ctfZ]);
    GFInfo[id][gID] = GangZoneCreate(GFInfo[id][xMin],GFInfo[id][yMin],GFInfo[id][xMax],GFInfo[id][yMax]);
    GFInfo[id][gPick] = CreatePickup(1314,1,GFInfo[id][ctfX],GFInfo[id][ctfY],GFInfo[id][ctfZ],0);
    format(string2,sizeof(string2),"Gangfight:\nOwner:%s\nBenutze '/ctf' zum einnehmen!",GetFactionName(GFInfo[id][OwnerID]));
    printf("%s",string2);
    GFInfo[id][Owner] = Create3DTextLabel(string2,0x008080FF,GFInfo[id][ctfX],GFInfo[id][ctfY],GFInfo[id][ctfZ],10.0,0);
    //GFInfo[id][GZ] = GangZoneCreate(119.084594, -214.033096, 343.084594, -62.033096);
    return 1;
    }


    Und hier die Farben deklarieren:
    stock GetZoneColorOfFaction(Faction){
    if(Faction == 0) return 0xFFFFFFAA;//Deaktiviertes Gebiet
    else if(Faction == 2) return 0xFF9900AA; // Cali kartell
    else if(Faction == 1) return 0x0000E196; // Triaden
    else return Farbe_Weiss;

  • Wie zeigst du dem Spieler die Gangzonen an? Das fehlt in dem Code. Hast du das bei OnPlayerConnect? Poste dazu bitte auch den Code.


    Ich habe das bei OnPlayerSpawn:
    public OnPlayerSpawn(playerid)
    {
    for (new GangZoneLoad = 1; GangZoneLoad < GFCount+1; GangZoneLoad++)
    {
    GangZoneShowForPlayer(playerid,GFInfo[GangZoneLoad][gID],GetZoneColorOfFaction(GFInfo[GangZoneLoad][OwnerID]));
    }
    return 1;
    }


    Tut mir leid das du mir alles aus der Nase ziehen musst bin bisschen übermüdet.

  • Versuche es so:
    ocmd:SetOwner(playerid,params[])
    {
    new Fraktion,string[123],ftext[60],query[500];
    if(sInfo[playerid][pAdmin] < 4) return SendClientMessage(playerid,CMD_COLOR,"***INFO: Das ist ein Adminbefehl, du bist kein Admin.");
    if(sscanf(params,"i",Fraktion)) return SendClientMessage(playerid,CMD_COLOR,"Bentuze: /SetOwner[Fraktions ID]");
    if(Fraktion == 0 || Fraktion == 1 || Fraktion == 2)
    {
    for (new GangZoneLoad = 1; GangZoneLoad < GFCount+1; GangZoneLoad++)
    {
    if(IsPlayerInArea(playerid,GFInfo[GangZoneLoad][xMin],GFInfo[GangZoneLoad][yMin],GFInfo[GangZoneLoad][xMax],GFInfo[GangZoneLoad][yMax]))
    {
    GFInfo[GangZoneLoad][OwnerID] = Fraktion;
    GangZoneHideForAll(GFInfo[GangZoneLoad][gID]);
    GangZoneShowForAll(GFInfo[GangZoneLoad][gID], GetZoneColorOfFaction(GFInfo[GangZoneLoad][OwnerID]));
    mysql_format(Data,query,sizeof(query),"UPDATE gangfight SET Ownerid='%d' WHERE id='%d'",Fraktion,GangZoneLoad);
    printf("%s",query);
    mysql_tquery(Data, query, "", "");
    mysql_function_query(Data, "SELECT * FROM gangfight", true, "MySQLCreateGF","d",0);
    Delete3DTextLabel(GFInfo[GangZoneLoad][Owner]);
    format(string,sizeof(string),"Fraktions Gebiet gesetzt. Das Gebiet gehört nun der Fraktion %s.",GetFactionName(GFInfo[GangZoneLoad][OwnerID]));
    SendClientMessage(playerid,COLOR_GREEN,string);
    SetPVarInt(playerid, "NichtInGFZone", 1);
    break;
    }
    else SetPVarInt(playerid, "NichtInGFZone",1337);
    }
    if(GetPVarInt(playerid, "NichtInGFZone") == 1337) return SendClientMessage(playerid, -1, "Du bist in keiner Gangzone");
    }
    else SendClientMessage(playerid,-1, "Nur von Fraktion 0-3 ist eine gültige Eingabe!");
    return 1;
    }

  • public MySQLCreateGF()
    {
    new rows, fields;
    cache_get_data(rows, fields);
    GFCount = rows;
    printf("Es müssen %d Gangfight Gebiete geladen werden!",GFCount);
    for (new GangZoneLoad = 1; GangZoneLoad < GFCount+1; GangZoneLoad++){
    ToLoadGangfight(GangZoneLoad);
    }
    print("SERVER START:: Gangfight Gebiete geladen!");
    return 1;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • stock ToLoadGangfight(id)
    {
    new query[256];
    mysql_format(Data, query, 128, "SELECT * FROM gangfight WHERE `id` = '%d'", id);
    mysql_function_query(Data, query, true, "OnGFLoad", "d", id);
    return 1;
    }
    Dazu dann:
    public OnGFLoad(id)
    {
    new rows, fields,string[64],tmp[128];
    cache_get_data(rows, fields);
    GFInfo[id][xMin] = cache_get_row_float(0,0);
    GFInfo[id][xMax] = cache_get_row_float(0,2);
    GFInfo[id][yMax] = cache_get_row_float(0,3);
    GFInfo[id][yMin] = cache_get_row_float(0,1);
    GFInfo[id][ctfX] = cache_get_row_float(0,4);
    GFInfo[id][ctfY] = cache_get_row_float(0,5);
    GFInfo[id][ctfZ] = cache_get_row_float(0,6);
    GFInfo[id][OwnerID] = cache_get_row_int(0,7);
    GFInfo[id][Time] = cache_get_row_int(0,8);
    GFInfo[id][GfCooldown] = cache_get_row_int(0,9);
    GFInfo[id][KillsOwner] = cache_get_row_int(0,10);
    GFInfo[id][KillsAttacker] = cache_get_row_int(0,11);
    GFInfo[id][Attacker] = cache_get_row_int(0,12);
    GFInfo[id][gActive] = cache_get_row_int(0,15);
    GFInfo[id][gID] = cache_get_row_int(0,13);
    cache_get_row(0,14, tmp);format(GFInfo[id][Name], 128, "%s", tmp);
    new string2[128];
    printf("%d | %s(%d)",id,GetFactionName(GFInfo[id][OwnerID]),GFInfo[id][OwnerID]);
    //printf("%d\n - %f - %f - %f - %f - OnGFLoad(%d)\nBesitzer: %s\nFarbe:%s\n%f - %f - %f ",GFInfo[id][gID],GFInfo[id][xMin],GFInfo[id][xMax],GFInfo[id][yMax],GFInfo[id][yMin],id,string,gz,GFInfo[id][ctfX],GFInfo[id][ctfY],GFInfo[id][ctfZ]);
    GFInfo[id][gID] = GangZoneCreate(GFInfo[id][xMin],GFInfo[id][yMin],GFInfo[id][xMax],GFInfo[id][yMax]);
    GFInfo[id][gPick] = CreatePickup(1314,1,GFInfo[id][ctfX],GFInfo[id][ctfY],GFInfo[id][ctfZ],0);
    format(string2,sizeof(string2),"Gangfight:\nOwner:%s\nBenutze '/ctf' zum einnehmen!",GetFactionName(GFInfo[id][OwnerID]));
    printf("%s",string2);
    GFInfo[id][Owner] = Create3DTextLabel(string2,0x008080FF,GFInfo[id][ctfX],GFInfo[id][ctfY],GFInfo[id][ctfZ],10.0,0);
    //GFInfo[id][GZ] = GangZoneCreate(119.084594, -214.033096, 343.084594, -62.033096);
    return 1;
    }
    Das wars das sind jetzt insgesammt alle Funktionen die zum Laden Fungieren.

  • Ok, du lädst da alle wieder neu.


    Versuche es so:
    ocmd:SetOwner(playerid,params[])
    {
    new Fraktion,string[123],ftext[60],query[500];
    if(sInfo[playerid][pAdmin] < 4) return SendClientMessage(playerid,CMD_COLOR,"***INFO: Das ist ein Adminbefehl, du bist kein Admin.");
    if(sscanf(params,"i",Fraktion)) return SendClientMessage(playerid,CMD_COLOR,"Bentuze: /SetOwner[Fraktions ID]");
    if(Fraktion == 0 || Fraktion == 1 || Fraktion == 2)
    {
    for (new GangZoneLoad = 1; GangZoneLoad < GFCount+1; GangZoneLoad++)
    {
    if(IsPlayerInArea(playerid,GFInfo[GangZoneLoad][xMin],GFInfo[GangZoneLoad][yMin],GFInfo[GangZoneLoad][xMax],GFInfo[GangZoneLoad][yMax]))
    {
    GFInfo[GangZoneLoad][OwnerID] = Fraktion;
    GangZoneHideForAll(GFInfo[GangZoneLoad][gID]);
    GangZoneShowForAll(GFInfo[GangZoneLoad][gID], GetZoneColorOfFaction(GFInfo[GangZoneLoad][OwnerID]));
    mysql_format(Data,query,sizeof(query),"UPDATE gangfight SET Ownerid='%d' WHERE id='%d'",Fraktion,GangZoneLoad);
    printf("%s",query);
    mysql_tquery(Data, query, "", "");
    format(string,sizeof(string),"Gangfight:\nOwner:%s\nBenutze '/ctf' zum einnehmen!",GetFactionName(GFInfo[id][OwnerID]));
    Update3DTextLabelText(GFInfo[id][Owner], 0x008080FF, string);
    format(string,sizeof(string),"Fraktions Gebiet gesetzt. Das Gebiet gehört nun der Fraktion %s.",GetFactionName(GFInfo[GangZoneLoad][OwnerID]));
    SendClientMessage(playerid,COLOR_GREEN,string);
    SetPVarInt(playerid, "NichtInGFZone", 1);
    break;
    }
    else SetPVarInt(playerid, "NichtInGFZone",1337);
    }
    if(GetPVarInt(playerid, "NichtInGFZone") == 1337) return SendClientMessage(playerid, -1, "Du bist in keiner Gangzone");
    }
    else SendClientMessage(playerid,-1, "Nur von Fraktion 0-3 ist eine gültige Eingabe!");
    return 1;
    }

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()


  • Danke es funktioniert.
    Könntest du mir bitte verraten woran jetzt der Fehler lag?