This commit is contained in:
gechangfu 2025-08-04 20:42:53 +08:00
parent c2d8059834
commit 384bf38b03
26 changed files with 576 additions and 124 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,6 +1,6 @@
[
{"id":1,"type":1,"effectAttribute":"attack","battleValue":[1,10],"iconId":1,"nameId":201},
{"id":2,"type":1,"effectAttribute":"hp","battleValue":[1,10],"iconId":2,"nameId":202},
{"id":1,"type":1,"effectAttribute":"attack","battleValue":[1,15],"iconId":1,"nameId":201},
{"id":2,"type":1,"effectAttribute":"hp","battleValue":[1,1],"iconId":2,"nameId":202},
{"id":3,"type":1,"effectAttribute":"swordAtk","battleValue":[1,10],"iconId":3,"nameId":203},
{"id":4,"type":2,"effectAttribute":"swordWearBase","battleValue":[1,10],"iconId":4,"nameId":204},
{"id":5,"type":2,"effectAttribute":"swordWearSpe","battleValue":[1,10],"iconId":5,"nameId":205},

View File

@ -1,13 +1,13 @@
[
{"id":1,"type":1,"effectAttribute":"attack","cost":[1,10,20],"lvAdd":[100,845],"battleValueLimit":[5,20],"maxLv":null},
{"id":2,"type":1,"effectAttribute":"hp","cost":[1,10,20],"lvAdd":[2000,845],"battleValueLimit":[5,20],"maxLv":null},
{"id":3,"type":1,"effectAttribute":"swordAtk","cost":[1,10,20],"lvAdd":[10,20],"battleValueLimit":[5,20],"maxLv":null},
{"id":4,"type":1,"effectAttribute":"swordWearBase","cost":[1,10,20],"lvAdd":[10,20],"battleValueLimit":[5,20],"maxLv":null},
{"id":5,"type":1,"effectAttribute":"swordWearSpe","cost":[1,10,20],"lvAdd":[10,20],"battleValueLimit":[5,20],"maxLv":null},
{"id":10,"type":2,"effectAttribute":"wearNumber","cost":[1,10,20],"lvAdd":[1,1],"battleValueLimit":[5,20],"maxLv":4},
{"id":11,"type":2,"effectAttribute":"abilityNumber","cost":[1,10,20],"lvAdd":[1,1],"battleValueLimit":[5,20],"maxLv":3},
{"id":12,"type":2,"effectAttribute":"extraAttributeNumber","cost":[1,10,20],"lvAdd":[1,1],"battleValueLimit":[5,20],"maxLv":3},
{"id":13,"type":2,"effectAttribute":"elementNumber","cost":[1,10,20],"lvAdd":[1,1],"battleValueLimit":[5,20],"maxLv":3},
{"id":14,"type":2,"effectAttribute":"elementDefNumber","cost":[1,10,20],"lvAdd":[1,1],"battleValueLimit":[5,20],"maxLv":3},
{"id":15,"type":2,"effectAttribute":"gemNumber","cost":[1,10,20],"lvAdd":[1,1],"battleValueLimit":[5,20],"maxLv":3}
{"id":1,"type":1,"effectAttribute":"attack","cost":[1,300,0],"lvAdd":[40,10985],"battleValueLimit":[5,20],"maxLv":null},
{"id":2,"type":1,"effectAttribute":"hp","cost":[1,300,0],"lvAdd":[600,10985],"battleValueLimit":[5,20],"maxLv":null},
{"id":3,"type":1,"effectAttribute":"swordAtk","cost":[1,300,0],"lvAdd":[10,0],"battleValueLimit":[5,20],"maxLv":null},
{"id":4,"type":1,"effectAttribute":"swordWearBase","cost":[1,300,0],"lvAdd":[10,0],"battleValueLimit":[5,20],"maxLv":null},
{"id":5,"type":1,"effectAttribute":"swordWearSpe","cost":[1,300,0],"lvAdd":[10,0],"battleValueLimit":[5,20],"maxLv":null},
{"id":10,"type":2,"effectAttribute":"wearNumber","cost":[1,300,0],"lvAdd":[1,1],"battleValueLimit":[5,20],"maxLv":4},
{"id":11,"type":2,"effectAttribute":"abilityNumber","cost":[1,300,0],"lvAdd":[1,1],"battleValueLimit":[5,20],"maxLv":3},
{"id":12,"type":2,"effectAttribute":"extraAttributeNumber","cost":[1,300,0],"lvAdd":[1,1],"battleValueLimit":[5,20],"maxLv":3},
{"id":13,"type":2,"effectAttribute":"elementNumber","cost":[1,300,0],"lvAdd":[1,1],"battleValueLimit":[5,20],"maxLv":3},
{"id":14,"type":2,"effectAttribute":"elementDefNumber","cost":[1,300,0],"lvAdd":[1,1],"battleValueLimit":[5,20],"maxLv":3},
{"id":15,"type":2,"effectAttribute":"gemNumber","cost":[1,300,0],"lvAdd":[1,1],"battleValueLimit":[5,20],"maxLv":3}
]

View File

@ -1,3 +1,3 @@
[
{"id":1,"name":1,"attack":100,"hp":2000,"walkSpeed":10,"atkSpeed":100}
{"id":1,"name":1,"attack":40,"hp":600,"walkSpeed":10,"atkSpeed":100}
]

View File

@ -1,5 +1,5 @@
[
{"id":1,"type":1,"name":1,"attack":20,"hp":1700,"walkSpeed":8,"attackSpeed":1,"model":"Thief"},
{"id":2,"type":1,"name":2,"attack":20,"hp":1700,"walkSpeed":8,"attackSpeed":1,"model":"Thief"},
{"id":1,"type":1,"name":1,"attack":10,"hp":150,"walkSpeed":8,"attackSpeed":1,"model":"Thief"},
{"id":2,"type":1,"name":2,"attack":10,"hp":150,"walkSpeed":8,"attackSpeed":1,"model":"Thief"},
{"id":1000,"type":2,"name":1000,"attack":120,"hp":1000,"walkSpeed":4,"attackSpeed":1,"model":"Thief"}
]

View File

@ -1,18 +1,18 @@
[
{"id":40000,"type":1,"name":40000,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10},
{"id":40001,"type":1,"name":40001,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10},
{"id":40002,"type":1,"name":40002,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10},
{"id":40003,"type":1,"name":40003,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10},
{"id":40004,"type":1,"name":40004,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10},
{"id":40005,"type":1,"name":40005,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10},
{"id":40006,"type":1,"name":40006,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10},
{"id":40007,"type":1,"name":40007,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10},
{"id":40008,"type":1,"name":40008,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10},
{"id":40009,"type":1,"name":40009,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10},
{"id":40010,"type":1,"name":40010,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10},
{"id":40011,"type":1,"name":40011,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10},
{"id":40012,"type":1,"name":40012,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10},
{"id":40013,"type":1,"name":40013,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10},
{"id":40014,"type":1,"name":40014,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10},
{"id":40015,"type":1,"name":40015,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10}
{"id":40000,"type":1,"name":40000,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":300},
{"id":40001,"type":1,"name":40001,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":300},
{"id":40002,"type":1,"name":40002,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":300},
{"id":40003,"type":1,"name":40003,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":300},
{"id":40004,"type":1,"name":40004,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":300},
{"id":40005,"type":1,"name":40005,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":300},
{"id":40006,"type":1,"name":40006,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":300},
{"id":40007,"type":1,"name":40007,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":300},
{"id":40008,"type":1,"name":40008,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":300},
{"id":40009,"type":1,"name":40009,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":300},
{"id":40010,"type":1,"name":40010,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":300},
{"id":40011,"type":1,"name":40011,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":300},
{"id":40012,"type":1,"name":40012,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":300},
{"id":40013,"type":1,"name":40013,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":300},
{"id":40014,"type":1,"name":40014,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":300},
{"id":40015,"type":1,"name":40015,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":300}
]

View File

@ -3,27 +3,50 @@
{"id":2,"cost":[2,20]},
{"id":3,"cost":[2,30]},
{"id":4,"cost":[2,40]},
{"id":5,"cost":[2,60]},
{"id":6,"cost":[2,80]},
{"id":7,"cost":[2,100]},
{"id":8,"cost":[2,120]},
{"id":9,"cost":[2,140]},
{"id":10,"cost":[2,160]},
{"id":11,"cost":[2,180]},
{"id":12,"cost":[2,200]},
{"id":13,"cost":[2,220]},
{"id":14,"cost":[2,240]},
{"id":15,"cost":[2,260]},
{"id":16,"cost":[2,280]},
{"id":17,"cost":[2,300]},
{"id":18,"cost":[2,320]},
{"id":19,"cost":[2,340]},
{"id":20,"cost":[2,360]},
{"id":21,"cost":[2,380]},
{"id":22,"cost":[2,400]},
{"id":23,"cost":[2,420]},
{"id":24,"cost":[2,440]},
{"id":25,"cost":[2,460]},
{"id":26,"cost":[2,480]},
{"id":27,"cost":[2,500]}
{"id":5,"cost":[2,50]},
{"id":6,"cost":[2,60]},
{"id":7,"cost":[2,70]},
{"id":8,"cost":[2,80]},
{"id":9,"cost":[2,90]},
{"id":10,"cost":[2,100]},
{"id":11,"cost":[2,110]},
{"id":12,"cost":[2,120]},
{"id":13,"cost":[2,130]},
{"id":14,"cost":[2,140]},
{"id":15,"cost":[2,150]},
{"id":16,"cost":[2,160]},
{"id":17,"cost":[2,170]},
{"id":18,"cost":[2,180]},
{"id":19,"cost":[2,190]},
{"id":20,"cost":[2,200]},
{"id":21,"cost":[2,210]},
{"id":22,"cost":[2,220]},
{"id":23,"cost":[2,230]},
{"id":24,"cost":[2,240]},
{"id":25,"cost":[2,250]},
{"id":26,"cost":[2,260]},
{"id":27,"cost":[2,270]},
{"id":28,"cost":[2,280]},
{"id":29,"cost":[2,290]},
{"id":30,"cost":[2,300]},
{"id":31,"cost":[2,310]},
{"id":32,"cost":[2,320]},
{"id":33,"cost":[2,330]},
{"id":34,"cost":[2,340]},
{"id":35,"cost":[2,350]},
{"id":36,"cost":[2,360]},
{"id":37,"cost":[2,370]},
{"id":38,"cost":[2,380]},
{"id":39,"cost":[2,390]},
{"id":40,"cost":[2,400]},
{"id":41,"cost":[2,410]},
{"id":42,"cost":[2,420]},
{"id":43,"cost":[2,430]},
{"id":44,"cost":[2,440]},
{"id":45,"cost":[2,450]},
{"id":46,"cost":[2,460]},
{"id":47,"cost":[2,470]},
{"id":48,"cost":[2,480]},
{"id":49,"cost":[2,490]},
{"id":50,"cost":[2,500]}
]

View File

@ -1,6 +1,6 @@
[
{"id":1,"type":1,"typeArgs":[],"quality":4,"iconId":1,"nameId":10001,"textId":20001,"buyPrice":[],"sellPrice":[],"use":[],"showPackage":null},
{"id":2,"type":1,"typeArgs":[],"quality":4,"iconId":2,"nameId":10002,"textId":20002,"buyPrice":[],"sellPrice":[],"use":[],"showPackage":null},
{"id":1,"type":1,"typeArgs":[],"quality":1,"iconId":1,"nameId":10001,"textId":20001,"buyPrice":[],"sellPrice":[],"use":[],"showPackage":null},
{"id":2,"type":1,"typeArgs":[],"quality":2,"iconId":2,"nameId":10002,"textId":20002,"buyPrice":[],"sellPrice":[],"use":[],"showPackage":null},
{"id":3,"type":1,"typeArgs":[],"quality":2,"iconId":3,"nameId":10003,"textId":20003,"buyPrice":[],"sellPrice":[],"use":[],"showPackage":null},
{"id":11,"type":1,"typeArgs":[],"quality":1,"iconId":11,"nameId":10011,"textId":20011,"buyPrice":[],"sellPrice":[],"use":[],"showPackage":null},
{"id":10000,"type":4,"typeArgs":[],"quality":1,"iconId":12,"nameId":20000,"textId":30000,"buyPrice":[11,10],"sellPrice":[11,10],"use":[],"showPackage":null},

View File

@ -1,52 +1,52 @@
[
{"id":1,"type":1,"timeLimit":null,"atkBonus":500,"hpBonus":500,"wave":[[10,1,1,50,1,1]],"finishRewards":[50000,1]},
{"id":2,"type":1,"timeLimit":null,"atkBonus":520,"hpBonus":520,"wave":[[10,1,1,50,1,1]],"finishRewards":[50001,1]},
{"id":3,"type":1,"timeLimit":null,"atkBonus":540,"hpBonus":540,"wave":[[10,1,1,50,1,1]],"finishRewards":[50002,1]},
{"id":4,"type":1,"timeLimit":null,"atkBonus":560,"hpBonus":560,"wave":[[10,1,1,50,1,1]],"finishRewards":[50003,1]},
{"id":5,"type":2,"timeLimit":60,"atkBonus":1050,"hpBonus":1050,"wave":[[10,1000,1]],"finishRewards":[50004,1]},
{"id":6,"type":1,"timeLimit":null,"atkBonus":600,"hpBonus":600,"wave":[[10,1,1,50,1,1]],"finishRewards":[50005,1]},
{"id":7,"type":1,"timeLimit":null,"atkBonus":620,"hpBonus":620,"wave":[[10,1,1,50,1,1]],"finishRewards":[50006,1]},
{"id":8,"type":1,"timeLimit":null,"atkBonus":640,"hpBonus":640,"wave":[[10,1,1,50,1,1]],"finishRewards":[50007,1]},
{"id":9,"type":1,"timeLimit":null,"atkBonus":660,"hpBonus":660,"wave":[[10,1,1,50,1,1]],"finishRewards":[50008,1]},
{"id":10,"type":2,"timeLimit":60,"atkBonus":1100,"hpBonus":1100,"wave":[[10,1000,1]],"finishRewards":[50009,1]},
{"id":11,"type":1,"timeLimit":null,"atkBonus":700,"hpBonus":700,"wave":[[10,1,1,50,1,1]],"finishRewards":[50010,1]},
{"id":12,"type":1,"timeLimit":null,"atkBonus":720,"hpBonus":720,"wave":[[10,1,1,50,1,1]],"finishRewards":[50011,1]},
{"id":13,"type":1,"timeLimit":null,"atkBonus":740,"hpBonus":740,"wave":[[10,1,1,50,1,1]],"finishRewards":[50012,1]},
{"id":14,"type":1,"timeLimit":null,"atkBonus":760,"hpBonus":760,"wave":[[10,1,1,50,1,1]],"finishRewards":[50013,1]},
{"id":15,"type":2,"timeLimit":60,"atkBonus":1150,"hpBonus":1150,"wave":[[10,1000,1]],"finishRewards":[50014,1]},
{"id":16,"type":1,"timeLimit":null,"atkBonus":800,"hpBonus":800,"wave":[[10,1,1,50,1,1]],"finishRewards":[50015,1]},
{"id":17,"type":1,"timeLimit":null,"atkBonus":820,"hpBonus":820,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":18,"type":1,"timeLimit":null,"atkBonus":840,"hpBonus":840,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":19,"type":1,"timeLimit":null,"atkBonus":860,"hpBonus":860,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":20,"type":2,"timeLimit":60,"atkBonus":1250,"hpBonus":1250,"wave":[[10,1000,1]],"finishRewards":[]},
{"id":21,"type":1,"timeLimit":null,"atkBonus":900,"hpBonus":900,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":22,"type":1,"timeLimit":null,"atkBonus":920,"hpBonus":920,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":23,"type":1,"timeLimit":null,"atkBonus":940,"hpBonus":940,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":24,"type":1,"timeLimit":null,"atkBonus":960,"hpBonus":960,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":25,"type":2,"timeLimit":60,"atkBonus":1350,"hpBonus":1350,"wave":[[10,1000,1]],"finishRewards":[]},
{"id":26,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":27,"type":1,"timeLimit":null,"atkBonus":1020,"hpBonus":1020,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":28,"type":1,"timeLimit":null,"atkBonus":1040,"hpBonus":1040,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":29,"type":1,"timeLimit":null,"atkBonus":1060,"hpBonus":1060,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":30,"type":2,"timeLimit":60,"atkBonus":1500,"hpBonus":1500,"wave":[[10,1000,1]],"finishRewards":[]},
{"id":31,"type":1,"timeLimit":null,"atkBonus":1100,"hpBonus":1100,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":32,"type":1,"timeLimit":null,"atkBonus":1120,"hpBonus":1120,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":33,"type":1,"timeLimit":null,"atkBonus":1140,"hpBonus":1140,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":34,"type":1,"timeLimit":null,"atkBonus":1160,"hpBonus":1160,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":35,"type":2,"timeLimit":60,"atkBonus":2000,"hpBonus":2000,"wave":[[10,1000,1]],"finishRewards":[]},
{"id":36,"type":1,"timeLimit":null,"atkBonus":1200,"hpBonus":1200,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":37,"type":1,"timeLimit":null,"atkBonus":1220,"hpBonus":1220,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":38,"type":1,"timeLimit":null,"atkBonus":1240,"hpBonus":1240,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":39,"type":1,"timeLimit":null,"atkBonus":1260,"hpBonus":1260,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":40,"type":2,"timeLimit":60,"atkBonus":2500,"hpBonus":2500,"wave":[[10,1000,1]],"finishRewards":[]},
{"id":41,"type":1,"timeLimit":null,"atkBonus":1300,"hpBonus":1300,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":42,"type":1,"timeLimit":null,"atkBonus":1320,"hpBonus":1320,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":43,"type":1,"timeLimit":null,"atkBonus":1340,"hpBonus":1340,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":44,"type":1,"timeLimit":null,"atkBonus":1360,"hpBonus":1360,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":45,"type":2,"timeLimit":60,"atkBonus":3000,"hpBonus":3000,"wave":[[10,1000,1]],"finishRewards":[]},
{"id":46,"type":1,"timeLimit":null,"atkBonus":1400,"hpBonus":1400,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":47,"type":1,"timeLimit":null,"atkBonus":1420,"hpBonus":1420,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":48,"type":1,"timeLimit":null,"atkBonus":1440,"hpBonus":1440,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":49,"type":1,"timeLimit":null,"atkBonus":1460,"hpBonus":1460,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":50,"type":2,"timeLimit":60,"atkBonus":3500,"hpBonus":3500,"wave":[[10,1000,1]],"finishRewards":[]}
{"id":1,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1],[10,1,1],[10,1,1],[10,1,1]],"finishRewards":[50000,1]},
{"id":2,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1],[10,1,1],[10,1,1],[10,1,1]],"finishRewards":[50001,1]},
{"id":3,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[50002,1]},
{"id":4,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[50003,1]},
{"id":5,"type":2,"timeLimit":60,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1000,1]],"finishRewards":[50004,1]},
{"id":6,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[50005,1]},
{"id":7,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[50006,1]},
{"id":8,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[50007,1]},
{"id":9,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[50008,1]},
{"id":10,"type":2,"timeLimit":60,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1000,1]],"finishRewards":[50009,1]},
{"id":11,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[50010,1]},
{"id":12,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[50011,1]},
{"id":13,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[50012,1]},
{"id":14,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[50013,1]},
{"id":15,"type":2,"timeLimit":60,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1000,1]],"finishRewards":[50014,1]},
{"id":16,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[50015,1]},
{"id":17,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]},
{"id":18,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]},
{"id":19,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]},
{"id":20,"type":2,"timeLimit":60,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1000,1]],"finishRewards":[]},
{"id":21,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]},
{"id":22,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]},
{"id":23,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]},
{"id":24,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]},
{"id":25,"type":2,"timeLimit":60,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1000,1]],"finishRewards":[]},
{"id":26,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]},
{"id":27,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]},
{"id":28,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]},
{"id":29,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]},
{"id":30,"type":2,"timeLimit":60,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1000,1]],"finishRewards":[]},
{"id":31,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]},
{"id":32,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]},
{"id":33,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]},
{"id":34,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]},
{"id":35,"type":2,"timeLimit":60,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1000,1]],"finishRewards":[]},
{"id":36,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]},
{"id":37,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]},
{"id":38,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]},
{"id":39,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]},
{"id":40,"type":2,"timeLimit":60,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1000,1]],"finishRewards":[]},
{"id":41,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]},
{"id":42,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]},
{"id":43,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]},
{"id":44,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]},
{"id":45,"type":2,"timeLimit":60,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1000,1]],"finishRewards":[]},
{"id":46,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]},
{"id":47,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]},
{"id":48,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]},
{"id":49,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1],[10,1,1,50,1,1]],"finishRewards":[]},
{"id":50,"type":2,"timeLimit":60,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1000,1]],"finishRewards":[]}
]

