AFK-System

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
  • Hi!
    Bräuchte wieder mal eure Hilfe!
    Mein Afk-System kickt leider jeden nach 15 Minuten (außer Bots) auch wenn man sich bewegt.
    Ich vermute mein Fehler liegt in der Zeile mit "Afkzeit")==15... aber ich weiß nicht wie ich ihn lösen kann.
    Bitte um Hilfe!
    Danke


    public afkzeitabfrage()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(GetPVarInt(i,"loggedin")==0)continue;
    if(IsPlayerNPC(i))continue;
    new Float:X,Float:Y,Float:Z;
    new afkposition = GetPlayerPos(i,X,Y,Z);
    SetPVarInt(i,"Afkzeit",GetPVarInt(i,"Afkzeit")+1);
    SpielerSpeichern(i);
    if(GetPVarInt(i,"Afkzeit")==15 && GetPlayerPos(i,X,Y,Z)==afkposition)
    {
    SetPVarInt(i,"Afkzeit",0);
    SpielerSpeichern(i);
    new string[128];
    format(string,sizeof(string),"%s wurde wegen AFK-Stehen vom Server gekickt.",SpielerName(i));
    SendClientMessageToAll(COLOR_RED,string);
    Kick(i);
    }
    }
    }

  • Der Fehler wird auch daran liegen, dass du:


    new afkposition = GetPlayerPos(i,X,Y,Z);


    dies getan hast. Dies macht im enddefekt keinen Sinn.


    Du kannst bspw. jede einzelene Koord. des Spielers speichern und abfragen, mittels eines Enums..

    Back to the roots!

  • new Float:AfkPos[MAX_PLAYERS][6];
    public afkzeitabfrage()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(GetPVarInt(i,"loggedin")==0)continue;
    if(IsPlayerNPC(i))continue;
    GetPlayerPos(i, AfkPos[i][0], AfkPos[i][1], AfkPos[i][2]);
    SetPVarInt(i,"Afkzeit",GetPVarInt(i,"Afkzeit")+1);
    SpielerSpeichern(i);
    if(GetPVarInt(i,"Afkzeit")==15 && AfkPos[i][0] == AfkPos[i][3] && AfkPos[i][1] == AfkPos[i][4] && AfkPos[i][2] == AfkPos[i][5])
    {
    SetPVarInt(i,"Afkzeit",0);
    SpielerSpeichern(i);
    new string[128];
    format(string,sizeof(string),"%s wurde wegen AFK-Stehen vom Server gekickt.",SpielerName(i));
    SendClientMessageToAll(COLOR_RED,string);
    Kick(i);
    }
    AfkPos[i][3] = AfkPos[i][0], AfkPos[i][4] = AfkPos[i][1], AfkPos[i][5] = AfkPos[i][2];
    }
    }
    Hier :)