diff --git a/modules/ExpGamingCore/Group/config.lua b/modules/ExpGamingCore/Group/config.lua index c7f6bbc6..09285a4a 100644 --- a/modules/ExpGamingCore/Group/config.lua +++ b/modules/ExpGamingCore/Group/config.lua @@ -1,11 +1,11 @@ -- defines for groups Group{ - name='_root', + name='Root', disallow={} } Group{ - name='_admin', + name='Admin', disallow={ 'edit_permission_group', 'delete_permission_group', @@ -14,7 +14,7 @@ Group{ } Group{ - name='_member', + name='Member', disallow={ 'edit_permission_group', 'delete_permission_group', @@ -23,7 +23,7 @@ Group{ } Group{ - name='_guest', + name='Guest', disallow={ 'edit_permission_group', 'delete_permission_group', diff --git a/modules/ExpGamingCore/Role/control.lua b/modules/ExpGamingCore/Role/control.lua new file mode 100644 index 00000000..8e2de7fb --- /dev/null +++ b/modules/ExpGamingCore/Role/control.lua @@ -0,0 +1,120 @@ +--- Adds roles where a player can have more than one role +-- @module ExpGamingCore.Role@4.0.0 +-- @author Cooldude2606 +-- @license https://github.com/explosivegaming/scenario/releases/download/v4.0-core/ExpGamingCore.Ranking_4.0.0.zip +-- @alais Role + +-- Module Require +local Group = require('ExpGamingCore.Group@^4.0.0') + +-- Local Varibles + +-- Module Define +local module_verbose = false +local Role = { + _prototype={}, + roles={}, + order={}, + flags={}, + actions={}, + on_init=function() + --code + end, + on_post=function() + --code + end +} + +-- Global Define +local global = global{ + changes={}, + players={}, + roles={} +} + +-- Function Define +function Role.define(obj) + -- creates role object +end + +function Role.get(mixed) + -- gets all roles of a user or a role by name +end + +function Role.assign(player,role) + -- gives a player a role by name or a table of roles +end + +function Role.unassign(player,role) + -- removes a player from a role by name or a table of roles +end + +function Role.highest(options) + -- gets the highest role from a set of options; player can be passed +end + +function Role.revert(player) + -- reverts the last change to a user's roles +end + +function Role.add_flag(flag,callback) + -- when a role has the given flag the callback is called, params: player, state + -- all the flags a player has are combined with true as pirority + -- example Role.add_flag('is_admin',function(player,state) player.admin = state end) +end + +function Role.has_flag(mixed,flag) + -- tests if mixed (either player or role) has the requested flag +end + +function Role.add_action(action) + -- allows a table to be made that includes all possible actions and thus can test who is allowed + -- used purly as a way to loop over all actions +end + +function Role.allowed(mixed,action) + -- returns if mixed (either player or role) is allowed to do this action +end + +function Role.print(role,rtn,colour,inv) + -- prints to this role and all below it or above if inv +end + +function Role.debug_output(role,player) + -- outputs all info on a role +end + +function Role._prototype:has_flag(flag) + -- if this role has this flag +end + +function Role._prototype:allowed(action) + -- if this role is allowed this action +end + +function Role._prototype:get_players(online) + -- gets all/online players who have this role +end + +function Role._prototype:print(rtn,colour) + -- prints a message to all players with this role +end + +function Role._prototype:get_permissions() + -- runs though Role.actions and returns a list of which this role can do +end + +function Role._prototype.add_player(player) + -- adds a player to this role +end + +function Role._prototype.remove_player(player) + -- removes this role from the player +end + +-- Event Handlers Define + +-- event call for role updates + +-- Module Return +return setmetatable(Role,{__call=function(tbl,...) tbl.define(...) end}) \ No newline at end of file