[AFK]%s will nicht funktionieren

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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
  • Hey,
    hab mich mal an mein eigenes kleines AFK-Script rangemacht und als ich nachgeschaut habe, ob es klappt, fiel mir auf, dass sich der Name nicht ändert.
    Hier mein OnPlayerCommandText(Mehr hab ich nicht verändert):
    Klick mich
    Beim Compilen erscheinen keine Errors oder Warnings
    Warum klappt das nicht?

    MfG
    Madd_Dogg

  • SetPlayerName(playerid, "[AFK]%s");
    in
    format(string,sizeof(string),"[AFK]%s",name);
    SetPlayerName(playerid,string);
    //edit: achja, du musst dir den namen dann noch in einem file etc. speicher...
    denn sonst bekommst du den namen nicht mehr zurück ;D

  • du kannst in einem namen keine "%" benutzen... nur A-Z, 0-9 _ und . und [ ] ( )

  • mit sicherheit nicht.
    new AFK[MAX_PLAYERS];

    public OnPlayerText(playerid,text[])
    {
    new name[MAX_PLAYER_NAME+2];
    GetPlayerName(playerid,name);
    new string[64+5];
    if(AFK[playerid] == 1) {
    format(string,sizeof(string),"[AFK]%s sagt: %s",name,text);
    SetPlayerName(playerid,string);
    SendClientMessage(playerid, farbe,string);
    }else{
    format(string,sizeof(string),"%s sagt:%s",name,text);
    SetPlayerName(playerid,string);
    SendClientMessage(playerid, farbe,string);
    }
    return 0;
    }
    müsste so stimmen


    mann muss natrülich auch die variable einbauen
    /afk:
    AFK[playerid]=1;


    /back:
    AFK[playerid]=0;

    3 Mal editiert, zuletzt von ]PRT[The_Gamer ()

  • wenn du %s in einem string hast, der kein parameter der funktion format ist, bringt das nix oO


    aber das %s darf glaub ich net in die ""
    sollte glaub eher so aussehen
    format(string,sizeof(string),"[AFK]"%s,name);
    SetPlayerName(playerid,string);


    Hat einer gesagt "Mülltonne öffne dich?"


    dann nochmal eine selbstgemachte funktion
    stock removeAfkTag(playerid)
    {
    new name[MAX_PLAYER_NAME],name2[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof name);
    for(new i=5;i<MAX_PLAYER_NAME;i++)
    {
    if(name[i]=='\0')break;
    name2[i-5]=name[i];
    }
    SetPlayerName(playerid,name2);
    }

  • ...
    //ganz nach oben:
    new istafk[MAX_PLAYERS];
    //da, wo du afk gehst:
    if(!istafk[playerid]) {
    istafk[playerid]++;
    new name[30];
    GetPlayerName(playerid,name);
    format(name,sizeof(name),"[AFK]%s",name);
    SetPlayerName(playerid,name); }
    //da, wo du vom afk zurückkehsrst:
    if(istafk[playerid]) {
    istafk[playerid]--;
    new name[30];
    GetPlayerName(playerid,name);
    format(name,sizeof(name),"%s",name[5]);
    SetPlayerName(playerid,name); }
    //EDIT: Zu langsam

  • Das ergibt dann folgendes:

    Zitat

    C:\Users\USER\Desktop\ \samp03asvr_R4_win32\filterscripts\brb.pwn(5) : error 017: undefined symbol "MAX_PLAYERS"
    C:\Users\USER\Desktop\ \samp03asvr_R4_win32\filterscripts\brb.pwn(5) : error 009: invalid array size (negative, zero or out of bounds)
    C:\Users\USER\Desktop\ \samp03asvr_R4_win32\filterscripts\brb.pwn(90) : error 017: undefined symbol "string"
    C:\Users\USER\Desktop\ \samp03asvr_R4_win32\filterscripts\brb.pwn(90) : error 017: undefined symbol "string"
    C:\Users\USER\Desktop\ \samp03asvr_R4_win32\filterscripts\brb.pwn(90) : error 029: invalid expression, assumed zero
    C:\Users\USER\Desktop\ \samp03asvr_R4_win32\filterscripts\brb.pwn(90) : fatal error 107: too many error messages on one line

    Edit: also von kleinerOpa
    zur Info: mein Server Ordner liegt in einem unsichtbaren Ordner, deswegen das ...Desktop\ \samp...

    MfG
    Madd_Dogg

  • ja aber getplayername... das ist ressourcenschonender, es werden einfach die ersten 5 zeichen ([-A-F-K-])entfernt...

  • Naja, um ehrlich zu sein, wird mir das etwas zu kompliziert. Und alles zu kopieren... dann hab ich nix selbstgemachtes, ich wollte das ja eig. selfmade haben, nur vielleicht mit ein Bisschen Hilfe und so :D . Dann werde ich das wohl einfach so lassen, wie es ist. Trotzdem Danke für die Hilfe an alle Beteiligten :thumbup: . Ich lass den Thread mal offen(nicht erledigt) für andere mit evtl. dem selben Problem.

    MfG
    Madd_Dogg


  • if(strcmp("/afk",cmdtext, true) == 0)


    {
    new str[256], pname[256]; GetPlayerName(playerid, pname, 256);
    format(str, 256, "*%s ist afk!", pname, cmdtext[4]);
    SendClientMessage(playerid, 0x33CCFFAA, "Um dich Zurück zumelden, tippe /zurük");
    SendClientMessageToAll(0x4682B4AA, str);
    TogglePlayerControllable(playerid, 0);
    return 1;
    }
    if(strcmp(cmdtext, "/zurück", true) == 0) {
    new str[256], pname[256]; GetPlayerName(playerid, pname, 256);
    format(str, 256, "*%s ist von afk zurueck!", pname, cmdtext[4]);
    SendClientMessageToAll(0x4682B4AA, str);
    GameTextForPlayer(playerid,"~w~willkommen zurueck. :)!",2500,3);
    TogglePlayerControllable(playerid, 1);
    return 1;
    }
    [MSIE_newline_end ]

  • unnötig so eher



    if(strcmp("/afk",cmdtext, true) == 0)
    {
    new str[64], pname[24]; GetPlayerName(playerid, pname, 24);
    format(str, 64, "*%s ist afk!", pname);
    SendClientMessage(playerid, 0x33CCFFAA, "Um dich Zurück zumelden, tippe /zurük");
    SendClientMessageToAll(0x4682B4AA, str);
    TogglePlayerControllable(playerid, 0);
    return 1;
    }
    if(strcmp(cmdtext, "/zurück", true) == 0)
    {
    new str[64], pname[24]; GetPlayerName(playerid, pname, 24);
    format(str, 64, "*%s ist von afk zurueck!", pname);
    SendClientMessageToAll(0x4682B4AA, str);
    GameTextForPlayer(playerid,"~w~willkommen zurueck. :)!",2500,3);
    TogglePlayerControllable(playerid, 1);
    return 1;
    }


    und wieso benutzt du so hohe Strings da reicht einer von 64 locker aus und für nen Namen einer mit 24

    RFT