105 lines
3.9 KiB
Lua
Raw Normal View History

2025-01-04 23:00:19 +08:00
SkillConfig = SkillConfig or {}
SkillConfig.ESkillType = {
DetectingArrow = 1;
PlaceNirvana = 2;
TestSkill = 3;
}
-- 玩家的技能冷却
SkillConfig.PlayerCooling = {} -- {[ESkillType] = {PlayerKey = LastSkillTime}, }
SkillConfig.SkillInfo = {
[SkillConfig.ESkillType.DetectingArrow] = {
SkillID = 120,
CD = 30,
OtherEffect = function(PlayerPawn)
end,
},
[SkillConfig.ESkillType.PlaceNirvana] = {
SkillID = 121,
CD = 10,
OtherEffect = function(PlayerPawn)
end,
},
[SkillConfig.ESkillType.TestSkill] = {
SkillID = 122,
CD = 10,
OtherEffect = function(PlayerPawn)
end,
},
}
SkillConfig.UseSkillName = "ExeSkill"
function SkillConfig.Init()
UGCGameSystem.GameState[SkillConfig.UseSkillName] = function(GS, InPlayerKey, InSkillType, InSkillEventType)
SkillConfig.ExeSkill(InPlayerKey, InSkillType, InSkillEventType)
end
end
function SkillConfig.ExeSkill(InPlayerKey, InSkillType, InSkillEventType)
if UGCGameSystem.IsServer() then
local InPawn = UGCGameSystem.GetPlayerPawnByPlayerKey(InPlayerKey)
if UE.IsValid(InPawn) and InPawn.PlayerKey then
UGCLogSystem.Log("[SkillConfig_ExeSkill] SkillType:%s, InSkillEventType:%s", tostring(InSkillType), tostring(InSkillEventType))
local TargetSkillInfo = SkillConfig.SkillInfo[InSkillType]
if TargetSkillInfo then
local SkillManager = InPawn:GetSkillManagerComponent()
if SkillManager ~= nil then
if InSkillEventType == nil then
InSkillEventType = UTSkillEventType.SET_KEY_DOWN
end
-- UGCSkillManagerSystem.TriggerSkillEventByPath(InPawn, TargetSkillInfo.SkillID, InSkillEventType)
SkillManager:TriggerEvent(TargetSkillInfo.SkillID, InSkillEventType)
if TargetSkillInfo.OtherEffect then
TargetSkillInfo.OtherEffect(InPawn)
end
UGCLogSystem.Log("[SkillConfig_ExeSkill] Succeed", tostring(InSkillType))
return true
end
else
UGCLogSystem.LogError("[SkillConfig_ExeSkil] Exe SkillType:%s is Error", tostring(InSkillType))
end
else
UGCLogSystem.LogError("[SkillConfig_ExeSkill] InPawn is nil")
end
return false
else
if SkillConfig.CheckPlayerSkill(InPlayerKey, InSkillType) then
UGCSendRPCSystem.ActorRPCNotify(nil, UGCGameSystem.GameState, SkillConfig.UseSkillName, InPlayerKey, InSkillType, InSkillEventType)
return true
else
UGCLogSystem.LogError("[SkillConfig_ExeSkill] 技能还在冷却")
return false
end
end
end
function SkillConfig.GetSkillRestCoolDownTime(InPlayerKey, InSkillType)
local InPawn = UGCGameSystem.GetPlayerPawnByPlayerKey(InPlayerKey)
if UE.IsValid(InPawn) and InPawn.PlayerKey then
UGCLogSystem.Log("[SkillConfig_GetSkillCD] SkillType:%s, InSkillEventType:%s", tostring(InPlayerKey), tostring(InSkillType))
local TargetSkillInfo = SkillConfig.SkillInfo[InSkillType]
if TargetSkillInfo then
local SkillManager = InPawn:GetSkillManagerComponent()
if SkillManager ~= nil then
return SkillManager:GetRestCoolDownTime(TargetSkillInfo.SkillID)
end
end
end
return nil
end
function SkillConfig.GetSkillCD(InSkillType)
local TargetSkillInfo = SkillConfig.SkillInfo[InSkillType]
if TargetSkillInfo then
return TargetSkillInfo.CD
end
end
function SkillConfig.CheckPlayerSkill(InPlayerKey, InSkillType)
local RestCoolDownTime = SkillConfig.GetSkillRestCoolDownTime(InPlayerKey, InSkillType)
return (RestCoolDownTime ~= nil and RestCoolDownTime <= 0)
end