From 53d701989bdb8ea478570c10f0a6894400a0b978 Mon Sep 17 00:00:00 2001 From: gechangfu Date: Tue, 5 Aug 2025 20:50:42 +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 14534 -> 14849 bytes excel/global.xlsx | Bin 22512 -> 22537 bytes .../Json/AttributesUpgrade.json | 4 +- src/ReplicatedStorage/Json/Enemy.json | 2 +- src/ReplicatedStorage/Json/Equipment.json | 32 ++-- src/ReplicatedStorage/Json/Forge.json | 100 +++++------ src/ReplicatedStorage/Json/Level.json | 100 +++++------ src/ReplicatedStorage/Json/QualityEffect.json | 8 + src/ReplicatedStorage/Tools/Rng.luau | 162 ++++++++++++++++++ src/ServerStorage/Proxy/EquipmentProxy.luau | 30 ++-- src/ServerStorage/Proxy/LevelProxy.luau | 2 +- src/ServerStorage/Proxy/PlayerInfoProxy.luau | 9 +- 12 files changed, 316 insertions(+), 133 deletions(-) create mode 100644 src/ReplicatedStorage/Json/QualityEffect.json create mode 100644 src/ReplicatedStorage/Tools/Rng.luau diff --git a/excel/cha.xlsx b/excel/cha.xlsx index 987f7da6ac0fb6f7a3bba8c98c17e2d46bc2a52a..fecf1800143b7fa415ec99cbd9f3c1480be6e8ba 100644 GIT binary patch delta 4823 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 XVch~s>@HH0EP;7DQQAK1-?sk)SS>c1 diff --git a/src/ReplicatedStorage/Json/AttributesUpgrade.json b/src/ReplicatedStorage/Json/AttributesUpgrade.json index cacf3b6..5a73d9f 100644 --- a/src/ReplicatedStorage/Json/AttributesUpgrade.json +++ b/src/ReplicatedStorage/Json/AttributesUpgrade.json @@ -1,6 +1,6 @@ [ -{"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":1,"type":1,"effectAttribute":"attack","cost":[1,150,0],"lvAdd":[40,10985],"battleValueLimit":[5,20],"maxLv":null}, +{"id":2,"type":1,"effectAttribute":"hp","cost":[1,150,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}, diff --git a/src/ReplicatedStorage/Json/Enemy.json b/src/ReplicatedStorage/Json/Enemy.json index e7e6eeb..25623f7 100644 --- a/src/ReplicatedStorage/Json/Enemy.json +++ b/src/ReplicatedStorage/Json/Enemy.json @@ -1,5 +1,5 @@ [ {"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"} +{"id":1000,"type":2,"name":1000,"attack":30,"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 8bfd732..e1bfdaa 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":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} +{"id":40000,"type":1,"name":40000,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":100}, +{"id":40001,"type":1,"name":40001,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":100}, +{"id":40002,"type":1,"name":40002,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":100}, +{"id":40003,"type":1,"name":40003,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":100}, +{"id":40004,"type":1,"name":40004,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":100}, +{"id":40005,"type":1,"name":40005,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":100}, +{"id":40006,"type":1,"name":40006,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":100}, +{"id":40007,"type":1,"name":40007,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":100}, +{"id":40008,"type":1,"name":40008,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":100}, +{"id":40009,"type":1,"name":40009,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":100}, +{"id":40010,"type":1,"name":40010,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":100}, +{"id":40011,"type":1,"name":40011,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":100}, +{"id":40012,"type":1,"name":40012,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":100}, +{"id":40013,"type":1,"name":40013,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":100}, +{"id":40014,"type":1,"name":40014,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":100}, +{"id":40015,"type":1,"name":40015,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":100} ] \ No newline at end of file diff --git a/src/ReplicatedStorage/Json/Forge.json b/src/ReplicatedStorage/Json/Forge.json index 955ee03..4478cab 100644 --- a/src/ReplicatedStorage/Json/Forge.json +++ b/src/ReplicatedStorage/Json/Forge.json @@ -1,52 +1,52 @@ [ -{"id":1,"cost":[2,10]}, -{"id":2,"cost":[2,20]}, -{"id":3,"cost":[2,30]}, -{"id":4,"cost":[2,40]}, -{"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]} +{"id":1,"cost":[2,10],"qualityRate":[1,80,2,20]}, +{"id":2,"cost":[2,20],"qualityRate":[1,80,2,20]}, +{"id":3,"cost":[2,30],"qualityRate":[1,80,2,20]}, +{"id":4,"cost":[2,40],"qualityRate":[1,60,2,25,3,15]}, +{"id":5,"cost":[2,50],"qualityRate":[1,60,2,25,3,15]}, +{"id":6,"cost":[2,60],"qualityRate":[1,60,2,25,3,15]}, +{"id":7,"cost":[2,70],"qualityRate":[1,40,2,30,3,20,4,10]}, +{"id":8,"cost":[2,80],"qualityRate":[1,40,2,30,3,20,4,10]}, +{"id":9,"cost":[2,90],"qualityRate":[1,40,2,30,3,20,4,10]}, +{"id":10,"cost":[2,100],"qualityRate":[1,30,2,30,3,20,4,15,5,5]}, +{"id":11,"cost":[2,110],"qualityRate":[1,30,2,30,3,20,4,15,5,5]}, +{"id":12,"cost":[2,120],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":13,"cost":[2,130],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":14,"cost":[2,140],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":15,"cost":[2,150],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":16,"cost":[2,160],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":17,"cost":[2,170],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":18,"cost":[2,180],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":19,"cost":[2,190],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":20,"cost":[2,200],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":21,"cost":[2,210],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":22,"cost":[2,220],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":23,"cost":[2,230],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":24,"cost":[2,240],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":25,"cost":[2,250],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":26,"cost":[2,260],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":27,"cost":[2,270],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":28,"cost":[2,280],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":29,"cost":[2,290],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":30,"cost":[2,300],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":31,"cost":[2,310],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":32,"cost":[2,320],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":33,"cost":[2,330],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":34,"cost":[2,340],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":35,"cost":[2,350],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":36,"cost":[2,360],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":37,"cost":[2,370],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":38,"cost":[2,380],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":39,"cost":[2,390],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":40,"cost":[2,400],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":41,"cost":[2,410],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":42,"cost":[2,420],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":43,"cost":[2,430],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":44,"cost":[2,440],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":45,"cost":[2,450],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":46,"cost":[2,460],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":47,"cost":[2,470],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":48,"cost":[2,480],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":49,"cost":[2,490],"qualityRate":[1,15,2,30,3,20,4,15,5,10]}, +{"id":50,"cost":[2,500],"qualityRate":[1,15,2,30,3,20,4,15,5,10]} ] \ No newline at end of file diff --git a/src/ReplicatedStorage/Json/Level.json b/src/ReplicatedStorage/Json/Level.json index d2d95a9..0a4b602 100644 --- a/src/ReplicatedStorage/Json/Level.json +++ b/src/ReplicatedStorage/Json/Level.json @@ -1,52 +1,52 @@ [ -{"id":1,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[30,1,1],[10,1,1],[10,1,1],[10,1,1]],"finishRewards":[50001,1]}, -{"id":2,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[30,1,1],[10,1,1],[10,1,1],[10,1,1]],"finishRewards":[50002,1]}, -{"id":3,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[30,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":4,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[30,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[50004,1]}, -{"id":5,"type":2,"timeLimit":60,"atkBonus":1000,"hpBonus":1000,"wave":[[30,1000,1]],"finishRewards":[50005,1]}, -{"id":6,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[30,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":7,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[30,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":8,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[30,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":9,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[30,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[50009,1]}, -{"id":10,"type":2,"timeLimit":60,"atkBonus":1000,"hpBonus":1000,"wave":[[30,1000,1]],"finishRewards":[50010,1]}, -{"id":11,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[30,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":12,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[30,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":13,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[30,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":14,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[30,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[50014,1]}, -{"id":15,"type":2,"timeLimit":60,"atkBonus":1000,"hpBonus":1000,"wave":[[30,1000,1]],"finishRewards":[50015,1]}, -{"id":16,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[30,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":17,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[30,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":[[30,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":[[30,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":[[30,1000,1]],"finishRewards":[]}, -{"id":21,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[30,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":[[30,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":[[30,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":[[30,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":[[30,1000,1]],"finishRewards":[]}, -{"id":26,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[30,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":[[30,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":[[30,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":[[30,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":[[30,1000,1]],"finishRewards":[]}, -{"id":31,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[30,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":[[30,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":[[30,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":[[30,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":[[30,1000,1]],"finishRewards":[]}, -{"id":36,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[30,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":[[30,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":[[30,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":[[30,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":[[30,1000,1]],"finishRewards":[]}, -{"id":41,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[30,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":[[30,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":[[30,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":[[30,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":[[30,1000,1]],"finishRewards":[]}, -{"id":46,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[30,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":[[30,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":[[30,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":[[30,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":[[30,1000,1]],"finishRewards":[]} +{"id":1,"type":1,"timeLimit":null,"atkBonus":100,"hpBonus":100,"wave":[[30,1,1],[10,1,1],[10,1,1],[10,1,1]],"finishRewards":[50001,1]}, +{"id":2,"type":1,"timeLimit":null,"atkBonus":105,"hpBonus":105,"wave":[[30,1,1],[10,1,1],[10,1,1],[10,1,1]],"finishRewards":[50002,1]}, +{"id":3,"type":1,"timeLimit":null,"atkBonus":110,"hpBonus":110,"wave":[[30,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":4,"type":1,"timeLimit":null,"atkBonus":115,"hpBonus":115,"wave":[[30,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[50004,1]}, +{"id":5,"type":2,"timeLimit":60,"atkBonus":121,"hpBonus":121,"wave":[[30,1000,1]],"finishRewards":[50005,1]}, +{"id":6,"type":1,"timeLimit":null,"atkBonus":127,"hpBonus":127,"wave":[[30,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":7,"type":1,"timeLimit":null,"atkBonus":134,"hpBonus":134,"wave":[[30,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":8,"type":1,"timeLimit":null,"atkBonus":140,"hpBonus":140,"wave":[[30,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":9,"type":1,"timeLimit":null,"atkBonus":147,"hpBonus":147,"wave":[[30,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[50009,1]}, +{"id":10,"type":2,"timeLimit":60,"atkBonus":155,"hpBonus":155,"wave":[[30,1000,1]],"finishRewards":[50010,1]}, +{"id":11,"type":1,"timeLimit":null,"atkBonus":162,"hpBonus":162,"wave":[[30,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":12,"type":1,"timeLimit":null,"atkBonus":171,"hpBonus":171,"wave":[[30,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":13,"type":1,"timeLimit":null,"atkBonus":179,"hpBonus":179,"wave":[[30,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":14,"type":1,"timeLimit":null,"atkBonus":188,"hpBonus":188,"wave":[[30,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[50014,1]}, +{"id":15,"type":2,"timeLimit":60,"atkBonus":197,"hpBonus":197,"wave":[[30,1000,1]],"finishRewards":[50015,1]}, +{"id":16,"type":1,"timeLimit":null,"atkBonus":207,"hpBonus":207,"wave":[[30,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":17,"type":1,"timeLimit":null,"atkBonus":218,"hpBonus":218,"wave":[[30,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":229,"hpBonus":229,"wave":[[30,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":240,"hpBonus":240,"wave":[[30,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":252,"hpBonus":252,"wave":[[30,1000,1]],"finishRewards":[]}, +{"id":21,"type":1,"timeLimit":null,"atkBonus":265,"hpBonus":265,"wave":[[30,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":278,"hpBonus":278,"wave":[[30,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":292,"hpBonus":292,"wave":[[30,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":307,"hpBonus":307,"wave":[[30,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":322,"hpBonus":322,"wave":[[30,1000,1]],"finishRewards":[]}, +{"id":26,"type":1,"timeLimit":null,"atkBonus":338,"hpBonus":338,"wave":[[30,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":355,"hpBonus":355,"wave":[[30,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":373,"hpBonus":373,"wave":[[30,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":392,"hpBonus":392,"wave":[[30,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":411,"hpBonus":411,"wave":[[30,1000,1]],"finishRewards":[]}, +{"id":31,"type":1,"timeLimit":null,"atkBonus":432,"hpBonus":432,"wave":[[30,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":453,"hpBonus":453,"wave":[[30,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":476,"hpBonus":476,"wave":[[30,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":500,"hpBonus":500,"wave":[[30,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":525,"hpBonus":525,"wave":[[30,1000,1]],"finishRewards":[]}, +{"id":36,"type":1,"timeLimit":null,"atkBonus":551,"hpBonus":551,"wave":[[30,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":579,"hpBonus":579,"wave":[[30,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":608,"hpBonus":608,"wave":[[30,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":638,"hpBonus":638,"wave":[[30,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":670,"hpBonus":670,"wave":[[30,1000,1]],"finishRewards":[]}, +{"id":41,"type":1,"timeLimit":null,"atkBonus":703,"hpBonus":703,"wave":[[30,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":739,"hpBonus":739,"wave":[[30,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":776,"hpBonus":776,"wave":[[30,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":814,"hpBonus":814,"wave":[[30,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":855,"hpBonus":855,"wave":[[30,1000,1]],"finishRewards":[]}, +{"id":46,"type":1,"timeLimit":null,"atkBonus":898,"hpBonus":898,"wave":[[30,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":943,"hpBonus":943,"wave":[[30,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":990,"hpBonus":990,"wave":[[30,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":1040,"hpBonus":1040,"wave":[[30,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":1092,"hpBonus":1092,"wave":[[30,1000,1]],"finishRewards":[]} ] \ No newline at end of file diff --git a/src/ReplicatedStorage/Json/QualityEffect.json b/src/ReplicatedStorage/Json/QualityEffect.json new file mode 100644 index 0000000..0f0293c --- /dev/null +++ b/src/ReplicatedStorage/Json/QualityEffect.json @@ -0,0 +1,8 @@ +[ +{"id":1,"minValue":5,"maxValue":10}, +{"id":2,"minValue":15,"maxValue":25}, +{"id":3,"minValue":25,"maxValue":45}, +{"id":4,"minValue":45,"maxValue":100}, +{"id":5,"minValue":100,"maxValue":200}, +{"id":6,"minValue":200,"maxValue":400} +] \ No newline at end of file diff --git a/src/ReplicatedStorage/Tools/Rng.luau b/src/ReplicatedStorage/Tools/Rng.luau new file mode 100644 index 0000000..a2f0ccb --- /dev/null +++ b/src/ReplicatedStorage/Tools/Rng.luau @@ -0,0 +1,162 @@ +local Random = {} + +-- 设置随机种子,防止重复问题 +function Random:SetSeed(seed: number?) + if seed then + math.randomseed(seed) + else + -- 使用当前时间作为种子 + math.randomseed(os.time()) + end +end + +-- 从 [result,weight,result,weight...] 格式的数组中根据权重随机选择 +function Random:GetRandomWeightedIndex(resultWeightArray: table) + if not resultWeightArray or #resultWeightArray == 0 then + warn("GetRandomWeightedIndex: 输入数组为空") + return nil + end + + -- 检查数组长度是否为偶数(result和weight成对出现) + if #resultWeightArray % 2 ~= 0 then + warn("GetRandomWeightedIndex: 数组长度必须为偶数") + return nil + end + + -- 计算总权重 + local totalWeight = 0 + for i = 2, #resultWeightArray, 2 do + local weight = resultWeightArray[i] + if type(weight) ~= "number" or weight < 0 then + warn("GetRandomWeightedIndex: 权重值无效:", weight) + return nil + end + totalWeight = totalWeight + weight + end + + if totalWeight <= 0 then + warn("GetRandomWeightedIndex: 总权重必须大于0") + return nil + end + + -- 生成随机值 + local randomValue = math.random() * totalWeight + + -- 根据权重选择结果 + local currentWeight = 0 + for i = 1, #resultWeightArray, 2 do + local result = resultWeightArray[i] + local weight = resultWeightArray[i + 1] + + currentWeight = currentWeight + weight + if randomValue <= currentWeight then + return result + end + end + + -- 兜底返回最后一个结果 + return resultWeightArray[#resultWeightArray - 1] +end + +-- 从权重表中随机选择索引(原有函数改进版) +function Random:GetRandomWeight(weightTable: table) + if not weightTable or #weightTable == 0 then + warn("GetRandomWeight: 权重表为空") + return nil + end + + -- 计算总权重 + local totalWeight = 0 + for _, weight in pairs(weightTable) do + if type(weight) ~= "number" or weight < 0 then + warn("GetRandomWeight: 权重值无效:", weight) + return nil + end + totalWeight = totalWeight + weight + end + + if totalWeight <= 0 then + warn("GetRandomWeight: 总权重必须大于0") + return nil + end + + -- 生成随机值 + local randomValue = math.random() * totalWeight + + -- 根据权重选择索引 + local currentWeight = 0 + for index, weight in pairs(weightTable) do + currentWeight = currentWeight + weight + if randomValue <= currentWeight then + return index + end + end + + -- 兜底返回最后一个索引 + return #weightTable +end + +-- 获取多个随机结果(不重复) +function Random:GetMultipleRandomIndex(resultWeightArray: table, count: number) + if not count or count <= 0 then + warn("GetMultipleRandomIndex: 数量必须大于0") + return {} + end + + local results = {} + local tempArray = {} + + -- 复制原数组 + for i, value in ipairs(resultWeightArray) do + tempArray[i] = value + end + + -- 获取指定数量的随机结果 + for i = 1, count do + if #tempArray == 0 then break end + + local result = self:GetRandomWeightedResult(tempArray) + if result then + table.insert(results, result) + + -- 从临时数组中移除已选择的结果和权重 + for j = 1, #tempArray, 2 do + if tempArray[j] == result then + table.remove(tempArray, j + 1) -- 移除权重 + table.remove(tempArray, j) -- 移除结果 + break + end + end + end + end + + return results +end + +-- 获取指定范围内的随机整数 +function Random:GetRandomInt(min: number, max: number) + if not min or not max then + warn("GetRandomInt: 参数不能为空") + return nil + end + + if type(min) ~= "number" or type(max) ~= "number" then + warn("GetRandomInt: 参数必须是数字") + return nil + end + + -- 确保 min <= max + if min > max then + min, max = max, min + end + + -- 生成随机整数 + return math.random(min, max) +end + + + +-- 初始化随机种子 +Random:SetSeed() + +return Random \ No newline at end of file diff --git a/src/ServerStorage/Proxy/EquipmentProxy.luau b/src/ServerStorage/Proxy/EquipmentProxy.luau index 182e883..9e219e7 100644 --- a/src/ServerStorage/Proxy/EquipmentProxy.luau +++ b/src/ServerStorage/Proxy/EquipmentProxy.luau @@ -7,6 +7,7 @@ local ServerStorage = game:GetService("ServerStorage") --> Variables local Utils = require(ReplicatedStorage.Tools.Utils) +local Rng = require(ReplicatedStorage.Tools.Rng) local ArchiveProxy = require(ServerStorage.Proxy.ArchiveProxy) local PlayerInfoProxy = require(ServerStorage.Proxy.PlayerInfoProxy) local PlayerFightProxy = require(ServerStorage.Proxy.PlayerFightProxy) @@ -16,6 +17,8 @@ local JsonEquipment = require(ReplicatedStorage.Json.Equipment) local JsonAttributes = require(ReplicatedStorage.Json.Attributes) local JsonExAttributes = require(ReplicatedStorage.Json.ExAttributes) local JsonParam = require(ReplicatedStorage.Json.Param) +local JsonForge = require(ReplicatedStorage.Json.Forge) +local JsonQualityEffect = require(ReplicatedStorage.Json.QualityEffect) --> Events local RE_PlayerTip = ReplicatedStorage.Events.RE_PlayerTip @@ -99,17 +102,20 @@ function EquipmentProxy:AddEquipment(Player: Player, EquipmentId: number) local PlayerLevel = PlayerInfoProxy:GetPlayerLevel(Player) -- TODO: 之后这里可能根据等级限制权重 - -- 随机生成品质 - local qualityWeightTable = { - [1] = 90, - [2] = 70, - [3] = 50, - [4] = 30, - [5] = 10, - [6] = 5, - } - local quality = Utils:GetRandomWeightIndex(qualityWeightTable) - local qualityParam = Utils:GetIdDataFromJson(JsonParam, 1).intArray + + -- 获取锻造等级 + local forgeTime = PlayerInfoProxy:GetForgeTime(Player) + local maxForgeTime = Utils:GetMaxIdFromJson(JsonForge) + -- 当前锻造次数限制 + if forgeTime <= 0 then forgeTime = 1 end + if forgeTime > maxForgeTime then forgeTime = maxForgeTime end + -- 根据锻造等级获取品质权重 + local qualityWeightTable = Utils:GetIdDataFromJson(JsonForge, forgeTime).qualityRate + + local quality = Rng:GetRandomWeightedIndex(qualityWeightTable) + local qualityEffectData = Utils:GetIdDataFromJson(JsonQualityEffect, quality) + -- 旧的固定值已经废弃 + -- local qualityParam = Utils:GetIdDataFromJson(JsonParam, 1).intArray ResultData.quality = quality -- 生成装备基础词条(固定的) @@ -122,7 +128,7 @@ function EquipmentProxy:AddEquipment(Player: Player, EquipmentId: number) if AttributeData.effectAttribute == "atkSpeed" then qualityEffectValue = baseLvValue else - qualityEffectValue = math.floor(baseLvValue * (qualityParam[quality] / 100)) + qualityEffectValue = math.floor(baseLvValue * (Rng:GetRandomInt(qualityEffectData.minValue, qualityEffectData.maxValue) / 100)) end ResultData.attributes[AttributeData.effectAttribute] = qualityEffectValue end diff --git a/src/ServerStorage/Proxy/LevelProxy.luau b/src/ServerStorage/Proxy/LevelProxy.luau index d753fa3..d01e6fc 100644 --- a/src/ServerStorage/Proxy/LevelProxy.luau +++ b/src/ServerStorage/Proxy/LevelProxy.luau @@ -178,7 +178,7 @@ function LevelProxy:InitPlayer(Player: Player) LevelProxy.pData[Player.UserId].ShouldWave = 0 LevelProxy.pData[Player.UserId].SpawnWaveFinish = false LevelProxy.pData[Player.UserId].Mobs = {} - LevelProxy.pData[Player.UserId].LevelPosition = Vector3.new(0, 0, 30) + LevelProxy.pData[Player.UserId].LevelPosition = Vector3.new(0, 3, 30) -- 关卡挑战信息前端 for key, value in LevelProxy.pData[Player.UserId] do diff --git a/src/ServerStorage/Proxy/PlayerInfoProxy.luau b/src/ServerStorage/Proxy/PlayerInfoProxy.luau index 7293695..f149c79 100644 --- a/src/ServerStorage/Proxy/PlayerInfoProxy.luau +++ b/src/ServerStorage/Proxy/PlayerInfoProxy.luau @@ -117,7 +117,7 @@ function PlayerInfoProxy:InitPlayer(Player: Player) for AttributeId, AttributeLv in ArchiveProxy.pData[Player.UserId][STORE_NAME].AttributesUpgrade do CreateInfoInstance(Player, AttributesUpgradeFolder, AttributeId, "NumberValue", AttributeLv) end - CreateInfoInstance(Player, PlayerInfoFolder, "Forge", ENUM_STATE_TYPE.Number, ArchiveProxy.pData[Player.UserId][STORE_NAME].Forge) + -- CreateInfoInstance(Player, PlayerInfoFolder, "Forge", ENUM_STATE_TYPE.Number, ArchiveProxy.pData[Player.UserId][STORE_NAME].Forge) -- 新玩家默认添加货币 if isNew then @@ -268,6 +268,13 @@ function PlayerInfoProxy:GetItemCount(Player: Player, ItemId: number) return playerInfoData[ItemId] end +-- 获取锻造等级 +function PlayerInfoProxy:GetForgeTime(Player: Player) + if not Player then warn('获取锻造等级失败: ', Player.Name) return end + local playerInfoData = ArchiveProxy.pData[Player.UserId][STORE_NAME] + return playerInfoData.Stats.forge +end + -- 打造装备 function PlayerInfoProxy:MakeForge(Player: Player, EquipmentId: number, Count: number) if not Player or not EquipmentId then warn('打造装备失败: ', Player.Name,EquipmentId) return end