diff --git a/bin/json/game_arenarealtimeconfig.json b/bin/json/game_arenarealtimeconfig.json
new file mode 100644
index 000000000..8496b3343
--- /dev/null
+++ b/bin/json/game_arenarealtimeconfig.json
@@ -0,0 +1,1243 @@
+[
+ {
+ "Id": 1,
+ "RankID": 1,
+ "SubRankID": 1,
+ "RankName": {
+ "key": "arena_active_reward_name_1",
+ "text": "黑铁"
+ },
+ "RankMin": 0,
+ "RankMax": 299,
+ "ex_reward": [],
+ "RankReturn": -1,
+ "reward_week": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 10
+ }
+ ],
+ "WinReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 10
+ }
+ ],
+ "WinRankScore": 10,
+ "LoseReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 5
+ }
+ ],
+ "LoseRankScore": 5,
+ "RankIcon": "smithy_atk_1"
+ },
+ {
+ "Id": 2,
+ "RankID": 1,
+ "SubRankID": 2,
+ "RankName": {
+ "key": "arena_active_reward_name_2",
+ "text": "黑铁"
+ },
+ "RankMin": 300,
+ "RankMax": 499,
+ "ex_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 10
+ }
+ ],
+ "RankReturn": -1,
+ "reward_week": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 12
+ }
+ ],
+ "WinReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 12
+ }
+ ],
+ "WinRankScore": 10,
+ "LoseReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 6
+ }
+ ],
+ "LoseRankScore": 5,
+ "RankIcon": "smithy_def_4"
+ },
+ {
+ "Id": 3,
+ "RankID": 1,
+ "SubRankID": 3,
+ "RankName": {
+ "key": "arena_active_reward_name_3",
+ "text": "黑铁"
+ },
+ "RankMin": 600,
+ "RankMax": 799,
+ "ex_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 10
+ }
+ ],
+ "RankReturn": -1,
+ "reward_week": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 14
+ }
+ ],
+ "WinReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 14
+ }
+ ],
+ "WinRankScore": 10,
+ "LoseReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 7
+ }
+ ],
+ "LoseRankScore": 5,
+ "RankIcon": "smithy_def_1"
+ },
+ {
+ "Id": 4,
+ "RankID": 2,
+ "SubRankID": 1,
+ "RankName": {
+ "key": "arena_active_reward_name_4",
+ "text": "青铜"
+ },
+ "RankMin": 800,
+ "RankMax": 999,
+ "ex_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 10
+ }
+ ],
+ "RankReturn": -1,
+ "reward_week": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 16
+ }
+ ],
+ "WinReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 16
+ }
+ ],
+ "WinRankScore": 10,
+ "LoseReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 8
+ }
+ ],
+ "LoseRankScore": 5,
+ "RankIcon": "smithy_atk_3"
+ },
+ {
+ "Id": 5,
+ "RankID": 2,
+ "SubRankID": 2,
+ "RankName": {
+ "key": "arena_active_reward_name_5",
+ "text": "青铜"
+ },
+ "RankMin": 1000,
+ "RankMax": 1199,
+ "ex_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 10
+ }
+ ],
+ "RankReturn": -1,
+ "reward_week": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 18
+ }
+ ],
+ "WinReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 18
+ }
+ ],
+ "WinRankScore": 10,
+ "LoseReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 9
+ }
+ ],
+ "LoseRankScore": 5,
+ "RankIcon": "smithy_def_2"
+ },
+ {
+ "Id": 6,
+ "RankID": 2,
+ "SubRankID": 3,
+ "RankName": {
+ "key": "arena_active_reward_name_6",
+ "text": "青铜"
+ },
+ "RankMin": 1200,
+ "RankMax": 1399,
+ "ex_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 10
+ }
+ ],
+ "RankReturn": -1,
+ "reward_week": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 20
+ }
+ ],
+ "WinReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 20
+ }
+ ],
+ "WinRankScore": 10,
+ "LoseReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 10
+ }
+ ],
+ "LoseRankScore": 5,
+ "RankIcon": "smithy_sup_4"
+ },
+ {
+ "Id": 7,
+ "RankID": 3,
+ "SubRankID": 1,
+ "RankName": {
+ "key": "arena_active_reward_name_7",
+ "text": "白银"
+ },
+ "RankMin": 1400,
+ "RankMax": 1599,
+ "ex_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 10
+ }
+ ],
+ "RankReturn": 800,
+ "reward_week": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 22
+ }
+ ],
+ "WinReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 22
+ }
+ ],
+ "WinRankScore": 10,
+ "LoseReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 11
+ }
+ ],
+ "LoseRankScore": 5,
+ "RankIcon": "smithy_atk_4"
+ },
+ {
+ "Id": 8,
+ "RankID": 3,
+ "SubRankID": 2,
+ "RankName": {
+ "key": "arena_active_reward_name_8",
+ "text": "白银"
+ },
+ "RankMin": 1600,
+ "RankMax": 1799,
+ "ex_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 10
+ }
+ ],
+ "RankReturn": 800,
+ "reward_week": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 24
+ }
+ ],
+ "WinReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 22
+ }
+ ],
+ "WinRankScore": 10,
+ "LoseReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 12
+ }
+ ],
+ "LoseRankScore": 5,
+ "RankIcon": "smithy_atk_5"
+ },
+ {
+ "Id": 9,
+ "RankID": 3,
+ "SubRankID": 3,
+ "RankName": {
+ "key": "arena_active_reward_name_9",
+ "text": "白银"
+ },
+ "RankMin": 1800,
+ "RankMax": 1999,
+ "ex_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 10
+ }
+ ],
+ "RankReturn": 800,
+ "reward_week": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 26
+ }
+ ],
+ "WinReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 10
+ }
+ ],
+ "WinRankScore": 10,
+ "LoseReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 13
+ }
+ ],
+ "LoseRankScore": 5,
+ "RankIcon": ""
+ },
+ {
+ "Id": 10,
+ "RankID": 3,
+ "SubRankID": 4,
+ "RankName": {
+ "key": "arena_active_reward_name_10",
+ "text": "白银"
+ },
+ "RankMin": 2000,
+ "RankMax": 2199,
+ "ex_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 10
+ }
+ ],
+ "RankReturn": 800,
+ "reward_week": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 28
+ }
+ ],
+ "WinReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 12
+ }
+ ],
+ "WinRankScore": 10,
+ "LoseReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 14
+ }
+ ],
+ "LoseRankScore": 5,
+ "RankIcon": ""
+ },
+ {
+ "Id": 11,
+ "RankID": 4,
+ "SubRankID": 1,
+ "RankName": {
+ "key": "arena_active_reward_name_11",
+ "text": "铂金"
+ },
+ "RankMin": 2200,
+ "RankMax": 2399,
+ "ex_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 10
+ }
+ ],
+ "RankReturn": 1400,
+ "reward_week": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 30
+ }
+ ],
+ "WinReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 14
+ }
+ ],
+ "WinRankScore": 10,
+ "LoseReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 15
+ }
+ ],
+ "LoseRankScore": 6,
+ "RankIcon": ""
+ },
+ {
+ "Id": 12,
+ "RankID": 4,
+ "SubRankID": 2,
+ "RankName": {
+ "key": "arena_active_reward_name_12",
+ "text": "铂金"
+ },
+ "RankMin": 2400,
+ "RankMax": 2599,
+ "ex_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 10
+ }
+ ],
+ "RankReturn": 1400,
+ "reward_week": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 32
+ }
+ ],
+ "WinReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 16
+ }
+ ],
+ "WinRankScore": 10,
+ "LoseReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 16
+ }
+ ],
+ "LoseRankScore": 6,
+ "RankIcon": ""
+ },
+ {
+ "Id": 13,
+ "RankID": 4,
+ "SubRankID": 3,
+ "RankName": {
+ "key": "arena_active_reward_name_13",
+ "text": "铂金"
+ },
+ "RankMin": 2600,
+ "RankMax": 2799,
+ "ex_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 10
+ }
+ ],
+ "RankReturn": 1400,
+ "reward_week": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 34
+ }
+ ],
+ "WinReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 18
+ }
+ ],
+ "WinRankScore": 10,
+ "LoseReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 17
+ }
+ ],
+ "LoseRankScore": 6,
+ "RankIcon": ""
+ },
+ {
+ "Id": 14,
+ "RankID": 4,
+ "SubRankID": 4,
+ "RankName": {
+ "key": "arena_active_reward_name_14",
+ "text": "铂金"
+ },
+ "RankMin": 2800,
+ "RankMax": 2999,
+ "ex_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 10
+ }
+ ],
+ "RankReturn": 1400,
+ "reward_week": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 36
+ }
+ ],
+ "WinReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 20
+ }
+ ],
+ "WinRankScore": 10,
+ "LoseReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 18
+ }
+ ],
+ "LoseRankScore": 6,
+ "RankIcon": ""
+ },
+ {
+ "Id": 15,
+ "RankID": 5,
+ "SubRankID": 1,
+ "RankName": {
+ "key": "arena_active_reward_name_15",
+ "text": "钻石"
+ },
+ "RankMin": 3000,
+ "RankMax": 3199,
+ "ex_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 10
+ }
+ ],
+ "RankReturn": 2000,
+ "reward_week": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 38
+ }
+ ],
+ "WinReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 22
+ }
+ ],
+ "WinRankScore": 10,
+ "LoseReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 19
+ }
+ ],
+ "LoseRankScore": 7,
+ "RankIcon": ""
+ },
+ {
+ "Id": 16,
+ "RankID": 5,
+ "SubRankID": 2,
+ "RankName": {
+ "key": "arena_active_reward_name_16",
+ "text": "钻石"
+ },
+ "RankMin": 3200,
+ "RankMax": 3399,
+ "ex_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 10
+ }
+ ],
+ "RankReturn": 2000,
+ "reward_week": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 40
+ }
+ ],
+ "WinReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 24
+ }
+ ],
+ "WinRankScore": 10,
+ "LoseReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 20
+ }
+ ],
+ "LoseRankScore": 7,
+ "RankIcon": ""
+ },
+ {
+ "Id": 17,
+ "RankID": 5,
+ "SubRankID": 3,
+ "RankName": {
+ "key": "arena_active_reward_name_17",
+ "text": "钻石"
+ },
+ "RankMin": 3400,
+ "RankMax": 3599,
+ "ex_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 10
+ }
+ ],
+ "RankReturn": 2000,
+ "reward_week": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 42
+ }
+ ],
+ "WinReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 26
+ }
+ ],
+ "WinRankScore": 10,
+ "LoseReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 21
+ }
+ ],
+ "LoseRankScore": 7,
+ "RankIcon": ""
+ },
+ {
+ "Id": 18,
+ "RankID": 5,
+ "SubRankID": 4,
+ "RankName": {
+ "key": "arena_active_reward_name_18",
+ "text": "钻石"
+ },
+ "RankMin": 3600,
+ "RankMax": 3799,
+ "ex_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 10
+ }
+ ],
+ "RankReturn": 2000,
+ "reward_week": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 44
+ }
+ ],
+ "WinReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 28
+ }
+ ],
+ "WinRankScore": 10,
+ "LoseReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 22
+ }
+ ],
+ "LoseRankScore": 7,
+ "RankIcon": ""
+ },
+ {
+ "Id": 19,
+ "RankID": 5,
+ "SubRankID": 5,
+ "RankName": {
+ "key": "arena_active_reward_name_19",
+ "text": "钻石"
+ },
+ "RankMin": 3800,
+ "RankMax": 3999,
+ "ex_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 10
+ }
+ ],
+ "RankReturn": 2000,
+ "reward_week": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 46
+ }
+ ],
+ "WinReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 30
+ }
+ ],
+ "WinRankScore": 10,
+ "LoseReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 23
+ }
+ ],
+ "LoseRankScore": 7,
+ "RankIcon": ""
+ },
+ {
+ "Id": 20,
+ "RankID": 6,
+ "SubRankID": 1,
+ "RankName": {
+ "key": "arena_active_reward_name_20",
+ "text": "大师"
+ },
+ "RankMin": 4000,
+ "RankMax": 4199,
+ "ex_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 10
+ }
+ ],
+ "RankReturn": 3000,
+ "reward_week": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 48
+ }
+ ],
+ "WinReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 32
+ }
+ ],
+ "WinRankScore": 10,
+ "LoseReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 24
+ }
+ ],
+ "LoseRankScore": 8,
+ "RankIcon": ""
+ },
+ {
+ "Id": 21,
+ "RankID": 6,
+ "SubRankID": 2,
+ "RankName": {
+ "key": "arena_active_reward_name_21",
+ "text": "大师"
+ },
+ "RankMin": 4200,
+ "RankMax": 4399,
+ "ex_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 10
+ }
+ ],
+ "RankReturn": 3000,
+ "reward_week": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 50
+ }
+ ],
+ "WinReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 34
+ }
+ ],
+ "WinRankScore": 10,
+ "LoseReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 25
+ }
+ ],
+ "LoseRankScore": 8,
+ "RankIcon": ""
+ },
+ {
+ "Id": 22,
+ "RankID": 6,
+ "SubRankID": 3,
+ "RankName": {
+ "key": "arena_active_reward_name_22",
+ "text": "大师"
+ },
+ "RankMin": 4400,
+ "RankMax": 4599,
+ "ex_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 10
+ }
+ ],
+ "RankReturn": 3000,
+ "reward_week": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 52
+ }
+ ],
+ "WinReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 36
+ }
+ ],
+ "WinRankScore": 10,
+ "LoseReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 26
+ }
+ ],
+ "LoseRankScore": 8,
+ "RankIcon": ""
+ },
+ {
+ "Id": 23,
+ "RankID": 6,
+ "SubRankID": 4,
+ "RankName": {
+ "key": "arena_active_reward_name_23",
+ "text": "大师"
+ },
+ "RankMin": 4600,
+ "RankMax": 4799,
+ "ex_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 10
+ }
+ ],
+ "RankReturn": 3000,
+ "reward_week": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 54
+ }
+ ],
+ "WinReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 38
+ }
+ ],
+ "WinRankScore": 10,
+ "LoseReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 27
+ }
+ ],
+ "LoseRankScore": 8,
+ "RankIcon": ""
+ },
+ {
+ "Id": 24,
+ "RankID": 6,
+ "SubRankID": 5,
+ "RankName": {
+ "key": "arena_active_reward_name_24",
+ "text": "大师"
+ },
+ "RankMin": 4800,
+ "RankMax": 4999,
+ "ex_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 10
+ }
+ ],
+ "RankReturn": 3000,
+ "reward_week": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 56
+ }
+ ],
+ "WinReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 40
+ }
+ ],
+ "WinRankScore": 10,
+ "LoseReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 28
+ }
+ ],
+ "LoseRankScore": 8,
+ "RankIcon": ""
+ },
+ {
+ "Id": 25,
+ "RankID": 7,
+ "SubRankID": 1,
+ "RankName": {
+ "key": "arena_active_reward_name_25",
+ "text": "王者"
+ },
+ "RankMin": 5000,
+ "RankMax": 5199,
+ "ex_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 10
+ }
+ ],
+ "RankReturn": 4000,
+ "reward_week": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 58
+ }
+ ],
+ "WinReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 42
+ }
+ ],
+ "WinRankScore": 10,
+ "LoseReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 29
+ }
+ ],
+ "LoseRankScore": 9,
+ "RankIcon": ""
+ },
+ {
+ "Id": 26,
+ "RankID": 7,
+ "SubRankID": 2,
+ "RankName": {
+ "key": "arena_active_reward_name_26",
+ "text": "王者"
+ },
+ "RankMin": 5200,
+ "RankMax": 5399,
+ "ex_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 10
+ }
+ ],
+ "RankReturn": 4000,
+ "reward_week": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 60
+ }
+ ],
+ "WinReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 44
+ }
+ ],
+ "WinRankScore": 10,
+ "LoseReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 30
+ }
+ ],
+ "LoseRankScore": 9,
+ "RankIcon": ""
+ },
+ {
+ "Id": 27,
+ "RankID": 7,
+ "SubRankID": 3,
+ "RankName": {
+ "key": "arena_active_reward_name_27",
+ "text": "王者"
+ },
+ "RankMin": 5400,
+ "RankMax": 5599,
+ "ex_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 10
+ }
+ ],
+ "RankReturn": 4000,
+ "reward_week": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 62
+ }
+ ],
+ "WinReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 46
+ }
+ ],
+ "WinRankScore": 10,
+ "LoseReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 31
+ }
+ ],
+ "LoseRankScore": 9,
+ "RankIcon": ""
+ },
+ {
+ "Id": 28,
+ "RankID": 7,
+ "SubRankID": 4,
+ "RankName": {
+ "key": "arena_active_reward_name_28",
+ "text": "王者"
+ },
+ "RankMin": 5600,
+ "RankMax": 5799,
+ "ex_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 10
+ }
+ ],
+ "RankReturn": 4000,
+ "reward_week": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 64
+ }
+ ],
+ "WinReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 48
+ }
+ ],
+ "WinRankScore": 10,
+ "LoseReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 32
+ }
+ ],
+ "LoseRankScore": 9,
+ "RankIcon": ""
+ },
+ {
+ "Id": 29,
+ "RankID": 7,
+ "SubRankID": 5,
+ "RankName": {
+ "key": "arena_active_reward_name_29",
+ "text": "王者"
+ },
+ "RankMin": 5800,
+ "RankMax": 999999,
+ "ex_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 10
+ }
+ ],
+ "RankReturn": 4000,
+ "reward_week": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 66
+ }
+ ],
+ "WinReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 50
+ }
+ ],
+ "WinRankScore": 10,
+ "LoseReward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 33
+ }
+ ],
+ "LoseRankScore": 9,
+ "RankIcon": ""
+ }
+]
\ No newline at end of file
diff --git a/bin/json/game_arenarealtimerankreward.json b/bin/json/game_arenarealtimerankreward.json
new file mode 100644
index 000000000..7e9adedd4
--- /dev/null
+++ b/bin/json/game_arenarealtimerankreward.json
@@ -0,0 +1,274 @@
+[
+ {
+ "id": 1,
+ "RankingMin": 1,
+ "RankingMax": 1,
+ "rank_display": {
+ "key": "arena_rank_reward_rank_display_1",
+ "text": "1-1名"
+ },
+ "rank_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 1000
+ },
+ {
+ "a": "attr",
+ "t": "diamond",
+ "n": 600
+ },
+ {
+ "a": "item",
+ "t": "13000001",
+ "n": 3
+ }
+ ]
+ },
+ {
+ "id": 2,
+ "RankingMin": 2,
+ "RankingMax": 2,
+ "rank_display": {
+ "key": "arena_rank_reward_rank_display_2",
+ "text": "2-2名"
+ },
+ "rank_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 900
+ },
+ {
+ "a": "attr",
+ "t": "diamond",
+ "n": 550
+ },
+ {
+ "a": "item",
+ "t": "13000001",
+ "n": 2
+ }
+ ]
+ },
+ {
+ "id": 3,
+ "RankingMin": 3,
+ "RankingMax": 3,
+ "rank_display": {
+ "key": "arena_rank_reward_rank_display_3",
+ "text": "3-3名"
+ },
+ "rank_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 800
+ },
+ {
+ "a": "attr",
+ "t": "diamond",
+ "n": 500
+ },
+ {
+ "a": "item",
+ "t": "13000001",
+ "n": 2
+ }
+ ]
+ },
+ {
+ "id": 4,
+ "RankingMin": 4,
+ "RankingMax": 10,
+ "rank_display": {
+ "key": "arena_rank_reward_rank_display_4",
+ "text": "4-10名"
+ },
+ "rank_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 750
+ },
+ {
+ "a": "attr",
+ "t": "diamond",
+ "n": 450
+ },
+ {
+ "a": "item",
+ "t": "13000001",
+ "n": 1
+ }
+ ]
+ },
+ {
+ "id": 5,
+ "RankingMin": 11,
+ "RankingMax": 20,
+ "rank_display": {
+ "key": "arena_rank_reward_rank_display_5",
+ "text": "11-20名"
+ },
+ "rank_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 700
+ },
+ {
+ "a": "attr",
+ "t": "diamond",
+ "n": 400
+ }
+ ]
+ },
+ {
+ "id": 6,
+ "RankingMin": 21,
+ "RankingMax": 50,
+ "rank_display": {
+ "key": "arena_rank_reward_rank_display_6",
+ "text": "21-50名"
+ },
+ "rank_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 650
+ },
+ {
+ "a": "attr",
+ "t": "diamond",
+ "n": 300
+ }
+ ]
+ },
+ {
+ "id": 7,
+ "RankingMin": 51,
+ "RankingMax": 100,
+ "rank_display": {
+ "key": "arena_rank_reward_rank_display_7",
+ "text": "51-100名"
+ },
+ "rank_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 600
+ },
+ {
+ "a": "attr",
+ "t": "diamond",
+ "n": 280
+ }
+ ]
+ },
+ {
+ "id": 8,
+ "RankingMin": 101,
+ "RankingMax": 200,
+ "rank_display": {
+ "key": "arena_rank_reward_rank_display_8",
+ "text": "101-200名"
+ },
+ "rank_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 550
+ },
+ {
+ "a": "attr",
+ "t": "diamond",
+ "n": 260
+ }
+ ]
+ },
+ {
+ "id": 9,
+ "RankingMin": 201,
+ "RankingMax": 500,
+ "rank_display": {
+ "key": "arena_rank_reward_rank_display_9",
+ "text": "201-500名"
+ },
+ "rank_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 500
+ },
+ {
+ "a": "attr",
+ "t": "diamond",
+ "n": 240
+ }
+ ]
+ },
+ {
+ "id": 10,
+ "RankingMin": 501,
+ "RankingMax": 1000,
+ "rank_display": {
+ "key": "arena_rank_reward_rank_display_10",
+ "text": "501-1000名"
+ },
+ "rank_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 450
+ },
+ {
+ "a": "attr",
+ "t": "diamond",
+ "n": 220
+ }
+ ]
+ },
+ {
+ "id": 11,
+ "RankingMin": 1001,
+ "RankingMax": 2000,
+ "rank_display": {
+ "key": "arena_rank_reward_rank_display_11",
+ "text": "1001-2000名"
+ },
+ "rank_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 400
+ },
+ {
+ "a": "attr",
+ "t": "diamond",
+ "n": 200
+ }
+ ]
+ },
+ {
+ "id": 12,
+ "RankingMin": 2001,
+ "RankingMax": 9999,
+ "rank_display": {
+ "key": "arena_rank_reward_rank_display_12",
+ "text": "2001-9999名"
+ },
+ "rank_reward": [
+ {
+ "a": "attr",
+ "t": "arenacoin",
+ "n": 350
+ },
+ {
+ "a": "attr",
+ "t": "diamond",
+ "n": 180
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/bin/json/game_arenarealtimewinstreak.json b/bin/json/game_arenarealtimewinstreak.json
new file mode 100644
index 000000000..4f2f7f894
--- /dev/null
+++ b/bin/json/game_arenarealtimewinstreak.json
@@ -0,0 +1,47 @@
+[
+ {
+ "id": 1,
+ "name": {
+ "key": "arena_active_win_name_01",
+ "text": "3连胜"
+ },
+ "WinStreakScore": 3,
+ "winningstreak": 3
+ },
+ {
+ "id": 2,
+ "name": {
+ "key": "arena_active_win_name_02",
+ "text": "5连胜"
+ },
+ "WinStreakScore": 5,
+ "winningstreak": 5
+ },
+ {
+ "id": 3,
+ "name": {
+ "key": "arena_active_win_name_03",
+ "text": "8连胜"
+ },
+ "WinStreakScore": 7,
+ "winningstreak": 8
+ },
+ {
+ "id": 4,
+ "name": {
+ "key": "arena_active_win_name_04",
+ "text": "10连胜"
+ },
+ "WinStreakScore": 9,
+ "winningstreak": 10
+ },
+ {
+ "id": 5,
+ "name": {
+ "key": "arena_active_win_name_05",
+ "text": "20连胜"
+ },
+ "WinStreakScore": 11,
+ "winningstreak": 20
+ }
+]
\ No newline at end of file
diff --git a/bin/json/game_battleready.json b/bin/json/game_battleready.json
index 5b5e28fd9..6a7fc490b 100644
--- a/bin/json/game_battleready.json
+++ b/bin/json/game_battleready.json
@@ -2284,9 +2284,7 @@
"key": "",
"text": ""
},
- "battleEvents": [
- 143
- ],
+ "battleEvents": [],
"ScoreGroupID": 0,
"propertyGroupID": 0,
"disableAiCamera": false,
diff --git a/bin/json/game_item.json b/bin/json/game_item.json
index d28031d9e..ff11c4328 100644
--- a/bin/json/game_item.json
+++ b/bin/json/game_item.json
@@ -13589,7 +13589,7 @@
"id": "16001001",
"name": {
"key": "item_item_name_16001001",
- "text": "记忆碎片"
+ "text": "龙穴指针碎片"
},
"usetype": 1,
"color": 4,
@@ -13615,7 +13615,7 @@
"img": "item_16001001",
"intr": {
"key": "item_item_intr_16001001",
- "text": "旧时光用,进度表示道具。"
+ "text": "集齐所有的指针碎片,便可以找到通关龙穴的路。"
},
"describe": {
"key": "",
diff --git a/bin/json/game_mainstage.json b/bin/json/game_mainstage.json
index f4c6051bd..19814da76 100644
--- a/bin/json/game_mainstage.json
+++ b/bin/json/game_mainstage.json
@@ -122,8 +122,8 @@
},
"animation": [],
"prewarbubbletext": {
- "key": "",
- "text": ""
+ "key": "main_stage_prewarbubbletext_1",
+ "text": "可恶的猎龙团!"
},
"hide": false,
"destroy": true,
@@ -526,8 +526,8 @@
},
"animation": [],
"prewarbubbletext": {
- "key": "",
- "text": ""
+ "key": "main_stage_prewarbubbletext_3",
+ "text": "咩——"
},
"hide": false,
"destroy": true,
@@ -872,8 +872,8 @@
},
"animation": [],
"prewarbubbletext": {
- "key": "",
- "text": ""
+ "key": "main_stage_prewarbubbletext_6",
+ "text": "让我看看你们的实力与勇气吧!"
},
"hide": false,
"destroy": true,
@@ -1458,8 +1458,8 @@
},
"animation": [],
"prewarbubbletext": {
- "key": "",
- "text": ""
+ "key": "main_stage_prewarbubbletext_12",
+ "text": "交出龙群!"
},
"hide": false,
"destroy": true,
@@ -2464,8 +2464,8 @@
},
"animation": [],
"prewarbubbletext": {
- "key": "",
- "text": ""
+ "key": "main_stage_prewarbubbletext_22",
+ "text": "坠入深渊吧!"
},
"hide": false,
"destroy": true,
@@ -2841,8 +2841,8 @@
},
"animation": [],
"prewarbubbletext": {
- "key": "",
- "text": ""
+ "key": "main_stage_prewarbubbletext_26",
+ "text": "总有一天,你们会明白……"
},
"hide": false,
"destroy": true,
@@ -3050,8 +3050,8 @@
},
"animation": [],
"prewarbubbletext": {
- "key": "",
- "text": ""
+ "key": "main_stage_prewarbubbletext_28",
+ "text": "吱吱——吱吱——"
},
"hide": false,
"destroy": true,
@@ -3336,8 +3336,8 @@
},
"animation": [],
"prewarbubbletext": {
- "key": "",
- "text": ""
+ "key": "main_stage_prewarbubbletext_31",
+ "text": "吼吼吼——"
},
"hide": false,
"destroy": true,
diff --git a/bin/json/game_opencond.json b/bin/json/game_opencond.json
index 993662535..151659cea 100644
--- a/bin/json/game_opencond.json
+++ b/bin/json/game_opencond.json
@@ -1517,7 +1517,7 @@
"uiid": 0,
"activateType": false,
"notify": [],
- "kqbx": true,
+ "kqbx": false,
"kqbx_ui": "btn_email",
"kqbx_text": {
"key": "opencond_opencond_kqbx_text_57",
diff --git a/bin/json/game_worldtask.json b/bin/json/game_worldtask.json
index 15828a27e..8149cf485 100644
--- a/bin/json/game_worldtask.json
+++ b/bin/json/game_worldtask.json
@@ -2925,7 +2925,7 @@
],
"deliver_npc": 0,
"taskend_removeitem": [],
- "auto_accept": 1,
+ "auto_accept": 0,
"tasktips": false,
"deliver_task": 0,
"deliver_task_npc": 0,
diff --git a/modules/realarena/api_danreceive.go b/modules/realarena/api_danreceive.go
new file mode 100644
index 000000000..fc2030d8a
--- /dev/null
+++ b/modules/realarena/api_danreceive.go
@@ -0,0 +1,78 @@
+package realarena
+
+import (
+ "fmt"
+ "go_dreamfactory/comm"
+ "go_dreamfactory/pb"
+ cfg "go_dreamfactory/sys/configure/structs"
+)
+
+// 参数校验
+func (this *apiComp) DanReceiveCheck(session comm.IUserSession, req *pb.ArenaDanReceiveReq) (errdata *pb.ErrorData) {
+ if req.Dan == 0 {
+ errdata = &pb.ErrorData{
+ Code: pb.ErrorCode_ReqParameterError,
+ Title: pb.ErrorCode_ReqParameterError.ToString(),
+ }
+ }
+ return
+}
+
+// /获取自己的排行榜信息
+func (this *apiComp) DanReceive(session comm.IUserSession, req *pb.ArenaDanReceiveReq) (errdata *pb.ErrorData) {
+ var (
+ conf *cfg.GameArenaActiveRewardData
+ info *pb.DBRealArena
+ err error
+ atno []*pb.UserAtno
+ )
+ if errdata = this.DanReceiveCheck(session, req); errdata != nil {
+ return
+ }
+ if info, err = this.module.model.getinfo(session); err != nil {
+ errdata = &pb.ErrorData{
+ Code: pb.ErrorCode_ReqParameterError,
+ Message: err.Error(),
+ }
+ return
+ }
+
+ if info.Danaward[req.Dan] == 1 {
+ errdata = &pb.ErrorData{
+ Code: pb.ErrorCode_ReqParameterError,
+ Title: pb.ErrorCode_ReqParameterError.ToString(),
+ Message: fmt.Sprintf("%d received", req.Dan),
+ }
+ return
+ }
+ info.Danaward[req.Dan] = 1
+ if conf, err = this.module.configure.getGameArenarealtimeConfig(req.Dan); err != nil {
+ errdata = &pb.ErrorData{
+ Code: pb.ErrorCode_DBError,
+ Title: pb.ErrorCode_DBError.ToString(),
+ Message: err.Error(),
+ }
+ return
+ }
+ if errdata, atno = this.module.DispenseAtno(session, conf.ExReward, true); errdata != nil {
+ errdata = &pb.ErrorData{
+ Code: pb.ErrorCode_DBError,
+ Title: pb.ErrorCode_DBError.ToString(),
+ Message: err.Error(),
+ }
+ return
+ }
+ if err = this.module.model.change(session, map[string]interface{}{
+ "danaward": info.Danaward,
+ }); err != nil {
+ errdata = &pb.ErrorData{
+ Code: pb.ErrorCode_DBError,
+ Title: pb.ErrorCode_DBError.ToString(),
+ Message: err.Error(),
+ }
+ return
+ }
+
+ session.SendMsg(string(this.module.GetType()), "danreceive", &pb.ArenaDanReceiveResp{Dan: req.Dan, Award: atno})
+ return
+}
diff --git a/modules/realarena/api_match.go b/modules/realarena/api_match.go
index 559a61787..68574f3aa 100644
--- a/modules/realarena/api_match.go
+++ b/modules/realarena/api_match.go
@@ -26,7 +26,14 @@ func (this *apiComp) Match(session comm.IUserSession, req *pb.RealArenaMatchReq)
return
}
- if err = this.module.match.MatchReq(info); err != nil {
+ if err = this.module.match.MatchReq(&pb.DBRealArenaMember{
+ User: info.Uinfo,
+ Dan: 1,
+ Integral: info.Integral,
+ Heros: make([]string, 5),
+ Disable: -1,
+ Leader: -1,
+ }); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_SystemError,
Message: err.Error(),
diff --git a/modules/realarena/api_selectteamhero.go b/modules/realarena/api_selectteamhero.go
index fd870e0ef..959d07722 100644
--- a/modules/realarena/api_selectteamhero.go
+++ b/modules/realarena/api_selectteamhero.go
@@ -26,7 +26,7 @@ func (this *apiComp) SelectTeamHero(session comm.IUserSession, req *pb.RealArena
room, ok = this.module.rooms[req.Roomid]
this.module.lock.RUnlock()
if ok {
- if err = room.selectheros(session.GetUserId(), req.Heros); err != nil {
+ if err = room.selectheros(session.GetUserId(), req.Herosids, req.Heroscids); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ReqParameterError,
Message: err.Error(),
diff --git a/modules/realarena/configure.go b/modules/realarena/configure.go
new file mode 100644
index 000000000..9fe74c1ee
--- /dev/null
+++ b/modules/realarena/configure.go
@@ -0,0 +1,53 @@
+package realarena
+
+import (
+ "go_dreamfactory/comm"
+ "go_dreamfactory/lego/core"
+ "go_dreamfactory/modules"
+ cfg "go_dreamfactory/sys/configure/structs"
+ "sync"
+)
+
+const (
+ game_arenarealtimeconfig = "game_arenarealtimeconfig.json" //购买挑战记录
+ game_arenarealtimerankreward = "game_arenarealtimerankreward.json"
+ game_arenarealtimewinstreak = "game_arenarealtimewinstreak.json"
+)
+
+///竞技场配置管理组件
+type configureComp struct {
+ modules.MCompConfigure
+ module *RealArena
+ lock sync.RWMutex
+ ais map[int32][]*cfg.GameArenaRobotData
+ mformatlock sync.RWMutex
+ mformat map[int32][]*cfg.GameMonsterFormatData //怪物阵营表
+}
+
+//组件初始化接口
+func (this *configureComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
+ this.MCompConfigure.Init(service, module, comp, options)
+ this.module = module.(*RealArena)
+ this.LoadConfigure(game_arenarealtimeconfig, cfg.NewGameArenarealtimeConfig)
+ this.LoadConfigure(game_arenarealtimerankreward, cfg.NewGameArenarealtimeRankreward)
+ this.LoadConfigure(game_arenarealtimewinstreak, cfg.NewGameArenarealtimeWinStreak)
+ return
+}
+
+//查询积分段位信息
+func (this *configureComp) getGameArenarealtimeConfig(dan int32) (conf *cfg.GameArenaActiveRewardData, err error) {
+ var (
+ v interface{}
+ ok bool
+ )
+ if v, err = this.GetConfigure(game_arenarealtimeconfig); err != nil {
+ this.module.Errorln(err)
+ } else {
+ if conf, ok = v.(*cfg.GameArenaActiveReward).GetDataMap()[dan]; !ok {
+ err = comm.NewNotFoundConfErr(string(this.module.GetType()), game_arenarealtimeconfig, dan)
+ this.module.Errorln(err)
+ return
+ }
+ }
+ return
+}
diff --git a/modules/realarena/match.go b/modules/realarena/match.go
index 7c50a5e60..a37c1fa33 100644
--- a/modules/realarena/match.go
+++ b/modules/realarena/match.go
@@ -35,7 +35,7 @@ func (this *matchComp) Start() (err error) {
return
}
-func (this *matchComp) MatchReq(info *pb.DBRealArena) (err error) {
+func (this *matchComp) MatchReq(info *pb.DBRealArenaMember) (err error) {
data, _ := anypb.New(info)
err = this.module.service.RpcCall(
context.Background(),
@@ -43,7 +43,7 @@ func (this *matchComp) MatchReq(info *pb.DBRealArena) (err error) {
string(comm.RPC_JoinMatchPools),
&pb.JoinMatchPoolReq{
Poolname: this.PoolName,
- Uid: info.Uid,
+ Uid: info.User.Uid,
Dan: info.Dan,
Data: data,
Matchnum: 2,
diff --git a/modules/realarena/model.go b/modules/realarena/model.go
index 4554ae85e..eae85ba9d 100644
--- a/modules/realarena/model.go
+++ b/modules/realarena/model.go
@@ -57,6 +57,18 @@ func (this *modelComp) getinfo(session comm.IUserSession) (info *pb.DBRealArena,
return
}
+// /查询用户的武器背包
+func (this *modelComp) change(session comm.IUserSession, update map[string]interface{}) (err error) {
+ var (
+ model *realArenaModel
+ )
+ if model, err = this.getmodel(session.GetUserId()); err != nil {
+ return
+ }
+ err = model.change(session, update)
+ return
+}
+
// 埋点专属模型 会封装特殊的数据转换接口
type realArenaModel struct {
module *RealArena
@@ -94,9 +106,8 @@ func (this *realArenaModel) getinfo(session comm.IUserSession) (info *pb.DBRealA
}
// /查询用户的武器背包
-func (this *realArenaModel) getExclusivesByIds(uId string, oid []string) (list []*pb.DB_Exclusive, err error) {
- list = make([]*pb.DB_Exclusive, 0)
- if err = this.model.GetListObjs(uId, oid, &list); err != nil {
+func (this *realArenaModel) change(session comm.IUserSession, update map[string]interface{}) (err error) {
+ if err = this.model.Change(session.GetUserId(), update); err != nil {
this.module.Errorf("err:%v", err)
}
return
diff --git a/modules/realarena/module.go b/modules/realarena/module.go
index b46bb3136..978d16261 100644
--- a/modules/realarena/module.go
+++ b/modules/realarena/module.go
@@ -24,13 +24,14 @@ func NewModule() core.IModule {
type RealArena struct {
modules.ModuleBase
- service base.IRPCXService
- pvp comm.IPvp
- apicomp *apiComp
- model *modelComp
- match *matchComp
- lock sync.RWMutex
- rooms map[string]*Room
+ service base.IRPCXService
+ pvp comm.IPvp
+ apicomp *apiComp
+ configure *configureComp
+ model *modelComp
+ match *matchComp
+ lock sync.RWMutex
+ rooms map[string]*Room
}
// 模块名
@@ -63,6 +64,7 @@ func (this *RealArena) Start() (err error) {
func (this *RealArena) OnInstallComp() {
this.ModuleBase.OnInstallComp()
this.apicomp = this.RegisterComp(new(apiComp)).(*apiComp)
+ this.configure = this.RegisterComp(new(configureComp)).(*configureComp)
this.model = this.RegisterComp(new(modelComp)).(*modelComp)
this.match = this.RegisterComp(new(matchComp)).(*matchComp)
}
diff --git a/modules/realarena/romm.go b/modules/realarena/romm.go
index bdec06953..96880eea9 100644
--- a/modules/realarena/romm.go
+++ b/modules/realarena/romm.go
@@ -29,7 +29,7 @@ func (this *Room) init() (err error) {
},
})
this.handle = this.members[0].User.Uid
- this.step = 1
+ this.step = 0
this.PushMessage("startselecthero", &pb.RealArenaStartSelectHeroPush{
Uid: this.members[0].User.Uid,
Num: 2,
@@ -39,55 +39,72 @@ func (this *Room) init() (err error) {
}
//选择英雄
-func (this *Room) selectheros(uid string, heros []string) (err error) {
+func (this *Room) selectheros(uid string, heros []string, herocid []string) (err error) {
+ var (
+ num int32
+ )
if uid != this.handle {
err = fmt.Errorf("cant handle!")
return
}
- if uid == this.members[1].User.Uid {
- this.step++
- }
+
for _, v := range this.members {
if v.User.Uid == uid {
v.Heros = heros
+ v.Heroscid = herocid
} else {
this.handle = v.User.Uid
}
}
+ switch this.step {
+ case 1, 6:
+ num = 1
+ break
+ case 2, 3, 4, 5:
+ num = 2
+ break
+ default:
+ num = 1
+ break
+ }
this.PushMessage("startselecthero", &pb.RealArenaSelectHeroPush{
- Uid: this.members[0].User.Uid,
- Heros: heros,
+ Uid: this.members[0].User.Uid,
+ Heroscids: herocid,
})
- this.PushMessage("startselecthero", &pb.RealArenaStartSelectHeroPush{
- Uid: this.handle,
- Num: 2,
- Countdown: 10,
- })
- if this.step == 4 { //选完了
+
+ this.step++
+ if this.step == 7 { //选完了
this.PushMessage("startdisableHero", &pb.RealArenaStartDisableHeroPush{
Uid: this.members[0].User.Uid,
Countdown: 10,
})
+ } else {
+ this.PushMessage("startselecthero", &pb.RealArenaStartSelectHeroPush{
+ Uid: this.handle,
+ Num: num,
+ Countdown: 10,
+ })
}
return
}
//禁用英雄
func (this *Room) disableheros(uid string, index int32) (err error) {
- var isend bool
+ var finish bool
+ finish = true
for _, v := range this.members {
if v.User.Uid == uid {
v.Disable = index
}
if v.Disable == -1 {
- isend = false
+ finish = false
}
}
this.PushMessage("selecthero", &pb.RealArenaDisableHeroPush{
Uid: uid,
Index: index,
})
- if isend {
+ if finish {
this.PushMessage("startselectleader", &pb.RealArenaStartSelectLeaderPush{
Uid: this.members[0].User.Uid,
Countdown: 10,
@@ -98,20 +115,21 @@ func (this *Room) disableheros(uid string, index int32) (err error) {
//选择队长
func (this *Room) selectleader(uid string, index int32) (err error) {
- var isend bool
+ var finish bool
+ finish = true
for _, v := range this.members {
if v.User.Uid == uid {
v.Leader = index
}
if v.Leader == -1 {
- isend = false
+ finish = false
}
}
this.PushMessage("selectleader", &pb.RealArenaSelectLeaderPush{
Uid: uid,
Index: index,
})
- if isend {
+ if finish {
var uinfos []*pb.BaseUserInfo = make([]*pb.BaseUserInfo, 0)
uinfos = append(uinfos, this.members[0].User, this.members[1].User)
err = this.module.pvp.CreateRoomById(this.Id, pb.PvpType_realarena, this.sessions, uinfos)
diff --git a/pb/realarena_db.pb.go b/pb/realarena_db.pb.go
index d423cb5c6..8470e5cde 100644
--- a/pb/realarena_db.pb.go
+++ b/pb/realarena_db.pb.go
@@ -26,11 +26,12 @@ type DBRealArena struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" bson:"_id"`
- Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid"` //uid
- Uinfo *BaseUserInfo `protobuf:"bytes,3,opt,name=uinfo,proto3" json:"uinfo"` //用户基础
- Dan int32 `protobuf:"varint,4,opt,name=dan,proto3" json:"dan"` //段位
- Integral int32 `protobuf:"varint,5,opt,name=integral,proto3" json:"integral"` //积分
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" bson:"_id"`
+ Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid"` //uid
+ Uinfo *BaseUserInfo `protobuf:"bytes,3,opt,name=uinfo,proto3" json:"uinfo"` //用户基础
+ Dan int32 `protobuf:"varint,4,opt,name=dan,proto3" json:"dan"` //段位
+ Integral int32 `protobuf:"varint,5,opt,name=integral,proto3" json:"integral"` //积分
+ Danaward map[int32]int32 `protobuf:"bytes,6,rep,name=danaward,proto3" json:"danaward" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` //段位奖励
}
func (x *DBRealArena) Reset() {
@@ -100,6 +101,13 @@ func (x *DBRealArena) GetIntegral() int32 {
return 0
}
+func (x *DBRealArena) GetDanaward() map[int32]int32 {
+ if x != nil {
+ return x.Danaward
+ }
+ return nil
+}
+
//队员信息
type DBRealArenaMember struct {
state protoimpl.MessageState
@@ -110,8 +118,9 @@ type DBRealArenaMember struct {
Dan int32 `protobuf:"varint,2,opt,name=dan,proto3" json:"dan"` //段位
Integral int32 `protobuf:"varint,3,opt,name=integral,proto3" json:"integral"` //积分
Heros []string `protobuf:"bytes,4,rep,name=heros,proto3" json:"heros"` //队伍
- Disable int32 `protobuf:"varint,5,opt,name=disable,proto3" json:"disable"` //禁用
- Leader int32 `protobuf:"varint,6,opt,name=leader,proto3" json:"leader"` //队长
+ Heroscid []string `protobuf:"bytes,5,rep,name=heroscid,proto3" json:"heroscid"` //队伍cid
+ Disable int32 `protobuf:"varint,6,opt,name=disable,proto3" json:"disable"` //禁用
+ Leader int32 `protobuf:"varint,7,opt,name=leader,proto3" json:"leader"` //队长
}
func (x *DBRealArenaMember) Reset() {
@@ -174,6 +183,13 @@ func (x *DBRealArenaMember) GetHeros() []string {
return nil
}
+func (x *DBRealArenaMember) GetHeroscid() []string {
+ if x != nil {
+ return x.Heroscid
+ }
+ return nil
+}
+
func (x *DBRealArenaMember) GetDisable() int32 {
if x != nil {
return x.Disable
@@ -265,7 +281,7 @@ var File_realarena_realarena_db_proto protoreflect.FileDescriptor
var file_realarena_realarena_db_proto_rawDesc = []byte{
0x0a, 0x1c, 0x72, 0x65, 0x61, 0x6c, 0x61, 0x72, 0x65, 0x6e, 0x61, 0x2f, 0x72, 0x65, 0x61, 0x6c,
0x61, 0x72, 0x65, 0x6e, 0x61, 0x5f, 0x64, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0a,
- 0x63, 0x6f, 0x6d, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x82, 0x01, 0x0a, 0x0b, 0x44,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf7, 0x01, 0x0a, 0x0b, 0x44,
0x42, 0x52, 0x65, 0x61, 0x6c, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69,
0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x05,
@@ -273,29 +289,38 @@ var file_realarena_realarena_db_proto_rawDesc = []byte{
0x73, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x75, 0x69, 0x6e, 0x66,
0x6f, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x61, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03,
0x64, 0x61, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x18,
- 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x22,
- 0xac, 0x01, 0x0a, 0x11, 0x44, 0x42, 0x52, 0x65, 0x61, 0x6c, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x4d,
- 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e,
- 0x66, 0x6f, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x61, 0x6e, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x64, 0x61, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e,
- 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x69, 0x6e,
- 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x65, 0x72, 0x6f, 0x73, 0x18,
- 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x68, 0x65, 0x72, 0x6f, 0x73, 0x12, 0x18, 0x0a, 0x07,
- 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x64,
- 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72,
- 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x91,
- 0x01, 0x0a, 0x0f, 0x44, 0x42, 0x52, 0x65, 0x61, 0x6c, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x52, 0x61,
- 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
- 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x74,
- 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
- 0x50, 0x61, 0x74, 0x68, 0x12, 0x24, 0x0a, 0x03, 0x72, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x12, 0x2e, 0x44, 0x42, 0x52, 0x65, 0x61, 0x6c, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x4d,
- 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x03, 0x72, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x62, 0x75,
- 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x44, 0x42, 0x52, 0x65, 0x61,
- 0x6c, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x04, 0x62, 0x75,
- 0x6c, 0x65, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x33,
+ 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x12,
+ 0x36, 0x0a, 0x08, 0x64, 0x61, 0x6e, 0x61, 0x77, 0x61, 0x72, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x1a, 0x2e, 0x44, 0x42, 0x52, 0x65, 0x61, 0x6c, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x2e,
+ 0x44, 0x61, 0x6e, 0x61, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x64,
+ 0x61, 0x6e, 0x61, 0x77, 0x61, 0x72, 0x64, 0x1a, 0x3b, 0x0a, 0x0d, 0x44, 0x61, 0x6e, 0x61, 0x77,
+ 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc8, 0x01, 0x0a, 0x11, 0x44, 0x42, 0x52, 0x65, 0x61, 0x6c, 0x41,
+ 0x72, 0x65, 0x6e, 0x61, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x04, 0x75, 0x73,
+ 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x55,
+ 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x10, 0x0a,
+ 0x03, 0x64, 0x61, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x64, 0x61, 0x6e, 0x12,
+ 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x68,
+ 0x65, 0x72, 0x6f, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x68, 0x65, 0x72, 0x6f,
+ 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x65, 0x72, 0x6f, 0x73, 0x63, 0x69, 0x64, 0x18, 0x05, 0x20,
+ 0x03, 0x28, 0x09, 0x52, 0x08, 0x68, 0x65, 0x72, 0x6f, 0x73, 0x63, 0x69, 0x64, 0x12, 0x18, 0x0a,
+ 0x07, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07,
+ 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x61, 0x64, 0x65,
+ 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22,
+ 0x91, 0x01, 0x0a, 0x0f, 0x44, 0x42, 0x52, 0x65, 0x61, 0x6c, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x52,
+ 0x61, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61,
+ 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
+ 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x24, 0x0a, 0x03, 0x72, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x44, 0x42, 0x52, 0x65, 0x61, 0x6c, 0x41, 0x72, 0x65, 0x6e, 0x61,
+ 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x03, 0x72, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x62,
+ 0x75, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x44, 0x42, 0x52, 0x65,
+ 0x61, 0x6c, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x04, 0x62,
+ 0x75, 0x6c, 0x65, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x33,
}
var (
@@ -310,23 +335,25 @@ func file_realarena_realarena_db_proto_rawDescGZIP() []byte {
return file_realarena_realarena_db_proto_rawDescData
}
-var file_realarena_realarena_db_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
+var file_realarena_realarena_db_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
var file_realarena_realarena_db_proto_goTypes = []interface{}{
(*DBRealArena)(nil), // 0: DBRealArena
(*DBRealArenaMember)(nil), // 1: DBRealArenaMember
(*DBRealArenaRace)(nil), // 2: DBRealArenaRace
- (*BaseUserInfo)(nil), // 3: BaseUserInfo
+ nil, // 3: DBRealArena.DanawardEntry
+ (*BaseUserInfo)(nil), // 4: BaseUserInfo
}
var file_realarena_realarena_db_proto_depIdxs = []int32{
- 3, // 0: DBRealArena.uinfo:type_name -> BaseUserInfo
- 3, // 1: DBRealArenaMember.user:type_name -> BaseUserInfo
- 1, // 2: DBRealArenaRace.red:type_name -> DBRealArenaMember
- 1, // 3: DBRealArenaRace.bule:type_name -> DBRealArenaMember
- 4, // [4:4] is the sub-list for method output_type
- 4, // [4:4] is the sub-list for method input_type
- 4, // [4:4] is the sub-list for extension type_name
- 4, // [4:4] is the sub-list for extension extendee
- 0, // [0:4] is the sub-list for field type_name
+ 4, // 0: DBRealArena.uinfo:type_name -> BaseUserInfo
+ 3, // 1: DBRealArena.danaward:type_name -> DBRealArena.DanawardEntry
+ 4, // 2: DBRealArenaMember.user:type_name -> BaseUserInfo
+ 1, // 3: DBRealArenaRace.red:type_name -> DBRealArenaMember
+ 1, // 4: DBRealArenaRace.bule:type_name -> DBRealArenaMember
+ 5, // [5:5] is the sub-list for method output_type
+ 5, // [5:5] is the sub-list for method input_type
+ 5, // [5:5] is the sub-list for extension type_name
+ 5, // [5:5] is the sub-list for extension extendee
+ 0, // [0:5] is the sub-list for field type_name
}
func init() { file_realarena_realarena_db_proto_init() }
@@ -379,7 +406,7 @@ func file_realarena_realarena_db_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_realarena_realarena_db_proto_rawDesc,
NumEnums: 0,
- NumMessages: 3,
+ NumMessages: 4,
NumExtensions: 0,
NumServices: 0,
},
diff --git a/pb/realarena_msg.pb.go b/pb/realarena_msg.pb.go
index bc8a023cf..c633c9221 100644
--- a/pb/realarena_msg.pb.go
+++ b/pb/realarena_msg.pb.go
@@ -302,8 +302,9 @@ type RealArenaSelectTeamHeroReq struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Roomid string `protobuf:"bytes,1,opt,name=roomid,proto3" json:"roomid"`
- Heros []string `protobuf:"bytes,2,rep,name=heros,proto3" json:"heros"`
+ Roomid string `protobuf:"bytes,1,opt,name=roomid,proto3" json:"roomid"`
+ Herosids []string `protobuf:"bytes,2,rep,name=herosids,proto3" json:"herosids"`
+ Heroscids []string `protobuf:"bytes,3,rep,name=heroscids,proto3" json:"heroscids"`
}
func (x *RealArenaSelectTeamHeroReq) Reset() {
@@ -345,9 +346,16 @@ func (x *RealArenaSelectTeamHeroReq) GetRoomid() string {
return ""
}
-func (x *RealArenaSelectTeamHeroReq) GetHeros() []string {
+func (x *RealArenaSelectTeamHeroReq) GetHerosids() []string {
if x != nil {
- return x.Heros
+ return x.Herosids
+ }
+ return nil
+}
+
+func (x *RealArenaSelectTeamHeroReq) GetHeroscids() []string {
+ if x != nil {
+ return x.Heroscids
}
return nil
}
@@ -396,8 +404,8 @@ type RealArenaSelectHeroPush struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid"`
- Heros []string `protobuf:"bytes,2,rep,name=heros,proto3" json:"heros"`
+ Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid"`
+ Heroscids []string `protobuf:"bytes,2,rep,name=heroscids,proto3" json:"heroscids"`
}
func (x *RealArenaSelectHeroPush) Reset() {
@@ -439,9 +447,9 @@ func (x *RealArenaSelectHeroPush) GetUid() string {
return ""
}
-func (x *RealArenaSelectHeroPush) GetHeros() []string {
+func (x *RealArenaSelectHeroPush) GetHeroscids() []string {
if x != nil {
- return x.Heros
+ return x.Heroscids
}
return nil
}
@@ -882,51 +890,54 @@ var file_realarena_realarena_msg_proto_rawDesc = []byte{
0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01,
0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74,
0x64, 0x6f, 0x77, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e,
- 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x22, 0x4a, 0x0a, 0x1a, 0x52, 0x65, 0x61, 0x6c, 0x41, 0x72, 0x65,
+ 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x22, 0x6e, 0x0a, 0x1a, 0x52, 0x65, 0x61, 0x6c, 0x41, 0x72, 0x65,
0x6e, 0x61, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x48, 0x65, 0x72, 0x6f,
0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x68,
- 0x65, 0x72, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x68, 0x65, 0x72, 0x6f,
- 0x73, 0x22, 0x1d, 0x0a, 0x1b, 0x52, 0x65, 0x61, 0x6c, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x53, 0x65,
- 0x6c, 0x65, 0x63, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x73, 0x70,
- 0x22, 0x41, 0x0a, 0x17, 0x52, 0x65, 0x61, 0x6c, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x53, 0x65, 0x6c,
- 0x65, 0x63, 0x74, 0x48, 0x65, 0x72, 0x6f, 0x50, 0x75, 0x73, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x75,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a,
- 0x05, 0x68, 0x65, 0x72, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x68, 0x65,
- 0x72, 0x6f, 0x73, 0x22, 0x4f, 0x0a, 0x1d, 0x52, 0x65, 0x61, 0x6c, 0x41, 0x72, 0x65, 0x6e, 0x61,
- 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x65, 0x72, 0x6f,
- 0x50, 0x75, 0x73, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x64,
- 0x6f, 0x77, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74,
- 0x64, 0x6f, 0x77, 0x6e, 0x22, 0x4b, 0x0a, 0x1b, 0x52, 0x65, 0x61, 0x6c, 0x41, 0x72, 0x65, 0x6e,
- 0x61, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x48, 0x65, 0x72, 0x6f,
+ 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x68,
+ 0x65, 0x72, 0x6f, 0x73, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x68,
+ 0x65, 0x72, 0x6f, 0x73, 0x69, 0x64, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x68, 0x65, 0x72, 0x6f, 0x73,
+ 0x63, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x68, 0x65, 0x72, 0x6f,
+ 0x73, 0x63, 0x69, 0x64, 0x73, 0x22, 0x1d, 0x0a, 0x1b, 0x52, 0x65, 0x61, 0x6c, 0x41, 0x72, 0x65,
+ 0x6e, 0x61, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x48, 0x65, 0x72, 0x6f,
+ 0x52, 0x65, 0x73, 0x70, 0x22, 0x49, 0x0a, 0x17, 0x52, 0x65, 0x61, 0x6c, 0x41, 0x72, 0x65, 0x6e,
+ 0x61, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x48, 0x65, 0x72, 0x6f, 0x50, 0x75, 0x73, 0x68, 0x12,
+ 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69,
+ 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x68, 0x65, 0x72, 0x6f, 0x73, 0x63, 0x69, 0x64, 0x73, 0x18, 0x02,
+ 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x68, 0x65, 0x72, 0x6f, 0x73, 0x63, 0x69, 0x64, 0x73, 0x22,
+ 0x4f, 0x0a, 0x1d, 0x52, 0x65, 0x61, 0x6c, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x53, 0x74, 0x61, 0x72,
+ 0x74, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x65, 0x72, 0x6f, 0x50, 0x75, 0x73, 0x68,
+ 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75,
+ 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x64, 0x6f, 0x77, 0x6e,
+ 0x22, 0x4b, 0x0a, 0x1b, 0x52, 0x65, 0x61, 0x6c, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x44, 0x69, 0x73,
+ 0x61, 0x62, 0x6c, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x71, 0x12,
+ 0x16, 0x0a, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x1e, 0x0a,
+ 0x1c, 0x52, 0x65, 0x61, 0x6c, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c,
+ 0x65, 0x54, 0x65, 0x61, 0x6d, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x22, 0x42, 0x0a,
+ 0x18, 0x52, 0x65, 0x61, 0x6c, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c,
+ 0x65, 0x48, 0x65, 0x72, 0x6f, 0x50, 0x75, 0x73, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x69,
+ 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65,
+ 0x78, 0x22, 0x50, 0x0a, 0x1e, 0x52, 0x65, 0x61, 0x6c, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x53, 0x74,
+ 0x61, 0x72, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x50,
+ 0x75, 0x73, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x64, 0x6f,
+ 0x77, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x64,
+ 0x6f, 0x77, 0x6e, 0x22, 0x4c, 0x0a, 0x1c, 0x52, 0x65, 0x61, 0x6c, 0x41, 0x72, 0x65, 0x6e, 0x61,
+ 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72,
0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x69, 0x64, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x69,
0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65,
- 0x78, 0x22, 0x1e, 0x0a, 0x1c, 0x52, 0x65, 0x61, 0x6c, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x44, 0x69,
- 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x73,
- 0x70, 0x22, 0x42, 0x0a, 0x18, 0x52, 0x65, 0x61, 0x6c, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x44, 0x69,
- 0x73, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x65, 0x72, 0x6f, 0x50, 0x75, 0x73, 0x68, 0x12, 0x10, 0x0a,
- 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12,
- 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
- 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x50, 0x0a, 0x1e, 0x52, 0x65, 0x61, 0x6c, 0x41, 0x72, 0x65,
- 0x6e, 0x61, 0x53, 0x74, 0x61, 0x72, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x4c, 0x65, 0x61,
- 0x64, 0x65, 0x72, 0x50, 0x75, 0x73, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x75,
- 0x6e, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x6f,
- 0x75, 0x6e, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x22, 0x4c, 0x0a, 0x1c, 0x52, 0x65, 0x61, 0x6c, 0x41,
- 0x72, 0x65, 0x6e, 0x61, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x4c, 0x65,
- 0x61, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x69, 0x64, 0x12,
- 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
- 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x1f, 0x0a, 0x1d, 0x52, 0x65, 0x61, 0x6c, 0x41, 0x72, 0x65,
- 0x6e, 0x61, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x4c, 0x65, 0x61, 0x64,
- 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x43, 0x0a, 0x19, 0x52, 0x65, 0x61, 0x6c, 0x41, 0x72,
- 0x65, 0x6e, 0x61, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x50,
- 0x75, 0x73, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x06, 0x5a, 0x04, 0x2e,
- 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x78, 0x22, 0x1f, 0x0a, 0x1d, 0x52, 0x65, 0x61, 0x6c, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x53, 0x65,
+ 0x6c, 0x65, 0x63, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x65,
+ 0x73, 0x70, 0x22, 0x43, 0x0a, 0x19, 0x52, 0x65, 0x61, 0x6c, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x53,
+ 0x65, 0x6c, 0x65, 0x63, 0x74, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x50, 0x75, 0x73, 0x68, 0x12,
+ 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69,
+ 0x64, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62,
+ 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
diff --git a/sys/configure/structs/Game.ArenarealtimeConfig.go b/sys/configure/structs/Game.ArenarealtimeConfig.go
new file mode 100644
index 000000000..1518f8e14
--- /dev/null
+++ b/sys/configure/structs/Game.ArenarealtimeConfig.go
@@ -0,0 +1,42 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+package cfg
+
+type GameArenarealtimeConfig struct {
+ _dataMap map[int32]*GameArenarealtimeConfigData
+ _dataList []*GameArenarealtimeConfigData
+}
+
+func NewGameArenarealtimeConfig(_buf []map[string]interface{}) (*GameArenarealtimeConfig, error) {
+ _dataList := make([]*GameArenarealtimeConfigData, 0, len(_buf))
+ dataMap := make(map[int32]*GameArenarealtimeConfigData)
+ for _, _ele_ := range _buf {
+ if _v, err2 := DeserializeGameArenarealtimeConfigData(_ele_); err2 != nil {
+ return nil, err2
+ } else {
+ _dataList = append(_dataList, _v)
+ dataMap[_v.Id] = _v
+ }
+ }
+ return &GameArenarealtimeConfig{_dataList:_dataList, _dataMap:dataMap}, nil
+}
+
+func (table *GameArenarealtimeConfig) GetDataMap() map[int32]*GameArenarealtimeConfigData {
+ return table._dataMap
+}
+
+func (table *GameArenarealtimeConfig) GetDataList() []*GameArenarealtimeConfigData {
+ return table._dataList
+}
+
+func (table *GameArenarealtimeConfig) Get(key int32) *GameArenarealtimeConfigData {
+ return table._dataMap[key]
+}
+
+
diff --git a/sys/configure/structs/Game.ArenarealtimeConfigData.go b/sys/configure/structs/Game.ArenarealtimeConfigData.go
new file mode 100644
index 000000000..dfa3868fd
--- /dev/null
+++ b/sys/configure/structs/Game.ArenarealtimeConfigData.go
@@ -0,0 +1,113 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+package cfg
+
+import "errors"
+
+type GameArenarealtimeConfigData struct {
+ Id int32
+ RankID int32
+ SubRankID int32
+ RankName string
+ RankMin int32
+ RankMax int32
+ ExReward []*Gameatn
+ RankReturn int32
+ RewardWeek []*Gameatn
+ WinReward []*Gameatn
+ WinRankScore int32
+ LoseReward []*Gameatn
+ LoseRankScore int32
+ RankIcon string
+}
+
+const TypeId_GameArenarealtimeConfigData = 2087473954
+
+func (*GameArenarealtimeConfigData) GetTypeId() int32 {
+ return 2087473954
+}
+
+func (_v *GameArenarealtimeConfigData)Deserialize(_buf map[string]interface{}) (err error) {
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["Id"].(float64); !_ok_ { err = errors.New("Id error"); return }; _v.Id = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["RankID"].(float64); !_ok_ { err = errors.New("RankID error"); return }; _v.RankID = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["SubRankID"].(float64); !_ok_ { err = errors.New("SubRankID error"); return }; _v.SubRankID = int32(_tempNum_) }
+ {var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["RankName"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.RankName error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.RankName, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["RankMin"].(float64); !_ok_ { err = errors.New("RankMin error"); return }; _v.RankMin = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["RankMax"].(float64); !_ok_ { err = errors.New("RankMax error"); return }; _v.RankMax = int32(_tempNum_) }
+ {
+ var _arr_ []interface{}
+ var _ok_ bool
+ if _arr_, _ok_ = _buf["ex_reward"].([]interface{}); !_ok_ { err = errors.New("ex_reward error"); return }
+
+ _v.ExReward = make([]*Gameatn, 0, len(_arr_))
+
+ for _, _e_ := range _arr_ {
+ var _list_v_ *Gameatn
+ { var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _e_.(map[string]interface{}); !_ok_ { err = errors.New("_list_v_ error"); return }; if _list_v_, err = DeserializeGameatn(_x_); err != nil { return } }
+ _v.ExReward = append(_v.ExReward, _list_v_)
+ }
+ }
+
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["RankReturn"].(float64); !_ok_ { err = errors.New("RankReturn error"); return }; _v.RankReturn = int32(_tempNum_) }
+ {
+ var _arr_ []interface{}
+ var _ok_ bool
+ if _arr_, _ok_ = _buf["reward_week"].([]interface{}); !_ok_ { err = errors.New("reward_week error"); return }
+
+ _v.RewardWeek = make([]*Gameatn, 0, len(_arr_))
+
+ for _, _e_ := range _arr_ {
+ var _list_v_ *Gameatn
+ { var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _e_.(map[string]interface{}); !_ok_ { err = errors.New("_list_v_ error"); return }; if _list_v_, err = DeserializeGameatn(_x_); err != nil { return } }
+ _v.RewardWeek = append(_v.RewardWeek, _list_v_)
+ }
+ }
+
+ {
+ var _arr_ []interface{}
+ var _ok_ bool
+ if _arr_, _ok_ = _buf["WinReward"].([]interface{}); !_ok_ { err = errors.New("WinReward error"); return }
+
+ _v.WinReward = make([]*Gameatn, 0, len(_arr_))
+
+ for _, _e_ := range _arr_ {
+ var _list_v_ *Gameatn
+ { var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _e_.(map[string]interface{}); !_ok_ { err = errors.New("_list_v_ error"); return }; if _list_v_, err = DeserializeGameatn(_x_); err != nil { return } }
+ _v.WinReward = append(_v.WinReward, _list_v_)
+ }
+ }
+
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["WinRankScore"].(float64); !_ok_ { err = errors.New("WinRankScore error"); return }; _v.WinRankScore = int32(_tempNum_) }
+ {
+ var _arr_ []interface{}
+ var _ok_ bool
+ if _arr_, _ok_ = _buf["LoseReward"].([]interface{}); !_ok_ { err = errors.New("LoseReward error"); return }
+
+ _v.LoseReward = make([]*Gameatn, 0, len(_arr_))
+
+ for _, _e_ := range _arr_ {
+ var _list_v_ *Gameatn
+ { var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _e_.(map[string]interface{}); !_ok_ { err = errors.New("_list_v_ error"); return }; if _list_v_, err = DeserializeGameatn(_x_); err != nil { return } }
+ _v.LoseReward = append(_v.LoseReward, _list_v_)
+ }
+ }
+
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["LoseRankScore"].(float64); !_ok_ { err = errors.New("LoseRankScore error"); return }; _v.LoseRankScore = int32(_tempNum_) }
+ { var _ok_ bool; if _v.RankIcon, _ok_ = _buf["RankIcon"].(string); !_ok_ { err = errors.New("RankIcon error"); return } }
+ return
+}
+
+func DeserializeGameArenarealtimeConfigData(_buf map[string]interface{}) (*GameArenarealtimeConfigData, error) {
+ v := &GameArenarealtimeConfigData{}
+ if err := v.Deserialize(_buf); err == nil {
+ return v, nil
+ } else {
+ return nil, err
+ }
+}
diff --git a/sys/configure/structs/Game.ArenarealtimeRankreward.go b/sys/configure/structs/Game.ArenarealtimeRankreward.go
new file mode 100644
index 000000000..da9a36c11
--- /dev/null
+++ b/sys/configure/structs/Game.ArenarealtimeRankreward.go
@@ -0,0 +1,42 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+package cfg
+
+type GameArenarealtimeRankreward struct {
+ _dataMap map[int32]*GameArenarealtimeRankrewardData
+ _dataList []*GameArenarealtimeRankrewardData
+}
+
+func NewGameArenarealtimeRankreward(_buf []map[string]interface{}) (*GameArenarealtimeRankreward, error) {
+ _dataList := make([]*GameArenarealtimeRankrewardData, 0, len(_buf))
+ dataMap := make(map[int32]*GameArenarealtimeRankrewardData)
+ for _, _ele_ := range _buf {
+ if _v, err2 := DeserializeGameArenarealtimeRankrewardData(_ele_); err2 != nil {
+ return nil, err2
+ } else {
+ _dataList = append(_dataList, _v)
+ dataMap[_v.Id] = _v
+ }
+ }
+ return &GameArenarealtimeRankreward{_dataList:_dataList, _dataMap:dataMap}, nil
+}
+
+func (table *GameArenarealtimeRankreward) GetDataMap() map[int32]*GameArenarealtimeRankrewardData {
+ return table._dataMap
+}
+
+func (table *GameArenarealtimeRankreward) GetDataList() []*GameArenarealtimeRankrewardData {
+ return table._dataList
+}
+
+func (table *GameArenarealtimeRankreward) Get(key int32) *GameArenarealtimeRankrewardData {
+ return table._dataMap[key]
+}
+
+
diff --git a/sys/configure/structs/Game.ArenarealtimeRankrewardData.go b/sys/configure/structs/Game.ArenarealtimeRankrewardData.go
new file mode 100644
index 000000000..7003118b7
--- /dev/null
+++ b/sys/configure/structs/Game.ArenarealtimeRankrewardData.go
@@ -0,0 +1,56 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+package cfg
+
+import "errors"
+
+type GameArenarealtimeRankrewardData struct {
+ Id int32
+ RankingMin int32
+ RankingMax int32
+ RankDisplay string
+ RankReward []*Gameatn
+}
+
+const TypeId_GameArenarealtimeRankrewardData = 805235387
+
+func (*GameArenarealtimeRankrewardData) GetTypeId() int32 {
+ return 805235387
+}
+
+func (_v *GameArenarealtimeRankrewardData)Deserialize(_buf map[string]interface{}) (err error) {
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["id"].(float64); !_ok_ { err = errors.New("id error"); return }; _v.Id = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["RankingMin"].(float64); !_ok_ { err = errors.New("RankingMin error"); return }; _v.RankingMin = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["RankingMax"].(float64); !_ok_ { err = errors.New("RankingMax error"); return }; _v.RankingMax = int32(_tempNum_) }
+ {var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["rank_display"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.RankDisplay error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.RankDisplay, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
+ {
+ var _arr_ []interface{}
+ var _ok_ bool
+ if _arr_, _ok_ = _buf["rank_reward"].([]interface{}); !_ok_ { err = errors.New("rank_reward error"); return }
+
+ _v.RankReward = make([]*Gameatn, 0, len(_arr_))
+
+ for _, _e_ := range _arr_ {
+ var _list_v_ *Gameatn
+ { var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _e_.(map[string]interface{}); !_ok_ { err = errors.New("_list_v_ error"); return }; if _list_v_, err = DeserializeGameatn(_x_); err != nil { return } }
+ _v.RankReward = append(_v.RankReward, _list_v_)
+ }
+ }
+
+ return
+}
+
+func DeserializeGameArenarealtimeRankrewardData(_buf map[string]interface{}) (*GameArenarealtimeRankrewardData, error) {
+ v := &GameArenarealtimeRankrewardData{}
+ if err := v.Deserialize(_buf); err == nil {
+ return v, nil
+ } else {
+ return nil, err
+ }
+}
diff --git a/sys/configure/structs/Game.ArenarealtimeWinStreak.go b/sys/configure/structs/Game.ArenarealtimeWinStreak.go
new file mode 100644
index 000000000..dad732563
--- /dev/null
+++ b/sys/configure/structs/Game.ArenarealtimeWinStreak.go
@@ -0,0 +1,42 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+package cfg
+
+type GameArenarealtimeWinStreak struct {
+ _dataMap map[int32]*GameArenarealtimeWinStreakData
+ _dataList []*GameArenarealtimeWinStreakData
+}
+
+func NewGameArenarealtimeWinStreak(_buf []map[string]interface{}) (*GameArenarealtimeWinStreak, error) {
+ _dataList := make([]*GameArenarealtimeWinStreakData, 0, len(_buf))
+ dataMap := make(map[int32]*GameArenarealtimeWinStreakData)
+ for _, _ele_ := range _buf {
+ if _v, err2 := DeserializeGameArenarealtimeWinStreakData(_ele_); err2 != nil {
+ return nil, err2
+ } else {
+ _dataList = append(_dataList, _v)
+ dataMap[_v.Id] = _v
+ }
+ }
+ return &GameArenarealtimeWinStreak{_dataList:_dataList, _dataMap:dataMap}, nil
+}
+
+func (table *GameArenarealtimeWinStreak) GetDataMap() map[int32]*GameArenarealtimeWinStreakData {
+ return table._dataMap
+}
+
+func (table *GameArenarealtimeWinStreak) GetDataList() []*GameArenarealtimeWinStreakData {
+ return table._dataList
+}
+
+func (table *GameArenarealtimeWinStreak) Get(key int32) *GameArenarealtimeWinStreakData {
+ return table._dataMap[key]
+}
+
+
diff --git a/sys/configure/structs/Game.ArenarealtimeWinStreakData.go b/sys/configure/structs/Game.ArenarealtimeWinStreakData.go
new file mode 100644
index 000000000..f255c970b
--- /dev/null
+++ b/sys/configure/structs/Game.ArenarealtimeWinStreakData.go
@@ -0,0 +1,41 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+package cfg
+
+import "errors"
+
+type GameArenarealtimeWinStreakData struct {
+ Id int32
+ Name string
+ WinStreakScore int32
+ Winningstreak int32
+}
+
+const TypeId_GameArenarealtimeWinStreakData = 993938542
+
+func (*GameArenarealtimeWinStreakData) GetTypeId() int32 {
+ return 993938542
+}
+
+func (_v *GameArenarealtimeWinStreakData)Deserialize(_buf map[string]interface{}) (err error) {
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["id"].(float64); !_ok_ { err = errors.New("id error"); return }; _v.Id = int32(_tempNum_) }
+ {var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["name"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Name error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Name, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["WinStreakScore"].(float64); !_ok_ { err = errors.New("WinStreakScore error"); return }; _v.WinStreakScore = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["winningstreak"].(float64); !_ok_ { err = errors.New("winningstreak error"); return }; _v.Winningstreak = int32(_tempNum_) }
+ return
+}
+
+func DeserializeGameArenarealtimeWinStreakData(_buf map[string]interface{}) (*GameArenarealtimeWinStreakData, error) {
+ v := &GameArenarealtimeWinStreakData{}
+ if err := v.Deserialize(_buf); err == nil {
+ return v, nil
+ } else {
+ return nil, err
+ }
+}
diff --git a/sys/configure/structs/Tables.go b/sys/configure/structs/Tables.go
index 6c5ecfa2d..93ecb36c3 100644
--- a/sys/configure/structs/Tables.go
+++ b/sys/configure/structs/Tables.go
@@ -363,6 +363,9 @@ type Tables struct {
ExclusiveRank *GameExclusiveRank
ExclusiveStar *GameExclusiveStar
ExclusiveItem *GameExclusiveItem
+ ArenarealtimeConfig *GameArenarealtimeConfig
+ ArenarealtimeWinStreak *GameArenarealtimeWinStreak
+ ArenarealtimeRankreward *GameArenarealtimeRankreward
}
func NewTables(loader JsonLoader) (*Tables, error) {
@@ -2482,5 +2485,23 @@ func NewTables(loader JsonLoader) (*Tables, error) {
if tables.ExclusiveItem, err = NewGameExclusiveItem(buf) ; err != nil {
return nil, err
}
+ if buf, err = loader("game_arenarealtimeconfig") ; err != nil {
+ return nil, err
+ }
+ if tables.ArenarealtimeConfig, err = NewGameArenarealtimeConfig(buf) ; err != nil {
+ return nil, err
+ }
+ if buf, err = loader("game_arenarealtimewinstreak") ; err != nil {
+ return nil, err
+ }
+ if tables.ArenarealtimeWinStreak, err = NewGameArenarealtimeWinStreak(buf) ; err != nil {
+ return nil, err
+ }
+ if buf, err = loader("game_arenarealtimerankreward") ; err != nil {
+ return nil, err
+ }
+ if tables.ArenarealtimeRankreward, err = NewGameArenarealtimeRankreward(buf) ; err != nil {
+ return nil, err
+ }
return tables, nil
}