Timer mit playerid funktioniert nicht.

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
  • Guten Tag, wie mache ich es das wenn ein Spieler Admin Level 1338 hat automatisch gekickt wird nach jeder Timerabfrage mit nem Grund falls er nicht den Namen "Testplayer" hat?


    Habe bissher dashier oben im Script:
    forward ASCI()


    Unter OnGameModeInit einen 10Sek Timerstartung:
    SetTimer("ASCI",10000);


    Im Public:
    public ASCI()
    {
    if(PlayerInfo[playerid][pAdmin] >= 1338)
    {
    if(hasPlayerName(playerid,"Testplayer"))
    {
    return 0;
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Du darfst diesen Admin Level nicht benutzen!");
    Kick(playerid);
    return 1;
    }
    }
    return 1;
    }


    Und als Stock für hasPlayerName:
    stock hasPlayerName(playerid,name[])
    {
    new xname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,xname);
    return ((!strcmp(name,xname))?(true):(false));
    }

    Why do programmers always mix up Halloween and Christmas?
    Oct 31 == Dec 25

  • Sorry für meine falsche ausdrucksweise:
    Kann mir jemand ein Beispiel machen wie es genau funktioniert ohne stichworte?^^

    Why do programmers always mix up Halloween and Christmas?
    Oct 31 == Dec 25

  • Sollte so funktionieren
    public ASCI()
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(PlayerInfo[i][pAdmin] >= 1338)
    {
    if(hasPlayerName(i,"Testplayer"))
    {
    return 0;
    }
    else
    {
    SendClientMessage(i, COLOR_RED, "Du darfst diesen Admin Level nicht benutzen!");
    Kick(i);
    return 1;
    }
    }
    }
    return 1;
    }

  • Kannst es es anders machen?


    Der stock funktionierte nicht.
    Also ohne
    if(hasPlayerName(i,"Testplayer"))



    irgendwie mit: einfach ersetzten oderß
    if(strcmp(namestring,"Testplayer",false))
    {
    SendClientMessage(playerid, COLOR_RED, "Nachricht");
    return 1;
    }
    else
    //blubb

    Why do programmers always mix up Halloween and Christmas?
    Oct 31 == Dec 25

  • Ist der Timer nicht unnötig ?
    Weil er will ja abfragen ob der Spieler den namen Testplayer hat oder nicht, beim spielen wechselt sich der name ja nicht x)


    Am besten empfehle ich das hier ;) :
    public OnPlayerSpawn(playerid)
    {
    if(hasPlayerName(playerid,"Testplayer)) { return 0; }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Du darfst diesen Admin Level nicht benutzen!");
    Kick(playerid);
    return 1;
    }
    return 1;
    }

  • Kann man das nicht so machen?


    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    if name != "Testplayer" // Hier weis ich nicht also ob das so geht.
    {
    kick(playerid);
    return 1;
    }
    else
    {
    return 0;
    }

  • new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    if name != "Testplayer" // Hier weis ich nicht also ob das so geht.
    {
    kick(playerid);
    return 1;
    }
    else
    {
    return 0;
    }


    Öhm dann wird jeder gekickt der nicht Testplayer heißt?
    Achja man kann sich auch nachträglich Admin geben nach seinem Spawn >.> Deswegen Timer das ist ja egal will nur die Funktion das wenn einer Testplayer heißt passiert nichts und wenn er Nicht Testplayer heißt und 1338AdmLvl hat soll er gekickt werden.

    Why do programmers always mix up Halloween and Christmas?
    Oct 31 == Dec 25

  • Falls ich dich richtig verstanden habe,
    new
    name[MAX_PLAYER_NAME];
    for(new i; i < MAX_PLAYERS ; i++) {
    if(GetPlayerName(i,name,sizeof(name))) {
    if(strcmp(name,"Testplayer",true) != false) {
    if(PlayerInfo[i][pAdmin] >= 1338) {
    SendClientMessage(playerid,COLOR_RED,"Du wirst GEKICKT");
    Kick(i);
    }
    }
    }
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • oben
    new ASCI;
    dann forward ASCI(playerid);
    public ASCI(playerid){...return 1;}


    bei OnGamemodeInit SetTimer("ASCI","19000", 1);