Local reset for admins

This commit is contained in:
ZioPao
2024-03-28 19:12:56 +01:00
parent a8956df057
commit b1f12e55a1
7 changed files with 70 additions and 8 deletions

View File

@@ -0,0 +1,31 @@
local CommandsData = require("TOC/CommandsData")
---@param playerNum number
---@param context ISContextMenu
---@param items any
local function AddAdminTocOptions(playerNum, context, items)
if not isAdmin() then return end
-- This is a global var already handled in vanilla zomboid, we don't need to find the player once again
---@cast clickedPlayer IsoPlayer
if clickedPlayer then
local clickedPlayerNum = clickedPlayer:getOnlineID()
local option = context:addOption(getText("ContextMenu_Admin_TOC"), items, nil)
local subMenu = ISContextMenu:getNew(context)
context:addSubMenu(option, subMenu)
subMenu:addOption(getText("ContextMenu_Admin_ResetTOC"), items, function()
sendClientCommand(CommandsData.modules.TOC_RELAY, CommandsData.server.Relay.RelayExecuteInitialization, {patientNum=clickedPlayerNum} )
end)
-- TODO add other options
end
end
Events.OnFillWorldObjectContextMenu.Add(AddAdminTocOptions)

View File

@@ -28,6 +28,16 @@ function ClientRelayCommands.ReceiveExecuteAmputationAction(args)
local handler = InitAmputationHandler(args.limbName, args.surgeonNum)
handler:execute(true)
end
--* TRIGGERED BY ADMINS *--
function ClientRelayCommands.ReceiveExecuteInitialization()
local LocalPlayerController = require("TOC/Controllers/LocalPlayerController")
LocalPlayerController.InitializePlayer(true)
end
-------------------------
local function OnServerRelayCommand(module, command, args)

View File

@@ -136,7 +136,7 @@ LocalPlayerController.hasBeenDamaged = false
---Check if the player has in infected body part or if they have been hit in a cut area
---@param character IsoPlayer
---@param character IsoPlayer|IsoGameCharacter
function LocalPlayerController.HandleDamage(character)
-- TOC_DEBUG.print("Player got hit!")
-- TOC_DEBUG.print(damageType)
@@ -193,7 +193,7 @@ function LocalPlayerController.HandleDamage(character)
end
---Setup HandleDamage, triggered by OnPlayerGetDamage
---@param character IsoGameCharacter
---@param character IsoPlayer|IsoGameCharacter
---@param damageType string
---@param damageAmount number
function LocalPlayerController.OnGetDamage(character, damageType, damageAmount)
@@ -291,7 +291,7 @@ end
--* Tourniquet handling
function LocalPlayerController.HandleTourniquet()
print("test")
-- TODO Add it!!!
end
Events.OnPuttingTourniquet.Add(LocalPlayerController.HandleTourniquet)

View File

@@ -89,6 +89,3 @@ end
Events.OnGameStart.Add(Main.Start)
Events.OnCreatePlayer.Add(Main.InitializePlayer)
Events.OnPlayerDeath.Add(Main.WipeData)
-- TODO Disable windows interaction when no hands

View File

@@ -29,6 +29,17 @@ function ServerRelayCommands.RelayExecuteAmputationAction(surgeonPl, args)
end
--* ADMIN ONLY *--
---Relay a local init from another client
---@param adminObj IsoPlayer
---@param args relayExecuteInitializationParams
function ServerRelayCommands.RelayExecuteInitialization(adminObj, args)
local patientPl = getPlayerByOnlineID(args.patientNum)
sendServerCommand(patientPl, CommandsData.modules.TOC_RELAY, CommandsData.client.Relay.ReceiveExecuteInitialization, {})
end
-------------------------

View File

@@ -11,7 +11,11 @@ CommandsData.modules = {
CommandsData.client = {
Relay = {
ReceiveDamageDuringAmputation = "ReceiveDamageDuringAmputation", ---@alias receiveDamageDuringAmputationParams { limbName : string}
ReceiveExecuteAmputationAction = "ReceiveExecuteAmputationAction" ---@alias receiveExecuteAmputationActionParams {surgeonNum : number, limbName : string}
ReceiveExecuteAmputationAction = "ReceiveExecuteAmputationAction", ---@alias receiveExecuteAmputationActionParams {surgeonNum : number, limbName : string}
--* ADMIN ONLY --*
ReceiveExecuteInitialization = "ReceiveExecuteInitialization"
}
}
@@ -23,8 +27,11 @@ CommandsData.server = {
Relay = {
RelayDamageDuringAmputation = "RelayDamageDuringAmputation", ---@alias relayDamageDuringAmputationParams {patientNum : number, limbName : string}
RelayExecuteAmputationAction = "RelayExecuteAmputationAction" ---@alias relayExecuteAmputationActionParams {patientNum : number, limbName : string}
RelayExecuteAmputationAction = "RelayExecuteAmputationAction", ---@alias relayExecuteAmputationActionParams {patientNum : number, limbName : string}
--* ADMIN ONLY *--
RelayExecuteInitialization = "RelayExecuteInitialization" ---@alias relayExecuteInitializationParams {patientNum : number}
}
}

View File

@@ -24,4 +24,10 @@ ContextMenu_EN = {
ContextMenu_CleanWound = "Clean Wound",
ContextMenu_Admin_TOC = "TOC - Admin",
ContextMenu_Admin_ResetTOC = "Reset Amputations",
ContextMenu_Admin_ForceAmputation = "Force Amputation",
}