105 lines
3.9 KiB
Lua
105 lines
3.9 KiB
Lua
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 |