From 384bf38b0300ac79ddca6a9218e52bd8f49073c2 Mon Sep 17 00:00:00 2001 From: gechangfu Date: Mon, 4 Aug 2025 20:42:53 +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 13193 -> 13198 bytes excel/cha.xlsx | Bin 14049 -> 14536 bytes excel/enemy.xlsx | Bin 9163 -> 9159 bytes excel/equipment.xlsx | Bin 9757 -> 9757 bytes excel/global.xlsx | Bin 22285 -> 22392 bytes excel/item.xlsx | Bin 22680 -> 22653 bytes excel/level.xlsx | Bin 10457 -> 10412 bytes src/ReplicatedStorage/Json/Attributes.json | 4 +- .../Json/AttributesUpgrade.json | 22 ++-- src/ReplicatedStorage/Json/Character.json | 2 +- src/ReplicatedStorage/Json/Enemy.json | 4 +- src/ReplicatedStorage/Json/Equipment.json | 32 ++--- src/ReplicatedStorage/Json/Forge.json | 69 ++++++---- src/ReplicatedStorage/Json/ItemProp.json | 4 +- src/ReplicatedStorage/Json/Level.json | 100 +++++++-------- src/ReplicatedStorage/Json/Param.json | 4 +- src/ReplicatedStorage/Tools/Localization.luau | 21 +++ src/ServerStorage/Proxy/EquipmentProxy.luau | 29 ++++- src/ServerStorage/Proxy/PlayerInfoProxy.luau | 7 +- .../UI/Common/ItemShow.luau | 55 ++++++++ .../UI/Windows/ChaWindow/init.luau | 28 +++- .../UI/Windows/CreateWindow/WeaponItem.luau | 26 +++- .../UI/Windows/CreateWindow/init.luau | 83 +++++++++++- .../UI/Windows/MainWindow/init.luau | 1 - .../RecycleWindow/RecyclePackageShow.luau | 88 +++++++++++++ .../UI/Windows/RecycleWindow/init.luau | 121 ++++++++++++++++++ 26 files changed, 576 insertions(+), 124 deletions(-) create mode 100644 src/StarterPlayerScripts/UI/Common/ItemShow.luau create mode 100644 src/StarterPlayerScripts/UI/Windows/RecycleWindow/RecyclePackageShow.luau create mode 100644 src/StarterPlayerScripts/UI/Windows/RecycleWindow/init.luau diff --git a/excel/attribute.xlsx b/excel/attribute.xlsx index d7a3d125a7f8c2c67702ae93aeb57b344674d4dd..3416d175581307b2f85e1632c99063cda5e4bbc5 100644 GIT binary patch delta 5444 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 Af&c&j delta 5433 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 BRF41v diff --git a/excel/cha.xlsx b/excel/cha.xlsx index 4e1de380eb95ce1498f258ef6bb152c969f5b08b..9fdfa58903e5274cd2a070c4655f01c8c0725925 100644 GIT binary patch delta 6785 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 m1pokL7ytkm0000000000000000AQ1`B#$ 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 delta 4151 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 diff --git a/excel/item.xlsx b/excel/item.xlsx index c8af27d998741942a0e311bf804ab507b0f831cb..8e4432d36800d8fe350213380a85474b85f070de 100644 GIT binary patch delta 6562 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 diff --git a/excel/level.xlsx b/excel/level.xlsx index c18fa4a2d8d39e774246fc743b5d95de0df7a4f0..eb0604aff110fb1732e61e528f253cc7ba8a8c21 100644 GIT binary patch delta 3785 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 L7%M&%$F1dmt8O|1 delta 3841 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 diff --git a/src/ReplicatedStorage/Json/Attributes.json b/src/ReplicatedStorage/Json/Attributes.json index d9d3e22..e9913da 100644 --- a/src/ReplicatedStorage/Json/Attributes.json +++ b/src/ReplicatedStorage/Json/Attributes.json @@ -1,6 +1,6 @@ [ -{"id":1,"type":1,"effectAttribute":"attack","battleValue":[1,10],"iconId":1,"nameId":201}, -{"id":2,"type":1,"effectAttribute":"hp","battleValue":[1,10],"iconId":2,"nameId":202}, +{"id":1,"type":1,"effectAttribute":"attack","battleValue":[1,15],"iconId":1,"nameId":201}, +{"id":2,"type":1,"effectAttribute":"hp","battleValue":[1,1],"iconId":2,"nameId":202}, {"id":3,"type":1,"effectAttribute":"swordAtk","battleValue":[1,10],"iconId":3,"nameId":203}, {"id":4,"type":2,"effectAttribute":"swordWearBase","battleValue":[1,10],"iconId":4,"nameId":204}, {"id":5,"type":2,"effectAttribute":"swordWearSpe","battleValue":[1,10],"iconId":5,"nameId":205}, diff --git a/src/ReplicatedStorage/Json/AttributesUpgrade.json b/src/ReplicatedStorage/Json/AttributesUpgrade.json index c238de5..cacf3b6 100644 --- a/src/ReplicatedStorage/Json/AttributesUpgrade.json +++ b/src/ReplicatedStorage/Json/AttributesUpgrade.json @@ -1,13 +1,13 @@ [ -{"id":1,"type":1,"effectAttribute":"attack","cost":[1,10,20],"lvAdd":[100,845],"battleValueLimit":[5,20],"maxLv":null}, -{"id":2,"type":1,"effectAttribute":"hp","cost":[1,10,20],"lvAdd":[2000,845],"battleValueLimit":[5,20],"maxLv":null}, -{"id":3,"type":1,"effectAttribute":"swordAtk","cost":[1,10,20],"lvAdd":[10,20],"battleValueLimit":[5,20],"maxLv":null}, -{"id":4,"type":1,"effectAttribute":"swordWearBase","cost":[1,10,20],"lvAdd":[10,20],"battleValueLimit":[5,20],"maxLv":null}, -{"id":5,"type":1,"effectAttribute":"swordWearSpe","cost":[1,10,20],"lvAdd":[10,20],"battleValueLimit":[5,20],"maxLv":null}, -{"id":10,"type":2,"effectAttribute":"wearNumber","cost":[1,10,20],"lvAdd":[1,1],"battleValueLimit":[5,20],"maxLv":4}, -{"id":11,"type":2,"effectAttribute":"abilityNumber","cost":[1,10,20],"lvAdd":[1,1],"battleValueLimit":[5,20],"maxLv":3}, -{"id":12,"type":2,"effectAttribute":"extraAttributeNumber","cost":[1,10,20],"lvAdd":[1,1],"battleValueLimit":[5,20],"maxLv":3}, -{"id":13,"type":2,"effectAttribute":"elementNumber","cost":[1,10,20],"lvAdd":[1,1],"battleValueLimit":[5,20],"maxLv":3}, -{"id":14,"type":2,"effectAttribute":"elementDefNumber","cost":[1,10,20],"lvAdd":[1,1],"battleValueLimit":[5,20],"maxLv":3}, -{"id":15,"type":2,"effectAttribute":"gemNumber","cost":[1,10,20],"lvAdd":[1,1],"battleValueLimit":[5,20],"maxLv":3} +{"id":1,"type":1,"effectAttribute":"attack","cost":[1,300,0],"lvAdd":[40,10985],"battleValueLimit":[5,20],"maxLv":null}, +{"id":2,"type":1,"effectAttribute":"hp","cost":[1,300,0],"lvAdd":[600,10985],"battleValueLimit":[5,20],"maxLv":null}, +{"id":3,"type":1,"effectAttribute":"swordAtk","cost":[1,300,0],"lvAdd":[10,0],"battleValueLimit":[5,20],"maxLv":null}, +{"id":4,"type":1,"effectAttribute":"swordWearBase","cost":[1,300,0],"lvAdd":[10,0],"battleValueLimit":[5,20],"maxLv":null}, +{"id":5,"type":1,"effectAttribute":"swordWearSpe","cost":[1,300,0],"lvAdd":[10,0],"battleValueLimit":[5,20],"maxLv":null}, +{"id":10,"type":2,"effectAttribute":"wearNumber","cost":[1,300,0],"lvAdd":[1,1],"battleValueLimit":[5,20],"maxLv":4}, +{"id":11,"type":2,"effectAttribute":"abilityNumber","cost":[1,300,0],"lvAdd":[1,1],"battleValueLimit":[5,20],"maxLv":3}, +{"id":12,"type":2,"effectAttribute":"extraAttributeNumber","cost":[1,300,0],"lvAdd":[1,1],"battleValueLimit":[5,20],"maxLv":3}, +{"id":13,"type":2,"effectAttribute":"elementNumber","cost":[1,300,0],"lvAdd":[1,1],"battleValueLimit":[5,20],"maxLv":3}, +{"id":14,"type":2,"effectAttribute":"elementDefNumber","cost":[1,300,0],"lvAdd":[1,1],"battleValueLimit":[5,20],"maxLv":3}, +{"id":15,"type":2,"effectAttribute":"gemNumber","cost":[1,300,0],"lvAdd":[1,1],"battleValueLimit":[5,20],"maxLv":3} ] \ No newline at end of file diff --git a/src/ReplicatedStorage/Json/Character.json b/src/ReplicatedStorage/Json/Character.json index a2b0cd4..f74367b 100644 --- a/src/ReplicatedStorage/Json/Character.json +++ b/src/ReplicatedStorage/Json/Character.json @@ -1,3 +1,3 @@ [ -{"id":1,"name":1,"attack":100,"hp":2000,"walkSpeed":10,"atkSpeed":100} +{"id":1,"name":1,"attack":40,"hp":600,"walkSpeed":10,"atkSpeed":100} ] \ No newline at end of file diff --git a/src/ReplicatedStorage/Json/Enemy.json b/src/ReplicatedStorage/Json/Enemy.json index 892a285..e7e6eeb 100644 --- a/src/ReplicatedStorage/Json/Enemy.json +++ b/src/ReplicatedStorage/Json/Enemy.json @@ -1,5 +1,5 @@ [ -{"id":1,"type":1,"name":1,"attack":20,"hp":1700,"walkSpeed":8,"attackSpeed":1,"model":"Thief"}, -{"id":2,"type":1,"name":2,"attack":20,"hp":1700,"walkSpeed":8,"attackSpeed":1,"model":"Thief"}, +{"id":1,"type":1,"name":1,"attack":10,"hp":150,"walkSpeed":8,"attackSpeed":1,"model":"Thief"}, +{"id":2,"type":1,"name":2,"attack":10,"hp":150,"walkSpeed":8,"attackSpeed":1,"model":"Thief"}, {"id":1000,"type":2,"name":1000,"attack":120,"hp":1000,"walkSpeed":4,"attackSpeed":1,"model":"Thief"} ] \ No newline at end of file diff --git a/src/ReplicatedStorage/Json/Equipment.json b/src/ReplicatedStorage/Json/Equipment.json index 9e284fa..8bfd732 100644 --- a/src/ReplicatedStorage/Json/Equipment.json +++ b/src/ReplicatedStorage/Json/Equipment.json @@ -1,18 +1,18 @@ [ -{"id":40000,"type":1,"name":40000,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10}, -{"id":40001,"type":1,"name":40001,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10}, -{"id":40002,"type":1,"name":40002,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10}, -{"id":40003,"type":1,"name":40003,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10}, -{"id":40004,"type":1,"name":40004,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10}, -{"id":40005,"type":1,"name":40005,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10}, -{"id":40006,"type":1,"name":40006,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10}, -{"id":40007,"type":1,"name":40007,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10}, -{"id":40008,"type":1,"name":40008,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10}, -{"id":40009,"type":1,"name":40009,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10}, -{"id":40010,"type":1,"name":40010,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10}, -{"id":40011,"type":1,"name":40011,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10}, -{"id":40012,"type":1,"name":40012,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10}, -{"id":40013,"type":1,"name":40013,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10}, -{"id":40014,"type":1,"name":40014,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10}, -{"id":40015,"type":1,"name":40015,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10} +{"id":40000,"type":1,"name":40000,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":300}, +{"id":40001,"type":1,"name":40001,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":300}, +{"id":40002,"type":1,"name":40002,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":300}, +{"id":40003,"type":1,"name":40003,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":300}, +{"id":40004,"type":1,"name":40004,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":300}, +{"id":40005,"type":1,"name":40005,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":300}, +{"id":40006,"type":1,"name":40006,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":300}, +{"id":40007,"type":1,"name":40007,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":300}, +{"id":40008,"type":1,"name":40008,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":300}, +{"id":40009,"type":1,"name":40009,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":300}, +{"id":40010,"type":1,"name":40010,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":300}, +{"id":40011,"type":1,"name":40011,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":300}, +{"id":40012,"type":1,"name":40012,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":300}, +{"id":40013,"type":1,"name":40013,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":300}, +{"id":40014,"type":1,"name":40014,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":300}, +{"id":40015,"type":1,"name":40015,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":300} ] \ No newline at end of file diff --git a/src/ReplicatedStorage/Json/Forge.json b/src/ReplicatedStorage/Json/Forge.json index c7d41d2..955ee03 100644 --- a/src/ReplicatedStorage/Json/Forge.json +++ b/src/ReplicatedStorage/Json/Forge.json @@ -3,27 +3,50 @@ {"id":2,"cost":[2,20]}, {"id":3,"cost":[2,30]}, {"id":4,"cost":[2,40]}, -{"id":5,"cost":[2,60]}, -{"id":6,"cost":[2,80]}, -{"id":7,"cost":[2,100]}, -{"id":8,"cost":[2,120]}, -{"id":9,"cost":[2,140]}, -{"id":10,"cost":[2,160]}, -{"id":11,"cost":[2,180]}, -{"id":12,"cost":[2,200]}, -{"id":13,"cost":[2,220]}, -{"id":14,"cost":[2,240]}, -{"id":15,"cost":[2,260]}, -{"id":16,"cost":[2,280]}, -{"id":17,"cost":[2,300]}, -{"id":18,"cost":[2,320]}, -{"id":19,"cost":[2,340]}, -{"id":20,"cost":[2,360]}, -{"id":21,"cost":[2,380]}, -{"id":22,"cost":[2,400]}, -{"id":23,"cost":[2,420]}, -{"id":24,"cost":[2,440]}, -{"id":25,"cost":[2,460]}, -{"id":26,"cost":[2,480]}, -{"id":27,"cost":[2,500]} +{"id":5,"cost":[2,50]}, +{"id":6,"cost":[2,60]}, +{"id":7,"cost":[2,70]}, +{"id":8,"cost":[2,80]}, +{"id":9,"cost":[2,90]}, +{"id":10,"cost":[2,100]}, +{"id":11,"cost":[2,110]}, +{"id":12,"cost":[2,120]}, +{"id":13,"cost":[2,130]}, +{"id":14,"cost":[2,140]}, +{"id":15,"cost":[2,150]}, +{"id":16,"cost":[2,160]}, +{"id":17,"cost":[2,170]}, +{"id":18,"cost":[2,180]}, +{"id":19,"cost":[2,190]}, +{"id":20,"cost":[2,200]}, +{"id":21,"cost":[2,210]}, +{"id":22,"cost":[2,220]}, +{"id":23,"cost":[2,230]}, +{"id":24,"cost":[2,240]}, +{"id":25,"cost":[2,250]}, +{"id":26,"cost":[2,260]}, +{"id":27,"cost":[2,270]}, +{"id":28,"cost":[2,280]}, +{"id":29,"cost":[2,290]}, +{"id":30,"cost":[2,300]}, +{"id":31,"cost":[2,310]}, +{"id":32,"cost":[2,320]}, +{"id":33,"cost":[2,330]}, +{"id":34,"cost":[2,340]}, +{"id":35,"cost":[2,350]}, +{"id":36,"cost":[2,360]}, +{"id":37,"cost":[2,370]}, +{"id":38,"cost":[2,380]}, +{"id":39,"cost":[2,390]}, +{"id":40,"cost":[2,400]}, +{"id":41,"cost":[2,410]}, +{"id":42,"cost":[2,420]}, +{"id":43,"cost":[2,430]}, +{"id":44,"cost":[2,440]}, +{"id":45,"cost":[2,450]}, +{"id":46,"cost":[2,460]}, +{"id":47,"cost":[2,470]}, +{"id":48,"cost":[2,480]}, +{"id":49,"cost":[2,490]}, +{"id":50,"cost":[2,500]} ] \ No newline at end of file diff --git a/src/ReplicatedStorage/Json/ItemProp.json b/src/ReplicatedStorage/Json/ItemProp.json index 60ae155..e01f5af 100644 --- a/src/ReplicatedStorage/Json/ItemProp.json +++ b/src/ReplicatedStorage/Json/ItemProp.json @@ -1,6 +1,6 @@ [ -{"id":1,"type":1,"typeArgs":[],"quality":4,"iconId":1,"nameId":10001,"textId":20001,"buyPrice":[],"sellPrice":[],"use":[],"showPackage":null}, -{"id":2,"type":1,"typeArgs":[],"quality":4,"iconId":2,"nameId":10002,"textId":20002,"buyPrice":[],"sellPrice":[],"use":[],"showPackage":null}, +{"id":1,"type":1,"typeArgs":[],"quality":1,"iconId":1,"nameId":10001,"textId":20001,"buyPrice":[],"sellPrice":[],"use":[],"showPackage":null}, +{"id":2,"type":1,"typeArgs":[],"quality":2,"iconId":2,"nameId":10002,"textId":20002,"buyPrice":[],"sellPrice":[],"use":[],"showPackage":null}, {"id":3,"type":1,"typeArgs":[],"quality":2,"iconId":3,"nameId":10003,"textId":20003,"buyPrice":[],"sellPrice":[],"use":[],"showPackage":null}, {"id":11,"type":1,"typeArgs":[],"quality":1,"iconId":11,"nameId":10011,"textId":20011,"buyPrice":[],"sellPrice":[],"use":[],"showPackage":null}, {"id":10000,"type":4,"typeArgs":[],"quality":1,"iconId":12,"nameId":20000,"textId":30000,"buyPrice":[11,10],"sellPrice":[11,10],"use":[],"showPackage":null}, diff --git a/src/ReplicatedStorage/Json/Level.json b/src/ReplicatedStorage/Json/Level.json index f290f64..7d55442 100644 --- a/src/ReplicatedStorage/Json/Level.json +++ b/src/ReplicatedStorage/Json/Level.json @@ -1,52 +1,52 @@ [ -{"id":1,"type":1,"timeLimit":null,"atkBonus":500,"hpBonus":500,"wave":[[10,1,1,50,1,1]],"finishRewards":[50000,1]}, -{"id":2,"type":1,"timeLimit":null,"atkBonus":520,"hpBonus":520,"wave":[[10,1,1,50,1,1]],"finishRewards":[50001,1]}, -{"id":3,"type":1,"timeLimit":null,"atkBonus":540,"hpBonus":540,"wave":[[10,1,1,50,1,1]],"finishRewards":[50002,1]}, -{"id":4,"type":1,"timeLimit":null,"atkBonus":560,"hpBonus":560,"wave":[[10,1,1,50,1,1]],"finishRewards":[50003,1]}, -{"id":5,"type":2,"timeLimit":60,"atkBonus":1050,"hpBonus":1050,"wave":[[10,1000,1]],"finishRewards":[50004,1]}, -{"id":6,"type":1,"timeLimit":null,"atkBonus":600,"hpBonus":600,"wave":[[10,1,1,50,1,1]],"finishRewards":[50005,1]}, -{"id":7,"type":1,"timeLimit":null,"atkBonus":620,"hpBonus":620,"wave":[[10,1,1,50,1,1]],"finishRewards":[50006,1]}, -{"id":8,"type":1,"timeLimit":null,"atkBonus":640,"hpBonus":640,"wave":[[10,1,1,50,1,1]],"finishRewards":[50007,1]}, -{"id":9,"type":1,"timeLimit":null,"atkBonus":660,"hpBonus":660,"wave":[[10,1,1,50,1,1]],"finishRewards":[50008,1]}, -{"id":10,"type":2,"timeLimit":60,"atkBonus":1100,"hpBonus":1100,"wave":[[10,1000,1]],"finishRewards":[50009,1]}, -{"id":11,"type":1,"timeLimit":null,"atkBonus":700,"hpBonus":700,"wave":[[10,1,1,50,1,1]],"finishRewards":[50010,1]}, -{"id":12,"type":1,"timeLimit":null,"atkBonus":720,"hpBonus":720,"wave":[[10,1,1,50,1,1]],"finishRewards":[50011,1]}, -{"id":13,"type":1,"timeLimit":null,"atkBonus":740,"hpBonus":740,"wave":[[10,1,1,50,1,1]],"finishRewards":[50012,1]}, -{"id":14,"type":1,"timeLimit":null,"atkBonus":760,"hpBonus":760,"wave":[[10,1,1,50,1,1]],"finishRewards":[50013,1]}, -{"id":15,"type":2,"timeLimit":60,"atkBonus":1150,"hpBonus":1150,"wave":[[10,1000,1]],"finishRewards":[50014,1]}, -{"id":16,"type":1,"timeLimit":null,"atkBonus":800,"hpBonus":800,"wave":[[10,1,1,50,1,1]],"finishRewards":[50015,1]}, -{"id":17,"type":1,"timeLimit":null,"atkBonus":820,"hpBonus":820,"wave":[[10,1,1,50,1,1]],"finishRewards":[]}, -{"id":18,"type":1,"timeLimit":null,"atkBonus":840,"hpBonus":840,"wave":[[10,1,1,50,1,1]],"finishRewards":[]}, -{"id":19,"type":1,"timeLimit":null,"atkBonus":860,"hpBonus":860,"wave":[[10,1,1,50,1,1]],"finishRewards":[]}, -{"id":20,"type":2,"timeLimit":60,"atkBonus":1250,"hpBonus":1250,"wave":[[10,1000,1]],"finishRewards":[]}, -{"id":21,"type":1,"timeLimit":null,"atkBonus":900,"hpBonus":900,"wave":[[10,1,1,50,1,1]],"finishRewards":[]}, -{"id":22,"type":1,"timeLimit":null,"atkBonus":920,"hpBonus":920,"wave":[[10,1,1,50,1,1]],"finishRewards":[]}, -{"id":23,"type":1,"timeLimit":null,"atkBonus":940,"hpBonus":940,"wave":[[10,1,1,50,1,1]],"finishRewards":[]}, -{"id":24,"type":1,"timeLimit":null,"atkBonus":960,"hpBonus":960,"wave":[[10,1,1,50,1,1]],"finishRewards":[]}, -{"id":25,"type":2,"timeLimit":60,"atkBonus":1350,"hpBonus":1350,"wave":[[10,1000,1]],"finishRewards":[]}, -{"id":26,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1]],"finishRewards":[]}, -{"id":27,"type":1,"timeLimit":null,"atkBonus":1020,"hpBonus":1020,"wave":[[10,1,1,50,1,1]],"finishRewards":[]}, -{"id":28,"type":1,"timeLimit":null,"atkBonus":1040,"hpBonus":1040,"wave":[[10,1,1,50,1,1]],"finishRewards":[]}, -{"id":29,"type":1,"timeLimit":null,"atkBonus":1060,"hpBonus":1060,"wave":[[10,1,1,50,1,1]],"finishRewards":[]}, -{"id":30,"type":2,"timeLimit":60,"atkBonus":1500,"hpBonus":1500,"wave":[[10,1000,1]],"finishRewards":[]}, -{"id":31,"type":1,"timeLimit":null,"atkBonus":1100,"hpBonus":1100,"wave":[[10,1,1,50,1,1]],"finishRewards":[]}, -{"id":32,"type":1,"timeLimit":null,"atkBonus":1120,"hpBonus":1120,"wave":[[10,1,1,50,1,1]],"finishRewards":[]}, -{"id":33,"type":1,"timeLimit":null,"atkBonus":1140,"hpBonus":1140,"wave":[[10,1,1,50,1,1]],"finishRewards":[]}, -{"id":34,"type":1,"timeLimit":null,"atkBonus":1160,"hpBonus":1160,"wave":[[10,1,1,50,1,1]],"finishRewards":[]}, -{"id":35,"type":2,"timeLimit":60,"atkBonus":2000,"hpBonus":2000,"wave":[[10,1000,1]],"finishRewards":[]}, -{"id":36,"type":1,"timeLimit":null,"atkBonus":1200,"hpBonus":1200,"wave":[[10,1,1,50,1,1]],"finishRewards":[]}, -{"id":37,"type":1,"timeLimit":null,"atkBonus":1220,"hpBonus":1220,"wave":[[10,1,1,50,1,1]],"finishRewards":[]}, -{"id":38,"type":1,"timeLimit":null,"atkBonus":1240,"hpBonus":1240,"wave":[[10,1,1,50,1,1]],"finishRewards":[]}, -{"id":39,"type":1,"timeLimit":null,"atkBonus":1260,"hpBonus":1260,"wave":[[10,1,1,50,1,1]],"finishRewards":[]}, -{"id":40,"type":2,"timeLimit":60,"atkBonus":2500,"hpBonus":2500,"wave":[[10,1000,1]],"finishRewards":[]}, -{"id":41,"type":1,"timeLimit":null,"atkBonus":1300,"hpBonus":1300,"wave":[[10,1,1,50,1,1]],"finishRewards":[]}, -{"id":42,"type":1,"timeLimit":null,"atkBonus":1320,"hpBonus":1320,"wave":[[10,1,1,50,1,1]],"finishRewards":[]}, -{"id":43,"type":1,"timeLimit":null,"atkBonus":1340,"hpBonus":1340,"wave":[[10,1,1,50,1,1]],"finishRewards":[]}, -{"id":44,"type":1,"timeLimit":null,"atkBonus":1360,"hpBonus":1360,"wave":[[10,1,1,50,1,1]],"finishRewards":[]}, -{"id":45,"type":2,"timeLimit":60,"atkBonus":3000,"hpBonus":3000,"wave":[[10,1000,1]],"finishRewards":[]}, -{"id":46,"type":1,"timeLimit":null,"atkBonus":1400,"hpBonus":1400,"wave":[[10,1,1,50,1,1]],"finishRewards":[]}, -{"id":47,"type":1,"timeLimit":null,"atkBonus":1420,"hpBonus":1420,"wave":[[10,1,1,50,1,1]],"finishRewards":[]}, -{"id":48,"type":1,"timeLimit":null,"atkBonus":1440,"hpBonus":1440,"wave":[[10,1,1,50,1,1]],"finishRewards":[]}, -{"id":49,"type":1,"timeLimit":null,"atkBonus":1460,"hpBonus":1460,"wave":[[10,1,1,50,1,1]],"finishRewards":[]}, -{"id":50,"type":2,"timeLimit":60,"atkBonus":3500,"hpBonus":3500,"wave":[[10,1000,1]],"finishRewards":[]} +{"id":1,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1],[10,1,1],[10,1,1],[10,1,1]],"finishRewards":[50000,1]}, +{"id":2,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1],[10,1,1],[10,1,1],[10,1,1]],"finishRewards":[50001,1]}, +{"id":3,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[50002,1]}, +{"id":4,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[50003,1]}, +{"id":5,"type":2,"timeLimit":60,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1000,1]],"finishRewards":[50004,1]}, +{"id":6,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[50005,1]}, +{"id":7,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[50006,1]}, +{"id":8,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[50007,1]}, +{"id":9,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[50008,1]}, +{"id":10,"type":2,"timeLimit":60,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1000,1]],"finishRewards":[50009,1]}, +{"id":11,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[50010,1]}, +{"id":12,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[50011,1]}, +{"id":13,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[50012,1]}, +{"id":14,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[50013,1]}, +{"id":15,"type":2,"timeLimit":60,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1000,1]],"finishRewards":[50014,1]}, +{"id":16,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[50015,1]}, +{"id":17,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]}, +{"id":18,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]}, +{"id":19,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]}, +{"id":20,"type":2,"timeLimit":60,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1000,1]],"finishRewards":[]}, +{"id":21,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]}, +{"id":22,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]}, +{"id":23,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]}, +{"id":24,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]}, +{"id":25,"type":2,"timeLimit":60,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1000,1]],"finishRewards":[]}, +{"id":26,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]}, +{"id":27,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]}, +{"id":28,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]}, +{"id":29,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]}, +{"id":30,"type":2,"timeLimit":60,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1000,1]],"finishRewards":[]}, +{"id":31,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]}, +{"id":32,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]}, +{"id":33,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]}, +{"id":34,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]}, +{"id":35,"type":2,"timeLimit":60,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1000,1]],"finishRewards":[]}, +{"id":36,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]}, +{"id":37,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]}, +{"id":38,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]}, +{"id":39,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]}, +{"id":40,"type":2,"timeLimit":60,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1000,1]],"finishRewards":[]}, +{"id":41,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]}, +{"id":42,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]}, +{"id":43,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]}, +{"id":44,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]}, +{"id":45,"type":2,"timeLimit":60,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1000,1]],"finishRewards":[]}, +{"id":46,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]}, +{"id":47,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]}, +{"id":48,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]}, +{"id":49,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]}, +{"id":50,"type":2,"timeLimit":60,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1000,1]],"finishRewards":[]} ] \ No newline at end of file diff --git a/src/ReplicatedStorage/Json/Param.json b/src/ReplicatedStorage/Json/Param.json index 278fe58..987b3db 100644 --- a/src/ReplicatedStorage/Json/Param.json +++ b/src/ReplicatedStorage/Json/Param.json @@ -1,7 +1,7 @@ [ {"id":1,"key":"quality_bonus","intValue":null,"stringValue":null,"intArray":[100,125,150,200,275,375]}, -{"id":2,"key":"level_get_bonus","intValue":null,"stringValue":null,"intArray":[5,2]}, -{"id":3,"key":"mob_died_get","intValue":null,"stringValue":null,"intArray":[2,10]}, +{"id":2,"key":"level_get_bonus","intValue":null,"stringValue":null,"intArray":[5,0]}, +{"id":3,"key":"mob_died_get","intValue":null,"stringValue":null,"intArray":[2,4]}, {"id":4,"key":"default_weapon","intValue":null,"stringValue":"Sword","intArray":[]}, {"id":5,"key":"quality_show","intValue":null,"stringValue":null,"intArray":[101,102,103,104,105,106,107,108]} ] \ No newline at end of file diff --git a/src/ReplicatedStorage/Tools/Localization.luau b/src/ReplicatedStorage/Tools/Localization.luau index bc89bcb..18f8b34 100644 --- a/src/ReplicatedStorage/Tools/Localization.luau +++ b/src/ReplicatedStorage/Tools/Localization.luau @@ -32,6 +32,17 @@ local QUALITY_COLOR = { [8] = Color3.fromRGB(255, 0, 255), -- 粉色 } +local QUALITY_BG_COLOR = { + [1] = Color3.fromRGB(255, 255, 255), -- 白色 + [2] = Color3.fromRGB(66, 209, 66), -- 绿色 + [3] = Color3.fromRGB(78, 164, 226), -- 蓝色 + [4] = Color3.fromRGB(159, 71, 221), -- 紫色 + [5] = Color3.fromRGB(223, 159, 71), -- 橙色 + [6] = Color3.fromRGB(233, 78, 78), -- 红色 + [7] = Color3.fromRGB(255, 215, 0), -- 金色 + [8] = Color3.fromRGB(236, 77, 236), -- 粉色 +} + -- 获取本地Json文件 function Localization:GetLocalizationJson() if SystemLocaleId == "zh-CN" then @@ -99,4 +110,14 @@ function Localization:GetColoredEquipmentQualityDesc(Quality: number): string return self:GetColoredTextByQuality(Quality, language) end +-- 根据quality获取装备品质描述(带颜色) +function Localization:GetQualityBgColor(Quality: number): string + return QUALITY_BG_COLOR[Quality] +end + +-- 获取黑色贴图 +function Localization:GetBlackTexture(): string + return "rbxassetid://87376908468146" +end + return Localization \ No newline at end of file diff --git a/src/ServerStorage/Proxy/EquipmentProxy.luau b/src/ServerStorage/Proxy/EquipmentProxy.luau index a88698c..182e883 100644 --- a/src/ServerStorage/Proxy/EquipmentProxy.luau +++ b/src/ServerStorage/Proxy/EquipmentProxy.luau @@ -20,6 +20,7 @@ local JsonParam = require(ReplicatedStorage.Json.Param) --> Events local RE_PlayerTip = ReplicatedStorage.Events.RE_PlayerTip local RE_WearEquipment = ReplicatedStorage.Events.RE_WearEquipment +local RE_RecycleEquipment = ReplicatedStorage.Events.RE_RecycleEquipment --> Constants local STORE_NAME = "Equipment" @@ -232,7 +233,7 @@ function EquipmentProxy:AddEquipment(Player: Player, EquipmentId: number) return equipmentInstance end --- 回收装备 +-- 回收单件装备 function EquipmentProxy:RecycleEquipment(Player: Player, EquipmentId: number) local pData = Utils:GetPlayerDataFolder(Player) if not pData then return end @@ -242,19 +243,34 @@ function EquipmentProxy:RecycleEquipment(Player: Player, EquipmentId: number) -- 根据对应功能模块进行对应回收 local AbilityProxy = require(ServerStorage.Proxy.AbilityProxy) - AbilityProxy:RecycleAbility(Player, EquipmentData.id) + -- AbilityProxy:RecycleAbility(Player, EquipmentData.id) local GemProxy = require(ServerStorage.Proxy.GemProxy) - GemProxy:RecycleGem(Player, EquipmentData.id) + -- GemProxy:RecycleGem(Player, EquipmentData.id) -- 回收装备返回金币 -- TODO:处理关卡金币产出加成和词条加成 - PlayerInfoProxy:ChangeItem(Player, 1, EquipmentData.recycle) + local rewardData = {["1"] = EquipmentData.recycle} + PlayerInfoProxy:ChangeItemCount(Player, 1, EquipmentData.recycle) + + ArchiveProxy.pData[Player.UserId][STORE_NAME][EquipmentId] = nil - ArchiveProxy.pData[Player.UserId][EquipmentId] = nil local EquipmentInstance = GetPlayerEquipmentFolder(Player):FindFirstChild(EquipmentId) if EquipmentInstance then EquipmentInstance:Destroy() end + return rewardData +end + +-- 批量回收装备 +function EquipmentProxy:RecycleEquipmentList(Player: Player, EquipmentUniqueIds: table) + local rewardData = {} + for _, EquipmentUniqueId in EquipmentUniqueIds do + local newRewardData = EquipmentProxy:RecycleEquipment(Player, EquipmentUniqueId) + if newRewardData then + Utils:TableSafeAddTableValue(rewardData, newRewardData) + end + end + return rewardData end -- 穿戴装备 @@ -381,6 +397,9 @@ RE_WearEquipment.OnServerEvent:Connect(function(Player: Player, EquipmentUniqueI EquipmentProxy:WearEquipment(Player, EquipmentUniqueId, SlotId) end end) +RE_RecycleEquipment.OnServerEvent:Connect(function(Player: Player, EquipmentUniqueIds: table) + EquipmentProxy:RecycleEquipmentList(Player, EquipmentUniqueIds) +end) return EquipmentProxy \ No newline at end of file diff --git a/src/ServerStorage/Proxy/PlayerInfoProxy.luau b/src/ServerStorage/Proxy/PlayerInfoProxy.luau index cb1b0cd..f8a402e 100644 --- a/src/ServerStorage/Proxy/PlayerInfoProxy.luau +++ b/src/ServerStorage/Proxy/PlayerInfoProxy.luau @@ -325,7 +325,12 @@ function PlayerInfoProxy:GetPlayerUpgradeAttributes(Player: Player) for AttributeId, AttributeLv in playerInfoData.AttributesUpgrade do local attributeData = Utils:GetIdDataFromJson(JsonAttributesUpgrade, AttributeId) -- attributes[attributeData["effectAttribute"]] = attributeData["lvAdd"][1] + (AttributeLv - 1) * attributeData["lvAdd"][2] - attributes[attributeData["effectAttribute"]] = math.floor(attributeData["lvAdd"][1] ^ (AttributeLv - 1) * attributeData["lvAdd"][2] / 10000) + local effectAttribute = attributeData["effectAttribute"] + if effectAttribute == "attack" or effectAttribute == "hp" then + attributes[effectAttribute] = math.floor(attributeData["lvAdd"][1] * (AttributeLv ^ (attributeData["lvAdd"][2] / 10000)) - attributeData["lvAdd"][1]) + else + attributes[effectAttribute] = math.floor(attributeData["lvAdd"][1] ^ (AttributeLv - 1) * attributeData["lvAdd"][2] / 10000) + end end return attributes end diff --git a/src/StarterPlayerScripts/UI/Common/ItemShow.luau b/src/StarterPlayerScripts/UI/Common/ItemShow.luau new file mode 100644 index 0000000..c939e3b --- /dev/null +++ b/src/StarterPlayerScripts/UI/Common/ItemShow.luau @@ -0,0 +1,55 @@ +local ItemShow = {} +ItemShow.__index = ItemShow + +local ReplicatedStorage = game:GetService("ReplicatedStorage") + +local Utils = require(ReplicatedStorage.Tools.Utils) +local Localization = require(ReplicatedStorage.Tools.Localization) +local JsonEquipment = require(ReplicatedStorage.Json.Equipment) +local JsonItemProp = require(ReplicatedStorage.Json.ItemProp) + +function ItemShow:Init(data: table) + local self = {} + self.Data = data + self.Variables = { + ["_btnClick"] = 0, + ["_imgIcon"] = 0, + ["_imgQuality"] = 0, + ["_tmpName"] = 0, + ["_tmpCount"] = 0, + } + self.Connections = {} + + setmetatable(self, ItemShow) + return self +end + +function ItemShow:Refresh() + local itemData = Utils:GetIdDataFromJson(JsonItemProp, self.Data.orgId) + self.Variables._imgIcon.Image = Localization:GetImageData(itemData.iconId) + self.Variables._imgQuality.BackgroundColor3 = Localization:GetQualityBgColor(itemData.quality) + self.Variables._tmpName.Text = Localization:GetLanguageData(itemData.nameId) + + -- 数量 + self.Variables._tmpCount.Text = self.Data.count or "" +end + +function ItemShow:OnInitFinish() + -- TODO: 之后做点击详情弹窗 + -- local con = self.Variables._btnClick.MouseButton1Click:Connect(function() + -- if self.Data == {} then + -- else + -- self.TopUI:ShowDetailData(self.Data.id) + -- end + -- end) + -- table.insert(self.Connections, con) +end + +function ItemShow:Destroy() + for k, v in pairs(self) do + self[k] = nil + end + self = nil +end + +return ItemShow \ No newline at end of file diff --git a/src/StarterPlayerScripts/UI/Windows/ChaWindow/init.luau b/src/StarterPlayerScripts/UI/Windows/ChaWindow/init.luau index 3fbae97..60dc902 100644 --- a/src/StarterPlayerScripts/UI/Windows/ChaWindow/init.luau +++ b/src/StarterPlayerScripts/UI/Windows/ChaWindow/init.luau @@ -34,6 +34,7 @@ function ChaWindow:Init(UIManager: table, Data: table?) ["_imgIcon"] = 0, ["_btnClose"] = 0, ["_btnBgClose"] = 0, + ["_btnRecycle"] = 0, } self.UIRootName = "ui_w_cha" self.UIParentName = UIEnums.UIParent.UIRoot @@ -95,6 +96,20 @@ function ChaWindow:AddInstanceData(configInstance: Instance, Data: table?) return data[parentName][secondName], parentName end +function ChaWindow:RemoveInstanceData(configInstance: Instance, Data: table?) + for key, data in pairs(self.Data.Wearing) do + if data.instance == configInstance then + return tostring(key), "Wearing" + end + end + for key, data in pairs(self.Data.Package) do + if data.instance == configInstance then + return tostring(key), "Package" + end + end + return nil +end + function ChaWindow:OnOpenWindow() UIWindow.OnOpenWindow(self) @@ -135,13 +150,12 @@ function ChaWindow:OnOpenWindow() end) local removeCon = DataFolder.ChildRemoved:Connect(function(child) - local parentName = self:RemoveInstanceData(child, data) + -- TODO: 这里清除逻辑不清晰,之后优化 + local key, parentName = self:RemoveInstanceData(child, self.Data) if parentName == "Wearing" then - local removeIndex = self.Variables["__listWeaing"]:RemoveData(data) - self.Data.Wearing[removeIndex] = {} + local removeIndex = self.Variables["__listWeaing"]:RemoveData(key) else - local removeIndex = self.Variables["__listWeaponPackage"]:RemoveData(data) - self.Data.Package[removeIndex] = {} + local removeIndex = self.Variables["__listWeaponPackage"]:RemoveData(key) end end) @@ -151,11 +165,15 @@ function ChaWindow:OnOpenWindow() local closeCon = self.Variables["_btnClose"].Activated:Connect(function() self.UIManager:CloseWindow(script.Name) end) + local recycleCon = self.Variables["_btnRecycle"].Activated:Connect(function() + self.UIManager:OpenWindow("RecycleWindow") + end) table.insert(self.Connections, addCon) table.insert(self.Connections, removeCon) table.insert(self.Connections, bgCloseCon) table.insert(self.Connections, closeCon) + table.insert(self.Connections, recycleCon) self.Variables["__listWeaponPackage"]:AddComponent(PackageShow) self.Variables["__listWeaing"]:AddComponent(WearingShow) diff --git a/src/StarterPlayerScripts/UI/Windows/CreateWindow/WeaponItem.luau b/src/StarterPlayerScripts/UI/Windows/CreateWindow/WeaponItem.luau index 309c4cd..f5ea701 100644 --- a/src/StarterPlayerScripts/UI/Windows/CreateWindow/WeaponItem.luau +++ b/src/StarterPlayerScripts/UI/Windows/CreateWindow/WeaponItem.luau @@ -8,6 +8,9 @@ local Localization = require(ReplicatedStorage.Tools.Localization) local Signal = require(ReplicatedStorage.Tools.Signal) local JsonItemProp = require(ReplicatedStorage.Json.ItemProp) +local JsonEquipment = require(ReplicatedStorage.Json.Equipment) + +local FolderEquipment = ReplicatedStorage:WaitForChild("Prefabs"):WaitForChild("Equipments") function WeaponItem:Init(data: table) local self = {} @@ -18,6 +21,7 @@ function WeaponItem:Init(data: table) ["_tmpQuality"] = 0, ["_btnClick"] = 0, ["_imgSelected"] = 0, + ["_imgView"] = 0, } self.SignalConnections = {} self.Connections = {} @@ -34,7 +38,27 @@ function WeaponItem:Refresh() local itemData = Utils:GetIdDataFromJson(JsonItemProp, self.Data.OrgId) self.Variables._imgIcon.Image = Localization:GetImageData(itemData.iconId) self.Variables._tmpName.Text = Localization:GetLanguageData(itemData.nameId) - self.Variables._tmpQuality.Text = self.Data.Quality + self.Variables._tmpQuality.Text = Localization:GetColoredEquipmentQualityDesc(self.Data.Quality) + + local equipmentData = Utils:GetIdDataFromJson(JsonEquipment, self.Data.OrgId) + -- 模型 + local part = FolderEquipment:FindFirstChild(equipmentData.modelName):Clone() + part.Handle.Position = Vector3.new(0, 0, 0) + part.Handle.CFrame = CFrame.new(0, 0, 0) * CFrame.Angles(math.rad(90), 0, 0) + part.Parent = self.Variables["_imgView"] + self.Prefab = part + + -- 相机 + local viewportCamera = Instance.new("Camera") + self.Variables["_imgView"].CurrentCamera = viewportCamera + viewportCamera.Parent = self.Variables["_imgView"] + viewportCamera.CFrame = CFrame.new(Vector3.new(0, 0, 6), part.Handle.Position) + self.ViewCamera = viewportCamera + + -- 如果图鉴没有,就设置成黑色的 + if self.Data.Timestamp == 0 then + part.Handle.Mesh.TextureId = Localization:GetBlackTexture() + end end function WeaponItem:OnInitFinish() diff --git a/src/StarterPlayerScripts/UI/Windows/CreateWindow/init.luau b/src/StarterPlayerScripts/UI/Windows/CreateWindow/init.luau index c901c2e..b413f55 100644 --- a/src/StarterPlayerScripts/UI/Windows/CreateWindow/init.luau +++ b/src/StarterPlayerScripts/UI/Windows/CreateWindow/init.luau @@ -15,11 +15,42 @@ local Signal = require(ReplicatedStorage.Tools.Signal) --> Json local JsonItemProp = require(ReplicatedStorage.Json.ItemProp) +local JsonForge = require(ReplicatedStorage.Json.Forge) --> Events local RE_Forge = ReplicatedStorage.Events.RE_Forge local LocalPlayer = game.Players.LocalPlayer + + +-------------------------------------------------------------------------------- + +-- 简单的递增消耗计算函数 +local function GetIncrementalCost(currentLevel: number, configData: table, costIndex: number?) + costIndex = costIndex or 2 -- 默认使用第二个消耗值 + + -- 获取配置表的最大ID + local maxId = Utils:GetMaxIdFromJson(configData) + + -- 如果当前等级超过最大ID,使用最大ID的消耗配置 + local effectiveLevel = math.min(currentLevel, maxId) + + -- 根据有效等级获取对应的消耗配置 + local levelData = Utils:GetIdDataFromJson(configData, effectiveLevel) + if not levelData or not levelData.cost then + warn("无法获取等级", effectiveLevel, "的消耗配置") + return 0 + end + + -- 确保costIndex在有效范围内 + if costIndex > #levelData.cost then + warn("消耗索引超出范围:", costIndex, "最大索引:", #levelData.cost) + return 0 + end + + return levelData.cost[costIndex] +end + -------------------------------------------------------------------------------- local CreateWindow = {} @@ -47,6 +78,8 @@ function CreateWindow:Init(UIManager: table, Data: table?) ["__moneyCoin"] = 0, } self.MultNumber = 1 + self.MultArray = {1, 2, 5, 10} + self.MultIndex = 1 self.AutoRecycle = false self.UIRootName = "ui_w_create" self.UIParentName = UIEnums.UIParent.UIRoot @@ -69,8 +102,9 @@ function CreateWindow:ShowDetailInfo(data: table?) end function CreateWindow:OnClickMult() - self.MultNumber += 1 - if self.MultNumber > 10 then self.MultNumber = 1 end + self.MultIndex += 1 + if self.MultIndex > #self.MultArray then self.MultIndex = 1 end + self.MultNumber = self.MultArray[self.MultIndex] self.Variables["_btnMult"].Text = "x" .. self.MultNumber end @@ -86,6 +120,24 @@ function CreateWindow:OnClickCreate() end end +-- 锻造货币数量进度显示 +function CreateWindow:SetShowForgeCost(nowForgeTime : number, moneyValue: number) + local maxForgeId = Utils:GetMaxIdFromJson(JsonForge) + local forgeTime = math.min(nowForgeTime, maxForgeId) + + -- 获取当前锻造次数对应的消耗(用于UI显示) + local currentCost = GetIncrementalCost(forgeTime, JsonForge, 2) + + -- 进度条 - 使用当前锻造次数对应的消耗显示 + self.Variables["_btnCreate"].Text = string.format("%d/%d", moneyValue, currentCost) + if moneyValue >= currentCost then + self.Variables["_btnCreate"].BackgroundColor3 = Color3.fromRGB(235, 245, 95) + else + self.Variables["_btnCreate"].BackgroundColor3 = Color3.fromRGB(139, 139, 139) + end +end + + function CreateWindow:OnOpenWindow() UIWindow.OnOpenWindow(self) @@ -150,6 +202,33 @@ function CreateWindow:OnOpenWindow() else self:ShowDetailInfo() end + + + -- 货币进度条显示 + local rePlayerDataFolder = Utils:GetPlayerDataFolder(LocalPlayer) + local playerInfoFolder = rePlayerDataFolder:WaitForChild("PlayerInfo") + local forgeInstance = playerInfoFolder:WaitForChild("Stats"):WaitForChild("forge") + + local itemFolder = playerInfoFolder:WaitForChild("Items") + local hasItem = itemFolder:FindFirstChild("2") + + -- 设置锻造货币变动链接 + local function SetForgeCostChange() + local costChangeCon = hasItem.Changed:Connect(function(newValue) + self:SetShowForgeCost(forgeInstance.Value, newValue) + end) + table.insert(self.Connections, costChangeCon) + end + + if hasItem then + -- 后续变动设置 + SetForgeCostChange() + -- 初始化设置 + self:SetShowForgeCost(forgeInstance.Value, hasItem.Value) + else + -- 初始化设置 + self:SetShowForgeCost(forgeInstance.Value, 0) + end end function CreateWindow:OnCloseWindow() diff --git a/src/StarterPlayerScripts/UI/Windows/MainWindow/init.luau b/src/StarterPlayerScripts/UI/Windows/MainWindow/init.luau index 83039a6..8c94c62 100644 --- a/src/StarterPlayerScripts/UI/Windows/MainWindow/init.luau +++ b/src/StarterPlayerScripts/UI/Windows/MainWindow/init.luau @@ -238,7 +238,6 @@ function MainWindow:OnOpenWindow() -- 初始化设置 self:SetShowForgeBar(forgeInstance.Value, 0) end - end return MainWindow \ No newline at end of file diff --git a/src/StarterPlayerScripts/UI/Windows/RecycleWindow/RecyclePackageShow.luau b/src/StarterPlayerScripts/UI/Windows/RecycleWindow/RecyclePackageShow.luau new file mode 100644 index 0000000..5c627fc --- /dev/null +++ b/src/StarterPlayerScripts/UI/Windows/RecycleWindow/RecyclePackageShow.luau @@ -0,0 +1,88 @@ +local RecyclePackageShow = {} +RecyclePackageShow.__index = RecyclePackageShow + +local ReplicatedStorage = game:GetService("ReplicatedStorage") + +local Utils = require(ReplicatedStorage.Tools.Utils) +local Localization = require(ReplicatedStorage.Tools.Localization) +local JsonEquipment = require(ReplicatedStorage.Json.Equipment) +local JsonItemProp = require(ReplicatedStorage.Json.ItemProp) + +local FolderEquipment = ReplicatedStorage:WaitForChild("Prefabs"):WaitForChild("Equipments") + +function RecyclePackageShow:Init(data: table) + local self = {} + self.Data = data + self.Variables = { + ["_btnClick"] = 0, + ["_imgIcon"] = 0, + ["_tmpQuality"] = 0, + ["_tmpName"] = 0, + ["_imgView"] = 0, + ["_imgSelected"] = 0, + } + self.Connections = {} + + setmetatable(self, RecyclePackageShow) + + return self +end + +function RecyclePackageShow:Refresh() + local itemData = Utils:GetIdDataFromJson(JsonItemProp, self.Data.orgId) + self.Variables._imgIcon.Image = Localization:GetImageData(itemData.iconId) + self.Variables._imgIcon.Visible = false + self.Variables._tmpQuality.Text = Localization:GetColoredEquipmentQualityDesc(self.Data.quality) + self.Variables._tmpName.Text = Localization:GetLanguageData(itemData.nameId) + + local equipmentData = Utils:GetIdDataFromJson(JsonEquipment, self.Data.orgId) + -- 模型 + local part = FolderEquipment:FindFirstChild(equipmentData.modelName):Clone() + part.Handle.Position = Vector3.new(0, 0, 0) + part.Handle.CFrame = CFrame.new(0, 0, 0) * CFrame.Angles(math.rad(90), 0, 0) + part.Parent = self.Variables["_imgView"] + self.Prefab = part + + -- 相机 + local viewportCamera = Instance.new("Camera") + self.Variables["_imgView"].CurrentCamera = viewportCamera + viewportCamera.Parent = self.Variables["_imgView"] + viewportCamera.CFrame = CFrame.new(Vector3.new(0, 0, 6), part.Handle.Position) + self.ViewCamera = viewportCamera +end + +function RecyclePackageShow:OnInitFinish() + local con = self.Variables._btnClick.MouseButton1Click:Connect(function() + if self.Data == {} then + -- TODO: 之后做提示弹窗 + else + self.Variables._imgSelected.Visible = not self.Variables._imgSelected.Visible + self.TopUI:SetSelectedShow(self.Data.instance, self.Variables._imgSelected.Visible) + end + end) + table.insert(self.Connections, con) + + if self.Data.instance then + local wearingCon = self.Data.instance:GetAttributeChangedSignal("wearing"):Connect(function() + local oldWearing = self.Data.wearing + local newWearing = self.Data.instance:GetAttribute("wearing") + if oldWearing ~= newWearing then + if newWearing > 0 then + self.TopUI:WearRefresh(self.Data) + else + self.TopUI:UnwearRefresh(self.Data) + end + end + end) + table.insert(self.Connections, wearingCon) + end +end + +function RecyclePackageShow:Destroy() + for k, v in pairs(self) do + self[k] = nil + end + self = nil +end + +return RecyclePackageShow \ No newline at end of file diff --git a/src/StarterPlayerScripts/UI/Windows/RecycleWindow/init.luau b/src/StarterPlayerScripts/UI/Windows/RecycleWindow/init.luau new file mode 100644 index 0000000..32f5978 --- /dev/null +++ b/src/StarterPlayerScripts/UI/Windows/RecycleWindow/init.luau @@ -0,0 +1,121 @@ +--> Services +local ReplicatedStorage = game:GetService("ReplicatedStorage") + +--> Dependencies +local UIWindow = require(ReplicatedStorage.Base.UIWindow) +local UIEnums = require(ReplicatedStorage.Base.UIEnums) +local Tween = require(ReplicatedStorage.Modules.Tween) +local Utils = require(ReplicatedStorage.Tools.Utils) + +--> Components +local RecyclePackageShow = require(script.RecyclePackageShow) +local JsonEquipment = require(ReplicatedStorage.Json.Equipment) + +--> Events +local RE_RecycleEquipment = ReplicatedStorage.Events.RE_RecycleEquipment + +--> Local +local LocalPlayer = game:GetService("Players").LocalPlayer + +local CommonFolder = LocalPlayer:WaitForChild("PlayerScripts"):WaitForChild("UI"):WaitForChild("Common") +local ItemShow = require(CommonFolder:WaitForChild("ItemShow")) + +-------------------------------------------------------------------------------- + +local RecycleWindow = {} +RecycleWindow.__index = RecycleWindow +setmetatable(RecycleWindow, {__index = UIWindow}) + +function RecycleWindow:Init(UIManager: table, Data: table?) + local self = UIWindow:Init(UIManager, Data) + setmetatable(self, RecycleWindow) + self.Variables = { + ["_goRecyclePanel"] = 0, + ["__listWeaponPackage"] = 0, + ["__listRewardPackage"] = 0, + + ["_btnRecycle"] = 0, + ["_btnBgClose"] = 0, + ["_btnClose"] = 0, + } + self.UIRootName = "ui_w_recycle" + self.UIParentName = UIEnums.UIParent.UIRoot + + return self +end + +-- 设置选中显示 +function RecycleWindow:SetSelectedShow(instance: Instance, isSelected: boolean) + local equipmentData = Utils:GetIdDataFromJson(JsonEquipment, instance:GetAttribute("orgId")) + -- 图方便,临时做的,之后优化 + if isSelected then + self.Data.Reward[1].count = self.Data.Reward[1].count + equipmentData.recycle + self.Data.RecycleInstance[instance] = instance + else + self.Data.Reward[1].count = self.Data.Reward[1].count - equipmentData.recycle + self.Data.RecycleInstance[instance] = nil + end + self.Variables["__listRewardPackage"]:SetData(self.Data.Reward) +end + +-- 回收 +function RecycleWindow:Recycle() + local recycleData = {} + for _, instance in self.Data.RecycleInstance do + table.insert(recycleData, instance:GetAttribute("id")) + end + if #recycleData > 0 then + RE_RecycleEquipment:FireServer(recycleData) + self.UIManager:CloseWindow(script.Name) + else + return nil + end +end + +function RecycleWindow:AddInstanceData(configInstance: Instance, Data: table?) + local data = self.Data + if Data then data = Data end + local attributes = configInstance:GetAttributes() + + -- 归类是否是穿戴的装备 + local parentName, secondName = "Package", configInstance.Name + + -- 穿戴中直接打断 + if attributes.wearing ~= 0 then return nil end + data[parentName][secondName] = {} + + for attributeKey, attributeValue in attributes do + data[parentName][secondName][attributeKey] = attributeValue + end + data[parentName][secondName].instance = configInstance + return data[parentName][secondName], parentName +end + +function RecycleWindow:OnOpenWindow() + UIWindow.OnOpenWindow(self) + + -- 自己进行数据处理 + local DataFolder = Utils:WaitPlayerDataFolder(LocalPlayer):FindFirstChild("Equipment") + local data = { + Reward = {{orgId = 1, count = 0}}, + RecycleInstance = {}, + Package = {}, + } + for _, child in DataFolder:GetChildren() do + self:AddInstanceData(child, data) + end + self.Data = data + + self.Variables["__listWeaponPackage"]:AddComponent(RecyclePackageShow) + self.Variables["__listWeaponPackage"]:SetData(self.Data.Package) + -- self.Variables["__listWeaponPackage"]:SetLayoutOrder("package") + self.Variables["__listRewardPackage"]:AddComponent(ItemShow) + self.Variables["__listRewardPackage"]:SetData(self.Data.Reward) + + local con = self.Variables._btnRecycle.MouseButton1Click:Connect(function() + self:Recycle() + end) + table.insert(self.Connections, con) +end + +return RecycleWindow \ No newline at end of file