竞技场
parent
c5b27e63d4
commit
1ebb90b31b
|
|
@ -1,24 +1,24 @@
|
||||||
Id Option
|
Id Option
|
||||||
int mut,int#int,1
|
int mut,int#int,1
|
||||||
101001 101001#101002
|
101001 101001
|
||||||
101002 101003#101004
|
101002 101002
|
||||||
101003 101005#101006
|
101003 101003
|
||||||
101004 101007#101008
|
101004 101004
|
||||||
101005 101009#101010
|
101005 101005
|
||||||
101006 101011#101012
|
101006 101006
|
||||||
101007 101013#101014
|
101007 101007
|
||||||
101008 101015#101016
|
101008 101008
|
||||||
101009 101017#101018
|
101009 101009
|
||||||
101010 101019#101020
|
101010 101010
|
||||||
101011 101021#101022#101023#101024
|
101011 101011#101012#101013#101014
|
||||||
101012 101025#101026
|
101012 101015
|
||||||
101013 101027#101028
|
101013 101016
|
||||||
101014 101029#101030
|
101014 101017
|
||||||
101015 101031#101032
|
101015 101018
|
||||||
101016 101033#101034
|
101016 101019
|
||||||
101017 101035#101036
|
101017 101020
|
||||||
101018 101037#101038
|
101018 101021
|
||||||
101019 101039#101040
|
101019 101022
|
||||||
0 null
|
0 null
|
||||||
102001 102001
|
102001 102001
|
||||||
102002 102002
|
102002 102002
|
||||||
|
|
|
||||||
|
|
@ -21,25 +21,7 @@ int int
|
||||||
101019 1
|
101019 1
|
||||||
101020 1
|
101020 1
|
||||||
101021 1
|
101021 1
|
||||||
101022 1
|
101022 4
|
||||||
101023 1
|
|
||||||
101024 1
|
|
||||||
101025 1
|
|
||||||
101026 4
|
|
||||||
101027 1
|
|
||||||
101028 4
|
|
||||||
101029 1
|
|
||||||
101030 4
|
|
||||||
101031 1
|
|
||||||
101032 4
|
|
||||||
101033 1
|
|
||||||
101034 4
|
|
||||||
101035 1
|
|
||||||
101036 4
|
|
||||||
101037 1
|
|
||||||
101038 4
|
|
||||||
101039 4
|
|
||||||
101040 4
|
|
||||||
0 0
|
0 0
|
||||||
102001 1
|
102001 1
|
||||||
102002 1
|
102002 1
|
||||||
|
|
|
||||||
|
|
@ -33,4 +33,20 @@ int mut,int#int,1 int int
|
||||||
31 6031#1 3 100
|
31 6031#1 3 100
|
||||||
32 6032#1 3 100
|
32 6032#1 3 100
|
||||||
33 14#88888 4 100
|
33 14#88888 4 100
|
||||||
34 14#99999 4 100
|
34 3001#1 4 100
|
||||||
|
35 3002#1 4 100
|
||||||
|
36 3003#1 4 100
|
||||||
|
37 3004#1 4 100
|
||||||
|
38 3005#1 4 100
|
||||||
|
39 3006#1 4 100
|
||||||
|
40 3007#1 4 100
|
||||||
|
41 3008#1 4 100
|
||||||
|
42 3009#1 4 100
|
||||||
|
43 3010#1 4 100
|
||||||
|
44 3011#1 4 100
|
||||||
|
45 3101#1 4 100
|
||||||
|
46 3102#1 4 100
|
||||||
|
47 3103#1 4 100
|
||||||
|
48 3104#1 4 100
|
||||||
|
49 3105#1 4 100
|
||||||
|
50 3106#1 4 100
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
Id MainCost SecondaryCost LevelLimit FreeTime FreeInterval ExtraItem SeasonTimes SeasonOpen SeasonEnd RandomPool VipLimit MaxNum
|
Id MainCost SecondaryCost LevelLimit FreeTime ExtraItem SeasonTimes SeasonOpen SeasonEnd RandomPool VipLimit MaxNum
|
||||||
int mut,int#int,2 int int int int mut,int#int,1 int string string int int int
|
int mut,int#int,2 int int int mut,int#int,1 int string string int int int
|
||||||
1 19#1 1 0 1 1440 15#1 1 20190510 100000 20190517 100000 4 0 999
|
1 19#1 1 0 1 15#1 1 20190510 100000 20190517 100000 4 0 999
|
||||||
2 19#10 10 0 0 0 15#11 1 20190510 100000 20190517 100000 4 0 999
|
2 19#10 10 0 0 15#11 1 20190510 100000 20190517 100000 4 0 999
|
||||||
|
|
|
||||||
|
|
@ -54,36 +54,36 @@ int int int int int int
|
||||||
130055 55 2 1 13 100
|
130055 55 2 1 13 100
|
||||||
130056 56 3 1 13 100
|
130056 56 3 1 13 100
|
||||||
140005 5 1267 844 14 100
|
140005 5 1267 844 14 100
|
||||||
140011 11 1600 960 14 100
|
140101 101 1600 960 14 100
|
||||||
140012 12 1600 960 14 100
|
140102 102 1600 960 14 100
|
||||||
140013 13 1600 960 14 100
|
140103 103 1600 960 14 100
|
||||||
140014 14 1600 960 14 100
|
140104 104 1600 960 14 100
|
||||||
140015 15 1600 960 14 100
|
140105 105 1600 960 14 100
|
||||||
140016 16 1600 960 14 100
|
140106 106 1600 960 14 100
|
||||||
140053 53 12 7 14 100
|
140053 53 12 7 14 100
|
||||||
140054 54 12 7 14 100
|
140054 54 12 7 14 100
|
||||||
140055 55 12 7 14 100
|
140055 55 12 7 14 100
|
||||||
140056 56 42 25 14 100
|
140056 56 42 25 14 100
|
||||||
150001 1 5400 3600 15 100
|
150001 1 5400 3600 15 100
|
||||||
150002 2 360 240 15 100
|
150002 2 360 240 15 100
|
||||||
150021 21 1600 960 15 100
|
150101 101 1600 960 15 100
|
||||||
150022 22 1600 960 15 100
|
150102 102 1600 960 15 100
|
||||||
150023 23 1600 960 15 100
|
150103 103 1600 960 15 100
|
||||||
150024 24 1600 960 15 100
|
150104 104 1600 960 15 100
|
||||||
150025 25 1600 960 15 100
|
150105 105 1600 960 15 100
|
||||||
150026 26 1600 960 15 100
|
150106 106 1600 960 15 100
|
||||||
150053 53 7 4 15 100
|
150053 53 7 4 15 100
|
||||||
150054 54 7 4 15 100
|
150054 54 7 4 15 100
|
||||||
150060 60 20 12 15 100
|
150060 60 20 12 15 100
|
||||||
160001 1 5400 3600 16 100
|
160001 1 5400 3600 16 100
|
||||||
160002 2 360 240 16 100
|
160002 2 360 240 16 100
|
||||||
160004 4 2340 1560 16 100
|
160004 4 2340 1560 16 100
|
||||||
160021 21 1600 960 16 100
|
160101 101 1600 960 16 100
|
||||||
160022 22 1600 960 16 100
|
160102 102 1600 960 16 100
|
||||||
160023 23 1600 960 16 100
|
160103 103 1600 960 16 100
|
||||||
160024 24 1600 960 16 100
|
160104 104 1600 960 16 100
|
||||||
160025 25 1600 960 16 100
|
160105 105 1600 960 16 100
|
||||||
160026 26 1600 960 16 100
|
160106 106 1600 960 16 100
|
||||||
160053 53 7 4 16 100
|
160053 53 7 4 16 100
|
||||||
160054 54 7 4 16 100
|
160054 54 7 4 16 100
|
||||||
160060 60 20 12 16 100
|
160060 60 20 12 16 100
|
||||||
|
|
|
||||||
|
|
@ -1,54 +1,54 @@
|
||||||
Id PiecesId PiecesCount Star Profession PropertyName MaxRank Hp Attack PhysicalDefence MagicDefence Speed ActionPower RankupConsumeMaterial OpenSkillRules
|
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 int mut,int#int,2 mut,int#int,2
|
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 3 3 10 2508.0 181.0 286.0 238.0 176.0 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#1000111|6#1000121|7#1000112|7#1000122|8#1000113|8#1000122|9#1000113|9#1000123|10#1000114|10#1000124
|
10001 11001 50 5 3 3 10 2508.0 181.0 286.0 238.0 176.0 56#150|57#100|58#100 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#1000111|6#1000121|7#1000112|7#1000122|8#1000113|8#1000122|9#1000113|9#1000123|10#1000114|10#1000124
|
||||||
10002 11002 50 5 3 2 10 2281.0 158.0 259.0 216.0 154.0 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#1000211|6#1000221|7#1000212|7#1000222|8#1000213|8#1000222|9#1000213|9#1000223|10#1000214|10#1000224
|
10002 11002 50 5 3 2 10 2281.0 158.0 259.0 216.0 154.0 56#150|57#100|58#100 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#1000211|6#1000221|7#1000212|7#1000222|8#1000213|8#1000222|9#1000213|9#1000223|10#1000214|10#1000224
|
||||||
10003 11003 50 5 3 4 10 2280.0 162.0 262.0 218.0 181.0 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#1000311|6#1000321|7#1000312|7#1000322|8#1000313|8#1000322|9#1000313|9#1000323|10#1000314|10#1000324
|
10003 11003 50 5 3 4 10 2280.0 162.0 262.0 218.0 181.0 56#150|57#100|58#100 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#1000311|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 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#1000411|6#1000421|7#1000412|7#1000422|8#1000413|8#1000422|9#1000413|9#1000423|10#1000414|10#1000424
|
10004 11004 50 5 5 2 10 2373.0 184.0 236.0 283.0 136.0 56#150|57#100|58#100 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#1000411|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 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#1000511|6#1000521|7#1000512|7#1000522|8#1000513|8#1000522|9#1000513|9#1000523|10#1000514|10#1000524
|
10005 11005 50 5 5 4 10 2155.0 166.0 215.0 258.0 184.0 56#150|57#100|58#100 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#1000511|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 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#1000611|6#1000621|7#1000612|7#1000622|8#1000613|8#1000622|9#1000613|9#1000623|10#1000614|10#1000624
|
10006 11006 50 5 5 1 10 2161.0 171.0 214.0 257.0 175.0 56#150|57#100|58#100 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#1000611|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 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#1000711|6#1000721|7#1000712|7#1000722|8#1000713|8#1000722|9#1000713|9#1000723|10#1000714|10#1000724
|
10007 11007 50 5 5 3 10 2165.0 165.0 259.0 216.0 172.0 56#150|57#100|58#100 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#1000711|6#1000721|7#1000712|7#1000722|8#1000713|8#1000722|9#1000713|9#1000723|10#1000714|10#1000724
|
||||||
10008 11008 50 5 1 5 10 2206.0 217.0 193.0 232.0 130.0 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#1000811|6#1000821|7#1000812|7#1000822|8#1000813|8#1000822|9#1000813|9#1000823|10#1000814|10#1000824
|
10008 11008 50 5 1 5 10 2206.0 217.0 193.0 232.0 130.0 56#150|57#100|58#100 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#1000811|6#1000821|7#1000812|7#1000822|8#1000813|8#1000822|9#1000813|9#1000823|10#1000814|10#1000824
|
||||||
10009 11009 50 5 1 6 10 1921.0 198.0 208.0 173.0 168.0 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#1000911|6#1000921|7#1000912|7#1000922|8#1000913|8#1000922|9#1000913|9#1000923|10#1000914|10#1000924
|
10009 11009 50 5 1 6 10 1921.0 198.0 208.0 173.0 168.0 56#150|57#100|58#100 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#1000911|6#1000921|7#1000912|7#1000922|8#1000913|8#1000922|9#1000913|9#1000923|10#1000914|10#1000924
|
||||||
10010 11010 50 5 1 3 10 1922.0 199.0 172.0 206.0 138.0 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#1001011|6#1001021|7#1001012|7#1001022|8#1001013|8#1001022|9#1001013|9#1001023|10#1001014|10#1001024
|
10010 11010 50 5 1 3 10 1922.0 199.0 172.0 206.0 138.0 56#150|57#100|58#100 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#1001011|6#1001021|7#1001012|7#1001022|8#1001013|8#1001022|9#1001013|9#1001023|10#1001014|10#1001024
|
||||||
10011 11011 50 5 1 4 10 1922.0 199.0 178.0 213.0 153.0 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#1001111|6#1001121|7#1001112|7#1001122|8#1001113|8#1001122|9#1001113|9#1001123|10#1001114|10#1001124
|
10011 11011 50 5 1 4 10 1922.0 199.0 178.0 213.0 153.0 56#150|57#100|58#100 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#1001111|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 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#1001211|6#1001221|7#1001212|7#1001222|8#1001213|8#1001222|9#1001213|9#1001223|10#1001214|10#1001224
|
10012 11012 50 5 2 1 10 1849.0 265.0 217.0 181.0 146.0 56#150|57#100|58#100 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#1001211|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 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#1001311|6#1001321|7#1001312|7#1001322|8#1001313|8#1001322|9#1001313|9#1001323|10#1001314|10#1001324
|
10013 11013 50 5 2 4 10 1678.0 242.0 194.0 162.0 163.0 56#150|57#100|58#100 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#1001311|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 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#1001411|6#1001421|7#1001412|7#1001422|8#1001413|8#1001422|9#1001413|9#1001423|10#1001414|10#1001424
|
10014 11014 50 5 2 6 10 1676.0 244.0 196.0 163.0 191.0 56#150|57#100|58#100 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#1001411|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 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#1001511|6#1001521|7#1001512|7#1001522|8#1001513|8#1001522|9#1001513|9#1001523|10#1001514|10#1001524
|
10015 11015 50 5 2 5 10 1675.0 235.0 159.0 191.0 174.0 56#150|57#100|58#100 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#1001511|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 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#1001611|6#1001621|7#1001612|7#1001622|8#1001613|8#1001622|9#1001613|9#1001623|10#1001614|10#1001624
|
10016 11016 50 5 4 1 10 1587.0 313.0 141.0 169.0 156.0 56#150|57#100|58#100 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#1001611|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 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#1001711|6#1001721|7#1001712|7#1001722|8#1001713|8#1001722|9#1001713|9#1001723|10#1001714|10#1001724
|
10017 11017 50 5 4 6 10 1443.0 278.0 127.0 152.0 159.0 56#150|57#100|58#100 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#1001711|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 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#1001811|6#1001821|7#1001812|7#1001822|8#1001813|8#1001822|9#1001813|9#1001823|10#1001814|10#1001824
|
10018 11018 50 5 4 5 10 1443.0 280.0 134.0 161.0 154.0 56#150|57#100|58#100 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#1001811|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 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#1001911|6#1001921|7#1001912|7#1001922|8#1001913|8#1001922|9#1001913|9#1001923|10#1001914|10#1001924
|
10019 11019 50 5 4 2 10 1436.0 284.0 152.0 127.0 149.0 56#150|57#100|58#100 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#1001911|6#1001921|7#1001912|7#1001922|8#1001913|8#1001922|9#1001913|9#1001923|10#1001914|10#1001924
|
||||||
10020 11020 50 5 3 1 10 2279.0 164.0 264.0 220.0 152.0 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#1002011|6#1002021|7#1002012|7#1002022|8#1002013|8#1002022|9#1002013|9#1002023|10#1002014|10#1002024
|
10020 11020 50 5 3 1 10 2279.0 164.0 264.0 220.0 152.0 56#150|57#100|58#100 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#1002011|6#1002021|7#1002012|7#1002022|8#1002013|8#1002022|9#1002013|9#1002023|10#1002014|10#1002024
|
||||||
10021 11021 40 5 1 3 10 1920.0 205.0 170.0 204.0 178.0 30 6#1#3#1|6#2#41#4|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#1002111|6#1002121|7#1002112|7#1002122|8#1002113|8#1002122|9#1002113|9#1002123|10#1002114|10#1002124
|
10021 11021 40 5 1 3 10 1920.0 205.0 170.0 204.0 178.0 56#150|57#100|58#100 30 6#1#3#1|6#2#41#4|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#1002111|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 30 6#1#3#1|6#2#43#4|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#1002211|6#1002221|7#1002212|7#1002222|8#1002213|8#1002222|9#1002213|9#1002223|10#1002214|10#1002224
|
10022 11022 40 5 2 2 10 1676.0 244.0 167.0 200.0 173.0 56#150|57#100|58#100 30 6#1#3#1|6#2#43#4|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#1002211|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 30 6#1#3#1|6#2#44#4|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#1002311|6#1002321|7#1002312|7#1002322|8#1002313|8#1002322|9#1002313|9#1002323|10#1002314|10#1002324
|
10023 11023 40 5 4 5 10 1439.0 280.0 131.0 157.0 168.0 56#150|57#100|58#100 30 6#1#3#1|6#2#44#4|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#1002311|6#1002321|7#1002312|7#1002322|8#1002313|8#1002322|9#1002313|9#1002323|10#1002314|10#1002324
|
||||||
10024 11024 40 4 3 2 10 1933.0 138.0 216.0 180.0 182.0 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|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|4#1002421|5#1002411|5#1002421|6#1002411|6#1002421|7#1002412|7#1002422|8#1002413|8#1002422|9#1002413|9#1002423
|
10024 11024 40 4 3 2 10 1933.0 138.0 216.0 180.0 182.0 56#150|57#100|58#100 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|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|4#1002421|5#1002411|5#1002421|6#1002411|6#1002421|7#1002412|7#1002422|8#1002413|8#1002422|9#1002413|9#1002423
|
||||||
10025 11025 40 4 1 1 10 1630.0 174.0 146.0 175.0 166.0 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|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|4#1002521|5#1002511|5#1002521|6#1002511|6#1002521|7#1002512|7#1002522|8#1002513|8#1002522|9#1002513|9#1002523
|
10025 11025 40 4 1 1 10 1630.0 174.0 146.0 175.0 166.0 56#150|57#100|58#100 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|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|4#1002521|5#1002511|5#1002521|6#1002511|6#1002521|7#1002512|7#1002522|8#1002513|8#1002522|9#1002513|9#1002523
|
||||||
10026 11026 40 4 3 2 10 2051.0 138.0 216.0 180.0 181.0 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|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|4#1002621|5#1002611|5#1002621|6#1002611|6#1002621|7#1002612|7#1002622|8#1002613|8#1002622|9#1002613|9#1002623
|
10026 11026 40 4 3 2 10 2051.0 138.0 216.0 180.0 181.0 56#150|57#100|58#100 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|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|4#1002621|5#1002611|5#1002621|6#1002611|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 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|4#1002721|5#1002711|5#1002721|6#1002711|6#1002721
|
10027 11027 40 4 5 5 10 1944.0 141.0 221.0 184.0 175.0 56#150|57#100|58#100 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|4#1002721|5#1002711|5#1002721|6#1002711|6#1002721
|
||||||
10028 11028 40 4 4 4 10 1292.0 241.0 110.0 132.0 157.0 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|4#1002821|5#1002811|5#1002821|6#1002811|6#1002821
|
10028 11028 40 4 4 4 10 1292.0 241.0 110.0 132.0 157.0 56#150|57#100|58#100 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|4#1002821|5#1002811|5#1002821|6#1002811|6#1002821
|
||||||
10029 11029 40 4 4 4 10 1228.0 240.0 108.0 129.0 153.0 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|4#1002921|5#1002911|5#1002921|6#1002911|6#1002921|7#1002912|7#1002922|8#1002913|8#1002922|9#1002913|9#1002923
|
10029 11029 40 4 4 4 10 1228.0 240.0 108.0 129.0 153.0 56#150|57#100|58#100 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|4#1002921|5#1002911|5#1002921|6#1002911|6#1002921|7#1002912|7#1002922|8#1002913|8#1002922|9#1002913|9#1002923
|
||||||
10030 11030 40 4 5 5 10 1833.0 146.0 186.0 223.0 174.0 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|4#1003021|5#1003011|5#1003021|6#1003011|6#1003021
|
10030 11030 40 4 5 5 10 1833.0 146.0 186.0 223.0 174.0 56#150|57#100|58#100 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|4#1003021|5#1003011|5#1003021|6#1003011|6#1003021
|
||||||
10031 11031 40 4 3 2 10 1942.0 133.0 218.0 182.0 184.0 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|4#1003121|5#1003111|5#1003121|6#1003111|6#1003121
|
10031 11031 40 4 3 2 10 1942.0 133.0 218.0 182.0 184.0 56#150|57#100|58#100 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|4#1003121|5#1003111|5#1003121|6#1003111|6#1003121
|
||||||
10032 11032 40 4 2 3 10 1426.0 205.0 161.0 134.0 202.0 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#1003211|4#1003221|5#1003211|5#1003221|6#1003211|6#1003221
|
10032 11032 40 4 2 3 10 1426.0 205.0 161.0 134.0 202.0 56#150|57#100|58#100 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#1003211|4#1003221|5#1003211|5#1003221|6#1003211|6#1003221
|
||||||
10033 11033 40 4 4 4 10 1219.0 234.0 130.0 108.0 156.0 30 5#1#2#3|5#2#15#4|5#3#16#4 4#1003311|4#1003321|5#1003311|5#1003321|6#1003311|6#1003321
|
10033 11033 40 4 4 4 10 1219.0 234.0 130.0 108.0 156.0 56#150|57#100|58#100 30 5#1#2#3|5#2#15#4|5#3#16#4 4#1003311|4#1003321|5#1003311|5#1003321|6#1003311|6#1003321
|
||||||
10034 11034 40 4 4 4 10 1293.0 240.0 107.0 128.0 161.0 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|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|4#1003421|5#1003411|5#1003421|6#1003411|6#1003421|7#1003412|7#1003422|8#1003413|8#1003422|9#1003413|14#1003423
|
10034 11034 40 4 4 4 10 1293.0 240.0 107.0 128.0 161.0 56#150|57#100|58#100 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|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|4#1003421|5#1003411|5#1003421|6#1003411|6#1003421|7#1003412|7#1003422|8#1003413|8#1003422|9#1003413|14#1003423
|
||||||
10035 11035 40 4 1 1 10 1732.0 166.0 172.0 143.0 160.0 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|4#1003521|5#1003511|5#1003521|6#1003511|6#1003521
|
10035 11035 40 4 1 1 10 1732.0 166.0 172.0 143.0 160.0 56#150|57#100|58#100 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|4#1003521|5#1003511|5#1003521|6#1003511|6#1003521
|
||||||
10036 11036 40 4 1 1 10 1724.0 170.0 149.0 179.0 158.0 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|4#1003621|5#1003611|5#1003621|6#1003611|6#1003621|7#1003612|7#1003622|8#1003613|8#1003622|9#1003613|16#1003623
|
10036 11036 40 4 1 1 10 1724.0 170.0 149.0 179.0 158.0 56#150|57#100|58#100 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|4#1003621|5#1003611|5#1003621|6#1003611|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 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#1003711|4#1003721|5#1003711|5#1003721|6#1003711|6#1003721
|
10037 11037 40 4 2 3 10 1427.0 206.0 161.0 134.0 197.0 56#150|57#100|58#100 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#1003711|4#1003721|5#1003711|5#1003721|6#1003711|6#1003721
|
||||||
10038 11038 40 4 4 4 10 1224.0 242.0 114.0 137.0 155.0 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|4#1003821|5#1003811|5#1003821|6#1003811|6#1003821
|
10038 11038 40 4 4 4 10 1224.0 242.0 114.0 137.0 155.0 56#150|57#100|58#100 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|4#1003821|5#1003811|5#1003821|6#1003811|6#1003821
|
||||||
10039 11039 40 4 2 3 10 1428.0 206.0 165.0 138.0 191.0 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|4#1003921|5#1003911|5#1003921|6#1003911|6#1003921
|
10039 11039 40 4 2 3 10 1428.0 206.0 165.0 138.0 191.0 56#150|57#100|58#100 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|4#1003921|5#1003911|5#1003921|6#1003911|6#1003921
|
||||||
10040 11040 40 4 3 2 10 1938.0 141.0 222.0 185.0 182.0 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#1004011|4#1004021|5#1004011|5#1004021|6#1004011|6#1004021
|
10040 11040 40 4 3 2 10 1938.0 141.0 222.0 185.0 182.0 56#150|57#100|58#100 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#1004011|4#1004021|5#1004011|5#1004021|6#1004011|6#1004021
|
||||||
10041 11041 40 4 3 2 10 1937.0 135.0 221.0 184.0 174.0 30 5#1#2#3|5#2#15#4|5#3#16#4 4#1004111|4#1004121|5#1004111|5#1004121|6#1004111|6#1004121
|
10041 11041 40 4 3 2 10 1937.0 135.0 221.0 184.0 174.0 56#150|57#100|58#100 30 5#1#2#3|5#2#15#4|5#3#16#4 4#1004111|4#1004121|5#1004111|5#1004121|6#1004111|6#1004121
|
||||||
10042 11042 40 4 3 2 10 1942.0 135.0 218.0 182.0 181.0 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|4#1004221|5#1004211|5#1004221|6#1004211|6#1004221
|
10042 11042 40 4 3 2 10 1942.0 135.0 218.0 182.0 181.0 56#150|57#100|58#100 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|4#1004221|5#1004211|5#1004221|6#1004211|6#1004221
|
||||||
10043 11043 40 4 4 4 10 1222.0 234.0 136.0 113.0 155.0 30 5#1#2#3|5#2#15#4|5#3#16#4 4#1004311|4#1004321|5#1004311|5#1004321|6#1004311|6#1004321
|
10043 11043 40 4 4 4 10 1222.0 234.0 136.0 113.0 155.0 56#150|57#100|58#100 30 5#1#2#3|5#2#15#4|5#3#16#4 4#1004311|4#1004321|5#1004311|5#1004321|6#1004311|6#1004321
|
||||||
10044 11044 40 4 2 3 10 1425.0 201.0 138.0 165.0 192.0 30 5#1#2#3|5#2#15#4|5#3#16#4 4#1004411|4#1004421|5#1004411|5#1004421|6#1004411|6#1004421
|
10044 11044 40 4 2 3 10 1425.0 201.0 138.0 165.0 192.0 56#150|57#100|58#100 30 5#1#2#3|5#2#15#4|5#3#16#4 4#1004411|4#1004421|5#1004411|5#1004421|6#1004411|6#1004421
|
||||||
10045 11045 40 4 5 5 10 1831.0 143.0 188.0 225.0 181.0 30 5#1#2#3|5#2#15#4|5#3#16#4 4#1004511|4#1004521|5#1004511|5#1004521|6#1004511|6#1004521
|
10045 11045 40 4 5 5 10 1831.0 143.0 188.0 225.0 181.0 56#150|57#100|58#100 30 5#1#2#3|5#2#15#4|5#3#16#4 4#1004511|4#1004521|5#1004511|5#1004521|6#1004511|6#1004521
|
||||||
10046 11046 30 4 2 3 10 1507.0 203.0 134.0 161.0 171.0 30 5#1#2#3|5#2#15#4|5#3#16#4 4#1004611|4#1004621|5#1004611|5#1004621|6#1004611|6#1004621
|
10046 11046 30 4 2 3 10 1507.0 203.0 134.0 161.0 171.0 56#150|57#100|58#100 30 5#1#2#3|5#2#15#4|5#3#16#4 4#1004611|4#1004621|5#1004611|5#1004621|6#1004611|6#1004621
|
||||||
10047 11047 30 3 1 1 10 1942.0 140.0 226.0 188.0 175.0 30 null 3#1004711|3#1004721
|
10047 11047 30 3 1 1 10 1942.0 140.0 226.0 188.0 175.0 56#150|57#100|58#100 30 null 3#1004711|3#1004721
|
||||||
10048 11048 30 3 2 2 10 1637.0 167.0 173.0 144.0 172.0 30 null 3#1004811|3#1004821
|
10048 11048 30 3 2 2 10 1637.0 167.0 173.0 144.0 172.0 56#150|57#100|58#100 30 null 3#1004811|3#1004821
|
||||||
10049 11049 30 3 4 3 10 1423.0 199.0 161.0 134.0 196.0 30 null 3#1004911|3#1004921
|
10049 11049 30 3 4 3 10 1423.0 199.0 161.0 134.0 196.0 56#150|57#100|58#100 30 null 3#1004911|3#1004921
|
||||||
10050 11050 30 3 1 4 10 1226.0 242.0 111.0 133.0 159.0 30 null 3#1005011|3#1005021
|
10050 11050 30 3 1 4 10 1226.0 242.0 111.0 133.0 159.0 56#150|57#100|58#100 30 null 3#1005011|3#1005021
|
||||||
10051 11051 30 3 2 5 10 1943.0 140.0 188.0 225.0 182.0 30 null 3#1005111|3#1005121
|
10051 11051 30 3 2 5 10 1943.0 140.0 188.0 225.0 182.0 56#150|57#100|58#100 30 null 3#1005111|3#1005121
|
||||||
10052 11052 30 3 4 6 10 2049.0 136.0 187.0 224.0 177.0 30 null 3#1005211|3#1005221
|
10052 11052 30 3 4 6 10 2049.0 136.0 187.0 224.0 177.0 56#150|57#100|58#100 30 null 3#1005211|3#1005221
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -2,8 +2,8 @@ Id Type Value
|
||||||
int int mut,float#float,1
|
int int mut,float#float,1
|
||||||
210001 34 100
|
210001 34 100
|
||||||
210002 39 1#20
|
210002 39 1#20
|
||||||
210003 41 0
|
210003 41 1
|
||||||
310001 43 3#50#400#3
|
310001 43 3#50#8#3
|
||||||
310002 42 0.1#2
|
310002 42 0.1#2
|
||||||
310003 34 200
|
310003 34 200
|
||||||
310004 39 1#35
|
310004 39 1#35
|
||||||
|
|
@ -14,17 +14,17 @@ int int mut,float#float,1
|
||||||
412002 1 0.4#3#0.2#2
|
412002 1 0.4#3#0.2#2
|
||||||
412003 28 0.6#0.3
|
412003 28 0.6#0.3
|
||||||
413001 4 3#200#8#1
|
413001 4 3#200#8#1
|
||||||
413002 13 0.1#3#0.2
|
413002 13 1#3#0.2
|
||||||
413003 8 0.1#6#0.06
|
413003 8 1#6#0.06
|
||||||
414001 31 0.2#3
|
414001 31 0.2#3
|
||||||
414002 24 0.5#0.3#2
|
414002 24 1#0.3#2
|
||||||
414003 20 1#1
|
414003 20 10#1
|
||||||
415001 8 0.4#2#0.4
|
415001 8 0.4#2#0.4
|
||||||
415002 4 5#200#5#1
|
415002 4 5#200#5#1
|
||||||
415003 5 0.3#2#0.1#5
|
415003 5 0.3#2#0.1#5
|
||||||
420001 8 0.4#2#0.3
|
420001 8 0.4#2#0.3
|
||||||
420002 10 0.4#2#0.2#3#1
|
420002 10 1#2#0.2#3#1
|
||||||
420003 11 0.2#2#0.2
|
420003 11 1#2#0.2
|
||||||
420004 23 2#0.4
|
420004 23 2#0.4
|
||||||
420005 40 5#500
|
420005 40 5#500
|
||||||
420006 39 1#200
|
420006 39 1#200
|
||||||
|
|
@ -66,7 +66,7 @@ int int mut,float#float,1
|
||||||
513010 47 61#20#1
|
513010 47 61#20#1
|
||||||
513011 47 52#20#1
|
513011 47 52#20#1
|
||||||
514001 31 0.2#3
|
514001 31 0.2#3
|
||||||
514002 25 0.5#0.3#2
|
514002 25 0.5#0.5#2
|
||||||
514003 20 4#1
|
514003 20 4#1
|
||||||
514004 47 54#10#1
|
514004 47 54#10#1
|
||||||
514005 47 57#20#1
|
514005 47 57#20#1
|
||||||
|
|
@ -88,8 +88,8 @@ int int mut,float#float,1
|
||||||
515010 47 55#10#1
|
515010 47 55#10#1
|
||||||
515011 47 5#1056#1
|
515011 47 5#1056#1
|
||||||
520001 8 0.6#2#0.3
|
520001 8 0.6#2#0.3
|
||||||
520002 10 0.6#2#0.3#3#1
|
520002 10 1#2#0.3#3#1
|
||||||
520003 11 0.3#2#0.3
|
520003 11 1#2#0.3
|
||||||
520004 23 2#0.6
|
520004 23 2#0.6
|
||||||
520005 40 5#1500
|
520005 40 5#1500
|
||||||
520006 39 1#500
|
520006 39 1#500
|
||||||
|
|
|
||||||
|
|
@ -1,36 +1,36 @@
|
||||||
PropertyId Style Score TargetPropertyId
|
PropertyId Style Score TargetPropertyId IfFormula
|
||||||
int int float int
|
int int float int int
|
||||||
1 1 0.21000000000000002 0
|
1 1 0.21000000000000002 0 0
|
||||||
2 1 3.0 0
|
2 1 3.0 0 0
|
||||||
3 1 1.5 0
|
3 1 1.5 0 0
|
||||||
4 1 1.5 0
|
4 1 1.5 0 0
|
||||||
5 1 1.5 0
|
5 1 1.5 0 0
|
||||||
6 1 0.0 0
|
6 1 0.0 0 0
|
||||||
51 2 0.0 0
|
51 2 0.0 0 0
|
||||||
52 2 0.0 0
|
52 2 0.0 0 0
|
||||||
53 2 1.5 0
|
53 2 1.5 0 0
|
||||||
54 2 1.5 0
|
54 2 1.5 0 0
|
||||||
55 2 6.0 0
|
55 2 6.0 0 0
|
||||||
56 2 0.0 0
|
56 2 0.0 0 0
|
||||||
57 2 0 0
|
57 2 0 0 0
|
||||||
58 2 0 0
|
58 2 0 0 0
|
||||||
59 2 0 0
|
59 2 0 0 0
|
||||||
60 2 6.0 0
|
60 2 6.0 0 0
|
||||||
61 2 0 1
|
61 2 0 1 0
|
||||||
62 2 0 2
|
62 2 0 2 0
|
||||||
63 2 0 3
|
63 2 0 3 0
|
||||||
64 2 0 4
|
64 2 0 4 0
|
||||||
65 2 0 5
|
65 2 0 5 0
|
||||||
66 2 0 0
|
66 2 0 0 0
|
||||||
101 1 2.0 0
|
101 1 2.0 0 1
|
||||||
102 1 2.0 0
|
102 1 2.0 0 1
|
||||||
103 1 2.0 0
|
103 1 2.0 0 1
|
||||||
104 1 2.0 0
|
104 1 2.0 0 1
|
||||||
105 1 2.0 0
|
105 1 2.0 0 1
|
||||||
106 1 2.0 0
|
106 1 2.0 0 1
|
||||||
107 1 2.0 0
|
107 1 2.0 0 1
|
||||||
108 1 2.0 0
|
108 1 2.0 0 1
|
||||||
109 1 2.0 0
|
109 1 2.0 0 1
|
||||||
110 1 2.0 0
|
110 1 2.0 0 1
|
||||||
111 1 2.0 0
|
111 1 2.0 0 1
|
||||||
112 1 2.0 0
|
112 1 2.0 0 1
|
||||||
|
|
|
||||||
|
|
@ -183,10 +183,10 @@ int mut,float#float,2 mut,int#int,2 mut,float#float,2 float
|
||||||
1001813 40001#0.7 1 2#2 0.0
|
1001813 40001#0.7 1 2#2 0.0
|
||||||
1001814 40001#0.7 1 2.4#2 0.0
|
1001814 40001#0.7 1 2.4#2 0.0
|
||||||
1001815 40001#0.7 1 1.5#1 0.0
|
1001815 40001#0.7 1 1.5#1 0.0
|
||||||
1001821 20121#0.7 1#16#4 3#2|0.18#1#4|0.45#2#4 2.5
|
1001821 20121#0.7 1#16#13 3#2|0.18#1#4|3#0.45#2#4 2.5
|
||||||
1001822 20121#0.7 1#16#4 3#2|0.18#1#4|0.45#2#4 2.5
|
1001822 20121#0.7 1#16#13 3#2|0.18#1#4|3#0.45#2#4 2.5
|
||||||
1001823 20121#0.7 1#16#4 3#2|0.18#1#4|0.45#2#4 2.5
|
1001823 20121#0.7 1#16#13 3#2|0.18#1#4|3#0.45#2#4 2.5
|
||||||
1001824 40001#0.7 1 1.5#1 2.5
|
1001824 20121#0.7 1#16#13 3#2|0.18#1#4|3#0.45#2#4 2.5
|
||||||
1001825 40001#0.7 1 1.5#1 2.5
|
1001825 40001#0.7 1 1.5#1 2.5
|
||||||
1001911 40001#0.7|30011#0.7 1|4 0.7#1|1#0.1#4#1 0.0
|
1001911 40001#0.7|30011#0.7 1|4 0.7#1|1#0.1#4#1 0.0
|
||||||
1001912 40001#0.7|30011#0.7 1|4#4 0.8#1|1#0.1#4#1|10#0.1#4#1 0.0
|
1001912 40001#0.7|30011#0.7 1|4#4 0.8#1|1#0.1#4#1|10#0.1#4#1 0.0
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ public class SArenaSetting implements BaseConfig {
|
||||||
|
|
||||||
private int pveNum;
|
private int pveNum;
|
||||||
|
|
||||||
private int[][] costItem;
|
private int[] cost;
|
||||||
|
|
||||||
private int mostTime;
|
private int mostTime;
|
||||||
|
|
||||||
|
|
@ -84,8 +84,8 @@ public class SArenaSetting implements BaseConfig {
|
||||||
return pveNum;
|
return pveNum;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int[][] getCostItem() {
|
public int[] getCost() {
|
||||||
return costItem;
|
return cost;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getMostTime() {
|
public int getMostTime() {
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,11 @@ package com.ljsd.jieling.config;
|
||||||
|
|
||||||
import com.ljsd.jieling.logic.STableManager;
|
import com.ljsd.jieling.logic.STableManager;
|
||||||
import com.ljsd.jieling.logic.Table;
|
import com.ljsd.jieling.logic.Table;
|
||||||
|
import com.ljsd.jieling.util.TimeUtils;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@Table(name ="DifferDemonsBoxSetting")
|
@Table(name ="DifferDemonsBoxSetting")
|
||||||
|
|
@ -25,8 +29,12 @@ public class SDifferDemonsBoxSetting implements BaseConfig {
|
||||||
|
|
||||||
private String seasonOpen;
|
private String seasonOpen;
|
||||||
|
|
||||||
|
private long seasonStartLong;
|
||||||
|
|
||||||
private String seasonEnd;
|
private String seasonEnd;
|
||||||
|
|
||||||
|
private long seasonEndLong;
|
||||||
|
|
||||||
private int randomPool;
|
private int randomPool;
|
||||||
|
|
||||||
private int vipLimit;
|
private int vipLimit;
|
||||||
|
|
@ -35,9 +43,21 @@ public class SDifferDemonsBoxSetting implements BaseConfig {
|
||||||
|
|
||||||
private static Map<Integer, SDifferDemonsBoxSetting> config;
|
private static Map<Integer, SDifferDemonsBoxSetting> config;
|
||||||
|
|
||||||
|
private static Map<Integer, List<Integer>> idBySeasonIdMap;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init() throws Exception {
|
public void init() throws Exception {
|
||||||
config = STableManager.getConfig(SDifferDemonsBoxSetting.class);
|
Map<Integer, SDifferDemonsBoxSetting> configTmp = STableManager.getConfig(SDifferDemonsBoxSetting.class);
|
||||||
|
Map<Integer, List<Integer>> idBySeasonIdMapTmp = new HashMap<>();
|
||||||
|
for(SDifferDemonsBoxSetting sDifferDemonsBoxSetting :configTmp.values()){
|
||||||
|
sDifferDemonsBoxSetting.setSeasonStartLong(TimeUtils.parseTimeToMiles(sDifferDemonsBoxSetting.getSeasonOpen(), "YYYYMMdd hhmmss"));
|
||||||
|
sDifferDemonsBoxSetting.setSeasonEndLong(TimeUtils.parseTimeToMiles(sDifferDemonsBoxSetting.getSeasonOpen(), "YYYYMMdd hhmmss"));
|
||||||
|
if(!idBySeasonIdMapTmp.containsKey(sDifferDemonsBoxSetting.getSeasonTimes())){
|
||||||
|
idBySeasonIdMapTmp.put(sDifferDemonsBoxSetting.getSeasonTimes(),new ArrayList<>());
|
||||||
|
}
|
||||||
|
idBySeasonIdMapTmp.get(sDifferDemonsBoxSetting.getSeasonTimes()).add(sDifferDemonsBoxSetting.getId());
|
||||||
|
}
|
||||||
|
config = configTmp;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -45,6 +65,10 @@ public class SDifferDemonsBoxSetting implements BaseConfig {
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static List<Integer> getIdsBySeasonId(int season) {
|
||||||
|
return idBySeasonIdMap.get(season);
|
||||||
|
}
|
||||||
|
|
||||||
public int getId() {
|
public int getId() {
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
@ -74,11 +98,11 @@ public class SDifferDemonsBoxSetting implements BaseConfig {
|
||||||
return seasonTimes;
|
return seasonTimes;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getSeasonOpen() {
|
private String getSeasonOpen() {
|
||||||
return seasonOpen;
|
return seasonOpen;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getSeasonEnd() {
|
private String getSeasonEnd() {
|
||||||
return seasonEnd;
|
return seasonEnd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -94,5 +118,19 @@ public class SDifferDemonsBoxSetting implements BaseConfig {
|
||||||
return maxNum;
|
return maxNum;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long getSeasonStartLong() {
|
||||||
|
return seasonStartLong;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSeasonStartLong(long seasonStartLong) {
|
||||||
|
this.seasonStartLong = seasonStartLong;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getSeasonEndLong() {
|
||||||
|
return seasonEndLong;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSeasonEndLong(long seasonEndLong) {
|
||||||
|
this.seasonEndLong = seasonEndLong;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,5 +1,8 @@
|
||||||
package com.ljsd.jieling.core;
|
package com.ljsd.jieling.core;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 1 招募 Lottery
|
* 1 招募 Lottery
|
||||||
* 2 编队 Team
|
* 2 编队 Team
|
||||||
|
|
@ -31,6 +34,14 @@ public enum FunctionIdEnum {
|
||||||
Talking(14);
|
Talking(14);
|
||||||
private int functionId;
|
private int functionId;
|
||||||
|
|
||||||
|
private static Map<Integer,FunctionIdEnum> functionIdEnumMap = new HashMap<>();
|
||||||
|
static {
|
||||||
|
FunctionIdEnum[] values = FunctionIdEnum.values();
|
||||||
|
for(FunctionIdEnum functionIdEnum : values){
|
||||||
|
functionIdEnumMap.put(functionIdEnum.getFunctionId(),functionIdEnum);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private FunctionIdEnum(int functionId) {
|
private FunctionIdEnum(int functionId) {
|
||||||
this.functionId = functionId;
|
this.functionId = functionId;
|
||||||
}
|
}
|
||||||
|
|
@ -38,4 +49,8 @@ public enum FunctionIdEnum {
|
||||||
public int getFunctionId() {
|
public int getFunctionId() {
|
||||||
return functionId;
|
return functionId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static FunctionIdEnum getFunctionIdEnumById(int id) {
|
||||||
|
return functionIdEnumMap.get(id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -64,5 +64,8 @@ public interface GlobalsDef {
|
||||||
int ARENA_ROBOT_TYPE=0;
|
int ARENA_ROBOT_TYPE=0;
|
||||||
int ARENA_PLAYER_TYPE=1;
|
int ARENA_PLAYER_TYPE=1;
|
||||||
|
|
||||||
|
//队伍
|
||||||
|
int TEAM_ARENA_DEFENSE =101;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import com.ljsd.GameApplication;
|
||||||
|
|
||||||
public class RedisKey {
|
public class RedisKey {
|
||||||
|
|
||||||
private final static String Delimiter_colon = ":";
|
public final static String Delimiter_colon = ":";
|
||||||
|
|
||||||
private final static String areaId = "0";
|
private final static String areaId = "0";
|
||||||
|
|
||||||
|
|
@ -80,6 +80,14 @@ public class RedisKey {
|
||||||
public static final String LEVE_DIFFICULTY_FIGHT = "LEVE_DIFFICULTY_FIGHT";
|
public static final String LEVE_DIFFICULTY_FIGHT = "LEVE_DIFFICULTY_FIGHT";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static final String ARENA_RRECORD = "ARENA_RRECORD";
|
||||||
|
|
||||||
|
public static final String ARENA_RANK = "ARENA_RANK";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static String getKey(String type, String key, boolean withoutServerId) {
|
public static String getKey(String type, String key, boolean withoutServerId) {
|
||||||
if (withoutServerId) {
|
if (withoutServerId) {
|
||||||
return GameApplication.areaId + Delimiter_colon + type + Delimiter_colon + String.valueOf(key);
|
return GameApplication.areaId + Delimiter_colon + type + Delimiter_colon + String.valueOf(key);
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,20 @@
|
||||||
package com.ljsd.jieling.db.redis;
|
package com.ljsd.jieling.db.redis;
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
|
import com.ljsd.GameApplication;
|
||||||
|
import com.ljsd.jieling.logic.dao.ArenaRecord;
|
||||||
|
import com.ljsd.jieling.logic.dao.UserManager;
|
||||||
|
import com.ljsd.jieling.logic.dao.root.User;
|
||||||
import com.ljsd.jieling.util.TimeUtils;
|
import com.ljsd.jieling.util.TimeUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.context.ConfigurableApplicationContext;
|
import org.springframework.context.ConfigurableApplicationContext;
|
||||||
|
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
|
||||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||||
import org.springframework.data.redis.core.ZSetOperations;
|
import org.springframework.data.redis.core.ZSetOperations;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
@ -30,6 +36,7 @@ public class RedisUtil {
|
||||||
return InnerClass.instance;
|
return InnerClass.instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static class InnerClass {
|
private static class InnerClass {
|
||||||
private static final RedisUtil instance = new RedisUtil();
|
private static final RedisUtil instance = new RedisUtil();
|
||||||
}
|
}
|
||||||
|
|
@ -708,10 +715,11 @@ public class RedisUtil {
|
||||||
}
|
}
|
||||||
|
|
||||||
//操作sortset
|
//操作sortset
|
||||||
public Set<String> getZsetRange(String key, double min, double max){
|
public Set<String> getZsetRange(String type,String key, double min, double max){
|
||||||
|
String rkey= getKey(type, key);
|
||||||
for (int i = 0; i < MAX_TRY_TIMES; i++) {
|
for (int i = 0; i < MAX_TRY_TIMES; i++) {
|
||||||
try {
|
try {
|
||||||
return redisTemplate.opsForZSet().rangeByScore(key,min,max);
|
return redisTemplate.opsForZSet().rangeByScore(rkey,min,max);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
TimeUtils.sleep(FAILED_SLEEP);
|
TimeUtils.sleep(FAILED_SLEEP);
|
||||||
}
|
}
|
||||||
|
|
@ -741,10 +749,11 @@ public class RedisUtil {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Set<ZSetOperations.TypedTuple<String>> getZsetreverseRangeWithScores(String key, long start, long end){
|
public Set<ZSetOperations.TypedTuple<String>> getZsetreverseRangeWithScores(String type,String key, long start, long end){
|
||||||
|
String rkey = getKey(type, key);
|
||||||
for (int i = 0; i < MAX_TRY_TIMES; i++) {
|
for (int i = 0; i < MAX_TRY_TIMES; i++) {
|
||||||
try {
|
try {
|
||||||
return redisTemplate.opsForZSet().reverseRangeWithScores(key, start, end);
|
return redisTemplate.opsForZSet().reverseRangeWithScores(rkey, start, end);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
TimeUtils.sleep(FAILED_SLEEP);
|
TimeUtils.sleep(FAILED_SLEEP);
|
||||||
}
|
}
|
||||||
|
|
@ -752,14 +761,15 @@ public class RedisUtil {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Long getZSetreverseRank(String key, String value){
|
public Long getZSetreverseRank(String type,String key, String value){
|
||||||
|
String rkey = getKey(type,key);
|
||||||
for (int i = 0; i < MAX_TRY_TIMES; i++) {
|
for (int i = 0; i < MAX_TRY_TIMES; i++) {
|
||||||
try {
|
try {
|
||||||
Long rank = redisTemplate.opsForZSet().reverseRank(key, value);
|
Long rank = redisTemplate.opsForZSet().reverseRank(rkey, value);
|
||||||
if (rank == null) {
|
if (rank == null) {
|
||||||
return -1L;
|
return -1L;
|
||||||
} else {
|
} else {
|
||||||
return rank;
|
return rank + 1;
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
TimeUtils.sleep(FAILED_SLEEP);
|
TimeUtils.sleep(FAILED_SLEEP);
|
||||||
|
|
@ -769,10 +779,11 @@ public class RedisUtil {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public Double getZSetScore(String key, String value){
|
public Double getZSetScore(String type,String key, String value){
|
||||||
|
String rkey = getKey(type, key);
|
||||||
for (int i = 0; i < MAX_TRY_TIMES; i++) {
|
for (int i = 0; i < MAX_TRY_TIMES; i++) {
|
||||||
try {
|
try {
|
||||||
Double score = redisTemplate.opsForZSet().score(key, value);
|
Double score = redisTemplate.opsForZSet().score(rkey, value);
|
||||||
if (score == null) {
|
if (score == null) {
|
||||||
return -1D;
|
return -1D;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -785,10 +796,11 @@ public class RedisUtil {
|
||||||
return -1D;
|
return -1D;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void incrementZsetScore(String key, String value, int changeScore){
|
public void incrementZsetScore(String type,String key, String value, int changeScore){
|
||||||
|
String rkey = getKey(type, key);
|
||||||
for (int i = 0; i < MAX_TRY_TIMES; i++) {
|
for (int i = 0; i < MAX_TRY_TIMES; i++) {
|
||||||
try {
|
try {
|
||||||
redisTemplate.opsForZSet().incrementScore(key,value,changeScore);
|
redisTemplate.opsForZSet().incrementScore(rkey,value,changeScore);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
TimeUtils.sleep(FAILED_SLEEP);
|
TimeUtils.sleep(FAILED_SLEEP);
|
||||||
}
|
}
|
||||||
|
|
@ -851,6 +863,63 @@ public class RedisUtil {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public <T> void putMapEntry(String type,String key,String mapKey, T value){
|
||||||
|
String rkey = getKey(type, key);
|
||||||
|
for (int i = 0; i < MAX_TRY_TIMES; i++) {
|
||||||
|
try {
|
||||||
|
redisTemplate.opsForHash().put(rkey,mapKey,gson.toJson(value));
|
||||||
|
} catch (Exception e) {
|
||||||
|
TimeUtils.sleep(FAILED_SLEEP);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public <T> T getMapEntry(String type,String key,String mapKey,Class<T> valueClazz){
|
||||||
|
String rkey = getKey(type, key);
|
||||||
|
for (int i = 0; i < MAX_TRY_TIMES; i++) {
|
||||||
|
try {
|
||||||
|
Object o = redisTemplate.opsForHash().get(rkey, mapKey);
|
||||||
|
if(o!=null){
|
||||||
|
return gson.fromJson(o.toString(),valueClazz);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
TimeUtils.sleep(FAILED_SLEEP);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public <K,T> Map<K,T> getMapValues(String type,String key,Class<K> keyClazz,Class<T> valueClazz){
|
||||||
|
Map<K,T> result = new HashMap<>();
|
||||||
|
String rkey = getKey(type, key);
|
||||||
|
Map<Object, Object> entries = redisTemplate.opsForHash().entries(rkey);
|
||||||
|
for(Map.Entry<Object,Object> item : entries.entrySet()){
|
||||||
|
Object key1 = item.getKey();
|
||||||
|
Object value = item.getValue();
|
||||||
|
result.put(gson.fromJson(gson.toJson(key1),keyClazz),gson.fromJson(value.toString(),valueClazz));
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void zsetRemoveKeys(String type,String key,String... mapKeys){
|
||||||
|
String rkey = getKey(type, key);
|
||||||
|
for (int i = 0; i < MAX_TRY_TIMES; i++) {
|
||||||
|
try {
|
||||||
|
redisTemplate.opsForHash().delete(rkey,mapKeys);
|
||||||
|
} catch (Exception e) {
|
||||||
|
TimeUtils.sleep(FAILED_SLEEP);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public String getKey(String type,String key){
|
||||||
|
return GameApplication.serverId + RedisKey.Delimiter_colon + type + RedisKey.Delimiter_colon + key;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,6 @@ public class ArenaChallengeHandler extends BaseHandler {
|
||||||
public void process(ISession iSession, PacketNetData netData) throws Exception {
|
public void process(ISession iSession, PacketNetData netData) throws Exception {
|
||||||
byte[] bytes = netData.parseClientProtoNetData();
|
byte[] bytes = netData.parseClientProtoNetData();
|
||||||
ArenaInfoProto.ArenaChallengeRequest arenaChallengeRequest = ArenaInfoProto.ArenaChallengeRequest.parseFrom(bytes);
|
ArenaInfoProto.ArenaChallengeRequest arenaChallengeRequest = ArenaInfoProto.ArenaChallengeRequest.parseFrom(bytes);
|
||||||
ArenaLogic.getInstance().challenge(iSession,arenaChallengeRequest.getChallengeUid(),arenaChallengeRequest.getTeamId());
|
ArenaLogic.getInstance().challenge(iSession,arenaChallengeRequest.getChallengeUid(),arenaChallengeRequest.getTeamId(),arenaChallengeRequest.getSkipFight());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
package com.ljsd.jieling.handler.arena;
|
||||||
|
|
||||||
|
import com.ljsd.jieling.handler.BaseHandler;
|
||||||
|
import com.ljsd.jieling.logic.arena.ArenaLogic;
|
||||||
|
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 GetArenaRecordHandler extends BaseHandler {
|
||||||
|
@Override
|
||||||
|
public MessageTypeProto.MessageType getMessageCode() {
|
||||||
|
return MessageTypeProto.MessageType.ARENA_DEFENSE_REQUEST;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void process(ISession iSession, PacketNetData netData) throws Exception {
|
||||||
|
ArenaLogic.getInstance().getArenaRecord(iSession);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
package com.ljsd.jieling.handler.arena;
|
||||||
|
|
||||||
|
import com.ljsd.jieling.handler.BaseHandler;
|
||||||
|
import com.ljsd.jieling.logic.arena.ArenaLogic;
|
||||||
|
import com.ljsd.jieling.netty.cocdex.PacketNetData;
|
||||||
|
import com.ljsd.jieling.network.session.ISession;
|
||||||
|
import com.ljsd.jieling.protocols.FightInfoProto;
|
||||||
|
import com.ljsd.jieling.protocols.MessageTypeProto;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class ViewFightReplayHandler extends BaseHandler {
|
||||||
|
@Override
|
||||||
|
public MessageTypeProto.MessageType getMessageCode() {
|
||||||
|
return MessageTypeProto.MessageType.VIEW_FIGHTREPLAY_REQUEST;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void process(ISession iSession, PacketNetData netData) throws Exception {
|
||||||
|
byte[] bytes = netData.parseClientProtoNetData();
|
||||||
|
FightInfoProto.FightRePlayRequest fightRePlayRequest = FightInfoProto.FightRePlayRequest.parseFrom(bytes);
|
||||||
|
String fightId = fightRePlayRequest.getFightId();
|
||||||
|
int type = fightRePlayRequest.getType();
|
||||||
|
ArenaLogic.getInstance().getFightReplayData(iSession,type,fightId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -2,7 +2,10 @@ package com.ljsd.jieling.logic;
|
||||||
|
|
||||||
import com.ljsd.GameApplication;
|
import com.ljsd.GameApplication;
|
||||||
import com.ljsd.jieling.config.SGlobalSystemConfig;
|
import com.ljsd.jieling.config.SGlobalSystemConfig;
|
||||||
|
import com.ljsd.jieling.core.FunctionIdEnum;
|
||||||
|
import com.ljsd.jieling.core.GlobalsDef;
|
||||||
import com.ljsd.jieling.db.mongo.MongoUtil;
|
import com.ljsd.jieling.db.mongo.MongoUtil;
|
||||||
|
import com.ljsd.jieling.logic.arena.ArenaLogic;
|
||||||
import com.ljsd.jieling.logic.dao.TimeControllerOfFunction;
|
import com.ljsd.jieling.logic.dao.TimeControllerOfFunction;
|
||||||
import com.ljsd.jieling.logic.dao.root.GlobalSystemControl;
|
import com.ljsd.jieling.logic.dao.root.GlobalSystemControl;
|
||||||
import com.ljsd.jieling.util.TimeUtils;
|
import com.ljsd.jieling.util.TimeUtils;
|
||||||
|
|
@ -106,11 +109,24 @@ public class GlobalDataManaager {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void openAction(List<Integer> ids){
|
public void openAction(List<Integer> ids){
|
||||||
|
for(Integer openId : ids){
|
||||||
|
switch (openId){
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void closeAction(List<Integer> ids){
|
public void closeAction(List<Integer> ids) throws Exception {
|
||||||
|
for(Integer closeId : ids){
|
||||||
|
switch (closeId){
|
||||||
|
case 8:
|
||||||
|
ArenaLogic.getInstance().sendReward(GlobalsDef.ARENA_SEASON_REWARD);
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,8 @@ public class ActivityLogic {
|
||||||
|
|
||||||
private Set<Integer> openActivityIds =new HashSet<>();
|
private Set<Integer> openActivityIds =new HashSet<>();
|
||||||
|
|
||||||
|
private int secretBoxSeasonTimes =0; //秘盒赛季
|
||||||
|
|
||||||
public void flushEveryDay(User user) {
|
public void flushEveryDay(User user) {
|
||||||
updateActivityMissionProgress(user, ActivityType.SevenLogin,1);
|
updateActivityMissionProgress(user, ActivityType.SevenLogin,1);
|
||||||
|
|
||||||
|
|
@ -277,12 +279,7 @@ public class ActivityLogic {
|
||||||
User user = UserManager.getUser(uid);
|
User user = UserManager.getUser(uid);
|
||||||
SecretBoxManager secretBoxManager = user.getSecretBoxManager();
|
SecretBoxManager secretBoxManager = user.getSecretBoxManager();
|
||||||
if(secretBoxManager.getCurSeason() == 0){
|
if(secretBoxManager.getCurSeason() == 0){
|
||||||
secretBoxManager.setCount(0);
|
flushSecretBox(secretBoxManager);
|
||||||
secretBoxManager.setCurSeason(1);
|
|
||||||
Map<Integer,Integer> freeUseMap = new HashMap<>(2);
|
|
||||||
freeUseMap.put(1,1);
|
|
||||||
freeUseMap.put(2,0);
|
|
||||||
secretBoxManager.setFreeUseInfos(freeUseMap);
|
|
||||||
}
|
}
|
||||||
List<PlayerInfoProto.SecretBoxFreeUseInfo> secretBoxFreeUseInfoList = new ArrayList<>(2);
|
List<PlayerInfoProto.SecretBoxFreeUseInfo> secretBoxFreeUseInfoList = new ArrayList<>(2);
|
||||||
Map<Integer, Integer> freeUseInfos = secretBoxManager.getFreeUseInfos();
|
Map<Integer, Integer> freeUseInfos = secretBoxManager.getFreeUseInfos();
|
||||||
|
|
@ -297,12 +294,25 @@ public class ActivityLogic {
|
||||||
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.GET_SECRETBOX_RESPONSE_VALUE,build,true);
|
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.GET_SECRETBOX_RESPONSE_VALUE,build,true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void flushSecretBox( SecretBoxManager secretBoxManager){
|
||||||
|
secretBoxManager.setCount(0);
|
||||||
|
secretBoxManager.setCurSeason(secretBoxSeasonTimes);
|
||||||
|
List<Integer> idsBySeasonId = SDifferDemonsBoxSetting.getIdsBySeasonId(secretBoxSeasonTimes);
|
||||||
|
Map<Integer,Integer> freeUseMap = new HashMap<>(idsBySeasonId.size());
|
||||||
|
for(int id:idsBySeasonId){
|
||||||
|
SDifferDemonsBoxSetting sDifferDemonsBoxSetting = SDifferDemonsBoxSetting.getConfig().get(id);
|
||||||
|
freeUseMap.put(id,sDifferDemonsBoxSetting.getFreeTime());
|
||||||
|
}
|
||||||
|
secretBoxManager.setFreeUseInfos(freeUseMap);
|
||||||
|
}
|
||||||
|
|
||||||
public void randomSecretBox(ISession session,int id) throws Exception {
|
public void randomSecretBox(ISession session,int id) throws Exception {
|
||||||
int uid = session.getUid();
|
int uid = session.getUid();
|
||||||
User user = UserManager.getUser(uid);
|
User user = UserManager.getUser(uid);
|
||||||
SecretBoxManager secretBoxManager = user.getSecretBoxManager();
|
SecretBoxManager secretBoxManager = user.getSecretBoxManager();
|
||||||
SDifferDemonsBoxSetting sDifferDemonsBoxSetting = SDifferDemonsBoxSetting.getConfig().get(id);
|
SDifferDemonsBoxSetting sDifferDemonsBoxSetting = SDifferDemonsBoxSetting.getConfig().get(id);
|
||||||
if(sDifferDemonsBoxSetting == null){
|
if(sDifferDemonsBoxSetting == null || sDifferDemonsBoxSetting.getSeasonTimes() != secretBoxSeasonTimes){
|
||||||
|
MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.SECRETBOX_RANDOM_RESPONSE_VALUE,"activity_close");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int freeTime = sDifferDemonsBoxSetting.getFreeTime();
|
int freeTime = sDifferDemonsBoxSetting.getFreeTime();
|
||||||
|
|
@ -360,7 +370,7 @@ public class ActivityLogic {
|
||||||
if(count%surelyTimes != 0){
|
if(count%surelyTimes != 0){
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if(count/surelyTimes == 0){
|
if(count/surelyTimes > 0){
|
||||||
poolId = sDifferDemonsBoxSeaons.getSurelyPools();
|
poolId = sDifferDemonsBoxSeaons.getSurelyPools();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -369,4 +379,19 @@ public class ActivityLogic {
|
||||||
}
|
}
|
||||||
return poolId;
|
return poolId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void checkSecretBoxSeason(){
|
||||||
|
long now = TimeUtils.now();
|
||||||
|
for(SDifferDemonsBoxSetting sDifferDemonsBoxSetting : SDifferDemonsBoxSetting.getConfig().values()){
|
||||||
|
long seasonStartLong = sDifferDemonsBoxSetting.getSeasonStartLong();
|
||||||
|
long seasonEndLong = sDifferDemonsBoxSetting.getSeasonEndLong();
|
||||||
|
if(now>=seasonStartLong && now<=seasonEndLong){
|
||||||
|
secretBoxSeasonTimes = sDifferDemonsBoxSetting.getSeasonTimes();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
secretBoxSeasonTimes=0;
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,22 @@
|
||||||
package com.ljsd.jieling.logic.arena;
|
package com.ljsd.jieling.logic.arena;
|
||||||
|
|
||||||
import com.googlecode.protobuf.format.JsonFormat;
|
|
||||||
|
|
||||||
import com.ljsd.jieling.config.*;
|
import com.ljsd.jieling.config.*;
|
||||||
import com.ljsd.jieling.core.GlobalsDef;
|
import com.ljsd.jieling.core.GlobalsDef;
|
||||||
import com.ljsd.jieling.db.mongo.MongoUtil;
|
import com.ljsd.jieling.db.redis.RedisKey;
|
||||||
import com.ljsd.jieling.db.redis.RedisUtil;
|
import com.ljsd.jieling.db.redis.RedisUtil;
|
||||||
|
import com.ljsd.jieling.globals.Global;
|
||||||
import com.ljsd.jieling.handler.map.behavior.BehaviorUtil;
|
import com.ljsd.jieling.handler.map.behavior.BehaviorUtil;
|
||||||
import com.ljsd.jieling.logic.dao.*;
|
import com.ljsd.jieling.logic.dao.*;
|
||||||
import com.ljsd.jieling.logic.dao.root.User;
|
import com.ljsd.jieling.logic.dao.root.User;
|
||||||
import com.ljsd.jieling.logic.fight.CheckFight;
|
import com.ljsd.jieling.logic.fight.CheckFight;
|
||||||
import com.ljsd.jieling.logic.hero.HeroLogic;
|
import com.ljsd.jieling.logic.hero.HeroLogic;
|
||||||
|
import com.ljsd.jieling.logic.mail.MailLogic;
|
||||||
import com.ljsd.jieling.network.session.ISession;
|
import com.ljsd.jieling.network.session.ISession;
|
||||||
import com.ljsd.jieling.protocols.ArenaInfoProto;
|
import com.ljsd.jieling.protocols.ArenaInfoProto;
|
||||||
import com.ljsd.jieling.protocols.CommonProto;
|
import com.ljsd.jieling.protocols.CommonProto;
|
||||||
|
import com.ljsd.jieling.protocols.FightInfoProto;
|
||||||
import com.ljsd.jieling.protocols.MessageTypeProto;
|
import com.ljsd.jieling.protocols.MessageTypeProto;
|
||||||
import com.ljsd.jieling.util.*;
|
import com.ljsd.jieling.util.*;
|
||||||
import org.luaj.vm2.LuaValue;
|
import org.luaj.vm2.LuaValue;
|
||||||
|
|
@ -27,6 +31,8 @@ public class ArenaLogic {
|
||||||
|
|
||||||
private ArenaLogic(){}
|
private ArenaLogic(){}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static class Instance {
|
public static class Instance {
|
||||||
public final static ArenaLogic instance = new ArenaLogic();
|
public final static ArenaLogic instance = new ArenaLogic();
|
||||||
}
|
}
|
||||||
|
|
@ -46,11 +52,11 @@ public class ArenaLogic {
|
||||||
if(arenaManager.getFlushNums() == 0){
|
if(arenaManager.getFlushNums() == 0){
|
||||||
List<ArenaEnemy> arenaEnemies = new ArrayList<>();
|
List<ArenaEnemy> arenaEnemies = new ArrayList<>();
|
||||||
Set<Integer> robotIds = randomRobot(level, 5);
|
Set<Integer> robotIds = randomRobot(level, 5);
|
||||||
toArenaEnemy(uid,robotIds,arenaEnemies,GlobalsDef.ARENA_ROBOT_TYPE);
|
toArenaEnemy(uid,robotIds,arenaEnemies, GlobalsDef.ARENA_ROBOT_TYPE);
|
||||||
arenaManager.setArenaEnemies(arenaEnemies);
|
arenaManager.setArenaEnemies(arenaEnemies);
|
||||||
}
|
}
|
||||||
|
|
||||||
int score = RedisUtil.getInstence().getZSetScore("Arena_Rank_1", Integer.toString(uid)).intValue();
|
int score = RedisUtil.getInstence().getZSetScore(RedisKey.ARENA_RANK,"1", Integer.toString(uid)).intValue();
|
||||||
if(score == -1){
|
if(score == -1){
|
||||||
score = 1000;
|
score = 1000;
|
||||||
}
|
}
|
||||||
|
|
@ -67,7 +73,7 @@ public class ArenaLogic {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public List<CommonProto.ArenaEnemy> getArenaEnemyList(List<ArenaEnemy> arenaEnemies){
|
public List<CommonProto.ArenaEnemy> getArenaEnemyList(List<ArenaEnemy> arenaEnemies) throws Exception {
|
||||||
List<CommonProto.ArenaEnemy> arenaEnemyList = new ArrayList<>(arenaEnemies.size());
|
List<CommonProto.ArenaEnemy> arenaEnemyList = new ArrayList<>(arenaEnemies.size());
|
||||||
int defaultScore = SArenaSetting.getSArenaSetting().getScore();
|
int defaultScore = SArenaSetting.getSArenaSetting().getScore();
|
||||||
for(ArenaEnemy arenaEnemy : arenaEnemies){
|
for(ArenaEnemy arenaEnemy : arenaEnemies){
|
||||||
|
|
@ -87,13 +93,36 @@ public class ArenaLogic {
|
||||||
.setPersonInfo(personInfoBuild)
|
.setPersonInfo(personInfoBuild)
|
||||||
.setTeam(teamBuild)
|
.setTeam(teamBuild)
|
||||||
.build());
|
.build());
|
||||||
|
}else{
|
||||||
|
User user = UserManager.getUser(enemyId);
|
||||||
|
int totalForce = HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.TEAM_ARENA_DEFENSE);
|
||||||
|
List<TeamPosHeroInfo> teamPosHeroInfoList = user.getTeamPosManager().getTeamPosForHero().get(GlobalsDef.TEAM_ARENA_DEFENSE);
|
||||||
|
Map<String, Hero> heroMap = user.getHeroManager().getHeroMap();
|
||||||
|
List<Integer> heroTids = new ArrayList<>(teamPosHeroInfoList.size());
|
||||||
|
for(TeamPosHeroInfo teamPosHeroInfo:teamPosHeroInfoList){
|
||||||
|
heroTids.add(heroMap.get(teamPosHeroInfo.getHeroId()).getTemplateId());
|
||||||
|
}
|
||||||
|
CommonProto.Team teamBuild = CommonProto.Team.newBuilder().addAllHeroTid(heroTids).build();
|
||||||
|
PlayerManager playerInfoManager = user.getPlayerInfoManager();
|
||||||
|
CommonProto.ArenaPersonInfo personInfoBuild = CommonProto.ArenaPersonInfo.newBuilder()
|
||||||
|
.setUid(enemyId)
|
||||||
|
.setLevel(playerInfoManager.getLevel())
|
||||||
|
.setName(playerInfoManager.getNickName())
|
||||||
|
.setScore(RedisUtil.getInstence().getZSetScore(RedisKey.ARENA_RANK,"1", Integer.toString(enemyId)).intValue())
|
||||||
|
.setHead(0)
|
||||||
|
.setTotalForce(totalForce)
|
||||||
|
.build();
|
||||||
|
arenaEnemyList.add(CommonProto.ArenaEnemy.newBuilder()
|
||||||
|
.setPersonInfo(personInfoBuild)
|
||||||
|
.setTeam(teamBuild)
|
||||||
|
.build());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return arenaEnemyList;
|
return arenaEnemyList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void challenge(ISession session,int challengeUid,int teamId) throws Exception {
|
public void challenge(ISession session,int challengeUid,int teamId,int skipFight) throws Exception {
|
||||||
int uid = session.getUid();
|
int uid = session.getUid();
|
||||||
User user = UserManager.getUser(uid);
|
User user = UserManager.getUser(uid);
|
||||||
String err = checkChallenge(user);
|
String err = checkChallenge(user);
|
||||||
|
|
@ -116,31 +145,37 @@ public class ArenaLogic {
|
||||||
int defScoreChange=0;
|
int defScoreChange=0;
|
||||||
|
|
||||||
if(arenaManager.getCount() != 0){
|
if(arenaManager.getCount() != 0){
|
||||||
myscore = RedisUtil.getInstence().getZSetScore("Arena_Rank_1", Integer.toString(challengeUid)).intValue();
|
myscore = RedisUtil.getInstence().getZSetScore(RedisKey.ARENA_RANK,"1", Integer.toString(challengeUid)).intValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
setMyArenaEnemys(uid,user);
|
setMyArenaEnemys(uid,user);
|
||||||
RedisUtil.getInstence().incrementZsetScore("Arena_Rank_1",Integer.toString(uid),myscoreChange);
|
RedisUtil.getInstence().incrementZsetScore(RedisKey.ARENA_RANK,"1",Integer.toString(uid),myscoreChange);
|
||||||
|
ArenaInfoProto.ArenaChallengeResponse.Builder builder = ArenaInfoProto.ArenaChallengeResponse.newBuilder();
|
||||||
if( enemyType == GlobalsDef.ARENA_PLAYER_TYPE){
|
if( enemyType == GlobalsDef.ARENA_PLAYER_TYPE){
|
||||||
|
ArenaRecord arenaRecord = new ArenaRecord();
|
||||||
User defUser = UserManager.getUser(challengeUid);
|
User defUser = UserManager.getUser(challengeUid);
|
||||||
fightResult = getFightResultByPersonToPerson(user, teamId, defUser, 200);
|
fightResult = getFightResultByPersonToPerson(user, teamId, defUser, GlobalsDef.TEAM_ARENA_DEFENSE,arenaRecord,skipFight,builder);
|
||||||
defScore = RedisUtil.getInstence().getZSetScore("Arena_Rank_1", Integer.toString(challengeUid)).intValue();
|
defScore = RedisUtil.getInstence().getZSetScore(RedisKey.ARENA_RANK,"1", Integer.toString(challengeUid)).intValue();
|
||||||
defScoreChange = calScore(defScore, myscore,fightResult);
|
defScoreChange = calScore(defScore, myscore,fightResult==1?0:1);
|
||||||
myscoreChange = calScore(myscore, defScore,fightResult);
|
myscoreChange = calScore(myscore, defScore,fightResult);
|
||||||
RedisUtil.getInstence().incrementZsetScore("Arena_Rank_1",Integer.toString(challengeUid),defScoreChange);
|
arenaRecord.setAttackId(uid);
|
||||||
|
arenaRecord.setCreateTime((int)(System.currentTimeMillis()/1000));
|
||||||
|
arenaRecord.setId(KeyGenUtils.produceIdByModule(UUIDEnum.ARENARECORD,Integer.toString(uid)));
|
||||||
|
RedisUtil.getInstence().putMapEntry(RedisKey.ARENA_RRECORD,Integer.toString(challengeUid),arenaRecord.getId(),arenaRecord);
|
||||||
|
RedisUtil.getInstence().incrementZsetScore(RedisKey.ARENA_RANK,"1",Integer.toString(challengeUid),defScoreChange);
|
||||||
}else{
|
}else{
|
||||||
SArenaRobotConfig sArenaRobotConfig = SArenaRobotConfig.getsArenaRobotConfigById(challengeUid);
|
SArenaRobotConfig sArenaRobotConfig = SArenaRobotConfig.getsArenaRobotConfigById(challengeUid);
|
||||||
fightResult = getFightResultByPersonToRobot(user, teamId,sArenaRobotConfig);
|
fightResult = getFightResultByPersonToRobot(user, teamId,sArenaRobotConfig,skipFight,builder);
|
||||||
myscoreChange = calScore(myscore, defScore,fightResult);
|
myscoreChange = calScore(myscore, defScore,fightResult);
|
||||||
defScoreChange = calScore(defScore, myscore,fightResult);
|
defScoreChange = calScore(defScore, myscore,fightResult==1?0:1);
|
||||||
|
|
||||||
}
|
}
|
||||||
if(arenaManager.getCount() == 0){
|
if(arenaManager.getCount() == 0){
|
||||||
RedisUtil.getInstence().incrementZsetScore("Arena_Rank_1",Integer.toString(uid),myscoreChange);
|
RedisUtil.getInstence().incrementZsetScore(RedisKey.ARENA_RANK,"1",Integer.toString(uid),myscoreChange + SArenaSetting.getSArenaSetting().getScore() );
|
||||||
}
|
}
|
||||||
arenaManager.updateChallenge(fightResult);
|
arenaManager.updateChallenge(fightResult);
|
||||||
//组战斗数据
|
//组战斗数据
|
||||||
ArenaInfoProto.ArenaChallengeResponse build = ArenaInfoProto.ArenaChallengeResponse.newBuilder().setMyScoreChange(myscoreChange).setDefScoreChange(defScoreChange).addAllArenaEnemys(getArenaEnemyList(arenaManager.getArenaEnemies())).build();
|
ArenaInfoProto.ArenaChallengeResponse build = builder.setMyScoreChange(myscoreChange).setDefScoreChange(defScoreChange).addAllArenaEnemys(getArenaEnemyList(arenaManager.getArenaEnemies())).build();
|
||||||
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.ARENA_CHALLENGE_RESPONSE_VALUE,build,true);
|
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.ARENA_CHALLENGE_RESPONSE_VALUE,build,true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -151,7 +186,11 @@ public class ArenaLogic {
|
||||||
Set<Integer> robotIds = randomRobot(user.getPlayerInfoManager().getLevel(), 5);
|
Set<Integer> robotIds = randomRobot(user.getPlayerInfoManager().getLevel(), 5);
|
||||||
toArenaEnemy(uid,robotIds,arenaEnemies,GlobalsDef.ARENA_ROBOT_TYPE);
|
toArenaEnemy(uid,robotIds,arenaEnemies,GlobalsDef.ARENA_ROBOT_TYPE);
|
||||||
}else{
|
}else{
|
||||||
Set<Integer> robotIds = randomPerson(user.getPlayerInfoManager().getLevel());
|
int score = RedisUtil.getInstence().getZSetScore(RedisKey.ARENA_RANK,"1", Integer.toString(uid)).intValue();
|
||||||
|
if(score == -1){
|
||||||
|
score = SArenaSetting.getSArenaSetting().getScore();
|
||||||
|
}
|
||||||
|
Set<Integer> robotIds = randomPerson(uid,score);
|
||||||
toArenaEnemy(uid,robotIds,arenaEnemies,GlobalsDef.ARENA_PLAYER_TYPE);
|
toArenaEnemy(uid,robotIds,arenaEnemies,GlobalsDef.ARENA_PLAYER_TYPE);
|
||||||
}
|
}
|
||||||
arenaManager.setArenaEnemies(arenaEnemies);
|
arenaManager.setArenaEnemies(arenaEnemies);
|
||||||
|
|
@ -160,18 +199,22 @@ public class ArenaLogic {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static int getFightResultByPersonToPerson(User mine,int myteamId,User defUser,int defTeamId){
|
public static int getFightResultByPersonToPerson(User mine, int myteamId, User defUser, int defTeamId, ArenaRecord arenaRecord, int skipFight, ArenaInfoProto.ArenaChallengeResponse.Builder builder){
|
||||||
CommonProto.FightTeamInfo fightTeamInfo = BehaviorUtil.getFightTeamInfo(mine,myteamId);
|
CommonProto.FightTeamInfo fightTeamInfo = BehaviorUtil.getFightTeamInfo(mine,myteamId);
|
||||||
CommonProto.FightTeamInfo deffightTeamInfo = BehaviorUtil.getFightTeamInfo(defUser,defTeamId);
|
CommonProto.FightTeamInfo deffightTeamInfo = BehaviorUtil.getFightTeamInfo(defUser,defTeamId);
|
||||||
//设置战斗随机种子
|
//设置战斗随机种子
|
||||||
int seed = (int)(System.currentTimeMillis()/1000);
|
int seed = (int)(System.currentTimeMillis()/1000);
|
||||||
byte[] snapRecord = CommonProto.FightData.newBuilder()
|
CommonProto.FightData build = CommonProto.FightData.newBuilder()
|
||||||
.setFightMaxTime(SArenaSetting.getSArenaSetting().getMostTime())
|
.setFightMaxTime(SArenaSetting.getSArenaSetting().getMostTime())
|
||||||
.setFightSeed(seed)
|
.setFightSeed(seed)
|
||||||
.setHeroFightInfos(fightTeamInfo)
|
.setHeroFightInfos(fightTeamInfo)
|
||||||
.addMonsterList(deffightTeamInfo)
|
.addMonsterList(deffightTeamInfo)
|
||||||
.build().toByteArray();
|
.build();
|
||||||
//defUser.getArenaManager().addArenRecoed();
|
if(skipFight == 0){
|
||||||
|
builder.setFightData(build);
|
||||||
|
}
|
||||||
|
byte[] snapRecord =builder.build().toByteArray();
|
||||||
|
arenaRecord.setFightData(snapRecord);
|
||||||
LuaValue getFightData = FightDataUtil.getFinalPlayerFightData(fightTeamInfo, deffightTeamInfo);
|
LuaValue getFightData = FightDataUtil.getFinalPlayerFightData(fightTeamInfo, deffightTeamInfo);
|
||||||
LuaValue getOptionData = FightDataUtil.getOptionData("");
|
LuaValue getOptionData = FightDataUtil.getOptionData("");
|
||||||
int[] checkResult = CheckFight.getInstance().checkFight(seed,SArenaSetting.getSArenaSetting().getMostTime(), getFightData, getOptionData);
|
int[] checkResult = CheckFight.getInstance().checkFight(seed,SArenaSetting.getSArenaSetting().getMostTime(), getFightData, getOptionData);
|
||||||
|
|
@ -180,11 +223,19 @@ public class ArenaLogic {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public int getFightResultByPersonToRobot(User mine,int myteamId,SArenaRobotConfig sArenaRobotConfig){
|
public int getFightResultByPersonToRobot(User mine, int myteamId, SArenaRobotConfig sArenaRobotConfig, int skipFight, ArenaInfoProto.ArenaChallengeResponse.Builder builder){
|
||||||
CommonProto.FightTeamInfo fightTeamInfo = BehaviorUtil.getFightTeamInfo(mine,myteamId);
|
CommonProto.FightTeamInfo fightTeamInfo = BehaviorUtil.getFightTeamInfo(mine,myteamId);
|
||||||
CommonProto.FightTeamInfo deffightTeamInfo = BehaviorUtil.getRobotFightTeamInfo(sArenaRobotConfig);
|
CommonProto.FightTeamInfo deffightTeamInfo = BehaviorUtil.getRobotFightTeamInfo(sArenaRobotConfig);
|
||||||
//设置战斗随机种子
|
//设置战斗随机种子
|
||||||
int seed = (int)(System.currentTimeMillis()/1000);
|
int seed = (int)(System.currentTimeMillis()/1000);
|
||||||
|
if(skipFight == 0){
|
||||||
|
builder.setFightData(CommonProto.FightData.newBuilder()
|
||||||
|
.setFightMaxTime(SArenaSetting.getSArenaSetting().getMostTime())
|
||||||
|
.setFightSeed(seed)
|
||||||
|
.setHeroFightInfos(fightTeamInfo)
|
||||||
|
.addMonsterList(deffightTeamInfo)
|
||||||
|
.build());
|
||||||
|
}
|
||||||
LuaValue getFightData = FightDataUtil.getFinalPlayerFightData(fightTeamInfo, deffightTeamInfo);
|
LuaValue getFightData = FightDataUtil.getFinalPlayerFightData(fightTeamInfo, deffightTeamInfo);
|
||||||
LuaValue getOptionData = FightDataUtil.getOptionData("");
|
LuaValue getOptionData = FightDataUtil.getOptionData("");
|
||||||
int[] checkResult = CheckFight.getInstance().checkFight(seed,SArenaSetting.getSArenaSetting().getMostTime(), getFightData, getOptionData);
|
int[] checkResult = CheckFight.getInstance().checkFight(seed,SArenaSetting.getSArenaSetting().getMostTime(), getFightData, getOptionData);
|
||||||
|
|
@ -198,7 +249,7 @@ public class ArenaLogic {
|
||||||
int battleFree = sArenaSetting.getBattleFree();
|
int battleFree = sArenaSetting.getBattleFree();
|
||||||
if(useFreeTimes>=battleFree){
|
if(useFreeTimes>=battleFree){
|
||||||
//校验消耗
|
//校验消耗
|
||||||
boolean enough = ItemUtil.itemCost(user, sArenaSetting.getCostItem());
|
boolean enough = ItemUtil.itemCost(user, new int[][]{sArenaSetting.getCost()});
|
||||||
if(!enough){
|
if(!enough){
|
||||||
return "道具不足";
|
return "道具不足";
|
||||||
}
|
}
|
||||||
|
|
@ -223,18 +274,21 @@ public class ArenaLogic {
|
||||||
int uid = session.getUid();
|
int uid = session.getUid();
|
||||||
SArenaSetting sArenaSetting = SArenaSetting.getSArenaSetting();
|
SArenaSetting sArenaSetting = SArenaSetting.getSArenaSetting();
|
||||||
if(sArenaSetting == null){
|
if(sArenaSetting == null){
|
||||||
|
MessageUtil.sendErrorResponse(session,1, MessageTypeProto.MessageType.ARENA_RANDOM_ENEMY_RESPONSE_VALUE,"");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
User user = UserManager.getUser(uid);
|
User user = UserManager.getUser(uid);
|
||||||
ArenaManager arenaManager = user.getArenaManager();
|
ArenaManager arenaManager = user.getArenaManager();
|
||||||
int flushEnenyTime = arenaManager.getFlushTime();
|
int flushEnenyTime = arenaManager.getFlushTime();
|
||||||
int coldTime = sArenaSetting.getColdTime();
|
int coldTime = sArenaSetting.getColdTime();
|
||||||
int now = (int)TimeUtils.now();
|
int now = (int)(TimeUtils.now()/1000);
|
||||||
if( now - flushEnenyTime < coldTime ){
|
if( now - flushEnenyTime < coldTime ){
|
||||||
|
MessageUtil.sendErrorResponse(session,1, MessageTypeProto.MessageType.ARENA_RANDOM_ENEMY_RESPONSE_VALUE,"cold time");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//刷新选手
|
//刷新选手
|
||||||
setMyArenaEnemys(uid,user);
|
setMyArenaEnemys(uid,user);
|
||||||
|
arenaManager.setFlushTime(now);
|
||||||
ArenaInfoProto.ArenaRandomResponse build = ArenaInfoProto.ArenaRandomResponse.newBuilder().addAllArenaEnemys(getArenaEnemyList(arenaManager.getArenaEnemies())).build();
|
ArenaInfoProto.ArenaRandomResponse build = ArenaInfoProto.ArenaRandomResponse.newBuilder().addAllArenaEnemys(getArenaEnemyList(arenaManager.getArenaEnemies())).build();
|
||||||
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.ARENA_RANDOM_ENEMY_RESPONSE_VALUE,build,true);
|
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.ARENA_RANDOM_ENEMY_RESPONSE_VALUE,build,true);
|
||||||
}
|
}
|
||||||
|
|
@ -257,14 +311,15 @@ public class ArenaLogic {
|
||||||
return robotIds;
|
return robotIds;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Set<Integer> randomPerson(int myScore){
|
public Set<Integer> randomPerson(int uid,int myScore){
|
||||||
Set<Integer> result = new HashSet<>(5);
|
Set<Integer> result = new HashSet<>(5);
|
||||||
int[][] interval = SArenaSetting.getSArenaSetting().getInterval();
|
int[][] interval = SArenaSetting.getSArenaSetting().getInterval();
|
||||||
for(int[] item: interval){
|
for(int[] item: interval){
|
||||||
int high = item[0];
|
int low = item[0];
|
||||||
int low = item[1];
|
int high = item[1];
|
||||||
Set<String> arenaRank = RedisUtil.getInstence().getZsetRange("Arena_Rank_1", myScore * low / 100.0f, myScore * high / 100.0f);
|
Set<String> arenaRank = RedisUtil.getInstence().getZsetRange(RedisKey.ARENA_RANK,"1", myScore * low / 100.0f-1, myScore * high / 100.0f +1);
|
||||||
if(arenaRank!=null && !arenaRank.isEmpty()){
|
if(arenaRank!=null && !arenaRank.isEmpty()){
|
||||||
|
arenaRank.remove(Integer.toString(uid));
|
||||||
String s = randomSet(arenaRank);
|
String s = randomSet(arenaRank);
|
||||||
if(!StringUtil.isEmpty(s)){
|
if(!StringUtil.isEmpty(s)){
|
||||||
result.add(Integer.parseInt(s));
|
result.add(Integer.parseInt(s));
|
||||||
|
|
@ -296,26 +351,20 @@ public class ArenaLogic {
|
||||||
|
|
||||||
|
|
||||||
public void getWorldRankByPage(ISession session,int page) throws Exception {
|
public void getWorldRankByPage(ISession session,int page) throws Exception {
|
||||||
int num =20;
|
|
||||||
if(page>1){
|
|
||||||
num = 10;
|
|
||||||
}
|
|
||||||
if (page == 0) {
|
if (page == 0) {
|
||||||
page = 1;
|
page = 1;
|
||||||
|
|
||||||
}
|
}
|
||||||
page = 1;
|
|
||||||
int start = (page - 1) * 20, end = page * 20 - 1;
|
int start = (page - 1) * 20, end = page * 20 - 1;
|
||||||
List<CommonProto.ArenaEnemy> arenaRankMemberInfo = new ArrayList<>(20);
|
List<CommonProto.ArenaEnemy> arenaRankMemberInfo = new ArrayList<>(20);
|
||||||
CommonProto.ArenaEnemy build =null;
|
Set<ZSetOperations.TypedTuple<String>> arenaRankInfo = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.ARENA_RANK,"1", start, end);
|
||||||
Set<ZSetOperations.TypedTuple<String>> arenaRankInfo = RedisUtil.getInstence().getZsetreverseRangeWithScores("Arena_Rank_1", start, end);
|
|
||||||
for(ZSetOperations.TypedTuple<String> item : arenaRankInfo){
|
for(ZSetOperations.TypedTuple<String> item : arenaRankInfo){
|
||||||
String value = item.getValue();
|
String value = item.getValue();
|
||||||
int score =item.getScore().intValue();
|
int score =item.getScore().intValue();
|
||||||
int uid = Integer.parseInt(value);
|
int uid = Integer.parseInt(value);
|
||||||
User user = UserManager.getUser(uid);
|
User user = UserManager.getUser(uid);
|
||||||
int totalForce = HeroLogic.getInstance().calTeamTotalForce(user, 101);
|
int totalForce = HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.TEAM_ARENA_DEFENSE);
|
||||||
List<TeamPosHeroInfo> teamPosHeroInfoList = user.getTeamPosManager().getTeamPosForHero().get(101);
|
List<TeamPosHeroInfo> teamPosHeroInfoList = user.getTeamPosManager().getTeamPosForHero().get(GlobalsDef.TEAM_ARENA_DEFENSE);
|
||||||
Map<String, Hero> heroMap = user.getHeroManager().getHeroMap();
|
Map<String, Hero> heroMap = user.getHeroManager().getHeroMap();
|
||||||
List<Integer> heroTids = new ArrayList<>(teamPosHeroInfoList.size());
|
List<Integer> heroTids = new ArrayList<>(teamPosHeroInfoList.size());
|
||||||
for(TeamPosHeroInfo teamPosHeroInfo:teamPosHeroInfoList){
|
for(TeamPosHeroInfo teamPosHeroInfo:teamPosHeroInfoList){
|
||||||
|
|
@ -332,21 +381,18 @@ public class ArenaLogic {
|
||||||
.setRank(++start)
|
.setRank(++start)
|
||||||
.setTotalForce(totalForce)
|
.setTotalForce(totalForce)
|
||||||
.build();
|
.build();
|
||||||
build = CommonProto.ArenaEnemy.newBuilder()
|
arenaRankMemberInfo.add(CommonProto.ArenaEnemy.newBuilder()
|
||||||
.setPersonInfo(personInfoBuild)
|
.setPersonInfo(personInfoBuild)
|
||||||
.setTeam(teamBuild)
|
.setTeam(teamBuild)
|
||||||
.build();
|
.build());
|
||||||
}
|
|
||||||
for(int i=0;i<num;i++){
|
|
||||||
arenaRankMemberInfo.add(build);
|
|
||||||
}
|
}
|
||||||
int uid = session.getUid();
|
int uid = session.getUid();
|
||||||
int score = RedisUtil.getInstence().getZSetScore("Arena_Rank_1", Integer.toString(uid)).intValue();
|
int score = RedisUtil.getInstence().getZSetScore(RedisKey.ARENA_RANK,"1", Integer.toString(uid)).intValue();
|
||||||
int myRank =-1;
|
int myRank =-1;
|
||||||
if(score == -1){
|
if(score == -1){
|
||||||
score = SArenaSetting.getSArenaSetting().getScore();
|
score = SArenaSetting.getSArenaSetting().getScore();
|
||||||
}else{
|
}else{
|
||||||
myRank= RedisUtil.getInstence().getZSetreverseRank("Arena_Rank_1", Integer.toString(uid)).intValue()+1;
|
myRank= RedisUtil.getInstence().getZSetreverseRank(RedisKey.ARENA_RANK,"1",Integer.toString(uid)).intValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
ArenaInfoProto.GetArenaRankInfoResponse buildResponse = ArenaInfoProto.GetArenaRankInfoResponse.newBuilder()
|
ArenaInfoProto.GetArenaRankInfoResponse buildResponse = ArenaInfoProto.GetArenaRankInfoResponse.newBuilder()
|
||||||
|
|
@ -359,23 +405,63 @@ public class ArenaLogic {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public String getRewardByRank(int rank,int type){
|
|
||||||
Map<Integer, SArenaReward> config = SArenaReward.getConfig();
|
|
||||||
for(SArenaReward sArenaReward : config.values()){
|
|
||||||
int minRank = sArenaReward.getMinRank();
|
|
||||||
int maxRank = sArenaReward.getMaxRank();
|
|
||||||
if(rank>=minRank && rank<=maxRank){
|
|
||||||
if(type == GlobalsDef.ARENA_DAILY_REWARD){
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public void getArenaRecord(ISession iSession) throws Exception {
|
||||||
|
int uid = iSession.getUid();
|
||||||
|
Map<String, ArenaRecord> result = RedisUtil.getInstence().getMapValues(RedisKey.ARENA_RRECORD, Integer.toString(uid), String.class, ArenaRecord.class);
|
||||||
|
if(result!=null && !result.isEmpty()){
|
||||||
|
List<CommonProto.ArenaRecordInfo> arenaRecordInfos = new ArrayList<>();
|
||||||
|
List<ArenaRecord> arenaRecordList = new ArrayList<>(result.values());
|
||||||
|
Collections.sort(arenaRecordList, new Comparator<ArenaRecord>() {
|
||||||
|
@Override
|
||||||
|
public int compare(ArenaRecord o1, ArenaRecord o2) {
|
||||||
|
Integer createTime = o1.getCreateTime();
|
||||||
|
return createTime.compareTo(o2.getCreateTime());
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
int size = arenaRecordList.size();
|
||||||
|
if(size>10){
|
||||||
|
String[] removeMapKeys = new String[size - 10];
|
||||||
|
for(int i=0;i<size-10;i++){
|
||||||
|
ArenaRecord remove = arenaRecordList.remove(0);
|
||||||
|
String removeId = remove.getId();
|
||||||
|
removeMapKeys[i]=(removeId);
|
||||||
|
}
|
||||||
|
RedisUtil.getInstence().zsetRemoveKeys(RedisKey.ARENA_RRECORD,Integer.toString(uid),removeMapKeys);
|
||||||
}
|
}
|
||||||
|
for(ArenaRecord arenaRecord : arenaRecordList){
|
||||||
|
int attackId = arenaRecord.getAttackId();
|
||||||
|
int attackForce = arenaRecord.getAttackForce();
|
||||||
|
User attackUser = UserManager.getUser(attackId);
|
||||||
|
PlayerManager playerInfoManager = attackUser.getPlayerInfoManager();
|
||||||
|
CommonProto.ArenaPersonInfo arenaPersonInfo = CommonProto.ArenaPersonInfo.newBuilder()
|
||||||
|
.setUid(attackId)
|
||||||
|
.setName(playerInfoManager.getNickName())
|
||||||
|
.setLevel(playerInfoManager.getLevel())
|
||||||
|
.setHead(0)
|
||||||
|
.setTotalForce(attackForce)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
arenaRecordInfos.add(CommonProto.ArenaRecordInfo.newBuilder()
|
||||||
|
.setId(arenaRecord.getId())
|
||||||
|
.setAttackInfo(arenaPersonInfo)
|
||||||
|
.setMyScoreChange(arenaRecord.getDefScore())
|
||||||
|
.setAttackTime(arenaRecord.getCreateTime())
|
||||||
|
.build());
|
||||||
|
}
|
||||||
|
|
||||||
|
ArenaInfoProto.ArenaRecordInfoResponse build = ArenaInfoProto.ArenaRecordInfoResponse.newBuilder().addAllArenaRecordInfo(arenaRecordInfos).build();
|
||||||
|
MessageUtil.sendMessage(iSession,1, MessageTypeProto.MessageType.ARENA_DEFENSE_RESPONSE_VALUE,build,true);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
return "";
|
MessageUtil.sendMessage(iSession,1, MessageTypeProto.MessageType.ARENA_DEFENSE_RESPONSE_VALUE,null,true);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
Sa: 实际胜负值, 胜 = 1 负=0
|
Sa: 实际胜负值, 胜 = 1 负=0
|
||||||
|
|
@ -396,8 +482,69 @@ public class ArenaLogic {
|
||||||
return (int)(k*(result-ea));
|
return (int)(k*(result-ea));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendDayilyReward(){
|
|
||||||
|
|
||||||
|
public void getFightReplayData(ISession iSession,int type,String fightId) throws Exception {
|
||||||
|
int uid = iSession.getUid();
|
||||||
|
ArenaRecord arenaRecord = RedisUtil.getInstence().getMapEntry(RedisKey.ARENA_RRECORD, Integer.toString(uid), fightId, ArenaRecord.class);
|
||||||
|
if(arenaRecord == null){
|
||||||
|
MessageUtil.sendErrorResponse(iSession,0, MessageTypeProto.MessageType.VIEW_FIGHTREPLAY_RESPONSE_VALUE,"");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
byte[] fightData = arenaRecord.getFightData();
|
||||||
|
CommonProto.FightData fightDataProto = CommonProto.FightData.parseFrom(fightData);
|
||||||
|
FightInfoProto.FightRePlayResponse build = FightInfoProto.FightRePlayResponse.newBuilder().setFightData(fightDataProto).build();
|
||||||
|
MessageUtil.sendMessage(iSession,1, MessageTypeProto.MessageType.VIEW_FIGHTREPLAY_RESPONSE_VALUE,build,true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发送结算奖励
|
||||||
|
* @param type
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public void sendReward(int type) throws Exception {
|
||||||
|
String title;
|
||||||
|
String content;
|
||||||
|
if(type == GlobalsDef.ARENA_DAILY_REWARD){
|
||||||
|
title = SErrorCodeEerverConfig.getI18NMessage("arena_daily_reward_title");
|
||||||
|
content = SErrorCodeEerverConfig.getI18NMessage("arena_daily_reward_txt");
|
||||||
|
}else{
|
||||||
|
title = SErrorCodeEerverConfig.getI18NMessage("arena_season_reward_title");
|
||||||
|
content = SErrorCodeEerverConfig.getI18NMessage("arena_season_reward_txt");
|
||||||
|
}
|
||||||
|
Set<ZSetOperations.TypedTuple<String>> arenaRankInfo = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.ARENA_RANK,"1", 0, -1);
|
||||||
|
int rank = 1;
|
||||||
|
int nowTime =(int) (TimeUtils.now()/1000);
|
||||||
|
for(ZSetOperations.TypedTuple<String> item : arenaRankInfo){
|
||||||
|
String value = item.getValue();
|
||||||
|
int uid = Integer.parseInt(value);
|
||||||
|
User user = UserManager.getUser(uid);
|
||||||
|
String rewardByRank = getRewardByRank(rank++, type);
|
||||||
|
if("".equals(rewardByRank)){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
MailLogic.getInstance().sendMail(Integer.parseInt(user.getId()),title,content,rewardByRank,nowTime, Global.MAIL_EFFECTIVE_TIME);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRewardByRank(int rank,int type){
|
||||||
|
Map<Integer, SArenaReward> config = SArenaReward.getConfig();
|
||||||
|
for(SArenaReward sArenaReward : config.values()){
|
||||||
|
int minRank = sArenaReward.getMinRank();
|
||||||
|
int maxRank = sArenaReward.getMaxRank();
|
||||||
|
if(rank>=minRank && rank<=maxRank){
|
||||||
|
if(type == GlobalsDef.ARENA_DAILY_REWARD){
|
||||||
|
int[][] dailyReward = sArenaReward.getDailyReward();
|
||||||
|
return StringUtil.parseArrayToString(dailyReward);
|
||||||
|
}else{
|
||||||
|
int[][] seasonReward = sArenaReward.getSeasonReward();
|
||||||
|
return StringUtil.parseArrayToString(seasonReward);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ package com.ljsd.jieling.logic.dao;
|
||||||
import com.ljsd.common.mogodb.MongoBase;
|
import com.ljsd.common.mogodb.MongoBase;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -26,7 +27,6 @@ public class ArenaManager extends MongoBase {
|
||||||
|
|
||||||
private List<ArenaEnemy> arenaEnemies;
|
private List<ArenaEnemy> arenaEnemies;
|
||||||
|
|
||||||
private List<ArenaRecord> arenaRecordList;
|
|
||||||
|
|
||||||
|
|
||||||
public void updateChallenge(int fightResult){
|
public void updateChallenge(int fightResult){
|
||||||
|
|
@ -41,17 +41,6 @@ public class ArenaManager extends MongoBase {
|
||||||
updateString("count",count);
|
updateString("count",count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void addArenRecoed(ArenaRecord arenaRecord){
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void removeRecoed(){
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public int getScore() {
|
public int getScore() {
|
||||||
return score;
|
return score;
|
||||||
}
|
}
|
||||||
|
|
@ -92,6 +81,10 @@ public class ArenaManager extends MongoBase {
|
||||||
this.useFreeTimes = useFreeTimes;
|
this.useFreeTimes = useFreeTimes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setFlushTime(int flushTime) {
|
||||||
|
this.flushTime = flushTime;
|
||||||
|
}
|
||||||
|
|
||||||
public int getFlushNums() {
|
public int getFlushNums() {
|
||||||
return flushNums;
|
return flushNums;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
package com.ljsd.jieling.logic.dao;
|
package com.ljsd.jieling.logic.dao;
|
||||||
|
|
||||||
|
|
||||||
public class ArenaRecord {
|
|
||||||
|
|
||||||
private int id;
|
public class ArenaRecord {
|
||||||
|
|
||||||
|
private String id;
|
||||||
|
|
||||||
private int attackId; //进攻者
|
private int attackId; //进攻者
|
||||||
|
|
||||||
|
|
@ -13,15 +14,55 @@ public class ArenaRecord {
|
||||||
|
|
||||||
private byte[] fightData;
|
private byte[] fightData;
|
||||||
|
|
||||||
|
|
||||||
private int createTime;
|
private int createTime;
|
||||||
|
|
||||||
public ArenaRecord(){}
|
public ArenaRecord(){}
|
||||||
|
|
||||||
public ArenaRecord(int attackId, int defScore,byte[] fightData) {
|
public int getAttackId() {
|
||||||
|
return attackId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAttackId(int attackId) {
|
||||||
this.attackId = attackId;
|
this.attackId = attackId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getDefScore() {
|
||||||
|
return defScore;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDefScore(int defScore) {
|
||||||
this.defScore = defScore;
|
this.defScore = defScore;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getAttackForce() {
|
||||||
|
return attackForce;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAttackForce(int attackForce) {
|
||||||
|
this.attackForce = attackForce;
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte[] getFightData() {
|
||||||
|
return fightData;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFightData(byte[] fightData) {
|
||||||
this.fightData = fightData;
|
this.fightData = fightData;
|
||||||
this.createTime = (int)(System.currentTimeMillis()/1000);
|
}
|
||||||
|
|
||||||
|
public int getCreateTime() {
|
||||||
|
return createTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCreateTime(int createTime) {
|
||||||
|
this.createTime = createTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(String id) {
|
||||||
|
this.id = id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,7 @@
|
||||||
package com.ljsd.jieling.logic.mail;
|
package com.ljsd.jieling.logic.mail;
|
||||||
|
|
||||||
import com.ljsd.jieling.config.SItem;
|
|
||||||
import com.ljsd.jieling.db.mongo.MongoUtil;
|
import com.ljsd.jieling.db.mongo.MongoUtil;
|
||||||
import com.ljsd.jieling.globals.Global;
|
import com.ljsd.jieling.globals.Global;
|
||||||
import com.ljsd.jieling.globals.GlobalItemType;
|
|
||||||
import com.ljsd.jieling.logic.dao.*;
|
import com.ljsd.jieling.logic.dao.*;
|
||||||
import com.ljsd.jieling.logic.dao.root.MailingSystem;
|
import com.ljsd.jieling.logic.dao.root.MailingSystem;
|
||||||
import com.ljsd.jieling.logic.dao.root.User;
|
import com.ljsd.jieling.logic.dao.root.User;
|
||||||
|
|
@ -13,7 +11,6 @@ import com.ljsd.jieling.protocols.CommonProto;
|
||||||
import com.ljsd.jieling.protocols.MessageTypeProto;
|
import com.ljsd.jieling.protocols.MessageTypeProto;
|
||||||
import com.ljsd.jieling.protocols.PlayerInfoProto;
|
import com.ljsd.jieling.protocols.PlayerInfoProto;
|
||||||
import com.ljsd.jieling.util.*;
|
import com.ljsd.jieling.util.*;
|
||||||
import org.luaj.vm2.ast.Str;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -154,4 +154,12 @@ public class StringUtil {
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String parseArrayToString(int[][] source) {
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
for(int[] item : source){
|
||||||
|
sb.append(item[0]).append("#").append(item[1]).append("|");
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,9 @@ package com.ljsd.jieling.util;
|
||||||
public enum UUIDEnum {
|
public enum UUIDEnum {
|
||||||
HERO(0),
|
HERO(0),
|
||||||
EQUIP(1),
|
EQUIP(1),
|
||||||
MAIL(2);
|
MAIL(2),
|
||||||
|
ARENARECORD(3),
|
||||||
|
;
|
||||||
|
|
||||||
private int value;
|
private int value;
|
||||||
UUIDEnum( int value ){
|
UUIDEnum( int value ){
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue