From 592f4aee24a5415815ccef11075ca0ae98d0d542 Mon Sep 17 00:00:00 2001 From: gechangfu Date: Mon, 1 Sep 2025 19:57:57 +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/cha.xlsx | Bin 15140 -> 15140 bytes src/ServerStorage/Proxy/EquipmentProxy.luau | 24 +++++++++++ .../Proxy/PlayerFightProxy/init.luau | 1 - .../AttributeLvupShow.luau | 2 +- .../UI/Windows/CreateWindow/init.luau | 8 +++- .../UI/Windows/MainWindow/init.luau | 39 ++++++++++++++++++ 6 files changed, 71 insertions(+), 3 deletions(-) diff --git a/excel/cha.xlsx b/excel/cha.xlsx index 334054c6456007ef4d9aa6570d000ac5f034c10e..2ba024c63374601ba6d9a2eddd61e827e18d61f0 100644 GIT binary patch delta 1844 zcmV-42g~@RcBFQ&*#-n&FmUvf-3A?h?{Awr6#YKw{SS!m6wI#>R5~RgXp!2f>aylb zrOE*(SOv^8CZU@4zwg>4Y0^ABW!+F>uzh_v=lb|^{kba(Z9{lNSrzH%%F;Dbr7WY> zI?}(-6C=>IM&K&L1*=G;zmi7(eDlwz>n-CiOU7O_0H~Ts&xNQ%(`?e5l(@NnVl}B? zX2p1k1$6n^Y-&z$*5rhUvM_DS^34*{O79UuehCI!t!PSOmbN9SL=VDAfd$ZSa#}Zg zv@*Q}uEhMMt&NnGH9#zBLB*>A)wMDWXX}b_yevR=hdiz0@blr1ENJZgn_%kfRV7V1 zYuHL$0kqkZKGTmZ6QPq7bmuvLxD3fPIoVLThX+>N{~#;>faSk|A?uIP5LiojC4}UC z5Y0Pqv-O+n6)nhPZ(R-7^;cZVoho##z>Sz@RFEvv2he3(@-_gfcw3KKTEMIwc($*b zHwQc4a}C^2daQX)o5jxOG6*~|Dg@yb7G%OI0T$dz`cu0p>`BhR+}Zh2($38`uii@N9QdXOL^;JXa|X(en?-iG6o68XKN98XE4vw~TS( zIL06d;shlYnhw05Acp&YVajkT^4%^==ty^AOV6h6aJQd9R@l<)jm8gacNy~juG!E1 zl!9eFd!%IBy!kwa~?xB1Q zpJhmjJYFyog41OyNb|j3bDWW*g;3xQ3+?v{6Da7%!QN4@^FH`?bB^vDEpV0D_JUGe zr1BKPP4OQh%O1)I(uvzfs5_hj3W-CmH5yn$*RZCJXSl)8HUihNjforEQ*SVhr(@+K z`GpGqMx9oNG2DND`Xo!pxR^uIU*LoJKvrYifbmtHP2hV>cI*XX%K?fmSln>Y5KKSz zUBinL#~Yw{GW8N^`kt(mzxrU63{16}V9`PukrhPsL)j*~(Zk@XAJ{qQq(+1fvCR8! z_5THa1N8;DFgSUS39*P{YMYa)zI(@puqz=^v=U*Q#Pj|Cj0eU~ zN6~nDP@2oOAW_gG9<)rByj>UM$M=Pw5>Ff2mb8&A6yyY&JWW1+7$2nC=o-LyNN9CI zYGbx}7;097pgNFSXz@)Ym7oT1)jHH$1+;WYq6y<(FMkOIoX~~h* zzmsv#ZrnKKIjXKJ|ygD4k~UDCuYEUosiHIr*wQ97gy; z1)jl+9k-Z-lX1!M^linSf~p|XC|^dAec_URayaNWYtPWt3pBtCpn-^Zc6L`%ZtTV- zKI&OHx4|MQGkg!v&@=`46pwKJe>)YsMv3sM@qc#R=`Gy6qwNwZx@*igdH4)`T^kf0 z1o03XVJ9gsPczUAM;O%uR}+&BLh#!Y9Dj<~GC_|n9(ZYL%+G?z0#=~Sf?FW**iIWM zeqAF3y#G_#Jcs}lQ1~7K{S&&!*cSMs*62?nXKML-rV1u0w#;(v&kXoa6 zbP(`g$t7Xz%wZeU0|*OJ$bh7=vaqIGtCm57#!#=w(lS}?8x8+ekoOtdN5IoC3bt=NI$Hu4Vb z#iB8aJAYrA61QA@@DlKhkOfxYxa5xG4j8s05uK1yjL7!W)IC573^gdw&SDx-{Nr_C zl>PHTuS}e(a>v&1bc#D=OEHL}`(UflxZm%iecZ?J`6+(eK0f!WhL!GaB>-iK6igW4 zt}$6DiUd#U?she|ZtKrnR3LAUnJ9vX1pn@POhli0V1W#L4mPAdE3fh0eZE22jL>;V z79pAEbjj$7#W(NW*o*gFuA!k$!~Z4DJaH8gnp4W+Ig81Jcm`yB?#sWBeFKv*5EQfD iG-m?@UNCUSUUi zN|ggnunL$pCZQV5f1hiUq)D?{Wjl)!gYE0XIoHRR>o0v(Y8%2^%IZ)@SC+1kI%7Gl z*P;G>o*ENfYXz=zT(X*k`WtEWFE@YwalK{yb;;PP1^{&%>V*(ZV47`KkP5edSF9m5 z%&Zu%uz)UKn{C4h&f9_zQI)1`S)N&8TI&Nsz%RjIs};>i%(AW`wHQD+DX{?hZ9$uM zk5*-uz*U&Pc8!s-ssV^4Eva}@pt@FN!E9YKj+Z6K?vbnY9DW}Bkp+#te-lidy{e)a zXDwTaD}Xi!(r5aSWg>Kvg8n>z2bUo^CMO#z_wc}qd!J|1Nxy41g&h?P%&k3tlD|9337jdg z7RZDaX8~Te4_Fjh$IDQUgJ-_%XL(5$1UIaHCVfWA=OatvbN~MbQ{qg@H9_ydX?Xsq z9jNhOZ@dS=HF%!IcaZ#VcmrDj8=mh@>I`y?MlW^71N8F4^J709PkqChM3&)1eq{J? z8OX6liH{P;N!_0yhI>JO#&9Q!-7ZV$PqGa2?`$2ZKenIP;ZA0BaHi&vV?QYfNg65(CL;02iA;Z{TgsuxL zlcx}FiocI6+m{if7k8~tcQ^$U5(j>{9b3L*SjosWoQZE66K7-_krUgAJ5J(cs(d8B zP{IFEr`2H$_Mbj~$r3Uy=8*JP_+UPg)fBg2e3fSt_#Ts;x|69j0*X$GQo}*MWlX1@ zW4LiTa>po+5;v8mAIM7it4~(RiK$i-EIKG7vVy37Alq~|dKg>{13L$u)QI3QmU-W; z{ud$=~vgjmFJYMYa)zWa_1VOK(;XeGipiRb(O84paJ zj-vMVpfs0FPNJYkJZP9Kc(cjL&mT*FOgwF9Q_xyAkdqT=@-+SYX>yQit1AHGA)(PZ zsf=l}Fx0F9L3JQoXz)!bm7oT1)h5)f0$R8vQHOD_mw$wU@`juVnRoJ%6YLS3plZ8oeI`YVh&8XdIXNit1j|;NMk>0lvF>9upv*fe{KRacVmZIU66~DpyAA}`W zm~EHJc7MFc$=`9boXvZ)XFpk_i9c8@7XCP0%>3an8qd;rl=Rc_KQf)TIr*kM97gy` z1)jl+9k-Z-(@DYc^linSf-)zwC|gC5ec_URaX9FAYtPX23)H|2pn-^Zc6QfNZtcbu zKI&OHx4|MQGkg!vP}ez`$0MBoKTgH2Q6ju*ynkPJdP_I&XuE)t?rQU09=-tIR0f3y zK|I7p*h$KY(;PIz5k~dE)x>0t5d8K8$Dbm$Owgl?2VR&8^V1-*fHi2dg&6`Q%&7rQmFVLoJWP(T#A`c{QL@A2| zy<}T|jXYzS6s&3_Btne51i$SbpZit)Qg*lEfYMlS$~7?C z=(ON@j3;$>yNVgRb7#&=5Vyya=iWn%fA<}xPeeViKzJ?(9a5i_*V)~Dwnb?al7$~G z{cw?yH6=H6Hh=HNUcB#e4UPIV{9j_^h&O&nvT#MCIbEzK#4{l6b6@_2^c#~g5EQfD iG-m?@FP Constants local STORE_NAME = "Equipment" @@ -461,6 +462,26 @@ function EquipmentProxy:UnwearEquipment(Player: Player, EquipmentId: number) PlayerFightProxy:UpdatePlayerFightData(Player) end +-- 自动回收装备(低于当前最高品质,且无符文槽位) +function EquipmentProxy:AutoRecycleEquipment(Player: Player) + local EquipmentData = ArchiveProxy.pData[Player.UserId][STORE_NAME] + if not EquipmentData then return end + + -- 找到当前最高品质装备 + local highestQuality = 0 + for _, EquipmentData in EquipmentData do + if EquipmentData.quality > highestQuality then + highestQuality = EquipmentData.quality + end + end + + for _, EquipmentData in EquipmentData do + if EquipmentData.quality < highestQuality and EquipmentData.maxRuneNumber == 0 then + self:RecycleEquipment(Player, EquipmentData.id) + end + end +end + -- 获取穿戴中的装备UniqueId function EquipmentProxy:GetPlayerWearingEquipmentUniqueId(Player: Player) local wearingEquipmentUniqueId = {} @@ -556,6 +577,9 @@ end) RE_RecycleEquipment.OnServerEvent:Connect(function(Player: Player, EquipmentUniqueIds: table) EquipmentProxy:RecycleEquipmentList(Player, EquipmentUniqueIds) end) +RE_AutoRecycleEquipment.OnServerEvent:Connect(function(Player: Player) + EquipmentProxy:AutoRecycleEquipment(Player) +end) return EquipmentProxy \ No newline at end of file diff --git a/src/ServerStorage/Proxy/PlayerFightProxy/init.luau b/src/ServerStorage/Proxy/PlayerFightProxy/init.luau index 774db69..2542f5d 100644 --- a/src/ServerStorage/Proxy/PlayerFightProxy/init.luau +++ b/src/ServerStorage/Proxy/PlayerFightProxy/init.luau @@ -184,7 +184,6 @@ function PlayerFightProxy:UpdatePlayerFightData(Player: Player) end end - -- 根据技能添加玩家AI行为 local abilityIdList, behaviorNameList = AbilityProxy:GetPlayerWearingAbilityData(Player) local playerAI = PlayerFightProxy:GetPlayerAI(Player) diff --git a/src/StarterPlayerScripts/UI/Windows/AttributeLvupWindow/AttributeLvupShow.luau b/src/StarterPlayerScripts/UI/Windows/AttributeLvupWindow/AttributeLvupShow.luau index b5f339d..36673cb 100644 --- a/src/StarterPlayerScripts/UI/Windows/AttributeLvupWindow/AttributeLvupShow.luau +++ b/src/StarterPlayerScripts/UI/Windows/AttributeLvupWindow/AttributeLvupShow.luau @@ -25,6 +25,7 @@ function AttributeLvupShow:Init(data: table) ["_tmpBattleValueRequire"] = 0, ["_tmpValue"] = 0, ["_tmpLv"] = 0, + ["_tmpRed"] = 0, ["_btnUpgrade"] = 0, } self.Connections = {} @@ -61,7 +62,6 @@ function AttributeLvupShow:Refresh() self.Variables._imgIcon.Image = Localization:GetImageData(attributeData.iconId) self.Variables._tmpAttributeName.Text = Localization:GetLanguageData(attributeData.nameId) - local nowLv = self:GetNowLv() self.Variables._tmpLv.Text = "Lv." .. nowLv diff --git a/src/StarterPlayerScripts/UI/Windows/CreateWindow/init.luau b/src/StarterPlayerScripts/UI/Windows/CreateWindow/init.luau index acf2572..86201d8 100644 --- a/src/StarterPlayerScripts/UI/Windows/CreateWindow/init.luau +++ b/src/StarterPlayerScripts/UI/Windows/CreateWindow/init.luau @@ -19,6 +19,7 @@ local JsonForge = require(ReplicatedStorage.Json.Forge) --> Events local RE_Forge = ReplicatedStorage.Events.RE_Forge +local RE_AutoRecycleEquipment = ReplicatedStorage.Events.RE_AutoRecycleEquipment local LocalPlayer = game.Players.LocalPlayer @@ -165,10 +166,12 @@ function CreateWindow:SetShowForgeCost(nowForgeTime : number, moneyValue: number end end - function CreateWindow:OnOpenWindow() UIWindow.OnOpenWindow(self) + -- 自动打开回收 + self:OnToggleAutoRecycleClick() + -- 自己进行数据处理 local DataFolder = Utils:GetPlayerDataFolder(LocalPlayer):FindFirstChild("Book") local data = {} @@ -260,6 +263,9 @@ function CreateWindow:OnOpenWindow() end function CreateWindow:OnCloseWindow() + if self.AutoRecycle then + RE_AutoRecycleEquipment:FireServer() + end UIWindow.OnCloseWindow(self) end diff --git a/src/StarterPlayerScripts/UI/Windows/MainWindow/init.luau b/src/StarterPlayerScripts/UI/Windows/MainWindow/init.luau index adfc700..2ef428a 100644 --- a/src/StarterPlayerScripts/UI/Windows/MainWindow/init.luau +++ b/src/StarterPlayerScripts/UI/Windows/MainWindow/init.luau @@ -9,6 +9,7 @@ local Signal = require(ReplicatedStorage.Tools.Signal) --> Json local JsonLevel = require(ReplicatedStorage.Json.Level) local JsonForge = require(ReplicatedStorage.Json.Forge) +local JsonAttributesUpgrade = require(ReplicatedStorage.Json.AttributesUpgrade) local Utils = require(ReplicatedStorage.Tools.Utils) @@ -98,6 +99,7 @@ function MainWindow:Init(UIManager: table, Data: table?) -- 锻造临时红点 ["_tmpRedCreate"] = 0, + ["_tmpRedAttributeUpgrade"] = 0, } self.UIRootName = "ui_w_main" self.UIParentName = UIEnums.UIParent.UIRoot @@ -138,6 +140,43 @@ function MainWindow:SetShowForgeBar(nowForgeTime : number, moneyValue: number) end end +function MainWindow:CheckShowAttributeUpgradeRed(newValue) + -- 临时做一个(当没有成长和限制算) + if newValue < 150 then + self.Variables["_tmpRedAttributeUpgrade"].Visible = false + else + self.Variables["_tmpRedAttributeUpgrade"].Visible = true + end +end + +-- 设置当前加点红点 +function MainWindow:SetShowAttributeUpgradeRed() + -- 设置货币监听 + local CheckMoneyId = 1 + + local MoneyFolder = Utils:GetPlayerDataFolder(LocalPlayer):FindFirstChild("PlayerInfo"):FindFirstChild("Items") + if not MoneyFolder then warn("无法获取物品文件夹") return end + + local InstanceMoney = MoneyFolder:FindFirstChild(CheckMoneyId) + if not InstanceMoney then + self.Variables["_tmpRedAttributeUpgrade"].Visible = false + local connectionFolder + connectionFolder = MoneyFolder.ChildAdded:Connect(function(child) + if child.Name == tostring(CheckMoneyId) then + InstanceMoney = child + connectionFolder:Disconnect() + end + end) + else + local con = InstanceMoney.Changed:Connect(function(newValue) + self:CheckShowAttributeUpgradeRed(newValue) + end) + table.insert(self.Connections, con) + -- 初始化显示设置 + self:CheckShowAttributeUpgradeRed(InstanceMoney.Value) + end +end + function MainWindow:OnOpenWindow() UIWindow.OnOpenWindow(self)