TempMute "playername" "mutetime"

System

New Member
Member
Jun 19, 2016
2
0
1
30
Hello, i need help for TempMute py. i edit tempmute plugin but its not work.
i want to ;
/tempmute <PlayerName> <Time>

Line 76;

Code:
if cmd == "tempmute":
            if Player.Moderator or Player.Admin:
                if len(args) >= 2:
                    target = self.CheckV(Player, args)
                    array = self.GetQuoted(args, Player)
                    if array is not None:
                        if target is not None:
                            if not rustpp.IsMuted(long(target.SteamID)):
                                Data = Plugin.CreateDict()
                                Data["TargetSteamID"] = Player.SteamID
                                rustpp.Mute(long(target.SteamID), target.Name)
                                mutezaman=array[1]
                                DataStore.Add("MuteZaman", mutezaman)
                                Plugin.CreateParallelTimer("UnMute", mutezaman, Data).Start()
                                DataStore.Add("TempMute", target.SteamID, System.Environment.TickCount)
                                Fougerite.Logger.LogDebug(target.Name + " has been muted by " + Player.Name)
                                mutetime = str(datetime.timedelta(seconds=mutezaman / 1000))
                                target.MessageFrom("TempMute", "You have been muted for " + mutetime)
                                Server.BroadcastFrom("TempMute", target.Name + "[/color] has been muted for " + mutetime + ". By " + Player.Name)
                            else:
                                Player.MessageFrom("TempMute", target.Name + "[/color] has already been muted!")
                        else:
                            return
                    else:
                        return
                else:
                    Player.MessageFrom("TempMute", "Usage: /tempmute <Player Name> <Zaman>")
            else:
                Player.messageFrom("TempMute", "You are not allowed to use this command!")
 

Jakkee

Retired Staff
Retired Staff
Plugin Developer
Jul 28, 2014
1,465
932
113
Australia
i'll update the plugin, I didn't really like having a standard mute time
 

Jakkee

Retired Staff
Retired Staff
Plugin Developer
Jul 28, 2014
1,465
932
113
Australia
Try this, I'm going out for awhile so I can not test. (I will later on)
/tempmute "Player Name" <seconds>
E.G: /tempmute "Xiled Jakkee" 500
Python:
__title__ = 'TempMute'
__author__ = 'Jakkee'
__version__ = '1.1'

import clr
clr.AddReferenceByName("Fougerite")
import Fougerite, System, sys
path = Util.GetRootFolder()
sys.path.append(path + "\\Save\\Lib\\")
try:
    import datetime
except ImportError:
    raise ImportError("Missing Extra Libs folder! {DateTime module}")
rustpp = Server.GetRustPPAPI()

