Mein AFK System ist etwas Buggy aber weiß nicht warum.

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 Leute, ich habe AFK system das mann mit /afk ist und wenn mann sich bewergt wider sprich 1 Schrittvor dann ist mann wider zurück sozusagen /back nur automatisch durch das bewegen. Nun mach ich /afk und bewege mich nicht und 2 Sek später steht das ich wider da bin was eiglich nicht soll:


    afk:


    if(strcmp(cmd, "/afk", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    new name[MAX_PLAYER_NAME];
    new string[256];
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    format(string, sizeof(string),"%s ist afk!", name);
    SendClientMessageToAll(COLOR_YELLOW, string);
    SendClientMessage(playerid, COLOR_YELLOW, "Du bist afk!");
    AFK[playerid] = true;
    GetPlayerPos(playerid, AFK_X[playerid], AFK_Y[playerid], AFK_Z[playerid]);
    }
    return 1;
    }


    Das steht unter public anders();


    if(AFK[i] == true)
    {
    if(AFK_X[i] != x && AFK_Y[i] != y && AFK_Z[i] != z)
    {
    new name[MAX_PLAYER_NAME];
    new string[256];
    GetPlayerName(i, name, sizeof(name));
    format(string, sizeof(string)," %s ist aus AFK Status zurück!", name);
    SendClientMessageToAll(COLOR_YELLOW, string);
    AFK[i] = false;
    GameTextForPlayer(i, "Willkommen zurueck ;)", 3000, 3);
    AFK_Y[i] = 0.0;
    AFK_Z[i] = 0.0;
    AFK_X[i] = 0.0;
    }
    }


    Danke für hilfe in voraus

  • Warum machste das nicht so?


    new's:
    new IstAfk;


    OnPlayerConnect:
    Public OnPlayerConnect(playerid)
    {
    IstNichtAfk = 1
    IstAfk = 0
    return 1;
    }


    if(strcmp(cmdtext, "/Afk", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if IstAfk == 0
    {
    new name[MAX_PLAYER_NAME],
    new string[256];
    GetPlayername(playerid,name,[MAX_PLAYER_NAME];
    format(string, sizeof(string),"%s ist nun AFK!",name);
    SendClientMessageToAll(COLOR_YELLOW, string);
    SendClientMessage(playerid, COLOR_YELLOW, "Du bist afk!");
    IstAfk = 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_YELLOW, "Du bist schon AFK!");
    }
    return 1;
    }


    if(strcmp(cmdtext, "/Back", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if IstAfk == 1
    {
    new name[MAX_PLAYER_NAME],
    new string[256];
    GetPlayername(playerid,name,[MAX_PLAYER_NAME];
    format(string, sizeof(string),"%s ist nun nicht mehr AFK!",name);
    SendClientMessageToAll(COLOR_YELLOW, string);
    SendClientMessage(playerid, COLOR_YELLOW, "Willkommen zurück");
    IstAfk = 0;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_YELLOW, "Du bist nicht AFK!");
    }
    return 1;
    }


    Ich glaub so müsste das gehn.

  • new IsAFK; darfst du nicht einfach so verwenden.


    new IsAFK[MAX_PLAYERS] wäre da schon besser.


    Und ein Tipp noch vorher, das wird so nicht klappen !



    if(strcmp(cmdtext, "/Afk", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(IsAFK == 0);
    {
    new name[MAX_PLAYER_NAME],
    new string[256];
    GetPlayername(playerid,name,[MAX_PLAYER_NAME];
    format(string, sizeof(string),"%s ist nun AFK!",name);
    SendClientMessageToAll(COLOR_YELLOW, string);
    SendClientMessage(playerid, COLOR_YELLOW, "Du bist afk!");
    IsAFK[playerid] = 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_YELLOW, "Du bist schon AFK!");
    }
    return 1;
    }


    so wär es richtig.

  • Bei so 0 bis 20/30 spielern geht das ja noch grade so auszuhalten aber bei mehr Spielern wird man verrückt :D
    Und noch ein Tipp, evtl. noch einen Grund einfügen /afk [GRUND]