---@class UGCPlayerState_C:BP_UGCPlayerState_C --Edit Below-- ---@type UGCPlayerState_C local UGCPlayerState = { --PluginData = {}; --- { --- LoginTimes = 0; ---} ---@type table ArchiveData = nil; AccountInfo = nil; ---@type table> { { PlayerKey, AddTime }, } KillAssists = {}; }; --[[ function UGCPlayerState:ReceiveBeginPlay() self.SuperClass.ReceiveBeginPlay(self); end --]] function UGCPlayerState:ReceiveTick(DeltaTime) self.SuperClass.ReceiveTick(self, DeltaTime); if self:HasAuthority() then if table.isEmpty(self.KillAssists) then return; end local RemoveIndies = {}; local ServerTime = KismetSystemLibrary.GetGameTimeInSeconds(self); for i, v in pairs(self.KillAssists) do if v.AddTime ~= nil and v.AddTime + DefaultSettings.AssistTime <= ServerTime then RemoveIndies[#RemoveIndies + 1] = i; end end if not table.isEmpty(RemoveIndies) then for i = table.getCount(RemoveIndies), 1, -1 do self.KillAssists[RemoveIndies[i]] = nil; end RemoveIndies = {}; end end end --[[ function UGCPlayerState:ReceiveEndPlay() self.SuperClass.ReceiveEndPlay(self); end --]] function UGCPlayerState:GetReplicatedProperties() return { "ArchiveData", "Lazy" }, { "AccountInfo", "Lazy" } end --[[ function UGCPlayerState:GetAvailableServerRPCs() return end --]] --- 重置玩家 function UGCPlayerState:ResetPlayer() end -- 初始化存档 function UGCPlayerState:InitArchive() self.ArchiveData = { -- 登录次数 LoginTimes = 0; SoldierSelect = {}; -- 不同兵种选择 Scores = {}; } end -- 加载存档 function UGCPlayerState:LoadArchiveData(InData) print(string.format("[UGCPlayerState:LoadArchive] 加载存档")) if InData == nil or table.isEmpty(InData) then self:InitArchive(); else UGCLogSystem.LogTree("[UGCPlayerState:LoadArchive] InData = ", InData) self.ArchiveData = InData end -- 立刻同步一下 DOREPONCE(self, "ArchiveData"); UnrealNetwork.CallUnrealRPC(self, self, "Client_LoadArchive", self.ArchiveData); end ---@param InWeapon ASTExtraWeapon function UGCPlayerState:UpdateWeaponAttachment(Pawn, InWeapon) -- 获取玩家的缓存 UGCLogSystem.Log("[UGCPlayerState:UpdateWeaponAttachment] 执行") local ArchiveData = UGCPlayerStateSystem.GetPlayerArchiveData(self.UID); if table.isEmpty(ArchiveData) then ArchiveData = {}; end if ArchiveData.Weapons == nil then ArchiveData.Weapons = {}; end local ItemId = InWeapon:GetWeaponItemID(); local Weapon = UGCWeaponManagerSystem.GetCurrentWeapon(Pawn); local Parts = ItemTool.GetWeaponParts(Weapon); ArchiveData.Weapons[ItemId] = Parts; UGCPlayerStateSystem.SavePlayerArchiveData(self.UID, ArchiveData); end function UGCPlayerState:Client_LoadArchive(InData) end ---@param InData PlayerAccountInfo function UGCPlayerState:LoadAccountInfo(InData) self.AccountInfo = InData; DOREPONCE(self, "AccountInfo"); end function UGCPlayerState:OnRep_ArchiveData() if self.ArchiveData == nil then return; end end function UGCPlayerState:GetArchiveData() return self.ArchiveData; end --- 直接加载对应头像 function UGCPlayerState:OnRep_AccountInfo() end function UGCPlayerState:GetKillAssists() return self.KillAssists; end function UGCPlayerState:ClearKillAssist() self.KillAssists = {}; end return UGCPlayerState;