Bilal135 Posted December 9, 2018 Share Posted December 9, 2018 The code is written to mute the player upon spamming, which works fine, except that if a player quits the game, changes his nick, and joins again, he does get muted, but won't get unmuted. Also, if the player quits after being muted, and waits some time before joining back, he'll be forever muted again and won't get unmuted. Can't think of a way to fix this. Any help would be appreciated. mutedPlayerSerials = {} interval = 20000 addEvent("mutePlayer", true) addEventHandler("mutePlayer", root, function() local mutedPlayer = getPlayerName(source) local serial = getPlayerSerial(source) outputChatBox(mutedPlayer.." has been muted by console for spamming.", root, 255, 100, 100) table.insert(mutedPlayerSerials, serial) setPlayerMuted(source, true) setTimer(function() local serial = nil mutedPlayerSerials = {} local player = getPlayerFromName(mutedPlayer) if player then setPlayerMuted(player, false) outputChatBox(mutedPlayer.." has been unmuted by console.", root, 100, 255, 100) end end, interval, 1) end) mutedPlayer = false addEventHandler("onPlayerJoin", root, function() local serial = getPlayerSerial(source) for _, v in pairs(mutedPlayerSerials) do if serial == v then mutedPlayer = true break end end if mutedPlayer == true then local mutedPlayerName = getPlayerName(source) local mutedPlayer = getPlayerFromName(mutedPlayerName) setPlayerMuted(mutedPlayer, true) outputChatBox(mutedPlayerName.." has been muted by console.", root, 255, 100, 100) end end) Link to comment
Moderators Patrick Posted December 9, 2018 Moderators Share Posted December 9, 2018 muteTimers = {} interval = 20000 function findPlayerBySerial(serial) for _, player in ipairs(getElementsByType("player")) do if getPlayerSerial(player) == serial then return player end end return false end addEvent("mutePlayer", true) addEventHandler("mutePlayer", root, function() local name = getPlayerName(source) local serial = getPlayerSerial(source) outputChatBox(name.." has been muted by console for spamming.", root, 255, 100, 100) setPlayerMuted(source, true) muteTimers[serial] = setTimer(function() local player = findPlayerBySerial(serial) if player then setPlayerMuted(player, false) local name = getPlayerName(player) outputChatBox(name.." has been unmuted by console.", root, 100, 255, 100) end end, interval, 1) end) addEventHandler("onPlayerJoin", root, function() local serial = getPlayerSerial(source) if isTimer(muteTimers[serial]) then local name = getPlayerName(source) outputChatBox(name.." has been muted by console.", root, 255, 100, 100) setPlayerMuted(source, true) end end) Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now