AFK System buggt

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
  • Ich habe simple ein afk system gescriptet /afk geht alles aber /afkback settet er die hp nicht auf 100 und unfreezed denn nicht


    Mein script


    ocmd:afk(playerid,params[])
    {

    if(AFK[playerid] == 0)
    {
    new pID,string[256],string2[256];
    new spieler[MAX_PLAYER_NAME];
    GetPlayerName(playerid,spieler,sizeof spieler);
    SetPlayerHealth(playerid,INFINITY);
    TogglePlayerControllable(pID,0);
    format(string,sizeof string,"AFK-System: %s ist nun in den AFK-Modus Gegangen.",spieler);
    SendClientMessageToAll(COLOR_WHITE,string);
    }
    else { return SendClientMessage(playerid,COLOR_WHITE,"Du bist bereits AFK."); }
    return 1;
    }
    ocmd:afkback(playerid,params[])
    {
    if(AFK[playerid] == 1)
    {

    new spieler[MAX_PLAYER_NAME];
    new pID,string[256],string2[256];
    SetPlayerHealth(playerid,100);
    TogglePlayerControllable(pID,1);
    GetPlayerName(playerid,spieler,sizeof spieler);
    format(string,sizeof string,"AFK-System: %s ist nun wieder aktiv.");
    SendClientMessageToAll(COLOR_WHITE,string);
    }
    else { return SendClientMessage(playerid,COLOR_WHITE,"Du bist nicht im AFK-System."); }
    return 1;
    }

  • Versuch mal mein System.


    //afk
    if(strcmp(cmdtext, "/afk", true) == 0)
    {
    new str[256], pname[256]; GetPlayerName(playerid, pname, 256);
    format(str, 256, "*%s ist nun im AFK Modus", pname, cmdtext[4]);
    SendClientMessage(playerid, Orange, "Um dich Zurück zumelden, tippe /back");
    SendClientMessageToAll(0x4682B4AA, str);
    TogglePlayerControllable(playerid, 0);
    return 1;
    }

    if(strcmp(cmdtext, "/back", true) == 0)
    {
    new str[256], pname[256]; GetPlayerName(playerid, pname, 256);
    format(str, 256, "*%s ist vom AFK Modus zurück", pname, cmdtext[4]);
    SendClientMessageToAll(Orange, str);
    TogglePlayerControllable(playerid, 1);
    return 1;
    }
    Unter OnePlayerCommandText eintragen.


    stock SpielerName(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    return name;
    }


    Den Stock ganz unten im Script einfügen.

  • C:\Users\Jan\Desktop\Purge Deathmatch\gamemodes\PDM.pwn(2283) : warning 203: symbol is never used: "string"
    C:\Users\Jan\Desktop\Purge Deathmatch\gamemodes\PDM.pwn(2313) : error 010: invalid function or declaration
    C:\Users\Jan\Desktop\Purge Deathmatch\gamemodes\PDM.pwn(2315) : error 021: symbol already defined: "GetPlayerName"
    C:\Users\Jan\Desktop\Purge Deathmatch\gamemodes\PDM.pwn(2320) : error 010: invalid function or declaration
    C:\Users\Jan\Desktop\Purge Deathmatch\gamemodes\PDM.pwn(2323) : error 010: invalid function or declaration
    C:\Users\Jan\Desktop\Purge Deathmatch\gamemodes\PDM.pwn(2325) : error 021: symbol already defined: "str"
    C:\Users\Jan\Desktop\Purge Deathmatch\gamemodes\PDM.pwn(2325) : error 021: symbol already defined: "pname"
    C:\Users\Jan\Desktop\Purge Deathmatch\gamemodes\PDM.pwn(2329) : error 010: invalid function or declaration
    C:\Users\Jan\Desktop\Purge Deathmatch\gamemodes\PDM.pwn(2331) : warning 203: symbol is never used: "pname"
    C:\Users\Jan\Desktop\Purge Deathmatch\gamemodes\PDM.pwn(2331) : warning 203: symbol is never used: "str"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    7 Errors.



    //TEST2//
    if(strcmp(cmdtext, "/afk", true) == 0)
    {
    new str[256], pname[256]; GetPlayerName(playerid, pname, 256);
    format(str, 256, "*%s ist nun im AFK Modus", pname, cmdtext[4]);
    SendClientMessage(playerid, Orange, "Um dich Zurück zumelden, tippe /back");
    SendClientMessageToAll(0x4682B4AA, str);
    TogglePlayerControllable(playerid, 0);
    return 1;
    }


    if(strcmp(cmdtext, "/back", true) == 0)
    {
    new str[256], pname[256]; GetPlayerName(playerid, pname, 256);
    format(str, 256, "*%s ist vom AFK Modus zurück", pname, cmdtext[4]);
    SendClientMessageToAll(Orange, str);
    TogglePlayerControllable(playerid, 1);
    return 1;
    }



    so eingefügt

  • Einmal mein GetPlayerName entfernen uuund...


    //-------------------sscanf-------------------
    stock sscanf(string[], format[], {Float,_}:...)
    {
    #if defined isnull
    if (isnull(string))
    #else
    if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
    #endif
    {
    return format[0];
    }
    #pragma tabsize 4
    new
    formatPos = 0,
    stringPos = 0,
    paramPos = 2,
    paramCount = numargs(),
    delim = ' ';
    while (string[stringPos] && string[stringPos] <= ' ')
    {
    stringPos++;
    }
    while (paramPos < paramCount && string[stringPos])
    {
    switch (format[formatPos++])
    {
    case '\0':
    {
    return 0;
    }
    case 'i', 'd':
    {
    new
    neg = 1,
    num = 0,
    ch = string[stringPos];
    if (ch == '-')
    {
    neg = -1;
    ch = string[++stringPos];
    }
    do
    {
    stringPos++;
    if ('0' <= ch <= '9')
    {
    num = (num * 10) + (ch - '0');
    }
    else
    {
    return -1;
    }
    }
    while ((ch = string[stringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num * neg);
    }
    case 'h', 'x':
    {
    new
    num = 0,
    ch = string[stringPos];
    do
    {
    stringPos++;
    switch (ch)
    {
    case 'x', 'X':
    {
    num = 0;
    continue;
    }
    case '0' .. '9':
    {
    num = (num << 4) | (ch - '0');
    }
    case 'a' .. 'f':
    {
    num = (num << 4) | (ch - ('a' - 10));
    }
    case 'A' .. 'F':
    {
    num = (num << 4) | (ch - ('A' - 10));
    }
    default:
    {
    return -1;
    }
    }
    }
    while ((ch = string[stringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num);
    }
    case 'c':
    {
    setarg(paramPos, 0, string[stringPos++]);
    }
    case 'f':
    {


    new changestr[16], changepos = 0, strpos = stringPos;
    while(changepos < 16 && string[strpos] && string[strpos] != delim)
    {
    changestr[changepos++] = string[strpos++];
    }
    changestr[changepos] = '\0';
    setarg(paramPos,0,_:floatstr(changestr));
    }
    case 'p':
    {
    delim = format[formatPos++];
    continue;
    }
    case '\'':
    {
    new
    end = formatPos - 1,
    ch;
    while ((ch = format[++end]) && ch != '\'') {}
    if (!ch)
    {
    return -1;
    }
    format[end] = '\0';
    if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
    {
    if (format[end + 1])
    {
    return -1;
    }
    return 0;
    }
    format[end] = '\'';
    stringPos = ch + (end - formatPos);
    formatPos = end + 1;
    }
    case 'u':
    {
    new
    end = stringPos - 1,
    id = 0,
    bool:num = true,
    ch;
    while ((ch = string[++end]) && ch != delim)
    {
    if (num)
    {
    if ('0' <= ch <= '9')
    {
    id = (id * 10) + (ch - '0');
    }
    else
    {
    num = false;
    }
    }
    }
    if (num && IsPlayerConnected(id))
    {
    setarg(paramPos, 0, id);
    }
    else
    {
    #if !defined foreach
    #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
    #define __SSCANF_FOREACH__
    #endif
    string[end] = '\0';
    num = false;
    new
    name[MAX_PLAYER_NAME];
    id = end - stringPos;
    foreach (Player, playerid)
    {
    GetPlayerName(playerid, name, sizeof (name));
    if (!strcmp(name, string[stringPos], true, id))
    {
    setarg(paramPos, 0, playerid);
    num = true;
    break;
    }
    }
    if (!num)
    {
    setarg(paramPos, 0, INVALID_PLAYER_ID);
    }
    string[end] = ch;
    #if defined __SSCANF_FOREACH__
    #undef foreach
    #undef __SSCANF_FOREACH__
    #endif
    }
    stringPos = end;
    }
    case 's', 'z':
    {
    new
    i = 0,
    ch;
    if (format[formatPos])
    {
    while ((ch = string[stringPos++]) && ch != delim)
    {
    setarg(paramPos, i++, ch);
    }
    if (!i)
    {
    return -1;
    }
    }
    else
    {
    while ((ch = string[stringPos++]))
    {
    setarg(paramPos, i++, ch);
    }
    }
    stringPos--;
    setarg(paramPos, i, '\0');
    }
    default:
    {
    continue;
    }
    }
    while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
    {
    stringPos++;
    }
    while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
    {
    stringPos++;
    }
    paramPos++;
    }
    do
    {
    if ((delim = format[formatPos++]) > ' ')
    {
    if (delim == '\'')
    {
    while ((delim = format[formatPos++]) && delim != '\'') {}
    }
    else if (delim != 'z')
    {
    return delim;
    }
    }
    }
    while (delim > ' ');
    return 0;
    }


    dass einfügen wenn du sscanf noch nicht hast. Wenn doch einfach auf ne andere antwort wartenm :D Mein Script ist etwas verwinkelt ^^

  • Hey noch ne frage keine lust neues thread auf zu machen undzwar


    Immer wenn ich einen banne banne ich mich mit ...


    script


    ocmd:ban(playerid,params[]){
    new userid,grund[64],text[128];
    if(PlayerInfo[playerid][pAdminLevel] < 1) return SendClientMessage(playerid,COLOR_RED,"Dir ist es nicht erlaubt diesen Befehl zu benutzen");
    if(sscanf(params,"us",userid,grund)) return SendClientMessage(playerid,COLOR_GREY,"Benutzung: /ban [ID / Teil des Namens] [Grund]");
    format(text,sizeof(text),"Spieler %s wurde von %s %s gebannt, Grund: %s",PlayerName(userid),AdminRang[PlayerInfo[playerid][pAdminLevel]],PlayerName(playerid),grund);
    SendClientMessageToAll(COLOR_RED,text);
    PlayerInfo[playerid][pBan] = 1;
    SavePlayer(playerid);
    Kick(userid);
    return 1;
    }

  • ocmd:ban(playerid,params[])
    {
    if(!IsPlayerAnAdmin(playerid,1))return SendClientMessage(playerid,Rot,"Diesen Befehl kannst du nicht nutzen.");
    new pID, reason[128],string[128];
    if(IsPlayerAnAdmin(pID,1)) return SendClientMessage(playerid,0xFFFFFF,"");
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,Blau,"/ban [Spieler ID] [Grund]");
    format(string,sizeof(string),"AdmCmd: %s wurde von %s gebannt. Grund: %s",SpielerName(pID),SpielerName(playerid),reason);
    SendClientMessageToAll(Rot,string);
    SetPVarInt(pID,"Baned",1);
    Kick(pID);
    return 1;
    }
    :)

  • lel

  • teste ich sofort


    edit hat geklappt danke an alle , hätte da noch script fragen bzw buggs...



    Script


    ocmd:annehmenclan(playerid,params[])
    {
    new pinvite,pname[MAX_PLAYER_NAME],string[200],clanname3d[50],string1[250],file[250];
    clanstate[pinvite] = 1;
    format(clanname3d,sizeof(clanname3d),"%s{FF0000}",clanname[playerid]);
    labels[pinvite] = Create3DTextLabel(clanname3d,-1,30.0,40.0,50.0,40.0,0);
    Attach3DTextLabelToPlayer(labels[pinvite], pinvite, 0.0, 0.0, 0.5);
    GetPlayerName(pinvite,pname,sizeof(pname));
    format(string,sizeof(string),"Spieler %s ist dem Clan beigetreten",pname,clanname[playerid]);
    format(string1,sizeof(string1),"Du bist dem Clan '%s' beigetreten",clanname[playerid]);
    SendClientMessageToAll(COLOR_BLUE,string);
    SendClientMessage(pinvite,COLOR_BLUE,string1);
    format(file,sizeof(file),"/Clans/%s.cfg",(pname));
    if(!dini_Exists(file))
    {
    dini_Create(file);
    dini_Set(file,"Clan",clanname[playerid]);
    dini_IntSet(file,"Rang",1);
    }
    return 1;
    }


    er ladet ihn ein aber ein andere joint bei und der denn man invitet bekommt kan clan tag überm kopf :/

    Einmal editiert, zuletzt von DeRoX- ()

  • Also.
    Weißt du eigentlich was playerid ist?
    userid/pID/spielerid, die Variablen sind meist die anderen Spieler.
    playerid bist du selbst.
    Wenn du bei einem Befehl die Variable bei dir selbst setzt ( playerid ) dann bannst du dich selber.
    Wenn du den Befehl ausführst bist du die playerid.