Textlabel buggt

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
  • Guten Tag Community! habe ein kleines Problem,
    nach einer Zeit buggt das Textlabel meines Business System.
    Erstmal sieht es normal aus aber dann ändert sich das alles.... Da steht dann anstatt ID 2, ID 80 oder der Preis von 10k auf 20k..
    Brauche eine Lösung..


    Es wurde aber nur eins erstellt..


  • So sollte es gehen:


    UpdateBiz(id)
    {
    new string[300];
    if(bInfo[id][b_pickup])
    {
    DestroyPickup(bInfo[id][b_pickup]);
    }
    if(bInfo[id][b_text])
    {
    Delete3DTextLabel(bInfo[id][b_text]);
    }
    if(!strlen(bInfo[id][b_besitzer]))
    {
    //Kein Besitzer
    bInfo[id][b_pickup] = CreatePickup(1272,1,bInfo[id][bx],bInfo[id][by],bInfo[id][bz],-1);
    format(string,300,"\
    {00E49A}ID: {FEFEFE}%d\n\
    {00E49A}Besitzer: {FEFEFE}-unbekannt-\n\
    {00E49A}Teilhaber: {FEFEFE}-unbekannt-\n\
    {00E49A}Kaufpreis: {FEFEFE}%d\n\
    {00E49A}Beschreibung: {FEFEFE}%s\n\
    {00E49A}Kasse: {FEFEFE}%d\n\n\
    Dieses Business steht zum Verkauf, gebe /buybiz ein um das\n Business zu kaufen.",
    bInfo[id][b_id],bInfo[id][b_preis],bInfo[id][b_bs],bInfo[id][b_kasse]);
    bInfo[id][b_text] = Create3DTextLabel(string,COLOR_BLAU,bInfo[id][bx],bInfo[id][by],bInfo[id][bz],10,0,1);
    Update3DTextLabelText(bInfo[id][b_text],COLOR_BLAU,string);
    }
    else
    {
    //Besitzer
    bInfo[id][b_pickup] = CreatePickup(1272,1,bInfo[id][bx],bInfo[id][by],bInfo[id][bz],-1);
    format(string,300,"\
    {00E49A}ID: {FEFEFE}%d\n\
    {00E49A}Besitzer: {FEFEFE}%s\n\
    {00E49A}Teilhaber: {FEFEFE}%s\n{00E49A}\n\
    {00E49A}Beschreibung: {FEFEFE}%s\n\
    {00E49A}Kasse: {FEFEFE}%d",
    bInfo[id][b_besitzer],bInfo[id][b_teilhaber],bInfo[id][b_id],bInfo[id][b_bs],bInfo[id][b_kasse]);
    Update3DTextLabelText(bInfo[id][b_text],COLOR_BLAU,string);
    }
    return 1;
    }


    //Edit
    Das muss du da oben noch weg machen.
    if(bInfo[id][b_text])
    {
    Delete3DTextLabel(bInfo[id][b_text]);
    }

    yMcjcab.png

    Einmal editiert, zuletzt von tmcyrix ()

  • Geht auch nicht :/


    UpdateBiz(id)
    {
    new string[300];
    if(bInfo[id][b_pickup] != -1)
    {
    DestroyPickup(bInfo[id][b_pickup]);
    bInfo[id][b_pickup] = -1;
    }
    if(bInfo[id][b_text] != Text3D:-1)
    {
    Delete3DTextLabel(bInfo[id][b_text]);
    bInfo[id][b_text] = Text3D:-1;
    }
    if(!strlen(bInfo[id][b_besitzer]))
    {
    //Kein Besitzer
    bInfo[id][b_pickup] = CreatePickup(1272,1,bInfo[id][bx],bInfo[id][by],bInfo[id][bz],-1);
    format(string,300,"\
    {00E49A}ID: {FEFEFE}%d\n\
    {00E49A}Besitzer: {FEFEFE}-unbekannt-\n\
    {00E49A}Teilhaber: {FEFEFE}-unbekannt-\n\
    {00E49A}Kaufpreis: {FEFEFE}%d\n\
    {00E49A}Beschreibung: {FEFEFE}%s\n\
    {00E49A}Kasse: {FEFEFE}%d\n\n\
    Dieses Business steht zum Verkauf, gebe /buybiz ein um das\n Business zu kaufen.",
    bInfo[id][b_id],bInfo[id][b_preis],bInfo[id][b_bs],bInfo[id][b_kasse]);
    bInfo[id][b_text] = Create3DTextLabel(string,COLOR_BLAU,bInfo[id][bx],bInfo[id][by],bInfo[id][bz],10,0,1);
    }
    else
    {
    //Besitzer
    bInfo[id][b_pickup] = CreatePickup(1272,1,bInfo[id][bx],bInfo[id][by],bInfo[id][bz],-1);
    format(string,300,"\
    {00E49A}ID: {FEFEFE}%d\n\
    {00E49A}Besitzer: {FEFEFE}%s\n\
    {00E49A}Teilhaber: {FEFEFE}%s\n{00E49A}\n\
    {00E49A}Beschreibung: {FEFEFE}%s\n\
    {00E49A}Kasse: {FEFEFE}%d",
    bInfo[id][b_besitzer],bInfo[id][b_teilhaber],bInfo[id][b_id],bInfo[id][b_bs],bInfo[id][b_kasse]);
    bInfo[id][b_text] = Create3DTextLabel(string,COLOR_BLAU,bInfo[id][bx],bInfo[id][by],bInfo[id][bz],10,0,1);
    }
    return 1;
    }


    Und zusätzlich bei OnGameModeInit ganz als erstes:
    for(new id=0; id<sizeof(bInfo); id++)
    {
    bInfo[id][b_pickup] = -1;
    bInfo[id][b_text] = Text3D:-1;
    }



    Wenn du genau hinschaust, dann siehst du, dass da zwei Labels an der gleichen Stelle sind. Warum? Weill Labels und Pickups auch eine ID 0 haben. Fragst du nun ab, "if(bInfo[id][b_text])" ist das wie "if(0)" und das ist false, also wird das Label nicht entfernt, sondern es wird ein neues erstellt.

  • b_id war an der falschen Stelle im Format.


    format(string,300,"\
    {00E49A}ID: {FEFEFE}%d\n\
    {00E49A}Besitzer: {FEFEFE}%s\n\
    {00E49A}Teilhaber: {FEFEFE}%s\n{00E49A}\n\
    {00E49A}Beschreibung: {FEFEFE}%s\n\
    {00E49A}Kasse: {FEFEFE}%d",
    bInfo[id][b_id],bInfo[id][b_besitzer],bInfo[id][b_teilhaber],bInfo[id][b_bs],bInfo[id][b_kasse]);


    So müsste es klappen.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Ok, da ist alles korrekt.
    Stimmt denn die ID dir angezeigt wird mittlerweile wenigstens?


    Wenn ja, poste mal den Teil mit dem du die Daten beim Start des Servers lädst, und den Teil mit dem du ein Haus kaufen kannst. Du hast irgendwo bei der Wert Zuweisung einen Fehler gemacht, deshalb zeigt es da so komisch an.
    Wenn nein, poste das trotzdem, dann ist bei der ID auch was falsch, das hoffe ich aber nicht.

  • Jo geschickt. :)


    Ich habe es mir angeschaut, ich finde keinen Fehler mehr, zumindest so beim drüberschauen.
    Kannst du mal einen print vor das Create3DTextLabel im UpdateBiz setzen?
    print(string);
    Und dann posten was im Log steht.


    Und dazu dann nochmal ein Bild des Hauses im Spiel posten?


    Wenn möglich, kannst du bitte den mysql_log mit LOG_ALL einschalten und posten was im Log steht, wenn du die Häuser lädst?

  • So das mit dem LOG_ALL habe ich leider nicht verstanden.
    Nun gut, ich habe es geprintet und paar screen gemacht..


    So wenn ich es erstelle passiert nix (Alles normal)..
    Außer die ID diese bleibt auf 0 obwohl dort 5,6 stehen sollte.


    Wenn ich es kaufe verbuggt das Label, und dort wird erst die ID gesetzt.


    So und das steht alles im Server Log:

  • Wegen der ID 0 immer:
    ocmd:cbiz(playerid,params[])
    {
    if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid,COLOR_GRAU,"** Du bist kein Admin! **");
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    new id=FreeBizID();
    strmid(bInfo[id][b_besitzer], "",0, MAX_PLAYER_NAME, MAX_PLAYER_NAME);
    strmid(bInfo[id][b_teilhaber],"",0, MAX_PLAYER_NAME, MAX_PLAYER_NAME);
    bInfo[id][b_preis] = 10000;
    bInfo[id][bx] = x;
    bInfo[id][by] = y;
    bInfo[id][bz] = z;
    bInfo[id][ix] = 0.0;
    bInfo[id][iy] = 0.0;
    bInfo[id][iz] = 0.0;
    bInfo[id][b_kasse] = 0;
    bInfo[id][b_interior] = 0;
    bInfo[id][b_id] = id; //Das hier hat gefehlt
    UpdateBiz(id);

    new query[256];
    format(query,256,"INSERT INTO business (b_x,b_y,b_z,i_x,i_y,i_z,interior,kaufpreis) VALUES ('%f','%f','%f','0.0','0.0','0.0','0','10000')",x,y,z);
    mysql_function_query(dbhandle,query,true, "CreateBiz","i",id);
    return 1;
    }


    Wegen der Beschreibung:
    else
    {
    //Besitzer
    bInfo[id][b_pickup] = CreatePickup(1272,1,bInfo[id][bx],bInfo[id][by],bInfo[id][bz],-1);
    format(string,300,"\
    {00E49A}ID: {FEFEFE}%d\n\
    {00E49A}Besitzer: {FEFEFE}%s\n\
    {00E49A}Teilhaber: {FEFEFE}%s\n{00E49A}\n\
    {00E49A}Beschreibung: {FEFEFE}%s\n\
    {00E49A}Kasse: {FEFEFE}%d",
    bInfo[id][b_id],bInfo[id][b_besitzer],bInfo[id][b_teilhaber],bInfo[id][b_bs],bInfo[id][b_kasse]); //Hier war ein Parameter zu viel.
    bInfo[id][b_text] = Create3DTextLabel(string,COLOR_BLAU,bInfo[id][bx],bInfo[id][by],bInfo[id][bz],10,0,1);
    }


    Sind sonst noch Fehler vorhanden?