SetTimerEx - Namen mitgeben

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
  • 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 :P

  • Weil du es nicht weist . :thumbdown:



    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 :D

    Zitat

    SetTimerEx("PhoneStop",5000,0,"i",playerid);


    Aber ich suche nach dem Namen, nicht der ID ;)

    2 Mal editiert, zuletzt von Trooper[Y] ()

  • 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

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • 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.

  • 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 :pinch:
    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? ^^

  • 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 ;)