View File

@ -1,7 +1,7 @@
[
{"id":1,"key":"quality_bonus","intValue":null,"stringValue":null,"intArray":[100,125,150,200,275,375]},
{"id":2,"key":"level_get_bonus","intValue":null,"stringValue":null,"intArray":[5,2]},
{"id":3,"key":"mob_died_get","intValue":null,"stringValue":null,"intArray":[2,10]},
{"id":2,"key":"level_get_bonus","intValue":null,"stringValue":null,"intArray":[5,0]},
{"id":3,"key":"mob_died_get","intValue":null,"stringValue":null,"intArray":[2,4]},
{"id":4,"key":"default_weapon","intValue":null,"stringValue":"Sword","intArray":[]},
{"id":5,"key":"quality_show","intValue":null,"stringValue":null,"intArray":[101,102,103,104,105,106,107,108]}
]

View File

@ -32,6 +32,17 @@ local QUALITY_COLOR = {
[8] = Color3.fromRGB(255, 0, 255), -- 粉色
}
local QUALITY_BG_COLOR = {
[1] = Color3.fromRGB(255, 255, 255), -- 白色
[2] = Color3.fromRGB(66, 209, 66), -- 绿色
[3] = Color3.fromRGB(78, 164, 226), -- 蓝色
[4] = Color3.fromRGB(159, 71, 221), -- 紫色
[5] = Color3.fromRGB(223, 159, 71), -- 橙色
[6] = Color3.fromRGB(233, 78, 78), -- 红色
[7] = Color3.fromRGB(255, 215, 0), -- 金色
[8] = Color3.fromRGB(236, 77, 236), -- 粉色
}
-- 获取本地Json文件
function Localization:GetLocalizationJson()
if SystemLocaleId == "zh-CN" then
@ -99,4 +110,14 @@ function Localization:GetColoredEquipmentQualityDesc(Quality: number): string
return self:GetColoredTextByQuality(Quality, language)
end
-- 根据quality获取装备品质描述带颜色
function Localization:GetQualityBgColor(Quality: number): string
return QUALITY_BG_COLOR[Quality]
end
-- 获取黑色贴图
function Localization:GetBlackTexture(): string
return "rbxassetid://87376908468146"
end
return Localization

