1 Probleme (Textdraw anzeige)

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 leute,


    Ich komme direkt zum Punkt: Ich habe ein Problem undzwar , ich habe mir eine Box gemacht wo direkt nach einen Timer(5 sekunden) aus der Datenbank gelesen werden soll, welchen Skin derjenige Spieler hat , und dieser Skin soll halt in der Box erscheinen! Aber jeddoch kommt nur ID 0 immer also CJ... Hier der Code:



    new PlayerText:Textdraw7[MAX_PLAYERS];


    Textdraw7[playerid] = CreatePlayerTextDraw(playerid, 526.000000, 292.444458, "LD_SPAC:white");
    PlayerTextDrawLetterSize(playerid, Textdraw7[playerid], 0.000000, 0.000000);
    PlayerTextDrawTextSize(playerid, Textdraw7[playerid], 104.500000, 131.911102);
    PlayerTextDrawAlignment(playerid, Textdraw7[playerid], 1);
    PlayerTextDrawColor(playerid, Textdraw7[playerid], -1);
    PlayerTextDrawSetShadow(playerid, Textdraw7[playerid], 0);
    PlayerTextDrawSetOutline(playerid, Textdraw7[playerid], 0);
    PlayerTextDrawBackgroundColor(playerid, Textdraw7[playerid], 255);
    PlayerTextDrawFont(playerid, Textdraw7[playerid], TEXT_DRAW_FONT_MODEL_PREVIEW);


    und dann beim Timer:
    public loginregistertextdraws(playerid)
    {
    TextDrawShowForPlayer(playerid, Textdraw0);
    TextDrawShowForPlayer(playerid, Textdraw1);
    TextDrawShowForPlayer(playerid, Textdraw2);
    TextDrawShowForPlayer(playerid, Textdraw3);
    TextDrawShowForPlayer(playerid, Textdraw4);
    TextDrawShowForPlayer(playerid, Textdraw5);
    TextDrawShowForPlayer(playerid, Textdraw6);
    PlayerTextDrawShow(playerid, Textdraw7[playerid]);//hier ist der
    PlayerTextDrawSetPreviewModel(playerid,Textdraw7[playerid], GetPlayerSkin(playerid));
    print("Anfangstimer für Login/RegisterTextDraw's wurde beendet!(3 Sekunden)");
    return 1;
    }
    //Ist halt mit meinen Login register textdraws zsm.

    Ich bitte um hilfe !!!


    //EDIT: KM/H ANZEIGE WURDE GEFIXXT

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

    Einmal editiert, zuletzt von [GeD]Max ()

  • Erst
    PlayerTextDrawSetPreviewModel dann PlayerTextDrawShow


    Beim zweiten PlayerTextdraws, dh für jeden Player eigenes Textdraw verwenden


    habe ich gemacht , aber es bleibt immernoch der CJ Skin da :/



    //EDIT:


    Eh lol, grade eben hatte ich einen Mechanicker Skin ? Also wurde angezeigt , aber eigentlich ollte ID 299 angezeigt werden.

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

  • Ja dann musst du die dahin schreiben wo GetPlayerSkin steht.


    gemacht und es kommt wieder der CJSkin



    PlayerTextDrawSetPreviewModel(playerid,Textdraw7[playerid], SpielerInfo[playerid][pSkin]);


    oder soll ich so?


    new skinID;
    skinID = SpielerInfo[playerid][pSkin];
    PlayerTextDrawSetPreviewModel(playerid,Textdraw7[playerid], skinID);


    EDIT: Beides geht nicht. Ich geh erstmal schlafen ..

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

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

  • erledigt, da steht Skin 0


    //EDIT:


    Habe jetzt PlayerTextDrawSetPreviewModel(playerid,Textdraw7[playerid], SpielerInfo[playerid][pSkin]); zu meinen Textdraws hinzugefügt, und es geht, aber wenn ich jetzt über der Datenbank die SKIN ID 55 mache , dann gehts wieder nicht ... nur wenn ich dann mal reloge(und es dauert so länger als normal...) ... -.-

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

    2 Mal editiert, zuletzt von [GeD]Max ()

  • Dann bist du wohl noch nicht eingeloggt, wenn immer noch die 0 kommt.
    Falls doch, erkläre bitte nochmal die einzelnen Schritte die du machst, poste den aktuellen Code und beschreibe was passiert.


    ok , ich versuchs...


    1 -> Als erstes wird bei mir ein Ladebildschrim geladen ...
    2 -> Solange der Ladebildschrim noch an ist(5 sekunden) , solange laden die Register /Login Textdraws und somit auch die Skinbox
    3 -> Und falls man schon eingeloggt ist , soll halt die SkinID aus der Datenbank abgelesen werden und hinterher in die Box eingefügt werden.
    4 -> Dann wenn der Spieler sich erfolgreich eingeloggt hat , sollen halt die ganzen Textdraws verschwinden..


    hier die Codes:



    //die ganzen new's
    new Text:Textdraw0;
    new Text:Textdraw1;
    new Text:Textdraw2;
    new Text:Textdraw3;
    new Text:Textdraw4;
    new Text:Textdraw5;
    new Text:Textdraw6;
    new PlayerText:Textdraw7[MAX_PLAYERS];
    //Die Textdraws vom Login/register system werde ich nicht reinposten da es geht.


    //Das ist unter OnPlayerConnect


    //Skinbox
    Textdraw7[playerid] = CreatePlayerTextDraw(playerid, 526.000000, 292.444458, "LD_SPAC:white");
    PlayerTextDrawLetterSize(playerid, Textdraw7[playerid], 0.000000, 0.000000);
    PlayerTextDrawTextSize(playerid, Textdraw7[playerid], 104.500000, 131.911102);
    PlayerTextDrawAlignment(playerid, Textdraw7[playerid], 1);
    PlayerTextDrawColor(playerid, Textdraw7[playerid], -1);
    PlayerTextDrawSetShadow(playerid, Textdraw7[playerid], 0);
    PlayerTextDrawSetOutline(playerid, Textdraw7[playerid], 0);
    PlayerTextDrawBackgroundColor(playerid, Textdraw7[playerid], 255);
    PlayerTextDrawFont(playerid, Textdraw7[playerid], TEXT_DRAW_FONT_MODEL_PREVIEW);
    PlayerTextDrawSetPreviewModel(playerid,Textdraw7[playerid], SpielerInfo[playerid][pSkin]);

    PlayerTextDrawSetSelectable(playerid,Textdraw7[playerid],0);



    //hier nochmal der Timer(aber der Timer geht sowieso)
    public loginregistertextdraws(playerid)
    {
    TextDrawShowForPlayer(playerid, Textdraw0);
    TextDrawShowForPlayer(playerid, Textdraw1);
    TextDrawShowForPlayer(playerid, Textdraw2);
    TextDrawShowForPlayer(playerid, Textdraw3);
    TextDrawShowForPlayer(playerid, Textdraw4);
    TextDrawShowForPlayer(playerid, Textdraw5);
    TextDrawShowForPlayer(playerid, Textdraw6);
    PlayerTextDrawShow(playerid, Textdraw7[playerid]);
    print("Anfangstimer für Login/RegisterTextDraw's wurde beendet!(3 Sekunden)");
    return 1;
    }



    soo... ? Noch was?

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

  • Dann setze dort, wo sich der Spieler einloggt, also dort wo wie Daten geladen werden, danach das hier hin:
    PlayerTextDrawSetPreviewModel(playerid,Textdraw7[playerid], SpielerInfo[playerid][pSkin]);


    Du rufst wahrscheinlich den Teil des Textdraws erstellen vor dem einloggen auf, deshalb ist es immer 0.

  • Dann setze dort, wo sich der Spieler einloggt, also dort wo wie Daten geladen werden, danach das hier hin:
    PlayerTextDrawSetPreviewModel(playerid,Textdraw7[playerid], SpielerInfo[playerid][pSkin]);


    Du rufst wahrscheinlich den Teil des Textdraws erstellen vor dem einloggen auf, deshalb ist es immer 0.



    switch(dialogid)
    {
    case DIALOG_REGISTER:
    {
    if(response)
    {
    if(strlen(inputtext) == 0)
    {
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Register","Das angegebene Passwort war zu Kurtz...\nBitte Registrier dich jetzt mit einem Passwort:","Register","Abbrechen");
    return 1;
    }
    else
    {
    TogglePlayerSpectating(playerid, 0);
    CreateAccount(playerid, inputtext);
    SetPVarInt(playerid,"Eingeloggt",1);
    SpawnPlayer(playerid);
    SetPlayerSkin(playerid, SpielerInfo[playerid][pSkin]);
    SetPlayerMoney(playerid,SpielerInfo[playerid][pHandgeld]);
    return 1;
    }
    }
    else
    {
    return 1;
    }
    }
    case DIALOG_LOGIN:
    {
    if(response)
    {
    if(strlen(inputtext) == 0)
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Das Angegebene Passwort war Falsch.\nBitte log dich jetzt mit dem richtigen Passwort ein:","Login","Abbrechen");
    return 1;
    }
    else
    {
    new SpielerName[MAX_PLAYER_NAME],string[256],arank[128],aname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, SpielerName, MAX_PLAYER_NAME);
    if(!strcmp(inputtext, mysql_ReturnPasswort(SpielerName), true))
    {
    TogglePlayerSpectating(playerid, 0);
    SetPVarInt(playerid,"Eingeloggt",1);
    LoadPlayer(playerid);
    SpawnPlayer(playerid);
    SetPlayerMoney(playerid,SpielerInfo[playerid][pHandgeld]);
    SetPlayerSkin(playerid, SpielerInfo[playerid][pSkin]);
    SetPlayerScore(playerid, SpielerInfo[playerid][pLevel]);

    GetPlayerName(playerid, aname, sizeof(aname));
    if(SpielerInfo[playerid][pAlevel] >= 1)
    {
    if(SpielerInfo[playerid][pAlevel] == 1) { arank = "Supporter"; }
    else if(SpielerInfo[playerid][pAlevel] == 2) { arank = "Administrator Level 1"; }
    else if(SpielerInfo[playerid][pAlevel] == 3) { arank = "Administrator Level 2"; }
    else if(SpielerInfo[playerid][pAlevel] == 4) { arank = "Administrator Level 3"; }
    else if(SpielerInfo[playerid][pAlevel] == 5) { arank = "High Administrator"; }
    else if(SpielerInfo[playerid][pAlevel] == 6) { arank = "Entwickler"; }
    else if(SpielerInfo[playerid][pAlevel] == 7) { arank = "Stelv. Serverleiter"; }
    else if(SpielerInfo[playerid][pAlevel] == 8) { arank = "Serverleiter"; }
    format(string, sizeof(string), "[A-INFO]{FF9D00} %s {FFFFFF}hat sich erfolgreich als {FF9D00}%s {FFFFFF}eingeloggt!", aname, arank);
    SendAdminMessage(Rot,string);
    return 1;
    }
    return 1;
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Das war das Falsche Passwort.\nBitte log dich jetzt mit dem richtigen Passwort ein:","Login","Abbrechen");
    return 1;
    }
    }
    }
    else
    {
    return 1;
    }
    }
    }

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

  • Ja aber dann spawnt er dann schon ,dann brauche ich es ja nicht mehr.. ich brauche es ganz am anfang


    Dann musst du den Skin direkt aus der Datei auslesen, bei OnPlayerConnect. Schau nach, wie du es bei LoadPlayer machst, und lade so den Skin-Stat in eine Variable, und lasse dir den Skin dann so anzeigen. Musst nur prüfen, ob der Spieler registriert ist.


  • Dann musst du den Skin direkt aus der Datei auslesen, bei OnPlayerConnect. Schau nach, wie du es bei LoadPlayer machst, und lade so den Skin-Stat in eine Variable, und lasse dir den Skin dann so anzeigen. Musst nur prüfen, ob der Spieler registriert ist.



    ich hab es jetzt so gemacht:



    //onplayerconnect
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    SpielerInfo[playerid][pSkin] = mysql_GetInt("accounts", "Skin", "Name", SpielerInfo[playerid][pName]);


    -> aber dann kommt ein Fragezeichen .. ? http://www.fotos-hochladen.net/uploads/samp008runepks921.png

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

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