49 lines
1.8 KiB
Lua
Raw Permalink Normal View History

2025-01-04 23:00:19 +08:00
SkillConfig = SkillConfig or {}
SkillConfig.ESkillType = {
DetectPlayer = 1;
}
-- 玩家的技能冷却
SkillConfig.PlayerCooling = {} -- {[ESkillType] = {PlayerKey = LastSkillTime}, }
SkillConfig.SkillInfo = {
[SkillConfig.ESkillType.DetectPlayer] = {
SkillID = 120,
CoolingTime = 0,
OtherEffect = function(PlayerPawn)
end
},
}
function SkillConfig.ExeSkill(SkillType, InPawn)
if UE.IsValid(InPawn) and InPawn.PlayerKey then
local TargetSkillInfo = SkillConfig.SkillInfo[SkillType]
if TargetSkillInfo then
if SkillConfig.PlayerCooling[SkillType] == nil then
SkillConfig.PlayerCooling[SkillType] = {}
end
local NowTime = UGCSystemLibrary.GetGameTime()
local LastSkillTime = SkillConfig.PlayerCooling[SkillType][InPawn.PlayerKey]
if LastSkillTime == nil or NowTime - LastSkillTime > TargetSkillInfo.CoolingTime then
SkillConfig.PlayerCooling[SkillType][InPawn.PlayerKey] = NowTime
local SkillManager = InPawn:GetSkillManagerComponent()
if SkillManager ~= nil then
SkillManager:TriggerEvent(TargetSkillInfo.SkillID, UTSkillEventType.SET_KEY_DOWN)
if TargetSkillInfo.OtherEffect then
TargetSkillInfo.OtherEffect(InPawn)
end
return true
else
UGCLogSystem.LogError("[SkillConfig_ExeSkill] SkillManager is nil")
end
end
else
UGCLogSystem.LogError("[SkillConfig_ExeSkil] Exe SkillType:%s is Error", tostring(SkillType))
end
else
UGCLogSystem.LogError("[SkillConfig_ExeSkill] InPawn is nil")
end
return false
end