View File

@ -20,6 +20,7 @@ local JsonParam = require(ReplicatedStorage.Json.Param)
--> Events
local RE_PlayerTip = ReplicatedStorage.Events.RE_PlayerTip
local RE_WearEquipment = ReplicatedStorage.Events.RE_WearEquipment
local RE_RecycleEquipment = ReplicatedStorage.Events.RE_RecycleEquipment
--> Constants
local STORE_NAME = "Equipment"
@ -232,7 +233,7 @@ function EquipmentProxy:AddEquipment(Player: Player, EquipmentId: number)
return equipmentInstance
end
-- 回收装备
-- 回收单件装备
function EquipmentProxy:RecycleEquipment(Player: Player, EquipmentId: number)
local pData = Utils:GetPlayerDataFolder(Player)
if not pData then return end
@ -242,19 +243,34 @@ function EquipmentProxy:RecycleEquipment(Player: Player, EquipmentId: number)
-- 根据对应功能模块进行对应回收
local AbilityProxy = require(ServerStorage.Proxy.AbilityProxy)
AbilityProxy:RecycleAbility(Player, EquipmentData.id)
-- AbilityProxy:RecycleAbility(Player, EquipmentData.id)
local GemProxy = require(ServerStorage.Proxy.GemProxy)
GemProxy:RecycleGem(Player, EquipmentData.id)
-- GemProxy:RecycleGem(Player, EquipmentData.id)
-- 回收装备返回金币
-- TODO:处理关卡金币产出加成和词条加成
PlayerInfoProxy:ChangeItem(Player, 1, EquipmentData.recycle)
local rewardData = {["1"] = EquipmentData.recycle}
PlayerInfoProxy:ChangeItemCount(Player, 1, EquipmentData.recycle)
ArchiveProxy.pData[Player.UserId][STORE_NAME][EquipmentId] = nil
ArchiveProxy.pData[Player.UserId][EquipmentId] = nil
local EquipmentInstance = GetPlayerEquipmentFolder(Player):FindFirstChild(EquipmentId)
if EquipmentInstance then
EquipmentInstance:Destroy()
end
return rewardData
end
-- 批量回收装备
function EquipmentProxy:RecycleEquipmentList(Player: Player, EquipmentUniqueIds: table)
local rewardData = {}
for _, EquipmentUniqueId in EquipmentUniqueIds do
local newRewardData = EquipmentProxy:RecycleEquipment(Player, EquipmentUniqueId)
if newRewardData then
Utils:TableSafeAddTableValue(rewardData, newRewardData)
end
end
return rewardData
end
-- 穿戴装备
@ -381,6 +397,9 @@ RE_WearEquipment.OnServerEvent:Connect(function(Player: Player, EquipmentUniqueI
EquipmentProxy:WearEquipment(Player, EquipmentUniqueId, SlotId)
end
end)
RE_RecycleEquipment.OnServerEvent:Connect(function(Player: Player, EquipmentUniqueIds: table)
EquipmentProxy:RecycleEquipmentList(Player, EquipmentUniqueIds)
end)
return EquipmentProxy

View File

@ -325,7 +325,12 @@ function PlayerInfoProxy:GetPlayerUpgradeAttributes(Player: Player)
for AttributeId, AttributeLv in playerInfoData.AttributesUpgrade do
local attributeData = Utils:GetIdDataFromJson(JsonAttributesUpgrade, AttributeId)
-- attributes[attributeData["effectAttribute"]] = attributeData["lvAdd"][1] + (AttributeLv - 1) * attributeData["lvAdd"][2]
attributes[attributeData["effectAttribute"]] = math.floor(attributeData["lvAdd"][1] ^ (AttributeLv - 1) * attributeData["lvAdd"][2] / 10000)
local effectAttribute = attributeData["effectAttribute"]
if effectAttribute == "attack" or effectAttribute == "hp" then
attributes[effectAttribute] = math.floor(attributeData["lvAdd"][1] * (AttributeLv ^ (attributeData["lvAdd"][2] / 10000)) - attributeData["lvAdd"][1])
else
attributes[effectAttribute] = math.floor(attributeData["lvAdd"][1] ^ (AttributeLv - 1) * attributeData["lvAdd"][2] / 10000)
end
end
return attributes
end

View File

@ -0,0 +1,55 @@
local ItemShow = {}
ItemShow.__index = ItemShow
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Utils = require(ReplicatedStorage.Tools.Utils)
local Localization = require(ReplicatedStorage.Tools.Localization)
local JsonEquipment = require(ReplicatedStorage.Json.Equipment)
local JsonItemProp = require(ReplicatedStorage.Json.ItemProp)
function ItemShow:Init(data: table)
local self = {}
self.Data = data
self.Variables = {
["_btnClick"] = 0,
["_imgIcon"] = 0,
["_imgQuality"] = 0,
["_tmpName"] = 0,
["_tmpCount"] = 0,
}
self.Connections = {}
setmetatable(self, ItemShow)
return self
end
function ItemShow:Refresh()
local itemData = Utils:GetIdDataFromJson(JsonItemProp, self.Data.orgId)
self.Variables._imgIcon.Image = Localization:GetImageData(itemData.iconId)
self.Variables._imgQuality.BackgroundColor3 = Localization:GetQualityBgColor(itemData.quality)
self.Variables._tmpName.Text = Localization:GetLanguageData(itemData.nameId)
-- 数量
self.Variables._tmpCount.Text = self.Data.count or ""
end
function ItemShow:OnInitFinish()
-- TODO: 之后做点击详情弹窗
-- local con = self.Variables._btnClick.MouseButton1Click:Connect(function()
-- if self.Data == {} then
-- else
-- self.TopUI:ShowDetailData(self.Data.id)
-- end
-- end)
-- table.insert(self.Connections, con)
end
function ItemShow:Destroy()
for k, v in pairs(self) do
self[k] = nil
end
self = nil
end
return ItemShow

View File

@ -34,6 +34,7 @@ function ChaWindow:Init(UIManager: table, Data: table?)
["_imgIcon"] = 0,
["_btnClose"] = 0,
["_btnBgClose"] = 0,
["_btnRecycle"] = 0,
}
self.UIRootName = "ui_w_cha"
self.UIParentName = UIEnums.UIParent.UIRoot
@ -95,6 +96,20 @@ function ChaWindow:AddInstanceData(configInstance: Instance, Data: table?)
return data[parentName][secondName], parentName
end
function ChaWindow:RemoveInstanceData(configInstance: Instance, Data: table?)
for key, data in pairs(self.Data.Wearing) do
if data.instance == configInstance then
return tostring(key), "Wearing"
end
end
for key, data in pairs(self.Data.Package) do
if data.instance == configInstance then
return tostring(key), "Package"
end
end
return nil
end
function ChaWindow:OnOpenWindow()
UIWindow.OnOpenWindow(self)
@ -135,13 +150,12 @@ function ChaWindow:OnOpenWindow()
end)
local removeCon = DataFolder.ChildRemoved:Connect(function(child)
local parentName = self:RemoveInstanceData(child, data)
-- TODO: 这里清除逻辑不清晰,之后优化
local key, parentName = self:RemoveInstanceData(child, self.Data)
if parentName == "Wearing" then
local removeIndex = self.Variables["__listWeaing"]:RemoveData(data)
self.Data.Wearing[removeIndex] = {}
local removeIndex = self.Variables["__listWeaing"]:RemoveData(key)
else
local removeIndex = self.Variables["__listWeaponPackage"]:RemoveData(data)
self.Data.Package[removeIndex] = {}
local removeIndex = self.Variables["__listWeaponPackage"]:RemoveData(key)
end
end)
@ -151,11 +165,15 @@ function ChaWindow:OnOpenWindow()
local closeCon = self.Variables["_btnClose"].Activated:Connect(function()
self.UIManager:CloseWindow(script.Name)
end)
local recycleCon = self.Variables["_btnRecycle"].Activated:Connect(function()
self.UIManager:OpenWindow("RecycleWindow")
end)
table.insert(self.Connections, addCon)
table.insert(self.Connections, removeCon)
table.insert(self.Connections, bgCloseCon)
table.insert(self.Connections, closeCon)
table.insert(self.Connections, recycleCon)
self.Variables["__listWeaponPackage"]:AddComponent(PackageShow)
self.Variables["__listWeaing"]:AddComponent(WearingShow)

