From fdc6ee6a6e288d1ec52684f4ff36fe366440a069 Mon Sep 17 00:00:00 2001 From: gechangfu Date: Fri, 15 Aug 2025 19:24:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- excel/attribute.xlsx | Bin 13405 -> 13408 bytes src/ServerStorage/Proxy/EquipmentProxy.luau | 11 ++++++----- src/ServerStorage/Proxy/RuneProxy/init.luau | 6 ++++-- .../CombineRuneWindow/WearingShow.luau | 3 ++- .../UI/Windows/CombineRuneWindow/init.luau | 6 +++++- .../UI/Windows/RuneWindow/PackageShow.luau | 2 +- .../UI/Windows/RuneWindow/WearingShow.luau | 10 ++++++---- .../UI/Windows/RuneWindow/init.luau | 2 +- 8 files changed, 25 insertions(+), 15 deletions(-) diff --git a/excel/attribute.xlsx b/excel/attribute.xlsx index 1c5e8f95a9e91b7ca5d311923647109a81ecf83d..141c8f298a45c93a5f61a56de907e0693c8d9b29 100644 GIT binary patch delta 1904 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 delta 1930 zcmV;52X*-1Xx(VA-3A1r{89vy;RYvvc&A_j1W@VJ1kfV2Q`L3tOQp&Ir&tBdjA^K< z{r6p)d@j|LwL^)GzmCtj_t>0%>8nzECcLGrj&yWl=^Cjsmecw%(tq5fhOcX_z;%vG zR+C77A+7%9?DMD7CF4(X#-20)sM|;{glIz3Y_oz?xIJMFsbOTnc!dQt`J>r?Hk{zR zEeH`+Y1)?MnH8qBJ|Kkr7!0;p(2T?^>nc)<0fdth3!vW?v}xC9Rdx(qh51w07#XV? zfSA*giWdc{YgHD`9&5(&yad@ja2*xA$adZb2r><{p@r>OL99{ zSHn&74OcQ#rLL8@6-iD7$s>IXO|~T44p7CrX426TMs445Lp*!hY>19E>}3c_nF z$duIrthS>5QClhOX~Dq6+BNyvQBL6OfQ3K~lsF6VyuHGr&^lg5dK}(=^LanZOL9kW z!|Hp|XQaH}u^vA3`9GKsXHvTfdIwI!`=8o@8V}b7yAoW3_gQ=aLH>@PA>@$Qe03sc z5K}aIs52g-hgX!0;&GfLhMxw=aK>J2_!AcyBRdJkzMsZHVEqCy+zT^?J5j8%DWN0X zfz%xgUE+Q{f~>Hk`Ig3itF?LzS^rV2$9_q{^4_|oWZ7=>E}L3^N9&v|Bi%qYh2%|!vm2`mSu41He-eJp@6a(&qe{+7%leUDK*FiPPuWU<|xldcRe ze*l3X!U`>*BK2a`?cv%u6R?Qm)HbJ9`|ce(9JWH*(v^TQj^~^IAKMu{9Ars$pp8&f zMx&rj2~=F=qFQD2+t+z(K#8%e%2}x@$mkIaeHefIFxo43%zkWiV7uC1+yVQBao zBr}1kp~5GH(vn&Ht5>0^HL%<#$uf-Ff9)icOjNWX4D~$>RTP55RPn8Z$~F)UC9|mC ztVM0kG|BJ5Nv1d3y2X{O5wR4dutyK2MDpQcRVmGuCHg)@UB<~l<0r;%=Um3m-&B%< zYh_en10;uy=3Dz|n1+mBNVop)!bIIr!%nyjyrSawNs4+GR(yqZ-U&-CFxM_Uf82^Z zqrV5yd@^lM9$U#QOBGaGnBwBV3CLtcRrU&ZQQ~IPPGwPvkJ)ZxyD`2C~C5*{tShEgtEi} zT}l|YVh2ySETc{=K+?G|)waRP)n2aATAoUi7~n zpS{feeR|T&@Rvw|R~hX| zcJOg8a=XU-D2Ns;Lv{a@gz=ixaaG?)!grikit((o`wrIzCraZjd~@crr4P>N)bk(b_34YV zEw&hGVmwp4GS4|-C2_fYsQW(vlTaIwvyB#V6$Pu}8AeO91S}^3e@}xj6oubS{12q> zP#BwG4X{Mbd~u117>#dDdtpRcnzqXJ?=7$)i^j)$&*^v1y=l5Rh{pQ@ZR%ELC<;R4 zfn+VOWtE|qV(TZ!GnPtDn^r=Gj$qIxzrISDBCOT$q+12r)?hqGl7=vqp}n<=U~JeP z1T}$kNGF!97Sy^@e^*#h_CYJai!i*w0xad!QrrW5H4)JX$=QTdpSl?UoMC7{fV2ij zL4<$27PK&bJ{XjlQ`GjT+)k&sb2ewAIJpm|o{U}B1zkMEaQP$rwtIXYR`qMy---ds zQ_cv}Ky9n@ij^sz)&1=nYV6LPxvYWT9&=WD4=MiLcbFmdM92c}xg2CneO6xMyZd5` z@+e{AgK(35i3pT+fJSKtANY{0sRv z0F#jn6tjRXPy+;_{89vy)G>hx7Mi7`t_c7Dhm&41R|0z$lW{T?ldu*AlhHCN0nU^B zGC%=?lRYy!0V`|OMoR$z09XP501*HH00000000000002(llU_} Q0dJExG$RH>F#rGn0L#6pg#Z8m diff --git a/src/ServerStorage/Proxy/EquipmentProxy.luau b/src/ServerStorage/Proxy/EquipmentProxy.luau index 1deab97..f60c482 100644 --- a/src/ServerStorage/Proxy/EquipmentProxy.luau +++ b/src/ServerStorage/Proxy/EquipmentProxy.luau @@ -71,7 +71,7 @@ function EquipmentProxy:InitPlayer(Player: Player) -- 初始化装备 for uniqueId, EquipmentData in ArchiveProxy.pData[Player.UserId][STORE_NAME] do - local config = Utils:CreateDataInstance(Player, uniqueId, EquipmentData, GetPlayerEquipmentFolder(Player)) + local config = Utils:CreateDataInstance(Player, tostring(uniqueId), EquipmentData, GetPlayerEquipmentFolder(Player)) end end @@ -85,7 +85,7 @@ function EquipmentProxy:AddEquipment(Player: Player, EquipmentId: number) local EquipmentData = Utils:GetIdDataFromJson(JsonEquipment, EquipmentId) if not EquipmentData then return end - local UniqueId = Utils:GenUniqueId(ArchiveProxy.pData[Player.UserId][STORE_NAME]) + local UniqueId = Utils:GenUniqueIdString(ArchiveProxy.pData[Player.UserId][STORE_NAME]) -- 配置表内容 local ResultData = {} for key, value in pairs(EquipmentData) do @@ -262,14 +262,16 @@ function EquipmentProxy:AddEquipment(Player: Player, EquipmentId: number) -- 随机生成符文数量 local RuneProxy = require(ServerStorage.Proxy.RuneProxy) - local maxRuneNumber = PlayerInfoProxy:GetPlayerInfo(Player).runeNumber or 0 + local maxRuneNumber = PlayerInfoProxy:GetPlayerInfo(Player)["AttributesUpgrade"]["15"] or 0 local runeNumber = rng:NextInteger(0, maxRuneNumber) ResultData.maxRuneNumber = runeNumber + ------------------------------------------------------------ ArchiveProxy.pData[Player.UserId][STORE_NAME][UniqueId] = ResultData local equipmentInstance = Utils:CreateDataInstance(Player, UniqueId, ResultData, GetPlayerEquipmentFolder(Player)) + print("生成装备符文孔数", equipmentInstance.Name, runeNumber, maxRuneNumber) ------------------------------------------------------------ -- 下面逻辑会找Instance实例,所以放在之后执行逻辑 @@ -316,7 +318,6 @@ function EquipmentProxy:AddEquipment(Player: Player, EquipmentId: number) end end end - ------------------------------------------------------------ -- 添加图鉴记录 @@ -493,7 +494,7 @@ end -- 获取装备数据 function EquipmentProxy:GetEquipmentData(Player: Player, EquipmentUniqueId: number) - local EquipmentData = ArchiveProxy.pData[Player.UserId][STORE_NAME][EquipmentUniqueId] + local EquipmentData = ArchiveProxy.pData[Player.UserId][STORE_NAME][tostring(EquipmentUniqueId)] return EquipmentData end diff --git a/src/ServerStorage/Proxy/RuneProxy/init.luau b/src/ServerStorage/Proxy/RuneProxy/init.luau index e0d43f2..e302b27 100644 --- a/src/ServerStorage/Proxy/RuneProxy/init.luau +++ b/src/ServerStorage/Proxy/RuneProxy/init.luau @@ -79,7 +79,7 @@ function RuneProxy:AddRune(Player: Player, RuneId: number) ResultData.id = UniqueId ResultData.orgId = RuneId -- 记录穿戴的装备UniqueId - ResultData.wearing = 0 + ResultData.wearing = "0" ResultData.wearingSlot = 0 ArchiveProxy.pData[Player.UserId][STORE_NAME][UniqueId] = ResultData @@ -167,6 +167,7 @@ function RuneProxy:WearRune(Player: Player, RuneUniqueId: number, EquipmentUniqu -- 获取装备数据 local EquipmentProxy = require(ServerStorage.Proxy.EquipmentProxy) local EquipmentData = EquipmentProxy:GetEquipmentData(Player, EquipmentUniqueId) + print(EquipmentData, EquipmentUniqueId) -- 遍历符文查看现在穿了几个 local wearingCount = 0 @@ -185,6 +186,7 @@ function RuneProxy:WearRune(Player: Player, RuneUniqueId: number, EquipmentUniqu end -- 检查槽位数量是否充足 + print(wearingCount, EquipmentData.maxRuneNumber) if wearingCount >= EquipmentData.maxRuneNumber then RE_PlayerTip:FireClient(Player, "装备已满符文槽位") return @@ -254,7 +256,7 @@ function RuneProxy:GetPlayerWearingRuneData(Player: Player) local EquipmentProxy = require(ServerStorage.Proxy.EquipmentProxy) local wearingEquipments = EquipmentProxy:GetPlayerWearingEquipmentUniqueId(Player) for _, RuneData in ArchiveProxy.pData[Player.UserId][STORE_NAME] do - if RuneData.wearing > 0 and table.find(wearingEquipments, RuneData.wearing) then + if tonumber(RuneData.wearing) > 0 and table.find(wearingEquipments, RuneData.wearing) then table.insert(wearingRuneUniqueId, RuneData.id) local RuneData = Utils:GetIdDataFromJson(JsonRune, RuneData.orgId) if RuneData.runeName then diff --git a/src/StarterPlayerScripts/UI/Windows/CombineRuneWindow/WearingShow.luau b/src/StarterPlayerScripts/UI/Windows/CombineRuneWindow/WearingShow.luau index 6883c94..3a07f2a 100644 --- a/src/StarterPlayerScripts/UI/Windows/CombineRuneWindow/WearingShow.luau +++ b/src/StarterPlayerScripts/UI/Windows/CombineRuneWindow/WearingShow.luau @@ -31,11 +31,13 @@ function WearingShow:Refresh() self.Variables._imgIcon.Image = Localization:GetImageData(runeData.icon) self.Variables._imgIcon.BackgroundColor3 = Localization:GetRuneQualityBgColor(runeData.quality) + self.Variables._imgIcon.Transparency = 0 self.Variables._tmpName.Text = Localization:GetLanguageData(itemData.nameId) self.Variables._imgIcon.Visible = true else self.Variables._imgIcon.Image = "" self.Variables._tmpName.Text = "" + self.Variables._imgIcon.Transparency = 1 self.Variables._imgIcon.Visible = false end end @@ -50,7 +52,6 @@ function WearingShow:OnInitFinish() end function WearingShow:Destroy() - print("Destroy WearingShow") for k, v in pairs(self) do self[k] = nil end diff --git a/src/StarterPlayerScripts/UI/Windows/CombineRuneWindow/init.luau b/src/StarterPlayerScripts/UI/Windows/CombineRuneWindow/init.luau index 74f51e1..3cfb008 100644 --- a/src/StarterPlayerScripts/UI/Windows/CombineRuneWindow/init.luau +++ b/src/StarterPlayerScripts/UI/Windows/CombineRuneWindow/init.luau @@ -269,7 +269,11 @@ function CombineRuneWindow:OnOpenWindow() -- TODO: 这里清除逻辑不清晰,之后优化 local key, parentName = self:RemoveInstanceData(child, self.Data) if parentName == "SelectRune" then - local removeIndex = self.Variables["__listRuneCombine"]:RemoveData(key) + local oldSlot = self.Variables["__listRuneCombine"]:RemoveData(key) + self.Data.SelectRune[key] = { + wearingSlot = tonumber(string.sub(key, -1)), + } + self.Variables["__listRuneCombine"]:AddData(key, self.Data.SelectRune[key]) else local removeIndex = self.Variables["__listRunePackage"]:RemoveData(key) end diff --git a/src/StarterPlayerScripts/UI/Windows/RuneWindow/PackageShow.luau b/src/StarterPlayerScripts/UI/Windows/RuneWindow/PackageShow.luau index e621cc5..7d27717 100644 --- a/src/StarterPlayerScripts/UI/Windows/RuneWindow/PackageShow.luau +++ b/src/StarterPlayerScripts/UI/Windows/RuneWindow/PackageShow.luau @@ -48,7 +48,7 @@ function PackageShow:OnInitFinish() local oldWearing = self.Data.wearing local newWearing = self.Data.instance:GetAttribute("wearing") if oldWearing ~= newWearing then - if newWearing > 0 then + if tonumber(newWearing) > 0 then self.TopUI:WearRefresh(self.Data) else self.TopUI:UnwearRefresh(self.Data) diff --git a/src/StarterPlayerScripts/UI/Windows/RuneWindow/WearingShow.luau b/src/StarterPlayerScripts/UI/Windows/RuneWindow/WearingShow.luau index 9f7c6bb..0422a97 100644 --- a/src/StarterPlayerScripts/UI/Windows/RuneWindow/WearingShow.luau +++ b/src/StarterPlayerScripts/UI/Windows/RuneWindow/WearingShow.luau @@ -25,27 +25,29 @@ function WearingShow:Init(data: table) end function WearingShow:Refresh() - if self.Data then + if self.Data.instance then local itemData = Utils:GetIdDataFromJson(JsonItemProp, self.Data.orgId) local runeData = Utils:GetIdDataFromJson(JsonRune, self.Data.orgId) self.Variables._imgIcon.Image = Localization:GetImageData(runeData.icon) self.Variables._imgIcon.BackgroundColor3 = Localization:GetRuneQualityBgColor(runeData.quality) + self.Variables._imgIcon.Transparency = 0 self.Variables._tmpName.Text = Localization:GetLanguageData(itemData.nameId) self.Variables._imgIcon.Visible = true else self.Variables._imgIcon.Image = "" self.Variables._tmpName.Text = "" + self.Variables._imgIcon.Transparency = 1 self.Variables._imgIcon.Visible = false end end function WearingShow:OnInitFinish() local con = self.Variables._btnClick.MouseButton1Click:Connect(function() - if self.Data == {} then - -- TODO: 之后做提示弹窗 - else + if self.Data.instance then self.TopUI:ShowDetailData(self.Data.id) + else + -- TODO: 之后做提示弹窗 end end) table.insert(self.Connections, con) diff --git a/src/StarterPlayerScripts/UI/Windows/RuneWindow/init.luau b/src/StarterPlayerScripts/UI/Windows/RuneWindow/init.luau index 1d26773..e277be1 100644 --- a/src/StarterPlayerScripts/UI/Windows/RuneWindow/init.luau +++ b/src/StarterPlayerScripts/UI/Windows/RuneWindow/init.luau @@ -128,7 +128,7 @@ end function RuneWindow:InlayRune() if self.NowSelectRuneId and self.ShowEquipmentId then - RE_RuneInlay:FireClient(self.NowSelectRuneId, self.ShowEquipmentId) + RE_RuneInlay:FireServer(self.NowSelectRuneId, self.ShowEquipmentId) end end