[Problem] bei Anti - 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
  • Hallo Brotfische,


    Ich habe folgedes Problem: Ich wollte wenn man immer an einer stelle steht, und nichts mach, nach einer Zeit gekickt wird, leider geht das aber nicht.


    Codes:


    #define AntiAFK_Timer 60000
    forward AlleSpielerKontrollieren();
    forward SpielerKontrollieren(playerid);
    new Float:AlteSpielerPos[MAX_PLAYERS][3];
    new IsAFK[MAX_PLAYER_NAME];
    new bool:SpielerIstAFK[MAX_PLAYERS];
    new bool:IstSpielerGespawnt[MAX_PLAYERS];


    //unter OnGameModeInit


    SetTimer("AlleSpielerKontrollieren", AntiAFK_Timer, 0);



    //Befehle
    ocmd:afk(playerid,params[])
    {
    if(IsPlayerConnected(playerid))
    {
    if(SpielerIstAFK[playerid] == false)
    {
    new sttl[228];
    SpielerIstAFK[playerid] = true;
    TogglePlayerControllable(playerid,0);
    IsAFK[playerid] = 1;
    SendClientMessage(playerid,0xFF1E00FF,"Du hast dich in den AFK-Modus begeben!");
    format(sttl, sizeof(sttl), "** %s ist nun abwesend. **", getPlayerName(playerid));
    SendClientMessageToAll(0xF0F0F0FF, sttl);
    SendClientMessage(playerid,0xFF1E00FF,"um AFK wieder Zu verlassen nutze /back");
    }
    else
    {
    SendClientMessage(playerid,0xFF1E00FF,"Du befindest dich schon im AFK-Modus Nutze /back!");
    return 1;
    }
    }
    return 1;
    }
    ocmd:back(playerid,params[])
    {
    if(IsPlayerConnected(playerid))
    {
    if(SpielerIstAFK[playerid] == true)
    {
    new str[128];
    SpielerIstAFK[playerid] = false;
    TogglePlayerControllable(playerid,1);
    IsAFK[playerid] = 0;
    SendClientMessage(playerid,0xF0F0F0FF,"Du bist aus dem AFK-Modus zurückgekehrt!");
    format(str, sizeof(str), "** %s ist nun wieder anwesend. **", getPlayerName(playerid));
    SendClientMessageToAll(0xF0F0F0FF, str);
    }
    else
    {
    SendClientMessage(playerid,0xF0F0F0FF,"Du befindest dich nicht im AFK-Modus!");
    }
    }
    return 1;
    }
    //Spieler laden
    IsAFK[playerid] = 0;
    SpielerIstAFK[playerid] = false;


    //public´s


    public AlleSpielerKontrollieren()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && IstSpielerGespawnt[i] == true)
    {
    if(!IsPlayerNPC(i))
    {
    new Float:PositionX, Float:PositionY, Float:PositionZ;
    GetPlayerPos(i, PositionX, PositionY, PositionZ);
    if(PositionX == AlteSpielerPos[i][0] && PositionY == AlteSpielerPos[i][1] && PositionZ == AlteSpielerPos[i][2])
    {
    SendClientMessage(i,C_Error, "AntiAFK: Du wirst in 10 Sekunden gekickt, wenn du nicht wieder am Spiel teilnimmst."); // Rot
    SetTimerEx("SpielerKontrollieren", 10000, 0, "i", i); //10000 ms = 10 Sekunden
    }
    AlteSpielerPos[i][0] = PositionX;
    AlteSpielerPos[i][1] = PositionY;
    AlteSpielerPos[i][2] = PositionZ;
    }
    }
    }
    return 1;
    }


    public SpielerKontrollieren(playerid)
    {
    if(IsPlayerConnected(playerid) && IstSpielerGespawnt[playerid] == true)
    {
    if(!IsPlayerNPC(playerid))
    {
    new AntiAFKMessage[128];
    new Float:PositionX, Float:PositionY, Float:PositionZ;
    GetPlayerPos(playerid, PositionX, PositionY, PositionZ);
    if(PositionX == AlteSpielerPos[playerid][0] && PositionY == AlteSpielerPos[playerid][1] && PositionZ == AlteSpielerPos[playerid][2])
    {
    SendClientMessage(playerid, C_Error, "AntiAFK: Wegen Untätigkeit gekickt!");
    format(AntiAFKMessage, sizeof(AntiAFKMessage), "AntiAFK: %s wurde wegen Untätigkeit gekickt!", getPlayerName(playerid));
    SendClientMessageToAll(C_Error, AntiAFKMessage);
    Kick(playerid);
    }
    }
    }
    return 1;
    }


    Ich hoffe es kann mir jemand helfen :D


    MFG German_ScripterHD


    Mit freundlichen Grüßen
    German_ScripterHD

  • Debugge es bitte mal so, und poste dann, was im Log steht, wenn du im Server rum stehst, aber nichts passiert.
    public AlleSpielerKontrollieren()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    printf("AlleSpielerKontrollieren:: %d -> %d", i, IstSpielerGespawnt[i]);
    if(IsPlayerConnected(i) && IstSpielerGespawnt[i] == true)
    {
    if(!IsPlayerNPC(i))
    {
    new Float:PositionX, Float:PositionY, Float:PositionZ;
    GetPlayerPos(i, PositionX, PositionY, PositionZ);
    printf("%f == %f | %f == %f | %f == %f", AlteSpielerPos[i][0], PositionX, AlteSpielerPos[i][1], PositionY, AlteSpielerPos[i][2], PositionZ);
    if(PositionX == AlteSpielerPos[i][0] && PositionY == AlteSpielerPos[i][1] && PositionZ == AlteSpielerPos[i][2])
    {
    SendClientMessage(i,C_Error, "AntiAFK: Du wirst in 10 Sekunden gekickt, wenn du nicht wieder am Spiel teilnimmst."); // Rot
    printf("Setze Timer");
    SetTimerEx("SpielerKontrollieren", 10000, 0, "i", i); //10000 ms = 10 Sekunden
    }
    AlteSpielerPos[i][0] = PositionX;
    AlteSpielerPos[i][1] = PositionY;
    AlteSpielerPos[i][2] = PositionZ;
    }
    }
    }
    return 1;
    }

  • Log:


    [20:51:16] AlleSpielerKontrollieren:: 450 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 451 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 452 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 453 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 454 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 455 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 456 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 457 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 458 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 459 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 460 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 461 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 462 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 463 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 464 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 465 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 466 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 467 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 468 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 469 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 470 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 471 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 472 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 473 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 474 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 475 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 476 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 477 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 478 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 479 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 480 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 481 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 482 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 483 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 484 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 485 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 486 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 487 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 488 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 489 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 490 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 491 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 492 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 493 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 494 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 495 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 496 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 497 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 498 -> 0
    [20:51:16] AlleSpielerKontrollieren:: 499 -> 0


    passiert immer noch nichts


    Mit freundlichen Grüßen
    German_ScripterHD