__title__ = 'TempMute'
__author__ = 'Jakkee'
__version__ = '1.0'
import clr
clr.AddReferenceByName("Fougerite")
import Fougerite
MuteTime = 1800000
#1000 = 1 Second
#60000 = 1 Minute
#300000 = 5 Minutes
#1800000 = 30 Minutes
#3600000 = 1 Hour
class TempMute:
def On_Command(self, Player, cmd, args):
if cmd == "tempmute":
if Player.Moderator or Player.Admin:
if len(args) > 0:
target = self.CheckV(Player, args)
if target is not None:
if not target.Admin or target.Moderator:
Data = Plugin.CreateDict()
Data["TargetSteamID"] = Player.SteamID
Server.GetRustPPAPI().Mute(long(target.SteamID), target.Name)
Plugin.CreateParallelTimer("UnMute", MuteTime, Data).Start()
Fougerite.Logger.LogWarning(target.Name + " has been muted by " + Player.Name)
target.MessageFrom("TempMute", "You have been muted for " + str(MuteTime * 1000) + " seconds")
Server.BroadcastFrom("TempMute", target.Name + " has been muted for " + str(MuteTime * 1000) + " seconds by " + Player.Name)
else:
Player.MessageFrom("TempMute", "You can not mute another staff member!")
else:
return
else:
Player.MessageFrom("TempMute", "Usage: /tempmute <Player Name>")
else:
Player.messageFrom("TempMute", "You are not allowed to use this command!")
def UnMuteCallback(self, timer):
timer.Kill()
Data = timer.Args
PlayerID = Data["TargetSteamID"]
Server.GetRustPPAPI().UnMute(long(PlayerID))
try:
player = Fougerite.Player.FindBySteamID(PlayerID)
Fougerite.Logger.LogWarning(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