local CommandsData = require("TOC/CommandsData") ------------------- ---@param playerNum number ---@param context ISContextMenu ---@param worldobjects table local function AddAdminTocOptions(playerNum, context, worldobjects) if not isAdmin() then return end local players = {} for _,v in ipairs(worldobjects) do for x=v:getSquare():getX()-1,v:getSquare():getX()+1 do for y=v:getSquare():getY()-1,v:getSquare():getY()+1 do local sq = getCell():getGridSquare(x,y,v:getSquare():getZ()); if sq then for z=0,sq:getMovingObjects():size()-1 do local o = sq:getMovingObjects():get(z) if instanceof(o, "IsoPlayer") then ---@cast o IsoPlayer local oId = o:getOnlineID() players[oId] = o end end end end end end for _, pl in pairs(players) do ---@cast pl IsoPlayer local clickedPlayerNum = pl:getOnlineID() local option = context:addOption(getText("ContextMenu_Admin_TOC") .. " - " .. pl:getUsername(), nil, nil) local subMenu = ISContextMenu:getNew(context) context:addSubMenu(option, subMenu) subMenu:addOption(getText("ContextMenu_Admin_ResetTOC"), nil, function() sendClientCommand(CommandsData.modules.TOC_RELAY, CommandsData.server.Relay.RelayExecuteInitialization, {patientNum=clickedPlayerNum} ) end) end end Events.OnFillWorldObjectContextMenu.Add(AddAdminTocOptions)