diff --git a/excel/ability.xlsx b/excel/ability.xlsx index 0328664..daf3b44 100644 Binary files a/excel/ability.xlsx and b/excel/ability.xlsx differ diff --git a/excel/cha.xlsx b/excel/cha.xlsx index e3f569b..c6b70c7 100644 Binary files a/excel/cha.xlsx and b/excel/cha.xlsx differ diff --git a/excel/equipment.xlsx b/excel/equipment.xlsx index 3fc0f11..3f3c0b8 100644 Binary files a/excel/equipment.xlsx and b/excel/equipment.xlsx differ diff --git a/excel/level.xlsx b/excel/level.xlsx index a60ddb8..a22c35d 100644 Binary files a/excel/level.xlsx and b/excel/level.xlsx differ diff --git a/src/ReplicatedStorage/Json/Ability.json b/src/ReplicatedStorage/Json/Ability.json index d0bac1e..1660d97 100644 --- a/src/ReplicatedStorage/Json/Ability.json +++ b/src/ReplicatedStorage/Json/Ability.json @@ -1,4 +1,4 @@ [ -{"id":20000,"type":1,"icon":1,"behaviourName":"Attack","upgradeCost":[30000,5,0],"upgradeValue":[10,0],"recycle":[30000,0]}, -{"id":20001,"type":1,"icon":1,"behaviourName":"SwordWave","upgradeCost":[30000,5,10],"upgradeValue":[10,200],"recycle":[30000,100]} +{"id":20000,"type":1,"icon":1,"behaviourName":"Attack","upgradeCost":[30000,5,0],"upgradeValue":[10,0],"recycle":[30000,0],"isInPool":null}, +{"id":20001,"type":1,"icon":1,"behaviourName":"SwordWave","upgradeCost":[30000,5,10],"upgradeValue":[10,200],"recycle":[30000,100],"isInPool":1} ] \ No newline at end of file diff --git a/src/ReplicatedStorage/Json/Character.json b/src/ReplicatedStorage/Json/Character.json index f74367b..a7fefaf 100644 --- a/src/ReplicatedStorage/Json/Character.json +++ b/src/ReplicatedStorage/Json/Character.json @@ -1,3 +1,3 @@ [ -{"id":1,"name":1,"attack":40,"hp":600,"walkSpeed":10,"atkSpeed":100} +{"id":1,"name":1,"attack":40,"hp":600,"walkSpeed":15,"atkSpeed":100} ] \ No newline at end of file diff --git a/src/ReplicatedStorage/Json/Equipment.json b/src/ReplicatedStorage/Json/Equipment.json index 39c49f6..d096c0b 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,100,0,15,100,0,16,100,0],"modelName":"MCSword","recycle":100}, -{"id":40001,"type":1,"name":40001,"attributes":[14,100,0,15,100,0,16,100,0],"modelName":"Zeus","recycle":100}, -{"id":40002,"type":1,"name":40002,"attributes":[14,100,0,15,100,0,16,100,0],"modelName":"Zeus","recycle":100}, -{"id":40003,"type":1,"name":40003,"attributes":[14,100,0,15,100,0,16,100,0],"modelName":"Zeus","recycle":100}, -{"id":40004,"type":1,"name":40004,"attributes":[14,100,0,15,100,0,16,100,0],"modelName":"Zeus","recycle":100}, -{"id":40005,"type":1,"name":40005,"attributes":[14,100,0,15,100,0,16,100,0],"modelName":"Zeus","recycle":100}, -{"id":40006,"type":1,"name":40006,"attributes":[14,100,0,15,100,0,16,100,0],"modelName":"Zeus","recycle":100}, -{"id":40007,"type":1,"name":40007,"attributes":[14,100,0,15,100,0,16,100,0],"modelName":"Zeus","recycle":100}, -{"id":40008,"type":1,"name":40008,"attributes":[14,100,0,15,100,0,16,100,0],"modelName":"Zeus","recycle":100}, -{"id":40009,"type":1,"name":40009,"attributes":[14,100,0,15,100,0,16,100,0],"modelName":"Zeus","recycle":100}, -{"id":40010,"type":1,"name":40010,"attributes":[14,100,0,15,100,0,16,100,0],"modelName":"Zeus","recycle":100}, -{"id":40011,"type":1,"name":40011,"attributes":[14,100,0,15,100,0,16,100,0],"modelName":"Zeus","recycle":100}, -{"id":40012,"type":1,"name":40012,"attributes":[14,100,0,15,100,0,16,100,0],"modelName":"Zeus","recycle":100}, -{"id":40013,"type":1,"name":40013,"attributes":[14,100,0,15,100,0,16,100,0],"modelName":"Zeus","recycle":100}, -{"id":40014,"type":1,"name":40014,"attributes":[14,100,0,15,100,0,16,100,0],"modelName":"Zeus","recycle":100}, -{"id":40015,"type":1,"name":40015,"attributes":[14,100,0,15,100,0,16,100,0],"modelName":"Zeus","recycle":100} +{"id":40000,"type":1,"name":40000,"attributes":[14,100,0,15,100,0,16,100,0],"modelName":"MCSword","specialType":2,"specialRequire":20001,"specialActive":[14,25],"recycle":100}, +{"id":40001,"type":1,"name":40001,"attributes":[14,100,0,15,100,0,16,100,0],"modelName":"Zeus","specialType":1,"specialRequire":7,"specialActive":[14,25],"recycle":100}, +{"id":40002,"type":1,"name":40002,"attributes":[14,100,0,15,100,0,16,100,0],"modelName":"Zeus","specialType":1,"specialRequire":8,"specialActive":[14,25],"recycle":100}, +{"id":40003,"type":1,"name":40003,"attributes":[14,100,0,15,100,0,16,100,0],"modelName":"Zeus","specialType":1,"specialRequire":9,"specialActive":[14,25],"recycle":100}, +{"id":40004,"type":1,"name":40004,"attributes":[14,100,0,15,100,0,16,100,0],"modelName":"Zeus","specialType":1,"specialRequire":10,"specialActive":[14,25],"recycle":100}, +{"id":40005,"type":1,"name":40005,"attributes":[14,100,0,15,100,0,16,100,0],"modelName":"Zeus","specialType":1,"specialRequire":11,"specialActive":[14,25],"recycle":100}, +{"id":40006,"type":1,"name":40006,"attributes":[14,100,0,15,100,0,16,100,0],"modelName":"Zeus","specialType":1,"specialRequire":12,"specialActive":[14,25],"recycle":100}, +{"id":40007,"type":1,"name":40007,"attributes":[14,100,0,15,100,0,16,100,0],"modelName":"Zeus","specialType":1,"specialRequire":13,"specialActive":[14,25],"recycle":100}, +{"id":40008,"type":1,"name":40008,"attributes":[14,100,0,15,100,0,16,100,0],"modelName":"Zeus","specialType":1,"specialRequire":6,"specialActive":[14,25],"recycle":100}, +{"id":40009,"type":1,"name":40009,"attributes":[14,100,0,15,100,0,16,100,0],"modelName":"Zeus","specialType":1,"specialRequire":7,"specialActive":[14,25],"recycle":100}, +{"id":40010,"type":1,"name":40010,"attributes":[14,100,0,15,100,0,16,100,0],"modelName":"Zeus","specialType":1,"specialRequire":8,"specialActive":[14,25],"recycle":100}, +{"id":40011,"type":1,"name":40011,"attributes":[14,100,0,15,100,0,16,100,0],"modelName":"Zeus","specialType":1,"specialRequire":9,"specialActive":[14,25],"recycle":100}, +{"id":40012,"type":1,"name":40012,"attributes":[14,100,0,15,100,0,16,100,0],"modelName":"Zeus","specialType":1,"specialRequire":10,"specialActive":[14,25],"recycle":100}, +{"id":40013,"type":1,"name":40013,"attributes":[14,100,0,15,100,0,16,100,0],"modelName":"Zeus","specialType":1,"specialRequire":11,"specialActive":[14,25],"recycle":100}, +{"id":40014,"type":1,"name":40014,"attributes":[14,100,0,15,100,0,16,100,0],"modelName":"Zeus","specialType":1,"specialRequire":12,"specialActive":[14,25],"recycle":100}, +{"id":40015,"type":1,"name":40015,"attributes":[14,100,0,15,100,0,16,100,0],"modelName":"Zeus","specialType":1,"specialRequire":13,"specialActive":[14,25],"recycle":100} ] \ No newline at end of file diff --git a/src/ReplicatedStorage/Json/Level.json b/src/ReplicatedStorage/Json/Level.json index 2d35e32..37ab94a 100644 --- a/src/ReplicatedStorage/Json/Level.json +++ b/src/ReplicatedStorage/Json/Level.json @@ -2,51 +2,51 @@ {"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":100,"hpBonus":100,"wave":[[30,1,1],[10,1,1],[10,1,1],[10,1,1]],"finishRewards":[50002,1]}, {"id":3,"type":1,"timeLimit":null,"atkBonus":100,"hpBonus":100,"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":100,"hpBonus":100,"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":4,"type":1,"timeLimit":null,"atkBonus":100,"hpBonus":100,"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":5,"type":2,"timeLimit":60,"atkBonus":121,"hpBonus":121,"wave":[[30,1000,1]],"finishRewards":[50004,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":[]}, +{"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":[]}, +{"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":[]}, +{"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":[]}, +{"id":10,"type":2,"timeLimit":60,"atkBonus":155,"hpBonus":155,"wave":[[30,1000,1]],"finishRewards":[50005,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":[]}, +{"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":[]}, +{"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":[]}, +{"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":[]}, +{"id":15,"type":2,"timeLimit":60,"atkBonus":197,"hpBonus":197,"wave":[[30,1000,1]],"finishRewards":[50006,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":20,"type":2,"timeLimit":60,"atkBonus":252,"hpBonus":252,"wave":[[30,1000,1]],"finishRewards":[50007,1]}, {"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":25,"type":2,"timeLimit":60,"atkBonus":322,"hpBonus":322,"wave":[[30,1000,1]],"finishRewards":[50008,1]}, {"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":30,"type":2,"timeLimit":60,"atkBonus":411,"hpBonus":411,"wave":[[30,1000,1]],"finishRewards":[50009,1]}, {"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":35,"type":2,"timeLimit":60,"atkBonus":525,"hpBonus":525,"wave":[[30,1000,1]],"finishRewards":[50010,1]}, {"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":40,"type":2,"timeLimit":60,"atkBonus":670,"hpBonus":670,"wave":[[30,1000,1]],"finishRewards":[50011,1]}, {"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":45,"type":2,"timeLimit":60,"atkBonus":855,"hpBonus":855,"wave":[[30,1000,1]],"finishRewards":[50012,1]}, {"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":[]} +{"id":50,"type":2,"timeLimit":60,"atkBonus":1092,"hpBonus":1092,"wave":[[30,1000,1]],"finishRewards":[50013,1]} ] \ No newline at end of file diff --git a/src/ReplicatedStorage/Tools/Utils.luau b/src/ReplicatedStorage/Tools/Utils.luau index 4966c66..053a295 100644 --- a/src/ReplicatedStorage/Tools/Utils.luau +++ b/src/ReplicatedStorage/Tools/Utils.luau @@ -21,6 +21,8 @@ end function Utils:GetPlayerDataFolder(Player: Player) local pData = PlayerDataFolder:FindFirstChild(Player.UserId) if pData then return pData end + --打印堆栈 + print(debug.traceback()) warn("玩家数据不存在: " .. Player.Name) return nil end @@ -71,7 +73,7 @@ end function Utils:GetIdDataFromJson(JsonData: table, id: number) -- 遍历JsonData,查找id字段等于目标id的项 for _, item in ipairs(JsonData) do - if item.id == id then + if item.id == tonumber(id) then return Utils:DeepCopyTable(item) end end diff --git a/src/ServerStorage/Proxy/AbilityProxy.luau b/src/ServerStorage/Proxy/AbilityProxy.luau index 6598ec5..41acb4e 100644 --- a/src/ServerStorage/Proxy/AbilityProxy.luau +++ b/src/ServerStorage/Proxy/AbilityProxy.luau @@ -33,7 +33,7 @@ end -- 初始化玩家 function AbilityProxy:InitPlayer(Player: Player) - local pData = Utils:GetPlayerDataFolder(Player) + local pData = Utils:WaitPlayerDataFolder(Player) if not pData then return end local AbilityFolder = Utils:CreateFolder("Ability", pData) @@ -60,7 +60,7 @@ function AbilityProxy:AddAbility(Player: Player, AbilityId: number) local AbilityData = Utils:GetIdDataFromJson(JsonAbility, AbilityId) if not AbilityData then return end - local UniqueId = Utils:GenUniqueId(ArchiveProxy.pData[Player.UserId]) + local UniqueId = Utils:GenUniqueId(ArchiveProxy.pData[Player.UserId][STORE_NAME]["Ability"]) -- 配置表内容 local ResultData = {} for key, value in pairs(AbilityData) do @@ -75,7 +75,7 @@ function AbilityProxy:AddAbility(Player: Player, AbilityId: number) -- 记录穿戴的装备UniqueId ResultData.wearing = 0 - ArchiveProxy.pData[Player.UserId][UniqueId] = ResultData + ArchiveProxy.pData[Player.UserId][STORE_NAME]["Ability"][UniqueId] = ResultData local AbilityInstance = Utils:CreateDataInstance(Player, UniqueId, ResultData, GetPlayerAbilityFolder(Player)) return Utils:DeepCopyTable(ResultData), AbilityInstance end @@ -142,15 +142,11 @@ end -- 穿戴技能 function AbilityProxy:WearAbility(Player: Player, AbilityUniqueId: number, EquipmentUniqueId: number) local pData = Utils:GetPlayerDataFolder(Player) - if not pData then return end + if not pData then print("pData不存在", Player.Name) return end -- 获取技能实例存储数据 - local UniqueData = ArchiveProxy.pData[Player.UserId][AbilityUniqueId] - if not UniqueData then return end - - -- 获取装备实例存储数据 - local EquipmentData = ArchiveProxy.pData[Player.UserId][EquipmentUniqueId] - if not EquipmentData then return end + local UniqueData = ArchiveProxy.pData[Player.UserId][STORE_NAME]["Ability"][AbilityUniqueId] + if not UniqueData then print("UniqueData不存在", Player.Name, AbilityUniqueId) return end -- 检查是否有技能实例 local AbilityInstance = GetPlayerAbilityFolder(Player):FindFirstChild(AbilityUniqueId) @@ -162,26 +158,26 @@ function AbilityProxy:WearAbility(Player: Player, AbilityUniqueId: number, Equip -- 遍历技能查看现在穿了几个 local wearingCount = 0 - for _, AbilityData in ArchiveProxy.pData[Player.UserId] do + for _, AbilityData in ArchiveProxy.pData[Player.UserId][STORE_NAME]["Ability"] do if AbilityData.wearing == EquipmentUniqueId then wearingCount = wearingCount + 1 end end - if EquipmentData.abilitySlotNumber <= 0 then + if EquipmentData.maxAbilityNumber <= 0 then RE_PlayerTip:FireClient(Player, "装备没有技能槽位") return end -- 检查槽位数量是否充足 - if wearingCount >= EquipmentData.abilitySlotNumber then + if wearingCount >= EquipmentData.maxAbilityNumber then RE_PlayerTip:FireClient(Player, "装备已满技能槽位") return end -- 穿戴技能 UniqueData.wearing = EquipmentUniqueId - AbilityInstance:SetAttribute("Wearing", EquipmentUniqueId) + AbilityInstance:SetAttribute("wearing", EquipmentUniqueId) end -- 获取技能等级数值(对应技能调用这个函数获取数值) @@ -208,7 +204,7 @@ function AbilityProxy:GetRandomAbilityId(ExceptIdList: table) local candidateIds = {} for _, ability in ipairs(JsonAbility) do local id = ability.id - if not table.find(ExceptIdList, id) then + if not table.find(ExceptIdList, id) and ability.isInPool then table.insert(candidateIds, id) end end @@ -236,6 +232,20 @@ function AbilityProxy:GetPlayerWearingAbilityData(Player: Player) end return wearingAbilityUniqueId, behaviourNames end + +-- 获取对应装备槽位上的技能 +function AbilityProxy:GetPlayerAbilityByEquipmentUniqueId(Player: Player, EquipmentUniqueId: number) + local wearingUniqueId, wearingOrgId = {}, {} + local abilityFolder = GetPlayerAbilityFolder(Player) + for _, AbilityInstance in abilityFolder:GetChildren() do + if AbilityInstance:GetAttribute("wearing") == EquipmentUniqueId then + table.insert(wearingUniqueId, AbilityInstance:GetAttribute("uniqueId")) + table.insert(wearingOrgId, AbilityInstance:GetAttribute("orgId")) + end + end + return wearingUniqueId, wearingOrgId +end + -------------------------------------------------------------------------------- -- 获取技能属性 diff --git a/src/ServerStorage/Proxy/ArchiveProxy.luau b/src/ServerStorage/Proxy/ArchiveProxy.luau index 687dbb0..2f7e832 100644 --- a/src/ServerStorage/Proxy/ArchiveProxy.luau +++ b/src/ServerStorage/Proxy/ArchiveProxy.luau @@ -70,7 +70,7 @@ local function SaveData(Player: Player): boolean end if Success then - print(("DataManager: User %s's data saved successfully."):format(Player.Name)) + print(("DataManager: User %s's data saved successfully."):format(Player.Name), DataToSave) else warn(("DataManager: User %s's data failed to save."):format(Player.Name)) end diff --git a/src/ServerStorage/Proxy/BookProxy.luau b/src/ServerStorage/Proxy/BookProxy.luau index 5e91f13..cd76937 100644 --- a/src/ServerStorage/Proxy/BookProxy.luau +++ b/src/ServerStorage/Proxy/BookProxy.luau @@ -35,7 +35,7 @@ end -- 初始化玩家 function BookProxy:InitPlayer(Player: Player) - local pData = Utils:GetPlayerDataFolder(Player) + local pData = Utils:WaitPlayerDataFolder(Player) if not pData then return end local BookFolder = Utils:CreateFolder("Book", pData) diff --git a/src/ServerStorage/Proxy/EquipmentProxy.luau b/src/ServerStorage/Proxy/EquipmentProxy.luau index 9e219e7..07a95c6 100644 --- a/src/ServerStorage/Proxy/EquipmentProxy.luau +++ b/src/ServerStorage/Proxy/EquipmentProxy.luau @@ -11,6 +11,7 @@ local Rng = require(ReplicatedStorage.Tools.Rng) local ArchiveProxy = require(ServerStorage.Proxy.ArchiveProxy) local PlayerInfoProxy = require(ServerStorage.Proxy.PlayerInfoProxy) local PlayerFightProxy = require(ServerStorage.Proxy.PlayerFightProxy) +local AbilityProxy = require(ServerStorage.Proxy.AbilityProxy) --> Json local JsonEquipment = require(ReplicatedStorage.Json.Equipment) @@ -58,7 +59,7 @@ end -- 初始化玩家 function EquipmentProxy:InitPlayer(Player: Player) - local pData = Utils:GetPlayerDataFolder(Player) + local pData = Utils:WaitPlayerDataFolder(Player) if not pData then return end Utils:CreateFolder("Equipment", pData) @@ -197,10 +198,18 @@ function EquipmentProxy:AddEquipment(Player: Player, EquipmentId: number) end end + ------------------------------------------------------------ + + ArchiveProxy.pData[Player.UserId][STORE_NAME][UniqueId] = ResultData + local equipmentInstance = Utils:CreateDataInstance(Player, UniqueId, ResultData, GetPlayerEquipmentFolder(Player)) + + ------------------------------------------------------------ + -- 下面逻辑会找Instance实例,所以放在之后执行逻辑 + -- 随机生成技能槽位数量 local AbilityProxy = require(ServerStorage.Proxy.AbilityProxy) - local maxAbilityNumber = PlayerInfoProxy:GetPlayerInfo(Player).abilityNumber or 0 + local maxAbilityNumber = PlayerInfoProxy:GetPlayerInfo(Player)["AttributesUpgrade"]["11"] or 0 local abilityNumber = rng:NextInteger(0, maxAbilityNumber) ResultData.maxAbilityNumber = abilityNumber if abilityNumber > 0 then @@ -230,9 +239,6 @@ function EquipmentProxy:AddEquipment(Player: Player, EquipmentId: number) ------------------------------------------------------------ - ArchiveProxy.pData[Player.UserId][STORE_NAME][UniqueId] = ResultData - local equipmentInstance = Utils:CreateDataInstance(Player, UniqueId, ResultData, GetPlayerEquipmentFolder(Player)) - -- 添加图鉴记录 local BookProxy = require(ServerStorage.Proxy.BookProxy) BookProxy:AddBook(Player, EquipmentId, UniqueId) @@ -377,8 +383,34 @@ function EquipmentProxy:GetPlayerAttributes(Player: Player) Utils:TableSafeAddTableValue(AttributesData, EquipmentData.elements) -- 增加装备元素抗性 Utils:TableSafeAddTableValue(AttributesData, EquipmentData.elementDef) + + -- print("属性表", AttributesData) + -- 计算特殊词条加成是否激活 + if EquipmentData.specialType then + + local isActive = false + -- 属性类型加成 + if EquipmentData.specialType == 1 then + local attributeData = Utils:GetIdDataFromJson(JsonAttributes, EquipmentData.specialRequire) + -- 根据配置的id转换一下 + if AttributesData[attributeData.effectAttribute] then isActive = true end + -- 技能类型加成 + elseif EquipmentData.specialType == 2 then + local wearingAbilityUniqueId, wearingOrgId = AbilityProxy:GetPlayerAbilityByEquipmentUniqueId(Player, EquipmentData.id) + print("穿戴技能", wearingOrgId, EquipmentData.specialRequire) + if table.find(wearingOrgId, EquipmentData.specialRequire) then isActive = true end + -- 晶石类型加成 + elseif EquipmentData.specialType == 3 then + + end + if isActive then + local newAddAttribute = Utils:GetIdDataFromJson(JsonAttributes, EquipmentData.specialActive[1]) + Utils:TableSafeAddValue(AttributesData, newAddAttribute.effectAttribute, EquipmentData.specialActive[2]) + end + end end end + -- print("结果属性表", AttributesData) return AttributesData end diff --git a/src/ServerStorage/Proxy/GemProxy.luau b/src/ServerStorage/Proxy/GemProxy.luau index 58afa71..8fc47ba 100644 --- a/src/ServerStorage/Proxy/GemProxy.luau +++ b/src/ServerStorage/Proxy/GemProxy.luau @@ -34,7 +34,7 @@ end -- 初始化玩家 function GemProxy:InitPlayer(Player: Player) - local pData = Utils:GetPlayerDataFolder(Player) + local pData = Utils:WaitPlayerDataFolder(Player) if not pData then return end local GemFolder = Utils:CreateFolder("Gem", pData) diff --git a/src/ServerStorage/Proxy/MobsProxy/init.luau b/src/ServerStorage/Proxy/MobsProxy/init.luau index 40191a3..df05089 100644 --- a/src/ServerStorage/Proxy/MobsProxy/init.luau +++ b/src/ServerStorage/Proxy/MobsProxy/init.luau @@ -127,7 +127,7 @@ function MobsProxy:CleanPlayerMobs(Player: Player) end function MobsProxy:InitPlayer(Player: Player) - local pData = Utils:GetPlayerDataFolder(Player) + local pData = Utils:WaitPlayerDataFolder(Player) if not pData then warn("Player Data not found", Player.Name) return end Utils:CreateFolder(Player.UserId, MobsFolder) @@ -139,9 +139,7 @@ function MobsProxy:GetPlayerMobs(Player: Player) end function MobsProxy:OnPlayerRemoving(Player: Player) - local pData = Utils:GetPlayerDataFolder(Player) - if not pData then return end - local MobsFolder = pData:FindFirstChild("Mobs"):FindFirstChild(Player.UserId) + local MobsFolder = GetPlayerMobsFolder(Player) if MobsFolder then MobsFolder:Destroy() end end diff --git a/src/ServerStorage/Proxy/PlayerInfoProxy.luau b/src/ServerStorage/Proxy/PlayerInfoProxy.luau index f76bd84..02bef0e 100644 --- a/src/ServerStorage/Proxy/PlayerInfoProxy.luau +++ b/src/ServerStorage/Proxy/PlayerInfoProxy.luau @@ -87,7 +87,7 @@ end -- 初始化玩家 function PlayerInfoProxy:InitPlayer(Player: Player) - local pData = Utils:GetPlayerDataFolder(Player) + local pData = Utils:WaitPlayerDataFolder(Player) if not pData then return end local PlayerInfoFolder = Utils:CreateFolder("PlayerInfo", pData) local StatsFolder = Utils:CreateFolder("Stats", PlayerInfoFolder) @@ -97,6 +97,7 @@ function PlayerInfoProxy:InitPlayer(Player: Player) -- 新玩家数据初始化 local isNew = false if not ArchiveProxy.pData[Player.UserId][STORE_NAME] then + print("新玩家数据初始化", Player.UserId) ArchiveProxy.pData[Player.UserId][STORE_NAME] = {} ArchiveProxy.pData[Player.UserId][STORE_NAME].Stats = {} ArchiveProxy.pData[Player.UserId][STORE_NAME].Items = {} @@ -151,6 +152,7 @@ end -- 玩家属性升级 function PlayerInfoProxy:UpgradeAttribute(Player: Player, AttributeId: number) if not Player or not AttributeId then warn('升级属性失败: ', Player.Name, AttributeId) return end + local AttributeId = tostring(AttributeId) local AttributesUpgradeFolder = GetPlayerInfoFolder(Player):FindFirstChild("AttributesUpgrade") @@ -341,6 +343,7 @@ function PlayerInfoProxy:GetPlayerUpgradeAttributes(Player: Player) local playerInfoData = ArchiveProxy.pData[Player.UserId][STORE_NAME] local attributes = {} for AttributeId, AttributeLv in playerInfoData.AttributesUpgrade do + local AttributeId = tonumber(AttributeId) local attributeData = Utils:GetIdDataFromJson(JsonAttributesUpgrade, AttributeId) -- attributes[attributeData["effectAttribute"]] = attributeData["lvAdd"][1] + (AttributeLv - 1) * attributeData["lvAdd"][2] local effectAttribute = attributeData["effectAttribute"] diff --git a/src/StarterPlayerScripts/ClientMain/Camera.client.luau b/src/StarterPlayerScripts/ClientMain/Camera.client.luau index 633aa9b..33f6d40 100644 --- a/src/StarterPlayerScripts/ClientMain/Camera.client.luau +++ b/src/StarterPlayerScripts/ClientMain/Camera.client.luau @@ -21,46 +21,46 @@ local function getCharacterRoot() return nil end -player.CharacterAdded:Connect(function(character) - local root = getCharacterRoot() - if root then - cameraCenter = Vector3.new(root.Position.X, 0, root.Position.Z) - end -end) +-- player.CharacterAdded:Connect(function(character) +-- local root = getCharacterRoot() +-- if root then +-- cameraCenter = Vector3.new(root.Position.X, 0, root.Position.Z) +-- end +-- end) -RunService.RenderStepped:Connect(function() - local root = getCharacterRoot() - if root then - if not cameraCenter then - cameraCenter = Vector3.new(root.Position.X, 0, root.Position.Z) - end +-- RunService.RenderStepped:Connect(function() +-- local root = getCharacterRoot() +-- if root then +-- if not cameraCenter then +-- cameraCenter = Vector3.new(root.Position.X, 0, root.Position.Z) +-- end - -- 只考虑X/Z平面 - local delta = Vector2.new(root.Position.X - cameraCenter.X, root.Position.Z - cameraCenter.Z) - local halfSize = DEADZONE_SIZE / 2 +-- -- 只考虑X/Z平面 +-- local delta = Vector2.new(root.Position.X - cameraCenter.X, root.Position.Z - cameraCenter.Z) +-- local halfSize = DEADZONE_SIZE / 2 - -- 检查是否超出死区 - local moveX, moveZ = 0, 0 - if math.abs(delta.X) > halfSize.X then - moveX = delta.X - math.sign(delta.X) * halfSize.X - end - if math.abs(delta.Y) > halfSize.Y then - moveZ = delta.Y - math.sign(delta.Y) * halfSize.Y - end +-- -- 检查是否超出死区 +-- local moveX, moveZ = 0, 0 +-- if math.abs(delta.X) > halfSize.X then +-- moveX = delta.X - math.sign(delta.X) * halfSize.X +-- end +-- if math.abs(delta.Y) > halfSize.Y then +-- moveZ = delta.Y - math.sign(delta.Y) * halfSize.Y +-- end - -- 更新相机中心点 - cameraCenter = cameraCenter + Vector3.new(moveX, 0, moveZ) +-- -- 更新相机中心点 +-- cameraCenter = cameraCenter + Vector3.new(moveX, 0, moveZ) - -- 让lookAt点在相机中心点后方 - local lookAt = cameraCenter - Vector3.new(-1, 0, 0) * SCREEN_OFFSET - local offset = Vector3.new( - -CAMERA_DISTANCE * math.cos(CAMERA_ANGLE), - CAMERA_HEIGHT, - 0 - ) - local cameraPos = lookAt + offset +-- -- 让lookAt点在相机中心点后方 +-- local lookAt = cameraCenter - Vector3.new(-1, 0, 0) * SCREEN_OFFSET +-- local offset = Vector3.new( +-- -CAMERA_DISTANCE * math.cos(CAMERA_ANGLE), +-- CAMERA_HEIGHT, +-- 0 +-- ) +-- local cameraPos = lookAt + offset - camera.CameraType = Enum.CameraType.Scriptable - camera.CFrame = CFrame.new(cameraPos, lookAt) - end -end) \ No newline at end of file +-- camera.CameraType = Enum.CameraType.Scriptable +-- camera.CFrame = CFrame.new(cameraPos, lookAt) +-- end +-- end) \ No newline at end of file