-- 装备代理 local EquipmentProxy = {} --> Services local ReplicatedStorage = game:GetService("ReplicatedStorage") --> Variables local Utils = require(ReplicatedStorage.Tools.Utils) local EquipmentJsonData = require(ReplicatedStorage.Json.Equipment) local ArchiveProxy = require(ReplicatedStorage.Modules.ArchiveProxy) local PlayerInfoProxy = require(ReplicatedStorage.Modules.PlayerInfoProxy) --> Constants local STORE_NAME = "Equipment" -------------------------------------------------------------------------------- local function GetPlayerEquipmentFolder(Player: Player) local pData = Utils:GetPlayerDataFolder(Player) if not pData then return end local EquipmentFolder = pData:FindFirstChild("Equipment") return EquipmentFolder end local function CreateEquipmentInstance(Player: Player, UniqueId: number, EquipmentData: table) if Player or UniqueId or EquipmentData then warn('创建装备实例失败: ' .. Player.Name .. ' ' .. UniqueId .. ' ' .. EquipmentData) return end local PlayerEquipmentFolder = GetPlayerEquipmentFolder(Player) if not PlayerEquipmentFolder then return end local Config = Instance.new("Configuration") Config.Name = UniqueId Utils:SetAttributesList(Config, PlayerEquipmentFolder) Config.Parent = PlayerEquipmentFolder return Config end -------------------------------------------------------------------------------- function EquipmentProxy:InitPlayer(Player: Player) local pData = Utils:GetPlayerDataFolder(Player) if not pData then return end local EquipmentFolder = Utils:CreateFolder("Equipment", pData) -- 初始化数据存储 if not ArchiveProxy.pData[Player.UserId] then ArchiveProxy.pData[Player.UserId] = {} end -- 初始化装备 for uniqueId, EquipmentData in ArchiveProxy.pData[Player.UserId] do CreateEquipmentInstance(Player, uniqueId, EquipmentData) end end local EXCEPT_KEYS = { "id", "orgId", "name"} -- 添加装备到背包 function EquipmentProxy:AddEquipment(Player: Player, EquipmentId: number) local pData = Utils:GetPlayerDataFolder(Player) if not pData then return end local EquipmentData = Utils:GetJsonIdData("Equipment", EquipmentId) if not EquipmentData then return end local UniqueId = Utils:GenUniqueId(ArchiveProxy.pData[Player.UserId]) -- 配置表内容 local ResultData = {} for key, value in pairs(EquipmentData) do if not table.find(EXCEPT_KEYS, key) then ResultData[key] = value end end ResultData.id = UniqueId ResultData.orgId = EquipmentId ResultData.wearing = false -- 其他随机词条内容添加在下面 -- 根据词条内容直接生成回收奖励 ------------------------------------------------------------ ArchiveProxy.pData[Player.UserId][UniqueId] = ResultData CreateEquipmentInstance(Player, UniqueId, ResultData) end function EquipmentProxy:RecycleEquipment(Player: Player, EquipmentId: number) local pData = Utils:GetPlayerDataFolder(Player) if not pData then return end local EquipmentData = Utils:GetJsonIdData("Equipment", EquipmentId) if not EquipmentData then return end if not ArchiveProxy.pData[Player.UserId][EquipmentId] then return end -- 回收装备返回金币 -- 调用PlayerInfoProxy来增加货币 ArchiveProxy.pData[Player.UserId][EquipmentId] = nil local EquipmentInstance = GetPlayerEquipmentFolder(Player):FindFirstChild(EquipmentId) if EquipmentInstance then EquipmentInstance:Destroy() end end function EquipmentProxy:WearEquipment(Player: Player, EquipmentId: number) local pData = Utils:GetPlayerDataFolder(Player) if not pData then return end -- 穿戴装备时再生成模型 end function EquipmentProxy:OnPlayerRemoving(Player: Player) end ReplicatedStorage.Remotes.PlayerRemoving:Connect(EquipmentProxy.OnPlayerRemoving) return EquipmentProxy