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?
[AFK]%s will nicht funktionieren
- Madd_Dogg
- Geschlossen
- Erledigt
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
-
-
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 [ ] ( )
-
kleinerOpa: Das ist doch das %s vom string(?)
@tux: Soweit hat das geklappt, doch jetzt bekomme ich das [AFK] nicht mehr weg
*EDIT: Edit nich gesehen xD
Aber wie mach ich das? Bin absoluter blutiger Anfänger! -
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 stimmenmann muss natrülich auch die variable einbauen
/afk:
AFK[playerid]=1;/back:
AFK[playerid]=0; -
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:
ZitatC:\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 lineEdit: also von kleinerOpa
zur Info: mein Server Ordner liegt in einem unsichtbaren Ordner, deswegen das ...Desktop\ \samp... -
Hast du MAX_PLAYERS nach dem "#include <a_samp>"?
Und beim kleinenOpa gibts doch gar kein string und MAX_PLAYERS? -
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 . Dann werde ich das wohl einfach so lassen, wie es ist. Trotzdem Danke für die Hilfe an alle Beteiligten . Ich lass den Thread mal offen(nicht erledigt) für andere mit evtl. dem selben Problem.
-
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
-
breadfish.de
Hat das Thema geschlossen.