From d7474947f083634600c7ae4878297d645a211fb0 Mon Sep 17 00:00:00 2001 From: Cooldude2606 Date: Tue, 9 Apr 2019 19:09:02 +0100 Subject: [PATCH] Added Test role config --- config/permission_groups.lua | 4 ++-- config/roles.lua | 45 +++++++++++++++++++++++++++++++++++- expcore/roles.lua | 7 +++++- 3 files changed, 52 insertions(+), 4 deletions(-) diff --git a/config/permission_groups.lua b/config/permission_groups.lua index b14fa9e9..b895e6ed 100644 --- a/config/permission_groups.lua +++ b/config/permission_groups.lua @@ -100,7 +100,7 @@ Permission_Groups.new_group('Restricted') :disallow_all() :allow('write_to_console') ---- These events are used until a role system is added to make it easier for our admins +--[[ These events are used until a role system is added to make it easier for our admins local trusted_time = 60*60*60*10 -- 10 hour local standard_time = 60*60*60*3 -- 3 hour @@ -137,4 +137,4 @@ Event.on_nth_tick(check_interval,function(event) for _,player in pairs(game.connected_players) do assign_group(player) end -end) \ No newline at end of file +end)]] \ No newline at end of file diff --git a/config/roles.lua b/config/roles.lua index bd2e69d1..7d685e13 100644 --- a/config/roles.lua +++ b/config/roles.lua @@ -1 +1,44 @@ -local Roles = require 'expcore.roles' \ No newline at end of file +local Roles = require 'expcore.roles' + +-- Use these to adjust for ticks ie game.tick < 5*minutes +local seconds, minutes, hours = 60, 3600, 216000 + +local function playtime(time_required) + return function(player) + if player.online_time > time_required then + return true + end + end +end + +Roles.define_flag_trigger('admin',function(player,state) + player.admin = state +end) + +Roles.new_role('Server','SYS') +:set_allow_all(true) + +Roles.new_role('Senior Admin','SAdmin') +:set_allow_all(false) +:set_flag('admin',true) +:set_parent('Regular') +:set_permission_group('Admin') + +Roles.new_role('Regular','Reg') +:set_allow_all(false) +:set_auto_promote_condition(playtime(5*minutes)) +:set_parent('Guest') +:set_permission_group('Trusted') + +Roles.new_role('Guest','') +:set_allow_all(false) +:set_permission_group('Standard') + +Roles.set_root('Server') +Roles.set_default('Guest') + +Roles.define_role_order{ + 'Server', + 'Senior Admin', + 'Guest' +} \ No newline at end of file diff --git a/expcore/roles.lua b/expcore/roles.lua index be3f834b..d5fb08df 100644 --- a/expcore/roles.lua +++ b/expcore/roles.lua @@ -166,6 +166,9 @@ function Roles.define_role_order(order) Roles.config.order = sanitized for index,role in pairs(sanitized) do Roles.config.roles[role].index = index + if role.parent then + setmetatable(role.allow, Roles.config.roles[role.parent].allow) + end end end @@ -388,7 +391,9 @@ local function role_update(event) highest = role end end - Groups.set_player_group(player,highest.permission_group) + if highest.permission_group then + Groups.set_player_group(player,highest.permission_group) + end end Event.add(Roles.player_role_assigned,role_update)