View File

@ -8,6 +8,9 @@ local Localization = require(ReplicatedStorage.Tools.Localization)
local Signal = require(ReplicatedStorage.Tools.Signal)
local JsonItemProp = require(ReplicatedStorage.Json.ItemProp)
local JsonEquipment = require(ReplicatedStorage.Json.Equipment)
local FolderEquipment = ReplicatedStorage:WaitForChild("Prefabs"):WaitForChild("Equipments")
function WeaponItem:Init(data: table)
local self = {}
@ -18,6 +21,7 @@ function WeaponItem:Init(data: table)
["_tmpQuality"] = 0,
["_btnClick"] = 0,
["_imgSelected"] = 0,
["_imgView"] = 0,
}
self.SignalConnections = {}
self.Connections = {}
@ -34,7 +38,27 @@ function WeaponItem:Refresh()
local itemData = Utils:GetIdDataFromJson(JsonItemProp, self.Data.OrgId)
self.Variables._imgIcon.Image = Localization:GetImageData(itemData.iconId)
self.Variables._tmpName.Text = Localization:GetLanguageData(itemData.nameId)
self.Variables._tmpQuality.Text = self.Data.Quality
self.Variables._tmpQuality.Text = Localization:GetColoredEquipmentQualityDesc(self.Data.Quality)
local equipmentData = Utils:GetIdDataFromJson(JsonEquipment, self.Data.OrgId)
-- 模型
local part = FolderEquipment:FindFirstChild(equipmentData.modelName):Clone()
part.Handle.Position = Vector3.new(0, 0, 0)
part.Handle.CFrame = CFrame.new(0, 0, 0) * CFrame.Angles(math.rad(90), 0, 0)
part.Parent = self.Variables["_imgView"]
self.Prefab = part
-- 相机
local viewportCamera = Instance.new("Camera")
self.Variables["_imgView"].CurrentCamera = viewportCamera
viewportCamera.Parent = self.Variables["_imgView"]
viewportCamera.CFrame = CFrame.new(Vector3.new(0, 0, 6), part.Handle.Position)
self.ViewCamera = viewportCamera
-- 如果图鉴没有,就设置成黑色的
if self.Data.Timestamp == 0 then
part.Handle.Mesh.TextureId = Localization:GetBlackTexture()
end
end
function WeaponItem:OnInitFinish()

