[Abfrage]System

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 Scripter,
    Mal wieder suche ich eine Lösung für folgenes Problem:
    Bei OnGameModeInit()


    new jobname;
    Textdraw1 = TextDrawCreate(497.000000, 388.000000, "Dein Job : %s", jobname);
    TextDrawBackgroundColor(Textdraw1, 255);
    TextDrawFont(Textdraw1, 1);
    TextDrawLetterSize(Textdraw1, 0.390000, 1.000000);
    TextDrawColor(Textdraw1, 65535);
    TextDrawSetOutline(Textdraw1, 0);
    TextDrawSetProportional(Textdraw1, 1);
    TextDrawSetShadow(Textdraw1, 1);


    So ich wollte da noch ein GetPlayerJobName(playerid,jobname);
    hinmachen nur wie fragt man etwas ab?


    Oder wie erstellt man so eine Abfrage.


    Das Speichern übernimmt dini mit z.b


    stock JobSet(playerid)
    {
    new Spieler[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",Sname);
    if(dini_Exists(Spieler))
    {
    new jobname;
    GetPlayerJobName(playerid,jobname);
    dini_Set(Spieler, "Postbote", jobname);
    }
    return 1;
    }


    Und als "Abfrage" geht doch dann


    new Spieler[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",Sname);
    if(dini_Exists(Spieler))
    {
    SetPlayerJobName(playerid,dini_Int(Spieler,"Jobname"));
    }
    return 1;


    Oder wie oder was . Wie mache ich "GetPlayerJobName " und "SetPlayerJobName"?


    Der Job Befehl "/job" mit einem Dialog.


    Und wenn der Spieler halt einen Job Auswählt sollte es gleich ein
    SetPlayerJobname(playerid,Postbote); z.b


    Ps:Erster Beitrag hatte einen Bug.
    Lg Melbatt

  • ich empfehle dir die Jobs in ID's zu Speichern und mit #define die Jobnamen im Script zu definieren.


    z.b.
    #define Job1 Busfahrer
    #define Job2 Trucker


    Dann fragst du nur die ID ab:
    new jtext[20];
    new string[128];
    if(Spieler[playerid][Job] == 1) { jtext = Job1)
    else if(Spieler[playerid][Job] == 2) { jtext = Job2)
    format(string,sizeof(string),"Du bist %s ",jtext); //Ein Beispiel wie du es anwenden kannst.
    und dein Textdraw kannst du dann immer Updaten.

  • Super ,das ist schonmal gut.


    Aber wie frage ich das im Textdraw ab?
    weil wenn nur das
    new jtext[20];
    if(Spieler[playerid][Job] == 1) { jtext = Job1)


    einfüge kommen Errors
    C:\Users\Nutzer\Desktop\Pawno-Server\gamemodes\melsgame.pwn(162) : error 017: undefined symbol "Spieler"
    C:\Users\Nutzer\Desktop\Pawno-Server\gamemodes\melsgame.pwn(162) : error 017: undefined symbol "playerid"
    C:\Users\Nutzer\Desktop\Pawno-Server\gamemodes\melsgame.pwn(162) : error 029: invalid expression, assumed zero
    C:\Users\Nutzer\Desktop\Pawno-Server\gamemodes\melsgame.pwn(162) : fatal error 107: too many error messages on one line





    Lg Melbatt

    Einmal editiert, zuletzt von Melbatt ()

  • Ich empfehle dir das Textdraw nicht mit einem Timer zu Updaten sondern immer wenn er sich einloggt oder
    sein Job kündigt bzw einen neuen Job annimmt.


    unter OnGameModeInit definierst du wie vorher dein Textdraw, jedoch diesmal mit einer Schleife da dein
    Textdraw Spielerbezogen sein muss.

    Textdraw1[playerid] = TextDrawCreate(497.000000, 388.000000, ""); //Das kann ruhig leer bleiben
    TextDrawBackgroundColor(Textdraw1[playerid], 255);
    TextDrawFont(Textdraw1[playerid], 1);
    TextDrawLetterSize(Textdraw1[playerid], 0.390000, 1.000000);
    TextDrawColor(Textdraw1[playerid], 65535);
    TextDrawSetOutline(Textdraw1[playerid], 0);
    TextDrawSetProportional(Textdraw1[playerid], 1);
    TextDrawSetShadow(Textdraw1[playerid], 1);


    unter OnPlayerSpawn aktualisiert du anschließend das Textdraw:


    new jtext[20];
    if(Spieler[playerid][Job] == 0)
    {
    new TextString[20];
    format(TextString, sizeof(TextString), "Du bist derzeit Arbeitslos");
    TextDrawSetString(Textdraw1[playerid], TextString);
    TextDrawShowForPlayer(i, Tacho[playerid]);
    }
    else
    {
    if(Spieler[playerid][Job] == 1) { jtext = Job1)
    else if(Spieler[playerid][Job] == 2) { jtext = Job2)
    new TextString[20];
    format(TextString, sizeof(TextString), "Du arbeitest derzeit als %s", jtext); //Wie das Textdraw heißen soll
    TextDrawSetString(Textdraw1[playerid], TextString);
    TextDrawShowForPlayer(i, Tacho[playerid]);
    }


    Das selbe machst du da wo er sein Job Kündigt bzw einen neuen Job annimmt.


    Zu deinem Fehler: Das Spieler must du natürlich an dein Account System anpassen.