rbxIdleWeapon/src/ServerStorage/Modules/Runes/RuneWearGenWeapon.luau
2025-08-22 12:32:05 +08:00

59 lines
2.0 KiB
Plaintext

--> Services
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ServerStorage = game:GetService("ServerStorage")
--> Dependencies
local Utils = require(ReplicatedStorage.Tools.Utils)
local TypeList = require(ServerStorage.Base.TypeList)
local Rune = require(ServerStorage.Base.Rune)
local RuneWeaponTag = require(ReplicatedStorage.Data.RuneWeaponTag)
local RuneWearGenWeapon = {}
RuneWearGenWeapon.__index = RuneWearGenWeapon
setmetatable(RuneWearGenWeapon, {__index = Rune})
function RuneWearGenWeapon:Init(PlayerAI, Character: TypeList.Character)
local self = Rune:Init(PlayerAI, Character, script.Name)
setmetatable(self, RuneWearGenWeapon)
return self
end
function RuneWearGenWeapon:Check(index: number, AttributesData: table, BehaviorNameList: table)
return true
end
function RuneWearGenWeapon:OnExecute(index: number, AttributesData: table, BehaviorNameList: table)
local pDataFolder = ReplicatedStorage:FindFirstChild("PlayerData")
if not pDataFolder then return nil end
local pData = pDataFolder:FindFirstChild(self.PlayerAI.Player.UserId)
if not pData then return nil end
local equipmentFolder = pData:FindFirstChild("Equipment")
if not equipmentFolder then return nil end
local equipmentList = equipmentFolder:GetChildren()
if #equipmentList == 0 then return nil end
-- 找到自己穿戴的装备所有类型
local wearingTypeList = {}
for _, equipment in equipmentList do
local equipmentSubType = equipment:GetAttribute("subType")
local equipmentWearing = equipment:GetAttribute("wearing")
if equipmentWearing > 0 and not table.find(wearingTypeList, RuneWeaponTag[equipmentSubType]) then
table.insert(wearingTypeList, RuneWeaponTag[equipmentSubType])
end
end
-- 如果没有对应类型就加在ShareData中
for _, wearingType in RuneWeaponTag do
if not table.find(wearingTypeList, wearingType) then
self.PlayerAI:SetSharedData(wearingType, 1)
end
end
return nil
end
return RuneWearGenWeapon