View File

@ -15,11 +15,42 @@ local Signal = require(ReplicatedStorage.Tools.Signal)
--> Json
local JsonItemProp = require(ReplicatedStorage.Json.ItemProp)
local JsonForge = require(ReplicatedStorage.Json.Forge)
--> Events
local RE_Forge = ReplicatedStorage.Events.RE_Forge
local LocalPlayer = game.Players.LocalPlayer
--------------------------------------------------------------------------------
-- 简单的递增消耗计算函数
local function GetIncrementalCost(currentLevel: number, configData: table, costIndex: number?)
costIndex = costIndex or 2 -- 默认使用第二个消耗值
-- 获取配置表的最大ID
local maxId = Utils:GetMaxIdFromJson(configData)
-- 如果当前等级超过最大ID使用最大ID的消耗配置
local effectiveLevel = math.min(currentLevel, maxId)
-- 根据有效等级获取对应的消耗配置
local levelData = Utils:GetIdDataFromJson(configData, effectiveLevel)
if not levelData or not levelData.cost then
warn("无法获取等级", effectiveLevel, "的消耗配置")
return 0
end
-- 确保costIndex在有效范围内
if costIndex > #levelData.cost then
warn("消耗索引超出范围:", costIndex, "最大索引:", #levelData.cost)
return 0
end
return levelData.cost[costIndex]
end
--------------------------------------------------------------------------------
local CreateWindow = {}
@ -47,6 +78,8 @@ function CreateWindow:Init(UIManager: table, Data: table?)
["__moneyCoin"] = 0,
}
self.MultNumber = 1
self.MultArray = {1, 2, 5, 10}
self.MultIndex = 1
self.AutoRecycle = false
self.UIRootName = "ui_w_create"
self.UIParentName = UIEnums.UIParent.UIRoot
@ -69,8 +102,9 @@ function CreateWindow:ShowDetailInfo(data: table?)
end
function CreateWindow:OnClickMult()
self.MultNumber += 1
if self.MultNumber > 10 then self.MultNumber = 1 end
self.MultIndex += 1
if self.MultIndex > #self.MultArray then self.MultIndex = 1 end
self.MultNumber = self.MultArray[self.MultIndex]
self.Variables["_btnMult"].Text = "x" .. self.MultNumber
end
@ -86,6 +120,24 @@ function CreateWindow:OnClickCreate()
end
end
-- 锻造货币数量进度显示
function CreateWindow:SetShowForgeCost(nowForgeTime : number, moneyValue: number)
local maxForgeId = Utils:GetMaxIdFromJson(JsonForge)
local forgeTime = math.min(nowForgeTime, maxForgeId)
-- 获取当前锻造次数对应的消耗用于UI显示
local currentCost = GetIncrementalCost(forgeTime, JsonForge, 2)
-- 进度条 - 使用当前锻造次数对应的消耗显示
self.Variables["_btnCreate"].Text = string.format("%d/%d", moneyValue, currentCost)
if moneyValue >= currentCost then
self.Variables["_btnCreate"].BackgroundColor3 = Color3.fromRGB(235, 245, 95)
else
self.Variables["_btnCreate"].BackgroundColor3 = Color3.fromRGB(139, 139, 139)
end
end
function CreateWindow:OnOpenWindow()
UIWindow.OnOpenWindow(self)
@ -150,6 +202,33 @@ function CreateWindow:OnOpenWindow()
else
self:ShowDetailInfo()
end
-- 货币进度条显示
local rePlayerDataFolder = Utils:GetPlayerDataFolder(LocalPlayer)
local playerInfoFolder = rePlayerDataFolder:WaitForChild("PlayerInfo")
local forgeInstance = playerInfoFolder:WaitForChild("Stats"):WaitForChild("forge")
local itemFolder = playerInfoFolder:WaitForChild("Items")
local hasItem = itemFolder:FindFirstChild("2")
-- 设置锻造货币变动链接
local function SetForgeCostChange()
local costChangeCon = hasItem.Changed:Connect(function(newValue)
self:SetShowForgeCost(forgeInstance.Value, newValue)
end)
table.insert(self.Connections, costChangeCon)
end
if hasItem then
-- 后续变动设置
SetForgeCostChange()
-- 初始化设置
self:SetShowForgeCost(forgeInstance.Value, hasItem.Value)
else
-- 初始化设置
self:SetShowForgeCost(forgeInstance.Value, 0)
end
end
function CreateWindow:OnCloseWindow()

