mirror of
https://github.com/PHIDIAS0303/ExpCluster.git
synced 2025-12-29 20:16:38 +09:00
fix: set roles after jailing
This commit is contained in:
@@ -115,6 +115,7 @@ local Groups = require 'expcore.permission_groups' --- @dep expcore.permission_g
|
|||||||
local Async = require 'expcore.async' --- @dep expcore.async
|
local Async = require 'expcore.async' --- @dep expcore.async
|
||||||
local Colours = require 'utils.color_presets' --- @dep utils.color_presets
|
local Colours = require 'utils.color_presets' --- @dep utils.color_presets
|
||||||
local write_json = _C.write_json --- @dep expcore.common
|
local write_json = _C.write_json --- @dep expcore.common
|
||||||
|
local JailOldRole = require 'modules.control.jail_old_role' --- @dep modules.control.jail
|
||||||
|
|
||||||
local Roles = {
|
local Roles = {
|
||||||
_prototype={},
|
_prototype={},
|
||||||
@@ -368,7 +369,15 @@ function Roles.assign_player(player, roles, by_player_name, skip_checks, silent)
|
|||||||
if not skip_checks and not valid_player then return end
|
if not skip_checks and not valid_player then return end
|
||||||
if not player then return end
|
if not player then return end
|
||||||
if type(roles) ~= 'table' or roles.name then
|
if type(roles) ~= 'table' or roles.name then
|
||||||
roles = {roles}
|
roles = { roles }
|
||||||
|
end
|
||||||
|
if Roles.player_has_role(player, "Jail") then
|
||||||
|
local to_assign = JailOldRole.old_roles[valid_player.name] or {}
|
||||||
|
for _, role in ipairs(roles) do
|
||||||
|
table.insert(to_assign, role)
|
||||||
|
end
|
||||||
|
JailOldRole.old_roles[valid_player.name] = to_assign
|
||||||
|
return
|
||||||
end
|
end
|
||||||
for _, role in ipairs(roles) do
|
for _, role in ipairs(roles) do
|
||||||
role = Roles.get_role_from_any(role)
|
role = Roles.get_role_from_any(role)
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
local Roles = require 'expcore.roles' --- @dep expcore.roles
|
local Roles = require 'expcore.roles' --- @dep expcore.roles
|
||||||
local Game = require 'utils.game' --- @dep utils.game
|
local Game = require 'utils.game' --- @dep utils.game
|
||||||
local Global = require 'utils.global' --- @dep utils.global
|
local Global = require 'utils.global' --- @dep utils.global
|
||||||
|
local JailOldRole = require 'modules.control.jail_old_role' --- @dep modules.control.jail_old_role
|
||||||
|
|
||||||
local valid_player = Game.get_player_from_any
|
local valid_player = Game.get_player_from_any
|
||||||
local assign_roles = Roles.assign_player
|
local assign_roles = Roles.assign_player
|
||||||
@@ -89,7 +90,7 @@ function Jail.jail_player(player, by_player_name, reason)
|
|||||||
|
|
||||||
if has_role(player, 'Jail') then return end
|
if has_role(player, 'Jail') then return end
|
||||||
local roles = get_roles(player)
|
local roles = get_roles(player)
|
||||||
old_roles[player.name] = roles
|
JailOldRole.old_roles[player.name] = roles
|
||||||
|
|
||||||
player.walking_state = { walking = false }
|
player.walking_state = { walking = false }
|
||||||
player.riding_state = { acceleration = defines.riding.acceleration.nothing, direction = player.riding_state.direction }
|
player.riding_state = { acceleration = defines.riding.acceleration.nothing, direction = player.riding_state.direction }
|
||||||
@@ -116,14 +117,25 @@ function Jail.unjail_player(player, by_player_name)
|
|||||||
if not by_player_name then return end
|
if not by_player_name then return end
|
||||||
|
|
||||||
if not has_role(player, 'Jail') then return end
|
if not has_role(player, 'Jail') then return end
|
||||||
local roles = old_roles[player.name] or {}
|
local roles = JailOldRole.old_roles[player.name] or {}
|
||||||
|
|
||||||
assign_roles(player, roles, by_player_name, nil, true)
|
|
||||||
unassign_roles(player, 'Jail', by_player_name, nil, true)
|
unassign_roles(player, 'Jail', by_player_name, nil, true)
|
||||||
|
assign_roles(player, roles, by_player_name, nil, true)
|
||||||
|
|
||||||
event_emit(Jail.events.on_player_unjailed, player, by_player_name)
|
event_emit(Jail.events.on_player_unjailed, player, by_player_name)
|
||||||
|
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function Jail.add_old_role(player, to_assign)
|
||||||
|
player = valid_player(player)
|
||||||
|
if not player then return end
|
||||||
|
|
||||||
|
if not has_role(player, 'Jail') then return end
|
||||||
|
local roles = JailOldRole.old_roles[player.name]
|
||||||
|
if not roles then return end
|
||||||
|
|
||||||
|
table.insert(roles, to_assign)
|
||||||
|
end
|
||||||
|
|
||||||
return Jail
|
return Jail
|
||||||
13
modules/control/jail_old_role.lua
Normal file
13
modules/control/jail_old_role.lua
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
local Global = require 'utils.global' --- @dep utils.global
|
||||||
|
|
||||||
|
local Jail = {
|
||||||
|
old_roles = {}
|
||||||
|
}
|
||||||
|
|
||||||
|
local old_roles = Jail.old_roles
|
||||||
|
Global.register(old_roles, function(tbl)
|
||||||
|
Jail.old_roles = tbl
|
||||||
|
old_roles = tbl
|
||||||
|
end)
|
||||||
|
|
||||||
|
return Jail
|
||||||
Reference in New Issue
Block a user