Timeban 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
  • Guten Tag,
    Im voraus tut mir leid, dass ich dieses ältere Thema nochmal ausgrabe, aber mein Problem ist, das er nicht die Zeit speichert


    Befehl:
    ocmd:tban(playerid,params[])
    {
    new pID,reason[64],dauer,string[128];
    new timestamp;
    timestamp = gettime();
    new sekunden = dauer * 60;
    timestamp += sekunden;
    if(!IsPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,0xFF000F95,"[INFO]: Du bist kein Admin!");
    if(sscanf(params, "usi", pID, reason,dauer))return SendClientMessage(playerid, 0xFF004BFF, "/tban [ID] [Grund] [Dauer (in Minuten)]"); //wir speichern die 3 hinter dem Command angegeben Parameter in Variablen. Wenn nicht genau 3 Parameter angegeben wurden, wird eine ClientMessage returnt, in der der Admin angezeigt bekommt was genau er einzugeben hat
    if(!IsPlayerConnected(pID) || pID == INVALID_PLAYER_ID) return SendClientMessage(playerid, 0xBEBEBEFF,"[INFO]:Diesen Spieler gibt es nicht!");
    format(string,sizeof(string),"AdmCmd: %s wurde von %s für %d Minuten gebannt. Grund: %s",SpielerName(pID),SpielerName(playerid),dauer,reason);
    SendClientMessageToAll(ROT,string);
    mysql_SetInt("accounts", "TBan", timestamp, "Name", SpielerName(pID));
    Kick(playerid);
    return 1;
    }

    Spieler Laden:
    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))//Wir fragen ab ob der angegebene Spieler auch Online ist, und kein NPC ist (nur zur sicherhheit)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    new timestamp = gettime();
    new bisgebannt = mysql_GetInt("accounts", "TBan", "Name", name);
    if(timestamp < bisgebannt) //wenn der gerade genommene Timestamp kleiner als bisgebannt ist, liegt das entbannungsdatum in der Zukunft.
    {
    new differenz = bisgebannt - timestamp; //wir subtrahieren bisgebannt von timestamp, wir erhalten also die Zeit in Sekunden wie lange der Spieler noch gebannt ist.
    new minuten = differenz / 60; //wir machen aus den Sekunden Minuten....
    new str[64]; //neuer String wird deklariert....
    format(str,sizeof(str),"Du bist noch %i Minuten gebannt!",minuten); //So bekommt der Spieler sogar noch angezeigt, wie langer er noch genau gebannt ist.
    SendClientMessage(playerid,0xFAFAFAFF,str); //String wird dem Spieler ausgegeben
    Kick(playerid);//Kick erfolgt
    }
    SetPlayerScore(playerid,mysql_GetInt("accounts", "Level", "Name", name)); //Wir holen uns den wert der unter "Level" eingetragen ist und Speichern ihn in unserer Variable.
    GivePlayerMoney(playerid,mysql_GetInt("accounts", "Geld", "Name", name)); //Wir holen uns den wert der unter "Geld" eingetragen ist und Speichern ihn in unserer Variable.
    SetPVarInt(playerid,"Kills",mysql_GetInt("accounts", "Kills", "Name", name)); //Wir holen uns den wert der unter "Kills" eingetragen ist und Speichern ihn in unserer Variable.
    SetPVarInt(playerid,"Tode",mysql_GetInt("accounts", "Tode", "Name", name)); //Wir holen uns den wert der unter "Tode" eingetragen ist und Speichern ihn in unserer Variable.
    SetPVarFloat(playerid,"Health",mysql_GetFloat("accounts", "Health", "Name", name));
    SetPVarInt(playerid,"Adminlevel",mysql_GetInt("accounts", "Adminlevel", "Name", name));
    SetPVarInt(playerid,"Banned",mysql_GetInt("accounts", "Banned", "Name", name));
    }
    if(GetPVarInt(playerid,"Banned")==1)
    {
    SendClientMessage(playerid,0xFF000050,"[INFO]: Du bist Gebannt, kontaktiere einen Admin um entbannt zu werden.");
    Kick(playerid);
    }
    return 1;
    }


    Hoffe mir kann jemand weiterhelfen.


    MfG
    AndyWalker

  • Kann mit deiner sscanf Abfrage auch nicht klappen.
    Da du die zeit nach dem grund haben willst, aber du dann bei Zeit automatisch den Grund mit angibst.
    Mach es einfach so:

    if(sscanf(params, "uis", pID, dauer, reason))return SendClientMessage(playerid, 0xFF004BFF, "/tban [ID] [Dauer (in Minuten)] [Grund]");


    MFG Piet


  • /sign


    Mit freundlichen Grüßen,

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen