Merge branch 'master' of 60.1.1.230:backend/jieling_server
commit
aeba5f5237
|
|
@ -5,12 +5,23 @@ int string string
|
|||
3 adventuren_boss_kill_reward_title 外敌击杀者奖励
|
||||
4 adventuren_boss_kill_reward__txt 在各位小伙伴的共同努力下,击败了在秘境中发现的外敌。本次外敌由您对其造成了最终一击,奉上专属的击杀奖励。
|
||||
5 adventure_boss_reward_title 秘境外敌周奖励
|
||||
6 adventure_boss_reward_txt 恭喜玩家<color=#fcc314> {0} </color>在秘境外敌进攻中获得了第<color=#fcc314> {1} </color>名,特发放此排名奖励。
|
||||
6 adventure_boss_reward_txt 恭喜玩家<color=#4c805eFF> {0} </color>在秘境外敌进攻中获得了第<color=#C66366FF> {1} </color>名,特发放此排名奖励。
|
||||
7 arena_daily_reward_title 竞技场每日奖励
|
||||
8 arena_daily_reward_txt 恭喜获得竞技场每日奖励。
|
||||
9 arena_season_reward_title 竞技场赛季奖励
|
||||
10 arena_season_reward_txt 恭喜获得竞技场赛季奖励。
|
||||
11 adventuren_reward_of_uplevel_title 秘境奖励发放
|
||||
12 adventuren_reward_of_uplevel_content 因秘境<color=#fcc314> {0} </color>等级提升到<color=#fcc314> {1} </color>,该秘境此前保存的奖励通过邮件发放。
|
||||
12 adventuren_reward_of_uplevel_content 因秘境<color=#4c805eFF> {0} </color>等级提升到<color=#C66366FF> {1} </color>,该秘境此前保存的奖励通过邮件发放。
|
||||
13 adventuren_reward_of_viplevel_title 秘境奖励发放
|
||||
14 adventuren_reward_of_viplevel_content 因特权等级提升到<color=#fcc314> {0} </color>,此前保存的所有的秘境奖励通过邮件发放。
|
||||
14 adventuren_reward_of_viplevel_content 因特权等级提升到<color=#C66366FF> {0} </color>,此前保存的所有的秘境奖励通过邮件发放。
|
||||
15 lamp_lottery_content 恭喜玩家<color=#4c805eFF> {0} </color>获得SSR妖灵师<color=#fcb24eFF> {1} </color>。
|
||||
16 lamp_rankup_content 恭喜玩家<color=#4c805eFF> {0} </color>将妖灵师<color=#fcb24eFF> {2} </color>升至<color=#4c805eFF> {3} </color>星,实力大幅提升。
|
||||
17 lamp_lottery_recruit_content 恭喜玩家<color=#4c805eFF> {0} </color>通过招募获得了稀有<color=#fcb24eFF> {1} </color>品阶的妖灵师<color=#fcb24eFF> {2} </color>。
|
||||
18 lamp_lottery_synthesize_content 恭喜玩家<color=#4c805eFF> {0} </color>通过碎片合成获得了稀有<color=#fcb24eFF> {1} </color>品阶的妖灵师<color=#fcb24eFF> {2} </color>。
|
||||
19 lamp_lottery_equip_content 恭喜玩家<color=#4c805eFF> {0} </color>获得了<color=#fcb24eFF> {1} </color>品质的装备<color=#fcb24eFF> {2} </color>。
|
||||
20 lamp_rankup_hero_content 玩家<color=#4c805eFF> {0} </color>经过不懈努力,将<color=#fcb24eFF> {1} </color>成长到了<color=#4c805eFF> {2} </color>星。
|
||||
21 lamp_lottery_differ_content 恭喜玩家<color=#4c805eFF> {0} </color>获得了<color=#FFEDA1FF> {1} </color>的妖魂。
|
||||
22 lamp_activate_differ_red_content 玩家<color=#4c805eFF> {0} </color>经过不懈努力,激活了异妖<color=#C66366FF> {1} </color>。
|
||||
23 lamp_rankup_differ_red_content 玩家<color=#4c805eFF> {0} </color>经过不懈努力,将<color=#C66366FF> {1} </color>进阶到了<color=#4c805eFF> {2} </color>阶。
|
||||
22 lamp_activate_differ_golden_content 玩家<color=#4c805eFF> {0} </color>经过不懈努力,激活了异妖<color=#FFEDA1FF> {1} </color>。
|
||||
23 lamp_rankup_differ_golden_content 玩家<color=#4c805eFF> {0} </color>经过不懈努力,将<color=#FFEDA1FF> {1} </color>进阶到了<color=#4c805eFF> {2} </color>阶。
|
||||
|
|
|
|||
|
|
@ -1,54 +1,54 @@
|
|||
Id PiecesId PiecesCount Star Profession PropertyName MaxRank Hp Attack PhysicalDefence MagicDefence Speed SecondaryFactor ActionPower RankupConsumeMaterial OpenSkillRules
|
||||
int int int int int int int float float float float float mut,int#int,2 int mut,int#int,2 mut,int#int,2
|
||||
10001 11001 50 5 1 3 10 2508.0 181.0 286.0 238.0 176.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#34#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1000111|5#1000121|6#1000112|6#1000121|7#1000112|7#1000122|8#1000113|8#1000122|9#1000113|9#1000123|10#1000114|10#1000124
|
||||
10002 11002 50 5 1 2 10 2281.0 158.0 259.0 216.0 154.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#22#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1000211|5#1000221|6#1000212|6#1000221|7#1000212|7#1000222|8#1000213|8#1000222|9#1000213|9#1000223|10#1000214|10#1000224
|
||||
10003 11003 50 5 1 4 10 2280.0 162.0 262.0 218.0 181.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#27#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1000311|5#1000321|6#1000312|6#1000321|7#1000312|7#1000322|8#1000313|8#1000322|9#1000313|9#1000323|10#1000314|10#1000324
|
||||
10004 11004 50 5 5 2 10 2373.0 184.0 236.0 283.0 136.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#28#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1000411|5#1000421|6#1000412|6#1000421|7#1000412|7#1000422|8#1000413|8#1000422|9#1000413|9#1000423|10#1000414|10#1000424
|
||||
10005 11005 50 5 5 4 10 2155.0 166.0 215.0 258.0 184.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#29#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1000511|5#1000521|6#1000512|6#1000521|7#1000512|7#1000522|8#1000513|8#1000522|9#1000513|9#1000523|10#1000514|10#1000524
|
||||
10006 11006 50 5 5 1 10 2161.0 171.0 214.0 257.0 175.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#23#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1000611|5#1000621|6#1000612|6#1000621|7#1000612|7#1000622|8#1000613|8#1000622|9#1000613|9#1000623|10#1000614|10#1000624
|
||||
10007 11007 50 5 5 3 10 2165.0 165.0 259.0 216.0 172.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#35#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1000711|5#1000721|6#1000712|6#1000721|7#1000712|7#1000722|8#1000713|8#1000722|9#1000713|9#1000723|10#1000714|10#1000724
|
||||
10008 11008 50 5 3 5 10 2206.0 217.0 193.0 232.0 130.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#24#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1000811|5#1000821|6#1000812|6#1000821|7#1000812|7#1000822|8#1000813|8#1000822|9#1000813|9#1000823|10#1000814|10#1000824
|
||||
10009 11009 50 5 3 6 10 1921.0 198.0 208.0 173.0 168.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#32#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1000911|5#1000921|6#1000912|6#1000921|7#1000912|7#1000922|8#1000913|8#1000922|9#1000913|9#1000923|10#1000914|10#1000924
|
||||
10010 11010 50 5 3 3 10 1922.0 199.0 172.0 206.0 138.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#37#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1001011|5#1001021|6#1001012|6#1001021|7#1001012|7#1001022|8#1001013|8#1001022|9#1001013|9#1001023|10#1001014|10#1001024
|
||||
10011 11011 50 5 3 4 10 1922.0 199.0 178.0 213.0 153.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#30#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1001111|5#1001121|6#1001112|6#1001121|7#1001112|7#1001122|8#1001113|8#1001122|9#1001113|9#1001123|10#1001114|10#1001124
|
||||
10012 11012 50 5 2 1 10 1849.0 265.0 217.0 181.0 146.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#36#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1001211|5#1001221|6#1001212|6#1001221|7#1001212|7#1001222|8#1001213|8#1001222|9#1001213|9#1001223|10#1001214|10#1001224
|
||||
10013 11013 50 5 2 4 10 1678.0 242.0 194.0 162.0 163.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#31#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1001311|5#1001321|6#1001312|6#1001321|7#1001312|7#1001322|8#1001313|8#1001322|9#1001313|9#1001323|10#1001314|10#1001324
|
||||
10014 11014 50 5 2 6 10 1676.0 244.0 196.0 163.0 191.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#33#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1001411|5#1001421|6#1001412|6#1001421|7#1001412|7#1001422|8#1001413|8#1001422|9#1001413|9#1001423|10#1001414|10#1001424
|
||||
10015 11015 50 5 2 5 10 1675.0 235.0 159.0 191.0 174.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#25#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1001511|5#1001521|6#1001512|6#1001521|7#1001512|7#1001522|8#1001513|8#1001522|9#1001513|9#1001523|10#1001514|10#1001524
|
||||
10016 11016 50 5 4 1 10 1587.0 313.0 141.0 169.0 156.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#38#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1001611|5#1001621|6#1001612|6#1001621|7#1001612|7#1001622|8#1001613|8#1001622|9#1001613|9#1001623|10#1001614|10#1001624
|
||||
10017 11017 50 5 4 6 10 1443.0 278.0 127.0 152.0 159.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#42#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1001711|5#1001721|6#1001712|6#1001721|7#1001712|7#1001722|8#1001713|8#1001722|9#1001713|9#1001723|10#1001714|10#1001724
|
||||
10018 11018 50 5 4 5 10 1443.0 280.0 134.0 161.0 154.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#26#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1001811|5#1001821|6#1001812|6#1001821|7#1001812|7#1001822|8#1001813|8#1001822|9#1001813|9#1001823|10#1001814|10#1001824
|
||||
10019 11019 50 5 4 2 10 1436.0 284.0 152.0 127.0 149.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#40#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1001911|5#1001921|6#1001912|6#1001921|7#1001912|7#1001922|8#1001913|8#1001922|9#1001913|9#1001923|10#1001914|10#1001924
|
||||
10020 11020 50 5 1 1 10 2279.0 164.0 264.0 220.0 152.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#39#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1002011|5#1002021|6#1002012|6#1002021|7#1002012|7#1002022|8#1002013|8#1002022|9#1002013|9#1002023|10#1002014|10#1002024
|
||||
10021 11021 40 5 3 3 10 1920.0 205.0 170.0 204.0 178.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#41#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1002111|5#1002121|6#1002112|6#1002121|7#1002112|7#1002122|8#1002113|8#1002122|9#1002113|9#1002123|10#1002114|10#1002124
|
||||
10022 11022 40 5 2 2 10 1676.0 244.0 167.0 200.0 173.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#43#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1002211|5#1002221|6#1002212|6#1002221|7#1002212|7#1002222|8#1002213|8#1002222|9#1002213|9#1002223|10#1002214|10#1002224
|
||||
10023 11023 40 5 4 5 10 1439.0 280.0 131.0 157.0 168.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#44#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1002311|5#1002321|6#1002312|6#1002321|7#1002312|7#1002322|8#1002313|8#1002322|9#1002313|9#1002323|10#1002314|10#1002324
|
||||
10024 11024 40 4 1 2 10 1933.0 138.0 216.0 180.0 182.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#43#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2 4#1002411|5#1002411|5#1002421|6#1002412|6#1002421|7#1002412|7#1002422|8#1002413|8#1002422|9#1002413|9#1002423
|
||||
10025 11025 40 4 3 1 10 1630.0 174.0 146.0 175.0 166.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#39#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2 4#1002511|5#1002511|5#1002521|6#1002512|6#1002521|7#1002512|7#1002522|8#1002513|8#1002522|9#1002513|9#1002523
|
||||
10026 11026 40 4 1 5 10 2051.0 138.0 216.0 180.0 181.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#44#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2 4#1002611|5#1002611|5#1002621|6#1002612|6#1002621|7#1002612|7#1002622|8#1002613|8#1002622|9#1002613|9#1002623
|
||||
10027 11027 40 4 5 5 10 1944.0 141.0 221.0 184.0 175.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#24#1|6#3#17#3 4#1002711|5#1002711|5#1002721|6#1002712|6#1002721
|
||||
10028 11028 40 4 4 5 10 1292.0 241.0 110.0 132.0 157.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#25#1|6#3#17#3 4#1002811|5#1002811|5#1002821|6#1002812|6#1002821
|
||||
10029 11029 40 4 4 4 10 1228.0 240.0 108.0 129.0 153.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#30#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2 4#1002911|5#1002911|5#1002921|6#1002912|6#1002921|7#1002912|7#1002922|8#1002913|8#1002922|9#1002913|9#1002923
|
||||
10030 11030 40 4 5 2 10 1833.0 146.0 186.0 223.0 174.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#22#1|6#3#17#3 4#1003011|5#1003011|5#1003021|6#1003012|6#1003021
|
||||
10031 11031 40 4 1 4 10 1942.0 133.0 218.0 182.0 184.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#27#1|6#3#17#3 4#1003111|5#1003111|5#1003121|6#1003112|6#1003121
|
||||
10032 11032 40 4 2 4 10 1426.0 205.0 161.0 134.0 202.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#31#1|6#3#17#3 4#1003211|5#1003211|5#1003221|6#1003212|6#1003221
|
||||
10033 11033 40 4 4 4 10 1219.0 234.0 130.0 108.0 156.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#29#1|6#3#17#3 4#1003311|5#1003311|5#1003321|6#1003312|6#1003321
|
||||
10034 11034 40 4 4 6 10 1293.0 240.0 107.0 128.0 161.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#42#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2 4#1003411|5#1003411|5#1003421|6#1003412|6#1003421|7#1003412|7#1003422|8#1003413|8#1003422|9#1003413|14#1003423
|
||||
10035 11035 40 4 3 6 10 1732.0 166.0 172.0 143.0 160.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#32#1|6#3#17#3 4#1003511|5#1003511|5#1003521|6#1003512|6#1003521
|
||||
10036 11036 40 4 3 3 10 1724.0 170.0 149.0 179.0 158.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#37#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2 4#1003611|5#1003611|5#1003621|6#1003612|6#1003621|7#1003612|7#1003622|8#1003613|8#1003622|9#1003613|16#1003623
|
||||
10037 11037 40 4 2 3 10 1427.0 206.0 161.0 134.0 197.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#41#1|6#3#17#3 4#1003711|5#1003711|5#1003721|6#1003712|6#1003721
|
||||
10038 11038 40 4 4 1 10 1224.0 242.0 114.0 137.0 155.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#36#1|6#3#17#3 4#1003811|5#1003811|5#1003821|6#1003812|6#1003821
|
||||
10039 11039 40 4 2 3 10 1428.0 206.0 165.0 138.0 191.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#35#1|6#3#17#3 4#1003911|5#1003911|5#1003921|6#1003912|6#1003921
|
||||
10040 11040 40 4 1 1 10 1938.0 141.0 222.0 185.0 182.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#23#1|6#3#17#3 4#1004011|5#1004011|5#1004021|6#1004012|6#1004021
|
||||
10041 11041 40 4 1 1 10 1937.0 135.0 221.0 184.0 174.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#38#1|6#3#17#3 4#1004111|5#1004111|5#1004121|6#1004112|6#1004121
|
||||
10042 11042 40 4 1 2 10 1942.0 135.0 218.0 182.0 181.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#28#1|6#3#17#3 4#1004211|5#1004211|5#1004221|6#1004212|6#1004221
|
||||
10043 11043 40 4 4 3 10 1222.0 234.0 136.0 113.0 155.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#34#1|6#3#17#3 4#1004311|5#1004311|5#1004321|6#1004312|6#1004321
|
||||
10044 11044 40 4 2 6 10 1425.0 201.0 138.0 165.0 192.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#33#1|6#3#17#3 4#1004411|5#1004411|5#1004421|6#1004412|6#1004421
|
||||
10045 11045 40 4 5 2 10 1831.0 143.0 188.0 225.0 181.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#40#1|6#3#17#3 4#1004511|5#1004511|5#1004521|6#1004512|6#1004521
|
||||
10046 11046 30 4 2 5 10 1507.0 203.0 134.0 161.0 171.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#26#1|6#3#17#3 4#1004611|5#1004611|5#1004621|6#1004612|6#1004621
|
||||
10047 11047 30 3 3 1 10 1942.0 140.0 226.0 188.0 175.0 56#15000|57#10000|58#10000 30 null 3#1004711
|
||||
10048 11048 30 3 2 2 10 1637.0 167.0 173.0 144.0 172.0 56#15000|57#10000|58#10000 30 null 3#1004811
|
||||
10049 11049 30 3 4 3 10 1423.0 199.0 161.0 134.0 196.0 56#15000|57#10000|58#10000 30 null 3#1004911
|
||||
10050 11050 30 3 3 4 10 1226.0 242.0 111.0 133.0 159.0 56#15000|57#10000|58#10000 30 null 3#1005011
|
||||
10051 11051 30 3 2 5 10 1943.0 140.0 188.0 225.0 182.0 56#15000|57#10000|58#10000 30 null 3#1005111
|
||||
10052 11052 30 3 4 6 10 2049.0 136.0 187.0 224.0 177.0 56#15000|57#10000|58#10000 30 null 3#1005211
|
||||
Id ReadingName PiecesId PiecesCount Star Quality Natural Profession PropertyName MaxRank Hp Attack PhysicalDefence MagicDefence Speed SecondaryFactor ActionPower RankupConsumeMaterial OpenSkillRules
|
||||
int string int int int int int int int int float float float float float mut,int#int,2 int mut,int#int,2 mut,int#int,2
|
||||
10001 石御霏 11001 50 5 4001 3 1 3 10 2508.0 181.0 286.0 238.0 176.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#34#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1000111|5#1000121|6#1000112|6#1000121|7#1000112|7#1000122|8#1000113|8#1000122|9#1000113|9#1000123|10#1000114|10#1000124
|
||||
10002 楚恒 11002 50 5 4002 3 1 2 10 2281.0 158.0 259.0 216.0 154.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#22#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1000211|5#1000221|6#1000212|6#1000221|7#1000212|7#1000222|8#1000213|8#1000222|9#1000213|9#1000223|10#1000214|10#1000224
|
||||
10003 夏侯鸿天 11003 50 5 4003 3 1 4 10 2280.0 162.0 262.0 218.0 181.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#27#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1000311|5#1000321|6#1000312|6#1000321|7#1000312|7#1000322|8#1000313|8#1000322|9#1000313|9#1000323|10#1000314|10#1000324
|
||||
10004 应茹 11004 50 5 4004 3 5 2 10 2373.0 184.0 236.0 283.0 136.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#28#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1000411|5#1000421|6#1000412|6#1000421|7#1000412|7#1000422|8#1000413|8#1000422|9#1000413|9#1000423|10#1000414|10#1000424
|
||||
10005 端木葵 11005 50 5 4005 3 5 4 10 2155.0 166.0 215.0 258.0 184.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#29#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1000511|5#1000521|6#1000512|6#1000521|7#1000512|7#1000522|8#1000513|8#1000522|9#1000513|9#1000523|10#1000514|10#1000524
|
||||
10006 兰卿 11006 50 5 4006 3 5 1 10 2161.0 171.0 214.0 257.0 175.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#23#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1000611|5#1000621|6#1000612|6#1000621|7#1000612|7#1000622|8#1000613|8#1000622|9#1000613|9#1000623|10#1000614|10#1000624
|
||||
10007 靖之 11007 50 5 4001 3 5 3 10 2165.0 165.0 259.0 216.0 172.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#35#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1000711|5#1000721|6#1000712|6#1000721|7#1000712|7#1000722|8#1000713|8#1000722|9#1000713|9#1000723|10#1000714|10#1000724
|
||||
10008 白梦凡 11008 50 5 4002 3 3 5 10 2206.0 217.0 193.0 232.0 130.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#24#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1000811|5#1000821|6#1000812|6#1000821|7#1000812|7#1000822|8#1000813|8#1000822|9#1000813|9#1000823|10#1000814|10#1000824
|
||||
10009 祁菲 11009 50 5 4003 3 3 6 10 1921.0 198.0 208.0 173.0 168.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#32#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1000911|5#1000921|6#1000912|6#1000921|7#1000912|7#1000922|8#1000913|8#1000922|9#1000913|9#1000923|10#1000914|10#1000924
|
||||
10010 颜祈佳 11010 50 5 4004 3 3 3 10 1922.0 199.0 172.0 206.0 138.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#37#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1001011|5#1001021|6#1001012|6#1001021|7#1001012|7#1001022|8#1001013|8#1001022|9#1001013|9#1001023|10#1001014|10#1001024
|
||||
10011 岳寅 11011 50 5 4005 3 3 4 10 1922.0 199.0 178.0 213.0 153.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#30#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1001111|5#1001121|6#1001112|6#1001121|7#1001112|7#1001122|8#1001113|8#1001122|9#1001113|9#1001123|10#1001114|10#1001124
|
||||
10012 慕容子期 11012 50 5 4006 3 2 1 10 1849.0 265.0 217.0 181.0 146.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#36#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1001211|5#1001221|6#1001212|6#1001221|7#1001212|7#1001222|8#1001213|8#1001222|9#1001213|9#1001223|10#1001214|10#1001224
|
||||
10013 云灵 11013 50 5 4001 3 2 4 10 1678.0 242.0 194.0 162.0 163.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#31#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1001311|5#1001321|6#1001312|6#1001321|7#1001312|7#1001322|8#1001313|8#1001322|9#1001313|9#1001323|10#1001314|10#1001324
|
||||
10014 耿陶 11014 50 5 4002 3 2 6 10 1676.0 244.0 196.0 163.0 191.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#33#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1001411|5#1001421|6#1001412|6#1001421|7#1001412|7#1001422|8#1001413|8#1001422|9#1001413|9#1001423|10#1001414|10#1001424
|
||||
10015 云 11015 50 5 4003 3 2 5 10 1675.0 235.0 159.0 191.0 174.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#25#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1001511|5#1001521|6#1001512|6#1001521|7#1001512|7#1001522|8#1001513|8#1001522|9#1001513|9#1001523|10#1001514|10#1001524
|
||||
10016 岑以航 11016 50 5 4004 3 4 1 10 1587.0 313.0 141.0 169.0 156.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#38#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1001611|5#1001621|6#1001612|6#1001621|7#1001612|7#1001622|8#1001613|8#1001622|9#1001613|9#1001623|10#1001614|10#1001624
|
||||
10017 影蓟 11017 50 5 4005 3 4 6 10 1443.0 278.0 127.0 152.0 159.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#42#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1001711|5#1001721|6#1001712|6#1001721|7#1001712|7#1001722|8#1001713|8#1001722|9#1001713|9#1001723|10#1001714|10#1001724
|
||||
10018 朱贺 11018 50 5 4006 3 4 5 10 1443.0 280.0 134.0 161.0 154.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#26#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1001811|5#1001821|6#1001812|6#1001821|7#1001812|7#1001822|8#1001813|8#1001822|9#1001813|9#1001823|10#1001814|10#1001824
|
||||
10019 孔谦 11019 50 5 4001 3 4 2 10 1436.0 284.0 152.0 127.0 149.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#40#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1001911|5#1001921|6#1001912|6#1001921|7#1001912|7#1001922|8#1001913|8#1001922|9#1001913|9#1001923|10#1001914|10#1001924
|
||||
10020 颜无雍 11020 50 5 4002 3 1 1 10 2279.0 164.0 264.0 220.0 152.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#39#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1002011|5#1002021|6#1002012|6#1002021|7#1002012|7#1002022|8#1002013|8#1002022|9#1002013|9#1002023|10#1002014|10#1002024
|
||||
10021 岑以璇 11021 40 5 4003 3 3 3 10 1920.0 205.0 170.0 204.0 178.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#41#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1002111|5#1002121|6#1002112|6#1002121|7#1002112|7#1002122|8#1002113|8#1002122|9#1002113|9#1002123|10#1002114|10#1002124
|
||||
10022 颜无诡 11022 40 5 4004 3 2 2 10 1676.0 244.0 167.0 200.0 173.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#43#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1002211|5#1002221|6#1002212|6#1002221|7#1002212|7#1002222|8#1002213|8#1002222|9#1002213|9#1002223|10#1002214|10#1002224
|
||||
10023 荧荧 11023 40 5 4005 3 4 5 10 1439.0 280.0 131.0 157.0 168.0 56#15000|57#10000|58#10000 30 6#1#3#1|6#2#44#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2|10#1#3#2|10#2#18#1|10#3#21#1 5#1002311|5#1002321|6#1002312|6#1002321|7#1002312|7#1002322|8#1002313|8#1002322|9#1002313|9#1002323|10#1002314|10#1002324
|
||||
10024 许槿然 11024 40 4 4006 2 1 2 10 1933.0 138.0 216.0 180.0 182.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#43#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2 4#1002411|5#1002411|5#1002421|6#1002412|6#1002421|7#1002412|7#1002422|8#1002413|8#1002422|9#1002413|9#1002423
|
||||
10025 唐萱 11025 40 4 4001 2 3 1 10 1630.0 174.0 146.0 175.0 166.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#39#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2 4#1002511|5#1002511|5#1002521|6#1002512|6#1002521|7#1002512|7#1002522|8#1002513|8#1002522|9#1002513|9#1002523
|
||||
10026 孙晴 11026 40 4 4002 2 1 5 10 2051.0 138.0 216.0 180.0 181.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#44#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2 4#1002611|5#1002611|5#1002621|6#1002612|6#1002621|7#1002612|7#1002622|8#1002613|8#1002622|9#1002613|9#1002623
|
||||
10027 宁月 11027 40 4 4003 2 5 5 10 1944.0 141.0 221.0 184.0 175.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#24#1|6#3#17#3 4#1002711|5#1002711|5#1002721|6#1002712|6#1002721
|
||||
10028 紫川 11028 40 4 4004 2 4 5 10 1292.0 241.0 110.0 132.0 157.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#25#1|6#3#17#3 4#1002811|5#1002811|5#1002821|6#1002812|6#1002821
|
||||
10029 晏息 11029 40 4 4005 2 4 4 10 1228.0 240.0 108.0 129.0 153.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#30#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2 4#1002911|5#1002911|5#1002921|6#1002912|6#1002921|7#1002912|7#1002922|8#1002913|8#1002922|9#1002913|9#1002923
|
||||
10030 瑶瑶 11030 40 4 4006 2 5 2 10 1833.0 146.0 186.0 223.0 174.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#22#1|6#3#17#3 4#1003011|5#1003011|5#1003021|6#1003012|6#1003021
|
||||
10031 贾裴武 11031 40 4 4001 2 1 4 10 1942.0 133.0 218.0 182.0 184.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#27#1|6#3#17#3 4#1003111|5#1003111|5#1003121|6#1003112|6#1003121
|
||||
10032 雷燕 11032 40 4 4002 2 2 4 10 1426.0 205.0 161.0 134.0 202.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#31#1|6#3#17#3 4#1003211|5#1003211|5#1003221|6#1003212|6#1003221
|
||||
10033 辛夷 11033 40 4 4003 2 4 4 10 1219.0 234.0 130.0 108.0 156.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#29#1|6#3#17#3 4#1003311|5#1003311|5#1003321|6#1003312|6#1003321
|
||||
10034 伏冥 11034 40 4 4004 2 4 6 10 1293.0 240.0 107.0 128.0 161.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#42#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2 4#1003411|5#1003411|5#1003421|6#1003412|6#1003421|7#1003412|7#1003422|8#1003413|8#1003422|9#1003413|14#1003423
|
||||
10035 司空染 11035 40 4 4005 2 3 6 10 1732.0 166.0 172.0 143.0 160.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#32#1|6#3#17#3 4#1003511|5#1003511|5#1003521|6#1003512|6#1003521
|
||||
10036 解幽 11036 40 4 4006 2 3 3 10 1724.0 170.0 149.0 179.0 158.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#37#1|6#3#17#3|7#1#17#4|8#1#17#3|8#2#18#1|9#1#3#1|9#2#18#1|9#3#17#2 4#1003611|5#1003611|5#1003621|6#1003612|6#1003621|7#1003612|7#1003622|8#1003613|8#1003622|9#1003613|16#1003623
|
||||
10037 薛苓 11037 40 4 4001 2 2 3 10 1427.0 206.0 161.0 134.0 197.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#41#1|6#3#17#3 4#1003711|5#1003711|5#1003721|6#1003712|6#1003721
|
||||
10038 常申 11038 40 4 4002 2 4 1 10 1224.0 242.0 114.0 137.0 155.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#36#1|6#3#17#3 4#1003811|5#1003811|5#1003821|6#1003812|6#1003821
|
||||
10039 呼延腾 11039 40 4 4003 2 2 3 10 1428.0 206.0 165.0 138.0 191.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#35#1|6#3#17#3 4#1003911|5#1003911|5#1003921|6#1003912|6#1003921
|
||||
10040 冉宜 11040 40 4 4004 2 1 1 10 1938.0 141.0 222.0 185.0 182.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#23#1|6#3#17#3 4#1004011|5#1004011|5#1004021|6#1004012|6#1004021
|
||||
10041 孟灿 11041 40 4 4005 2 1 1 10 1937.0 135.0 221.0 184.0 174.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#38#1|6#3#17#3 4#1004111|5#1004111|5#1004121|6#1004112|6#1004121
|
||||
10042 叶辽 11042 40 4 4006 2 1 2 10 1942.0 135.0 218.0 182.0 181.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#28#1|6#3#17#3 4#1004211|5#1004211|5#1004221|6#1004212|6#1004221
|
||||
10043 乌廉 11043 40 4 4001 2 4 3 10 1222.0 234.0 136.0 113.0 155.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#34#1|6#3#17#3 4#1004311|5#1004311|5#1004321|6#1004312|6#1004321
|
||||
10044 姜燧 11044 40 4 4002 2 2 6 10 1425.0 201.0 138.0 165.0 192.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#33#1|6#3#17#3 4#1004411|5#1004411|5#1004421|6#1004412|6#1004421
|
||||
10045 苏可 11045 40 4 4003 2 5 2 10 1831.0 143.0 188.0 225.0 181.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#40#1|6#3#17#3 4#1004511|5#1004511|5#1004521|6#1004512|6#1004521
|
||||
10046 林越 11046 30 4 4004 2 2 5 10 1507.0 203.0 134.0 161.0 171.0 56#15000|57#10000|58#10000 30 5#1#2#3|5#2#15#4|5#3#16#4|6#1#3#1|6#2#26#1|6#3#17#3 4#1004611|5#1004611|5#1004621|6#1004612|6#1004621
|
||||
10047 赤肥肥 11047 30 3 4005 1 3 1 10 1942.0 140.0 226.0 188.0 175.0 56#15000|57#10000|58#10000 30 null 3#1004711
|
||||
10048 银肥肥 11048 30 3 4006 1 2 2 10 1637.0 167.0 173.0 144.0 172.0 56#15000|57#10000|58#10000 30 null 3#1004811
|
||||
10049 苍肥肥 11049 30 3 4001 1 4 3 10 1423.0 199.0 161.0 134.0 196.0 56#15000|57#10000|58#10000 30 null 3#1004911
|
||||
10050 金肥肥 11050 30 3 4002 1 3 4 10 1226.0 242.0 111.0 133.0 159.0 56#15000|57#10000|58#10000 30 null 3#1005011
|
||||
10051 阳魔 11051 30 3 4003 1 2 5 10 1943.0 140.0 188.0 225.0 182.0 56#15000|57#10000|58#10000 30 null 3#1005111
|
||||
10052 阴魔 11052 30 3 4004 1 4 6 10 2049.0 136.0 187.0 224.0 177.0 56#15000|57#10000|58#10000 30 null 3#1005211
|
||||
|
|
|
|||
|
|
@ -5,7 +5,9 @@ import com.ljsd.GameApplication;
|
|||
import com.ljsd.jieling.chat.messge.MessageCache;
|
||||
import com.ljsd.jieling.db.redis.RedisKey;
|
||||
import com.ljsd.jieling.db.redis.RedisUtil;
|
||||
import com.ljsd.jieling.globals.Global;
|
||||
import com.ljsd.jieling.logic.OnlineUserManager;
|
||||
import com.ljsd.jieling.logic.dao.FriendManager;
|
||||
import com.ljsd.jieling.logic.dao.UserManager;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
|
|
@ -35,6 +37,8 @@ public class ChatLogic {
|
|||
*/
|
||||
public void getAllChatMessageInfo(ISession iSession, int chatType) throws Exception {
|
||||
int uid = iSession.getUid();
|
||||
FriendManager friendManager = UserManager.getUser(uid).getFriendManager();
|
||||
List<Integer> friends = friendManager.getFriends();
|
||||
List<ChatProto.ChatInfo> chatInfoList = new ArrayList<>();
|
||||
switch (chatType){
|
||||
case 0: // 系统
|
||||
|
|
@ -53,14 +57,17 @@ public class ChatLogic {
|
|||
String[] split = entry.getKey().toString().split("#");
|
||||
String message = String.valueOf(entry.getValue());
|
||||
int userid = Integer.parseInt(split[0]);
|
||||
if (!friends.contains(userid)){
|
||||
continue;
|
||||
}
|
||||
long time = Long.parseLong(split[1]);
|
||||
User user = UserManager.getUser(userid);
|
||||
CBean2Proto.getChatInfoBuilder(user,message,time);
|
||||
chatInfoList.add(CBean2Proto.getChatInfoBuilder(user,message,time));
|
||||
}
|
||||
}
|
||||
if (hmget!= null && hmget.size() != 0){
|
||||
//取出数据好友聊天数据后删除
|
||||
RedisUtil.getInstence().hdel(GameApplication.serverId + RedisKey.CUser_Chat + uid);
|
||||
RedisUtil.getInstence().del(GameApplication.serverId + RedisKey.CUser_Chat + uid);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
@ -77,8 +84,10 @@ public class ChatLogic {
|
|||
* @param message
|
||||
*/
|
||||
public void sendChatMessage(ISession iSession, int chatType, String message,int friendId) throws Exception {
|
||||
int msgId = MessageTypeProto.MessageType.SEND_CHAT_INFO_RESPONSE_VALUE;
|
||||
int uid = iSession.getUid();
|
||||
User user = UserManager.getUser(uid);
|
||||
FriendManager friendManager = user.getFriendManager();
|
||||
long nowTime = System.currentTimeMillis();
|
||||
switch (chatType){
|
||||
case 1: //世界
|
||||
|
|
@ -90,6 +99,11 @@ public class ChatLogic {
|
|||
MessageCache.addGuildMsg(chatInfo);
|
||||
break;
|
||||
case 3: //好友
|
||||
List<Integer> friends = friendManager.getFriends();
|
||||
if (!friends.contains(friendId)){
|
||||
MessageUtil.sendErrorResponse(iSession,0, msgId, "不能查找自己");
|
||||
return;
|
||||
}
|
||||
//现在好友推送
|
||||
if (OnlineUserManager.checkUidOnline(friendId)){
|
||||
ISession sessionByUid = OnlineUserManager.getSessionByUid(friendId);
|
||||
|
|
@ -98,21 +112,21 @@ public class ChatLogic {
|
|||
.setChatInfo(chatInfo)
|
||||
.build();
|
||||
assert sessionByUid != null;
|
||||
MessageUtil.sendMessage(sessionByUid, 1, MessageTypeProto.MessageType.SEND_CHAT_INFO_INDICATION_VALUE, sendChatInfoIndication, true);
|
||||
MessageUtil.sendIndicationMessage(sessionByUid, 1, MessageTypeProto.MessageType.SEND_CHAT_INFO_INDICATION_VALUE, sendChatInfoIndication, true);
|
||||
}else{
|
||||
RedisUtil.getInstence().hset(GameApplication.serverId +RedisKey.CUser_Chat+friendId,uid +"#"+ nowTime,message, -1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.SEND_CHAT_INFO_RESPONSE_VALUE, null, true);
|
||||
MessageUtil.sendMessage(iSession, 1, msgId, null, true);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 系统消息跑马灯
|
||||
*/
|
||||
public static void sendSysChatMessage(String message,int type,int startTime, int endTime, int priorityLevel, int frequency) {
|
||||
ChatProto.ChatInfo chatInfo = CBean2Proto.getSysChatInfoBuilder(message,type,startTime,endTime,priorityLevel,frequency);
|
||||
public void sendSysChatMessage(String message,int messageType ,int itemId, int type,int startTime, int endTime, int priorityLevel, int frequency) {
|
||||
ChatProto.ChatInfo chatInfo = CBean2Proto.getSysChatInfoBuilder(message,messageType,itemId ,type,startTime,endTime,priorityLevel,frequency);
|
||||
MessageCache.addSystemMsg(chatInfo);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,6 +19,8 @@ public class SCHero implements BaseConfig{
|
|||
|
||||
private int piecesCount;
|
||||
|
||||
private String readingName;
|
||||
|
||||
private int propertyName; //角色属性
|
||||
|
||||
private int profession; //角色职业
|
||||
|
|
@ -45,6 +47,10 @@ public class SCHero implements BaseConfig{
|
|||
|
||||
private int[][] secondaryFactor;
|
||||
|
||||
private int quality;
|
||||
|
||||
private int natural;
|
||||
|
||||
private Map<Integer,Integer> secondaryFactorMap;
|
||||
|
||||
private Map<Integer, List<Integer>> skillListByStar;
|
||||
|
|
@ -219,4 +225,16 @@ public class SCHero implements BaseConfig{
|
|||
public void setSecondaryFactorMap(Map<Integer, Integer> secondaryFactorMap) {
|
||||
this.secondaryFactorMap = secondaryFactorMap;
|
||||
}
|
||||
|
||||
public int getQuality() {
|
||||
return quality;
|
||||
}
|
||||
|
||||
public int getNatural() {
|
||||
return natural;
|
||||
}
|
||||
|
||||
public String getReadingName() {
|
||||
return readingName;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ public class SRingFireMaterialConfig implements BaseConfig {
|
|||
public void init() throws Exception {
|
||||
Map<Integer, SRingFireMaterialConfig> configTmp = STableManager.getConfig(SRingFireMaterialConfig.class);
|
||||
Map<Integer, SRingFireMaterialConfig> configMap = new HashMap<>();
|
||||
for(SRingFireMaterialConfig sRingFireMaterialConfig : configMap.values()){
|
||||
for(SRingFireMaterialConfig sRingFireMaterialConfig : configTmp.values()){
|
||||
configMap.put(sRingFireMaterialConfig.getFireId(),sRingFireMaterialConfig);
|
||||
}
|
||||
config = configMap;
|
||||
|
|
|
|||
|
|
@ -12,10 +12,14 @@ public class SWorkShopSetting implements BaseConfig {
|
|||
|
||||
private int id;
|
||||
|
||||
private int exp;
|
||||
private int[][] exp;
|
||||
|
||||
private int[] promote;
|
||||
|
||||
private int technologyLevel;
|
||||
|
||||
private int[] unravelItem;
|
||||
|
||||
private int foodExp;
|
||||
|
||||
private float addNum;
|
||||
|
|
@ -28,10 +32,7 @@ public class SWorkShopSetting implements BaseConfig {
|
|||
|
||||
private int cookTotalWeight;
|
||||
|
||||
private static int maxExp;
|
||||
|
||||
private static int maxCookExp;
|
||||
|
||||
private static int maxLevel;
|
||||
|
||||
private static Map<Integer,SWorkShopSetting> sWorkShopSettingMap;
|
||||
|
||||
|
|
@ -40,8 +41,7 @@ public class SWorkShopSetting implements BaseConfig {
|
|||
public void init() throws Exception {
|
||||
Map<Integer, SWorkShopSetting> sWorkShopSettingMapTmp = sWorkShopSettingMap = STableManager.getConfig(SWorkShopSetting.class);
|
||||
Map<Integer,Integer> promoteMapTmp = new HashMap<>();
|
||||
int maxExpTmp = 0;
|
||||
int maxCookExpTmp = 0;
|
||||
int maxLevel = 0;
|
||||
for(SWorkShopSetting sWorkShopSetting : sWorkShopSettingMapTmp.values()){
|
||||
Map<Integer,Integer> promoteMapTmptm = new HashMap<>(promoteMapTmp);
|
||||
int[] promote = sWorkShopSetting.getPromote();
|
||||
|
|
@ -51,8 +51,7 @@ public class SWorkShopSetting implements BaseConfig {
|
|||
promoteMapTmptm.put(promote[0],promote[1]);
|
||||
sWorkShopSetting.setPromoteMap(promoteMapTmptm);
|
||||
}
|
||||
maxExpTmp = MathUtils.getMaxNum(maxExpTmp,sWorkShopSetting.getExp());
|
||||
maxCookExpTmp=MathUtils.getMaxNum(maxExpTmp,sWorkShopSetting.getFoodExp());
|
||||
maxLevel = MathUtils.getMaxNum(maxLevel,sWorkShopSetting.getId());
|
||||
int[][] poolWeight = sWorkShopSetting.getPoolRate();
|
||||
if(poolWeight!=null && poolWeight.length>0){
|
||||
int totalWeight = 0;
|
||||
|
|
@ -64,27 +63,22 @@ public class SWorkShopSetting implements BaseConfig {
|
|||
|
||||
}
|
||||
sWorkShopSettingMap = sWorkShopSettingMapTmp;
|
||||
maxExp = maxExpTmp;
|
||||
maxCookExp = maxCookExpTmp;
|
||||
this.maxLevel = maxLevel;
|
||||
}
|
||||
|
||||
public static int getMaxExp() {
|
||||
return maxExp;
|
||||
public static int getMaxLevel() {
|
||||
return maxLevel;
|
||||
}
|
||||
|
||||
public static int getMaxCookExp() {
|
||||
return maxCookExp;
|
||||
}
|
||||
|
||||
public static SWorkShopSetting getsWorkShopSettingByLevel(int levle) {
|
||||
return sWorkShopSettingMap.get(levle);
|
||||
public static SWorkShopSetting getsWorkShopSettingByLevel(int level) {
|
||||
return sWorkShopSettingMap.get(level);
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public int getExp() {
|
||||
public int[][] getExp() {
|
||||
return exp;
|
||||
}
|
||||
|
||||
|
|
@ -100,18 +94,10 @@ public class SWorkShopSetting implements BaseConfig {
|
|||
this.promoteMap = promoteMap;
|
||||
}
|
||||
|
||||
public void setExp(int exp) {
|
||||
public void setExp(int[][] exp) {
|
||||
this.exp = exp;
|
||||
}
|
||||
|
||||
public int getFoodExp() {
|
||||
return foodExp;
|
||||
}
|
||||
|
||||
public float getAddNum() {
|
||||
return addNum;
|
||||
}
|
||||
|
||||
public int[][] getPoolRate() {
|
||||
return poolRate;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ public interface BIReason {
|
|||
int DECOMPOS_ITEM_REWARD = 3 ;//分解道具奖励
|
||||
int DECOMPOS_EQUIP_REWARD = 4 ;//分解道具奖励
|
||||
int DECOMPOS_HERO_REWARD = 5;//分解妖灵师获取奖励
|
||||
int COMPOS_HERO_REWARD = 6 ;//分解妖灵师获取奖励
|
||||
int COMPOS_HERO_REWARD = 6 ;//合成妖灵师
|
||||
|
||||
int HERO_RANDOM = 7 ;//抽卡
|
||||
|
||||
|
|
|
|||
|
|
@ -42,4 +42,9 @@ public interface Global {
|
|||
//返回状态
|
||||
int USER_NO_EXIT_STATE = 10000; // 玩家不存在
|
||||
int NO_FIND_ONESELF_STATE = 10001; // 不能查找自己
|
||||
|
||||
|
||||
//跑马灯状态
|
||||
int LUCKY_LUCK = 1; //吉运
|
||||
int DILIGENT = 2; //勤勉
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ public class FunctionOfTimeHandler extends BaseHandler{
|
|||
|
||||
@Override
|
||||
public void process(ISession iSession, PacketNetData netData) throws Exception {
|
||||
iSession.setFiveReady(1);
|
||||
GlobalDataManaager.getInstance().getTimeOfControl(iSession);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -437,7 +437,8 @@ public class MapLogic {
|
|||
return;
|
||||
}
|
||||
if (mapManager.getStartExporeTime() == 0) {
|
||||
LOGGER.info("mapManager.getStartExporeTime() == 0");
|
||||
LOGGER.info("mapMana" +
|
||||
"ger.getStartExporeTime() == 0");
|
||||
MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), "未开始探索");
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -215,7 +215,6 @@ public class MapManager extends MongoBase {
|
|||
if (addValue != 0) {
|
||||
int curEnergy = MathUtils.setBetweenWithMax(itemNum + addValue, 0, SGameSetting.getGameSetting().getInitialEnergy());
|
||||
item.setItemNum(curEnergy > playerInfoManager.getMaxStamina() ? playerInfoManager.getMaxStamina() : curEnergy);
|
||||
System.out.println("增加之前的==============================="+itemNum + "增加的数量============"+addValue +"总数========="+item.getItemNum());
|
||||
setLastUpdateEnergyTime(item, updateTime, lastUpdateEnergyTime);
|
||||
}
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,25 @@
|
|||
package com.ljsd.jieling.handler.room;
|
||||
|
||||
import com.ljsd.jieling.handler.BaseHandler;
|
||||
import com.ljsd.jieling.logic.room.RoomManager;
|
||||
import com.ljsd.jieling.netty.cocdex.PacketNetData;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.protocols.MessageTypeProto;
|
||||
import com.ljsd.jieling.protocols.RoomFightProto;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class RoomMapUpdateEventHandler extends BaseHandler {
|
||||
@Override
|
||||
public MessageTypeProto.MessageType getMessageCode() {
|
||||
return MessageTypeProto.MessageType.ROOM_MAP_UPDATE_EVENT_REQUEST;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void process(ISession iSession, PacketNetData netData) throws Exception {
|
||||
RoomFightProto.RoomMapUpdateEventRequest roomMapUpdateEventRequest = RoomFightProto.RoomMapUpdateEventRequest.parseFrom(netData.parseClientProtoNetData());
|
||||
int triggerXY = roomMapUpdateEventRequest.getTriggerXY();
|
||||
int eventType = roomMapUpdateEventRequest.getEventType();
|
||||
RoomManager.updateRoomMapEvent(iSession,triggerXY,eventType);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
package com.ljsd.jieling.handler.workshop;
|
||||
|
||||
import com.ljsd.jieling.handler.BaseHandler;
|
||||
import com.ljsd.jieling.logic.item.WorkShopLogic;
|
||||
import com.ljsd.jieling.netty.cocdex.PacketNetData;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.protocols.MessageTypeProto;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class WorkShopLevelUpHandler extends BaseHandler {
|
||||
@Override
|
||||
public MessageTypeProto.MessageType getMessageCode() {
|
||||
return MessageTypeProto.MessageType.WORKSHOP_LEVELUP_REQUEST;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void process(ISession iSession, PacketNetData netData) throws Exception {
|
||||
WorkShopLogic.getInstance().workShopLevelUp(iSession);
|
||||
}
|
||||
}
|
||||
|
|
@ -239,10 +239,10 @@ public class GlobalDataManaager {
|
|||
fBuilder.addUserMissionInfo(CommonProto.UserMissionInfo.newBuilder().setMissionId(sDailyTasksConfig.getId()).setState(0).setType(dailymissionType).setProgress(0));
|
||||
}
|
||||
if(session.getFiveReady() == 1){ //客户端准备好接受五点刷新请求
|
||||
MessageUtil.sendIndicationMessage(session,1, MessageTypeProto.MessageType.FIVE_PLAYER_REFLUSH_INDICATION_VALUE,null,true);
|
||||
MessageUtil.sendIndicationMessage(session,1, MessageTypeProto.MessageType.FIVE_PLAYER_REFLUSH_INDICATION_VALUE,fBuilder.build(),true);
|
||||
}else{
|
||||
int indicationIndex = session.getIndicationIndex();
|
||||
byte[] byteBuf = MessageUtil.wrappedBuffer(session.getUid(), session.getToken(), indicationIndex,1, MessageTypeProto.MessageType.FIVE_PLAYER_REFLUSH_INDICATION_VALUE, null);
|
||||
byte[] byteBuf = MessageUtil.wrappedBuffer(session.getUid(), session.getToken(), indicationIndex,1, MessageTypeProto.MessageType.FIVE_PLAYER_REFLUSH_INDICATION_VALUE, fBuilder.build());
|
||||
session.setFiveByteBuf(byteBuf);
|
||||
}
|
||||
}
|
||||
|
|
@ -267,9 +267,7 @@ public class GlobalDataManaager {
|
|||
Tea.intToByte(packetData, 4, session.getToken()); //token
|
||||
Tea.intToByte(packetData, 8,msgNum); //msgId
|
||||
Tea.intToByte(packetData, 12, 0); // msgIndex
|
||||
int[] secretKey = Tea.KEY;
|
||||
byte[] finalData = Tea.encrypt2(packetData, secretKey);
|
||||
return finalData;
|
||||
return packetData;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ public class PokemonManager extends MongoBase {
|
|||
}
|
||||
|
||||
public void addRingFirePokemon(Pokemon pokemon) throws Exception {
|
||||
pokemon.init(this.getRootId(),getMongoKey() + ".pokemonMap." + pokemon.getId());
|
||||
pokemon.init(this.getRootId(),getMongoKey() + ".ringFireMap." + pokemon.getId());
|
||||
updateString("ringFireMap." + pokemon.getId(), pokemon);
|
||||
ringFireMap.put(pokemon.getId(),pokemon);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,62 +36,6 @@ public class WorkShopController extends MongoBase {
|
|||
updateString("openBlueStateMap." + type, openBlueStateMap.get(type));
|
||||
}
|
||||
|
||||
public void addWorkShopExp(User user,int addExp) throws Exception {
|
||||
int maxExp = SWorkShopSetting.getMaxExp();
|
||||
if(this.workShopExp >= maxExp){
|
||||
return;
|
||||
}
|
||||
SWorkShopSetting sWorkShopSetting = SWorkShopSetting.getsWorkShopSettingByLevel(this.workShopLevel + 1);
|
||||
int needLevelExp;
|
||||
if (sWorkShopSetting == null) {
|
||||
needLevelExp = maxExp;
|
||||
} else {
|
||||
needLevelExp = sWorkShopSetting.getExp();
|
||||
}
|
||||
int curExp = MathUtils.setBetweenWithMax(this.workShopExp + addExp, 0, maxExp);
|
||||
int oldLevel = this.workShopLevel;
|
||||
while(curExp>=needLevelExp && curExp <= maxExp){
|
||||
setWorkShopLevel(this.workShopLevel+1);
|
||||
sWorkShopSetting = SWorkShopSetting.getsWorkShopSettingByLevel(this.workShopLevel + 1);
|
||||
if(null == sWorkShopSetting){
|
||||
needLevelExp = Integer.MAX_VALUE;
|
||||
continue;
|
||||
}
|
||||
needLevelExp = sWorkShopSetting.getExp();
|
||||
}
|
||||
if(this.workShopLevel>oldLevel){
|
||||
user.getUserMissionManager().onGameEvent(user,GameEvent.WORKSHOP_LEVELUP,oldLevel,this.workShopLevel);
|
||||
}
|
||||
setWorkShopExp(curExp);
|
||||
}
|
||||
|
||||
public void addCookExp(int addExp) throws Exception {
|
||||
int maxExp = SWorkShopSetting.getMaxCookExp();
|
||||
if(this.cookExp >= maxExp){
|
||||
return;
|
||||
}
|
||||
SWorkShopSetting sWorkShopSetting = SWorkShopSetting.getsWorkShopSettingByLevel(this.cookLevel + 1);
|
||||
int needLevelExp;
|
||||
if (sWorkShopSetting == null) {
|
||||
needLevelExp = maxExp;
|
||||
} else {
|
||||
needLevelExp = sWorkShopSetting.getExp();
|
||||
}
|
||||
int curExp = MathUtils.setBetweenWithMax(this.cookExp + addExp, 0, maxExp);
|
||||
while(curExp>=needLevelExp && curExp <= maxExp){
|
||||
setWorkShopLevel(this.cookLevel+1);
|
||||
sWorkShopSetting = SWorkShopSetting.getsWorkShopSettingByLevel(this.cookLevel + 1);
|
||||
if(null == sWorkShopSetting || sWorkShopSetting.getExp() == 0){
|
||||
needLevelExp = Integer.MAX_VALUE;
|
||||
continue;
|
||||
}
|
||||
needLevelExp = sWorkShopSetting.getExp();
|
||||
}
|
||||
setWorkShopExp(curExp);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public int getWorkShopLevel() {
|
||||
return workShopLevel;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ public class FriendLogic {
|
|||
List<Integer> friends = friendManager.getFriends();
|
||||
List<Integer> onlineList = new CopyOnWriteArrayList<>();
|
||||
for (Integer friendId :friends){
|
||||
if(!OnlineUserManager.checkUidOnline(uid)){
|
||||
if(!OnlineUserManager.checkUidOnline(friendId)){
|
||||
continue;
|
||||
}
|
||||
onlineList.add(friendId);
|
||||
|
|
@ -460,13 +460,13 @@ public class FriendLogic {
|
|||
return;
|
||||
}
|
||||
if (playerInfoManager.getNickName().equals(name)){
|
||||
MessageUtil.sendErrorCode(iSession, Global.NO_FIND_ONESELF_STATE, "不能查找自己");
|
||||
MessageUtil.sendErrorResponse(iSession, Global.NO_FIND_ONESELF_STATE, msgId, "不能查找自己");
|
||||
return;
|
||||
}
|
||||
String key = RedisKey.getKey(RedisKey.C_User_Name_Key, name, false);
|
||||
Object friend = RedisUtil.getInstence().get(key);
|
||||
if (friend == null){
|
||||
MessageUtil.sendErrorCode(iSession, Global.USER_NO_EXIT_STATE, "玩家不存在");
|
||||
MessageUtil.sendErrorResponse(iSession, Global.USER_NO_EXIT_STATE, msgId, "玩家不存在");
|
||||
return;
|
||||
}
|
||||
int type = 1;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.ljsd.jieling.logic.hero;
|
||||
|
||||
import com.ljsd.GameApplication;
|
||||
import com.ljsd.jieling.chat.logic.ChatLogic;
|
||||
import com.ljsd.jieling.config.*;
|
||||
import com.ljsd.jieling.core.GlobalsDef;
|
||||
import com.ljsd.jieling.core.VipPrivilegeType;
|
||||
|
|
@ -16,9 +17,12 @@ import com.ljsd.jieling.protocols.CommonProto;
|
|||
import com.ljsd.jieling.protocols.HeroInfoProto;
|
||||
import com.ljsd.jieling.protocols.MessageTypeProto;
|
||||
import com.ljsd.jieling.util.*;
|
||||
import com.sun.org.apache.regexp.internal.RE;
|
||||
import org.omg.CORBA.PUBLIC_MEMBER;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.rmi.ServerError;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
|
|
@ -868,11 +872,14 @@ public class HeroLogic {
|
|||
Pokemon pokemon = item.getValue();
|
||||
int allStage = pokemon.getAllStage();
|
||||
SRingFireConfig sRingFireConfig = SRingFireConfig.getsRingFireByRingIdAndLevel(pokemon.getId(), allStage);
|
||||
int[][] property = sRingFireConfig.getProperty();
|
||||
if(property == null){
|
||||
if(sRingFireConfig == null){
|
||||
continue;
|
||||
}
|
||||
combinedAttribute(property,heroAllAttribute);
|
||||
int[][] property = sRingFireConfig.getProperty();
|
||||
if(property != null){
|
||||
combinedAttribute(property,heroAllAttribute);
|
||||
}
|
||||
|
||||
for(int i=1;i<allStage;i++){
|
||||
SRingFireConfig sRingFireConfigTmp = SRingFireConfig.getsRingFireByRingIdAndLevel(pokemon.getId(), i);
|
||||
int[] fireIds = sRingFireConfigTmp.getFireId();
|
||||
|
|
@ -1117,6 +1124,7 @@ public class HeroLogic {
|
|||
int msgId = MessageTypeProto.MessageType.HERO_COMPOSE_RESPONSE_VALUE;
|
||||
int uid = iSession.getUid();
|
||||
User user = UserManager.getUser(uid);
|
||||
PlayerManager playerInfoManager = user.getPlayerInfoManager();
|
||||
int hasHeroNum = user.getHeroManager().getHeroMap().size();
|
||||
int itemId = item.getItemId();
|
||||
int itemNum = item.getItemNum();
|
||||
|
|
@ -1145,6 +1153,28 @@ public class HeroLogic {
|
|||
.build();
|
||||
MessageUtil.sendMessage(iSession,1,msgId,heroComposeResponse,true); }
|
||||
|
||||
public String getQuality(int natural) {
|
||||
String quality = "N";
|
||||
switch (natural){
|
||||
case 2:
|
||||
quality = "SR";
|
||||
break;
|
||||
case 3:
|
||||
quality = "SSR";
|
||||
break;
|
||||
case 4:
|
||||
quality = "SSR+";
|
||||
break;
|
||||
case 5:
|
||||
quality = "UR";
|
||||
break;
|
||||
case 6:
|
||||
quality = "UR+";
|
||||
break;
|
||||
}
|
||||
return quality;
|
||||
}
|
||||
|
||||
public void getAllPokemon(ISession iSession) throws Exception {
|
||||
int uid = iSession.getUid();
|
||||
User user = UserManager.getUser(uid);
|
||||
|
|
|
|||
|
|
@ -134,9 +134,7 @@ public class WorkShopLogic {
|
|||
totalFailExp+=failExp;
|
||||
}
|
||||
CommonProto.Drop.Builder dropThing = ItemUtil.drop(user, drop,BIReason.WORKSHOP_MAKEFOOD);
|
||||
if(totalFailExp>0){
|
||||
user.getWorkShopController().addCookExp(totalFailExp);
|
||||
}
|
||||
|
||||
|
||||
CommonProto.WorkShopBaseInfo workShopBaseInfo = CommonProto.WorkShopBaseInfo.newBuilder().setType(GlobalsDef.COOK_SHOP_TYPE).setLevle(workShopController.getCookLevel()).setExp(workShopController.getCookExp()).build();
|
||||
PlayerInfoProto.CookFoodResponse build = PlayerInfoProto.CookFoodResponse.newBuilder().setWorkShopBaseInfo(workShopBaseInfo).setDrop(dropThing).build();
|
||||
|
|
@ -275,11 +273,7 @@ public class WorkShopLogic {
|
|||
//熟练度提升
|
||||
int type = sWorkShopFoundationConfig.getType();
|
||||
int addExp = sWorkShopFoundationConfig.getExp()*nums;
|
||||
if(type == GlobalsDef.WORK_SHOP_TYPE){
|
||||
user.getWorkShopController().addWorkShopExp(user,addExp);
|
||||
}else if( type == GlobalsDef.COOK_SHOP_TYPE){
|
||||
user.getWorkShopController().addCookExp(addExp);
|
||||
}
|
||||
|
||||
|
||||
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.WORKSHOP_FOUNDATION_RESPONSE_VALUE,null,true);
|
||||
}
|
||||
|
|
@ -339,10 +333,8 @@ public class WorkShopLogic {
|
|||
user.getEquipManager().addEquip(user,equip);
|
||||
dropBuilder.addEquipId(CBean2Proto.getEquipProto(equip));
|
||||
}
|
||||
user.getWorkShopController().addWorkShopExp(user,addExp);
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.WORKSHOP_CREATE_EQUIP,nums);
|
||||
}else if( type == GlobalsDef.COOK_SHOP_TYPE){
|
||||
user.getWorkShopController().addCookExp(addExp);
|
||||
Map<Integer,Integer> items = new HashMap<>();
|
||||
items.put(equipTid,SMysteryFoodSetting.getsMysteryFoodSetting().getFoodNum()*nums);
|
||||
ItemUtil.addItem(user,items,dropBuilder,BIReason.WORKSHOP_CREATEQUIP);
|
||||
|
|
@ -373,7 +365,6 @@ public class WorkShopLogic {
|
|||
clone.rebuildEquip(user.getWorkShopController().getWorkShopLevel());
|
||||
equipManager.setUnDetermined(clone);
|
||||
int addExp = sWorkShopRebuildConfig.getExp();
|
||||
user.getWorkShopController().addWorkShopExp(user,addExp);
|
||||
PlayerInfoProto.WorkShopRebuildRespoonse build = PlayerInfoProto.WorkShopRebuildRespoonse.newBuilder().setEquip(CBean2Proto.getEquipProto(clone)).build();
|
||||
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.WORKSHOP_REBUILD_RESPONSE_VALUE,build,true);
|
||||
}
|
||||
|
|
@ -439,4 +430,23 @@ public class WorkShopLogic {
|
|||
}
|
||||
return "";
|
||||
}
|
||||
public void workShopLevelUp(ISession session)throws Exception{
|
||||
int uid = session.getUid();
|
||||
User user = UserManager.getUser(uid);
|
||||
WorkShopController controller = user.getWorkShopController();
|
||||
int currLevel = controller.getWorkShopLevel();
|
||||
SWorkShopSetting shopSetting = SWorkShopSetting.getsWorkShopSettingByLevel(currLevel);
|
||||
int[][] itemInfo = shopSetting.getExp();
|
||||
if(currLevel>=SWorkShopSetting.getMaxLevel()){
|
||||
MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.WORKSHOP_LEVELUP_RESPONSE_VALUE,"已满级");
|
||||
return;
|
||||
}
|
||||
boolean costResult = ItemUtil.itemCost(user,itemInfo,1,1);
|
||||
if(costResult){
|
||||
controller.setWorkShopLevel(currLevel+1);
|
||||
MessageUtil.sendMessage(uid,1,MessageTypeProto.MessageType.WORKSHOP_LEVELUP_RESPONSE_VALUE,null,true);
|
||||
}else{
|
||||
MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.WORKSHOP_LEVELUP_RESPONSE_VALUE,"道具不足");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,12 +10,11 @@ import com.ljsd.jieling.protocols.RoomFightProto;
|
|||
import com.ljsd.jieling.protocols.RoomProto;
|
||||
import com.ljsd.jieling.util.MessageUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
|
||||
public class Room {
|
||||
private int roomId;
|
||||
private RoomPlayerInfo[] roomPlayerInfos;
|
||||
private Map<Integer,RoomPlayerInfo> roomPlayerInfoMap;
|
||||
private long gameStartTimestamp; //游戏开始时间戳
|
||||
//private static long MAX_GAME_LENGTH = 2*60*1000; //2分钟
|
||||
private static int MAX_GAME_LENGTH = 15*1000; //15秒测试使用
|
||||
|
|
@ -27,29 +26,25 @@ public class Room {
|
|||
{
|
||||
this.roomId = roomId;
|
||||
this.type = type;
|
||||
roomPlayerInfos = new RoomPlayerInfo[playerArray.length];
|
||||
for(int i=0; i<playerArray.length; i++){
|
||||
roomPlayerInfos[i] = new RoomPlayerInfo(playerArray[i]);
|
||||
roomPlayerInfoMap = new HashMap<>(2);
|
||||
for(int uid:playerArray){
|
||||
roomPlayerInfoMap.put(uid,new RoomPlayerInfo(uid));
|
||||
}
|
||||
}
|
||||
|
||||
private RoomPlayerInfo getPlayer(int uid){
|
||||
for(int i=0; i<roomPlayerInfos.length; i++){
|
||||
if(roomPlayerInfos[i] != null && roomPlayerInfos[i].getUid() == uid){
|
||||
return roomPlayerInfos[i];
|
||||
}
|
||||
}
|
||||
return null;
|
||||
return roomPlayerInfoMap.get(uid);
|
||||
}
|
||||
public boolean removeUserIsEndGame(RoomProto.RoomCancelMatchRequest request, User user)
|
||||
{
|
||||
int curUserNumber = 0;
|
||||
for(int i=0; i<roomPlayerInfos.length; i++){
|
||||
if(user.getId() == roomPlayerInfos[i].getUid()){
|
||||
Iterator<Integer> iterator = roomPlayerInfoMap.keySet().iterator();
|
||||
while (iterator.hasNext()){
|
||||
Integer uid = iterator.next();
|
||||
if(user.getId() == uid){
|
||||
//将该用户从房间中移除
|
||||
roomPlayerInfos[i] = null;
|
||||
}
|
||||
if(roomPlayerInfos[i] != null){
|
||||
iterator.remove();
|
||||
}else{
|
||||
curUserNumber++;
|
||||
}
|
||||
}
|
||||
|
|
@ -67,14 +62,10 @@ public class Room {
|
|||
if(user != null){
|
||||
MessageUtil.sendRoomGameEndIndication(user.getId(), roomId);
|
||||
}
|
||||
for(int i=0; i<roomPlayerInfos.length; i++){
|
||||
if(roomPlayerInfos[i] == null) {
|
||||
continue;
|
||||
}
|
||||
//发送游戏结束消息
|
||||
user = UserManager.getUserInMem(roomPlayerInfos[i].getUid());
|
||||
Set<Integer> uids = roomPlayerInfoMap.keySet();
|
||||
for(int uid :uids){
|
||||
user = UserManager.getUserInMem(uid);
|
||||
user.getRoomInfo().setRoomId(-1);
|
||||
|
||||
MessageUtil.sendRoomGameEndIndication(user.getId(), roomId);
|
||||
}
|
||||
}
|
||||
|
|
@ -99,28 +90,22 @@ public class Room {
|
|||
|
||||
public void startGame(){
|
||||
gameStartTimestamp = System.currentTimeMillis();
|
||||
for(int i=0; i<roomPlayerInfos.length; i++){
|
||||
if(roomPlayerInfos[i] == null) {
|
||||
continue;
|
||||
}
|
||||
roomPlayerInfos[i].setState(RoomPlayerInfo.GAMING_STATE);
|
||||
for(RoomPlayerInfo roomPlayerInfo : roomPlayerInfoMap.values()){
|
||||
roomPlayerInfo.setState(RoomPlayerInfo.GAMING_STATE);
|
||||
//发送游戏开始消息
|
||||
MessageUtil.sendRoomStartGameIndication(roomPlayerInfos[i].getUid(), roomId, type);
|
||||
MessageUtil.sendRoomStartGameIndication(roomPlayerInfo.getUid(), roomId, type);
|
||||
}
|
||||
}
|
||||
|
||||
public void ready(int uid){
|
||||
int activeNumber = 0;
|
||||
int readyNumber = 0;
|
||||
for(int i=0; i<roomPlayerInfos.length; i++){
|
||||
if(roomPlayerInfos[i] != null){
|
||||
continue;
|
||||
}
|
||||
for(RoomPlayerInfo roomPlayerInfo : roomPlayerInfoMap.values()){
|
||||
activeNumber++;
|
||||
if(roomPlayerInfos[i].getUid() == uid){
|
||||
roomPlayerInfos[i].setState(RoomPlayerInfo.READYED_STATE);
|
||||
if(roomPlayerInfo.getUid() == uid){
|
||||
roomPlayerInfo.setState(RoomPlayerInfo.READYED_STATE);
|
||||
}
|
||||
if(roomPlayerInfos[i].getState() != RoomPlayerInfo.UNREADY_STATE){
|
||||
if(roomPlayerInfo.getState() == RoomPlayerInfo.READYED_STATE){
|
||||
readyNumber++;
|
||||
}
|
||||
}
|
||||
|
|
@ -149,21 +134,17 @@ public class Room {
|
|||
if(!result){
|
||||
return;
|
||||
}
|
||||
|
||||
for(int i=0; i<roomPlayerInfos.length; i++){
|
||||
if(roomPlayerInfos[i] == null){
|
||||
continue;
|
||||
}
|
||||
MessageUtil.sendRoomSyncOtherMoveIndiction(roomPlayerInfos[i].getUid(), request.getTartXYsList());
|
||||
Set<Integer> uids = roomPlayerInfoMap.keySet();
|
||||
for(int uid : uids){
|
||||
MessageUtil.sendRoomSyncOtherMoveIndiction(uid,iSession.getUid(),request.getTartXYsList());
|
||||
}
|
||||
}
|
||||
|
||||
//测试使用
|
||||
public RoomPlayerInfo[] getPlayerArray()
|
||||
{
|
||||
return roomPlayerInfos;
|
||||
public Map<Integer,RoomPlayerInfo> getRoomPlayers(){
|
||||
return roomPlayerInfoMap;
|
||||
}
|
||||
|
||||
|
||||
public int getType(){
|
||||
return type;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
package com.ljsd.jieling.logic.room;
|
||||
|
||||
import com.google.protobuf.GeneratedMessage;
|
||||
import com.ljsd.jieling.logic.OnlineUserManager;
|
||||
import com.ljsd.jieling.logic.dao.UserManager;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
|
|
@ -7,12 +9,16 @@ import com.ljsd.jieling.protocols.CommonProto;
|
|||
import com.ljsd.jieling.protocols.MessageTypeProto;
|
||||
import com.ljsd.jieling.protocols.RoomFightProto;
|
||||
import com.ljsd.jieling.protocols.RoomProto;
|
||||
import com.ljsd.jieling.thread.task.MinuteTask;
|
||||
import com.ljsd.jieling.util.CellUtil;
|
||||
import com.ljsd.jieling.util.MessageUtil;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class RoomManager {
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(MinuteTask.class);
|
||||
//先加入的玩家,在符合规则的情况下,要先匹配上
|
||||
//value uid
|
||||
private static final List<Integer> matchingPlayerList = new ArrayList();
|
||||
|
|
@ -107,18 +113,22 @@ public class RoomManager {
|
|||
List<CommonProto.Cell> cells = new ArrayList<>();
|
||||
|
||||
List<RoomProto.AgentInfo> agentInfoList = new ArrayList<>();
|
||||
|
||||
Map<Integer, RoomPlayerInfo> roomPlayers = room.getRoomPlayers();
|
||||
for(int i=0; i<playerArray.length; i++)
|
||||
{
|
||||
User user = UserManager.getUserInMem(playerArray[i]);
|
||||
user.getRoomInfo().setMatching(false);
|
||||
user.getRoomInfo().setRoomId(roomId);
|
||||
RoomProto.AgentInfo.Builder agentInfoBuilder = RoomProto.AgentInfo.newBuilder();
|
||||
int curXY = CellUtil.xy2Pos(4 + i, 4 + i);
|
||||
agentInfoBuilder.setPlayerUid(user.getId())
|
||||
.setCurHp(1000)
|
||||
.setMaxHp(1000)
|
||||
.setCamp(i)
|
||||
.setCurXY(CellUtil.xy2Pos(4+i,4+i));
|
||||
.setCurXY(curXY);
|
||||
RoomPlayerInfo roomPlayerInfo = roomPlayers.get(playerArray[i]);
|
||||
roomPlayerInfo.setCurPos(curXY);
|
||||
roomPlayerInfo.setCamp(i);
|
||||
agentInfoList.add(agentInfoBuilder.build());
|
||||
}
|
||||
|
||||
|
|
@ -141,16 +151,15 @@ public class RoomManager {
|
|||
return;
|
||||
}
|
||||
List<CommonProto.Cell> cells = new ArrayList<>();
|
||||
RoomPlayerInfo[] playerArray = room.getPlayerArray();
|
||||
int i=0;
|
||||
Map<Integer, RoomPlayerInfo> roomPlayers = room.getRoomPlayers();
|
||||
List<RoomProto.AgentInfo> agentInfoList = new ArrayList<>();
|
||||
for(RoomPlayerInfo roomPlayerInfo:playerArray) {
|
||||
for(RoomPlayerInfo roomPlayerInfo:roomPlayers.values()) {
|
||||
RoomProto.AgentInfo.Builder agentInfoBuilder = RoomProto.AgentInfo.newBuilder();
|
||||
agentInfoBuilder.setPlayerUid(roomPlayerInfo.getUid())
|
||||
.setCurHp(1000)
|
||||
.setMaxHp(1000)
|
||||
.setCamp(i++)
|
||||
.setCurXY(CellUtil.xy2Pos(4+i,4+i));
|
||||
.setCamp(roomPlayerInfo.getCamp())
|
||||
.setCurXY(roomPlayerInfo.getCurPos());
|
||||
agentInfoList.add(agentInfoBuilder.build());
|
||||
}
|
||||
MessageUtil.sendRoomInfoToPerson(iSession, room.getType(), roomId, 1, cells, agentInfoList);
|
||||
|
|
@ -191,11 +200,6 @@ public class RoomManager {
|
|||
MessageUtil.sendRoomStartGameReadyResponse(iSession, responseMsgId, room.getType());
|
||||
room.ready(user.getId());
|
||||
}
|
||||
//测试使用
|
||||
public static List getMatchingPlayerList()
|
||||
{
|
||||
return matchingPlayerList;
|
||||
}
|
||||
|
||||
//客户端发起请求,获取开始游戏时的初始数据
|
||||
public static synchronized void startGameRequset(ISession iSession, RoomFightProto.RoomGameStartRequest request, int responseMsgId) throws Exception {
|
||||
|
|
@ -243,5 +247,67 @@ public class RoomManager {
|
|||
{
|
||||
return roomMap;
|
||||
}
|
||||
|
||||
public static void updateRoomMapEvent(ISession iSession, int triggerXY, int eventType) throws Exception {
|
||||
User user = UserManager.getUserInMem(iSession.getUid());
|
||||
int roomId = user.getRoomInfo().getRoomId();
|
||||
int responseMsgId = MessageTypeProto.MessageType.ROOM_MAP_UPDATE_EVENT_RESPONSE_VALUE;
|
||||
if(roomId == -1){
|
||||
//没有在房间中
|
||||
MessageUtil.sendErrorResponse(iSession, 0, responseMsgId, "没有在房间中");
|
||||
return;
|
||||
}
|
||||
|
||||
Room room = getRoomById(user.getRoomInfo().getRoomId());
|
||||
if(room == null){
|
||||
//房间已经销毁,如果走到这一步,说明其他地方有错了
|
||||
MessageUtil.sendErrorResponse(iSession, 0, responseMsgId, "房间已经销毁");
|
||||
return;
|
||||
}
|
||||
RoomPlayerInfo mine = room.getRoomPlayers().get(iSession.getUid());
|
||||
mine.move(System.currentTimeMillis());
|
||||
if(mine.getCurPos() != triggerXY){
|
||||
LOGGER.info("the uid={},the server pos={},the client pos ={}",iSession.getUid(),mine.getCurPos(),triggerXY);
|
||||
mine.setCurPos(triggerXY);
|
||||
}
|
||||
|
||||
MessageUtil.sendMessage(iSession, 1, responseMsgId, null,true);
|
||||
int targetUid = -1;
|
||||
for(RoomPlayerInfo roomPlayerInfo : room.getRoomPlayers().values()){
|
||||
int uid = roomPlayerInfo.getUid();
|
||||
int curPos = roomPlayerInfo.getCurPos();
|
||||
if(uid != iSession.getUid() && CellUtil.checkIsNextCell(curPos,triggerXY)){
|
||||
RoomFightProto.RoomMapPointIndication build = RoomFightProto.RoomMapPointIndication.newBuilder().setEventType(eventType).setPlayer(uid).setTriggerXY(triggerXY).build();
|
||||
sendRoomMapPointIndication(room.getRoomPlayers().keySet(),build,MessageTypeProto.MessageType.ROOM_MAP_POINT_INDICATION_VALUE);
|
||||
build = RoomFightProto.RoomMapPointIndication.newBuilder().setEventType(eventType).setPlayer(iSession.getUid()).setTriggerXY(triggerXY).build();
|
||||
sendRoomMapPointIndication(room.getRoomPlayers().keySet(),build,MessageTypeProto.MessageType.ROOM_MAP_POINT_INDICATION_VALUE);
|
||||
targetUid = uid;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(targetUid!=-1){
|
||||
//更新血量
|
||||
RoomFightProto.RoomTriggerFightIndication build = RoomFightProto.RoomTriggerFightIndication.newBuilder().setFightResult(1)
|
||||
.setBluecurHp(150)
|
||||
.setBluePlayer(iSession.getUid())
|
||||
.setRedcurHp(100)
|
||||
.setRedPlayer(targetUid)
|
||||
.build();
|
||||
sendRoomMapPointIndication(room.getRoomPlayers().keySet(),build,MessageTypeProto.MessageType.ROOM_PLAY_HP_UPDATE_INDICATION_VALUE);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public static void sendRoomMapPointIndication( Set<Integer> notifyUids,GeneratedMessage generatedMessage,int msgId){
|
||||
for(int uid : notifyUids){
|
||||
ISession sessionByUid = OnlineUserManager.getSessionByUid(uid);
|
||||
if(sessionByUid == null){
|
||||
continue;
|
||||
}
|
||||
MessageUtil.sendIndicationMessage(sessionByUid,1, msgId,generatedMessage,true);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.ljsd.jieling.logic.room;
|
||||
|
||||
import com.ljsd.jieling.protocols.RoomFightProto;
|
||||
import com.ljsd.jieling.util.CellUtil;
|
||||
import com.ljsd.jieling.util.MapPoint;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
|
@ -17,8 +18,8 @@ public class RoomPlayerInfo {
|
|||
private int curPos;
|
||||
private int camp;
|
||||
private long preMoveTimestamp; //上次移动时间
|
||||
private int speed; //移动速度
|
||||
private List<Integer> path; //根据目标点计算出来的移动路径
|
||||
private int speed=500; //移动速度
|
||||
private List<Integer> path=new ArrayList<>(0); //根据目标点计算出来的移动路径
|
||||
|
||||
public RoomPlayerInfo(int uid) {
|
||||
this.uid = uid;
|
||||
|
|
@ -27,22 +28,14 @@ public class RoomPlayerInfo {
|
|||
|
||||
//用户移动到新位置, 返回下一个点的坐标,用户展示客户端的转向,及模拟移动
|
||||
public boolean move(List<Integer> path){
|
||||
int nextXY = path.get(0); //移动时的下一个点
|
||||
if(MapPoint.getX(curPos) == MapPoint.getX(nextXY)){
|
||||
if(MapPoint.getY(curPos) != MapPoint.getY(nextXY) + 1 || MapPoint.getY(curPos) != MapPoint.getY(nextXY) -1){
|
||||
//下一个点不是相邻的格子,作弊了
|
||||
return false;
|
||||
}
|
||||
if(!this.path.isEmpty()){
|
||||
move(System.currentTimeMillis());
|
||||
}
|
||||
if(MapPoint.getY(curPos) == MapPoint.getY(nextXY)){
|
||||
if(MapPoint.getX(curPos) != MapPoint.getX(nextXY) + 1 || MapPoint.getX(curPos) != MapPoint.getX(nextXY) -1){
|
||||
//下一个点不是相邻的格子,作弊了
|
||||
return false;
|
||||
}
|
||||
boolean continuous = CellUtil.isContinuous(curPos, path);
|
||||
if(continuous){
|
||||
this.path = path;
|
||||
}
|
||||
|
||||
this.path = path;
|
||||
return true;
|
||||
return continuous;
|
||||
}
|
||||
|
||||
//服务器模拟移动,如果前端模拟,则不需要服务气端调用这个函数,服务器端在事件触发的时候做校验即可
|
||||
|
|
@ -60,6 +53,7 @@ public class RoomPlayerInfo {
|
|||
for(int i=0; i<moveDistance && i<path.size(); i++){
|
||||
curPos = path.remove(0);
|
||||
}
|
||||
preMoveTimestamp = timestamp;
|
||||
return curPos;
|
||||
}
|
||||
public int getUid() {
|
||||
|
|
|
|||
|
|
@ -142,6 +142,10 @@ public class ISession extends NettyGameSession {
|
|||
return fiveReady;
|
||||
}
|
||||
|
||||
public void setFiveReady(int fiveReady) {
|
||||
this.fiveReady = fiveReady;
|
||||
}
|
||||
|
||||
public byte[] getFiveByteBuf() {
|
||||
return fiveByteBuf;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ import java.io.IOException;
|
|||
public class PlatConfigureTask implements Runnable {
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(PlatConfigureTask.class);
|
||||
public static int SLEEP_INTEVAL_TIME = 60 * 1000; //每1分钟检查一次
|
||||
public static int SLEEP_INTEVAL_TIME = 60; //每1分钟检查一次
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
|
|
|
|||
|
|
@ -233,14 +233,17 @@ public class CBean2Proto {
|
|||
chatInfo.setMsg(message);
|
||||
chatInfo.setHead(playerInfoManager.getHead());
|
||||
chatInfo.setFrame(playerInfoManager.getFamilyId());
|
||||
chatInfo.setSoulVal(playerInfoManager.getMaxForce());
|
||||
return chatInfo.build();
|
||||
}
|
||||
|
||||
public static ChatProto.ChatInfo getSysChatInfoBuilder(String message,int type,int startTime, int endTime, int priorityLevel, int frequency) {
|
||||
public static ChatProto.ChatInfo getSysChatInfoBuilder(String message,int messageType,int itemId,int type,int startTime, int endTime, int priorityLevel, int frequency) {
|
||||
ChatProto.ChatInfo.Builder chatInfo = ChatProto.ChatInfo.newBuilder();
|
||||
chatInfo.setItemId(itemId);
|
||||
chatInfo.setTimes(System.currentTimeMillis());
|
||||
chatInfo.setMsg(message);
|
||||
chatInfo.setType(type);
|
||||
chatInfo.setMessageType(messageType);
|
||||
if (type == 1){
|
||||
chatInfo.setStartTime(startTime);
|
||||
chatInfo.setEndTime(endTime);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.ljsd.jieling.util;
|
||||
|
||||
import com.ljsd.jieling.chat.logic.ChatLogic;
|
||||
import com.ljsd.jieling.config.*;
|
||||
import com.ljsd.jieling.core.GlobalsDef;
|
||||
import com.ljsd.jieling.core.VipPrivilegeType;
|
||||
|
|
@ -10,6 +11,7 @@ import com.ljsd.jieling.handler.map.MapManager;
|
|||
import com.ljsd.jieling.handler.map.TemporaryItems;
|
||||
import com.ljsd.jieling.logic.dao.*;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.hero.HeroLogic;
|
||||
import com.ljsd.jieling.logic.mail.MailLogic;
|
||||
import com.ljsd.jieling.logic.mission.GameEvent;
|
||||
import com.ljsd.jieling.protocols.CommonProto;
|
||||
|
|
@ -388,6 +390,9 @@ public class ItemUtil {
|
|||
if(itemNum>=0){
|
||||
itemProtoList.add(CBean2Proto.getItem(item,itemNum));
|
||||
}
|
||||
if (entry.getKey() == Global.STAMINA){
|
||||
LOGGER.info("增加的=========num={}, 操作后={}, 时间={}",itemNum,user.getItemManager().getItemMap().get(Global.STAMINA).getItemNum(),user.getItemManager().getItemMap().get(Global.STAMINA).getEndingTime());
|
||||
}
|
||||
}
|
||||
if (dropBuilder != null) {
|
||||
dropBuilder.addAllItemlist(itemProtoList);
|
||||
|
|
@ -541,6 +546,9 @@ public class ItemUtil {
|
|||
temporaryItemList.remove(userItem.getKey());
|
||||
needCount = Math.abs(leftNum);
|
||||
}
|
||||
if (userItem.getKey() == Global.STAMINA){
|
||||
LOGGER.info("消耗的=========num={}, 操作后={}, 时间={}",needCount,user.getItemManager().getItemMap().get(Global.STAMINA).getItemNum(),user.getItemManager().getItemMap().get(Global.STAMINA).getEndingTime());
|
||||
}
|
||||
}
|
||||
Item myItem = itemManager.getItem(userItem.getKey());
|
||||
if (null == myItem) {
|
||||
|
|
@ -679,7 +687,7 @@ public class ItemUtil {
|
|||
}
|
||||
continue;
|
||||
}
|
||||
addCard(user, entry.getKey(),heroList);
|
||||
addCard(user, entry.getKey(),heroList,reason);
|
||||
}
|
||||
}
|
||||
if (reward.length() > 0) {
|
||||
|
|
@ -689,12 +697,24 @@ public class ItemUtil {
|
|||
dropBuilder.addAllHero(heroList);
|
||||
}
|
||||
|
||||
public static void addCard(User user,int cardId,List<CommonProto.Hero> heroList) throws Exception {
|
||||
public static void addCard(User user,int cardId,List<CommonProto.Hero> heroList,int reason) throws Exception {
|
||||
HeroManager heroManager = user.getHeroManager();
|
||||
PlayerManager playerInfoManager = user.getPlayerInfoManager();
|
||||
int[] heroStar = SItem.getsItemMap().get(cardId).getHeroStar();
|
||||
Hero hero = new Hero(user.getId(),heroStar[0],heroStar[1]);
|
||||
heroManager.addHero(hero);
|
||||
heroList.add(CBean2Proto.getHero(hero));
|
||||
String message = "";
|
||||
SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId());
|
||||
if (scHero.getNatural() >= 3) {
|
||||
String quality = HeroLogic.getInstance().getQuality(scHero.getNatural());
|
||||
if (reason == BIReason.COMPOS_HERO_REWARD) {
|
||||
message = SErrorCodeEerverConfig.getI18NMessage("lamp_lottery_synthesize_content", new Object[]{playerInfoManager.getNickName(), quality, scHero.getReadingName()});
|
||||
} else if (reason == BIReason.HERO_RANDOM) {
|
||||
message = SErrorCodeEerverConfig.getI18NMessage("lamp_lottery_recruit_content", new Object[]{playerInfoManager.getNickName(), quality, scHero.getReadingName()});
|
||||
}
|
||||
ChatLogic.getInstance().sendSysChatMessage(message,Global.LUCKY_LUCK,hero.getTemplateId(),0,0,0,0,0);
|
||||
}
|
||||
user.getUserMissionManager().onGameEvent(user,GameEvent.GET_HERO,heroStar[0],heroStar[1]);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -134,7 +134,7 @@ public class MessageUtil {
|
|||
}
|
||||
GeneratedMessage generatedMessage = CommonProto.ErrorResponse.newBuilder().setErrCode(errorCode).setErrMsg(errMsg).build();
|
||||
byte[] byteBuf = wrappedBuffer(session.getUid(), session.getToken(), session.getIndex(),
|
||||
errorCode, MessageTypeProto.MessageType.ERROR_CODE_INDICATION_VALUE, generatedMessage);
|
||||
0, MessageTypeProto.MessageType.ERROR_CODE_INDICATION_VALUE, generatedMessage);
|
||||
session.writeAndFlush(byteBuf);
|
||||
}
|
||||
|
||||
|
|
@ -147,7 +147,7 @@ public class MessageUtil {
|
|||
generatedMessage = CommonProto.ErrorResponse.newBuilder().setErrCode(errorCode).setErrMsg(errMsg).build();
|
||||
LOGGER.error("send error msg,the uid={},the msgId={},the errMsg={}",session.getUid(),msgId,errMsg);
|
||||
byte[] byteBuf = wrappedBuffer(session.getUid(), session.getToken(), session.getIndex(),
|
||||
errorCode,msgId, generatedMessage);
|
||||
0,msgId, generatedMessage);
|
||||
session.writeAndFlush(byteBuf);
|
||||
session.putBackMassageToMap(byteBuf);
|
||||
}
|
||||
|
|
@ -279,9 +279,9 @@ public class MessageUtil {
|
|||
builder.setServerTimestamp(System.currentTimeMillis());
|
||||
sendMessage(session, 1, responseMsgId, builder.build(), true);
|
||||
}
|
||||
public static void sendRoomSyncOtherMoveIndiction(int uid, List<Integer> path) {
|
||||
public static void sendRoomSyncOtherMoveIndiction(int uid, int targetUid,List<Integer> path) {
|
||||
RoomFightProto.RoomSyncOtherMoveIndiction.Builder builder = RoomFightProto.RoomSyncOtherMoveIndiction.newBuilder();
|
||||
builder.setUid(uid);
|
||||
builder.setUid(targetUid);
|
||||
builder.addAllTartXYs(path);
|
||||
ISession sessionByUid = OnlineUserManager.getSessionByUid(uid);
|
||||
if(sessionByUid!=null){
|
||||
|
|
|
|||
Loading…
Reference in New Issue