Mute Befehl

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
  • HeyHoo,


    Ich habe einen kleinen /mute - Befehl gebastelt, welcher sich nach Minuten richtet.
    Doch wenn ein Spieler gemutet wird, wird in die Dini eine Zahl im 9-Fachen Wert angelegt.
    Ausserdem würde ich gerne wissen wie die Zeit abläuft!


    Hier mein Code:

    ocmd:mute(playerid,params[])
    {
    if(isPlayerAnAdmin(playerid,1))
    {
    new pID;
    new time;
    new reason[128];
    if(sscanf(params,"uis",pID,time,reason))return SendClientMessage(playerid,Grau,"Benutze: /mute [Spieler-ID] [Zeit (in Minuten)] [Grund]");
    {
    if(isPlayerAnAdmin(pID,1))
    {
    SendClientMessage(playerid,dr,"Du kannst keinen Admin muten!");
    return 1;
    }
    else
    {
    new string[128];
    new msg[128];
    format(string,sizeof(string),"Du wurdest von Admin %s für %i Minuten gemutet! Grund: %s!",PlayerName(playerid),time,reason);
    format(msg,sizeof(msg),"Admin: %s mutet den Spieler %s für %i Minuten! Grund: %s!",PlayerName(playerid),PlayerName(pID),time,reason);
    new Mins;
    Mins=gettime()+(60*time);
    SetPVarInt(pID,"Mute",Mins);
    SpielerSpeichern(pID);
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i))
    {
    if(isPlayerAnAdmin(i,1337))
    {
    SendClientMessage(i,admwarn,msg);
    }
    else if(isPlayerAnAdmin(i,1338))
    {
    SendClientMessage(i,admwarn,msg);
    }
    }
    }
    }
    }
    }
    return 1;
    }


    Bitte um Hilfe!


    lg

  • Mins=gettime()+(60*time);
    gettime gibt einen Unix-Timestamp.
    Gerade liegt der bei 1337027564. Da kommt noch 60 * time drauf.
    Die Zeit die du dort dann in "Mins" speicherst,ist der Unix-Timestamp,bis wann der User gemutet sein soll. Soweit ist ja auch alles richtig.
    Du müsstest dann nur beim Einloggen bzw Sprechen schauen,ob der aktuelle Unix-Timestamp ( gettime() ) größer ist,als der Wert dem du den Spieler zuweist.

  • Na den:
    Mins=gettime()+(60*time);
    SetPVarInt(pID,"Mute",Mins);
    bzw speicherst du es doch auch bestimmt direkt in seiner Spielerdatei ( da SpielerSpeichern(pID); ) und ließt den Wert aus,sobald der Spieler den Server wieder betritt.
    Du merkst dir hier doch,bis WANN der Spieler seinen Mute hat. Ob das jetzt in der PVar ist oder Spielerdatei.
    Den Wert prüfst einfach gegen den aktuellen Unix-Timestamp ( gettime() ) um zu sehen,ob er noch gemutet ist oder nicht.Ist der aktuelle Unix-Timestamp größer,ist seine Entsperrung in der Vergangenheit und somit aufgehoben -> Nicht mehr gemutet .

  • Wie du das prüfst? Eine Abfrage ob größer oder kleiner, hab' ich doch geschrieben.
    Wie eine Abfrage geht,solltest du doch wissen :-O!


    if( gettime() >= GetPVarInt(playerid, "Mute") ) {
    // Nicht mehr gemutet, da der aktuelle Unix-Timestamp größer ist als der Timestamp,bis wann der Spieler gemutet ist.
    }