Wie kann ich den Namen eines Spielers in einen Timer einbauen ?
Mfg,
Trooper
P.S.: Mehr Informationen braucht ihr hoffentlich nicht
Wie kann ich den Namen eines Spielers in einen Timer einbauen ?
Mfg,
Trooper
P.S.: Mehr Informationen braucht ihr hoffentlich nicht
new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof name);
SetTimerEx("bla",1000,"s",name);
So dürfts gehen, bin mir aber nicht ganz sicher ob da nicht ein Argument fehlt, lange nichtmehr mit SetTimerEx gearbeitet
Soweit wwar ich auch, allerdings kommt ein Error, dass name array`t werden muss
warum machst du es nicht so??
new name[MAX_PLAYER_NAME], string[48];
GetPlayerName(playerid,name,sizeof(name));
format(string,sizeof(string),"%s",name);
SetTimerEx(string, 1000,0,"s");
kein kommentar
Weil du es nicht weist .
weis du das? Nein allso schrieb sowas nicht.
So @ trooper:
hir ist beispiel:
if(strcmp(cmdtext,"/110",true)==0) {
new name[MAX_PLAYER_NAME], s[80];
GetPlayerName(playerid,name,sizeof(name));
format(s,sizeof(s),"%s brauchst die Polizei",name);
for(new i=0; i<=GetMaxPlayers(); i++) {
if(IsPlayerConnected(i)) {
if(PlayerInfo[i][pJob]==Cop ||PlayerInfo[i][pJob2]==Cop ||PlayerInfo[i][pJob3]==Cop ||PlayerInfo[i][pJob4]==Cop ||PlayerInfo[i][pJob5]==Cop) {
SetPlayerMarkerForPlayer(i,playerid,rot);
SendClientMessage(i,blau,s); }}}
SendClientMessage(playerid, blau,"Du hast die Polizei gerufen");
SetPlayerSpecialAction(playerid,SPECIAL_ACTION_USECELLPHONE);
SetTimerEx("PhoneStop",5000,0,"i",playerid);
return 1;
}
Thema erledigt, da die erste Möglichkeit (und meine brigens auch ) richtig waren,
ich mich nur in der Zeile der Errormeldung vertan hatte.
Dadurch entsteht folgende neue Frage:
Wie kann ich den String für den Namen anders deklarieren ?
Also ohne MAX_PLAYER_NAME ?
Habe es bisher so,
timebanned[ThePlayer][tbcounter] = 1;
da soll ich ThePlayer in nen Array setzen,
deklaration : ThePlayer[MAX_PLAYER_NAME]
Also wie muss ich das ändern?
/edit:
Matze, du hast es auch nicht gelöst
ZitatSetTimerEx("PhoneStop",5000,0,"i",playerid);
Aber ich suche nach dem Namen, nicht der ID
Mit anderen Worten du willst den Namen des Spielers als ArrayIndex nehmen oder versteh ich das falsch? oO
Weil das ist zwar in Lua möglich, aber in Pawn nicht. Da musst du auf jeden Fall ein ganzzahligen Index nehmen, also die ID des Spielers
Aber ein name ist doch auch nur ein String....
Ok, was genau kommt als Fehlermeldung raus?
Wenn du die Größe von MAX_PLAYER_NAME wissen willst: 24
Kleines Beispiel wie du die Name-Übergabe regeln kannst (Grob aus der Luft gegriffen):
forward playerIntSet(name[], key[], int);
public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp(cmdtext,"/val")) {
new playerName[MAX_PLAYER_NAME];
GetPlayerName(playerid, playerName, sizeof(playerName));
SetTimerEx("playerIntSet",5000,false,"ssd",playerName,"PlayerVal", 12);
return 1;
}
return 0;
}
public playerIntSet(name[], key[], int)
{
new ini[24];
format(ini, sizeof(ini), "%s.ini", name);
if(!dini_Exists(ini)) return 0;
return dini_IntSet(ini, key, int);
}
Hoffe du hast es jetzt verstanden, bei mir funktioniert das ganze in ähnlicher Form als Timeban System.
Öhm..Lieg ich da richtig das SA:MP nur 16 Zeichen erlaubt oder bin ich blöd?
Ja, stimmt schon. SA:MP erlaubt beim connecten bis zu 16 Zeichen (eig. nur 15 aber egal). Jedoch kann man den Namen per SetPlayerName danach auf bis zu 24 Zeichen strecken, ohne dass der Server ein größeres Problem damit hat.
Das Problem mit dem Timer existiert nichtmehr
Das Problem war halt nur, dass ich ThePlayer in ner Varablen definieren muss.
Also ich habe
new ThePlayer[MAX_PLAYER_NAME];
Dann getPlayerName etc.
Und das dann in ner Variablen speichern
name[ThePlayer];
Laut Pawno muss ich allerdings nen Arry hinter ThePlayer setzen....
also
name[ThePlayer[color=#ff0000][???][/color];
Und ich möchte halt jetzt wissen, was ich mit ??? ersetzen muss....
P.S.: Ja, soll ein Timeban System werden, halt nur ohne seperate Datei.....
new PlayerName[MAX_PLAYERS][MAX_PLAYER_NAME];
/* Abspeichern in der Variable */
GetPlayerName(playerid, PlayerName, MAX_PLAYER_NAME);
Jetzt klar?
Ja, stimmt schon. SA:MP erlaubt beim connecten bis zu 16 Zeichen (eig. nur 15 aber egal). Jedoch kann man den Namen per SetPlayerName danach auf bis zu 24 Zeichen strecken, ohne dass der Server ein größeres Problem damit hat.
stimmt, es wird ja ab 0 gezählt
Naja, schon, aber ich brauche noch nen Integer zum Schluss
Wie müsste ich das dann machen ?
Ganz einfach du versuchst ein ArrayIndex durch eine String (also durch ein Arry) festzulegen, ein ArrayIndex ist aber ein Integer, und ich frage dich nochmal:
Warum willst du ein Array mit einem String ansprechen, das ist mit Pawn NICHT möglich, vor allem nicht so dynamisch wie du das gerne hättest, du musst also die playerid des Spielers als Index verwenden oder sie halt per "GetPlayerIDByName" o.ä. suchen
Weil das ein einfaches Timeban System werden soll.
Beim Connect prüft er, ob der Name gleich der gebannte ist.
Dass das unsicher ist, weiß ich, und dass man sich unter andrem Nick einloggen kann, ist auch klar, aber dafür hat man halt all die Stats etc. nicht