From a0889bdba685af863a07ed94b457681400fd17ef Mon Sep 17 00:00:00 2001 From: gechangfu Date: Fri, 1 Aug 2025 19:23:12 +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 12535 -> 13193 bytes excel/cha.xlsx | Bin 13755 -> 14049 bytes excel/enemy.xlsx | Bin 9057 -> 9163 bytes excel/equipment.xlsx | Bin 9767 -> 9757 bytes excel/global.xlsx | Bin 22172 -> 22285 bytes excel/item.xlsx | Bin 22691 -> 22680 bytes excel/language.xlsx | Bin 32186 -> 24389 bytes excel/level.xlsx | Bin 10150 -> 10457 bytes src/ReplicatedStorage/Json/Attributes.json | 62 +-- src/ReplicatedStorage/Json/Character.json | 2 +- src/ReplicatedStorage/Json/Enemy.json | 4 +- src/ReplicatedStorage/Json/Equipment.json | 32 +- src/ReplicatedStorage/Json/Forge.json | 42 +- .../Json/Language_En_US.json | 41 +- .../Json/Language_Zh_CN.json | 386 +++--------------- src/ReplicatedStorage/Json/Level.json | 100 ++--- src/ReplicatedStorage/Json/Param.json | 3 +- .../Modules/IncrementalCostManager.luau | 76 ++++ src/ReplicatedStorage/Tools/Handles.luau | 1 - src/ReplicatedStorage/Tools/Localization.luau | 54 +++ src/ServerStorage/Base/Behaviour.luau | 8 + src/ServerStorage/Proxy/EquipmentProxy.luau | 8 +- src/ServerStorage/Proxy/HelpProxy.luau | 15 +- src/ServerStorage/Proxy/ItemProxy.luau | 11 +- src/ServerStorage/Proxy/LevelProxy.luau | 16 +- .../Proxy/PlayerFightProxy/PlayerAI.luau | 11 + .../Proxy/PlayerFightProxy/init.luau | 7 +- src/ServerStorage/Proxy/PlayerInfoProxy.luau | 15 +- .../ClientMain/Helper.luau | 3 +- .../EquipmentDetailWindow/AttributeShow.luau | 9 +- .../Windows/EquipmentDetailWindow/init.luau | 2 +- .../GetEquipmentsWindow/AttributeShow.luau | 6 +- .../UI/Windows/GetEquipmentsWindow/init.luau | 8 +- .../UI/Windows/MainWindow/init.luau | 89 +++- 34 files changed, 513 insertions(+), 498 deletions(-) create mode 100644 src/ReplicatedStorage/Modules/IncrementalCostManager.luau diff --git a/excel/attribute.xlsx b/excel/attribute.xlsx index abf472103e66f44d7b6bda439269ab186fb0dfbe..d7a3d125a7f8c2c67702ae93aeb57b344674d4dd 100644 GIT binary patch delta 5790 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 ZBxV)_Im!pRPXr(WVBh_^Gv6Q3{{g<#!BqeN delta 5125 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 diff --git a/excel/cha.xlsx b/excel/cha.xlsx index 64e1aba5dfad0f7941ef89c5de08b1f5f70112f3..4e1de380eb95ce1498f258ef6bb152c969f5b08b 100644 GIT binary patch delta 4238 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 delta 3948 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 S3Fst=tCPJ!@j&L^#s2|Xw^nZe diff --git a/excel/enemy.xlsx b/excel/enemy.xlsx index b5f6840a6a68e8e5dbda9e25ae671f3da4296477..a668a166d495922a851cd7d207b3816fe15eabed 100644 GIT binary patch delta 2235 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 diff --git a/excel/global.xlsx b/excel/global.xlsx index df27037ea216c7e23f749f9643a96d0441c79455..6f258e02fbc8ec0b1e21fafec12f0445273cfe41 100644 GIT binary patch delta 15039 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≠-ewxAbdQUkOMJmY-kaeh%YGO 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 delta 14928 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 EU#q;NegFUf delta 6205 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 Dtg@RY diff --git a/excel/language.xlsx b/excel/language.xlsx index 4b9fef67ecd532c53d58b68774bdb1eca601d2ec..3199228ca211402c8d88b1a2718188df1e5f0a17 100644 GIT binary patch delta 9522 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 TmOag4Ac3irm0;t6|8o8xM?B!* diff --git a/src/ReplicatedStorage/Json/Attributes.json b/src/ReplicatedStorage/Json/Attributes.json index 68a54b0..d9d3e22 100644 --- a/src/ReplicatedStorage/Json/Attributes.json +++ b/src/ReplicatedStorage/Json/Attributes.json @@ -1,33 +1,33 @@ [ -{"id":1,"type":1,"effectAttribute":"attack","battleValue":[1,10],"iconId":1}, -{"id":2,"type":1,"effectAttribute":"hp","battleValue":[1,10],"iconId":2}, -{"id":3,"type":1,"effectAttribute":"swordAtk","battleValue":[1,10],"iconId":3}, -{"id":4,"type":2,"effectAttribute":"swordWearBase","battleValue":[1,10],"iconId":4}, -{"id":5,"type":2,"effectAttribute":"swordWearSpe","battleValue":[1,10],"iconId":5}, -{"id":6,"type":2,"effectAttribute":"fireAtk","battleValue":[1,10],"iconId":6}, -{"id":7,"type":2,"effectAttribute":"iceAtk","battleValue":[1,10],"iconId":7}, -{"id":8,"type":2,"effectAttribute":"lightAtk","battleValue":[1,10],"iconId":8}, -{"id":9,"type":2,"effectAttribute":"shadowAtk","battleValue":[1,10],"iconId":9}, -{"id":10,"type":1,"effectAttribute":"fireDef","battleValue":[1,10],"iconId":10}, -{"id":11,"type":1,"effectAttribute":"iceDef","battleValue":[1,10],"iconId":11}, -{"id":12,"type":1,"effectAttribute":"lightDef","battleValue":[1,10],"iconId":12}, -{"id":13,"type":1,"effectAttribute":"shadowDef","battleValue":[1,10],"iconId":13}, -{"id":14,"type":2,"effectAttribute":"attackRate","battleValue":[1,10],"iconId":14}, -{"id":15,"type":2,"effectAttribute":"hpRate","battleValue":[1,10],"iconId":15}, -{"id":16,"type":1,"effectAttribute":"atkSpeed","battleValue":[1,10],"iconId":16}, -{"id":20,"type":2,"effectAttribute":"critRate","battleValue":[1,10],"iconId":17}, -{"id":21,"type":2,"effectAttribute":"critDamageRate","battleValue":[1,10],"iconId":18}, -{"id":22,"type":2,"effectAttribute":"atkSpeedRate","battleValue":[1,10],"iconId":19}, -{"id":23,"type":2,"effectAttribute":"cdRate","battleValue":[1,10],"iconId":20}, -{"id":24,"type":1,"effectAttribute":"mpBonus","battleValue":[1,10],"iconId":21}, -{"id":25,"type":2,"effectAttribute":"mpReduceRate","battleValue":[1,10],"iconId":22}, -{"id":26,"type":1,"effectAttribute":"mpRecoverBonus","battleValue":[1,10],"iconId":23}, -{"id":27,"type":2,"effectAttribute":"vampireRate","battleValue":[1,10],"iconId":24}, -{"id":28,"type":2,"effectAttribute":"coinBonus","battleValue":[1,10],"iconId":25}, -{"id":50,"type":1,"effectAttribute":"wearNumber","battleValue":[1,10],"iconId":26}, -{"id":51,"type":1,"effectAttribute":"skillNumber","battleValue":[1,10],"iconId":27}, -{"id":52,"type":1,"effectAttribute":"extraAttributeNumber","battleValue":[1,10],"iconId":28}, -{"id":53,"type":1,"effectAttribute":"elementNumber","battleValue":[1,10],"iconId":29}, -{"id":54,"type":1,"effectAttribute":"elementDefNumber","battleValue":[1,10],"iconId":30}, -{"id":55,"type":1,"effectAttribute":"gemNumber","battleValue":[1,10],"iconId":31} +{"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":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}, +{"id":6,"type":2,"effectAttribute":"fireAtk","battleValue":[1,10],"iconId":6,"nameId":206}, +{"id":7,"type":2,"effectAttribute":"iceAtk","battleValue":[1,10],"iconId":7,"nameId":207}, +{"id":8,"type":2,"effectAttribute":"lightAtk","battleValue":[1,10],"iconId":8,"nameId":208}, +{"id":9,"type":2,"effectAttribute":"shadowAtk","battleValue":[1,10],"iconId":9,"nameId":209}, +{"id":10,"type":1,"effectAttribute":"fireDef","battleValue":[1,10],"iconId":10,"nameId":210}, +{"id":11,"type":1,"effectAttribute":"iceDef","battleValue":[1,10],"iconId":11,"nameId":211}, +{"id":12,"type":1,"effectAttribute":"lightDef","battleValue":[1,10],"iconId":12,"nameId":212}, +{"id":13,"type":1,"effectAttribute":"shadowDef","battleValue":[1,10],"iconId":13,"nameId":213}, +{"id":14,"type":2,"effectAttribute":"attackRate","battleValue":[1,10],"iconId":14,"nameId":214}, +{"id":15,"type":2,"effectAttribute":"hpRate","battleValue":[1,10],"iconId":15,"nameId":215}, +{"id":16,"type":2,"effectAttribute":"atkSpeed","battleValue":[1,10],"iconId":16,"nameId":216}, +{"id":20,"type":2,"effectAttribute":"critRate","battleValue":[1,10],"iconId":17,"nameId":220}, +{"id":21,"type":2,"effectAttribute":"critDamageRate","battleValue":[1,10],"iconId":18,"nameId":221}, +{"id":22,"type":2,"effectAttribute":"atkSpeedRate","battleValue":[1,10],"iconId":19,"nameId":222}, +{"id":23,"type":2,"effectAttribute":"cdRate","battleValue":[1,10],"iconId":20,"nameId":223}, +{"id":24,"type":1,"effectAttribute":"mpBonus","battleValue":[1,10],"iconId":21,"nameId":224}, +{"id":25,"type":2,"effectAttribute":"mpReduceRate","battleValue":[1,10],"iconId":22,"nameId":225}, +{"id":26,"type":1,"effectAttribute":"mpRecoverBonus","battleValue":[1,10],"iconId":23,"nameId":226}, +{"id":27,"type":2,"effectAttribute":"vampireRate","battleValue":[1,10],"iconId":24,"nameId":227}, +{"id":28,"type":2,"effectAttribute":"coinBonus","battleValue":[1,10],"iconId":25,"nameId":228}, +{"id":50,"type":1,"effectAttribute":"wearNumber","battleValue":[1,10],"iconId":26,"nameId":250}, +{"id":51,"type":1,"effectAttribute":"skillNumber","battleValue":[1,10],"iconId":27,"nameId":251}, +{"id":52,"type":1,"effectAttribute":"extraAttributeNumber","battleValue":[1,10],"iconId":28,"nameId":252}, +{"id":53,"type":1,"effectAttribute":"elementNumber","battleValue":[1,10],"iconId":29,"nameId":253}, +{"id":54,"type":1,"effectAttribute":"elementDefNumber","battleValue":[1,10],"iconId":30,"nameId":254}, +{"id":55,"type":1,"effectAttribute":"gemNumber","battleValue":[1,10],"iconId":31,"nameId":255} ] \ No newline at end of file diff --git a/src/ReplicatedStorage/Json/Character.json b/src/ReplicatedStorage/Json/Character.json index dfbc59d..a2b0cd4 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":1} +{"id":1,"name":1,"attack":100,"hp":2000,"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 32312dd..892a285 100644 --- a/src/ReplicatedStorage/Json/Enemy.json +++ b/src/ReplicatedStorage/Json/Enemy.json @@ -1,5 +1,5 @@ [ -{"id":1,"type":1,"name":1,"attack":83,"hp":400,"walkSpeed":8,"attackSpeed":1,"model":"Thief"}, -{"id":2,"type":1,"name":2,"attack":30,"hp":300,"walkSpeed":8,"attackSpeed":1,"model":"Thief"}, +{"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":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 42cb5ba..9e284fa 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,100,0],"modelName":"Zeus","recycle":10}, -{"id":40001,"type":1,"name":40001,"attributes":[14,200,10,15,200,10,16,100,0],"modelName":"Zeus","recycle":10}, -{"id":40002,"type":1,"name":40002,"attributes":[14,200,10,15,200,10,16,100,0],"modelName":"Zeus","recycle":10}, -{"id":40003,"type":1,"name":40003,"attributes":[14,200,10,15,200,10,16,100,0],"modelName":"Zeus","recycle":10}, -{"id":40004,"type":1,"name":40004,"attributes":[14,200,10,15,200,10,16,100,0],"modelName":"Zeus","recycle":10}, -{"id":40005,"type":1,"name":40005,"attributes":[14,200,10,15,200,10,16,100,0],"modelName":"Zeus","recycle":10}, -{"id":40006,"type":1,"name":40006,"attributes":[14,200,10,15,200,10,16,100,0],"modelName":"Zeus","recycle":10}, -{"id":40007,"type":1,"name":40007,"attributes":[14,200,10,15,200,10,16,100,0],"modelName":"Zeus","recycle":10}, -{"id":40008,"type":1,"name":40008,"attributes":[14,200,10,15,200,10,16,100,0],"modelName":"Zeus","recycle":10}, -{"id":40009,"type":1,"name":40009,"attributes":[14,200,10,15,200,10,16,100,0],"modelName":"Zeus","recycle":10}, -{"id":40010,"type":1,"name":40010,"attributes":[14,200,10,15,200,10,16,100,0],"modelName":"Zeus","recycle":10}, -{"id":40011,"type":1,"name":40011,"attributes":[14,200,10,15,200,10,16,100,0],"modelName":"Zeus","recycle":10}, -{"id":40012,"type":1,"name":40012,"attributes":[14,200,10,15,200,10,16,100,0],"modelName":"Zeus","recycle":10}, -{"id":40013,"type":1,"name":40013,"attributes":[14,200,10,15,200,10,16,100,0],"modelName":"Zeus","recycle":10}, -{"id":40014,"type":1,"name":40014,"attributes":[14,200,10,15,200,10,16,100,0],"modelName":"Zeus","recycle":10}, -{"id":40015,"type":1,"name":40015,"attributes":[14,200,10,15,200,10,16,100,0],"modelName":"Zeus","recycle":10} +{"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} ] \ No newline at end of file diff --git a/src/ReplicatedStorage/Json/Forge.json b/src/ReplicatedStorage/Json/Forge.json index e3cc33b..c7d41d2 100644 --- a/src/ReplicatedStorage/Json/Forge.json +++ b/src/ReplicatedStorage/Json/Forge.json @@ -1,17 +1,29 @@ [ -{"id":1,"cost":[1,500]}, -{"id":2,"cost":[1,500]}, -{"id":3,"cost":[1,500]}, -{"id":4,"cost":[1,500]}, -{"id":5,"cost":[1,500]}, -{"id":6,"cost":[1,500]}, -{"id":7,"cost":[1,500]}, -{"id":8,"cost":[1,500]}, -{"id":9,"cost":[1,500]}, -{"id":10,"cost":[1,500]}, -{"id":11,"cost":[1,500]}, -{"id":12,"cost":[1,500]}, -{"id":13,"cost":[1,500]}, -{"id":14,"cost":[1,500]}, -{"id":15,"cost":[1,500]} +{"id":1,"cost":[2,10]}, +{"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]} ] \ No newline at end of file diff --git a/src/ReplicatedStorage/Json/Language_En_US.json b/src/ReplicatedStorage/Json/Language_En_US.json index 3fbf934..317c111 100644 --- a/src/ReplicatedStorage/Json/Language_En_US.json +++ b/src/ReplicatedStorage/Json/Language_En_US.json @@ -1,6 +1,43 @@ [ -{"id":100006,"text":"Coin+{0}"}, -{"id":100007,"text":"Score+{0}"}, +{"id":101,"text":"普通"}, +{"id":102,"text":"精良"}, +{"id":103,"text":"传奇"}, +{"id":104,"text":"史诗"}, +{"id":105,"text":"卓越"}, +{"id":106,"text":"传说"}, +{"id":107,"text":"传说+1"}, +{"id":108,"text":"传说+2"}, +{"id":201,"text":"攻击"}, +{"id":202,"text":"血量"}, +{"id":203,"text":"飞剑基础伤害"}, +{"id":204,"text":"飞剑穿戴额外伤害"}, +{"id":205,"text":"飞剑穿戴额外特殊伤害"}, +{"id":206,"text":"火焰伤害"}, +{"id":207,"text":"冰霜伤害"}, +{"id":208,"text":"雷电伤害"}, +{"id":209,"text":"暗影伤害"}, +{"id":210,"text":"火焰抗性"}, +{"id":211,"text":"冰霜抗性"}, +{"id":212,"text":"雷电抗性"}, +{"id":213,"text":"暗影抗性"}, +{"id":214,"text":"攻击"}, +{"id":215,"text":"血量"}, +{"id":216,"text":"攻速"}, +{"id":220,"text":"暴击率"}, +{"id":221,"text":"暴击"}, +{"id":222,"text":"攻击速度加成"}, +{"id":223,"text":"冷却时间"}, +{"id":224,"text":"资源上限"}, +{"id":225,"text":"资源消耗减免"}, +{"id":226,"text":"资源回复速度"}, +{"id":227,"text":"吸血"}, +{"id":228,"text":"金币掉落加成"}, +{"id":250,"text":"上阵穿戴数量上限"}, +{"id":251,"text":"技能数量上限"}, +{"id":252,"text":"额外属性数量上限"}, +{"id":253,"text":"元素属性数量上限"}, +{"id":254,"text":"元素抗性数量上限"}, +{"id":255,"text":"宝石数量上限"}, {"id":40000,"text":"测试装备1"}, {"id":40001,"text":"测试装备2"}, {"id":40002,"text":"测试装备3"}, diff --git a/src/ReplicatedStorage/Json/Language_Zh_CN.json b/src/ReplicatedStorage/Json/Language_Zh_CN.json index 04847c8..e1e262e 100644 --- a/src/ReplicatedStorage/Json/Language_Zh_CN.json +++ b/src/ReplicatedStorage/Json/Language_Zh_CN.json @@ -1,331 +1,59 @@ [ -{"id":2,"text":"token异常"}, -{"id":3,"text":"消息序列号异常"}, -{"id":10,"text":"服务器火爆"}, -{"id":11,"text":"服务器维护"}, -{"id":12,"text":"服务器预开启"}, -{"id":13,"text":"当前所选服务器处于爆满状态,无法新建账号"}, -{"id":14,"text":"当前所选服务器处于未开服状态,无法新建账号"}, -{"id":15,"text":"当前所选服务器处于维护状态,请等待维护结束"}, -{"id":16,"text":"当前账号未经认证"}, -{"id":20,"text":"该账号被封禁,剩余时间:{0}"}, -{"id":21,"text":"该账号已被永久封禁"}, -{"id":22,"text":"战斗数据异常"}, -{"id":23,"text":"战斗数据异常."}, -{"id":24,"text":"预开服"}, -{"id":25,"text":"新服"}, -{"id":26,"text":"火爆"}, -{"id":27,"text":"爆满"}, -{"id":28,"text":"维护"}, -{"id":30,"text":"道具数量不足"}, -{"id":31,"text":"已到达购买数量上限"}, -{"id":32,"text":"已达到最大等级"}, -{"id":33,"text":"请勿重复触发"}, -{"id":34,"text":"已达触发次数上限"}, -{"id":35,"text":"请勿重复领取"}, -{"id":36,"text":"补货失败,道具不足"}, -{"id":37,"text":"成功补货"}, -{"id":38,"text":"输入内容包含敏感词"}, -{"id":39,"text":"暂无可分解内容"}, -{"id":100,"text":"输出"}, -{"id":101,"text":"控制"}, -{"id":102,"text":"盾甲兵"}, -{"id":103,"text":"药师"}, -{"id":104,"text":"潜行者"}, -{"id":105,"text":"增伤"}, -{"id":106,"text":"冰剑修"}, -{"id":107,"text":"英雄"}, -{"id":108,"text":"弓箭手"}, -{"id":109,"text":"唐门门主"}, -{"id":110,"text":"拳王"}, -{"id":200,"text":"黎明时代"}, -{"id":201,"text":"石器时代"}, -{"id":202,"text":"农耕时代"}, -{"id":600,"text":"早餐"}, -{"id":601,"text":"午餐"}, -{"id":602,"text":"晚餐"}, -{"id":1000,"text":"普攻"}, -{"id":1001,"text":"近距离攻击敌方"}, -{"id":1002,"text":"劈砍"}, -{"id":1003,"text":"挥舞大刀对近距离的敌人进行劈砍,对其造成伤害"}, -{"id":1004,"text":"重甲"}, -{"id":1005,"text":"身着重甲防御较高,但移动缓慢。使用单手剑对近距离的敌人进行劈砍,对其造成伤害"}, -{"id":1006,"text":"偷袭"}, -{"id":1007,"text":"快速移动到战场后方,近距离攻击敌方"}, -{"id":1008,"text":"长弓"}, -{"id":1009,"text":"使用长弓远距离对的敌人造成伤害,敌人中箭越多移速越慢"}, -{"id":1010,"text":"普通攻击"}, -{"id":1011,"text":"远距离释放毒气,造成范围伤害"}, -{"id":1012,"text":"眩晕箭"}, -{"id":1013,"text":"射出弓箭,远距离攻击敌方,有概率使目标眩晕"}, -{"id":1014,"text":"寒冰剑"}, -{"id":1015,"text":"远距离释放冰霜,减速周围敌人,并造成少量伤害"}, -{"id":1016,"text":"治疗"}, -{"id":1017,"text":"对目标施加治疗,恢复少量生命值"}, -{"id":1018,"text":"攻击提升"}, -{"id":1019,"text":"对目标友军施加增益,短时间内增加目标攻击力"}, -{"id":1020,"text":"长枪"}, -{"id":1021,"text":"使用长枪对中等距离的敌人造成伤害,并附带击退效果。(无法对肉盾、英雄目标造成击退)"}, -{"id":1022,"text":"冲锋"}, -{"id":1023,"text":"接近目标时,骑兵发起冲锋对敌人造成伤害与击退效果,冲锋期间击杀敌人后,可继续冲锋。(无法对肉盾、英雄目标造成击退)"}, -{"id":1100,"text":"[小队]:首次攻击时,额外召唤1名刀兵"}, -{"id":1101,"text":"[小队]额外召唤1个[暗影刀兵]"}, -{"id":1102,"text":"首次攻击时,同时投掷[捕网],眩晕敌方4秒"}, -{"id":1103,"text":"[捕网]进化成[暗影网]:向首个进入目标范围内敌人,投掷暗影网,重复命中敌方时叠加控制时长"}, -{"id":1104,"text":"火焰进化为硫化火焰。附加灼烧伤害3秒"}, -{"id":1105,"text":"出战战士数量+1"}, -{"id":1106,"text":"爆炸时,对灼烧目标,有20%概率眩晕敌人1秒"}, -{"id":1107,"text":"灼烧效果会持续到目标直至死亡。"}, -{"id":1150,"text":"每攻击5次,释放一次重刺穿透直线上的3个敌人"}, -{"id":1151,"text":"重刺附带撕裂效果,技能伤害+60%"}, -{"id":1152,"text":"重刺附带击退效果"}, -{"id":1153,"text":"技能伤害+60%"}, -{"id":1154,"text":"重刺后附带横扫技,对范围内的敌人造成伤害,技能伤害+30%"}, -{"id":1155,"text":"横扫会反向再次横扫1次,本次横扫伤害-20%"}, -{"id":1156,"text":"技能对冰冻状态下的敌人,伤害+200%"}, -{"id":1157,"text":"技能击杀1个敌人,自身攻击力提升2%,直至死亡"}, -{"id":1200,"text":"每攻击5次,恢复自身血量10%,"}, -{"id":1201,"text":"单次承伤损失血量,最多不超过自身血量上限的25%"}, -{"id":1202,"text":"第一次生命低于30%时,会在接下来的3秒恢复最大生命15%"}, -{"id":1203,"text":"单次承伤损失血量,最多不超过自身血量上限的15%"}, -{"id":1204,"text":"恢复血量时,有10%概率再次恢复(针对攻击触发技能)"}, -{"id":1205,"text":"每次恢复血量时,恢复效果+20%"}, -{"id":1206,"text":"攻击异常状态敌人时,有概率额外恢复自身生命2%的生命"}, -{"id":1207,"text":"血量为0时,有20%概率恢复自身血量50%(仅触发一次)"}, -{"id":1250,"text":"召唤后,冲锋路径上的敌人,造成200%攻击力的伤害,每击杀1个敌人后可持续冲锋,每次击杀伤害递减20%,直至无击杀目标后停止"}, -{"id":1251,"text":"冲锋结束后,附带击退效果,伤害+60%"}, -{"id":1252,"text":"冲锋状态经过的友军,获得50%移速加成,持续3秒"}, -{"id":1253,"text":"骑兵冲锋数量+1,伤害-20%"}, -{"id":1254,"text":"冲锋状态结束时,对击退目标有5%造成2秒眩晕"}, -{"id":1255,"text":"冲锋状态下,首个命中的敌人对其额外造成200%的伤害"}, -{"id":1256,"text":"冲锋状态下,对异常状态敌人伤害+200%"}, -{"id":1257,"text":"冲锋过程中,冲锋伤害不递减。"}, -{"id":1300,"text":"每普攻5次,发射一枚霜冻箭附加冰霜效果,降低敌人10%移速(霜冻箭最大上限:30%),持续时间:5S"}, -{"id":1301,"text":"普攻发射弓箭数量+1,伤害-20%"}, -{"id":1302,"text":"霜冻箭攻击减速达到30%的目标,使用霜冻箭命中有20%触发1秒冰冻效果"}, -{"id":1303,"text":"普攻发射弓箭数量+1"}, -{"id":1304,"text":"弓箭攻击,附带减速效果的敌人时,伤害+20%"}, -{"id":1305,"text":"霜冻箭击杀敌人时,向扇形发射4枚碎冰造成伤害(伤害1次)"}, -{"id":1306,"text":"弓箭对冻结状态下的敌人伤害+100%"}, -{"id":1307,"text":"攻击冰冻目标,有5%概率,额外造成目标最大生命上限1%的伤害"}, -{"id":1350,"text":"每攻击5次,释放1个高爆燃油弹,对落点区域的敌人造成小范围伤害"}, -{"id":1351,"text":"承受到伤害的敌人,附带灼烧效果,持续3秒"}, -{"id":1352,"text":"释放2个高爆燃油弹,对落点区域的敌人造成伤害"}, -{"id":1353,"text":"被击中的目标,附带30%的减速效果,持续时间:3秒"}, -{"id":1354,"text":"爆炸区域的敌人,眩晕1.5秒"}, -{"id":1355,"text":"爆炸造成伤害时,增加100%伤害"}, -{"id":1356,"text":"燃烧弹对冻结的怪物造成伤害+200%"}, -{"id":1357,"text":"每次投掷燃烧弹时,有5%概率投出子母弹,对相同区域投掷2枚燃烧弹"}, -{"id":1500,"text":"建筑等级上限"}, -{"id":1501,"text":"加成提升"}, -{"id":2000,"text":"凝聚火焰之力,朝前方释放一道炽热的烈焰冲击,对范围内敌人造成{0}%+{1}伤害"}, -{"id":2001,"text":"进入狂化状态,自身体型变大,提升自身攻速与移速100%"}, -{"id":2002,"text":"召唤3道闪电,造成{0}%+{1}范围伤害,并带麻痹效果"}, -{"id":2003,"text":"召唤一个图腾,提升友军伤害30%,持续3秒,结束后图腾爆炸,造成{0}%+{1}范围伤害"}, -{"id":2004,"text":"召唤一本死亡之书,存在3秒,每0.5秒造成{0}%+{1}范围伤害,并造成牵引效果"}, -{"id":2005,"text":"化身天外飞仙,连续攻击目标,并造成大量伤害"}, -{"id":2006,"text":"狂化"}, -{"id":2007,"text":"进入狂化状态,自身体型变大,提升自身攻速与移速100%"}, -{"id":2008,"text":"陨石"}, -{"id":2009,"text":"召唤陨石攻击前方敌人,对范围内的敌人造成伤害,并附带减速效果"}, -{"id":2010,"text":"混沌陨石"}, -{"id":2011,"text":"召唤陨石攻击前方敌人,对范围内的敌人造成大量伤害,并附带长时间眩晕"}, -{"id":2012,"text":"冲锋"}, -{"id":2013,"text":"向前冲锋对敌方造成伤害并推走沿途敌人"}, -{"id":2014,"text":"治疗"}, -{"id":2015,"text":"治疗自己和周围友军"}, -{"id":2016,"text":"向前飞行多次造成伤害并且向技能飞行方向击退敌人"}, -{"id":3000,"text":"时装5品1_先锋宝藏"}, -{"id":3001,"text":"时装5品2_先锋宝藏"}, -{"id":3002,"text":"时装5品3_先锋宝藏"}, -{"id":3003,"text":"时装5品4_先锋宝藏"}, -{"id":3004,"text":"时装5品5_先锋宝藏"}, -{"id":3005,"text":"时装5品6_先锋宝藏"}, -{"id":3050,"text":"时装6品1_先锋宝藏"}, -{"id":3051,"text":"时装6品2_先锋宝藏"}, -{"id":3052,"text":"时装6品3_先锋宝藏"}, -{"id":3053,"text":"时装6品4_先锋宝藏"}, -{"id":3054,"text":"时装6品5_先锋宝藏"}, -{"id":3055,"text":"时装6品6_先锋宝藏"}, -{"id":3056,"text":"时装6品7"}, -{"id":3057,"text":"时装6品8"}, -{"id":3058,"text":"时装6品9"}, -{"id":3059,"text":"时装6品10"}, -{"id":3009,"text":"独立测试"}, -{"id":4000,"text":"武器4品1_首充"}, -{"id":4001,"text":"武器4品2"}, -{"id":4002,"text":"武器4品3"}, -{"id":4050,"text":"武器5品1_先锋宝藏"}, -{"id":4051,"text":"武器5品2_先锋宝藏"}, -{"id":4052,"text":"武器5品3_先锋宝藏"}, -{"id":4100,"text":"武器6品1_先锋宝藏"}, -{"id":4101,"text":"武器6品2_先锋宝藏"}, -{"id":4102,"text":"武器6品3_先锋宝藏"}, -{"id":4103,"text":"武器6品4_先锋宝藏"}, -{"id":4104,"text":"武器6品5_先锋宝藏"}, -{"id":4105,"text":"武器6品6_先锋宝藏"}, -{"id":4106,"text":"武器6品7"}, -{"id":4107,"text":"武器6品8"}, -{"id":4108,"text":"武器6品9"}, -{"id":4109,"text":"武器6品10"}, -{"id":5000,"text":"按住屏幕左右\\n移动英雄"}, -{"id":5001,"text":"点击召唤同伴"}, -{"id":5002,"text":"释放技能\\n获得强大效果"}, -{"id":5003,"text":"金币可用于召唤同伴\\n也能提升金库等级"}, -{"id":10007,"text":"锻造石"}, -{"id":10008,"text":"洗炼符"}, -{"id":10009,"text":"科技图纸"}, -{"id":10010,"text":"木材"}, -{"id":10011,"text":"强化剂"}, -{"id":10050,"text":"银钥匙"}, -{"id":10051,"text":"金钥匙"}, -{"id":10052,"text":"招募令"}, -{"id":10060,"text":"通用英雄皮肤材料-4"}, -{"id":10061,"text":"通用英雄皮肤材料-5"}, -{"id":10062,"text":"通用英雄皮肤材料-6"}, -{"id":10063,"text":"通用英雄皮肤材料-7"}, -{"id":10070,"text":"通用武器皮肤材料-4"}, -{"id":10071,"text":"通用武器皮肤材料-5"}, -{"id":10072,"text":"通用武器皮肤材料-6"}, -{"id":10073,"text":"通用武器皮肤材料-7"}, -{"id":10100,"text":"战场积分"}, -{"id":10101,"text":"军团积分"}, -{"id":10102,"text":"薪火积分"}, -{"id":10103,"text":"赛季积分"}, -{"id":10104,"text":"荣耀积分"}, -{"id":10105,"text":"元素积分"}, -{"id":10106,"text":"终末积分"}, -{"id":10107,"text":"危机积分"}, -{"id":10200,"text":"头盔图纸"}, -{"id":10201,"text":"护臂图纸"}, -{"id":10202,"text":"衣服图纸"}, -{"id":10203,"text":"裤子图纸"}, -{"id":10204,"text":"鞋子图纸"}, -{"id":10205,"text":"手套图纸"}, -{"id":11100,"text":"宠物1碎片"}, -{"id":11101,"text":"宠物2碎片"}, -{"id":11102,"text":"宠物3碎片"}, -{"id":11103,"text":"宠物4碎片"}, -{"id":11104,"text":"宠物5碎片"}, -{"id":11105,"text":"宠物6碎片"}, -{"id":11106,"text":"宠物7碎片"}, -{"id":11107,"text":"宠物8碎片"}, -{"id":11108,"text":"宠物9碎片"}, -{"id":11109,"text":"宠物10碎片"}, -{"id":11110,"text":"宠物11碎片"}, -{"id":11111,"text":"宠物12碎片"}, -{"id":11112,"text":"宠物13碎片"}, -{"id":11113,"text":"宠物14碎片"}, -{"id":11114,"text":"宠物15碎片"}, -{"id":11115,"text":"宠物16碎片"}, -{"id":11116,"text":"宠物17碎片"}, -{"id":11117,"text":"宠物18碎片"}, -{"id":11118,"text":"宠物19碎片"}, -{"id":11119,"text":"宠物20碎片"}, -{"id":20007,"text":"锻造石详情"}, -{"id":20008,"text":"洗炼符详情"}, -{"id":20009,"text":"科技图纸详情"}, -{"id":20010,"text":"木材详情"}, -{"id":20050,"text":"银钥匙详情"}, -{"id":20051,"text":"金钥匙详情"}, -{"id":20052,"text":"招募令详情"}, -{"id":20060,"text":"通用英雄皮肤材料-4详情"}, -{"id":20061,"text":"通用英雄皮肤材料-5详情"}, -{"id":20062,"text":"通用英雄皮肤材料-6详情"}, -{"id":20063,"text":"通用英雄皮肤材料-7详情"}, -{"id":20070,"text":"通用武器皮肤材料-4详情"}, -{"id":20071,"text":"通用武器皮肤材料-5详情"}, -{"id":20072,"text":"通用武器皮肤材料-6详情"}, -{"id":20073,"text":"通用武器皮肤材料-7详情"}, -{"id":20100,"text":"战场积分详情"}, -{"id":20101,"text":"军团积分详情"}, -{"id":20102,"text":"薪火积分详情"}, -{"id":20103,"text":"赛季积分详情"}, -{"id":20104,"text":"荣耀积分详情"}, -{"id":20105,"text":"元素积分详情"}, -{"id":20106,"text":"终末积分详情"}, -{"id":20107,"text":"危机积分详情"}, -{"id":20200,"text":"头盔图纸详情"}, -{"id":20201,"text":"护臂图纸详情"}, -{"id":20202,"text":"衣服图纸详情"}, -{"id":20203,"text":"裤子图纸详情"}, -{"id":20204,"text":"鞋子图纸详情"}, -{"id":20205,"text":"手套图纸详情"}, -{"id":10500,"text":"1分钟加速"}, -{"id":10501,"text":"10分钟加速"}, -{"id":10502,"text":"半小时加速"}, -{"id":10503,"text":"1小时加速"}, -{"id":10504,"text":"6小时加速"}, -{"id":110000,"text":"技能1"}, -{"id":110001,"text":"技能2"}, -{"id":110002,"text":"技能3"}, -{"id":110003,"text":"技能4"}, -{"id":110004,"text":"技能5"}, -{"id":110005,"text":"技能6"}, -{"id":110006,"text":"技能7"}, -{"id":110007,"text":"技能8"}, -{"id":110008,"text":"技能9"}, -{"id":110009,"text":"技能10"}, -{"id":110010,"text":"技能11"}, -{"id":110011,"text":"技能12"}, -{"id":310001,"text":"头盔·普通"}, -{"id":310002,"text":"头盔·精良"}, -{"id":310003,"text":"头盔·卓越"}, -{"id":320001,"text":"护臂·普通"}, -{"id":320002,"text":"护臂·精良"}, -{"id":320003,"text":"护臂·卓越"}, -{"id":330001,"text":"衣服·普通"}, -{"id":330002,"text":"衣服·精良"}, -{"id":330003,"text":"衣服·卓越"}, -{"id":340001,"text":"裤子·普通"}, -{"id":340002,"text":"裤子·精良"}, -{"id":340003,"text":"裤子·卓越"}, -{"id":350001,"text":"鞋子·普通"}, -{"id":350002,"text":"鞋子·精良"}, -{"id":350003,"text":"鞋子·卓越"}, -{"id":360001,"text":"手套·普通"}, -{"id":360002,"text":"手套·精良"}, -{"id":360003,"text":"手套·卓越"}, -{"id":411000,"text":"头盔·普通宝石"}, -{"id":421000,"text":"护臂·普通宝石"}, -{"id":431000,"text":"衣服·普通宝石"}, -{"id":441000,"text":"裤子·普通宝石"}, -{"id":451000,"text":"鞋子·普通宝石"}, -{"id":461000,"text":"手套·普通宝石"}, -{"id":412000,"text":"头盔·精良宝石"}, -{"id":422000,"text":"护臂·精良宝石"}, -{"id":432000,"text":"衣服·精良宝石"}, -{"id":442000,"text":"裤子·精良宝石"}, -{"id":452000,"text":"鞋子·精良宝石"}, -{"id":462000,"text":"手套·精良宝石"}, -{"id":413000,"text":"头盔·卓越宝石"}, -{"id":423000,"text":"护臂·卓越宝石"}, -{"id":433000,"text":"衣服·卓越宝石"}, -{"id":443000,"text":"裤子·卓越宝石"}, -{"id":453000,"text":"鞋子·卓越宝石"}, -{"id":463000,"text":"手套·卓越宝石"}, -{"id":414000,"text":"头盔·完美宝石"}, -{"id":424000,"text":"护臂·完美宝石"}, -{"id":434000,"text":"衣服·完美宝石"}, -{"id":444000,"text":"裤子·完美宝石"}, -{"id":454000,"text":"鞋子·完美宝石"}, -{"id":464000,"text":"手套·完美宝石"}, -{"id":415000,"text":"头盔·传说宝石"}, -{"id":425000,"text":"护臂·传说宝石"}, -{"id":435000,"text":"衣服·传说宝石"}, -{"id":445000,"text":"裤子·传说宝石"}, -{"id":455000,"text":"鞋子·传说宝石"}, -{"id":465000,"text":"手套·传说宝石"}, -{"id":416000,"text":"头盔·绝世宝石"}, -{"id":426000,"text":"护臂·绝世宝石"}, -{"id":436000,"text":"衣服·绝世宝石"}, -{"id":446000,"text":"裤子·绝世宝石"}, -{"id":456000,"text":"鞋子·绝世宝石"}, -{"id":466000,"text":"手套·绝世宝石"}, -{"id":417000,"text":"头盔·至尊宝石"}, -{"id":427000,"text":"护臂·至尊宝石"}, -{"id":437000,"text":"衣服·至尊宝石"}, -{"id":447000,"text":"裤子·至尊宝石"}, -{"id":457000,"text":"鞋子·至尊宝石"}, -{"id":467000,"text":"手套·至尊宝石"} +{"id":101,"text":"普通"}, +{"id":102,"text":"精良"}, +{"id":103,"text":"传奇"}, +{"id":104,"text":"史诗"}, +{"id":105,"text":"卓越"}, +{"id":106,"text":"传说"}, +{"id":107,"text":"传说+1"}, +{"id":108,"text":"传说+2"}, +{"id":201,"text":"攻击"}, +{"id":202,"text":"血量"}, +{"id":203,"text":"飞剑基础伤害"}, +{"id":204,"text":"飞剑穿戴额外伤害"}, +{"id":205,"text":"飞剑穿戴额外特殊伤害"}, +{"id":206,"text":"火焰伤害"}, +{"id":207,"text":"冰霜伤害"}, +{"id":208,"text":"雷电伤害"}, +{"id":209,"text":"暗影伤害"}, +{"id":210,"text":"火焰抗性"}, +{"id":211,"text":"冰霜抗性"}, +{"id":212,"text":"雷电抗性"}, +{"id":213,"text":"暗影抗性"}, +{"id":214,"text":"攻击"}, +{"id":215,"text":"血量"}, +{"id":216,"text":"攻速"}, +{"id":220,"text":"暴击率"}, +{"id":221,"text":"暴击"}, +{"id":222,"text":"攻击速度加成"}, +{"id":223,"text":"冷却时间"}, +{"id":224,"text":"资源上限"}, +{"id":225,"text":"资源消耗减免"}, +{"id":226,"text":"资源回复速度"}, +{"id":227,"text":"吸血"}, +{"id":228,"text":"金币掉落加成"}, +{"id":250,"text":"上阵穿戴数量上限"}, +{"id":251,"text":"技能数量上限"}, +{"id":252,"text":"额外属性数量上限"}, +{"id":253,"text":"元素属性数量上限"}, +{"id":254,"text":"元素抗性数量上限"}, +{"id":255,"text":"宝石数量上限"}, +{"id":100006,"text":"Coin+{0}"}, +{"id":100007,"text":"Score+{0}"}, +{"id":40000,"text":"测试装备1"}, +{"id":40001,"text":"测试装备2"}, +{"id":40002,"text":"测试装备3"}, +{"id":40003,"text":"测试装备4"}, +{"id":40004,"text":"测试装备5"}, +{"id":40005,"text":"测试装备6"}, +{"id":40006,"text":"测试装备7"}, +{"id":40007,"text":"测试装备8"}, +{"id":40008,"text":"测试装备9"}, +{"id":40009,"text":"测试装备10"}, +{"id":40010,"text":"测试装备11"}, +{"id":40011,"text":"测试装备12"}, +{"id":40012,"text":"测试装备13"}, +{"id":40013,"text":"测试装备14"}, +{"id":40014,"text":"测试装备15"}, +{"id":40015,"text":"测试装备16"} ] \ No newline at end of file diff --git a/src/ReplicatedStorage/Json/Level.json b/src/ReplicatedStorage/Json/Level.json index 9905731..f290f64 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]]}, -{"id":2,"type":1,"timeLimit":null,"atkBonus":520,"hpBonus":520,"wave":[[10,1,1,50,1,1]]}, -{"id":3,"type":1,"timeLimit":null,"atkBonus":540,"hpBonus":540,"wave":[[10,1,1,50,1,1]]}, -{"id":4,"type":1,"timeLimit":null,"atkBonus":560,"hpBonus":560,"wave":[[10,1,1,50,1,1]]}, -{"id":5,"type":2,"timeLimit":60,"atkBonus":1050,"hpBonus":1050,"wave":[[10,1000,1]]}, -{"id":6,"type":1,"timeLimit":null,"atkBonus":600,"hpBonus":600,"wave":[[10,1,1,50,1,1]]}, -{"id":7,"type":1,"timeLimit":null,"atkBonus":620,"hpBonus":620,"wave":[[10,1,1,50,1,1]]}, -{"id":8,"type":1,"timeLimit":null,"atkBonus":640,"hpBonus":640,"wave":[[10,1,1,50,1,1]]}, -{"id":9,"type":1,"timeLimit":null,"atkBonus":660,"hpBonus":660,"wave":[[10,1,1,50,1,1]]}, -{"id":10,"type":2,"timeLimit":60,"atkBonus":1100,"hpBonus":1100,"wave":[[10,1000,1]]}, -{"id":11,"type":1,"timeLimit":null,"atkBonus":700,"hpBonus":700,"wave":[[10,1,1,50,1,1]]}, -{"id":12,"type":1,"timeLimit":null,"atkBonus":720,"hpBonus":720,"wave":[[10,1,1,50,1,1]]}, -{"id":13,"type":1,"timeLimit":null,"atkBonus":740,"hpBonus":740,"wave":[[10,1,1,50,1,1]]}, -{"id":14,"type":1,"timeLimit":null,"atkBonus":760,"hpBonus":760,"wave":[[10,1,1,50,1,1]]}, -{"id":15,"type":2,"timeLimit":60,"atkBonus":1150,"hpBonus":1150,"wave":[[10,1000,1]]}, -{"id":16,"type":1,"timeLimit":null,"atkBonus":800,"hpBonus":800,"wave":[[10,1,1,50,1,1]]}, -{"id":17,"type":1,"timeLimit":null,"atkBonus":820,"hpBonus":820,"wave":[[10,1,1,50,1,1]]}, -{"id":18,"type":1,"timeLimit":null,"atkBonus":840,"hpBonus":840,"wave":[[10,1,1,50,1,1]]}, -{"id":19,"type":1,"timeLimit":null,"atkBonus":860,"hpBonus":860,"wave":[[10,1,1,50,1,1]]}, -{"id":20,"type":2,"timeLimit":60,"atkBonus":1250,"hpBonus":1250,"wave":[[10,1000,1]]}, -{"id":21,"type":1,"timeLimit":null,"atkBonus":900,"hpBonus":900,"wave":[[10,1,1,50,1,1]]}, -{"id":22,"type":1,"timeLimit":null,"atkBonus":920,"hpBonus":920,"wave":[[10,1,1,50,1,1]]}, -{"id":23,"type":1,"timeLimit":null,"atkBonus":940,"hpBonus":940,"wave":[[10,1,1,50,1,1]]}, -{"id":24,"type":1,"timeLimit":null,"atkBonus":960,"hpBonus":960,"wave":[[10,1,1,50,1,1]]}, -{"id":25,"type":2,"timeLimit":60,"atkBonus":1350,"hpBonus":1350,"wave":[[10,1000,1]]}, -{"id":26,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1]]}, -{"id":27,"type":1,"timeLimit":null,"atkBonus":1020,"hpBonus":1020,"wave":[[10,1,1,50,1,1]]}, -{"id":28,"type":1,"timeLimit":null,"atkBonus":1040,"hpBonus":1040,"wave":[[10,1,1,50,1,1]]}, -{"id":29,"type":1,"timeLimit":null,"atkBonus":1060,"hpBonus":1060,"wave":[[10,1,1,50,1,1]]}, -{"id":30,"type":2,"timeLimit":60,"atkBonus":1500,"hpBonus":1500,"wave":[[10,1000,1]]}, -{"id":31,"type":1,"timeLimit":null,"atkBonus":1100,"hpBonus":1100,"wave":[[10,1,1,50,1,1]]}, -{"id":32,"type":1,"timeLimit":null,"atkBonus":1120,"hpBonus":1120,"wave":[[10,1,1,50,1,1]]}, -{"id":33,"type":1,"timeLimit":null,"atkBonus":1140,"hpBonus":1140,"wave":[[10,1,1,50,1,1]]}, -{"id":34,"type":1,"timeLimit":null,"atkBonus":1160,"hpBonus":1160,"wave":[[10,1,1,50,1,1]]}, -{"id":35,"type":2,"timeLimit":60,"atkBonus":2000,"hpBonus":2000,"wave":[[10,1000,1]]}, -{"id":36,"type":1,"timeLimit":null,"atkBonus":1200,"hpBonus":1200,"wave":[[10,1,1,50,1,1]]}, -{"id":37,"type":1,"timeLimit":null,"atkBonus":1220,"hpBonus":1220,"wave":[[10,1,1,50,1,1]]}, -{"id":38,"type":1,"timeLimit":null,"atkBonus":1240,"hpBonus":1240,"wave":[[10,1,1,50,1,1]]}, -{"id":39,"type":1,"timeLimit":null,"atkBonus":1260,"hpBonus":1260,"wave":[[10,1,1,50,1,1]]}, -{"id":40,"type":2,"timeLimit":60,"atkBonus":2500,"hpBonus":2500,"wave":[[10,1000,1]]}, -{"id":41,"type":1,"timeLimit":null,"atkBonus":1300,"hpBonus":1300,"wave":[[10,1,1,50,1,1]]}, -{"id":42,"type":1,"timeLimit":null,"atkBonus":1320,"hpBonus":1320,"wave":[[10,1,1,50,1,1]]}, -{"id":43,"type":1,"timeLimit":null,"atkBonus":1340,"hpBonus":1340,"wave":[[10,1,1,50,1,1]]}, -{"id":44,"type":1,"timeLimit":null,"atkBonus":1360,"hpBonus":1360,"wave":[[10,1,1,50,1,1]]}, -{"id":45,"type":2,"timeLimit":60,"atkBonus":3000,"hpBonus":3000,"wave":[[10,1000,1]]}, -{"id":46,"type":1,"timeLimit":null,"atkBonus":1400,"hpBonus":1400,"wave":[[10,1,1,50,1,1]]}, -{"id":47,"type":1,"timeLimit":null,"atkBonus":1420,"hpBonus":1420,"wave":[[10,1,1,50,1,1]]}, -{"id":48,"type":1,"timeLimit":null,"atkBonus":1440,"hpBonus":1440,"wave":[[10,1,1,50,1,1]]}, -{"id":49,"type":1,"timeLimit":null,"atkBonus":1460,"hpBonus":1460,"wave":[[10,1,1,50,1,1]]}, -{"id":50,"type":2,"timeLimit":60,"atkBonus":3500,"hpBonus":3500,"wave":[[10,1000,1]]} +{"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":[]} ] \ No newline at end of file diff --git a/src/ReplicatedStorage/Json/Param.json b/src/ReplicatedStorage/Json/Param.json index aca4859..278fe58 100644 --- a/src/ReplicatedStorage/Json/Param.json +++ b/src/ReplicatedStorage/Json/Param.json @@ -2,5 +2,6 @@ {"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":4,"key":"default_weapon","intValue":null,"stringValue":"Sword","intArray":[]} +{"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/Modules/IncrementalCostManager.luau b/src/ReplicatedStorage/Modules/IncrementalCostManager.luau new file mode 100644 index 0000000..ea72060 --- /dev/null +++ b/src/ReplicatedStorage/Modules/IncrementalCostManager.luau @@ -0,0 +1,76 @@ +-- 递增消耗管理器 +local IncrementalCostManager = {} + +--> Dependencies +local Utils = require(script.Parent.Parent.Tools.Utils) + +-- 递增消耗计算函数 +function IncrementalCostManager:CalculateCost(currentLevel: number, configData: table, costIndex: number?) + if not configData then + warn("配置数据无效") + return 0 + end + + costIndex = costIndex or 2 -- 默认使用第二个消耗值 + + -- 根据当前等级获取对应的消耗配置 + local levelData = Utils:GetIdDataFromJson(configData, currentLevel) + if not levelData or not levelData.cost or not levelData.cost[costIndex] then + warn("无法获取等级", currentLevel, "的消耗配置") + return 0 + end + + return levelData.cost[costIndex] +end + +-- 计算当前等级可以进行的操作次数 +function IncrementalCostManager:CalculateOperationCount(currentValue: number, currentLevel: number, configData: table, costIndex: number?) + local cost = self:CalculateCost(currentLevel, configData, costIndex) + if cost <= 0 then return 0 end + + return math.floor(currentValue / cost) +end + +-- 计算下一次升级需要的资源 +function IncrementalCostManager:CalculateNextUpgradeCost(currentLevel: number, configData: table, costIndex: number?) + local nextLevel = currentLevel + 1 + local maxLevel = Utils:GetMaxIdFromJson(configData) + + if nextLevel > maxLevel then + return 0 -- 已达到最高等级 + end + + return self:CalculateCost(nextLevel, configData, costIndex) +end + +-- 检查是否可以升级 +function IncrementalCostManager:CanUpgrade(currentValue: number, currentLevel: number, configData: table, costIndex: number?) + local nextCost = self:CalculateNextUpgradeCost(currentLevel, configData, costIndex) + return currentValue >= nextCost +end + +-- 获取升级后的剩余资源 +function IncrementalCostManager:GetRemainingAfterUpgrade(currentValue: number, currentLevel: number, configData: table, costIndex: number?) + local cost = self:CalculateCost(currentLevel, configData, costIndex) + return currentValue - cost +end + +-- 批量计算多个等级的消耗 +function IncrementalCostManager:CalculateBatchCosts(startLevel: number, endLevel: number, configData: table, costIndex: number?) + local costs = {} + for level = startLevel, endLevel do + costs[level] = self:CalculateCost(level, configData, costIndex) + end + return costs +end + +-- 计算从当前等级到目标等级的总消耗 +function IncrementalCostManager:CalculateTotalCost(currentLevel: number, targetLevel: number, configData: table, costIndex: number?) + local totalCost = 0 + for level = currentLevel, targetLevel do + totalCost = totalCost + self:CalculateCost(level, configData, costIndex) + end + return totalCost +end + +return IncrementalCostManager \ No newline at end of file diff --git a/src/ReplicatedStorage/Tools/Handles.luau b/src/ReplicatedStorage/Tools/Handles.luau index 5c21d00..757f468 100644 --- a/src/ReplicatedStorage/Tools/Handles.luau +++ b/src/ReplicatedStorage/Tools/Handles.luau @@ -10,5 +10,4 @@ function Handles:valueExistsInTable(tab, value) return false end - return Handles diff --git a/src/ReplicatedStorage/Tools/Localization.luau b/src/ReplicatedStorage/Tools/Localization.luau index a1e8c8d..bc89bcb 100644 --- a/src/ReplicatedStorage/Tools/Localization.luau +++ b/src/ReplicatedStorage/Tools/Localization.luau @@ -14,10 +14,24 @@ local JsonLanguage_Zh_CN = require(ReplicatedStorage.Json.Language_Zh_CN) local JsonImage_En_US = require(ReplicatedStorage.Json.Image_En_US) local JsonImage_Zh_CN = require(ReplicatedStorage.Json.Image_Zh_CN) +local JsonParam = require(ReplicatedStorage.Json.Param) + --> Variables local LocalPlayer = game.Players.LocalPlayer local SystemLocaleId = LocalizationService.SystemLocaleId +--> Color +local QUALITY_COLOR = { + [1] = Color3.fromRGB(255, 255, 255), -- 白色 + [2] = Color3.fromRGB(0, 255, 0), -- 绿色 + [3] = Color3.fromRGB(0, 150, 255), -- 蓝色 + [4] = Color3.fromRGB(150, 0, 255), -- 紫色 + [5] = Color3.fromRGB(255, 150, 0), -- 橙色 + [6] = Color3.fromRGB(255, 0, 0), -- 红色 + [7] = Color3.fromRGB(255, 215, 0), -- 金色 + [8] = Color3.fromRGB(255, 0, 255), -- 粉色 +} + -- 获取本地Json文件 function Localization:GetLocalizationJson() if SystemLocaleId == "zh-CN" then @@ -45,4 +59,44 @@ function Localization:GetImageData(Id: number) return data.sourceId end +-- 获取装备品质描述 +function Localization:GetEquipmentQualityDesc(Quality: number) + local qualityData = Utils:GetSpecialKeyDataFromJson(JsonParam, "key", "quality_show") + if not qualityData then return "" end + local languageData = Utils:GetSpecialKeyDataFromJson(JsonLanguage, "id", qualityData.intArray[Quality]) + if not languageData then return "" end + local language = languageData.text + return language +end + +-- 将Color3转换为十六进制字符串 +local function Color3ToHex(color: Color3): string + local r = math.floor(color.R * 255) + local g = math.floor(color.G * 255) + local b = math.floor(color.B * 255) + return string.format("#%02X%02X%02X", r, g, b) +end + +-- 根据quality获取带颜色包装的文本 +function Localization:GetColoredTextByQuality(quality: number, text: string): string + if not quality or not text then return text or "" end + + local color = QUALITY_COLOR[quality] + if not color then return text end + + local hexColor = Color3ToHex(color) + return string.format('%s', hexColor, text) +end + +-- 根据quality获取装备品质描述(带颜色) +function Localization:GetColoredEquipmentQualityDesc(Quality: number): string + local qualityData = Utils:GetSpecialKeyDataFromJson(JsonParam, "key", "quality_show") + if not qualityData then return "" end + local languageData = Utils:GetSpecialKeyDataFromJson(JsonLanguage, "id", qualityData.intArray[Quality]) + if not languageData then return "" end + local language = languageData.text + + return self:GetColoredTextByQuality(Quality, language) +end + return Localization \ No newline at end of file diff --git a/src/ServerStorage/Base/Behaviour.luau b/src/ServerStorage/Base/Behaviour.luau index c96cb84..45d1d11 100644 --- a/src/ServerStorage/Base/Behaviour.luau +++ b/src/ServerStorage/Base/Behaviour.luau @@ -128,6 +128,14 @@ function Behaviour:ChangeExecutingState(State: boolean) self.PlayerAI.ExecutingState = State end +-- 打断执行 +function Behaviour:StopExecute() + if self.ExeTask then + task.cancel(self.ExeTask) + self.ExeTask = nil + end +end + -- 销毁 function Behaviour:Destroy() -- 清除客户端对应行为表现 diff --git a/src/ServerStorage/Proxy/EquipmentProxy.luau b/src/ServerStorage/Proxy/EquipmentProxy.luau index a0696cc..a88698c 100644 --- a/src/ServerStorage/Proxy/EquipmentProxy.luau +++ b/src/ServerStorage/Proxy/EquipmentProxy.luau @@ -116,7 +116,13 @@ function EquipmentProxy:AddEquipment(Player: Player, EquipmentId: number) for i = 1, #EquipmentData.attributes, 3 do local AttributeData = Utils:GetIdDataFromJson(JsonAttributes, EquipmentData.attributes[i]) local baseLvValue = EquipmentData.attributes[i + 1] + EquipmentData.attributes[i + 2] * (PlayerLevel - 1) - local qualityEffectValue = math.floor(baseLvValue * (qualityParam[quality] / 100)) + local qualityEffectValue + -- 攻击速度词条特殊处理 + if AttributeData.effectAttribute == "atkSpeed" then + qualityEffectValue = baseLvValue + else + qualityEffectValue = math.floor(baseLvValue * (qualityParam[quality] / 100)) + end ResultData.attributes[AttributeData.effectAttribute] = qualityEffectValue end diff --git a/src/ServerStorage/Proxy/HelpProxy.luau b/src/ServerStorage/Proxy/HelpProxy.luau index 7334435..59b67b3 100644 --- a/src/ServerStorage/Proxy/HelpProxy.luau +++ b/src/ServerStorage/Proxy/HelpProxy.luau @@ -9,6 +9,9 @@ local Utils = require(ReplicatedStorage.Tools.Utils) --> Json local JsonItemProp = require(ReplicatedStorage.Json.ItemProp) +--> Modules +local ItemProxy = require(script.Parent.ItemProxy) + --> Events local RE_PlayerHelper = ReplicatedStorage.Events.RE_PlayerHelper @@ -21,17 +24,7 @@ RE_PlayerHelper.OnServerEvent:Connect(function(Player: Player, EventName: string if EventName == "CleanPlayerData" then HelpProxy:CleanPlayerData(Player) elseif EventName == "AddItem" then - local PlayerInfoProxy = require(script.Parent.PlayerInfoProxy) - local itemData = Utils:GetIdDataFromJson(JsonItemProp, EventData[1]) - if itemData.type == 2 then - local EquipmentProxy = require(script.Parent.EquipmentProxy) - EquipmentProxy:AddEquipment(Player, EventData[1], EventData[2]) - elseif itemData.type == 3 then - local BookProxy = require(script.Parent.BookProxy) - BookProxy:UnlockBook(Player, EventData[1] - 10000) - else - PlayerInfoProxy:ChangeItemCount(Player, EventData[1], EventData[2]) - end + ItemProxy:AddItem(Player, EventData[1], EventData[2]) print("添加物品成功", EventData) end end) diff --git a/src/ServerStorage/Proxy/ItemProxy.luau b/src/ServerStorage/Proxy/ItemProxy.luau index 04678c0..971daad 100644 --- a/src/ServerStorage/Proxy/ItemProxy.luau +++ b/src/ServerStorage/Proxy/ItemProxy.luau @@ -21,9 +21,14 @@ function ItemProxy:AddItem(Player: Player, ItemId: number, ItemCount: number) local ItemData = Utils:GetIdDataFromJson(JsonItem, ItemId) if not ItemData then return end - - -- 之后根据不同类型做处理 - if ItemData.type == 1 then + + if ItemData.type == 2 then + local EquipmentProxy = require(script.Parent.EquipmentProxy) + EquipmentProxy:AddEquipment(Player, ItemId, ItemCount) + elseif ItemData.type == 3 then + local BookProxy = require(script.Parent.BookProxy) + BookProxy:UnlockBook(Player, ItemId - 10000) + else PlayerInfoProxy:ChangeItemCount(Player, ItemId, ItemCount) end end diff --git a/src/ServerStorage/Proxy/LevelProxy.luau b/src/ServerStorage/Proxy/LevelProxy.luau index c15576d..ef6e15b 100644 --- a/src/ServerStorage/Proxy/LevelProxy.luau +++ b/src/ServerStorage/Proxy/LevelProxy.luau @@ -10,6 +10,7 @@ local Players = game:GetService("Players") local Utils = require(ReplicatedStorage.Tools.Utils) local ArchiveProxy = require(ServerStorage.Proxy.ArchiveProxy) local MobsProxy = require(ServerStorage.Proxy.MobsProxy) +local ItemProxy = require(ServerStorage.Proxy.ItemProxy) local TypeList = require(ServerStorage.Base.TypeList) --> Dependencies @@ -183,7 +184,6 @@ end -- 挑战关卡(挑战副本用另一个函数) function LevelProxy:ChallengeLevel(Player: Player, LevelId: number) - print("挑战关卡", LevelId) local LevelData = Utils:GetIdDataFromJson(JsonLevel, LevelId) if not LevelData then warn("Level Data not found", LevelId) return end -- 给前端传数据,做表现 @@ -268,6 +268,20 @@ function LevelProxy:ChallengeEnd(Player: Player, result: boolean) -- 判断玩家是否通关 if result then + local levelData = Utils:GetIdDataFromJson(JsonLevel, LevelProxy.pData[Player.UserId].LevelId) + -- 防止之后失败重复添加奖励 + if ArchiveProxy.pData[Player.UserId][STORE_NAME].Progress.Main == LevelProxy.pData[Player.UserId].LevelId then + -- 添加首次通关奖励 + if levelData.finishRewards then + for i = 1, #levelData.finishRewards, 2 do + local itemId = levelData.finishRewards[i] + local itemCount = levelData.finishRewards[i + 1] + ItemProxy:AddItem(Player, itemId, itemCount) + print("添加首次通关奖励", itemId, itemCount) + end + end + end + ChangeValue(Player, ProgressFolder, "Main", LevelProxy.pData[Player.UserId].LevelId + 1) else local IsBoss = LevelProxy.pData[Player.UserId].IsBoss diff --git a/src/ServerStorage/Proxy/PlayerFightProxy/PlayerAI.luau b/src/ServerStorage/Proxy/PlayerFightProxy/PlayerAI.luau index a0fd818..8304845 100644 --- a/src/ServerStorage/Proxy/PlayerFightProxy/PlayerAI.luau +++ b/src/ServerStorage/Proxy/PlayerFightProxy/PlayerAI.luau @@ -47,6 +47,7 @@ function PlayerAI.new(Player: Player, PlayerRole: TypeList.Character) self.Player = Player self.ExecutingState = false self.PlayerControling = false + self.ExecutingBehaviour = nil self.LastTime = 0 self.Counter = 0 @@ -63,6 +64,12 @@ function PlayerAI.new(Player: Player, PlayerRole: TypeList.Character) self.PlayerControlCon = RE_PlayerAI.OnServerEvent:Connect(function(Player: Player, ControlState: boolean) if Player ~= self.Player then return end self.PlayerControling = ControlState + + -- 打断正在执行的行为 + if self.ExecutingBehaviour then + self.ExecutingBehaviour:StopExecute() + self.ExecutingState = false + end end) return self end @@ -72,6 +79,7 @@ function PlayerAI:Update() local maxPriority = 0 local bestBehaviour = nil local bestCheckData = nil + self.ExecutingBehaviour = nil for _, behaviour in self.BehaviourList do local priority, checkData = behaviour:Check(self.Character) @@ -83,6 +91,7 @@ function PlayerAI:Update() end if bestBehaviour and maxPriority > 0 then + self.ExecutingBehaviour = bestBehaviour bestBehaviour:Execute(bestCheckData) end end @@ -134,6 +143,8 @@ end function PlayerAI:ClearAllBehaviour() for _, behaviour in self.BehaviourList do behaviour:Destroy() end self.BehaviourList = {} + self.ExecutingBehaviour = nil + self.ExecutingState = false end -- 销毁AI diff --git a/src/ServerStorage/Proxy/PlayerFightProxy/init.luau b/src/ServerStorage/Proxy/PlayerFightProxy/init.luau index 8bf3b1a..2c016b3 100644 --- a/src/ServerStorage/Proxy/PlayerFightProxy/init.luau +++ b/src/ServerStorage/Proxy/PlayerFightProxy/init.luau @@ -157,10 +157,11 @@ function PlayerFightProxy:UpdatePlayerFightData(Player: Player) -- 针对百分比特殊属性直接进行计算修改 if AttributesData["hpRate"] then - AttributesData["hp"] = math.floor(AttributesData["hp"] * AttributesData["hpRate"] / 100) + AttributesData["hp"] = math.floor(AttributesData["hp"] * (1 + AttributesData["hpRate"] / 100)) + AttributesData["maxhp"] = AttributesData["hp"] end - if AttributesData["atkRate"] then - AttributesData["atk"] = math.floor(AttributesData["atk"] * AttributesData["atkRate"] / 100) + if AttributesData["attackRate"] then + AttributesData["attack"] = math.floor(AttributesData["attack"] * (1 + AttributesData["attackRate"] / 100)) end -- 更新玩家属性 diff --git a/src/ServerStorage/Proxy/PlayerInfoProxy.luau b/src/ServerStorage/Proxy/PlayerInfoProxy.luau index 4959fdc..cb1b0cd 100644 --- a/src/ServerStorage/Proxy/PlayerInfoProxy.luau +++ b/src/ServerStorage/Proxy/PlayerInfoProxy.luau @@ -218,6 +218,9 @@ end function PlayerInfoProxy:ChangeItemCount(Player: Player, ItemId: number, ItemCount: number) if not Player or not ItemId or not ItemCount then warn('添加物品失败: ' , Player.Name, ItemId, ItemCount) return end + -- 转换为字符串,存储为字典 + local ItemId = tostring(ItemId) + local playerInfoData = ArchiveProxy.pData[Player.UserId][STORE_NAME].Items local isNew = false if not playerInfoData[ItemId] then @@ -231,15 +234,15 @@ function PlayerInfoProxy:ChangeItemCount(Player: Player, ItemId: number, ItemCou local ItemsFolder = GetPlayerInfoFolder(Player):FindFirstChild("Items") if isNew then CreateInfoInstance(Player, ItemsFolder, ItemId, "NumberValue") - else - ChangeInfoInstance(Player, ItemsFolder, ItemId, playerInfoData[ItemId]) end + ChangeInfoInstance(Player, ItemsFolder, ItemId, playerInfoData[ItemId]) return true, playerInfoData[ItemId] end -- 判断是否拥有足够物品 function PlayerInfoProxy:HasEnoughItem(Player: Player, ItemId: number, ItemCount: number) if not Player or not ItemId or not ItemCount then warn('添加物品失败: ' .. Player.Name .. ' ' .. ItemId .. ' ' .. ItemCount) return end + ItemId = tostring(ItemId) local playerInfoData = ArchiveProxy.pData[Player.UserId][STORE_NAME].Items if not playerInfoData[ItemId] then return false end return playerInfoData[ItemId] >= ItemCount @@ -248,6 +251,7 @@ end -- 获取物品数量 function PlayerInfoProxy:GetItemCount(Player: Player, ItemId: number) if not Player or not ItemId then warn('获取物品数量失败: ' , Player.Name, ItemId) return end + ItemId = tostring(ItemId) local playerInfoData = ArchiveProxy.pData[Player.UserId][STORE_NAME].Items if not playerInfoData[ItemId] then return 0 end return playerInfoData[ItemId] @@ -271,6 +275,7 @@ function PlayerInfoProxy:MakeForge(Player: Player, EquipmentId: number, Count: n -- 判断金钱是否足够 local MaxForgeLv = Utils:GetMaxIdFromJson(JsonForge) local ShouldCostMoney = 0 + local ForgeItemId = 2 for i = 1, Count do -- 读取等级并且做最大值限制 local ForgeLv = ArchiveProxy.pData[Player.UserId][STORE_NAME]["Stats"].forge @@ -278,6 +283,8 @@ function PlayerInfoProxy:MakeForge(Player: Player, EquipmentId: number, Count: n local ForgeData = Utils:GetIdDataFromJson(JsonForge, ForgeLv) ShouldCostMoney = ShouldCostMoney + ForgeData["cost"][2] + -- 临时写的,其实没啥必要 + ForgeItemId = ForgeData["cost"][1] if ForgeLv > MaxForgeLv then ForgeLv = MaxForgeLv @@ -285,12 +292,12 @@ function PlayerInfoProxy:MakeForge(Player: Player, EquipmentId: number, Count: n ForgeLv = ForgeLv + 1 end end - if not self:HasEnoughItem(Player, 1, ShouldCostMoney) then + if not self:HasEnoughItem(Player, ForgeItemId, ShouldCostMoney) then RE_PlayerTip:FireClient(Player, "金钱不足") return end -- 扣钱 - self:ChangeItemCount(Player, 1, -ShouldCostMoney) + self:ChangeItemCount(Player, ForgeItemId, -ShouldCostMoney) -- 生成对应装备 local ResultData = {} diff --git a/src/StarterPlayerScripts/ClientMain/Helper.luau b/src/StarterPlayerScripts/ClientMain/Helper.luau index 9350299..d76e0fc 100644 --- a/src/StarterPlayerScripts/ClientMain/Helper.luau +++ b/src/StarterPlayerScripts/ClientMain/Helper.luau @@ -17,7 +17,8 @@ UserInputService.InputBegan:Connect(function(input, gameProcessed) elseif input.KeyCode == Enum.KeyCode.J then RE_PlayerHelper:FireServer("AddItem", {1, 1000}) elseif input.KeyCode == Enum.KeyCode.K then - RE_UpgradeAttributes:FireServer(1) + -- RE_UpgradeAttributes:FireServer(1) + RE_PlayerHelper:FireServer("AddItem", {2, 1000}) elseif input.KeyCode == Enum.KeyCode.L then RE_UpgradeAttributes:FireServer(2) elseif input.KeyCode == Enum.KeyCode.M then diff --git a/src/StarterPlayerScripts/UI/Windows/EquipmentDetailWindow/AttributeShow.luau b/src/StarterPlayerScripts/UI/Windows/EquipmentDetailWindow/AttributeShow.luau index f8fad43..db855fa 100644 --- a/src/StarterPlayerScripts/UI/Windows/EquipmentDetailWindow/AttributeShow.luau +++ b/src/StarterPlayerScripts/UI/Windows/EquipmentDetailWindow/AttributeShow.luau @@ -24,17 +24,20 @@ end function AttributeShow:Refresh() local attributeData = Utils:GetSpecialKeyDataFromJson(JsonAttributes, "effectAttribute", self.Data.attribute) + + -- 基础属性icon显示 if attributeData.id == 14 or attributeData.id == 15 or attributeData.id == 16 then self.Variables._imgIcon.Image = Localization:GetImageData(attributeData.iconId) else self.Variables._imgIcon:Destroy() self.Variables._imgIcon = nil end - self.Variables._tmpAttributeName.Text = self.Data.attribute - self.UIRoot.LayoutOrder = 1000 - attributeData.id + + self.Variables._tmpAttributeName.Text = Localization:GetLanguageData(attributeData.nameId) + self.UIRoot.LayoutOrder = attributeData.id if attributeData.type == 2 then - self.Variables._tmpValue.Text = string.format("%.2f%%", self.Data.value / 100) + self.Variables._tmpValue.Text = string.format("%.2f", self.Data.value / 100) else self.Variables._tmpValue.Text = self.Data.value end diff --git a/src/StarterPlayerScripts/UI/Windows/EquipmentDetailWindow/init.luau b/src/StarterPlayerScripts/UI/Windows/EquipmentDetailWindow/init.luau index 093bac8..87213cc 100644 --- a/src/StarterPlayerScripts/UI/Windows/EquipmentDetailWindow/init.luau +++ b/src/StarterPlayerScripts/UI/Windows/EquipmentDetailWindow/init.luau @@ -187,7 +187,7 @@ function EquipmentDetailWindow:OnOpenWindow() -- 装备信息 local equipmentInstance = Utils:GetPlayerDataFolder(LocalPlayer):FindFirstChild("Equipment"):FindFirstChild(self.Data.EquipmentUniqueId) - local equipmentData = Utils:GetIdDataFromJson(JsonItemProp, equipmentInstance:GetAttribute("id")) + local equipmentData = Utils:GetIdDataFromJson(JsonItemProp, equipmentInstance:GetAttribute("orgId")) self.Variables["_imgIcon"].Image = Localization:GetImageData(equipmentData.iconId) self.Variables["_tmpName"].Text = Localization:GetLanguageData(equipmentData.textId) self.Variables["_tmpQuality"].Text = equipmentInstance:GetAttribute("quality") diff --git a/src/StarterPlayerScripts/UI/Windows/GetEquipmentsWindow/AttributeShow.luau b/src/StarterPlayerScripts/UI/Windows/GetEquipmentsWindow/AttributeShow.luau index 4f41d03..e0348a4 100644 --- a/src/StarterPlayerScripts/UI/Windows/GetEquipmentsWindow/AttributeShow.luau +++ b/src/StarterPlayerScripts/UI/Windows/GetEquipmentsWindow/AttributeShow.luau @@ -23,11 +23,11 @@ end function AttributeShow:Refresh() local attributeData = Utils:GetSpecialKeyDataFromJson(JsonAttributes, "effectAttribute", self.Data.attribute) - self.Variables._tmpAttributeName.Text = self.Data.attribute - self.UIRoot.LayoutOrder = 1000 - attributeData.id + self.Variables._tmpAttributeName.Text = Localization:GetLanguageData(attributeData.nameId) + self.UIRoot.LayoutOrder = attributeData.id if attributeData.type == 2 then - self.Variables._tmpValue.Text = string.format("%.2f%%", self.Data.value / 100) + self.Variables._tmpValue.Text = string.format("%.2f", self.Data.value / 100) else self.Variables._tmpValue.Text = self.Data.value end diff --git a/src/StarterPlayerScripts/UI/Windows/GetEquipmentsWindow/init.luau b/src/StarterPlayerScripts/UI/Windows/GetEquipmentsWindow/init.luau index 09a9b93..263daff 100644 --- a/src/StarterPlayerScripts/UI/Windows/GetEquipmentsWindow/init.luau +++ b/src/StarterPlayerScripts/UI/Windows/GetEquipmentsWindow/init.luau @@ -105,8 +105,8 @@ function GetEquipmentsWindow:Init(UIManager: table, Data: table?) ["_tmpQuality"] = 0, ["__listEquipments"] = 0, - ["_btnLeft"] = 0, - ["_btnRight"] = 0, + -- ["_btnLeft"] = 0, + -- ["_btnRight"] = 0, ["_btnClose"] = 0, } @@ -130,8 +130,8 @@ end function GetEquipmentsWindow:ShowDetail(equipmentInstance: Instance) local equipmentData = Utils:GetIdDataFromJson(JsonItemProp, equipmentInstance:GetAttribute("orgId")) - self.Variables["_tmpName"].Text = Localization:GetLanguageData(equipmentData.textId) - self.Variables["_tmpQuality"].Text = equipmentInstance:GetAttribute("quality") + self.Variables["_tmpName"].Text = Localization:GetColoredTextByQuality(equipmentInstance:GetAttribute("quality"), Localization:GetLanguageData(equipmentData.nameId)) + self.Variables["_tmpQuality"].Text = Localization:GetColoredEquipmentQualityDesc(equipmentInstance:GetAttribute("quality")) local baseAttributes = equipmentInstance:FindFirstChild("attributes"):GetAttributes() local exAttributes = equipmentInstance:FindFirstChild("exAttributes"):GetAttributes() diff --git a/src/StarterPlayerScripts/UI/Windows/MainWindow/init.luau b/src/StarterPlayerScripts/UI/Windows/MainWindow/init.luau index 63b3e82..83039a6 100644 --- a/src/StarterPlayerScripts/UI/Windows/MainWindow/init.luau +++ b/src/StarterPlayerScripts/UI/Windows/MainWindow/init.luau @@ -18,6 +18,57 @@ local LocalPlayer = game:GetService("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 function GetOperationCount(currentValue: number, currentLevel: number, configData: table, costIndex: number?) + local remainingMoney = currentValue + local forgeCount = 0 + local currentForgeLevel = currentLevel + local maxId = Utils:GetMaxIdFromJson(configData) + + -- 循环计算每次锻造的消耗,直到货币不足 + while remainingMoney > 0 do + local cost = GetIncrementalCost(currentForgeLevel, configData, costIndex) + if cost <= 0 then break end -- 无效消耗 + if remainingMoney >= cost then + remainingMoney = remainingMoney - cost + forgeCount = forgeCount + 1 + currentForgeLevel = currentForgeLevel + 1 + else + break -- 货币不足,停止计算 + end + end + + return forgeCount +end + +-------------------------------------------------------------------------------- + local MainWindow = {} MainWindow.__index = MainWindow setmetatable(MainWindow, {__index = UIWindow}) @@ -40,6 +91,9 @@ function MainWindow:Init(UIManager: table, Data: table?) ["_goForgeFill"] = 0, ["_tmpForgeMoney"] = 0, ["_tmpForgeTime"] = 0, + + -- 锻造临时红点 + ["_tmpRedCreate"] = 0, } self.UIRootName = "ui_w_main" self.UIParentName = UIEnums.UIParent.UIRoot @@ -75,26 +129,31 @@ end -- 手动点击按钮,挑战boss function MainWindow:OnClickChallengeBoss() RE_ChallengeBoss:FireServer() - self.Variables["_btnChallengeBoss"].Visible = false end function MainWindow:SetShowForgeBar(nowForgeTime : number, moneyValue: number) local maxForgeId = Utils:GetMaxIdFromJson(JsonForge) - local forgeTime = nowForgeTime > maxForgeId and maxForgeId or nowForgeTime - local forgeData = Utils:GetIdDataFromJson(JsonForge, forgeTime) + local forgeTime = math.min(nowForgeTime, maxForgeId) + + -- 获取当前锻造次数对应的消耗(用于UI显示) + local currentCost = GetIncrementalCost(forgeTime, JsonForge, 2) + + -- 进度条 - 使用当前锻造次数对应的消耗显示 + self.Variables["_goForgeFill"].Size = UDim2.new(math.min(moneyValue / currentCost, 1), 0, 1, 0) + self.Variables["_tmpForgeMoney"].Text = string.format("%d/%d", moneyValue, currentCost) - -- 进度条 - self.Variables["_goForgeFill"].Size = UDim2.new(math.min(moneyValue / forgeData.cost[2], 1), 0, 1, 0) - self.Variables["_tmpForgeMoney"].Text = string.format("%d/%d", moneyValue, forgeData.cost[2]) - - -- 右上角红点 - local timeRecorder = math.ceil(moneyValue / forgeData.cost[2]) + -- 右上角红点 - 使用累加消耗计算可以进行的操作次数 + local timeRecorder = GetOperationCount(moneyValue, forgeTime, JsonForge, 2) if timeRecorder > 0 then self.Variables["_tmpForgeTime"].Visible = true + self.Variables["_tmpRedCreate"].Visible = true self.Variables["_tmpForgeTime"].Text = timeRecorder + self.Variables["_goForgeFill"].BackgroundColor3 = Color3.fromRGB(255, 255, 0) else self.Variables["_tmpForgeTime"].Visible = false + self.Variables["_tmpRedCreate"].Visible = false + self.Variables["_goForgeFill"].BackgroundColor3 = Color3.fromRGB(12, 227, 209) end end @@ -147,7 +206,7 @@ function MainWindow:OnOpenWindow() local forgeInstance = playerInfoFolder:WaitForChild("Stats"):WaitForChild("forge") local itemFolder = playerInfoFolder:WaitForChild("Items") - local hasItem = playerInfoFolder:FindFirstChild("2") + local hasItem = itemFolder:FindFirstChild("2") -- 设置锻造货币变动链接 local function SetForgeCostChange() @@ -161,25 +220,25 @@ function MainWindow:OnOpenWindow() -- 后续变动设置 SetForgeCostChange() -- 初始化设置 - -- ceshi1 self:SetShowForgeBar(forgeInstance.Value, hasItem.Value) else -- 没有货币时监听设置 local addCon addCon = itemFolder.ChildAdded:Connect(function(child) if child.Name == "2" then - self:SetShowForgeBar(forgeInstance.Value, child.Value) + hasItem = child + self:SetShowForgeBar(forgeInstance.Value, hasItem.Value) addCon:Disconnect() addCon = nil - + -- 设置显示 SetForgeCostChange() end end) table.insert(self.Connections, addCon) + -- 初始化设置 + self:SetShowForgeBar(forgeInstance.Value, 0) end end - - return MainWindow \ No newline at end of file