Skip to content

Commit bfe9da8

Browse files
Merge pull request #48 from Aperture-Development/bugfix-#46
Bugfix #46
2 parents 8cbf01e + b2083cb commit bfe9da8

File tree

1 file changed

+42
-29
lines changed

1 file changed

+42
-29
lines changed

lua/msync/server/modules/sv_mrsync.lua

Lines changed: 42 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,12 @@ function MSync.modules.MRSync.init( transaction )
3636
]] ))
3737

3838
--[[
39-
Description: Function to save a players rank
39+
Description: Function to save a players rank using steamid and group name
4040
Returns: nothing
4141
]]
42-
function MSync.modules.MRSync.saveRank(ply)
42+
function MSync.modules.MRSync.saveRankByID(steamid, group)
4343

44-
if MSync.modules.MRSync.settings.nosync[ply:GetUserGroup()] then return end;
44+
if MSync.modules.MRSync.settings.nosync[group] then return end;
4545

4646
local addUserRankQ = MSync.DBServer:prepare( [[
4747
INSERT INTO `tbl_mrsync` (user_id, rank, server_group)
@@ -52,10 +52,10 @@ function MSync.modules.MRSync.init( transaction )
5252
)
5353
ON DUPLICATE KEY UPDATE rank=VALUES(rank);
5454
]] )
55-
addUserRankQ:setString(1, ply:SteamID())
56-
addUserRankQ:setString(2, ply:SteamID64())
57-
addUserRankQ:setString(3, ply:GetUserGroup())
58-
if not MSync.modules.MRSync.settings.syncall[ply:GetUserGroup()] then
55+
addUserRankQ:setString(1, steamid)
56+
addUserRankQ:setString(2, util.SteamIDTo64( steamid ))
57+
addUserRankQ:setString(3, group)
58+
if not MSync.modules.MRSync.settings.syncall[group] then
5959
addUserRankQ:setString(4, MSync.settings.data.serverGroup)
6060
else
6161
addUserRankQ:setString(4, "allservers")
@@ -65,32 +65,42 @@ function MSync.modules.MRSync.init( transaction )
6565
end
6666

6767
--[[
68-
Description: Function to save a players rank using steamid and group name
69-
Returns: nothing
68+
Description: Function to validate user rank in DB is correct
69+
Arguments:
70+
- steamid [STRING] - the steamid of the user to validate
71+
- group [STRING] - the group of the user to validate
7072
]]
71-
function MSync.modules.MRSync.saveRankByID(steamid, group)
73+
function MSync.modules.MRSync.validateData( steamid, group )
7274

7375
if MSync.modules.MRSync.settings.nosync[group] then return end;
7476

75-
local addUserRankQ = MSync.DBServer:prepare( [[
76-
INSERT INTO `tbl_mrsync` (user_id, rank, server_group)
77-
VALUES (
78-
(SELECT p_user_id FROM tbl_users WHERE steamid=? AND steamid64=?),
79-
?,
80-
(SELECT p_group_id FROM tbl_server_grp WHERE group_name=?)
81-
)
82-
ON DUPLICATE KEY UPDATE rank=VALUES(rank);
83-
]] )
84-
addUserRankQ:setString(1, steamid)
85-
addUserRankQ:setString(2, util.SteamIDTo64( steamid ))
86-
addUserRankQ:setString(3, group)
77+
local removeOldRanksQ
78+
8779
if not MSync.modules.MRSync.settings.syncall[group] then
88-
addUserRankQ:setString(4, MSync.settings.data.serverGroup)
80+
81+
removeOldRanksQ = MSync.DBServer:prepare( [[
82+
DELETE FROM `tbl_mrsync` WHERE user_id=(SELECT p_user_id FROM tbl_users WHERE steamid=? AND steamid64=?) AND server_group=(SELECT p_group_id FROM tbl_server_grp WHERE group_name='allservers');
83+
]] )
84+
removeOldRanksQ:setString(1, steamid)
85+
removeOldRanksQ:setString(2, util.SteamIDTo64(steamid))
86+
87+
removeOldRanksQ.onSuccess = function( q, data )
88+
MSync.modules.MRSync.saveRankByID(steamid, group)
89+
end
8990
else
90-
addUserRankQ:setString(4, "allservers")
91+
92+
removeOldRanksQ = MSync.DBServer:prepare( [[
93+
DELETE FROM `tbl_mrsync` WHERE user_id=(SELECT p_user_id FROM tbl_users WHERE steamid=? AND steamid64=?) AND server_group<>(SELECT p_group_id FROM tbl_server_grp WHERE group_name='allservers');
94+
]] )
95+
removeOldRanksQ:setString(1, steamid)
96+
removeOldRanksQ:setString(2, util.SteamIDTo64(steamid))
97+
98+
removeOldRanksQ.onSuccess = function( q, data )
99+
MSync.modules.MRSync.saveRankByID(steamid, group)
100+
end
91101
end
92102

93-
addUserRankQ:start()
103+
removeOldRanksQ:start()
94104
end
95105

96106
--[[
@@ -99,14 +109,15 @@ function MSync.modules.MRSync.init( transaction )
99109
]]
100110
function MSync.modules.MRSync.loadRank(ply)
101111
local loadUserQ = MSync.DBServer:prepare( [[
102-
SELECT rank FROM `tbl_mrsync`
112+
SELECT `rank` FROM `tbl_mrsync`
103113
WHERE user_id=(
104114
SELECT p_user_id FROM tbl_users WHERE steamid=? AND steamid64=?
105115
) AND (server_group=(
106116
SELECT p_group_id FROM tbl_server_grp WHERE group_name=?
107117
) OR server_group=(
108118
SELECT p_group_id FROM tbl_server_grp WHERE group_name='allservers'
109-
));
119+
))
120+
LIMIT 1;
110121
]] )
111122
loadUserQ:setString(1, ply:SteamID())
112123
loadUserQ:setString(2, ply:SteamID64())
@@ -226,12 +237,14 @@ function MSync.modules.MRSync.hooks()
226237

227238
-- Save rank on disconnect
228239
hook.Add("PlayerDisconnected", "mrsync.H.saveRank", function(ply)
229-
MSync.modules.MRSync.saveRank(ply)
240+
--MSync.modules.MRSync.saveRank(ply)
241+
MSync.modules.MRSync.validateData(ply:SteamID(), ply:GetUserGroup())
230242
end)
231243

232244
-- Save rank on GroupChange
233245
hook.Add("ULibUserGroupChange", "mrsync.H.saveRankOnUpdate", function(sid, _, _, new_group, _)
234-
MSync.modules.MRSync.saveRankByID(sid, new_group)
246+
--MSync.modules.MRSync.saveRankByID(sid, new_group)
247+
MSync.modules.MRSync.validateData(sid, new_group)
235248
end)
236249
end
237250

0 commit comments

Comments
 (0)