Skip to content

Commit e087efc

Browse files
committed
permmuting using sqlite
1 parent ac687ad commit e087efc

File tree

5 files changed

+45
-29
lines changed

5 files changed

+45
-29
lines changed

resources/irc/acl.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
<command name="!getserial" level="2" echoChannelOnly="true" />
1111
<command name="!mute" level="2" echoChannelOnly="true" />
1212
<command name="!unmute" level="2" echoChannelOnly="true" />
13+
<command name="!mutes" level="2" echoChannelOnly="true" />
1314
<command name="!freeze" level="2" echoChannelOnly="true" />
1415
<command name="!unfreeze" level="2" echoChannelOnly="true" />
1516
<command name="!kill" level="2" echoChannelOnly="true" />

resources/irc/scripts/echo.lua

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,11 @@ addEventHandler("onPlayerChangeNick",root,
6464
addEventHandler("onPlayerMute",root,
6565
function (arg)
6666
if type(arg) ~= "nil" then return end
67-
if mutes[getPlayerSerial(source)] then
68-
local admin = mutes[getPlayerSerial(source)].admin or "console"
69-
local reason = mutes[getPlayerSerial(source)].reason
70-
if reason then
71-
outputIRC("12* "..getPlayerName(source).." has been muted by "..admin.." ("..reason..")")
67+
local result = executeSQLSelect("ircmutes","serial,reason","serial = '"..getPlayerSerial(source).."'")
68+
if result and result[1] then
69+
local admin = result[1]["admin"] or "console"
70+
if result[1]["reason"] then
71+
outputIRC("12* "..getPlayerName(source).." has been muted by "..admin.." ("..result[1]["reason"]..")")
7272
else
7373
outputIRC("12* "..getPlayerName(source).." has been muted by "..admin)
7474
end

resources/irc/scripts/handling.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ setTimer(function ()
214214
for i,server in ipairs (ircGetServers()) do
215215
if (getTickCount() - servers[server][11]) > 180000 then
216216
servers[server][11] = getTickCount()
217-
ircReconnect(server,"Connection timed out")
217+
restartResource(getThisResource())
218218
elseif (getTickCount() - servers[server][11]) > 120000 then
219219
ircRaw(server,"PING")
220220
end

resources/irc/scripts/irccommands.lua

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,20 @@ addEventHandler("onIRCResourceStart",root,
9494
end
9595
end
9696
)
97+
98+
addIRCCommandHandler("!mutes",
99+
function (server,channel,user,command)
100+
local results = executeSQLSelect("ircmutes","player,admin,reason")
101+
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"]))
104+
end
105+
else
106+
outputIRC("12* No mutes")
107+
end
108+
end
109+
)
110+
97111
addIRCCommandHandler("!kill",
98112
function (server,channel,user,command,name,...)
99113
if not name then ircNotice(user,"syntax is !kill <name> [reason]") return end

resources/irc/scripts/utility.lua

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
-- Date: 31.10.2010
77
---------------------------------------------------------------------
88

9+
executeSQLCreateTable("ircmutes","player TEXT, serial TEXT, reason TEXT, admin TEXT, mute TEXT, duration TEXT")
10+
911
------------------------------------
1012
-- Utility
1113
------------------------------------
@@ -82,51 +84,50 @@ function getTimeStamp ()
8284
return "["..(time.year + 1900).."-"..(time.month+1).."-"..time.monthday.." "..time.hour..":"..time.minute..":"..time.second.."]"
8385
end
8486

85-
mutes = {}
8687
_setPlayerMuted = setPlayerMuted
8788
function setPlayerMuted (player,muted,reason,admin,time)
8889
if muted then
89-
mutes[getPlayerSerial(player)] = {reason = reason,admin = admin,time = time,tick = getTickCount()}
90+
executeSQLInsert("ircmutes","'"..tostring(getPlayerName(player)).."','"..tostring(getPlayerSerial(player)).."','"..tostring(reason).."','"..tostring(admin).."','"..tostring(getRealTime().timestamp*1000).."','"..tostring(time).."'")
9091
else
91-
mutes[getPlayerSerial(player)] = nil
92+
executeSQLDelete("ircmutes","serial = '"..tostring(getPlayerSerial(player)).."'")
9293
end
9394
return _setPlayerMuted(player,muted)
9495
end
9596

97+
addEventHandler("onPlayerUnmute",root,
98+
function ()
99+
executeSQLDelete("ircmutes","serial = '"..tostring(getPlayerSerial(player)).."'")
100+
end
101+
)
102+
96103
setTimer(function ()
97-
for serial,info in pairs (mutes) do
98-
if info.time and (getTickCount() - info.tick) > info.time then
99-
for i,player in ipairs (getElementsByType("player")) do
100-
if getPlayerSerial(player) == serial then
101-
setPlayerMuted(player,false)
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
102115
end
103-
end
104-
if mutes[serial] then
105-
mutes[serial] = nil
116+
executeSQLDelete("ircmutes","serial = '"..tostring(result["serial"]).."'")
106117
end
107118
end
108119
end
109120
end,5000,0)
110121

111122
addEventHandler("onPlayerJoin",root,
112123
function ()
113-
local mute = mutes[(getPlayerSerial(source))]
114-
if mute then
124+
local result = executeSQLSelect("ircmutes","serial,reason","serial = '"..getPlayerSerial(source).."'")
125+
if result and result[1] then
115126
_setPlayerMuted(source,true)
116127
end
117128
end
118129
)
119130

120-
addEventHandler("onResourceStop",resourceRoot,
121-
function ()
122-
for i,player in ipairs (getElementsByType("player")) do
123-
if mutes[getPlayerSerial(player)] then
124-
setPlayerMuted(player,false)
125-
end
126-
end
127-
end
128-
)
129-
130131
local times = {}
131132
times["ms"] = 1
132133
times["sec"] = 1000

0 commit comments

Comments
 (0)