Spielername bei /afk in [AFK]"NAME" ändern?

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
  • Habe eine Frage und zwar, wie genau ich es scripten muss damit bei der Eingabe von /afk der Spieler ein [AFK] vor den Namen gesetzt bekommt und bei /back der Name wieder zurückgesetzt wird?


    Habe zwar schon in etwas eine Vorstellung wie es funktionieren könnte (GetPlayerName bla bla) aber vertraue dann doch lieber den erfahrenen Scriptern hier :P



    Vielen Dank im Vorraus! :)

    [align=center]

  • oben:
    new meinname[MAX_PLAYERS];

    Afk:


    new Name[MAX_PLAYER_NAME],string[128];
    GetPlayerName(playerid,name,sizeof(name));
    meinname[playerid] = name;
    format(string, sizeof(string), "[AFK]%s",name);
    SetPlayerName(playerid,string);


    Back:



    SetPlayerName(playerid,meinname[playerid]);


    so würde ich es machen

  • Habe es jetzt folgendermaßen eingebaut


    if (strcmp("/afk", cmdtext, true, 10) == 0)
    {
    new name[MAX_PLAYER_NAME],string[48];
    GetPlayerName(playerid, name, sizeof(name));
    format(string, sizeof(string), "%s ist afk (Away from Keyboard)!", name);
    SendClientMessageToAll(COLOR_LIGHTBLUEGREEN, string);
    TogglePlayerControllable(playerid, 0);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Du bist nun afk. Tippe /back um dich zurückzumelden!");
    new name2[MAX_PLAYER_NAME],string2[128];
    GetPlayerName(playerid,name2,sizeof(name2));
    meinname[playerid] = name2;
    format(string2, sizeof(string2), "[AFK]%s",name2);
    SetPlayerName(playerid,string2);
    }


    Doch der Compiler gibt folgenden Error:


    Zitat

    D:\PROGRA~1\GTASAN~1\SAMPSE~1\GAMEMO~1\lptdm.pwn(620) : error 006: must be assigned to an array


    (Entspricht hier Zeile 11)

    [align=center]

  • Wenn du bei OnPlayerConnect den Spielernamen in einen Array speicherst, hast du 1. den Vorteil, dass du GetPlayerName nicht dauernd aufrufen musst (ressourcen sparen und so) und 2.
    kannst du einfach den Namen beliebig ändern und später wieder zurücksetzten:
    new PlayerName[MAX_PLAYERS][MAX_PLAYER_NAME];
    //OnPlayerConnect:
    GetPlayerName(playerid,PlayerName[playerid],MAX_PLAYER_NAME);
    jetzt kannst du es so verwenden:
    printf("Name von %d: %s",playerid,PlayerName[playerid]);
    ocmd:afk(playerid,params[])
    {
    new newname[32];
    format(newname,"[AFK]%s",PlayerName[playerid]);
    SetPlayerName(playerid,newname);
    return 1;
    }
    ocmd:back(playerid,params[])
    {
    SetPlayerName(playerid,PlayerName[playerid]);
    return 1;
    }