74 lines
2.8 KiB
Lua
74 lines
2.8 KiB
Lua
|
local Action_PlayerDeadUpdateInfo = {
|
|||
|
DeadPlayerKey = "";
|
|||
|
KillerPlayerKey = "";
|
|||
|
WeaponID = -1;
|
|||
|
}
|
|||
|
|
|||
|
-- 触发器激活时,将执行Action的Execute
|
|||
|
function Action_PlayerDeadUpdateInfo:Execute(...)
|
|||
|
|
|||
|
self.N_KillerPlayerKey = tonumber(self.KillerPlayerKey)
|
|||
|
self.N_DeadPlayerKey = tonumber(self.DeadPlayerKey)
|
|||
|
|
|||
|
-- 判断是否在游戏
|
|||
|
if UGCGameSystem.GameState.GameStateType ~= Enum.EGameState.Playing and UGCGameSystem.GameState.GameStateType ~= Enum.EGameState.Waiting then
|
|||
|
-- UGCGameSystem.GetRespawnComponent():AddRespawnPlayer(self.DeadPlayerKey, 0)
|
|||
|
UGCGameSystem.GameMode:Server_RespawnPlayer(self.N_DeadPlayerKey)
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local NowTime = KismetSystemLibrary.GetGameTimeInSeconds(self)
|
|||
|
|
|||
|
|
|||
|
|
|||
|
local KillerPlayerState = UGCGameSystem.GetPlayerStateByPlayerKey(self.N_KillerPlayerKey)
|
|||
|
if UE.IsValid(KillerPlayerState) and KillerPlayerState ~= DeadPlayerState then
|
|||
|
-- 增加杀敌数
|
|||
|
KillerPlayerState.ScoreData.Kill = KillerPlayerState.ScoreData.Kill + 1
|
|||
|
table.insert(KillerPlayerState.CurrentLifeKilledPlayers, {DeadPlayerKey = self.N_DeadPlayerKey, Time = NowTime, WeaponID = self.WeaponID})
|
|||
|
end
|
|||
|
|
|||
|
local DeadPlayerState = UGCGameSystem.GetPlayerStateByPlayerKey(self.N_DeadPlayerKey)
|
|||
|
if UE.IsValid(DeadPlayerState) then
|
|||
|
-- 增加死亡数
|
|||
|
DeadPlayerState.ScoreData.Dead = DeadPlayerState.ScoreData.Dead + 1
|
|||
|
DeadPlayerState:PlayerDead()
|
|||
|
table.insert(DeadPlayerState.PlayerDeadInfo, {KillerKey = self.N_KillerPlayerKey, Time = NowTime})
|
|||
|
|
|||
|
-- 重置死亡者Buff槽
|
|||
|
-- UGCGameSystem.GameState:RemovePlayerBuff(self.DeadPlayerKey)
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
-- 更新玩家得分
|
|||
|
self:UpdatePlayerScore()
|
|||
|
|
|||
|
return true
|
|||
|
end
|
|||
|
|
|||
|
function Action_PlayerDeadUpdateInfo:UpdatePlayerScore()
|
|||
|
local DeadPlayerRewardScore = UGCGameSystem.GameState:GetPlayerRewardScore(self.N_DeadPlayerKey)
|
|||
|
local AddGoldCoin = GlobalConfigs.RewardScoreToGoldCoin(DeadPlayerRewardScore)
|
|||
|
-- 增加玩家金币数
|
|||
|
UGCGameSystem.GameState:AddPlayerOwnGoldCoin(self.N_KillerPlayerKey, AddGoldCoin)
|
|||
|
-- 增加玩家悬赏分
|
|||
|
UGCGameSystem.GameState:AddPlayerRewardScore(self.N_KillerPlayerKey, 1)
|
|||
|
-- 增加玩家得分
|
|||
|
UGCGameSystem.GameState:AddScore(self.N_KillerPlayerKey, GlobalConfigs.GetPlayerAddScoreFromRewardScore(DeadPlayerRewardScore))
|
|||
|
-- 刷新玩家数据
|
|||
|
UGCGameSystem.GameState:UpdateAllPlayerScoreDatas()
|
|||
|
-- 重置死亡玩家悬赏分
|
|||
|
UGCGameSystem.GameState:ResetPlayerRewardScore(self.N_DeadPlayerKey)
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
|
|||
|
--[[
|
|||
|
-- 需要勾选Action的EnableTick,才会执行Update
|
|||
|
-- 触发器激活后,将在每个tick执行Action的Update,直到self.bEnableActionTick为false
|
|||
|
function Action_PlayerDeadUpdateInfo:Update(DeltaSeconds)
|
|||
|
|
|||
|
end
|
|||
|
]]
|
|||
|
|
|||
|
return Action_PlayerDeadUpdateInfo
|