Create3DTextLabel wird nicht erstellt, aber das Pickup schon

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 ihr lieben,



    ich hab ein autohaus system und das problem ist, dass das Create3DTextLabel nicht erstellt wird... das Pickup jedoch schon..



    for(new i = 0; i<Max_Businesses; i++)
    {
    new string[200];
    format(string, sizeof(string), "%s\nBesitzer: %s\nInteilhaber: %s", AutohausInfo[i][aa_Name], AutohausInfo[i][aa_Besitzer], AutohausInfo[i][aa_Inteilhaber]);
    print(string);
    Create3DTextLabel(string, Weiss, AutohausInfo[i][Pos_x], AutohausInfo[i][Pos_y], AutohausInfo[i][Pos_z]+0.5,5,0,0);
    }


    Was ist das problem? Jedes andere Label wird erstellt.. nur dieses nicht..

    Mit freundlichen Grüßen,
    Dachdecker

  • Wie hast du denn weiß definiert?


    5 als DrawDistance ist bisschen wenig xD


    Und deine Virtuelle Welt ist auch sicher 0? :)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • 0xFAFAFA00

    Das hier ist der Fehler :)


    00 am Ende steht für den Alpha Kanal, also für die Transparenz. 00 bedeutet, dass es total transparent ist..deshalb siehst du es nicht, so transparent ist es xD


    Also einfach mal auf FF z.B. ändern :)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Also, wenn du sicher bist, dass er jetzt die richtige Farbe verwendet und die Positionen richtig sind und er dir einen vernünftigen String gibt und du sicher an dieser Position bist...dann muss es gehen ^^


    Wenn es nicht geht, ist einer der oben stehen Punkte nicht erfüllt oder du hast schon ein Limit von 1024 3DTextLabels überschritten!


    Dann zeig mal wie du es lädst und speicherst, ohne Code können wir dir schlecht helfen :D

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Laden des Autohauses:



    stock AutohauserLaden()
    {
    new erstellteAutohauser, path[64];

    for(new i = 0; i<Max_Businesses; i++)
    {
    format(path, sizeof(path),"/Businesses/%d.ini",i);
    if(!fexist(path)) continue;



    AutohausInfo[i][ah_ID] = dini_Int(path, "aa_ID");
    strmid(AutohausInfo[i][aa_Name], dini_Get(path, "aaName"), false, strlen(dini_Get(path, "aaName")), 40);
    strmid(AutohausInfo[i][aa_Besitzer], dini_Get(path, "aBesitzer"), false, strlen(dini_Get(path, "aBesitzer")), MAX_PLAYER_NAME);
    strmid(AutohausInfo[i][aa_Inteilhaber], dini_Get(path, "aInteilhaber"), false, strlen(dini_Get(path, "aInteilhaber")), MAX_PLAYER_NAME);
    AutohausInfo[i][Pos_x] = floatstr(dini_Get(path, "aa_x"));
    AutohausInfo[i][Pos_y] = floatstr(dini_Get(path, "aa_y"));
    AutohausInfo[i][Pos_z] = floatstr(dini_Get(path, "aa_z"));
    printf("AutohausID %d geladen. Inhaber: %s, Inteilhaber: %s, Pos_x; %f, Pos_y; %f, Pos_z; %f", i,AutohausInfo[i][aa_Besitzer], AutohausInfo[i][aa_Inteilhaber],AutohausInfo[i][Pos_x],AutohausInfo[i][Pos_y],AutohausInfo[i][Pos_z]);



    AutohausInfo[i][ah_ID] = CreatePickup(1272, 1, AutohausInfo[i][Pos_x], AutohausInfo[i][Pos_y], AutohausInfo[i][Pos_z] ,0);



    erstellteAutohauser++;
    if(erstellteAutohauser == Max_Businesses) return print("Es können keine weiteren Businesses geladen werden.");
    }
    return 1;
    }


    Speichern des Autohauses:



    forward SpeichereAutohauser();
    public SpeichereAutohauser()
    {
    new path[64];

    for(new i = 0; i<Max_Businesses; i++)
    {
    format(path, sizeof(path), "/Businesses/%d.ini", i);

    dini_IntSet(path, "aa_ID", AutohausInfo[i][ah_ID]);
    dini_Set(path, "aaName", AutohausInfo[i][aa_Name]);
    dini_Set(path, "Besitzer", AutohausInfo[i][aa_Besitzer]);
    dini_Set(path, "Inteilhaber", AutohausInfo[i][aa_Inteilhaber]);
    }
    return 1;
    }

    Mit freundlichen Grüßen,
    Dachdecker

  • Also ich bin so gar kein Freund von dini :D


    Deshalb würde ich dir persönlich zu SQLite raten oder zu einem schnelleren File-System :)


    Aber naja...hast du dir das mal beim Speichern geprintet oder in die Files geschaut, steht da der richtige Name drinnen?


    strmid(AutohausInfo[i][aa_Name], dini_Get(path, "aaName"), false, strlen(dini_Get(path, "aaName")), 40);


    Diese Zeile ist übrigens eine Katastrophe xD


    Also strmid ist eigentlich so garnicht dafür gedacht.


    Verwende mal format:


    format(AutohausInfo[i][aa_Name],40, dini_Get(path, "aaName"));

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • So klappt es..


    aber aus Gründen welche ich grad nicht verstehe.. haben die businesses plötzlich die id 25, 26, 27 statt 0, 1, 2.... und es wird nur eins erstellt (ingme) obwohl 3 Ini datein bestehen...

    Mit freundlichen Grüßen,
    Dachdecker

  • Es macht wenig Sinn, die Pickupids als AutohausID zu verwenden ^^


    Da diese von anderen Pickups abhängig sind und sich immer ändern xD


    Dann printe...doch mal, was die Datein so ausspucken und ob alles richtig geladen wird :)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Positionen / Daten von 1 und 2 sind irgendwie identisch? ^^



    mach ich doch nicht oder?

    AutohausInfo[i][ah_ID] = CreatePickup


    dini_IntSet(path, "aa_ID", AutohausInfo[i][ah_ID]);


    Daraus folgt aa_ID = eine Pickupid ^^

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Positionen / Daten von 1 und 2 sind irgendwie identisch?

    eig sollte das net so sein



    AutohausInfo[i][ah_ID] = CreatePickup

    hab ich geändert



    Kann man das so machen oder gibt es eine bessere methode?



    forward MotorradShopKasse();
    public MotorradShopKasse()
    {
    for(new i = 0; i<Max_Businesses; i++)
    {
    new string[40];
    format(string, sizeof(string), "Motorrad-Shop");
    if(!strcmp(AutohausInfo[i][aa_Name], string, true, 13))
    {
    AutohausInfo[i][aa_Kasse] += 100;
    SpeichereAutohauser();
    AutohauserLaden();
    printf("Kasse BusinessID: %d aufgefüllt um 100$", AutohausInfo[i][ah_ID]);
    }
    }
    return 1;
    }

    Mit freundlichen Grüßen,
    Dachdecker

    Einmal editiert, zuletzt von Dachdecker ()

  • Beitrag von .Toby ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • hab ein update stock hinbekommen :D




    Indem du beim Auffüllen noch das Label updatest..
    wiki.sa-mp.com/wiki/Update3DTextLabelText


    danke für den Tipp



    Problem:



    Wenn ich ein Autohaus erstellen will, dann erstellt er das autohaus 4 mal.. wo ist hier der Fehler?



    ocmd:aherstellen(playerid, params[])
    {
    new erstellteAutohauser, aBesitz[MAX_PLAYER_NAME], aInteil[MAX_PLAYER_NAME], aName[40], gGekauftJaNein;
    if(sscanf(params, "sssd",aBesitz, aInteil, aName,gGekauftJaNein)) return SendClientMessage(playerid, Weiss, "/aherstellen [Besitzer][Inteilhaber][AutohausName[Siehe Vorgaben]][0 = Zukaufen 1= Verkauft]");
    for(new i = 0; i<Max_Autohauser; i++)
    {
    new Float:aa_x, Float:aa_y, Float:aa_z;
    GetPlayerPos(playerid, aa_x, aa_y, aa_z);
    AutohausInfo[i][ah_ID] = i;
    AutohausInfo[i][aa_Name] = aName;
    AutohausInfo[i][aa_Besitzer] = aBesitz;
    AutohausInfo[i][aa_Inteilhaber] = aInteil;
    AutohausInfo[i][Pos_x] = aa_x;
    AutohausInfo[i][Pos_y] = aa_y;
    AutohausInfo[i][Pos_z] = aa_z;
    AutohausInfo[i][GekauftJaNein] = gGekauftJaNein;



    new path[64];
    format(path, sizeof(path), "/Autohauser/%d.ini", i);
    if(!fexist(path)) continue;
    dini_Create(path);
    dini_IntSet(path, "aa_ID", i);
    dini_Set(path, "aaName", aName);
    dini_Set(path, "Besitzer", aBesitz);
    dini_Set(path, "Inteilhaber", aInteil);
    dini_IntSet(path, "Kasse", 0);
    dini_FloatSet(path, "aa_x", aa_x);
    dini_FloatSet(path, "aa_y", aa_y);
    dini_FloatSet(path, "aa_z", aa_z);
    dini_IntSet(path, "GekauftJaNein", gGekauftJaNein);
    SpeichereAutohauser();
    new string[200];
    format(string, sizeof(string), "%s\nBesitzer: %s\nInteilhaber: %s\nKasse: %d$", AutohausInfo[i][aa_Name], AutohausInfo[i][aa_Besitzer], AutohausInfo[i][aa_Inteilhaber],AutohausInfo[i][aa_Kasse]);
    print(string);
    Label[i] = Create3DTextLabel(string, Weiss, AutohausInfo[i][Pos_x], AutohausInfo[i][Pos_y], AutohausInfo[i][Pos_z]+0.5,5,0,0);
    erstellteAutohauser++;
    }
    return 1;
    }

    Mit freundlichen Grüßen,
    Dachdecker

    Einmal editiert, zuletzt von Dachdecker ()