initial commit
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
--[[ Generated with https://github.com/TypeScriptToLua/TypeScriptToLua ]]
|
||||
local ____exports = {}
|
||||
local ____store_manager = require("store_manager")
|
||||
local StoreManager = ____store_manager.StoreManager
|
||||
--- Микрокэш на один вызов GetGameTime() — снижает давление CustomNetTables при частых GetEffectName.
|
||||
local clientGetEffectCacheKey = ""
|
||||
local clientGetEffectCacheTime = -999999
|
||||
local clientGetEffectCacheValue = nil
|
||||
--- Получить все активные эффекты героя
|
||||
--
|
||||
-- @param hero - Герой игрока
|
||||
-- @returns Объект с активными эффектами по типам: { "effect": "skin_effect_fire", "wings": "wings_demon", "model": null }
|
||||
function ____exports.GetAllEffects(self, hero)
|
||||
local playerId = hero:GetPlayerOwnerID()
|
||||
if playerId < 0 then
|
||||
return {}
|
||||
end
|
||||
local storeManager = StoreManager:getInstance()
|
||||
return storeManager:getPlayerActiveEffects(playerId)
|
||||
end
|
||||
--- Получить активный эффект конкретного типа для героя
|
||||
--
|
||||
-- @param hero - Герой игрока
|
||||
-- @param effectType - Тип эффекта ("effect", "wings", "model")
|
||||
-- @returns ID эффекта или null
|
||||
function ____exports.GetEffect(self, hero, effectType)
|
||||
local playerId = hero:GetPlayerOwnerID()
|
||||
if playerId < 0 then
|
||||
return nil
|
||||
end
|
||||
if IsClient() then
|
||||
local now = GameRules:GetGameTime()
|
||||
local cacheKey = (tostring(playerId) .. ":") .. effectType
|
||||
if clientGetEffectCacheKey == cacheKey and clientGetEffectCacheTime == now then
|
||||
return clientGetEffectCacheValue
|
||||
end
|
||||
local playerInfo = CustomNetTables:GetTableValue(
|
||||
"player_info",
|
||||
tostring(playerId)
|
||||
)
|
||||
local value = nil
|
||||
if playerInfo and playerInfo.active_effects and playerInfo.active_effects[effectType] then
|
||||
value = playerInfo.active_effects[effectType]
|
||||
end
|
||||
clientGetEffectCacheKey = cacheKey
|
||||
clientGetEffectCacheTime = now
|
||||
clientGetEffectCacheValue = value
|
||||
return value
|
||||
end
|
||||
local storeManager = StoreManager:getInstance()
|
||||
return storeManager:getPlayerActiveEffect(playerId, effectType)
|
||||
end
|
||||
--- Проверить, надёт ли конкретный эффект на героя
|
||||
--
|
||||
-- @param hero - Герой игрока
|
||||
-- @param effectId - ID эффекта
|
||||
-- @param effectType - Опционально: тип эффекта для проверки конкретного типа
|
||||
-- @returns true если эффект надёт, false если нет
|
||||
function ____exports.HasEffect(self, hero, effectId, effectType)
|
||||
local playerId = hero:GetPlayerOwnerID()
|
||||
if playerId < 0 then
|
||||
return false
|
||||
end
|
||||
local storeManager = StoreManager:getInstance()
|
||||
return storeManager:isEffectEquipped(playerId, effectId, effectType)
|
||||
end
|
||||
local g = _G
|
||||
g.GetAllEffects = ____exports.GetAllEffects
|
||||
g.GetEffect = ____exports.GetEffect
|
||||
g.HasEffect = ____exports.HasEffect
|
||||
local env = getfenv(nil, 0)
|
||||
env.GetAllEffects = ____exports.GetAllEffects
|
||||
env.GetEffect = ____exports.GetEffect
|
||||
env.HasEffect = ____exports.HasEffect
|
||||
return ____exports
|
||||
Reference in New Issue
Block a user