class TempMute:
    def On_PluginInit(self):
        Util.ConsoleLog(__title__ + " by " + __author__ + " Version: " + __version__ + " loaded.", False)
        try:
            count = 0
            for id in DataStore.Keys("TempMute"):
                if rustpp.IsMuted(long(id)):
                    calc = System.Environment.TickCount - DataStore.Get("TempMute", id)
                    if calc >= PSettings["MuteTime"]:
                        rustpp.UnMute(long(id))
                        count += 1
                    else:
                        Data = Plugin.CreateDict()
                        Data["TargetSteamID"] = id
                        Plugin.CreateParallelTimer("UnMute", PSettings["MuteTime"] - calc, Data).Start()
                else:
                    DataStore.Remove("TempMute", id)
                    count += 1
                continue
            Fougerite.Logger.LogDebug("TempMute: UnMuted " + str(count) + " players")
        except:
            pass

    def On_Command(self, Player, cmd, args):
        if cmd == "tempmute":
            if Player.Moderator or Player.Admin:
                if len(args) == 2:
                    targetargs = Util.GetQuotedArgs(args[0])
                    target = self.CheckV(Player, targetargs)
                    if target is not None:
                        mutetime = self.CheckString(args[1])
                        if mutetime is not None:
                            if not rustpp.IsMuted(long(target.SteamID)):
                                Data = Plugin.CreateDict()
                                Data["TargetSteamID"] = Player.SteamID
                                rustpp.Mute(long(target.SteamID), target.Name)
                                Plugin.CreateParallelTimer("UnMute", mutetime * 1000, Data).Start()
                                DataStore.Add("TempMute", target.SteamID, System.Environment.TickCount)
                                Fougerite.Logger.LogDebug(target.Name + " has been muted by " + Player.Name)
                                target.MessageFrom("TempMute", "You have been muted for " + mutetime + "seconds!")
                                Server.BroadcastFrom("TempMute", target.Name + "[/color] has been muted for " + mutetime + "seconds, By " + Player.Name)
                            else:
                                Player.MessageFrom("TempMute", target.Name + "[/color] has already been muted!")
                        else:
                            Player.MessageFrom("TempMute", 'Usage: /tempmute "Player Name" <Seconds>')
                    else:
                        return
                else:
                    Player.MessageFrom("TempMute", 'Usage: /tempmute "Player Name" <Seconds>')
                    Player.MessageFrom("TempMute", 'Example: /tempmute "' + Player.Name + '[/color]" 500')
            else:
                Player.messageFrom("TempMute", "You are not allowed to use this command!")

    def On_Chat(self, Player, ChatMessage):
        try:
            if rustpp.IsMuted(long(Player.SteamID)):
                calc = System.Environment.TickCount - DataStore.Get("TempMute", Player.SteamID)
                if calc >= PSettings["MuteTime"]:
                    DataStore.Remove("TempMute", Player.SteamID)
                    for timer in Plugin.GetParallelTimer("UnMute"):
                        data = timer.Args
                        if data["TargetSteamID"] == Player.SteamID:
                            timer.Kill()
                            break
                    rustpp.UnMute(long(Player.SteamID))
                    return True
                else:
                    timeleft = str(datetime.timedelta(seconds=(PSettings["MuteTime"] / 1000) - (calc / 1000)))
                    Player.MessageFrom("TempMute", "You have " + timeleft + " remaining")
            else:
                if DataStore.ContainsKey("TempMute", Player.SteamID):
                    DataStore.Remove("TempMute", Player.SteamID)
                    for timer in Plugin.GetParallelTimer("UnMute"):
                        data = timer.Args
                        if data["TargetSteamID"] == Player.SteamID:
                            timer.Kill()
                            break
        except:
            pass

    def CheckString(self, arg):
        try:
            number = int(float(str(arg)))
            return number
        except:
            return None

    def UnMuteCallback(self, timer):
        timer.Kill()
        Data = timer.Args
        PlayerID = Data["TargetSteamID"]
        DataStore.Remove("TempMute", PlayerID)
        if rustpp.IsMuted(long(PlayerID)):
            rustpp.UnMute(long(PlayerID))
            try:
                Player = Fougerite.Player.FindBySteamID(PlayerID)
                Fougerite.Logger.LogDebug(Player.Name + " has been unmuted!")
                Player.MessageFrom("TempMute", "You have been unmuted!")
            except:
                pass

    #Method provided by Spoock. Converted to Python by DreTaX
    def CheckV(self, Player, args):
        count = 0
        if hasattr(args, '__len__') and (not isinstance(args, str)):
            p = self.GetPlayerName(str.join(" ", args))
            if p is not None:
                return p
            for pl in Server.Players:
                for namePart in args:
                    if namePart.lower() in pl.Name.lower():
                        p = pl
                        count += 1
                        continue
        else:
            nargs = str(args).lower()
            p = self.GetPlayerName(nargs)
            if p is not None:
                return p
            for pl in Server.ActivePlayers:
                if nargs in pl.Name.lower():
                    p = pl
                    count += 1
                    continue
        if count == 0:
            Player.MessageFrom("TempMute", "Couldn't find " + str.join(" ", args) + "!")
            return None
        elif count == 1 and p is not None:
            return p
        else:
            Player.MessageFrom("TempMute", "Found " + str(count) + " players with similar a name. Use a more correct name!")
            return None
    #GetPlayerName provided by DreTaX

    def GetPlayerName(self, name):
        try:
            name = name.lower()
            for pl in Server.Players:
                if pl.Name.lower() == name:
                    return pl
            return None
        except:
            return None