View File

@ -238,7 +238,6 @@ function MainWindow:OnOpenWindow()
-- 初始化设置
self:SetShowForgeBar(forgeInstance.Value, 0)
end
end
return MainWindow

View File

@ -0,0 +1,88 @@
local RecyclePackageShow = {}
RecyclePackageShow.__index = RecyclePackageShow
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Utils = require(ReplicatedStorage.Tools.Utils)
local Localization = require(ReplicatedStorage.Tools.Localization)
local JsonEquipment = require(ReplicatedStorage.Json.Equipment)
local JsonItemProp = require(ReplicatedStorage.Json.ItemProp)
local FolderEquipment = ReplicatedStorage:WaitForChild("Prefabs"):WaitForChild("Equipments")
function RecyclePackageShow:Init(data: table)
local self = {}
self.Data = data
self.Variables = {
["_btnClick"] = 0,
["_imgIcon"] = 0,
["_tmpQuality"] = 0,
["_tmpName"] = 0,
["_imgView"] = 0,
["_imgSelected"] = 0,
}
self.Connections = {}
setmetatable(self, RecyclePackageShow)
return self
end
function RecyclePackageShow:Refresh()
local itemData = Utils:GetIdDataFromJson(JsonItemProp, self.Data.orgId)
self.Variables._imgIcon.Image = Localization:GetImageData(itemData.iconId)
self.Variables._imgIcon.Visible = false
self.Variables._tmpQuality.Text = Localization:GetColoredEquipmentQualityDesc(self.Data.quality)
self.Variables._tmpName.Text = Localization:GetLanguageData(itemData.nameId)
local equipmentData = Utils:GetIdDataFromJson(JsonEquipment, self.Data.orgId)
-- 模型
local part = FolderEquipment:FindFirstChild(equipmentData.modelName):Clone()
part.Handle.Position = Vector3.new(0, 0, 0)
part.Handle.CFrame = CFrame.new(0, 0, 0) * CFrame.Angles(math.rad(90), 0, 0)
part.Parent = self.Variables["_imgView"]
self.Prefab = part
-- 相机
local viewportCamera = Instance.new("Camera")
self.Variables["_imgView"].CurrentCamera = viewportCamera
viewportCamera.Parent = self.Variables["_imgView"]
viewportCamera.CFrame = CFrame.new(Vector3.new(0, 0, 6), part.Handle.Position)
self.ViewCamera = viewportCamera
end
function RecyclePackageShow:OnInitFinish()
local con = self.Variables._btnClick.MouseButton1Click:Connect(function()
if self.Data == {} then
-- TODO: 之后做提示弹窗
else
self.Variables._imgSelected.Visible = not self.Variables._imgSelected.Visible
self.TopUI:SetSelectedShow(self.Data.instance, self.Variables._imgSelected.Visible)
end
end)
table.insert(self.Connections, con)
if self.Data.instance then
local wearingCon = self.Data.instance:GetAttributeChangedSignal("wearing"):Connect(function()
local oldWearing = self.Data.wearing
local newWearing = self.Data.instance:GetAttribute("wearing")
if oldWearing ~= newWearing then
if newWearing > 0 then
self.TopUI:WearRefresh(self.Data)
else
self.TopUI:UnwearRefresh(self.Data)
end
end
end)
table.insert(self.Connections, wearingCon)
end
end
function RecyclePackageShow:Destroy()
for k, v in pairs(self) do
self[k] = nil
end
self = nil
end
return RecyclePackageShow

