From e745fe4c2c4ee3504e60ebbbefaaa157818f886f Mon Sep 17 00:00:00 2001 From: Timo Smit Date: Sun, 4 Sep 2016 22:28:57 +0200 Subject: [PATCH] Implemented setting player level (issue #61, #62) --- luascripts/admin/admin.lua | 3 +- luascripts/commands/admin/setlevel.lua | 48 +++++++++++++++++++++----- luascripts/db/mysql.lua | 4 +-- luascripts/db/sqlite3.lua | 4 +-- 4 files changed, 46 insertions(+), 13 deletions(-) diff --git a/luascripts/admin/admin.lua b/luascripts/admin/admin.lua index a50cb7c..462eeb3 100644 --- a/luascripts/admin/admin.lua +++ b/luascripts/admin/admin.lua @@ -79,7 +79,8 @@ end function admin.setPlayerLevel(clientId, level, adminId) local playerid = db.getplayer(stats.get(clientId, "playerGUID"))["id"] local adminid = db.getplayer(stats.get(adminId, "playerGUID"))["id"] - + + db.updateplayerlevel(playerid, level) db.addsetlevel(playerid, level, adminid, os.time()) end diff --git a/luascripts/commands/admin/setlevel.lua b/luascripts/commands/admin/setlevel.lua index 0922d1c..5111eb1 100644 --- a/luascripts/commands/admin/setlevel.lua +++ b/luascripts/commands/admin/setlevel.lua @@ -29,22 +29,54 @@ function commandSetLevel(clientId, cmdArguments) else cmdClient = tonumber(cmdArguments[1]) end - + if cmdClient == -1 then return false elseif not et.gentity_get(cmdClient, "pers.netname") then return false end + + cmdArguments[2] = tonumber(cmdArguments[2]) or 0 + + admin.setPlayerLevel(cmdClient, tonumber(cmdArguments[2]), clientId) + + return false +end +commands.addadmin("setlevel", commandSetLevel, auth.PERM_SETLEVEL, "sets the admin level of a player", "^9[^3name|slot#^9] ^9[^3level^9]", (settings.get("g_standalone") == 0 and db.isconnected())) + +function commandSetLevel(clientId, cmdArguments) + if cmdArguments[1] == nil then + et.trap_SendConsoleCommand(et.EXEC_APPEND, "csay "..clientId.." \"^dsetlevel usage: "..commands.getadmin("setlevel")["syntax"].."\";") + + return true + elseif tonumber(cmdArguments[1]) == nil then + cmdClient = et.ClientNumberFromString(cmdArguments[1]) + else + cmdClient = tonumber(cmdArguments[1]) + end - -- plays a promotion sound - et.trap_SendConsoleCommand(et.EXEC_APPEND, "playsound \"/sound/vo/general/axis/hq_promogen.wav\";") - - if db.isconnected() then - cmdArguments[2] = tonumber(cmdArguments[2]) or 0 + if cmdClient == -1 then + et.trap_SendConsoleCommand(et.EXEC_APPEND, "csay "..clientId.." \"^dsetlevel: ^9no or multiple matches for '^7"..cmdArguments[1].."^9'.\";") - admin.setPlayerLevel(cmdClient, tonumber(cmdArguments[2]), clientId) + return true + elseif not et.gentity_get(cmdClient, "pers.netname") then + et.trap_SendConsoleCommand(et.EXEC_APPEND, "csay "..clientId.." \"^dsetlevel: ^9no connected player by that name or slot #\";") + + return true end + if auth.getlevel(cmdClient) > auth.getlevel(clientId) then + et.trap_SendConsoleCommand(et.EXEC_APPEND, "csay "..clientId.." \"^dsetlevel: ^9sorry, but your intended victim has a higher admin level than you do.\";") + + return true + end + + cmdArguments[2] = tonumber(cmdArguments[2]) or 0 + + admin.setPlayerLevel(cmdClient, tonumber(cmdArguments[2]), clientId) + + et.trap_SendConsoleCommand(et.EXEC_APPEND, "csay -1 \"^dsetlevel: ^7"..et.gentity_get(cmdClient, "pers.netname").." ^9is now a level ^7"..cmdArguments[2].." ^9player.\";") + return false end -commands.addadmin("setlevel", commandSetLevel, auth.PERM_SETLEVEL, "sets the admin level of a player", "^9[^3name|slot#^9] ^9[^3level^9]", true) +commands.addadmin("setlevel", commandSetLevel, auth.PERM_SETLEVEL, "sets the admin level of a player", "^9[^3name|slot#^9] ^9[^3level^9]", (settings.get("g_standalone") == 0 and db.isconnected())) diff --git a/luascripts/db/mysql.lua b/luascripts/db/mysql.lua index 17836bf..6bd45a7 100644 --- a/luascripts/db/mysql.lua +++ b/luascripts/db/mysql.lua @@ -39,8 +39,8 @@ function mysql.updateplayerip(guid, ip) cur = assert(con:execute("UPDATE `player` SET `ip`='"..util.escape(ip).."' WHERE `guid`='"..util.escape(guid).."'")) end -function mysql.updateplayerlevel(guid, level) - cur = assert(con:execute("UPDATE `player` SET `level`='"..tonumber(level).."' WHERE `guid`='"..util.escape(guid).."'")) +function mysql.updateplayerlevel(id, level) + cur = assert(con:execute("UPDATE `player` SET `level_id`='"..tonumber(level).."' WHERE `id`='"..tonumber(id).."'")) end function mysql.getplayerid(clientid) diff --git a/luascripts/db/sqlite3.lua b/luascripts/db/sqlite3.lua index 3f093a2..2be688c 100644 --- a/luascripts/db/sqlite3.lua +++ b/luascripts/db/sqlite3.lua @@ -39,8 +39,8 @@ function sqlite3.updateplayerip(guid, ip) cur = assert(con:execute("UPDATE `player` SET `ip`='"..util.escape(ip).."' WHERE `guid`='"..util.escape(guid).."'")) end -function sqlite3.updateplayerlevel(guid, level) - cur = assert(con:execute("UPDATE `player` SET `level`='"..tonumber(level).."' WHERE `guid`='"..util.escape(guid).."'")) +function sqlite3.updateplayerlevel(id, level) + cur = assert(con:execute("UPDATE `player` SET `level_id`='"..tonumber(level).."' WHERE `id`='"..tonumber(id).."'")) end function sqlite3.getplayerid(clientid)