Skip to content

Commit 04d74a4

Browse files
Bugfix #46
- Fixed a bug causing the allserver rank to not be prioritized
1 parent 90df549 commit 04d74a4

File tree

1 file changed

+48
-4
lines changed

1 file changed

+48
-4
lines changed

lua/msync/server/modules/sv_mrsync.lua

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

3838
--[[
39+
OBSOLETE
3940
Description: Function to save a players rank
4041
Returns: nothing
4142
]]
@@ -93,20 +94,61 @@ function MSync.modules.MRSync.init( transaction )
9394
addUserRankQ:start()
9495
end
9596

97+
--[[
98+
Description: Function to validate user rank in DB is correct
99+
Arguments:
100+
- steamid [STRING] - the steamid of the user to validate
101+
- group [STRING] - the group of the user to validate
102+
]]
103+
function MSync.modules.MRSync.validateData( steamid, group )
104+
105+
if MSync.modules.MRSync.settings.nosync[group] then return end;
106+
107+
local removeOldRanksQ
108+
109+
if not MSync.modules.MRSync.settings.syncall[group] then
110+
111+
removeOldRanksQ = MSync.DBServer:prepare( [[
112+
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');
113+
]] )
114+
removeOldRanksQ:setString(1, steamid)
115+
removeOldRanksQ:setString(2, util.SteamIDTo64(steamid))
116+
117+
removeOldRanksQ.onSuccess = function( q, data )
118+
MSync.modules.MRSync.saveRankByID(steamid, group)
119+
end
120+
else
121+
122+
removeOldRanksQ = MSync.DBServer:prepare( [[
123+
DELETE FROM `tbl_mrsync` WHERE user_id=(SELECT p_user_id FROM tbl_users WHERE steamid=? AND steamid64=?);
124+
]] )
125+
removeOldRanksQ:setString(1, steamid)
126+
removeOldRanksQ:setString(2, util.SteamIDTo64(steamid))
127+
128+
removeOldRanksQ.onSuccess = function( q, data )
129+
MSync.modules.MRSync.saveRankByID(steamid, group)
130+
end
131+
end
132+
133+
removeOldRanksQ:start()
134+
end
135+
96136
--[[
97137
Description: Function to load a players rank
98138
Returns: nothing
99139
]]
100140
function MSync.modules.MRSync.loadRank(ply)
101141
local loadUserQ = MSync.DBServer:prepare( [[
102-
SELECT rank FROM `tbl_mrsync`
142+
SELECT `rank` FROM `tbl_mrsync`
103143
WHERE user_id=(
104144
SELECT p_user_id FROM tbl_users WHERE steamid=? AND steamid64=?
105145
) AND (server_group=(
106146
SELECT p_group_id FROM tbl_server_grp WHERE group_name=?
107147
) OR server_group=(
108148
SELECT p_group_id FROM tbl_server_grp WHERE group_name='allservers'
109-
));
149+
))
150+
ORDER BY server_group ASC
151+
LIMIT 1;
110152
]] )
111153
loadUserQ:setString(1, ply:SteamID())
112154
loadUserQ:setString(2, ply:SteamID64())
@@ -226,12 +268,14 @@ function MSync.modules.MRSync.hooks()
226268

227269
-- Save rank on disconnect
228270
hook.Add("PlayerDisconnected", "mrsync.H.saveRank", function(ply)
229-
MSync.modules.MRSync.saveRank(ply)
271+
--MSync.modules.MRSync.saveRank(ply)
272+
MSync.modules.MRSync.validateData(ply:SteamID(), ply:GetUserGroup())
230273
end)
231274

232275
-- Save rank on GroupChange
233276
hook.Add("ULibUserGroupChange", "mrsync.H.saveRankOnUpdate", function(sid, _, _, new_group, _)
234-
MSync.modules.MRSync.saveRankByID(sid, new_group)
277+
--MSync.modules.MRSync.saveRankByID(sid, new_group)
278+
MSync.modules.MRSync.validateData(sid, new_group)
235279
end)
236280
end
237281

0 commit comments

Comments
 (0)