View File

@ -0,0 +1,121 @@
--> Services
local ReplicatedStorage = game:GetService("ReplicatedStorage")
--> Dependencies
local UIWindow = require(ReplicatedStorage.Base.UIWindow)
local UIEnums = require(ReplicatedStorage.Base.UIEnums)
local Tween = require(ReplicatedStorage.Modules.Tween)
local Utils = require(ReplicatedStorage.Tools.Utils)
--> Components
local RecyclePackageShow = require(script.RecyclePackageShow)
local JsonEquipment = require(ReplicatedStorage.Json.Equipment)
--> Events
local RE_RecycleEquipment = ReplicatedStorage.Events.RE_RecycleEquipment
--> Local
local LocalPlayer = game:GetService("Players").LocalPlayer
local CommonFolder = LocalPlayer:WaitForChild("PlayerScripts"):WaitForChild("UI"):WaitForChild("Common")
local ItemShow = require(CommonFolder:WaitForChild("ItemShow"))
--------------------------------------------------------------------------------
local RecycleWindow = {}
RecycleWindow.__index = RecycleWindow
setmetatable(RecycleWindow, {__index = UIWindow})
function RecycleWindow:Init(UIManager: table, Data: table?)
local self = UIWindow:Init(UIManager, Data)
setmetatable(self, RecycleWindow)
self.Variables = {
["_goRecyclePanel"] = 0,
["__listWeaponPackage"] = 0,
["__listRewardPackage"] = 0,
["_btnRecycle"] = 0,
["_btnBgClose"] = 0,
["_btnClose"] = 0,
}
self.UIRootName = "ui_w_recycle"
self.UIParentName = UIEnums.UIParent.UIRoot
return self
end
-- 设置选中显示
function RecycleWindow:SetSelectedShow(instance: Instance, isSelected: boolean)
local equipmentData = Utils:GetIdDataFromJson(JsonEquipment, instance:GetAttribute("orgId"))
-- 图方便,临时做的,之后优化
if isSelected then
self.Data.Reward[1].count = self.Data.Reward[1].count + equipmentData.recycle
self.Data.RecycleInstance[instance] = instance
else
self.Data.Reward[1].count = self.Data.Reward[1].count - equipmentData.recycle
self.Data.RecycleInstance[instance] = nil
end
self.Variables["__listRewardPackage"]:SetData(self.Data.Reward)
end
-- 回收
function RecycleWindow:Recycle()
local recycleData = {}
for _, instance in self.Data.RecycleInstance do
table.insert(recycleData, instance:GetAttribute("id"))
end
if #recycleData > 0 then
RE_RecycleEquipment:FireServer(recycleData)
self.UIManager:CloseWindow(script.Name)
else
return nil
end
end
function RecycleWindow:AddInstanceData(configInstance: Instance, Data: table?)
local data = self.Data
if Data then data = Data end
local attributes = configInstance:GetAttributes()
-- 归类是否是穿戴的装备
local parentName, secondName = "Package", configInstance.Name
-- 穿戴中直接打断
if attributes.wearing ~= 0 then return nil end
data[parentName][secondName] = {}
for attributeKey, attributeValue in attributes do
data[parentName][secondName][attributeKey] = attributeValue
end
data[parentName][secondName].instance = configInstance
return data[parentName][secondName], parentName
end
function RecycleWindow:OnOpenWindow()
UIWindow.OnOpenWindow(self)
-- 自己进行数据处理
local DataFolder = Utils:WaitPlayerDataFolder(LocalPlayer):FindFirstChild("Equipment")
local data = {
Reward = {{orgId = 1, count = 0}},
RecycleInstance = {},
Package = {},
}
for _, child in DataFolder:GetChildren() do
self:AddInstanceData(child, data)
end
self.Data = data
self.Variables["__listWeaponPackage"]:AddComponent(RecyclePackageShow)
self.Variables["__listWeaponPackage"]:SetData(self.Data.Package)
-- self.Variables["__listWeaponPackage"]:SetLayoutOrder("package")
self.Variables["__listRewardPackage"]:AddComponent(ItemShow)
self.Variables["__listRewardPackage"]:SetData(self.Data.Reward)
local con = self.Variables._btnRecycle.MouseButton1Click:Connect(function()
self:Recycle()
end)
table.insert(self.Connections, con)
end
return RecycleWindow