Merge branch 'master' of 60.1.1.230:backend/jieling_server

back_recharge
wangyuan 2019-06-19 12:34:41 +08:00
commit aeba5f5237
27 changed files with 389 additions and 258 deletions

View File

@ -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>阶。

View File

@ -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

View File

@ -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);
}
}

View File

@ -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;
}
}

View File

@ -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;

View File

@ -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;
}

View File

@ -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 ;//抽卡

View File

@ -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; //勤勉
}

View File

@ -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);
}
}

View File

@ -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;
}

View File

@ -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 {

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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;
}

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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;

View File

@ -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);

View File

@ -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,"道具不足");
}
}
}

View File

@ -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;
}

View File

@ -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);
}
}
}

View File

@ -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() {

View File

@ -142,6 +142,10 @@ public class ISession extends NettyGameSession {
return fiveReady;
}
public void setFiveReady(int fiveReady) {
this.fiveReady = fiveReady;
}
public byte[] getFiveByteBuf() {
return fiveByteBuf;
}

View File

@ -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() {

View File

@ -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);

View File

@ -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]);
}

View File

@ -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){