@@ -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 )
236249end
237250
0 commit comments