Skip to content

Commit

Permalink
Implemented setting player level (issue #61, #62)
Browse files Browse the repository at this point in the history
  • Loading branch information
Timo Smit committed Sep 4, 2016
1 parent e993fcc commit e745fe4
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 13 deletions.
3 changes: 2 additions & 1 deletion luascripts/admin/admin.lua
Expand Up @@ -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

Expand Down
48 changes: 40 additions & 8 deletions luascripts/commands/admin/setlevel.lua
Expand Up @@ -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()))
4 changes: 2 additions & 2 deletions luascripts/db/mysql.lua
Expand Up @@ -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)
Expand Down
4 changes: 2 additions & 2 deletions luascripts/db/sqlite3.lua
Expand Up @@ -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)
Expand Down

0 comments on commit e745fe4

Please sign in to comment.