--[[ Generated with https://github.com/TypeScriptToLua/TypeScriptToLua ]] local ____exports = {} --- Серверный спавн карты `light_fix` в центре мира по X/Y, якорь Z = LIGHT_FIX_SPAWN_Z под землёй. -- Один экземпляр на матч: повторные вызовы снимают предыдущий spawn group и спавнят снова. local function ceilMapNumber(____, value) return value + (64 - value % 64) % 64 end --- Опциональная точка на карте маппера (если есть — X/Y, со снапом по сетке; Z задаётся отдельно). local LIGHT_FIX_WORLD_ENTITY = "point_light_fix_world_center" --- Высота якоря под картой: не видно игрокам, логика освещения может подтягиваться. local LIGHT_FIX_SPAWN_Z = -1000 local lightFixSpawnGroupHandle --- Центр мира по границам карты + снап 64 по X/Y; Z под землёй. local function getLightFixSpawnOrigin(self) local named = Entities:FindByName(nil, LIGHT_FIX_WORLD_ENTITY) if named and named.GetAbsOrigin then local o = named:GetAbsOrigin() return Vector( ceilMapNumber(nil, o.x), ceilMapNumber(nil, o.y), LIGHT_FIX_SPAWN_Z ) end local cx = (GetWorldMinX() + GetWorldMaxX()) * 0.5 local cy = (GetWorldMinY() + GetWorldMaxY()) * 0.5 local x = ceilMapNumber(nil, cx) local y = ceilMapNumber(nil, cy) return Vector(x, y, LIGHT_FIX_SPAWN_Z) end --- Спавнит `light_fix` в центре мира (коллбеки пустые — полный цикл загрузки). -- `playerId` оставлен в сигнатуре для вызывающего кода; позиция не зависит от игрока. function ____exports.spawnLightFixForPlayer(self, _playerId) if not IsServer() then return end local origin = getLightFixSpawnOrigin(nil) lightFixSpawnGroupHandle = DOTA_SpawnMapAtPosition( "light_fix", origin, false, function() end, function() end, nil ) end return ____exports