Timeban wird nicht gespeichert (DINI)

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,


    mein Timeban "Wert" wird nicht gespeichert ich weiß nicht warum.
    Das heißt es muss was mit den Parametern sein aber was!?
    ocmd:tban(playerid,params[]){
    if(!isPlayerAnAdmin(playerid,2))return SendClientMessage(playerid,ROT,"Du hast kein Admin Level 2.");
    new pID,time,grund[64],wert,string[150],pIDname[MAX_PLAYER_NAME];
    if(sscanf(params,"uss",pID,time,grund))return SendClientMessage(playerid,-1,"Tippe: /tban [id] [Dauer] [grund]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"Spieler ist nicht online!");
    if(0 < time < 1000){
    format(string, sizeof(string), "Du wurdest von %s für %s gebannt.Grund: %s", NamePlayer(playerid), time, grund);
    BanExWithMessage(pID, ROT, string, grund);
    format(string,sizeof(string),"%s wurde von %s für %s gebannt. Grund: %s",NamePlayer(pID),NamePlayer(playerid),time,grund);
    SendClientMessageToAll(ROT,string);
    wert = gettime()+(60*time),SetPVarInt(pID,"timeban",wert),SetTimerEx("WarnTimer2",250,false,"d",pID),SetPVarInt(playerid,"Banned1",GetPVarInt(playerid,"Banned1")+1);
    GetPlayerName(pID,pIDname,sizeof(pIDname));
    format(string,sizeof(string),"Du hast den Spieler %s erfolgreich gesperrt.",pIDname);
    SendClientMessage(playerid,-1,string);
    new Spieler[128];
    printf("Account suche");
    format(Spieler,sizeof(Spieler),"/Accounts/%s.txt",NamePlayer(pID));
    printf("Spieler: %s -> %d", Spieler, fexist(Spieler));
    printf("reason: %s", grund);
    dini_Set(Spieler,"tbangrund",grund);
    dini_Set(Spieler,"tbanadmin",NamePlayer(playerid));
    printf("Dini Bearbeitung");
    SetTimerEx("Gebannt",200,false,"d",pID);
    Log("TimeBanLog",string);


    }
    return SendClientMessage(playerid,ROT,"Ungültige Zeit!");
    }


    Er zeigt mir Ingame Ungültige Zeit an aber Kickt mich tzd.


  • if(0 < time < 1000){

    Zu:

    if(strval(time) < 0 /*Sonstiges*/){

    Generell dein ganzer Command ist viel zu resourcenlastig.
    Außerdem setzt du Variablen nach dem Ban-Command? 0.o
    Erklär mir mal wie du den Command aufgebaut hast und was du damit erreichen willst. ;)
    Vorallem deine Timer bringen gar kein Sinn im meinen Augen.



    Gruß.


    E: PWN TAG

  • ocmd:tban(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,2))return SendClientMessage(playerid,ROT,"Du hast kein Admin Level 2.");
    new pID,time,grund[64],wert,string[144];
    if(sscanf(params,"uds[64]",pID,time,grund))return SendClientMessage(playerid,"Tippe: /tban [id] [Dauer] [Grund]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"Spieler ist nicht online!");
    if(time > 0 && time < 1000)
    {
    format(string,sizeof string,"%s wurde von %s für %d gebannt. Grund: %s",NamePlayer(pID),NamePlayer(playerid),time,grund);
    SendClientMessageToAll(ROT,string);
    wert = gettime() + (60*time);
    SetPVarInt(pID,"timeban",wert);
    SetTimerEx("WarnTimer2",250,false,"d",pID);
    SetPVarInt(playerid,"Banned1",GetPVarInt(playerid,"Banned1")+1);
    format(string,sizeof string,"Du hast den Spieler %s erfolgreich gesperrt.",NamePlayer(pID));
    SendClientMessage(playerid,-1,string);
    new Spieler[128];
    printf("Account suche beginnt!");
    format(Spieler,sizeof Spieler,"/Accounts/%s.txt",NamePlayer(pID));
    printf("Spieler: %s -> %d",Spieler,dini_Exists(Spieler));
    printf("reason: %s",grund);
    dini_Set(Spieler,"tbangrund,"grund);
    dini_Set(Spieler,"tbanadmin",NamePlayer(playerid));
    printf("Dini Bearbeitung");
    SetTimerEx("Gebannt",200,false,"d",pID);
    Log("TimeBanLog",string);
    format(string,sizeof string,"Du wurdest von %s für %d gebannt. Grund: %s",NamePlayer(playerid),time,grund);
    BanExWithMessage(pID,ROT,string,grund);
    return 1;
    }
    return SendClientMessage(playerid,ROT,"Ungültige Zeit!");
    }
    Versuche das mal so.
    Du hattest deine Abfragen (sscanf und noch andere) falsch aufgebaut gehabt. Außerdem, wie iEnerqie schon sagte, müssen die Variablen vor der Ban-Ausführung gesetzt werden.

    Einmal editiert, zuletzt von AirM4X ()



  • Hab diesen Error:

    Code
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Deathmatch.pwn(1295) : error 035: argument type mismatch (argument 2)
    Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase
    
    
    
    
    1 Error.
  • Oh, das hat so aber auch noch nie jemand gemacht. :D


    if(sscanf(params,"uds[64]",pID,time,grund))return SendClientMessage(playerid,"Tippe: /tban [id] [Dauer] [Grund]");
    zu:
    if(sscanf(params,"uds[64]",pID,time,grund))return SendClientMessage(playerid,ROT,"Tippe: /tban [id] [Dauer] [Grund]");


    Es hat einfach die Farbe gefehlt.

  • Jeffry:
    ICy.:


    Ingame gebe ich "/tban 0 2 test" ein aber es kommt immer diese Nachricht mit "/tban [id] [dauer] [grund]


    Bitte um hilfe.
    Aktueller Code:
    ocmd:tban(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,2))return SendClientMessage(playerid,ROT,"Du hast kein Admin Level 2.");
    new pID,time,grund[64],wert,string[144];
    if(sscanf(params,"uds[64]",pID,time,grund))return SendClientMessage(playerid,-1,"Tippe: /tban [id] [Dauer] [Grund]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"Spieler ist nicht online!");
    if(time > 0 && time < 1000)
    {
    format(string,sizeof string,"%s wurde von %s für %d gebannt. Grund: %s",NamePlayer(pID),NamePlayer(playerid),time,grund);
    SendClientMessageToAll(ROT,string);
    wert = gettime() + (60*time);
    SetPVarInt(pID,"timeban",wert);
    SetTimerEx("WarnTimer2",250,false,"d",pID);
    SetPVarInt(playerid,"Banned1",GetPVarInt(playerid,"Banned1")+1);
    format(string,sizeof string,"Du hast den Spieler %s erfolgreich gesperrt.",NamePlayer(pID));
    SendClientMessage(playerid,-1,string);
    new Spieler[128];
    printf("Account suche beginnt!");
    format(Spieler,sizeof Spieler,"/Accounts/%s.txt",NamePlayer(pID));
    printf("Spieler: %s -> %d",Spieler,dini_Exists(Spieler));
    printf("reason: %s",grund);
    dini_Set(Spieler,"tbangrund,",grund);
    dini_Set(Spieler,"tbanadmin",NamePlayer(playerid));
    printf("Dini Bearbeitung");
    SetTimerEx("Gebannt",200,false,"d",pID);
    Log("TimeBanLog",string);
    format(string,sizeof string,"Du wurdest von %s für %d gebannt. Grund: %s",NamePlayer(playerid),time,grund);
    BanExWithMessage(pID,ROT,string,grund);
    return 1;
    }
    return SendClientMessage(playerid,ROT,"Ungültige Zeit!");
    }

  • Funktion:
    stock sscanf(sstring[], format[], {Float,_}:...)
    {
    #if defined isnull
    if (isnull(sstring))
    #else
    if (sstring[0] == 0 || (sstring[0] == 1 && sstring[1] == 0))
    #endif
    {
    return format[0];
    }
    #pragma tabsize 4
    new
    formatPos = 0,
    sstringPos = 0,
    paramPos = 2,
    paramCount = numargs(),
    delim = ' ';
    while (sstring[sstringPos] && sstring[sstringPos] <= ' ')
    {
    sstringPos++;
    }
    while (paramPos < paramCount && sstring[sstringPos])
    {
    switch (format[formatPos++])
    {
    case '\0':
    {
    return 0;
    }
    case 'i', 'd':
    {
    new
    neg = 1,
    num = 0,
    ch = sstring[sstringPos];
    if (ch == '-')
    {
    neg = -1;
    ch = sstring[++sstringPos];
    }
    do
    {
    sstringPos++;
    if ('0' <= ch <= '9')
    {
    num = (num * 10) + (ch - '0');
    }
    else
    {
    return -1;
    }
    }
    while ((ch = sstring[sstringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num * neg);
    }
    case 'h', 'x':
    {
    new
    num = 0,
    ch = sstring[sstringPos];
    do
    {
    sstringPos++;
    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 = sstring[sstringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num);
    }
    case 'c':
    {
    setarg(paramPos, 0, sstring[sstringPos++]);
    }
    case 'f':
    {


    new changestr[16], changepos = 0, strpos = sstringPos;
    while(changepos < 16 && sstring[strpos] && sstring[strpos] != delim)
    {
    changestr[changepos++] = sstring[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(sstring, format[formatPos], false, sstringPos)) == -1)
    {
    if (format[end + 1])
    {
    return -1;
    }
    return 0;
    }
    format[end] = '\'';
    sstringPos = ch + (end - formatPos);
    formatPos = end + 1;
    }
    case 'u':
    {
    new
    end = sstringPos - 1,
    id = 0,
    bool:num = true,
    ch;
    while ((ch = sstring[++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
    sstring[end] = '\0';
    num = false;
    new
    name[MAX_PLAYER_NAME];
    id = end - sstringPos;
    foreach (Player, playerid)
    {
    GetPlayerName(playerid, name, sizeof (name));
    if (!strcmp(name, sstring[sstringPos], true, id))
    {
    setarg(paramPos, 0, playerid);
    num = true;
    break;
    }
    }
    if (!num)
    {
    setarg(paramPos, 0, INVALID_PLAYER_ID);
    }
    sstring[end] = ch;
    #if defined __SSCANF_FOREACH__
    #undef foreach
    #undef __SSCANF_FOREACH__
    #endif
    }
    sstringPos = end;
    }
    case 's', 'z':
    {
    new
    i = 0,
    ch;
    if (format[formatPos])
    {
    while ((ch = sstring[sstringPos++]) && ch != delim)
    {
    setarg(paramPos, i++, ch);
    }
    if (!i)
    {
    return -1;
    }
    }
    else
    {
    while ((ch = sstring[sstringPos++]))
    {
    setarg(paramPos, i++, ch);
    }
    }
    sstringPos--;
    setarg(paramPos, i, '\0');
    }
    default:
    {
    continue;
    }
    }
    while (sstring[sstringPos] && sstring[sstringPos] != delim && sstring[sstringPos] > ' ')
    {
    sstringPos++;
    }
    while (sstring[sstringPos] && (sstring[sstringPos] == delim || sstring[sstringPos] <= ' '))
    {
    sstringPos++;
    }
    paramPos++;
    }
    do
    {
    if ((delim = format[formatPos++]) > ' ')
    {
    if (delim == '\'')
    {
    while ((delim = format[formatPos++]) && delim != '\'') {}
    }
    else if (delim != 'z')
    {
    return delim;
    }
    }
    }
    while (delim > ' ');
    return 0;
    }


    Jeffry:

  • Jeffry:
    Hab vergessen den Wert zu speichern nun will ich das machen bekomme aber 2 Errors und 1 Warning:

    Code
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Deathmatch.pwn(1316) : error 035: argument type mismatch (argument 3)C:\Users\Patrick\Desktop\IRP-City\gamemodes\Deathmatch.pwn(1316) : error 029: invalid expression, assumed zeroC:\Users\Patrick\Desktop\IRP-City\gamemodes\Deathmatch.pwn(1316) : warning 215: expression has no effectPawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase2 Errors.


    ScriptCode
    ocmd:tban(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,2))return SendClientMessage(playerid,ROT,"Du hast kein Admin Level 2.");
    new pID,time,grund[64],wert,string[144];
    if(sscanf(params,"dds",pID,time,grund))return SendClientMessage(playerid,-1,"Tippe: /tban [id] [Dauer] [Grund]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"Spieler ist nicht online!");
    if(time > 0 && time < 1000)
    {
    format(string,sizeof string,"%s wurde von %s für %d gebannt. Grund: %s",NamePlayer(pID),NamePlayer(playerid),time,grund);
    SendClientMessageToAll(ROT,string);
    wert = gettime() + (60*time);
    SetPVarInt(pID,"timeban",wert);
    SetTimerEx("WarnTimer2",250,false,"d",pID);
    SetPVarInt(playerid,"Banned1",GetPVarInt(playerid,"Banned1")+1);
    format(string,sizeof string,"Du hast den Spieler %s erfolgreich gesperrt.",NamePlayer(pID));
    SendClientMessage(playerid,-1,string);
    new Spieler[128];
    printf("Account suche beginnt!");
    format(Spieler,sizeof Spieler,"/Accounts/%s.txt",NamePlayer(pID));
    printf("Spieler: %s -> %d",Spieler,dini_Exists(Spieler));
    printf("reason: %s",grund);
    dini_Set(Spieler,"tbangrund",grund);
    dini_Set(Spieler,"tbanadmin",NamePlayer(playerid));
    dini_Set(Spieler,"timeban",wert));//FEHLERZEILE
    printf("Dini Bearbeitung");
    SetTimerEx("Gebannt",200,false,"d",pID);
    Log("TimeBanLog",string);
    format(string,sizeof string,"Du wurdest von %s für %d gebannt. Grund: %s",NamePlayer(playerid),time,grund);
    BanExWithMessage(pID,ROT,string,grund);
    return 1;
    }
    return SendClientMessage(playerid,ROT,"Ungültige Zeit!");
    }

  • Jeffry:
    Hab 2 bei "Dauer" eingegeben aber es kommt das (siehe anhang)


    Weißt du woran es liegen kann?

    Codes
    ocmd:tban(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,2))return SendClientMessage(playerid,ROT,"Du hast kein Admin Level 2.");
    new pID,time,grund[64],wert,string[144];
    if(sscanf(params,"dds",pID,time,grund))return SendClientMessage(playerid,-1,"Tippe: /tban [id] [Dauer] [Grund]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"Spieler ist nicht online!");
    if(time > 0 && time < 1000)
    {
    format(string,sizeof string,"%s wurde von %s für %d gebannt. Grund: %s",NamePlayer(pID),NamePlayer(playerid),time,grund);
    SendClientMessageToAll(ROT,string);
    wert = gettime() + (60*time);
    SetPVarInt(pID,"timeban",wert);
    SetTimerEx("WarnTimer2",250,false,"d",pID);
    SetPVarInt(playerid,"Banned1",GetPVarInt(playerid,"Banned1")+1);
    format(string,sizeof string,"Du hast den Spieler %s erfolgreich gesperrt.",NamePlayer(pID));
    SendClientMessage(playerid,-1,string);
    new Spieler[128];
    printf("Account suche beginnt!");
    format(Spieler,sizeof Spieler,"/Accounts/%s.txt",NamePlayer(pID));
    printf("Spieler: %s -> %d",Spieler,dini_Exists(Spieler));
    printf("reason: %s",grund);
    dini_Set(Spieler,"tbangrund",grund);
    dini_Set(Spieler,"tbanadmin",NamePlayer(playerid));
    dini_IntSet(Spieler,"timeban",wert);
    printf("Dini Bearbeitung");
    SetTimerEx("Gebannt",200,false,"d",pID);
    Log("TimeBanLog",string);
    format(string,sizeof string,"Du wurdest von %s für %d gebannt. Grund: %s",NamePlayer(playerid),time,grund);
    BanExWithMessage(pID,ROT,string,grund);
    return 1;
    }
    return SendClientMessage(playerid,ROT,"Ungültige Zeit!");
    } else
    {
    new accstring[150];
    format(accstring,sizeof(accstring),"/Accounts/%s.txt",NamePlayer(playerid));
    if(gettime()<dini_Int(accstring,"timeban"))
    {
    dini_Get(accstring,"tbangrund");
    dini_Get(accstring,"tbanadmin");
    dini_Get(accstring,"timeban");
    {
    new string[384],accname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,accname,sizeof(accname));
    format(string,sizeof(string),"Ihr Account ist temporär gesperrt, mit ihm kann nicht weiter gespielt werden.\n\nWenn das nicht Ihr Account ist, verwenden Sie einen anderen Nicknamen.\nWenn Sie zu Unrecht gesperrt wurden, dann melden Sie sich bitte bei einem Admin.\n\nInformationen:\nBan-Grund: %s\nAusführerender Admin: %s\nDauer der Sperre: %s",dini_Get(accstring,"tbangrund"),dini_Get(accstring,"tbanadmin"),dini_Get(accstring,"timeban"));
    ShowPlayerDialog(playerid,DIALOG_TIMEBAN,DIALOG_STYLE_MSGBOX,"Spielausschluss",string,"Okay","");
    SetTimer("Gebannt",1450,false);
    return 0;
    }
    }
    }
    return 1;

  • format(string,sizeof(string),"Ihr Account ist temporär gesperrt, mit ihm kann nicht weiter gespielt werden.\n\nWenn das nicht Ihr Account ist, verwenden Sie einen anderen Nicknamen.\nWenn Sie zu Unrecht gesperrt wurden, dann melden Sie sich bitte bei einem Admin.\n\nInformationen:\nBan-Grund: %s\nAusführerender Admin: %s\nDauer der Sperre: %s",dini_Get(accstring,"tbangrund"),dini_Get(accstring,"tbanadmin"),dini_Get(accstring,"timeban"));
    Zu:
    format(string,sizeof(string),"Ihr Account ist temporär gesperrt, mit ihm kann nicht weiter gespielt werden.\n\nWenn das nicht Ihr Account ist, verwenden Sie einen anderen Nicknamen.\nWenn Sie zu Unrecht gesperrt wurden, dann melden Sie sich bitte bei einem Admin.\n\nInformationen:\nBan-Grund: %s\nAusführerender Admin: %s\nDauer der Sperre: %d",dini_Get(accstring,"tbangrund"),dini_Get(accstring,"tbanadmin"),((dini_Int(accstring,"timeban")-gettime())/60) +1 );

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()