更新
装备特征后端功能
This commit is contained in:
parent
5d0f85c31a
commit
170d8d28b2
Binary file not shown.
BIN
excel/cha.xlsx
BIN
excel/cha.xlsx
Binary file not shown.
Binary file not shown.
BIN
excel/level.xlsx
BIN
excel/level.xlsx
Binary file not shown.
@ -1,4 +1,4 @@
|
|||||||
[
|
[
|
||||||
{"id":20000,"type":1,"icon":1,"behaviourName":"Attack","upgradeCost":[30000,5,0],"upgradeValue":[10,0],"recycle":[30000,0]},
|
{"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]}
|
{"id":20001,"type":1,"icon":1,"behaviourName":"SwordWave","upgradeCost":[30000,5,10],"upgradeValue":[10,200],"recycle":[30000,100],"isInPool":1}
|
||||||
]
|
]
|
@ -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}
|
||||||
]
|
]
|
@ -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":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","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","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","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","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","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","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","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","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","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","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","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","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","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","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","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}
|
||||||
]
|
]
|
@ -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":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":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":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":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":[50005,1]},
|
{"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":[50006,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":[50007,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":[]},
|
||||||
{"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":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":[50009,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":[]},
|
||||||
{"id":10,"type":2,"timeLimit":60,"atkBonus":155,"hpBonus":155,"wave":[[30,1000,1]],"finishRewards":[50010,1]},
|
{"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":[50011,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":[50012,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":[]},
|
||||||
{"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":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":[50014,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":[]},
|
||||||
{"id":15,"type":2,"timeLimit":60,"atkBonus":197,"hpBonus":197,"wave":[[30,1000,1]],"finishRewards":[50015,1]},
|
{"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":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":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":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":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":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":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":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":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":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":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":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":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":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":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":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":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":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":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":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":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":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":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":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":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":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":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":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":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]}
|
||||||
]
|
]
|
@ -21,6 +21,8 @@ end
|
|||||||
function Utils:GetPlayerDataFolder(Player: Player)
|
function Utils:GetPlayerDataFolder(Player: Player)
|
||||||
local pData = PlayerDataFolder:FindFirstChild(Player.UserId)
|
local pData = PlayerDataFolder:FindFirstChild(Player.UserId)
|
||||||
if pData then return pData end
|
if pData then return pData end
|
||||||
|
--打印堆栈
|
||||||
|
print(debug.traceback())
|
||||||
warn("玩家数据不存在: " .. Player.Name)
|
warn("玩家数据不存在: " .. Player.Name)
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
@ -71,7 +73,7 @@ end
|
|||||||
function Utils:GetIdDataFromJson(JsonData: table, id: number)
|
function Utils:GetIdDataFromJson(JsonData: table, id: number)
|
||||||
-- 遍历JsonData,查找id字段等于目标id的项
|
-- 遍历JsonData,查找id字段等于目标id的项
|
||||||
for _, item in ipairs(JsonData) do
|
for _, item in ipairs(JsonData) do
|
||||||
if item.id == id then
|
if item.id == tonumber(id) then
|
||||||
return Utils:DeepCopyTable(item)
|
return Utils:DeepCopyTable(item)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -33,7 +33,7 @@ end
|
|||||||
|
|
||||||
-- 初始化玩家
|
-- 初始化玩家
|
||||||
function AbilityProxy:InitPlayer(Player: Player)
|
function AbilityProxy:InitPlayer(Player: Player)
|
||||||
local pData = Utils:GetPlayerDataFolder(Player)
|
local pData = Utils:WaitPlayerDataFolder(Player)
|
||||||
if not pData then return end
|
if not pData then return end
|
||||||
local AbilityFolder = Utils:CreateFolder("Ability", pData)
|
local AbilityFolder = Utils:CreateFolder("Ability", pData)
|
||||||
|
|
||||||
@ -60,7 +60,7 @@ function AbilityProxy:AddAbility(Player: Player, AbilityId: number)
|
|||||||
local AbilityData = Utils:GetIdDataFromJson(JsonAbility, AbilityId)
|
local AbilityData = Utils:GetIdDataFromJson(JsonAbility, AbilityId)
|
||||||
if not AbilityData then return end
|
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 = {}
|
local ResultData = {}
|
||||||
for key, value in pairs(AbilityData) do
|
for key, value in pairs(AbilityData) do
|
||||||
@ -75,7 +75,7 @@ function AbilityProxy:AddAbility(Player: Player, AbilityId: number)
|
|||||||
-- 记录穿戴的装备UniqueId
|
-- 记录穿戴的装备UniqueId
|
||||||
ResultData.wearing = 0
|
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))
|
local AbilityInstance = Utils:CreateDataInstance(Player, UniqueId, ResultData, GetPlayerAbilityFolder(Player))
|
||||||
return Utils:DeepCopyTable(ResultData), AbilityInstance
|
return Utils:DeepCopyTable(ResultData), AbilityInstance
|
||||||
end
|
end
|
||||||
@ -142,15 +142,11 @@ end
|
|||||||
-- 穿戴技能
|
-- 穿戴技能
|
||||||
function AbilityProxy:WearAbility(Player: Player, AbilityUniqueId: number, EquipmentUniqueId: number)
|
function AbilityProxy:WearAbility(Player: Player, AbilityUniqueId: number, EquipmentUniqueId: number)
|
||||||
local pData = Utils:GetPlayerDataFolder(Player)
|
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]
|
local UniqueData = ArchiveProxy.pData[Player.UserId][STORE_NAME]["Ability"][AbilityUniqueId]
|
||||||
if not UniqueData then return end
|
if not UniqueData then print("UniqueData不存在", Player.Name, AbilityUniqueId) return end
|
||||||
|
|
||||||
-- 获取装备实例存储数据
|
|
||||||
local EquipmentData = ArchiveProxy.pData[Player.UserId][EquipmentUniqueId]
|
|
||||||
if not EquipmentData then return end
|
|
||||||
|
|
||||||
-- 检查是否有技能实例
|
-- 检查是否有技能实例
|
||||||
local AbilityInstance = GetPlayerAbilityFolder(Player):FindFirstChild(AbilityUniqueId)
|
local AbilityInstance = GetPlayerAbilityFolder(Player):FindFirstChild(AbilityUniqueId)
|
||||||
@ -162,26 +158,26 @@ function AbilityProxy:WearAbility(Player: Player, AbilityUniqueId: number, Equip
|
|||||||
|
|
||||||
-- 遍历技能查看现在穿了几个
|
-- 遍历技能查看现在穿了几个
|
||||||
local wearingCount = 0
|
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
|
if AbilityData.wearing == EquipmentUniqueId then
|
||||||
wearingCount = wearingCount + 1
|
wearingCount = wearingCount + 1
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if EquipmentData.abilitySlotNumber <= 0 then
|
if EquipmentData.maxAbilityNumber <= 0 then
|
||||||
RE_PlayerTip:FireClient(Player, "装备没有技能槽位")
|
RE_PlayerTip:FireClient(Player, "装备没有技能槽位")
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
-- 检查槽位数量是否充足
|
-- 检查槽位数量是否充足
|
||||||
if wearingCount >= EquipmentData.abilitySlotNumber then
|
if wearingCount >= EquipmentData.maxAbilityNumber then
|
||||||
RE_PlayerTip:FireClient(Player, "装备已满技能槽位")
|
RE_PlayerTip:FireClient(Player, "装备已满技能槽位")
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
-- 穿戴技能
|
-- 穿戴技能
|
||||||
UniqueData.wearing = EquipmentUniqueId
|
UniqueData.wearing = EquipmentUniqueId
|
||||||
AbilityInstance:SetAttribute("Wearing", EquipmentUniqueId)
|
AbilityInstance:SetAttribute("wearing", EquipmentUniqueId)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- 获取技能等级数值(对应技能调用这个函数获取数值)
|
-- 获取技能等级数值(对应技能调用这个函数获取数值)
|
||||||
@ -208,7 +204,7 @@ function AbilityProxy:GetRandomAbilityId(ExceptIdList: table)
|
|||||||
local candidateIds = {}
|
local candidateIds = {}
|
||||||
for _, ability in ipairs(JsonAbility) do
|
for _, ability in ipairs(JsonAbility) do
|
||||||
local id = ability.id
|
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)
|
table.insert(candidateIds, id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -236,6 +232,20 @@ function AbilityProxy:GetPlayerWearingAbilityData(Player: Player)
|
|||||||
end
|
end
|
||||||
return wearingAbilityUniqueId, behaviourNames
|
return wearingAbilityUniqueId, behaviourNames
|
||||||
end
|
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
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
-- 获取技能属性
|
-- 获取技能属性
|
||||||
|
@ -70,7 +70,7 @@ local function SaveData(Player: Player): boolean
|
|||||||
end
|
end
|
||||||
|
|
||||||
if Success then
|
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
|
else
|
||||||
warn(("DataManager: User %s's data failed to save."):format(Player.Name))
|
warn(("DataManager: User %s's data failed to save."):format(Player.Name))
|
||||||
end
|
end
|
||||||
|
@ -35,7 +35,7 @@ end
|
|||||||
|
|
||||||
-- 初始化玩家
|
-- 初始化玩家
|
||||||
function BookProxy:InitPlayer(Player: Player)
|
function BookProxy:InitPlayer(Player: Player)
|
||||||
local pData = Utils:GetPlayerDataFolder(Player)
|
local pData = Utils:WaitPlayerDataFolder(Player)
|
||||||
if not pData then return end
|
if not pData then return end
|
||||||
local BookFolder = Utils:CreateFolder("Book", pData)
|
local BookFolder = Utils:CreateFolder("Book", pData)
|
||||||
|
|
||||||
|
@ -11,6 +11,7 @@ local Rng = require(ReplicatedStorage.Tools.Rng)
|
|||||||
local ArchiveProxy = require(ServerStorage.Proxy.ArchiveProxy)
|
local ArchiveProxy = require(ServerStorage.Proxy.ArchiveProxy)
|
||||||
local PlayerInfoProxy = require(ServerStorage.Proxy.PlayerInfoProxy)
|
local PlayerInfoProxy = require(ServerStorage.Proxy.PlayerInfoProxy)
|
||||||
local PlayerFightProxy = require(ServerStorage.Proxy.PlayerFightProxy)
|
local PlayerFightProxy = require(ServerStorage.Proxy.PlayerFightProxy)
|
||||||
|
local AbilityProxy = require(ServerStorage.Proxy.AbilityProxy)
|
||||||
|
|
||||||
--> Json
|
--> Json
|
||||||
local JsonEquipment = require(ReplicatedStorage.Json.Equipment)
|
local JsonEquipment = require(ReplicatedStorage.Json.Equipment)
|
||||||
@ -58,7 +59,7 @@ end
|
|||||||
|
|
||||||
-- 初始化玩家
|
-- 初始化玩家
|
||||||
function EquipmentProxy:InitPlayer(Player: Player)
|
function EquipmentProxy:InitPlayer(Player: Player)
|
||||||
local pData = Utils:GetPlayerDataFolder(Player)
|
local pData = Utils:WaitPlayerDataFolder(Player)
|
||||||
if not pData then return end
|
if not pData then return end
|
||||||
Utils:CreateFolder("Equipment", pData)
|
Utils:CreateFolder("Equipment", pData)
|
||||||
|
|
||||||
@ -197,10 +198,18 @@ function EquipmentProxy:AddEquipment(Player: Player, EquipmentId: number)
|
|||||||
end
|
end
|
||||||
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 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)
|
local abilityNumber = rng:NextInteger(0, maxAbilityNumber)
|
||||||
ResultData.maxAbilityNumber = abilityNumber
|
ResultData.maxAbilityNumber = abilityNumber
|
||||||
if abilityNumber > 0 then
|
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)
|
local BookProxy = require(ServerStorage.Proxy.BookProxy)
|
||||||
BookProxy:AddBook(Player, EquipmentId, UniqueId)
|
BookProxy:AddBook(Player, EquipmentId, UniqueId)
|
||||||
@ -377,8 +383,34 @@ function EquipmentProxy:GetPlayerAttributes(Player: Player)
|
|||||||
Utils:TableSafeAddTableValue(AttributesData, EquipmentData.elements)
|
Utils:TableSafeAddTableValue(AttributesData, EquipmentData.elements)
|
||||||
-- 增加装备元素抗性
|
-- 增加装备元素抗性
|
||||||
Utils:TableSafeAddTableValue(AttributesData, EquipmentData.elementDef)
|
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
|
||||||
|
end
|
||||||
|
end
|
||||||
|
-- print("结果属性表", AttributesData)
|
||||||
return AttributesData
|
return AttributesData
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ end
|
|||||||
|
|
||||||
-- 初始化玩家
|
-- 初始化玩家
|
||||||
function GemProxy:InitPlayer(Player: Player)
|
function GemProxy:InitPlayer(Player: Player)
|
||||||
local pData = Utils:GetPlayerDataFolder(Player)
|
local pData = Utils:WaitPlayerDataFolder(Player)
|
||||||
if not pData then return end
|
if not pData then return end
|
||||||
local GemFolder = Utils:CreateFolder("Gem", pData)
|
local GemFolder = Utils:CreateFolder("Gem", pData)
|
||||||
|
|
||||||
|
@ -127,7 +127,7 @@ function MobsProxy:CleanPlayerMobs(Player: Player)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function MobsProxy:InitPlayer(Player: Player)
|
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
|
if not pData then warn("Player Data not found", Player.Name) return end
|
||||||
Utils:CreateFolder(Player.UserId, MobsFolder)
|
Utils:CreateFolder(Player.UserId, MobsFolder)
|
||||||
|
|
||||||
@ -139,9 +139,7 @@ function MobsProxy:GetPlayerMobs(Player: Player)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function MobsProxy:OnPlayerRemoving(Player: Player)
|
function MobsProxy:OnPlayerRemoving(Player: Player)
|
||||||
local pData = Utils:GetPlayerDataFolder(Player)
|
local MobsFolder = GetPlayerMobsFolder(Player)
|
||||||
if not pData then return end
|
|
||||||
local MobsFolder = pData:FindFirstChild("Mobs"):FindFirstChild(Player.UserId)
|
|
||||||
if MobsFolder then MobsFolder:Destroy() end
|
if MobsFolder then MobsFolder:Destroy() end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -87,7 +87,7 @@ end
|
|||||||
|
|
||||||
-- 初始化玩家
|
-- 初始化玩家
|
||||||
function PlayerInfoProxy:InitPlayer(Player: Player)
|
function PlayerInfoProxy:InitPlayer(Player: Player)
|
||||||
local pData = Utils:GetPlayerDataFolder(Player)
|
local pData = Utils:WaitPlayerDataFolder(Player)
|
||||||
if not pData then return end
|
if not pData then return end
|
||||||
local PlayerInfoFolder = Utils:CreateFolder("PlayerInfo", pData)
|
local PlayerInfoFolder = Utils:CreateFolder("PlayerInfo", pData)
|
||||||
local StatsFolder = Utils:CreateFolder("Stats", PlayerInfoFolder)
|
local StatsFolder = Utils:CreateFolder("Stats", PlayerInfoFolder)
|
||||||
@ -97,6 +97,7 @@ function PlayerInfoProxy:InitPlayer(Player: Player)
|
|||||||
-- 新玩家数据初始化
|
-- 新玩家数据初始化
|
||||||
local isNew = false
|
local isNew = false
|
||||||
if not ArchiveProxy.pData[Player.UserId][STORE_NAME] then
|
if not ArchiveProxy.pData[Player.UserId][STORE_NAME] then
|
||||||
|
print("新玩家数据初始化", Player.UserId)
|
||||||
ArchiveProxy.pData[Player.UserId][STORE_NAME] = {}
|
ArchiveProxy.pData[Player.UserId][STORE_NAME] = {}
|
||||||
ArchiveProxy.pData[Player.UserId][STORE_NAME].Stats = {}
|
ArchiveProxy.pData[Player.UserId][STORE_NAME].Stats = {}
|
||||||
ArchiveProxy.pData[Player.UserId][STORE_NAME].Items = {}
|
ArchiveProxy.pData[Player.UserId][STORE_NAME].Items = {}
|
||||||
@ -151,6 +152,7 @@ end
|
|||||||
-- 玩家属性升级
|
-- 玩家属性升级
|
||||||
function PlayerInfoProxy:UpgradeAttribute(Player: Player, AttributeId: number)
|
function PlayerInfoProxy:UpgradeAttribute(Player: Player, AttributeId: number)
|
||||||
if not Player or not AttributeId then warn('升级属性失败: ', Player.Name, AttributeId) return end
|
if not Player or not AttributeId then warn('升级属性失败: ', Player.Name, AttributeId) return end
|
||||||
|
local AttributeId = tostring(AttributeId)
|
||||||
|
|
||||||
local AttributesUpgradeFolder = GetPlayerInfoFolder(Player):FindFirstChild("AttributesUpgrade")
|
local AttributesUpgradeFolder = GetPlayerInfoFolder(Player):FindFirstChild("AttributesUpgrade")
|
||||||
|
|
||||||
@ -341,6 +343,7 @@ function PlayerInfoProxy:GetPlayerUpgradeAttributes(Player: Player)
|
|||||||
local playerInfoData = ArchiveProxy.pData[Player.UserId][STORE_NAME]
|
local playerInfoData = ArchiveProxy.pData[Player.UserId][STORE_NAME]
|
||||||
local attributes = {}
|
local attributes = {}
|
||||||
for AttributeId, AttributeLv in playerInfoData.AttributesUpgrade do
|
for AttributeId, AttributeLv in playerInfoData.AttributesUpgrade do
|
||||||
|
local AttributeId = tonumber(AttributeId)
|
||||||
local attributeData = Utils:GetIdDataFromJson(JsonAttributesUpgrade, AttributeId)
|
local attributeData = Utils:GetIdDataFromJson(JsonAttributesUpgrade, AttributeId)
|
||||||
-- attributes[attributeData["effectAttribute"]] = attributeData["lvAdd"][1] + (AttributeLv - 1) * attributeData["lvAdd"][2]
|
-- attributes[attributeData["effectAttribute"]] = attributeData["lvAdd"][1] + (AttributeLv - 1) * attributeData["lvAdd"][2]
|
||||||
local effectAttribute = attributeData["effectAttribute"]
|
local effectAttribute = attributeData["effectAttribute"]
|
||||||
|
@ -21,46 +21,46 @@ local function getCharacterRoot()
|
|||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|
||||||
player.CharacterAdded:Connect(function(character)
|
-- player.CharacterAdded:Connect(function(character)
|
||||||
local root = getCharacterRoot()
|
-- local root = getCharacterRoot()
|
||||||
if root then
|
-- if root then
|
||||||
cameraCenter = Vector3.new(root.Position.X, 0, root.Position.Z)
|
-- cameraCenter = Vector3.new(root.Position.X, 0, root.Position.Z)
|
||||||
end
|
-- end
|
||||||
end)
|
-- end)
|
||||||
|
|
||||||
RunService.RenderStepped:Connect(function()
|
-- RunService.RenderStepped:Connect(function()
|
||||||
local root = getCharacterRoot()
|
-- local root = getCharacterRoot()
|
||||||
if root then
|
-- if root then
|
||||||
if not cameraCenter then
|
-- if not cameraCenter then
|
||||||
cameraCenter = Vector3.new(root.Position.X, 0, root.Position.Z)
|
-- cameraCenter = Vector3.new(root.Position.X, 0, root.Position.Z)
|
||||||
end
|
-- end
|
||||||
|
|
||||||
-- 只考虑X/Z平面
|
-- -- 只考虑X/Z平面
|
||||||
local delta = Vector2.new(root.Position.X - cameraCenter.X, root.Position.Z - cameraCenter.Z)
|
-- local delta = Vector2.new(root.Position.X - cameraCenter.X, root.Position.Z - cameraCenter.Z)
|
||||||
local halfSize = DEADZONE_SIZE / 2
|
-- local halfSize = DEADZONE_SIZE / 2
|
||||||
|
|
||||||
-- 检查是否超出死区
|
-- -- 检查是否超出死区
|
||||||
local moveX, moveZ = 0, 0
|
-- local moveX, moveZ = 0, 0
|
||||||
if math.abs(delta.X) > halfSize.X then
|
-- if math.abs(delta.X) > halfSize.X then
|
||||||
moveX = delta.X - math.sign(delta.X) * halfSize.X
|
-- moveX = delta.X - math.sign(delta.X) * halfSize.X
|
||||||
end
|
-- end
|
||||||
if math.abs(delta.Y) > halfSize.Y then
|
-- if math.abs(delta.Y) > halfSize.Y then
|
||||||
moveZ = delta.Y - math.sign(delta.Y) * halfSize.Y
|
-- moveZ = delta.Y - math.sign(delta.Y) * halfSize.Y
|
||||||
end
|
-- end
|
||||||
|
|
||||||
-- 更新相机中心点
|
-- -- 更新相机中心点
|
||||||
cameraCenter = cameraCenter + Vector3.new(moveX, 0, moveZ)
|
-- cameraCenter = cameraCenter + Vector3.new(moveX, 0, moveZ)
|
||||||
|
|
||||||
-- 让lookAt点在相机中心点后方
|
-- -- 让lookAt点在相机中心点后方
|
||||||
local lookAt = cameraCenter - Vector3.new(-1, 0, 0) * SCREEN_OFFSET
|
-- local lookAt = cameraCenter - Vector3.new(-1, 0, 0) * SCREEN_OFFSET
|
||||||
local offset = Vector3.new(
|
-- local offset = Vector3.new(
|
||||||
-CAMERA_DISTANCE * math.cos(CAMERA_ANGLE),
|
-- -CAMERA_DISTANCE * math.cos(CAMERA_ANGLE),
|
||||||
CAMERA_HEIGHT,
|
-- CAMERA_HEIGHT,
|
||||||
0
|
-- 0
|
||||||
)
|
-- )
|
||||||
local cameraPos = lookAt + offset
|
-- local cameraPos = lookAt + offset
|
||||||
|
|
||||||
camera.CameraType = Enum.CameraType.Scriptable
|
-- camera.CameraType = Enum.CameraType.Scriptable
|
||||||
camera.CFrame = CFrame.new(cameraPos, lookAt)
|
-- camera.CFrame = CFrame.new(cameraPos, lookAt)
|
||||||
end
|
-- end
|
||||||
end)
|
-- end)
|
Loading…
x
Reference in New Issue
Block a user