Skip to content

Commit 6d4f8fb

Browse files
committed
Nah I didn't forget this :S
1 parent e087efc commit 6d4f8fb

File tree

2 files changed

+51
-22
lines changed

2 files changed

+51
-22
lines changed

resources/irc/scripts/irccommands.lua

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,12 @@ addEventHandler("onIRCResourceStart",root,
9999
function (server,channel,user,command)
100100
local results = executeSQLSelect("ircmutes","player,admin,reason")
101101
if type(results) == "table" then
102-
for i,result in ipairs (results) do
103-
outputIRC("12* "..tostring(result["player"]).." by "..tostring(result["admin"]).." for: "..tostring(result["reason"]))
102+
if #results == 0 then
103+
outputIRC("12* There are no muted players")
104+
else
105+
for i,result in ipairs (results) do
106+
outputIRC("12* "..tostring(result["player"]).." by "..tostring(result["admin"]).." for: "..tostring(result["reason"]))
107+
end
104108
end
105109
else
106110
outputIRC("12* No mutes")

resources/irc/scripts/utility.lua

Lines changed: 45 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
---------------------------------------------------------------------
88

99
executeSQLCreateTable("ircmutes","player TEXT, serial TEXT, reason TEXT, admin TEXT, mute TEXT, duration TEXT")
10+
local mutes = {}
1011

1112
------------------------------------
1213
-- Utility
@@ -88,42 +89,66 @@ _setPlayerMuted = setPlayerMuted
8889
function setPlayerMuted (player,muted,reason,admin,time)
8990
if muted then
9091
executeSQLInsert("ircmutes","'"..tostring(getPlayerName(player)).."','"..tostring(getPlayerSerial(player)).."','"..tostring(reason).."','"..tostring(admin).."','"..tostring(getRealTime().timestamp*1000).."','"..tostring(time).."'")
92+
mutes[player] = setTimer(setPlayerMuted,time,1,player,false)
9193
else
9294
executeSQLDelete("ircmutes","serial = '"..tostring(getPlayerSerial(player)).."'")
95+
if mutes[player] then
96+
mutes[player] = nil
97+
end
9398
end
9499
return _setPlayerMuted(player,muted)
95100
end
96101

97102
addEventHandler("onPlayerUnmute",root,
98103
function ()
99-
executeSQLDelete("ircmutes","serial = '"..tostring(getPlayerSerial(player)).."'")
104+
executeSQLDelete("ircmutes","serial = '"..tostring(getPlayerSerial(source)).."'")
105+
if mutes[source] then
106+
mutes[source] = nil
107+
end
100108
end
101109
)
102110

103-
setTimer(function ()
104-
local results = executeSQLSelect("ircmutes","serial,mute,duration")
105-
if type(results) == "table" then
106-
for i,result in ipairs (results) do
107-
local mutetime = tonumber(result["mute"])
108-
local duration = tonumber(result["duration"])
109-
if mutetime and duration and (mutetime+duration) < (getRealTime().timestamp)*1000 then
110-
for i,player in ipairs (getElementsByType("player")) do
111-
if getPlayerSerial(player) == result["serial"] then
112-
_setPlayerMuted(player,false)
113-
outputChatBox("* "..getPlayerName(player).." has been unmuted",root,255,0,0)
114-
end
115-
end
116-
executeSQLDelete("ircmutes","serial = '"..tostring(result["serial"]).."'")
111+
addEventHandler("onPlayerJoin",root,
112+
function ()
113+
local result = executeSQLSelect("ircmutes","serial,reason,mute,duration","serial = '"..getPlayerSerial(source).."'")
114+
if result and result[1] then
115+
local time = (tonumber(result[1]["mute"])+tonumber(result[1]["duration"]))-(getRealTime().timestamp*1000)
116+
if time < 50 then
117+
executeSQLDelete("ircmutes","serial = '"..tostring(getPlayerSerial(source)).."'")
118+
else
119+
_setPlayerMuted(source,true)
120+
mutes[source] = setTimer(setPlayerMuted,time,1,source,false)
117121
end
118122
end
119123
end
120-
end,5000,0)
124+
)
121125

122-
addEventHandler("onPlayerJoin",root,
126+
addEventHandler("onPlayerQuit",root,
123127
function ()
124-
local result = executeSQLSelect("ircmutes","serial,reason","serial = '"..getPlayerSerial(source).."'")
125-
if result and result[1] then
126-
_setPlayerMuted(source,true)
128+
if mutes[source] then
129+
killTimer(mutes[source])
130+
mutes[source] = nil
131+
end
132+
end
133+
)
134+
135+
addEventHandler("onResourceStart",resourceRoot,
136+
function ()
137+
local results = executeSQLSelect("ircmutes","serial,mute,duration")
138+
if type(results) == "table" then
139+
for i,result in ipairs (results) do
140+
local mutetime = tonumber(result["mute"])
141+
local duration = tonumber(result["duration"])
142+
if mutetime and duration and (mutetime+duration) < (getRealTime().timestamp)*1000 then
143+
for i,player in ipairs (getElementsByType("player")) do
144+
if getPlayerSerial(player) == result["serial"] then
145+
_setPlayerMuted(player,false)
146+
outputChatBox("* "..getPlayerName(player).." has been unmuted",root,255,0,0)
147+
end
148+
end
149+
executeSQLDelete("ircmutes","serial = '"..tostring(result["serial"]).."'")
150+
end
151+
end
127152
end
128153
end
129154
)

0 commit comments

Comments
 (0)