This commit is contained in:
liwei1dao 2023-02-17 10:32:11 +08:00
commit f4dd29bf2c
85 changed files with 6697 additions and 5411 deletions

View File

@ -108,5 +108,15 @@
"LockSlots": [],
"AssistTeam": 0,
"CanFriendHelp": 0
},
{
"id": 111,
"PlayType": "pvp",
"HeroCount": 5,
"DefaultHero": 0,
"DisableHero": [],
"LockSlots": [],
"AssistTeam": 0,
"CanFriendHelp": 0
}
]

File diff suppressed because it is too large Load Diff

View File

@ -48,5 +48,15 @@
"ips": "10.0.0.85:7891",
"debug": true,
"sid": "dfmxf"
},
{
"index": 6,
"name": {
"key": "debug_server_04",
"text": "hjl"
},
"ips": "10.0.0.208:7891",
"debug": true,
"sid": "dfjl"
}
]

View File

@ -104,37 +104,37 @@
"camp3_pool1": "camp3_pool",
"camp4_pool1": "camp4_pool",
"base_pool1": {
"s": 0,
"e": 0,
"s": 1,
"e": 1,
"p": "base_pool1"
},
"base_pool2": {
"s": 1,
"e": 99999,
"s": 2,
"e": 2,
"p": "base_pool2"
},
"base_pool3": {
"s": 100000,
"e": 999999999,
"p": "base_pool6"
"s": 3,
"e": 3,
"p": "base_pool3"
},
"base_pool4": {
"s": 99999999,
"e": 999999999,
"p": "base_pool7"
"s": 4,
"e": 4,
"p": "base_pool4"
},
"base_pool5": {
"s": 99999999,
"e": 999999999,
"p": "base_pool7"
"s": 5,
"e": 5,
"p": "base_pool5"
},
"base_pool6": {
"s": 99999999,
"e": 999999999,
"p": "base_pool7"
"s": 6,
"e": 6,
"p": "base_pool6"
},
"base_pool7": {
"s": 99999999,
"s": 7,
"e": 999999999,
"p": "base_pool7"
},

View File

@ -2601,9 +2601,9 @@
},
{
"id": "55006",
"preson": "11020",
"presonshow": "11020_exhibition",
"presonstory": "11020",
"preson": "11021",
"presonshow": "11021_exhibition",
"presonstory": "11021",
"presondraw": "",
"height": 1,
"weight": 1,

View File

@ -100,11 +100,5 @@
"open": true,
"routrules": "~/worker",
"describe": "附魔副本排行榜数据"
},
{
"msgid": "pvp",
"open": true,
"routrules": "~/worker",
"describe": "同步竞技场"
}
]

View File

@ -0,0 +1,918 @@
[
{
"id": 1,
"item_id": 0,
"type": 1,
"consume": [
{
"a": "item",
"t": "10001",
"n": 1
},
{
"a": "item",
"t": "10201",
"n": 2
},
{
"a": "item",
"t": "10301",
"n": 3
}
],
"temperature": 50,
"quality": {
"a": "item",
"t": "20201",
"n": 2
}
},
{
"id": 2,
"item_id": 0,
"type": 1,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 3
}
},
{
"id": 3,
"item_id": 0,
"type": 1,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 4
}
},
{
"id": 4,
"item_id": 0,
"type": 1,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 5
}
},
{
"id": 5,
"item_id": 0,
"type": 1,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 6
}
},
{
"id": 6,
"item_id": 0,
"type": 1,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 7
}
},
{
"id": 7,
"item_id": 0,
"type": 1,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 8
}
},
{
"id": 8,
"item_id": 0,
"type": 1,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 9
}
},
{
"id": 9,
"item_id": 0,
"type": 1,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 10
}
},
{
"id": 10,
"item_id": 0,
"type": 1,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 11
}
},
{
"id": 11,
"item_id": 0,
"type": 1,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 12
}
},
{
"id": 12,
"item_id": 0,
"type": 1,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 13
}
},
{
"id": 13,
"item_id": 0,
"type": 1,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 14
}
},
{
"id": 14,
"item_id": 0,
"type": 1,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 15
}
},
{
"id": 15,
"item_id": 0,
"type": 1,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 16
}
},
{
"id": 16,
"item_id": 0,
"type": 1,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 17
}
},
{
"id": 17,
"item_id": 0,
"type": 1,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 18
}
},
{
"id": 18,
"item_id": 0,
"type": 1,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 19
}
},
{
"id": 19,
"item_id": 0,
"type": 1,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 20
}
},
{
"id": 20,
"item_id": 0,
"type": 1,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 21
}
},
{
"id": 21,
"item_id": 0,
"type": 1,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 22
}
},
{
"id": 22,
"item_id": 0,
"type": 1,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 23
}
},
{
"id": 23,
"item_id": 0,
"type": 1,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 24
}
},
{
"id": 24,
"item_id": 0,
"type": 1,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 25
}
},
{
"id": 25,
"item_id": 0,
"type": 1,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 26
}
},
{
"id": 26,
"item_id": 0,
"type": 2,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 27
}
},
{
"id": 27,
"item_id": 0,
"type": 2,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 28
}
},
{
"id": 28,
"item_id": 0,
"type": 2,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 29
}
},
{
"id": 29,
"item_id": 0,
"type": 2,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 30
}
},
{
"id": 30,
"item_id": 0,
"type": 2,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 31
}
},
{
"id": 31,
"item_id": 0,
"type": 2,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 32
}
},
{
"id": 32,
"item_id": 0,
"type": 2,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 33
}
},
{
"id": 33,
"item_id": 0,
"type": 2,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 34
}
},
{
"id": 34,
"item_id": 0,
"type": 2,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 35
}
},
{
"id": 35,
"item_id": 0,
"type": 2,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 36
}
},
{
"id": 36,
"item_id": 0,
"type": 2,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 37
}
},
{
"id": 37,
"item_id": 0,
"type": 2,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 38
}
},
{
"id": 38,
"item_id": 0,
"type": 2,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 39
}
},
{
"id": 39,
"item_id": 0,
"type": 2,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 40
}
},
{
"id": 40,
"item_id": 0,
"type": 2,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 41
}
},
{
"id": 41,
"item_id": 0,
"type": 2,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 42
}
},
{
"id": 42,
"item_id": 0,
"type": 2,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 43
}
},
{
"id": 43,
"item_id": 0,
"type": 2,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 44
}
},
{
"id": 44,
"item_id": 0,
"type": 2,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 45
}
},
{
"id": 45,
"item_id": 0,
"type": 2,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 46
}
},
{
"id": 46,
"item_id": 0,
"type": 2,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 47
}
},
{
"id": 47,
"item_id": 0,
"type": 2,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 48
}
},
{
"id": 48,
"item_id": 0,
"type": 2,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 49
}
},
{
"id": 49,
"item_id": 0,
"type": 2,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 50
}
},
{
"id": 50,
"item_id": 0,
"type": 2,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 51
}
},
{
"id": 51,
"item_id": 0,
"type": 3,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 52
}
},
{
"id": 52,
"item_id": 0,
"type": 3,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 53
}
},
{
"id": 53,
"item_id": 0,
"type": 3,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 54
}
},
{
"id": 54,
"item_id": 0,
"type": 3,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 55
}
},
{
"id": 55,
"item_id": 0,
"type": 3,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 56
}
},
{
"id": 56,
"item_id": 0,
"type": 3,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 57
}
},
{
"id": 57,
"item_id": 0,
"type": 3,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 58
}
},
{
"id": 58,
"item_id": 0,
"type": 3,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 59
}
},
{
"id": 59,
"item_id": 0,
"type": 3,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 60
}
},
{
"id": 60,
"item_id": 0,
"type": 3,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 61
}
},
{
"id": 61,
"item_id": 0,
"type": 3,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 62
}
},
{
"id": 62,
"item_id": 0,
"type": 3,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 63
}
},
{
"id": 63,
"item_id": 0,
"type": 3,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 64
}
},
{
"id": 64,
"item_id": 0,
"type": 3,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 65
}
},
{
"id": 65,
"item_id": 0,
"type": 3,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 66
}
},
{
"id": 66,
"item_id": 0,
"type": 3,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 67
}
},
{
"id": 67,
"item_id": 0,
"type": 3,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 68
}
},
{
"id": 68,
"item_id": 0,
"type": 3,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 69
}
},
{
"id": 69,
"item_id": 0,
"type": 3,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 70
}
},
{
"id": 70,
"item_id": 0,
"type": 3,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 71
}
},
{
"id": 71,
"item_id": 0,
"type": 3,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 72
}
},
{
"id": 72,
"item_id": 0,
"type": 3,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 73
}
},
{
"id": 73,
"item_id": 0,
"type": 3,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 74
}
},
{
"id": 74,
"item_id": 0,
"type": 3,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 75
}
},
{
"id": 75,
"item_id": 0,
"type": 3,
"consume": [],
"temperature": 0,
"quality": {
"a": "item",
"t": "20201",
"n": 76
}
}
]

View File

@ -9,10 +9,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -35,10 +31,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -61,10 +53,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -109,10 +97,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -135,10 +119,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -161,10 +141,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -187,10 +163,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -213,10 +185,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -239,10 +207,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -265,10 +229,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -291,10 +251,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -317,10 +273,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -343,10 +295,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -369,10 +317,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -395,10 +339,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -421,10 +361,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -447,10 +383,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -473,10 +405,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -499,10 +427,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -525,10 +449,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -551,10 +471,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -577,10 +493,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -603,10 +515,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -629,10 +537,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -655,10 +559,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -681,10 +581,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -707,10 +603,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -755,10 +647,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -781,10 +669,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -807,10 +691,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -833,10 +713,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -859,10 +735,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -885,10 +757,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -911,10 +779,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -937,10 +801,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -963,10 +823,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -989,10 +845,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -1015,10 +867,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -1041,10 +889,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -1067,10 +911,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -1093,10 +933,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -1119,10 +955,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -1145,10 +977,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -1171,10 +999,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -1197,10 +1021,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -1289,10 +1109,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -1315,10 +1131,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -1341,10 +1153,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -1367,10 +1175,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -1393,10 +1197,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -1419,10 +1219,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -1445,10 +1241,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -1471,10 +1263,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -1497,10 +1285,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -1523,10 +1307,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -1549,10 +1329,6 @@
{
"key": 1,
"param": 1
},
{
"key": 2,
"param": 1100101
}
],
"optional": "",
@ -1573,8 +1349,8 @@
},
"main": [
{
"key": 3,
"param": 20010
"key": 1,
"param": 1
}
],
"optional": "",
@ -1595,8 +1371,8 @@
},
"main": [
{
"key": 3,
"param": 20010
"key": 1,
"param": 1
}
],
"optional": "",
@ -1617,8 +1393,8 @@
},
"main": [
{
"key": 3,
"param": 20010
"key": 1,
"param": 1
}
],
"optional": "",

File diff suppressed because it is too large Load Diff

View File

@ -4,7 +4,7 @@
"privilege_type": 1,
"privilege_DescribeFront": {
"key": "privilege_10101",
"text": "每日获得"
"text": "购买后获得"
},
"privilege_DescribeAfter": {
"key": "PrivilegeAfter_10101",
@ -43,7 +43,7 @@
"privilege_type": 1,
"privilege_DescribeFront": {
"key": "privilege_10201",
"text": "每日获得"
"text": "每日免费刷新商店"
},
"privilege_DescribeAfter": {
"key": "PrivilegeAfter_10201",
@ -56,11 +56,11 @@
"privilege_type": 2,
"privilege_DescribeFront": {
"key": "privilege_10202",
"text": "金币商店每日"
"text": "每日获得"
},
"privilege_DescribeAfter": {
"key": "PrivilegeAfter_10202",
"text": "免费刷新次数+1"
"text": "免费刷新次数+2"
},
"privilege_parameter": 1
},
@ -69,11 +69,11 @@
"privilege_type": 7,
"privilege_DescribeFront": {
"key": "privilege_10203",
"text": "巨怪商队"
"text": "每周获得"
},
"privilege_DescribeAfter": {
"key": "PrivilegeAfter_10203",
"text": "背包容量+1"
"text": "背包容量+2"
},
"privilege_parameter": 1
},

View File

@ -0,0 +1,46 @@
[
{
"customer_id": 1,
"customer_type": 1,
"customer_speak": {
"key": "我需要{0}件【{1}】,如果你暂时没有备货的话我可以在这等一段时间,但不会太久。",
"text": ""
},
"goods": [],
"reword": [],
"weight": 4500
},
{
"customer_id": 2,
"customer_type": 2,
"customer_speak": {
"key": "我需要{0}件【{1}】,如果你暂时没有备货的话我可以在这等一段时间,但不会太久。",
"text": ""
},
"goods": [],
"reword": [],
"weight": 4500
},
{
"customer_id": 3,
"customer_type": 3,
"customer_speak": {
"key": "",
"text": ""
},
"goods": [],
"reword": [],
"weight": 500
},
{
"customer_id": 4,
"customer_type": 4,
"customer_speak": {
"key": "我有个宝贝,你要是喜欢的话便宜你点卖你。",
"text": ""
},
"goods": [],
"reword": [],
"weight": 500
}
]

View File

@ -0,0 +1,376 @@
[
{
"id": 1,
"proficiency": 20,
"reelId": 1,
"proficiency_lv": 1,
"title_text": {
"key": "1",
"text": "lv.{0}:熟练度{1}"
},
"content_text": {
"key": "1",
"text": "炉温消耗-{0}%"
},
"type": 1,
"value1": 100,
"value2": 0
},
{
"id": 2,
"proficiency": 40,
"reelId": 1,
"proficiency_lv": 2,
"title_text": {
"key": "1",
"text": "lv.{0}:熟练度{1}"
},
"content_text": {
"key": "2",
"text": "材料消耗减少"
},
"type": 2,
"value1": 10001,
"value2": -275
},
{
"id": 3,
"proficiency": 60,
"reelId": 1,
"proficiency_lv": 3,
"title_text": {
"key": "1",
"text": "lv.{0}:熟练度{1}"
},
"content_text": {
"key": "3",
"text": "解锁图纸【紫金雷神锤】"
},
"type": 3,
"value1": 2,
"value2": 0
},
{
"id": 4,
"proficiency": 80,
"reelId": 1,
"proficiency_lv": 4,
"title_text": {
"key": "1",
"text": "lv.{0}:熟练度{1}"
},
"content_text": {
"key": "4",
"text": "解锁套装"
},
"type": 4,
"value1": 5,
"value2": 0
},
{
"id": 5,
"proficiency": 100,
"reelId": 1,
"proficiency_lv": 5,
"title_text": {
"key": "1",
"text": "lv.{0}:熟练度{1}"
},
"content_text": {
"key": "5",
"text": "{0}级装备售价提高{1}%"
},
"type": 5,
"value1": 1,
"value2": 10
},
{
"id": 6,
"proficiency": 120,
"reelId": 0,
"proficiency_lv": 0,
"title_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "",
"text": ""
},
"type": 1,
"value1": 0,
"value2": 0
},
{
"id": 7,
"proficiency": 140,
"reelId": 0,
"proficiency_lv": 0,
"title_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "",
"text": ""
},
"type": 0,
"value1": 0,
"value2": 0
},
{
"id": 8,
"proficiency": 160,
"reelId": 0,
"proficiency_lv": 0,
"title_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "",
"text": ""
},
"type": 0,
"value1": 0,
"value2": 0
},
{
"id": 9,
"proficiency": 180,
"reelId": 0,
"proficiency_lv": 0,
"title_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "",
"text": ""
},
"type": 0,
"value1": 0,
"value2": 0
},
{
"id": 10,
"proficiency": 200,
"reelId": 0,
"proficiency_lv": 0,
"title_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "",
"text": ""
},
"type": 0,
"value1": 0,
"value2": 0
},
{
"id": 11,
"proficiency": 220,
"reelId": 0,
"proficiency_lv": 0,
"title_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "",
"text": ""
},
"type": 0,
"value1": 0,
"value2": 0
},
{
"id": 12,
"proficiency": 240,
"reelId": 0,
"proficiency_lv": 0,
"title_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "",
"text": ""
},
"type": 0,
"value1": 0,
"value2": 0
},
{
"id": 13,
"proficiency": 260,
"reelId": 0,
"proficiency_lv": 0,
"title_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "",
"text": ""
},
"type": 0,
"value1": 0,
"value2": 0
},
{
"id": 14,
"proficiency": 280,
"reelId": 0,
"proficiency_lv": 0,
"title_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "",
"text": ""
},
"type": 0,
"value1": 0,
"value2": 0
},
{
"id": 15,
"proficiency": 300,
"reelId": 0,
"proficiency_lv": 0,
"title_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "",
"text": ""
},
"type": 0,
"value1": 0,
"value2": 0
},
{
"id": 16,
"proficiency": 0,
"reelId": 0,
"proficiency_lv": 0,
"title_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "",
"text": ""
},
"type": 0,
"value1": 0,
"value2": 0
},
{
"id": 17,
"proficiency": 0,
"reelId": 0,
"proficiency_lv": 0,
"title_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "",
"text": ""
},
"type": 0,
"value1": 0,
"value2": 0
},
{
"id": 18,
"proficiency": 0,
"reelId": 0,
"proficiency_lv": 0,
"title_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "",
"text": ""
},
"type": 0,
"value1": 0,
"value2": 0
},
{
"id": 19,
"proficiency": 0,
"reelId": 0,
"proficiency_lv": 0,
"title_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "",
"text": ""
},
"type": 0,
"value1": 0,
"value2": 0
},
{
"id": 20,
"proficiency": 0,
"reelId": 0,
"proficiency_lv": 0,
"title_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "",
"text": ""
},
"type": 0,
"value1": 0,
"value2": 0
},
{
"id": 21,
"proficiency": 0,
"reelId": 0,
"proficiency_lv": 0,
"title_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "",
"text": ""
},
"type": 0,
"value1": 0,
"value2": 0
},
{
"id": 22,
"proficiency": 0,
"reelId": 0,
"proficiency_lv": 0,
"title_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "",
"text": ""
},
"type": 0,
"value1": 0,
"value2": 0
}
]

View File

@ -0,0 +1,262 @@
[
{
"star": 1,
"max_temperature": 2000,
"temperature_recovery": 60,
"up_material": [
{
"a": "item",
"t": "10001",
"n": 1
},
{
"a": "item",
"t": "10001",
"n": 2
},
{
"a": "item",
"t": "10001",
"n": 3
}
],
"title_text": {
"key": "1",
"text": "冶炼炉lv.1"
}
},
{
"star": 2,
"max_temperature": 2100,
"temperature_recovery": 63,
"up_material": [
{
"a": "item",
"t": "10001",
"n": 1
},
{
"a": "item",
"t": "10001",
"n": 2
},
{
"a": "item",
"t": "10001",
"n": 3
}
],
"title_text": {
"key": "2",
"text": "冶炼炉lv.2"
}
},
{
"star": 3,
"max_temperature": 2200,
"temperature_recovery": 66,
"up_material": [
{
"a": "item",
"t": "10001",
"n": 1
},
{
"a": "item",
"t": "10001",
"n": 2
},
{
"a": "item",
"t": "10001",
"n": 3
}
],
"title_text": {
"key": "3",
"text": "冶炼炉lv.3"
}
},
{
"star": 4,
"max_temperature": 2300,
"temperature_recovery": 69,
"up_material": [
{
"a": "item",
"t": "10001",
"n": 1
},
{
"a": "item",
"t": "10001",
"n": 2
},
{
"a": "item",
"t": "10001",
"n": 3
}
],
"title_text": {
"key": "4",
"text": "冶炼炉lv.4"
}
},
{
"star": 5,
"max_temperature": 2400,
"temperature_recovery": 72,
"up_material": [
{
"a": "item",
"t": "10001",
"n": 1
},
{
"a": "item",
"t": "10001",
"n": 2
},
{
"a": "item",
"t": "10001",
"n": 3
}
],
"title_text": {
"key": "5",
"text": "冶炼炉lv.5"
}
},
{
"star": 6,
"max_temperature": 2500,
"temperature_recovery": 75,
"up_material": [
{
"a": "item",
"t": "10001",
"n": 1
},
{
"a": "item",
"t": "10001",
"n": 2
},
{
"a": "item",
"t": "10001",
"n": 3
}
],
"title_text": {
"key": "6",
"text": "冶炼炉lv.6"
}
},
{
"star": 7,
"max_temperature": 2600,
"temperature_recovery": 78,
"up_material": [
{
"a": "item",
"t": "10001",
"n": 1
},
{
"a": "item",
"t": "10001",
"n": 2
},
{
"a": "item",
"t": "10001",
"n": 3
}
],
"title_text": {
"key": "7",
"text": "冶炼炉lv.7"
}
},
{
"star": 8,
"max_temperature": 2700,
"temperature_recovery": 81,
"up_material": [
{
"a": "item",
"t": "10001",
"n": 1
},
{
"a": "item",
"t": "10001",
"n": 2
},
{
"a": "item",
"t": "10001",
"n": 3
}
],
"title_text": {
"key": "8",
"text": "冶炼炉lv.8"
}
},
{
"star": 9,
"max_temperature": 2800,
"temperature_recovery": 84,
"up_material": [
{
"a": "item",
"t": "10001",
"n": 1
},
{
"a": "item",
"t": "10001",
"n": 2
},
{
"a": "item",
"t": "10001",
"n": 3
}
],
"title_text": {
"key": "9",
"text": "冶炼炉lv.9"
}
},
{
"star": 10,
"max_temperature": 3000,
"temperature_recovery": 90,
"up_material": [
{
"a": "item",
"t": "10001",
"n": 1
},
{
"a": "item",
"t": "10001",
"n": 2
},
{
"a": "item",
"t": "10001",
"n": 3
}
],
"title_text": {
"key": "10",
"text": "冶炼炉lv.10"
}
}
]

View File

@ -0,0 +1,962 @@
[
{
"id": 1,
"skill_type": 1,
"skill_lv": 1,
"preconditions": 0,
"up_material": [
{
"a": "item",
"t": "10001",
"n": 1
},
{
"a": "item",
"t": "10001",
"n": 2
},
{
"a": "item",
"t": "10001",
"n": 3
}
],
"name_text": {
"key": "1",
"text": "测量尺lv.{0}"
},
"content_text": {
"key": "1",
"text": "史诗品质概率提升{0}%"
},
"value": 5
},
{
"id": 2,
"skill_type": 1,
"skill_lv": 2,
"preconditions": 0,
"up_material": [
{
"a": "item",
"t": "10001",
"n": 1
},
{
"a": "item",
"t": "10001",
"n": 2
},
{
"a": "item",
"t": "10001",
"n": 3
}
],
"name_text": {
"key": "2",
"text": "测量尺lv.{0}"
},
"content_text": {
"key": "2",
"text": "史诗品质概率提升{0}%"
},
"value": 10
},
{
"id": 3,
"skill_type": 1,
"skill_lv": 3,
"preconditions": 0,
"up_material": [
{
"a": "item",
"t": "10001",
"n": 1
},
{
"a": "item",
"t": "10001",
"n": 2
},
{
"a": "item",
"t": "10001",
"n": 3
}
],
"name_text": {
"key": "3",
"text": "测量尺lv.{0}"
},
"content_text": {
"key": "3",
"text": "史诗品质概率提升{0}%"
},
"value": 15
},
{
"id": 4,
"skill_type": 1,
"skill_lv": 4,
"preconditions": 0,
"up_material": [
{
"a": "item",
"t": "10001",
"n": 1
},
{
"a": "item",
"t": "10001",
"n": 2
},
{
"a": "item",
"t": "10001",
"n": 3
}
],
"name_text": {
"key": "4",
"text": "测量尺lv.{0}"
},
"content_text": {
"key": "4",
"text": "史诗品质概率提升{0}%"
},
"value": 20
},
{
"id": 5,
"skill_type": 1,
"skill_lv": 5,
"preconditions": 0,
"up_material": [
{
"a": "item",
"t": "10001",
"n": 1
},
{
"a": "item",
"t": "10001",
"n": 2
},
{
"a": "item",
"t": "10001",
"n": 3
}
],
"name_text": {
"key": "5",
"text": "测量尺lv.{0}"
},
"content_text": {
"key": "5",
"text": "史诗品质概率提升{0}%"
},
"value": 25
},
{
"id": 6,
"skill_type": 1,
"skill_lv": 6,
"preconditions": 0,
"up_material": [
{
"a": "item",
"t": "10001",
"n": 1
},
{
"a": "item",
"t": "10001",
"n": 2
},
{
"a": "item",
"t": "10001",
"n": 3
}
],
"name_text": {
"key": "6",
"text": "测量尺lv.{0}"
},
"content_text": {
"key": "6",
"text": "史诗品质概率提升{0}%"
},
"value": 30
},
{
"id": 7,
"skill_type": 1,
"skill_lv": 7,
"preconditions": 0,
"up_material": [
{
"a": "item",
"t": "10001",
"n": 1
},
{
"a": "item",
"t": "10001",
"n": 2
},
{
"a": "item",
"t": "10001",
"n": 3
}
],
"name_text": {
"key": "7",
"text": "测量尺lv.{0}"
},
"content_text": {
"key": "7",
"text": "史诗品质概率提升{0}%"
},
"value": 35
},
{
"id": 8,
"skill_type": 1,
"skill_lv": 8,
"preconditions": 0,
"up_material": [
{
"a": "item",
"t": "10001",
"n": 1
},
{
"a": "item",
"t": "10001",
"n": 2
},
{
"a": "item",
"t": "10001",
"n": 3
}
],
"name_text": {
"key": "8",
"text": "测量尺lv.{0}"
},
"content_text": {
"key": "8",
"text": "史诗品质概率提升{0}%"
},
"value": 40
},
{
"id": 9,
"skill_type": 1,
"skill_lv": 9,
"preconditions": 0,
"up_material": [
{
"a": "item",
"t": "10001",
"n": 1
},
{
"a": "item",
"t": "10001",
"n": 2
},
{
"a": "item",
"t": "10001",
"n": 3
}
],
"name_text": {
"key": "9",
"text": "测量尺lv.{0}"
},
"content_text": {
"key": "9",
"text": "史诗品质概率提升{0}%"
},
"value": 45
},
{
"id": 10,
"skill_type": 1,
"skill_lv": 10,
"preconditions": 0,
"up_material": [
{
"a": "item",
"t": "10001",
"n": 1
},
{
"a": "item",
"t": "10001",
"n": 2
},
{
"a": "item",
"t": "10001",
"n": 3
}
],
"name_text": {
"key": "10",
"text": "测量尺lv.{0}"
},
"content_text": {
"key": "10",
"text": "史诗品质概率提升{0}%"
},
"value": 50
},
{
"id": 11,
"skill_type": 2,
"skill_lv": 1,
"preconditions": 5,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "11",
"text": "所有装备售价提升{0}%"
},
"value": 0
},
{
"id": 12,
"skill_type": 2,
"skill_lv": 2,
"preconditions": 15,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "12",
"text": "所有装备售价提升{0}%"
},
"value": 0
},
{
"id": 13,
"skill_type": 2,
"skill_lv": 3,
"preconditions": 15,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "13",
"text": "所有装备售价提升{0}%"
},
"value": 0
},
{
"id": 14,
"skill_type": 2,
"skill_lv": 4,
"preconditions": 15,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "14",
"text": "所有装备售价提升{0}%"
},
"value": 0
},
{
"id": 15,
"skill_type": 2,
"skill_lv": 5,
"preconditions": 15,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "15",
"text": "所有装备售价提升{0}%"
},
"value": 0
},
{
"id": 16,
"skill_type": 2,
"skill_lv": 6,
"preconditions": 15,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "16",
"text": "所有装备售价提升{0}%"
},
"value": 0
},
{
"id": 17,
"skill_type": 2,
"skill_lv": 7,
"preconditions": 15,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "17",
"text": "所有装备售价提升{0}%"
},
"value": 0
},
{
"id": 18,
"skill_type": 2,
"skill_lv": 8,
"preconditions": 15,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "18",
"text": "所有装备售价提升{0}%"
},
"value": 0
},
{
"id": 19,
"skill_type": 2,
"skill_lv": 9,
"preconditions": 15,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "19",
"text": "所有装备售价提升{0}%"
},
"value": 0
},
{
"id": 20,
"skill_type": 2,
"skill_lv": 10,
"preconditions": 15,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "20",
"text": "所有装备售价提升{0}%"
},
"value": 0
},
{
"id": 21,
"skill_type": 3,
"skill_lv": 1,
"preconditions": 25,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "21",
"text": "所有图纸炉温消耗减少{0}%"
},
"value": 0
},
{
"id": 22,
"skill_type": 3,
"skill_lv": 2,
"preconditions": 25,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "22",
"text": "所有图纸炉温消耗减少{0}%"
},
"value": 0
},
{
"id": 23,
"skill_type": 3,
"skill_lv": 3,
"preconditions": 25,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "23",
"text": "所有图纸炉温消耗减少{0}%"
},
"value": 0
},
{
"id": 24,
"skill_type": 3,
"skill_lv": 4,
"preconditions": 25,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "24",
"text": "所有图纸炉温消耗减少{0}%"
},
"value": 0
},
{
"id": 25,
"skill_type": 3,
"skill_lv": 5,
"preconditions": 25,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "25",
"text": "所有图纸炉温消耗减少{0}%"
},
"value": 0
},
{
"id": 26,
"skill_type": 3,
"skill_lv": 6,
"preconditions": 25,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "26",
"text": "所有图纸炉温消耗减少{0}%"
},
"value": 0
},
{
"id": 27,
"skill_type": 3,
"skill_lv": 7,
"preconditions": 25,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "27",
"text": "所有图纸炉温消耗减少{0}%"
},
"value": 0
},
{
"id": 28,
"skill_type": 3,
"skill_lv": 8,
"preconditions": 25,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "28",
"text": "所有图纸炉温消耗减少{0}%"
},
"value": 0
},
{
"id": 29,
"skill_type": 3,
"skill_lv": 9,
"preconditions": 25,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "29",
"text": "所有图纸炉温消耗减少{0}%"
},
"value": 0
},
{
"id": 30,
"skill_type": 3,
"skill_lv": 10,
"preconditions": 25,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "30",
"text": "所有图纸炉温消耗减少{0}%"
},
"value": 0
},
{
"id": 31,
"skill_type": 4,
"skill_lv": 1,
"preconditions": 35,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "31",
"text": "每日顾客数量提升至{0}人"
},
"value": 0
},
{
"id": 32,
"skill_type": 4,
"skill_lv": 2,
"preconditions": 35,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "32",
"text": "每日顾客数量提升至{0}人"
},
"value": 0
},
{
"id": 33,
"skill_type": 4,
"skill_lv": 3,
"preconditions": 35,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "33",
"text": "每日顾客数量提升至{0}人"
},
"value": 0
},
{
"id": 34,
"skill_type": 4,
"skill_lv": 4,
"preconditions": 35,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "34",
"text": "每日顾客数量提升至{0}人"
},
"value": 0
},
{
"id": 35,
"skill_type": 4,
"skill_lv": 5,
"preconditions": 35,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "35",
"text": "每日顾客数量提升至{0}人"
},
"value": 0
},
{
"id": 36,
"skill_type": 4,
"skill_lv": 6,
"preconditions": 35,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "36",
"text": "每日顾客数量提升至{0}人"
},
"value": 0
},
{
"id": 37,
"skill_type": 4,
"skill_lv": 7,
"preconditions": 35,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "37",
"text": "每日顾客数量提升至{0}人"
},
"value": 0
},
{
"id": 38,
"skill_type": 4,
"skill_lv": 8,
"preconditions": 35,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "38",
"text": "每日顾客数量提升至{0}人"
},
"value": 0
},
{
"id": 39,
"skill_type": 4,
"skill_lv": 9,
"preconditions": 35,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "39",
"text": "每日顾客数量提升至{0}人"
},
"value": 0
},
{
"id": 40,
"skill_type": 4,
"skill_lv": 10,
"preconditions": 35,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "40",
"text": "每日顾客数量提升至{0}人"
},
"value": 0
},
{
"id": 41,
"skill_type": 5,
"skill_lv": 1,
"preconditions": 45,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "41",
"text": "顾客购买装备数量上限提高至{0}件"
},
"value": 0
},
{
"id": 42,
"skill_type": 5,
"skill_lv": 2,
"preconditions": 45,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "42",
"text": "顾客购买装备数量上限提高至{0}件"
},
"value": 0
},
{
"id": 43,
"skill_type": 5,
"skill_lv": 3,
"preconditions": 45,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "43",
"text": "顾客购买装备数量上限提高至{0}件"
},
"value": 0
},
{
"id": 44,
"skill_type": 5,
"skill_lv": 4,
"preconditions": 45,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "44",
"text": "顾客购买装备数量上限提高至{0}件"
},
"value": 0
},
{
"id": 45,
"skill_type": 5,
"skill_lv": 5,
"preconditions": 45,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "45",
"text": "顾客购买装备数量上限提高至{0}件"
},
"value": 0
},
{
"id": 46,
"skill_type": 5,
"skill_lv": 6,
"preconditions": 45,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "46",
"text": "顾客购买装备数量上限提高至{0}件"
},
"value": 0
},
{
"id": 47,
"skill_type": 5,
"skill_lv": 7,
"preconditions": 45,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "47",
"text": "顾客购买装备数量上限提高至{0}件"
},
"value": 0
},
{
"id": 48,
"skill_type": 5,
"skill_lv": 8,
"preconditions": 45,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "48",
"text": "顾客购买装备数量上限提高至{0}件"
},
"value": 0
},
{
"id": 49,
"skill_type": 5,
"skill_lv": 9,
"preconditions": 45,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "49",
"text": "顾客购买装备数量上限提高至{0}件"
},
"value": 0
},
{
"id": 50,
"skill_type": 5,
"skill_lv": 10,
"preconditions": 45,
"up_material": [],
"name_text": {
"key": "",
"text": ""
},
"content_text": {
"key": "50",
"text": "顾客购买装备数量上限提高至{0}件"
},
"value": 0
}
]

View File

@ -22,7 +22,7 @@
"text": "在实战中学习能够影响攻击力和防御力的技能作用"
},
"tips": {
"key": "mainline_desc_10001",
"key": "mainline_desc_X",
"text": "在实战中学习能够影响攻击力和防御力的技能作用"
},
"task": [
@ -67,7 +67,7 @@
"text": "在实战中学习能够影响攻击力和防御力的技能作用"
},
"tips": {
"key": "mainline_desc_10001",
"key": "mainline_desc_X",
"text": "在实战中学习能够影响攻击力和防御力的技能作用"
},
"task": [
@ -112,7 +112,7 @@
"text": "在实战中学习能够影响攻击力和防御力的技能作用"
},
"tips": {
"key": "mainline_desc_10001",
"key": "mainline_desc_X",
"text": "在实战中学习能够影响攻击力和防御力的技能作用"
},
"task": [
@ -157,7 +157,7 @@
"text": "在实战中学习能够影响攻击力和防御力的技能作用"
},
"tips": {
"key": "mainline_desc_10001",
"key": "mainline_desc_X",
"text": "在实战中学习能够影响攻击力和防御力的技能作用"
},
"task": [
@ -202,7 +202,7 @@
"text": "在实战中学习能够影响攻击力和防御力的技能作用"
},
"tips": {
"key": "mainline_desc_10001",
"key": "mainline_desc_X",
"text": "在实战中学习能够影响攻击力和防御力的技能作用"
},
"task": [
@ -247,7 +247,7 @@
"text": "在实战中学习能够影响攻击力和防御力的技能作用"
},
"tips": {
"key": "mainline_desc_10001",
"key": "mainline_desc_X",
"text": "在实战中学习能够影响攻击力和防御力的技能作用"
},
"task": [
@ -292,7 +292,7 @@
"text": "在实战中学习能够影响攻击力和防御力的技能作用"
},
"tips": {
"key": "mainline_desc_10001",
"key": "mainline_desc_X",
"text": "在实战中学习能够影响攻击力和防御力的技能作用"
},
"task": [
@ -337,7 +337,7 @@
"text": "在实战中学习能够影响攻击力和防御力的技能作用"
},
"tips": {
"key": "mainline_desc_10001",
"key": "mainline_desc_X",
"text": "在实战中学习能够影响攻击力和防御力的技能作用"
},
"task": [
@ -382,7 +382,7 @@
"text": "在实战中学习能够影响攻击力和防御力的技能作用"
},
"tips": {
"key": "mainline_desc_10001",
"key": "mainline_desc_X",
"text": "在实战中学习能够影响攻击力和防御力的技能作用"
},
"task": [
@ -427,7 +427,7 @@
"text": "在实战中学习能够影响攻击力和防御力的技能作用"
},
"tips": {
"key": "mainline_desc_10001",
"key": "mainline_desc_X",
"text": "在实战中学习能够影响攻击力和防御力的技能作用"
},
"task": [
@ -472,7 +472,7 @@
"text": "在实战中学习能够影响攻击力和防御力的技能作用"
},
"tips": {
"key": "mainline_desc_10001",
"key": "mainline_desc_X",
"text": "在实战中学习能够影响攻击力和防御力的技能作用"
},
"task": [
@ -517,7 +517,7 @@
"text": "在实战中学习能够影响攻击力和防御力的技能作用"
},
"tips": {
"key": "mainline_desc_10001",
"key": "mainline_desc_X",
"text": "在实战中学习能够影响攻击力和防御力的技能作用"
},
"task": [
@ -562,7 +562,7 @@
"text": "在实战中学习能够影响攻击力和防御力的技能作用"
},
"tips": {
"key": "mainline_desc_10001",
"key": "mainline_desc_X",
"text": "在实战中学习能够影响攻击力和防御力的技能作用"
},
"task": [
@ -607,7 +607,7 @@
"text": "在实战中学习能够影响攻击力和防御力的技能作用"
},
"tips": {
"key": "mainline_desc_10001",
"key": "mainline_desc_X",
"text": "在实战中学习能够影响攻击力和防御力的技能作用"
},
"task": [
@ -652,7 +652,7 @@
"text": "在实战中学习能够影响攻击力和防御力的技能作用"
},
"tips": {
"key": "mainline_desc_10001",
"key": "mainline_desc_X",
"text": "在实战中学习能够影响攻击力和防御力的技能作用"
},
"task": [

View File

@ -1,110 +1,218 @@
[
{
"id": 1,
"goodsname": "物品1",
"goodsname": {
"key": "itemname_40002",
"text": "物品1"
},
"goodsfor": 1,
"goodsinfor": "物品1货品信息",
"goodsinfor": {
"key": "itemname_40002",
"text": "物品1货品信息"
},
"goodsicon": "clmsg_ll_01",
"goodsprice": 2000,
"star_money": 12000,
"uptext": "听说最近黑色峡谷的蘑菇供应不求,如果碰上,你或许可以囤积一些",
"suptext": "我有一个好消息告诉你,咱们即将赚大发了,在下一个地区!",
"uptext": {
"key": "hearsay1",
"text": "听说最近黑色峡谷的蘑菇供应不求,如果碰上,你或许可以囤积一些"
},
"suptext": {
"key": "suphearsay",
"text": "我有一个好消息告诉你,咱们即将赚大发了,在下一个地区!"
},
"max": 40
},
{
"id": 2,
"goodsname": "物品2",
"goodsname": {
"key": "itemname_40002",
"text": "物品2"
},
"goodsfor": 1,
"goodsinfor": "物品2货品信息",
"goodsinfor": {
"key": "itemname_40002",
"text": "物品2货品信息"
},
"goodsicon": "clmsg_ll_02",
"goodsprice": 2000,
"star_money": 13000,
"uptext": "嘿,你有听说过老人与海的故事吗,没听过也不打紧,一些贵族正在收购一批海鱼,价格都已经被炒上天了,留意这个发财的机会,兄弟。",
"suptext": "我有一个好消息告诉你,咱们即将赚大发了,在下一个地区!",
"uptext": {
"key": "hearsay2",
"text": "嘿,你有听说过老人与海的故事吗,没听过也不打紧,一些贵族正在收购一批海鱼,价格都已经被炒上天了,留意这个发财的机会,兄弟。"
},
"suptext": {
"key": "suphearsay",
"text": "我有一个好消息告诉你,咱们即将赚大发了,在下一个地区!"
},
"max": 40
},
{
"id": 3,
"goodsname": "物品3",
"goodsname": {
"key": "itemname_40002",
"text": "物品3"
},
"goodsfor": 1,
"goodsinfor": "物品3货品信息",
"goodsinfor": {
"key": "itemname_40002",
"text": "物品3货品信息"
},
"goodsicon": "clmsg_ll_03",
"goodsprice": 2000,
"star_money": 14000,
"uptext": "没人会拒绝寻香草的诱惑,尤其是商人,你说对吧。我有一个老主顾,他的孩子满月,现在正需要很多这个玩意,记得留心一下哦~",
"suptext": "我有一个好消息告诉你,咱们即将赚大发了,在下一个地区!",
"uptext": {
"key": "hearsay3",
"text": "没人会拒绝寻香草的诱惑,尤其是商人,你说对吧。我有一个老主顾,他的孩子满月,现在正需要很多这个玩意,记得留心一下哦~"
},
"suptext": {
"key": "suphearsay",
"text": "我有一个好消息告诉你,咱们即将赚大发了,在下一个地区!"
},
"max": 40
},
{
"id": 4,
"goodsname": "物品4",
"goodsname": {
"key": "itemname_40002",
"text": "物品4"
},
"goodsfor": 2,
"goodsinfor": "物品4货品信息",
"goodsinfor": {
"key": "itemname_40002",
"text": "物品4货品信息"
},
"goodsicon": "clmsg_ll_04",
"goodsprice": 2000,
"star_money": 11000,
"uptext": "好吧,你消息你运气来了,神龙大年久失修,正需要一批上好的木材,而你的下一个目的地......啧啧啧,有时候我真羡慕你的运气。",
"suptext": "我有一个好消息告诉你,咱们即将赚大发了,在下一个地区!",
"uptext": {
"key": "hearsay4",
"text": "好吧,你消息你运气来了,神龙大年久失修,正需要一批上好的木材,而你的下一个目的地......啧啧啧,有时候我真羡慕你的运气。"
},
"suptext": {
"key": "suphearsay",
"text": "我有一个好消息告诉你,咱们即将赚大发了,在下一个地区!"
},
"max": 40
},
{
"id": 5,
"goodsname": "物品5",
"goodsname": {
"key": "itemname_40002",
"text": "物品5"
},
"goodsfor": 2,
"goodsinfor": "物品5货品信息",
"goodsinfor": {
"key": "itemname_40002",
"text": "物品5货品信息"
},
"goodsicon": "clmsg_ll_05",
"goodsprice": 2000,
"star_money": 1000,
"uptext": "这次是我的私人消息,听说阿宝的某一个师兄越狱了,正在到处进行破坏,各地的村民都在收购铁器以备不时之需。我知道这很缺德,但咱们可是商人,赚谁的钱不是赚?",
"suptext": "我有一个好消息告诉你,咱们即将赚大发了,在下一个地区!",
"uptext": {
"key": "hearsay5",
"text": "这次是我的私人消息,听说阿宝的某一个师兄越狱了,正在到处进行破坏,各地的村民都在收购铁器以备不时之需。我知道这很缺德,但咱们可是商人,赚谁的钱不是赚?"
},
"suptext": {
"key": "suphearsay",
"text": "我有一个好消息告诉你,咱们即将赚大发了,在下一个地区!"
},
"max": 30
},
{
"id": 6,
"goodsname": "物品6",
"goodsname": {
"key": "itemname_40002",
"text": "物品6"
},
"goodsfor": 2,
"goodsinfor": "物品6货品信息",
"goodsinfor": {
"key": "itemname_40002",
"text": "物品6货品信息"
},
"goodsicon": "wp_icon_0003",
"goodsprice": 2000,
"star_money": 2000,
"uptext": "一根上号的雪茄,一杯威士忌,还有一把趁手的兵器,这或许就是男人最大的浪漫了。那帮维京人马上就要开始捕羊大赛了,你猜猜他们现在最需要什么?那可是场庆典,你懂得~",
"suptext": "我有一个好消息告诉你,咱们即将赚大发了,在下一个地区!",
"uptext": {
"key": "hearsay6",
"text": "一根上号的雪茄,一杯威士忌,还有一把趁手的兵器,这或许就是男人最大的浪漫了。那帮维京人马上就要开始捕羊大赛了,你猜猜他们现在最需要什么?那可是场庆典,你懂得~"
},
"suptext": {
"key": "suphearsay",
"text": "我有一个好消息告诉你,咱们即将赚大发了,在下一个地区!"
},
"max": 30
},
{
"id": 7,
"goodsname": "物品7",
"goodsname": {
"key": "itemname_40002",
"text": "物品7"
},
"goodsfor": 3,
"goodsinfor": "物品7货品信息",
"goodsinfor": {
"key": "itemname_40002",
"text": "物品7货品信息"
},
"goodsicon": "wp_icon_10002",
"goodsprice": 2000,
"star_money": 1000,
"uptext": "听说了吗,维京人的山谷总是会传来恐怖的怒吼,那嗓门,一听就知道肯定是一个大家伙,现在我认识的很多部落的族长都在收购武器,你知道该怎么做,不是吗?",
"suptext": "我有一个好消息告诉你,咱们即将赚大发了,在下一个地区!",
"uptext": {
"key": "hearsay7",
"text": "听说了吗,维京人的山谷总是会传来恐怖的怒吼,那嗓门,一听就知道肯定是一个大家伙,现在我认识的很多部落的族长都在收购武器,你知道该怎么做,不是吗?"
},
"suptext": {
"key": "suphearsay",
"text": "我有一个好消息告诉你,咱们即将赚大发了,在下一个地区!"
},
"max": 30
},
{
"id": 8,
"goodsname": "物品8",
"goodsname": {
"key": "itemname_40002",
"text": "物品8"
},
"goodsfor": 3,
"goodsinfor": "物品8货品信息",
"goodsinfor": {
"key": "itemname_40002",
"text": "物品8货品信息"
},
"goodsicon": "wp_icon_10012",
"goodsprice": 2000,
"star_money": 3000,
"uptext": "怪物史莱克你听说过吗,最近有消息他要带着他的公主一起来中轴城,并决定举办一场庆典,虽然我不知道他哪儿来的钱办庆典,但对于我们这种优良的商人来说,庆典就意味着可以赚大把的钱,你知道该准备什么了吗?",
"suptext": "我有一个好消息告诉你,咱们即将赚大发了,在下一个地区!",
"uptext": {
"key": "hearsay8",
"text": "怪物史莱克你听说过吗,最近有消息他要带着他的公主一起来中轴城,并决定举办一场庆典,虽然我不知道他哪儿来的钱办庆典,但对于我们这种优良的商人来说,庆典就意味着可以赚大把的钱,你知道该准备什么了吗?"
},
"suptext": {
"key": "suphearsay",
"text": "我有一个好消息告诉你,咱们即将赚大发了,在下一个地区!"
},
"max": 30
},
{
"id": 9,
"goodsname": "物品9",
"goodsname": {
"key": "itemname_40002",
"text": "物品9"
},
"goodsfor": 3,
"goodsinfor": "物品9货品信息",
"goodsinfor": {
"key": "itemname_40002",
"text": "物品9货品信息"
},
"goodsicon": "wp_icon_10014",
"goodsprice": 2000,
"star_money": 4000,
"uptext": "我很喜欢完游戏,因为我总能在里面不劳而获的得到诸多宝藏,你听说了吗,最近一个神秘的洞穴出现在丛林区,而当地的那些原始人,可是从中捞了不少宝贝,我们说不定可以从那些原始人手里捞上一笔,然后去中轴城高价卖出。",
"suptext": "我有一个好消息告诉你,咱们即将赚大发了,在下一个地区!",
"uptext": {
"key": "hearsay9",
"text": "我很喜欢完游戏,因为我总能在里面不劳而获的得到诸多宝藏,你听说了吗,最近一个神秘的洞穴出现在丛林区,而当地的那些原始人,可是从中捞了不少宝贝,我们说不定可以从那些原始人手里捞上一笔,然后去中轴城高价卖出。"
},
"suptext": {
"key": "suphearsay",
"text": "我有一个好消息告诉你,咱们即将赚大发了,在下一个地区!"
},
"max": 30
}
]

View File

@ -7,6 +7,18 @@
"group": 101,
"des": 3,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "旧时光"
},
"task_name": {
"key": "story_80",
"text": "阿宝学功夫"
},
"task_display": {
"key": "story_80",
"text": "新剧情"
},
"npc": [
"scenes_boundary_01",
"旧时光1-指挥部杰克",
@ -29,6 +41,18 @@
"group": 101,
"des": 3,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "旧时光"
},
"task_name": {
"key": "story_80",
"text": "阿宝学功夫"
},
"task_display": {
"key": "story_80",
"text": "新剧情"
},
"npc": [
"display_platform_04_02",
"旧时光1-住所主角",
@ -51,6 +75,18 @@
"group": 101,
"des": 3,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "旧时光"
},
"task_name": {
"key": "story_80",
"text": "阿宝学功夫"
},
"task_display": {
"key": "story_80",
"text": "新剧情"
},
"npc": [
"display_platform_04_02",
"旧时光1-住所平先生",
@ -73,6 +109,18 @@
"group": 101,
"des": 3,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "旧时光"
},
"task_name": {
"key": "story_80",
"text": "阿宝学功夫"
},
"task_display": {
"key": "story_80",
"text": "新剧情"
},
"npc": [
"display_platform_04_02",
"旧时光1-住所平先生",
@ -95,6 +143,18 @@
"group": 101,
"des": 3,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "旧时光"
},
"task_name": {
"key": "story_80",
"text": "阿宝学功夫"
},
"task_display": {
"key": "story_80",
"text": "新剧情"
},
"npc": [
"scenes_boundary_01_recordtask",
"旧时光1-指挥部阿宝",
@ -117,6 +177,18 @@
"group": 101,
"des": 3,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "旧时光"
},
"task_name": {
"key": "story_80",
"text": "阿宝学功夫"
},
"task_display": {
"key": "story_80",
"text": "新剧情"
},
"npc": [
"scenes_boundary_01_recordtask",
"旧时光1-指挥部杰克",
@ -139,6 +211,18 @@
"group": 101,
"des": 3,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "旧时光"
},
"task_name": {
"key": "story_80",
"text": "阿宝学功夫"
},
"task_display": {
"key": "story_80",
"text": "新剧情"
},
"npc": [
"dreamwork_jungle_playershow_01",
"旧时光1-森林小道阿宝",
@ -161,6 +245,18 @@
"group": 101,
"des": 3,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "旧时光"
},
"task_name": {
"key": "story_80",
"text": "阿宝学功夫"
},
"task_display": {
"key": "story_80",
"text": "新剧情"
},
"npc": [
"dreamwork_jungle_playershow_01",
"旧时光1-森林小道 阿宝",
@ -183,6 +279,18 @@
"group": 101,
"des": 3,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "旧时光"
},
"task_name": {
"key": "story_80",
"text": "阿宝学功夫"
},
"task_display": {
"key": "story_80",
"text": "新剧情"
},
"npc": [
"scenesfight_03_02",
"旧时光1-竹林豺狼小怪",
@ -205,6 +313,18 @@
"group": 101,
"des": 3,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "旧时光"
},
"task_name": {
"key": "story_80",
"text": "阿宝学功夫"
},
"task_display": {
"key": "story_80",
"text": "新剧情"
},
"npc": [
"scenesfight_03_02",
"旧时光1-竹林阿宝",
@ -227,6 +347,18 @@
"group": 101,
"des": 3,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "旧时光"
},
"task_name": {
"key": "story_80",
"text": "阿宝学功夫"
},
"task_display": {
"key": "story_80",
"text": "新剧情"
},
"npc": [
"scenes_boundary_01_recordtask",
"旧时光1-指挥部杰克",
@ -249,6 +381,18 @@
"group": 2,
"des": 2,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "新手引导"
},
"task_name": {
"key": "story_80",
"text": "新手引导"
},
"task_display": {
"key": "story_80",
"text": "新手引导"
},
"npc": [
"scenes_boundary_01_recordtask",
"0新手引导-杰克-中轴城常驻待机",
@ -271,6 +415,18 @@
"group": 2,
"des": 2,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "新手引导"
},
"task_name": {
"key": "story_80",
"text": "新手引导"
},
"task_display": {
"key": "story_80",
"text": "新手引导"
},
"npc": [
"scenes_boundary_01_recordtask",
"0新手引导-杰克-中轴城常驻待机",
@ -293,6 +449,18 @@
"group": 2,
"des": 2,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "新手引导"
},
"task_name": {
"key": "story_80",
"text": "新手引导"
},
"task_display": {
"key": "story_80",
"text": "新手引导"
},
"npc": [
"scenes_boundary_01_recordtask",
"1.新手引导-花朵-中轴城",
@ -315,6 +483,18 @@
"group": 2,
"des": 2,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "新手引导"
},
"task_name": {
"key": "story_80",
"text": "新手引导"
},
"task_display": {
"key": "story_80",
"text": "新手引导"
},
"npc": [
"scenes_boundary_01_recordtask",
"1.新手引导-花朵-中轴城",
@ -337,6 +517,18 @@
"group": 2,
"des": 2,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "新手引导"
},
"task_name": {
"key": "story_80",
"text": "新手引导"
},
"task_display": {
"key": "story_80",
"text": "新手引导"
},
"npc": [
"scenes_boundary_01_recordtask",
"0新手引导-杰克-中轴城常驻待机",
@ -359,6 +551,18 @@
"group": 2,
"des": 2,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "新手引导"
},
"task_name": {
"key": "story_80",
"text": "新手引导"
},
"task_display": {
"key": "story_80",
"text": "新手引导"
},
"npc": [
"scenes_boundary_01_recordtask",
"3新手引导-波比-正常待机-中轴城",
@ -381,6 +585,18 @@
"group": 2,
"des": 2,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "新手引导"
},
"task_name": {
"key": "story_80",
"text": "新手引导"
},
"task_display": {
"key": "story_80",
"text": "新手引导"
},
"npc": [
"scenes_boundary_01_recordtask",
"2新手引导-邦尼兔-正常待机-中轴城",
@ -409,6 +625,18 @@
"group": 2,
"des": 2,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "新手引导"
},
"task_name": {
"key": "story_80",
"text": "新手引导"
},
"task_display": {
"key": "story_80",
"text": "新手引导"
},
"npc": [
"scenes_boundary_01_recordtask",
"新手引导-波比-右屏圣树1",
@ -431,6 +659,18 @@
"group": 2,
"des": 2,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "新手引导"
},
"task_name": {
"key": "story_80",
"text": "新手引导"
},
"task_display": {
"key": "story_80",
"text": "新手引导"
},
"npc": [
"scenes_kongfupanda_01",
"新手引导-波比-右屏圣树2",
@ -453,6 +693,18 @@
"group": 2,
"des": 2,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "新手引导"
},
"task_name": {
"key": "story_80",
"text": "新手引导"
},
"task_display": {
"key": "story_80",
"text": "新手引导"
},
"npc": [
"scenes_kongfupanda_01",
"新手引导-豺狼人-右屏圣树",
@ -481,6 +733,18 @@
"group": 2,
"des": 2,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "新手引导"
},
"task_name": {
"key": "story_80",
"text": "新手引导"
},
"task_display": {
"key": "story_80",
"text": "新手引导"
},
"npc": [
"scenes_kongfupanda_01",
"新手引导-豺狼人-右屏圣树",
@ -503,6 +767,18 @@
"group": 2,
"des": 2,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "新手引导"
},
"task_name": {
"key": "story_80",
"text": "新手引导"
},
"task_display": {
"key": "story_80",
"text": "新手引导"
},
"npc": [
"scenes_kongfupanda_01",
"新手引导-圣树下的黑洞",
@ -525,6 +801,18 @@
"group": 2,
"des": 2,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "新手引导"
},
"task_name": {
"key": "story_80",
"text": "新手引导"
},
"task_display": {
"key": "story_80",
"text": "新手引导"
},
"npc": [
"scenes_kongfupanda_01",
"新手引导-波比-犀牛守卫",
@ -547,6 +835,18 @@
"group": 2,
"des": 2,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "新手引导"
},
"task_name": {
"key": "story_80",
"text": "新手引导"
},
"task_display": {
"key": "story_80",
"text": "新手引导"
},
"npc": [
"scenes_kongfupanda_01",
"新手引导-波比-右屏圣树3",
@ -569,6 +869,18 @@
"group": 2,
"des": 2,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "新手引导"
},
"task_name": {
"key": "story_80",
"text": "新手引导"
},
"task_display": {
"key": "story_80",
"text": "新手引导"
},
"npc": [
"scenes_kongfupanda_01",
"新手引导-波比-右屏圣树3",
@ -591,6 +903,18 @@
"group": 2,
"des": 2,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "新手引导"
},
"task_name": {
"key": "story_80",
"text": "新手引导"
},
"task_display": {
"key": "story_80",
"text": "新手引导"
},
"npc": [
"scenes_boundary_01_recordtask",
"0新手引导-杰克-中轴城常驻待机",
@ -613,6 +937,18 @@
"group": 2,
"des": 2,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "新手引导"
},
"task_name": {
"key": "story_80",
"text": "新手引导"
},
"task_display": {
"key": "story_80",
"text": "新手引导"
},
"npc": [
"scenes_boundary_01_recordtask",
"0新手引导-杰克-中轴城常驻待机",
@ -635,6 +971,18 @@
"group": 2,
"des": 2,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "新手引导"
},
"task_name": {
"key": "story_80",
"text": "新手引导"
},
"task_display": {
"key": "story_80",
"text": "新手引导"
},
"npc": [
"scenes_boundary_01_recordtask",
"0新手引导-杰克-中轴城常驻待机",
@ -657,6 +1005,18 @@
"group": 2,
"des": 2,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "新手引导"
},
"task_name": {
"key": "story_80",
"text": "新手引导"
},
"task_display": {
"key": "story_80",
"text": "新手引导"
},
"npc": [
"scenes_boundary_01_recordtask",
"0新手引导-杰克-中轴城常驻待机",
@ -685,6 +1045,18 @@
"group": 2,
"des": 2,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "新手引导"
},
"task_name": {
"key": "story_80",
"text": "新手引导"
},
"task_display": {
"key": "story_80",
"text": "新手引导"
},
"npc": [
"scenes_smithy_01",
"暴夫纳特铁匠铺",
@ -707,6 +1079,18 @@
"group": 2,
"des": 2,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "新手引导"
},
"task_name": {
"key": "story_80",
"text": "新手引导"
},
"task_display": {
"key": "story_80",
"text": "新手引导"
},
"npc": [
"scenes_smithy_01",
"暴夫纳特铁匠铺",
@ -729,6 +1113,18 @@
"group": 2,
"des": 2,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "新手引导"
},
"task_name": {
"key": "story_80",
"text": "新手引导"
},
"task_display": {
"key": "story_80",
"text": "新手引导"
},
"npc": [
"scenes_boundary_01_recordtask",
"0新手引导-杰克-中轴城常驻待机",
@ -751,6 +1147,18 @@
"group": 2,
"des": 2,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "新手引导"
},
"task_name": {
"key": "story_80",
"text": "新手引导"
},
"task_display": {
"key": "story_80",
"text": "新手引导"
},
"npc": [
"scenes_boundary_01_recordtask",
"0新手引导-杰克-中轴城常驻待机",
@ -773,6 +1181,18 @@
"group": 2,
"des": 2,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "新手引导"
},
"task_name": {
"key": "story_80",
"text": "新手引导"
},
"task_display": {
"key": "story_80",
"text": "新手引导"
},
"npc": [
"scenes_boundary_01_recordtask",
"0新手引导-杰克-中轴城常驻待机",
@ -795,6 +1215,18 @@
"group": 2,
"des": 2,
"icon": "",
"task_Tname": {
"key": "story_80",
"text": "新手引导"
},
"task_name": {
"key": "story_80",
"text": "新手引导"
},
"task_display": {
"key": "story_80",
"text": "新手引导"
},
"npc": [
"scenes_boundary_01_recordtask",
"0新手引导-杰克-中轴城常驻待机",

View File

@ -126,6 +126,26 @@ func main() {
})
})
// 同步配置
// 接受客户端上传的文件覆盖服务器上文件
r.POST("/sync", func(c *gin.Context) {
f, err := c.FormFile("file")
if err != nil {
log.Print(err)
return
}
if f.Filename!="config.json"{
log.Print("上传的配置文件不是config.json")
return
}
dst := path.Join(*wwwDir, f.Filename)
err = c.SaveUploadedFile(f, dst)
if err != nil {
log.Print(err)
return
}
})
err := r.Run("0.0.0.0:" + *port)
if err != nil {
log.Fatal(err)

View File

@ -4,5 +4,5 @@ Website = "http://legu.cc"
Icon = "app.png"
Name = "RobotGUI"
ID = "cc.legu.app"
Version = "1.2.9"
Build = 39
Version = "1.2.10"
Build = 40

View File

@ -1,42 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
type GameTaskCond struct {
_dataMap map[int32]*GameTaskCondData
_dataList []*GameTaskCondData
}
func NewGameTaskCond(_buf []map[string]interface{}) (*GameTaskCond, error) {
_dataList := make([]*GameTaskCondData, 0, len(_buf))
dataMap := make(map[int32]*GameTaskCondData)
for _, _ele_ := range _buf {
if _v, err2 := DeserializeGameTaskCondData(_ele_); err2 != nil {
return nil, err2
} else {
_dataList = append(_dataList, _v)
dataMap[_v.Id] = _v
}
}
return &GameTaskCond{_dataList:_dataList, _dataMap:dataMap}, nil
}
func (table *GameTaskCond) GetDataMap() map[int32]*GameTaskCondData {
return table._dataMap
}
func (table *GameTaskCond) GetDataList() []*GameTaskCondData {
return table._dataList
}
func (table *GameTaskCond) Get(key int32) *GameTaskCondData {
return table._dataMap[key]
}

View File

@ -1,47 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
import "errors"
type GameTaskCondData struct {
Id int32
Type int32
Data1 int32
Data2 int32
Data3 int32
Data4 int32
Data5 int32
}
const TypeId_GameTaskCondData = -1719868659
func (*GameTaskCondData) GetTypeId() int32 {
return -1719868659
}
func (_v *GameTaskCondData)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["type"].(float64); !_ok_ { err = errors.New("type error"); return }; _v.Type = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["data1"].(float64); !_ok_ { err = errors.New("data1 error"); return }; _v.Data1 = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["data2"].(float64); !_ok_ { err = errors.New("data2 error"); return }; _v.Data2 = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["data3"].(float64); !_ok_ { err = errors.New("data3 error"); return }; _v.Data3 = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["data4"].(float64); !_ok_ { err = errors.New("data4 error"); return }; _v.Data4 = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["data5"].(float64); !_ok_ { err = errors.New("data5 error"); return }; _v.Data5 = int32(_tempNum_) }
return
}
func DeserializeGameTaskCondData(_buf map[string]interface{}) (*GameTaskCondData, error) {
v := &GameTaskCondData{}
if err := v.Deserialize(_buf); err == nil {
return v, nil
} else {
return nil, err
}
}

View File

@ -1,42 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
type GameTestFlow struct {
_dataMap map[int32]*GameTestFlowData
_dataList []*GameTestFlowData
}
func NewGameTestFlow(_buf []map[string]interface{}) (*GameTestFlow, error) {
_dataList := make([]*GameTestFlowData, 0, len(_buf))
dataMap := make(map[int32]*GameTestFlowData)
for _, _ele_ := range _buf {
if _v, err2 := DeserializeGameTestFlowData(_ele_); err2 != nil {
return nil, err2
} else {
_dataList = append(_dataList, _v)
dataMap[_v.Id] = _v
}
}
return &GameTestFlow{_dataList:_dataList, _dataMap:dataMap}, nil
}
func (table *GameTestFlow) GetDataMap() map[int32]*GameTestFlowData {
return table._dataMap
}
func (table *GameTestFlow) GetDataList() []*GameTestFlowData {
return table._dataList
}
func (table *GameTestFlow) Get(key int32) *GameTestFlowData {
return table._dataMap[key]
}

View File

@ -1,41 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
import "errors"
type GameTestFlowData struct {
Id int32
Msg string
Route string
Params string
}
const TypeId_GameTestFlowData = -1087831770
func (*GameTestFlowData) GetTypeId() int32 {
return -1087831770
}
func (_v *GameTestFlowData)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; if _v.Msg, _ok_ = _buf["msg"].(string); !_ok_ { err = errors.New("msg error"); return } }
{ var _ok_ bool; if _v.Route, _ok_ = _buf["route"].(string); !_ok_ { err = errors.New("route error"); return } }
{ var _ok_ bool; if _v.Params, _ok_ = _buf["params"].(string); !_ok_ { err = errors.New("params error"); return } }
return
}
func DeserializeGameTestFlowData(_buf map[string]interface{}) (*GameTestFlowData, error) {
v := &GameTestFlowData{}
if err := v.Deserialize(_buf); err == nil {
return v, nil
} else {
return nil, err
}
}

View File

@ -1,38 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
type JsonLoader func(string) ([]map[string]interface{}, error)
type Tables struct {
TestFlow *GameTestFlow
TaskCond *GameTaskCond
}
func NewTables(loader JsonLoader) (*Tables, error) {
var err error
var buf []map[string]interface{}
tables := &Tables{}
if buf, err = loader("game_testflow"); err != nil {
return nil, err
}
if tables.TestFlow, err = NewGameTestFlow(buf); err != nil {
return nil, err
}
if buf, err = loader("game_taskcond"); err != nil {
return nil, err
}
if tables.TaskCond, err = NewGameTaskCond(buf); err != nil {
return nil, err
}
return tables, nil
}

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +0,0 @@
[
{
"id": 1,
"msg": "功能列表",
"route": "sys.funclist",
"params": "{}"
}
]

View File

@ -98,6 +98,7 @@ const (
TOOLBAR_AUTO = "自动化"
TOOLBAR_PING = "端口扫描"
TOOLBAR_MGODB = "MongoDB"
TOOLBAR_VALID = "配置校验"
TOOLBAR_PERF_TIP = "开始"
TOOLBAR_PERF_CONF = "配置"

View File

@ -2,7 +2,7 @@ package storage
import "go_dreamfactory/pb"
//默认配置
// 默认配置
func NewDefaultConfig() *Config {
return &Config{
Pressure: PressureConfig{
@ -40,6 +40,7 @@ type Config struct {
Servers []*ServerConfig `json:"servers,omitempty"` //区服配置
MgoDB *MgoDB `json:"mgoDB,omitempty"` //MongoDB配置
ServiceDBInfo *pb.ServiceDBInfo `json:"serviceDBInfo,omitempty"` //
JsonDir string `json:"jsonDir,omitempty"` //json配置目录
}
type MgoDB struct {
@ -51,14 +52,14 @@ type MgoDB struct {
Database string `json:"database,omitempty"`
}
//压测配置
// 压测配置
type PressureConfig struct {
TimeoutMs int32 `json:"timeout,omitempty"` //超时时间 毫秒
Concurrency int32 `json:"concurrency,omitempty"` //并发量
DurationS int32 `json:"duration,omitempty"` //持续时间 秒
}
//luban
// luban
type LubanConfig struct {
ServerAddr string
ProjectDir string

View File

@ -33,7 +33,6 @@ var (
logger *logrus.Logger
)
//
func init() {
_ = os.Setenv("FYNE_SCALE", "0.9")
var err error
@ -162,7 +161,6 @@ func setupLogger() (err error) {
// check version
func checkVersion(app fyne.App, parent fyne.Window) {
logrus.Debug("check version")
b, err := connService.HttpConnect("http://10.0.0.9:8080/" + "version")
if err != nil {
dialog.ShowError(errors.New("版本检查:"+err.Error()), parent)

File diff suppressed because one or more lines are too long

BIN
cmd/v2/theme/icon/excel.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@ -60,6 +60,23 @@ func (at *appContainer) openApp(app appInterface) error {
return nil
}
func (at *appContainer) openWelcome() (string, error) {
var firstTab *container.TabItem
app := &appWelcome{}
if err := at.initApp(app); err != nil {
return app.GetAppName(), err
}
tab := app.GetTabItem()
at.Append(tab)
if firstTab == nil {
firstTab = tab
}
if firstTab != nil {
at.Select(firstTab)
}
return "", nil
}
// open default app
func (at *appContainer) openDefaultApp(appName string) (string, error) {
var firstTab *container.TabItem

View File

@ -27,21 +27,14 @@ var (
}
toolRegister = []appInterface{
&appWelcome{},
// &appWelcome{},
&appGen{},
&appPbGen{},
&appLock{},
&appTerm{},
&appPing{},
&appMgo{},
}
perfRegister = []appInterface{
&perfWelcome{},
&perfConf{},
&perfPb{},
&perfResult{},
&perfChoose{},
&appConfigValid{},
}
)

View File

@ -1,18 +0,0 @@
package ui
import (
"fmt"
cfg "go_dreamfactory/cmd/v2/configure/structs"
"go_dreamfactory/cmd/v2/lib/common"
"testing"
)
func TestGjson(t *testing.T) {
if tables, err := cfg.NewTables(common.Loader); err != nil {
println(err.Error())
} else {
for _, v := range tables.TestFlow.GetDataList() {
fmt.Println(v.Msg)
}
}
}

View File

@ -1,224 +0,0 @@
package ui
import (
"go_dreamfactory/cmd/v2/lib"
"go_dreamfactory/cmd/v2/lib/common"
"go_dreamfactory/cmd/v2/lib/storage"
"go_dreamfactory/cmd/v2/service"
"go_dreamfactory/cmd/v2/service/observer"
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"time"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/layout"
"fyne.io/fyne/v2/theme"
"fyne.io/fyne/v2/widget"
"github.com/Pallinder/go-randomdata"
"github.com/sirupsen/logrus"
"google.golang.org/protobuf/proto"
)
type perfChoose struct {
appAdapter
obs observer.Observer
conf *storage.Config
binduids []string //账号
handler lib.Handler
}
func (app *perfChoose) LazyInit(ptService service.PttService, obs observer.Observer) error {
app.obs = obs
app.conf = perfWin.UIImpl.config
app.tabItem = container.NewTabItemWithIcon(common.TOOLBAR_PERF_CHOOSE, theme.ContentCopyIcon(), nil)
content := container.NewMax()
content.Objects = []fyne.CanvasObject{}
loginTestBtn := widget.NewButton("登陆(注册)", nil)
loginTestBtn.OnTapped = func() {
closeApp3(perfWin.tabs, common.TOOLBAR_PERF_CHOOSE)
openApp3(perfWin.tabs, common.TOOLBAR_PERF_RES)
var err error
app.handler, err = service.NewWsCli(app.conf.WsAddr, 2*time.Second)
if err != nil {
panic(err)
}
userCount := app.conf.UserCount
for i := int32(0); i < userCount; i++ {
account := randomdata.SillyName()
app.binduids = append(app.binduids, account)
// 登录
rqLogin := ReqParams{
Sid: app.conf.SId,
Account: account,
PbReq: &pb.UserLoginReq{Sid: app.conf.SId, Account: account},
MainType: "user",
SubType: "login",
}
b, err := app.buildReq(rqLogin)
if err != nil {
logrus.Error(err)
return
}
app.handler.SetReq(b, false)
}
param := lib.ParamMgr{
Caller: app.handler,
Timeout: time.Duration(app.conf.Pressure.TimeoutMs) * time.Millisecond,
Lps: uint32(app.conf.Pressure.Concurrency),
Duration: time.Duration(app.conf.Pressure.DurationS) * time.Second,
ResultCh: make(chan *lib.CallResult, 50),
}
a, err := lib.NewAssistant(obs, param)
if err != nil {
logrus.Error(err)
}
a.Start()
a.ShowResult()
}
createTestBtn := widget.NewButton("创角", func() {
closeApp3(perfWin.tabs, common.TOOLBAR_PERF_CHOOSE)
openApp3(perfWin.tabs, common.TOOLBAR_PERF_RES)
for _, account := range app.binduids {
rq := ReqParams{
Sid: app.conf.SId,
Account: account,
PbReq: &pb.UserCreateReq{NickName: account},
MainType: "user",
SubType: "create",
}
b, err := app.buildReq(rq)
if err != nil {
logrus.Error(err)
return
}
app.handler.SetReq(b, false)
}
param := lib.ParamMgr{
Caller: app.handler,
Timeout: time.Duration(app.conf.Pressure.TimeoutMs) * time.Millisecond,
Lps: uint32(app.conf.Pressure.Concurrency),
Duration: time.Duration(app.conf.Pressure.DurationS) * time.Second,
ResultCh: make(chan *lib.CallResult, 50),
}
a, err := lib.NewAssistant(obs, param)
if err != nil {
logrus.Error(err)
}
a.Start()
a.ShowResult()
})
//场景
scenBtn := widget.NewButton("其它场景", nil)
scenBtn.OnTapped = func() {
// defer openApp3(perfWin.tabs, common.TOOLBAR_PERF_PB)
// closeApp3(perfWin.tabs, common.TOOLBAR_PERF_CHOOSE)
closeApp3(perfWin.tabs, common.TOOLBAR_PERF_CHOOSE)
openApp3(perfWin.tabs, common.TOOLBAR_PERF_RES)
// if tables, err := cfg.NewTables(common.Loader); err != nil {
// println(err.Error())
// } else {
// for _, v := range tables.TestFlow.GetDataList() {
// p, ok := pbMap[v.Route]
// if !ok {
// logrus.WithField("route", v.Route).Debug("未注册")
// continue
// }
// routeStr := strings.SplitN(v.Route, ".", 2)
// for _, account := range app.binduids {
// rq := ReqParams{
// Sid: app.conf.SId,
// Account: account,
// PbReq: p,
// MainType: routeStr[0],
// SubType: routeStr[1],
// }
// b, err := app.buildReq(rq)
// if err != nil {
// logrus.Error(err)
// return
// }
// app.handler.SetReq(b, true)
// }
// param := lib.ParamMgr{
// Caller: app.handler,
// Timeout: time.Duration(app.conf.Pressure.TimeoutMs) * time.Millisecond,
// Lps: uint32(app.conf.Pressure.Concurrency),
// Duration: time.Duration(app.conf.Pressure.DurationS) * time.Second,
// ResultCh: make(chan *lib.CallResult, 50),
// }
// a, err := lib.NewAssistant(obs, param)
// if err != nil {
// logrus.Error(err)
// }
// a.Start()
// a.ShowResult()
// }
// }
}
//上一步
preBtn := widget.NewButtonWithIcon("上一步", theme.NavigateBackIcon(), nil)
preBtn.OnTapped = func() {
defer openApp3(perfWin.tabs, common.TOOLBAR_PERF_CONF)
closeApp3(perfWin.tabs, common.TOOLBAR_PERF_CHOOSE)
}
btns := container.NewVBox(loginTestBtn, createTestBtn, scenBtn)
c := container.NewBorder(nil, container.NewHBox(layout.NewSpacer(), preBtn), nil, nil, btns)
content.Objects = append(content.Objects, c)
app.tabItem.Content = content
return nil
}
func (a *perfChoose) GetAppName() string {
return common.TOOLBAR_PERF_CHOOSE
}
func (a *perfChoose) OnClose() bool {
return false
}
func (a *perfChoose) OnDestroy() bool {
return true
}
type ReqParams struct {
Sid string
Account string
PbReq proto.Message
MainType string
SubType string
}
func (a *perfChoose) buildReq(rp ReqParams) ([]byte, error) {
head := &pb.UserMessage{MainType: rp.MainType, SubType: rp.SubType}
head.Sec = common.BuildSecStr(rp.Sid, rp.Account)
if comm.ProtoMarshal(rp.PbReq, head) {
data, err := proto.Marshal(head)
if err != nil {
return nil, err
}
return data, nil
}
return nil, nil
}

View File

@ -1,154 +0,0 @@
package ui
import (
"go_dreamfactory/cmd/v2/lib/common"
"go_dreamfactory/cmd/v2/lib/storage"
"go_dreamfactory/cmd/v2/service"
"go_dreamfactory/cmd/v2/service/observer"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/layout"
"fyne.io/fyne/v2/theme"
"fyne.io/fyne/v2/widget"
"github.com/sirupsen/logrus"
"github.com/spf13/cast"
)
type perfConf struct {
appAdapter
obs observer.Observer
conf *storage.Config
}
func (app *perfConf) LazyInit(ptService service.PttService, obs observer.Observer) error {
app.obs = obs
app.conf = perfWin.UIImpl.config
app.tabItem = container.NewTabItemWithIcon(common.TOOLBAR_PERF_CONF, theme.ContentCopyIcon(), nil)
content := container.NewMax()
content.Objects = []fyne.CanvasObject{}
// 压测form
wsAddrEntry := widget.NewEntry()
wsAddrEntry.PlaceHolder = "服务地址"
wsAddrEntry.Text = app.conf.WsAddr
timeoutEntry := widget.NewEntry()
timeoutEntry.PlaceHolder = "毫秒数"
timeoutEntry.Text = cast.ToString(app.conf.Pressure.TimeoutMs)
lpsEntry := widget.NewEntry()
lpsEntry.PlaceHolder = "并发数量"
lpsEntry.Text = cast.ToString(app.conf.Pressure.Concurrency)
durationEntry := widget.NewEntry()
durationEntry.PlaceHolder = "秒数"
durationEntry.Text = cast.ToString(app.conf.Pressure.DurationS)
userCountEntry := widget.NewEntry()
userCountEntry.PlaceHolder = "自动创建的用户数"
userCountEntry.Text = cast.ToString(app.conf.UserCount)
sidEntry := widget.NewEntry()
sidEntry.PlaceHolder = "区服ID"
sidEntry.Text = app.conf.SId
intervalEntry := widget.NewEntry()
intervalEntry.PlaceHolder = "间隔时间(s)"
intervalEntry.Text = cast.ToString(app.conf.IntervalS)
form := widget.NewForm(
widget.NewFormItem("服务地址", wsAddrEntry),
widget.NewFormItem("区服", sidEntry),
widget.NewFormItem("用户数", userCountEntry),
widget.NewFormItem("超时(ms)", timeoutEntry),
widget.NewFormItem("并发量", lpsEntry),
widget.NewFormItem("持续时间(s)", durationEntry),
widget.NewFormItem("间隔时间(s)", intervalEntry),
)
// btn
nextBtn := widget.NewButtonWithIcon("下一步", theme.NavigateNextIcon(), nil)
nextBtn.OnTapped = func() {
//校验表单数据
if wsAddrEntry.Text == "" {
common.ShowTip("服务地址必填")
return
}
if sidEntry.Text == "" {
common.ShowTip("区服ID必填")
return
}
if timeoutEntry.Text == "" {
common.ShowTip("超时时间必填")
return
}
if lpsEntry.Text == "" {
common.ShowTip("并发数必填")
return
}
if durationEntry.Text == "" {
common.ShowTip("持续时间")
return
}
if userCountEntry.Text == "" {
common.ShowTip("用户数至少是1")
return
}
pressure := app.conf.Pressure
pressure.TimeoutMs = cast.ToInt32(timeoutEntry.Text)
pressure.Concurrency = cast.ToInt32(lpsEntry.Text)
pressure.DurationS = cast.ToInt32(durationEntry.Text)
app.conf.Pressure = pressure
app.conf.UserCount = cast.ToInt32(userCountEntry.Text)
app.conf.WsAddr = wsAddrEntry.Text
app.conf.SId = sidEntry.Text
if err := perfWin.UIImpl.storage.StoreConfig(app.conf); err != nil {
logrus.Error(err)
}
//next
defer closeApp3(perfWin.tabs, common.TOOLBAR_PERF_CONF)
openApp3(perfWin.tabs, common.TOOLBAR_PERF_CHOOSE)
}
resetBtn := widget.NewButtonWithIcon("重置", theme.ContentRedoIcon(), nil)
resetBtn.OnTapped = func() {
timeoutEntry.Text = ""
lpsEntry.Text = ""
durationEntry.Text = ""
userCountEntry.Text = ""
wsAddrEntry.Text = ""
sidEntry.Text = ""
form.Refresh()
}
preBtn := widget.NewButtonWithIcon("上一步", theme.NavigateBackIcon(), nil)
preBtn.OnTapped = func() {
defer closeApp3(perfWin.tabs, common.TOOLBAR_PERF_CONF)
openApp3(perfWin.tabs, common.TOOLBAR_PERF_TIP)
}
c := container.NewBorder(nil, container.NewHBox(layout.NewSpacer(), preBtn, resetBtn, nextBtn), nil, nil, form)
content.Objects = append(content.Objects, c)
app.tabItem.Content = content
return nil
}
func (a *perfConf) GetAppName() string {
return common.TOOLBAR_PERF_CONF
}
func (a *perfConf) OnClose() bool {
return false
}
func (a *perfConf) OnDestroy() bool {
return true
}

View File

@ -1,38 +0,0 @@
package ui
import (
"go_dreamfactory/cmd/v2/lib/common"
"go_dreamfactory/cmd/v2/lib/storage"
"go_dreamfactory/cmd/v2/service"
"go_dreamfactory/cmd/v2/service/observer"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/theme"
)
type perfCreate struct {
appAdapter
obs observer.Observer
conf *storage.Config
}
func (app *perfCreate) LazyInit(ptService service.PttService, obs observer.Observer) error {
app.obs = obs
app.conf = perfWin.UIImpl.config
app.tabItem = container.NewTabItemWithIcon(common.TOOLBAR_PERF_CONF, theme.ContentCopyIcon(), nil)
content := container.NewMax()
content.Objects = []fyne.CanvasObject{}
return nil
}
func (a *perfCreate) GetAppName() string {
return common.TOOLBAR_PERF_CREATE
}
func (a *perfCreate) OnClose() bool {
return false
}

View File

@ -1,49 +0,0 @@
package ui
import (
"go_dreamfactory/cmd/v2/lib/common"
"go_dreamfactory/cmd/v2/lib/storage"
"go_dreamfactory/cmd/v2/service"
"go_dreamfactory/cmd/v2/service/observer"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/theme"
"fyne.io/fyne/v2/widget"
)
type perfLogin struct {
appAdapter
obs observer.Observer
conf *storage.Config
}
func (app *perfLogin) LazyInit(ptService service.PttService, obs observer.Observer) error {
app.obs = obs
app.conf = perfWin.UIImpl.config
app.tabItem = container.NewTabItemWithIcon(common.TOOLBAR_PERF_CONF, theme.ContentCopyIcon(), nil)
content := container.NewMax()
content.Objects = []fyne.CanvasObject{}
loginTestBtn := widget.NewButton("登陆/注册", func() {
})
createTestBtn := widget.NewButton("创角", func() {})
btns := container.NewHBox(loginTestBtn, createTestBtn)
c := container.NewBorder(btns, nil, nil, nil)
content.Objects = append(content.Objects, c)
app.tabItem.Content = content
return nil
}
func (a *perfLogin) GetAppName() string {
return common.TOOLBAR_PERF_LOGIN
}
func (a *perfLogin) OnClose() bool {
return false
}

View File

@ -1,215 +0,0 @@
package ui
import (
"go_dreamfactory/cmd/v2/lib"
"go_dreamfactory/cmd/v2/lib/common"
"go_dreamfactory/cmd/v2/lib/storage"
"go_dreamfactory/cmd/v2/service"
"go_dreamfactory/cmd/v2/service/observer"
"go_dreamfactory/comm"
"go_dreamfactory/pb"
cfg "go_dreamfactory/sys/configure/structs"
"strings"
"time"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/layout"
"fyne.io/fyne/v2/theme"
"fyne.io/fyne/v2/widget"
"github.com/Pallinder/go-randomdata"
"github.com/sirupsen/logrus"
"google.golang.org/protobuf/proto"
)
type perfPb struct {
appAdapter
obs observer.Observer
itemList common.ItemList
pbList func() //协议列表
conf *storage.Config
}
func (app *perfPb) LazyInit(ptService service.PttService, obs observer.Observer) error {
app.obs = obs
app.conf = perfWin.UIImpl.config
app.tabItem = container.NewTabItemWithIcon(common.TOOLBAR_PERF_PB, theme.ContentCopyIcon(), nil)
content := container.NewMax()
content.Objects = []fyne.CanvasObject{}
app.itemList = *common.NewItemList()
app.itemList.ItemList = app.itemList.CreateList()
app.pbList = func() {
// if tables, err := cfg.NewTables(common.Loader); err != nil {
// println(err.Error())
// } else {
// for _, v := range tables.TestFlow.GetDataList() {
// item := common.Item{
// Id: cast.ToString(v.Id),
// Text: fmt.Sprintf("%-6d %-20s %-20s %s", v.Id, v.Msg, v.Route, v.Params),
// Data: v,
// }
// app.itemList.AddItem(item)
// }
// }
}
defer app.pbList()
// 刷新按钮
refeshBtn := widget.NewButtonWithIcon("", theme.ViewRefreshIcon(), func() {
app.itemList.Reset()
app.pbList()
})
// next按钮
nextBtn := widget.NewButtonWithIcon("下一步", theme.NavigateNextIcon(), nil)
nextBtn.OnTapped = func() {
defer closeApp3(perfWin.tabs, common.TOOLBAR_PERF_PB)
openApp3(perfWin.tabs, common.TOOLBAR_PERF_RES)
// 根据填写的用户数创建用户
userCount := perfWin.config.UserCount
// 遍历时通过sleep 控制增加的用户数
for i := int32(0); i < userCount; i++ {
handler, err := service.NewWsCli(perfWin.config.WsAddr, time.Duration(perfWin.config.Pressure.TimeoutMs)*time.Millisecond)
if err != nil {
continue
}
var login *UserLogin
login, err = app.loginReq(perfWin.config.SId)
handler.SetReq(login.req, false)
assist := app.createAssistantWithoutConf(handler)
assist.Start()
assist.ShowResult()
// 遍历测试的协议
for _, item := range app.itemList.CachedList.Items {
if data, ok := item.Data.(*cfg.GameTestFlowData); ok {
logrus.Debugf("%v %v", data.Route, data.Params)
var (
reqData []byte
err error
)
if login == nil {
continue
}
if v, ok := pbMap[data.Route]; ok {
routeStr := strings.SplitN(data.Route, ".", 2)
head := &pb.UserMessage{MainType: routeStr[0], SubType: routeStr[1]}
head.Sec = common.BuildSecStr(login.sid, login.account)
if err := common.Json2Pb(data.Params, v); err != nil {
logrus.Error(err)
continue
}
if comm.ProtoMarshal(v, head) {
reqData, err = proto.Marshal(head)
if err != nil {
logrus.Error(err)
continue
}
}
}
handler.SetReq(reqData, false)
assist := app.createAssistant(handler)
assist.Start()
assist.ShowResult()
}
}
// time.Sleep(time.Second)
}
obs.Notify(observer.EVENT_FINISH, true)
}
preBtn := widget.NewButtonWithIcon("上一步", theme.NavigateBackIcon(), nil)
preBtn.OnTapped = func() {
defer closeApp3(perfWin.tabs, common.TOOLBAR_PERF_PB)
openApp3(perfWin.tabs, common.TOOLBAR_PERF_CONF)
}
//layout
c := container.NewBorder(container.NewHBox(refeshBtn), container.NewHBox(layout.NewSpacer(), preBtn, nextBtn), nil, nil, app.itemList.ItemList)
content.Objects = append(content.Objects, c)
app.tabItem.Content = content
return nil
}
func (a *perfPb) GetAppName() string {
return common.TOOLBAR_PERF_PB
}
func (a *perfPb) OnClose() bool {
return false
}
func (a *perfPb) createAssistantWithoutConf(handler lib.Handler) lib.Aiassistant {
param := lib.ParamMgr{
Caller: handler,
Timeout: time.Duration(a.conf.Pressure.TimeoutMs) * time.Millisecond,
Lps: 1,
Duration: 1,
ResultCh: make(chan *lib.CallResult, 50),
}
assist, err := lib.NewAssistant(a.obs, param)
if err != nil {
logrus.Errorf("AI助手初始化错误: %v", err)
return nil
}
return assist
}
//
func (a *perfPb) createAssistant(handler lib.Handler) lib.Aiassistant {
param := lib.ParamMgr{
Caller: handler,
Timeout: time.Duration(a.conf.Pressure.TimeoutMs) * time.Millisecond,
Lps: uint32(a.conf.Pressure.Concurrency),
Duration: time.Duration(a.conf.Pressure.DurationS) * time.Second,
ResultCh: make(chan *lib.CallResult, 50),
}
assist, err := lib.NewAssistant(a.obs, param)
if err != nil {
logrus.Errorf("AI助手初始化错误: %v", err)
return nil
}
return assist
}
type UserLogin struct {
req []byte
sid string
account string
}
func (a *perfPb) loginReq(sid string) (*UserLogin, error) {
login := &UserLogin{sid: sid}
head := &pb.UserMessage{MainType: "user", SubType: "login"}
account := randomdata.SillyName()
login.account = account
head.Sec = common.BuildSecStr(login.sid, login.account)
if comm.ProtoMarshal(&pb.UserLoginReq{
Sid: login.sid,
Account: login.account,
}, head) {
logrus.WithField("账号", login.account).Info("登录")
data, err := proto.Marshal(head)
if err != nil {
return nil, err
}
login.req = data
return login, nil
}
return nil, nil
}

View File

@ -1,121 +0,0 @@
package ui
import (
"fmt"
"go_dreamfactory/cmd/v2/lib"
"go_dreamfactory/cmd/v2/lib/common"
"go_dreamfactory/cmd/v2/lib/storage"
"go_dreamfactory/cmd/v2/service"
"go_dreamfactory/cmd/v2/service/observer"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/layout"
"fyne.io/fyne/v2/theme"
"fyne.io/fyne/v2/widget"
)
type perfResult struct {
appAdapter
obs observer.Observer
conf *storage.Config
itemList common.ItemList
resultList func() //结果列表
resetBtn *widget.Button
returnBtn *widget.Button
report *widget.Card
layout *fyne.Container
}
func (app *perfResult) LazyInit(ptService service.PttService, obs observer.Observer) error {
app.obs = obs
app.conf = perfWin.UIImpl.config
app.tabItem = container.NewTabItemWithIcon(common.TOOLBAR_PERF_RES, theme.ContentCopyIcon(), nil)
content := container.NewMax()
content.Objects = []fyne.CanvasObject{}
app.itemList = *common.NewItemList()
app.itemList.ItemList = app.itemList.CreateList()
//重新开始
app.resetBtn = widget.NewButtonWithIcon("再来一次", theme.ContentRedoIcon(), nil)
app.resetBtn.Hide()
app.resetBtn.OnTapped = func() {
defer openApp3(perfWin.tabs, common.TOOLBAR_PERF_TIP)
app.itemList.Reset()
closeApp3(perfWin.tabs, common.TOOLBAR_PERF_RES)
}
// 返回
app.returnBtn = widget.NewButtonWithIcon("", theme.NavigateBackIcon(), nil)
app.returnBtn.Disable()
app.returnBtn.OnTapped = func() {
defer openApp3(perfWin.tabs, common.TOOLBAR_PERF_CHOOSE)
app.itemList.Reset()
closeApp3(perfWin.tabs, common.TOOLBAR_PERF_RES)
}
app.returnBtn.Text = "等待中..."
//统计Panel
app.report = widget.NewCard("测试报告", "登录/创角", container.NewVBox(
// widget.NewLabel("结果:"),
))
app.report.Hide()
//layout
app.layout = container.NewBorder(app.report, container.NewHBox(layout.NewSpacer(), app.resetBtn, app.returnBtn), nil, nil, app.itemList.ItemList)
content.Objects = append(content.Objects, app.layout)
app.tabItem.Content = content
app.listen()
return nil
}
func (app *perfResult) listen() {
app.obs.AddListener(observer.EVENT_RESULT, observer.Listener{
OnNotify: func(data interface{}, args ...interface{}) {
res, ok := data.(*lib.Statistics)
if !ok {
return
}
item := common.Item{
Text: fmt.Sprintf("协议名称:%s, 调用次数:%d, 总耗时:%vms, 平均耗时:%vms, 最大耗时:%vms, 最小耗时:%vms",
res.Route, res.CallCount, res.ElapseTotal, res.AvgElapse, res.MaxElapse, res.MinElapse),
Data: res,
}
app.itemList.AddItem(item)
app.returnBtn.Text = "返回"
app.returnBtn.Enable()
app.returnBtn.Refresh()
app.layout.Refresh()
},
})
app.obs.AddListener(observer.EVENT_FINISH, observer.Listener{
OnNotify: func(data interface{}, args ...interface{}) {
finish, ok := data.(bool)
if !ok {
return
}
if finish {
app.resetBtn.Show()
app.resetBtn.Refresh()
app.report.Show()
app.report.Refresh()
}
},
})
}
func (app *perfResult) GetAppName() string {
return common.TOOLBAR_PERF_RES
}
func (a *perfResult) OnClose() bool {
return false
}

View File

@ -1,64 +0,0 @@
package ui
import (
"go_dreamfactory/cmd/v2/lib/common"
"go_dreamfactory/cmd/v2/service"
"go_dreamfactory/cmd/v2/service/observer"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/theme"
"fyne.io/fyne/v2/widget"
)
type perfWelcome struct {
appAdapter
obs observer.Observer
}
func (app *perfWelcome) LazyInit(service service.PttService, obs observer.Observer) error {
app.obs = obs
app.tabItem = container.NewTabItemWithIcon(common.TOOLBAR_PERF_TIP, theme.ContentCopyIcon(), nil)
content := container.NewMax()
content.Objects = []fyne.CanvasObject{}
wel := widget.NewRichTextFromMarkdown("# 自动化性能测试工具使用说明" +
`
* 基于Luban工具生成协议文件(json格式)
`)
for i := range wel.Segments {
if seg, ok := wel.Segments[i].(*widget.TextSegment); ok {
seg.Style.Alignment = fyne.TextAlignLeading
}
}
goBtn := widget.NewButton("开始测试 >>", nil)
goBtn.OnTapped = func() {
defer closeApp3(perfWin.tabs, common.TOOLBAR_PERF_TIP)
openApp3(perfWin.tabs, common.TOOLBAR_PERF_CONF)
}
app.tabItem.Content = container.NewCenter(
container.NewVBox(
wel,
goBtn,
))
return nil
}
func (a *perfWelcome) OpenDefault() string {
return common.TOOLBAR_PERF_TIP
}
func (a *perfWelcome) GetAppName() string {
return common.TOOLBAR_PERF_TIP
}
func (a *perfWelcome) OnClose() bool {
return false
}
func (a *perfWelcome) OnDestroy() bool {
return true
}

View File

@ -1,107 +0,0 @@
package ui
import (
"fmt"
"go_dreamfactory/cmd/v2/lib/common"
"go_dreamfactory/pb"
"reflect"
"strings"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/widget"
"github.com/sirupsen/logrus"
"google.golang.org/protobuf/proto"
)
var perfWin *PerfWindowImpl
var pbMap map[string]proto.Message //pb
type PerfWindow interface {
WindowInterface
}
type PerfWindowImpl struct {
UIImpl
parent fyne.Window
w fyne.Window
statusbar *statusBar //状态栏
tabs *appContainer //tabs
toolbar *toolBar //工具条
}
func NewPerfWindow(ui *UIImpl, parent fyne.Window) PerfWindow {
pw := &PerfWindowImpl{
UIImpl: *ui,
parent: parent,
}
perfWin = pw
pbMap = make(map[string]proto.Message)
pw.initPb()
return pw
}
func (ui *PerfWindowImpl) CreateWindow(_ string, width, height float32, _ bool) {
title := fmt.Sprintf(common.APP_WIN_TITLE, "自动化性能测试工具", ui.app.Metadata().Version, ui.app.Metadata().Build, common.APP_NAME)
w := ui.app.NewWindow(title)
ui.AddWindow("main", w)
ui.w = w
w.Resize(fyne.NewSize(width, height))
w.CenterOnScreen()
w.SetCloseIntercept(func() {
ui.parent.Show()
})
ui.statusbar = newStatusBar()
toolbar := widget.NewToolbar(
// widget.NewToolbarAction(theme.MediaVideoIcon(), func() {
// openApp(ui.tabs, common.TOOLBAR_PERF_TIP)
// }),
// widget.NewToolbarAction(theme.MediaVideoIcon(), func() {
// openApp(ui.tabs, common.TOOLBAR_PERF_CONF)
// }),
)
ui.toolbar = newToolBar(toolbar)
ui.tabs = newAppContainer(perfRegister, ui.pttService, ui.obs)
content := container.NewBorder(ui.toolbar.toolbar, ui.statusbar.widget, nil, nil, ui.tabs)
ui.w.SetContent(content)
defer func() {
appName, err := ui.tabs.openDefaultApp(common.TOOLBAR_PERF_TIP)
if err != nil {
logrus.WithField("appName", appName).Error(err)
}
}()
w.SetCloseIntercept(func() {
ui.parent.Show()
w.Close()
})
w.Show()
}
func (ui *PerfWindowImpl) registerPb(route string, pb proto.Message) {
typeOf := reflect.TypeOf(pb)
pbName := typeOf.Elem().Name()
if strings.HasSuffix(pbName, "Req") {
s := strings.SplitN(route, ".", 2)
low := strings.ToLower(pbName)
if strings.Contains(low, s[0]) &&
strings.Contains(low, s[1]) {
pbMap[route] = pb
}
}
}
func (ui *PerfWindowImpl) initPb() {
ui.registerPb("user.login", &pb.UserLoginReq{})
ui.registerPb("user.create", &pb.UserCreateReq{})
ui.registerPb("sys.funclist", &pb.SysFuncListReq{})
}

View File

@ -42,17 +42,6 @@ func openApp2(ac *appContainer, name string) {
}
}
func openApp3(ac *appContainer, name string) {
for _, app := range perfRegister {
if app.GetAppName() == name {
err := ac.openApp(app)
if err != nil {
logrus.Error(fmt.Errorf("%s %v", app.GetAppName(), err))
}
}
}
}
func closeApp3(ac *appContainer, name string) {
for _, appItem := range ac.Items {
if appItem.Text == name {

View File

@ -431,3 +431,6 @@ func openFile(entry *widget.Entry, w fyne.Window) {
func (a *appGen) GetAppName() string {
return common.TOOLBAR_GEN
}
func(a *appGen) Icon() fyne.Resource{
return theme.ContentCopyIcon()
}

53
cmd/v2/ui/tool_menu.go Normal file
View File

@ -0,0 +1,53 @@
package ui
import (
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/theme"
"github.com/sirupsen/logrus"
)
type toolMenu struct {
*fyne.MainMenu
sysMenu *fyne.Menu
appMenus []*fyne.MenuItem
//退出
quite *fyne.MenuItem
// 工具
toolMenu *fyne.Menu
//同步配置
syncConfMenu *fyne.MenuItem
}
func newToolMenu() *toolMenu {
var mm toolMenu
// system
mm.appMenus = make([]*fyne.MenuItem, len(toolRegister))
for i, app := range toolRegister {
mm.appMenus[i] = fyne.NewMenuItem(app.GetAppName(), func() {
err := toolWin.at.openApp(app)
if err != nil {
logrus.Errorf("打开 %s, err:%v", app.GetAppName(), err)
}
})
mm.appMenus[i].Icon = app.Icon()
}
mm.quite = fyne.NewMenuItem("退出", toolWin.quiteHandle)
mm.quite.Icon = theme.LogoutIcon()
mm.quite.IsQuit = true
mm.sysMenu = fyne.NewMenu("应用", mm.appMenus...)
mm.sysMenu.Items = append(mm.sysMenu.Items, fyne.NewMenuItemSeparator(), mm.quite)
//tool
mm.syncConfMenu = fyne.NewMenuItem("同步云配置", toolWin.syncConfig)
mm.toolMenu = fyne.NewMenu("工具",
mm.syncConfMenu,
)
mm.MainMenu = fyne.NewMainMenu(
mm.sysMenu,
mm.toolMenu,
)
return &mm
}

View File

@ -11,6 +11,8 @@ import (
"go_dreamfactory/pb"
"strings"
mytheme "go_dreamfactory/cmd/v2/theme"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/dialog"
@ -244,3 +246,6 @@ func (this *appMgo) showConWin() {
func (a *appMgo) GetAppName() string {
return common.TOOLBAR_MGODB
}
func (a *appMgo) Icon() fyne.Resource {
return mytheme.ResourceMongodbJpg
}

View File

@ -68,3 +68,6 @@ func (this *appLock) LazyInit(ptService service.PttService, obs observer.Observe
func (a *appLock) GetAppName() string {
return common.TOOLBAR_SEC
}
func (a *appLock) Icon() fyne.Resource {
return theme.DownloadIcon()
}

View File

@ -191,6 +191,9 @@ func (this *appPbGen) LazyInit(ptService service.PttService, obs observer.Observ
func (a *appPbGen) GetAppName() string {
return common.TOOLBAR_PB
}
func (a *appPbGen) Icon() fyne.Resource {
return theme.ContentAddIcon()
}
type folderList struct {
selItemIds []string //选择的ID

View File

@ -130,3 +130,7 @@ func (this *appPing) ping(targetHost string, ports []string) {
func (a *appPing) GetAppName() string {
return common.TOOLBAR_PING
}
func (a *appPing) Icon() fyne.Resource {
return theme.ComputerIcon()
}

View File

@ -549,6 +549,9 @@ func (app *appTerm) LazyInit(ptService service.PttService, obs observer.Observer
func (a *appTerm) GetAppName() string {
return common.TOOLBAR_TERM
}
func (a *appTerm) Icon() fyne.Resource {
return theme.MailSendIcon()
}
func OpenExplor(dir string) {
if dir == "" {

122
cmd/v2/ui/tool_valid.go Normal file
View File

@ -0,0 +1,122 @@
package ui
import (
"go_dreamfactory/cmd/v2/lib/common"
os_storage "go_dreamfactory/cmd/v2/lib/storage"
"go_dreamfactory/cmd/v2/service"
"go_dreamfactory/cmd/v2/service/observer"
mytheme "go_dreamfactory/cmd/v2/theme"
"io/ioutil"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/dialog"
fyne_storage "fyne.io/fyne/v2/storage"
"fyne.io/fyne/v2/theme"
"fyne.io/fyne/v2/widget"
"github.com/sirupsen/logrus"
)
type jsonFileList struct {
selItemId string //选择的文件ID
cacheList common.List
itemList *widget.List
fileTotal int //文件数
}
func newJsonFileList() *jsonFileList {
return &jsonFileList{
cacheList: common.NewList(""),
}
}
type appConfigValid struct {
appAdapter
jsonFileList
}
func (a *appConfigValid) LazyInit(pt service.PttService, obs observer.Observer) error {
a.tabItem = container.NewTabItemWithIcon(common.TOOLBAR_VALID, mytheme.ResourceExcelJpg, nil)
a.jsonFileList = *newJsonFileList()
//load conf
storage, _ := os_storage.NewOSStorage()
conf, err := storage.LoadConfig()
if err != nil {
logrus.Error(err)
return err
}
if conf.JsonDir!=""{
}
content := container.NewMax()
content.Objects = []fyne.CanvasObject{}
// 打开目录
openFolder := func(entry *widget.Entry) {
dConf := dialog.NewFolderOpen(func(lu fyne.ListableURI, err error) {
if lu == nil {
return
}
entry.Text = lu.Path()
entry.Refresh()
}, toolWin.w)
luri, _ := fyne_storage.ListerForURI(fyne_storage.NewFileURI("."))
dConf.SetLocation(luri)
dConf.SetConfirmText("打开")
dConf.SetDismissText("取消")
dConf.Resize(fyne.NewSize(750, 500))
dConf.Show()
}
//配置json路径
jsonDir := widget.NewEntry()
jsonDir.PlaceHolder = "json目录"
form := widget.NewForm(
widget.NewFormItem("json目录", container.NewBorder(nil, nil, nil, widget.NewButtonWithIcon("", theme.FolderIcon(), func() {
openFolder(jsonDir)
a.jsonFileList.initItem(jsonDir.Text)
}), jsonDir)),
)
jsonDir.SetText(conf.JsonDir)
c := container.NewBorder(form, nil, nil, nil)
content.Objects = append(content.Objects, c)
a.tabItem.Content = content
return nil
}
func (a *appConfigValid) GetAppName() string {
return common.TOOLBAR_VALID
}
func (a *appConfigValid) Icon() fyne.Resource {
return mytheme.ResourceExcelJpg
}
func (f *jsonFileList) initItem(dir string) {
files, err := ioutil.ReadDir(dir)
if err != nil {
logrus.Error(err)
return
}
for _, file := range files {
if file.IsDir() {
if file.Name() == ".vscode" {
continue
}
fm := common.Item{
Text: file.Name(),
Checked: false,
}
f.cacheList.Items = append(f.cacheList.Items, fm)
// f.selItemIds = append(f.selItemIds, fm.Id)
f.fileTotal++
// logrus.Debugf("%v", fm.Id)
}
}
}

View File

@ -1,11 +1,20 @@
package ui
import (
"encoding/json"
"errors"
"fmt"
"go_dreamfactory/cmd/v2/lib/common"
"go_dreamfactory/cmd/v2/lib/storage"
"io/ioutil"
"net/http"
"time"
mytheme "go_dreamfactory/cmd/v2/theme"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/dialog"
"fyne.io/fyne/v2/theme"
"fyne.io/fyne/v2/widget"
"github.com/sirupsen/logrus"
@ -24,6 +33,7 @@ type ToolWindowImpl struct {
tb *toolBar //工具条
sb *statusBar //状态栏
at *appContainer //tabs
mm *toolMenu //菜单
}
func NewToolWindow(ui *UIImpl, parent fyne.Window) ToolWindow {
@ -56,10 +66,15 @@ func NewToolWindow(ui *UIImpl, parent fyne.Window) ToolWindow {
widget.NewToolbarAction(theme.ComputerIcon(), func() {
openApp2(mw.at, common.TOOLBAR_PING)
}),
widget.NewToolbarAction(theme.SettingsIcon(), func() {
widget.NewToolbarAction(mytheme.ResourceMongodbJpg, func() {
openApp2(mw.at, common.TOOLBAR_MGODB)
}),
widget.NewToolbarAction(mytheme.ResourceExcelJpg, func() {
openApp2(mw.at, common.TOOLBAR_VALID)
}),
widget.NewToolbarSpacer(),
widget.NewToolbarAction(theme.HelpIcon(), func() {
showAbout()
@ -78,11 +93,13 @@ func (ui *ToolWindowImpl) CreateWindow(title string, width, height float32, _ bo
ui.AddWindow("tool", w)
ui.w = w
ui.mm = newToolMenu()
ui.w.SetMainMenu(ui.mm.MainMenu)
// content
content := container.NewBorder(ui.tb.toolbar, ui.sb.widget,
nil, nil, ui.at)
ui.w.SetContent(content)
appName, err := ui.at.openDefaultApp(common.TOOLBAR_WEL)
appName, err := ui.at.openWelcome()
if err != nil {
logrus.WithField("appName", appName).Error(err)
}
@ -105,3 +122,50 @@ func (ui *ToolWindowImpl) CreateWindow(title string, width, height float32, _ bo
})
w.Show()
}
func (ui *ToolWindowImpl) quiteHandle() {
dialog.ShowConfirm("提示", "确定退出吗", func(b bool) {
if !b {
return
}
ui.app.Quit()
}, ui.w)
}
func (ui *ToolWindowImpl) syncConfig() {
cli := http.Client{Timeout: time.Second * 10}
r, err := cli.Get("http://10.0.0.9:8080/prd/config.json")
if err != nil {
logrus.Error(err)
dialog.ShowError(err, ui.w)
return
}
defer r.Body.Close()
b, err2 := ioutil.ReadAll(r.Body)
if err2 != nil {
logrus.Error(err)
dialog.ShowError(err2, ui.w)
return
}
if len(b) == 0 {
dialog.ShowError(errors.New("云配置可能不存在"), ui.w)
return
}
config := &storage.Config{}
if err := json.Unmarshal(b, config); err != nil {
dialog.ShowError(fmt.Errorf("云配置解析错误: %s", err), ui.w)
return
}
s, err := storage.NewOSStorage()
s.StoreConfig(config)
dialog.ShowConfirm("提示", "云配置同步成功,需要重新打开窗口", func(b bool) {
if !b {
return
}
ui.parent.Show()
ui.w.Close()
}, ui.w)
}

View File

@ -140,7 +140,7 @@ const (
TableSeasonRecord = "seasonRecord" // 赛季塔记录
/// 美食馆
TableSmithy = "smithy"
TableSmithy = "smithy"
TableSmithyTrade = "trade"
/// 赛季塔数据表
TableSeasonPagoda = "seasonpagoda"
@ -222,6 +222,9 @@ const (
// pvp
TablePvp = "pvp"
// 铁匠铺铸造台
TableStove = "stove"
)
// RPC服务接口定义处
@ -723,3 +726,10 @@ const (
UseType1 int32 = 1 //英雄碎片
UseType8 int32 = 8 //觉醒材料合成
)
const (
SmithyReelType1 = 1 //炉温消耗减少
SmithyReelType2 = 2 // 材料消耗减少
SmithyReelType3 = 3 // 解锁图纸【紫金雷神锤】
SmithyReelType4 = 4
)

View File

@ -3,13 +3,15 @@ package smithy
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"go_dreamfactory/sys/configure"
cfg "go_dreamfactory/sys/configure/structs"
"google.golang.org/protobuf/proto"
)
//参数校验
func (this *apiComp) ForgeEquipCheck(session comm.IUserSession, req *pb.SmithyForgeEquipReq) (code pb.ErrorCode) {
if req.EquipType == 0 {
if req.ReelId == 0 {
code = pb.ErrorCode_ReqParameterError
return
}
@ -18,18 +20,81 @@ func (this *apiComp) ForgeEquipCheck(session comm.IUserSession, req *pb.SmithyFo
// 打造装备
func (this *apiComp) ForgeEquip(session comm.IUserSession, req *pb.SmithyForgeEquipReq) (code pb.ErrorCode, data proto.Message) {
var ()
var (
stove *pb.DBStove
err error
update map[string]interface{}
costRes []*cfg.Gameatn
)
update = make(map[string]interface{})
code = this.ForgeEquipCheck(session, req)
if code != pb.ErrorCode_Success {
return // 参数校验失败直接返回
}
stove, err := this.module.modelSmithy.getSmithyStoveList(session.GetUserId())
stove, err = this.module.modelStove.getSmithyStoveList(session.GetUserId())
if err != nil {
code = pb.ErrorCode_DBError
return
}
reelcfg := this.module.configure.GetSmithyReelConfigData(req.ReelId)
if reelcfg == nil {
code = pb.ErrorCode_ReqParameterError // 没有找到该类型的图纸信息
return
}
// 校验图纸是否激活
if _, ok := stove.Data[req.ReelId]; !ok { // 是不是首次打造
if !this.module.configure.CheckSmithyFirstReelConfigData(reelcfg.Type, req.ReelId) { // 没有激活图纸
code = pb.ErrorCode_SmithyNoReel
return
}
stove.Data[req.ReelId] = &pb.Mastery{
Lv: 1,
Value: 0,
}
//update["data"] = stove.Data
}
stove.Data[req.ReelId].Value += 1
// 是否是精益打造
if req.Quality > 0 {
costRes = append(costRes, reelcfg.Quality)
}
costRes = append(costRes, reelcfg.Consume...)
subAtn := this.module.modelStove.CheckForgeConsume(req.ReelId, stove.Data[req.ReelId].Lv)
costRes = append(costRes, subAtn...)
if code = this.module.CheckRes(session, costRes); code != pb.ErrorCode_Success {
return
}
// 熟练度减少的温度
t := this.module.modelStove.CheckTemperature(req.ReelId, stove.Data[req.ReelId].Lv)
// 检查炉温 是否够
if stove.Temperature < reelcfg.Temperature-t {
code = pb.ErrorCode_SmithyNoTemperature // 炉温不够 直接返回
return
}
// 检查是否提升了熟练度等级
nextProficiency := this.module.configure.GetSmithyProficileData(req.ReelId, stove.Data[req.ReelId].Lv+1)
if nextProficiency != nil && nextProficiency.Proficiency >= stove.Data[req.ReelId].Value { // 提升熟练度
stove.Data[req.ReelId].Lv += 1
stove.Data[req.ReelId].Value = 0
// 校验是否解锁了新的图纸
if nextProficiency.Type == comm.SmithyReelType3 {
stove.Data[nextProficiency.Value1] = &pb.Mastery{
Lv: 1,
Value: 0,
}
}
}
if code = this.module.ConsumeRes(session, costRes, true); code != pb.ErrorCode_Success {
return
}
stove.Temperature -= (reelcfg.Temperature - t) // 消耗温度
stove.RecoveTime = configure.Now().Unix()
update["data"] = stove.Data
update["recoveTime"] = stove.RecoveTime
update["temperature"] = stove.Temperature
this.module.modelStove.updateSmithyStove(session.GetUserId(), update)
session.SendMsg(string(this.module.GetType()), "forgeequip", &pb.SmithyForgeEquipResp{Data: stove})
return
}

View File

@ -0,0 +1,48 @@
package smithy
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"go_dreamfactory/utils"
"go.mongodb.org/mongo-driver/mongo"
"google.golang.org/protobuf/proto"
)
func (this *apiComp) CustomerCheck(session comm.IUserSession, req *pb.SmithyCustomerReq) (code pb.ErrorCode) {
return
}
func (this *apiComp) Customer(session comm.IUserSession, req *pb.SmithyCustomerReq) (code pb.ErrorCode, data proto.Message) {
cus, err := this.module.modelTrade.getDBCustomer(session.GetUserId())
if err != nil {
if err == mongo.ErrNoDocuments {
c, err := this.module.modelTrade.addCustomer(session.GetUserId(), 3)
if err != nil {
code = pb.ErrorCode_DBError
return
}
cus = c
} else {
code = pb.ErrorCode_DBError
return
}
}
if utils.IsFirstTody(cus.LastRefreshTime) {
this.module.modelTrade.DelByUId(session.GetUserId())
c, err := this.module.modelTrade.addCustomer(session.GetUserId(), 3)
if err != nil {
code = pb.ErrorCode_DBError
return
}
cus = c
}
rsp := &pb.SmithyCustomerResp{
CustomerIds: cus.CustomerIds,
}
session.SendMsg(string(this.module.GetType()), "customer", rsp)
return
}

View File

@ -20,11 +20,12 @@ func (this *apiComp) GetStoveInfo(session comm.IUserSession, req *pb.SmithyGetSt
if code != pb.ErrorCode_Success {
return // 参数校验失败直接返回
}
_smithy, err := this.module.modelSmithy.getSmithyStoveList(session.GetUserId())
_smithy, err := this.module.modelStove.getSmithyStoveList(session.GetUserId())
if err != nil {
code = pb.ErrorCode_DBError
return
}
this.module.modelStove.calculationRecoveryT(session.GetUserId(), _smithy)
session.SendMsg(string(this.module.GetType()), "getstoveinfo", &pb.SmithyGetStoveInfoResp{Data: _smithy})
return
}

View File

@ -24,7 +24,7 @@ func (this *apiComp) OrderEquip(session comm.IUserSession, req *pb.SmithyOrderEq
if code != pb.ErrorCode_Success {
return // 参数校验失败直接返回
}
stove, err := this.module.modelSmithy.getSmithyStoveList(session.GetUserId())
stove, err := this.module.modelStove.getSmithyStoveList(session.GetUserId())
if err != nil {
code = pb.ErrorCode_DBError
return

View File

@ -23,7 +23,7 @@ func (this *apiComp) Rise(session comm.IUserSession, req *pb.SmithyRiseReq) (cod
if code != pb.ErrorCode_Success {
return // 参数校验失败直接返回
}
stove, err := this.module.modelSmithy.getSmithyStoveList(session.GetUserId())
stove, err := this.module.modelStove.getSmithyStoveList(session.GetUserId())
if err != nil {
code = pb.ErrorCode_DBError
return

View File

@ -8,23 +8,40 @@ import (
)
//参数校验
func (this *apiComp) StrveUpCheck(session comm.IUserSession, req *pb.SmithyStoveUpReq) (code pb.ErrorCode) {
func (this *apiComp) StoveUpCheck(session comm.IUserSession, req *pb.SmithyStoveUpReq) (code pb.ErrorCode) {
return
}
// 炉子升级
func (this *apiComp) StrveUp(session comm.IUserSession, req *pb.SmithyStoveUpReq) (code pb.ErrorCode, data proto.Message) {
code = this.StrveUpCheck(session, req)
func (this *apiComp) StoveUp(session comm.IUserSession, req *pb.SmithyStoveUpReq) (code pb.ErrorCode, data proto.Message) {
code = this.StoveUpCheck(session, req)
if code != pb.ErrorCode_Success {
return // 参数校验失败直接返回
}
stove, err := this.module.modelSmithy.getSmithyStoveList(session.GetUserId())
stove, err := this.module.modelStove.getSmithyStoveList(session.GetUserId())
if err != nil {
code = pb.ErrorCode_DBError
return
}
conf := this.module.configure.GetSmithyStoveConf(stove.Lv)
if conf == nil {
code = pb.ErrorCode_ConfigNoFound
return
}
nexConf := this.module.configure.GetSmithyStoveConf(stove.Lv + 1)
if nexConf == nil {
code = pb.ErrorCode_SmithyStoveMaxLv
return
}
if code = this.module.ConsumeRes(session, conf.UpMaterial, true); code != pb.ErrorCode_Success {
return
}
stove.Lv += 1
update := make(map[string]interface{})
update["temperature"] = stove.Temperature
update["recoveTime"] = stove.RecoveTime
this.module.modelStove.updateSmithyStove(session.GetUserId(), update)
session.SendMsg(string(this.module.GetType()), "stoveup", &pb.SmithyStoveUpResp{Data: stove})
return
}

View File

@ -19,11 +19,30 @@ func (this *apiComp) ToolsUp(session comm.IUserSession, req *pb.SmithyToolsUpReq
if code != pb.ErrorCode_Success {
return // 参数校验失败直接返回
}
stove, err := this.module.modelSmithy.getSmithyStoveList(session.GetUserId())
stove, err := this.module.modelStove.getSmithyStoveList(session.GetUserId())
if err != nil {
code = pb.ErrorCode_DBError
return
}
conf := this.module.configure.GetSmithyToolsData(req.Id)
if conf == nil {
code = pb.ErrorCode_ReqParameterError
return
}
// 校验前置条件
if conf.Preconditions == 0 {
stove.Skill[conf.SkillType] = conf.SkillLv
} else {
//TODU
}
if this.module.ConsumeRes(session, conf.UpMaterial, true); code != pb.ErrorCode_Success {
return
}
update := make(map[string]interface{})
update["skill"] = stove.Skill
this.module.modelStove.updateSmithyStove(session.GetUserId(), update)
session.SendMsg(string(this.module.GetType()), "toolsup", &pb.SmithyToolsUpResp{Data: stove})
return

View File

@ -3,10 +3,43 @@ package smithy
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"github.com/golang/protobuf/proto"
)
// 贸易
func (this *apiComp) TradeCheck(session comm.IUserSession, req *pb.SmithySellItemReq) (code pb.ErrorCode) {
func (this *apiComp) SellCheck(session comm.IUserSession, req *pb.SmithySellReq) (code pb.ErrorCode) {
if req.CustomerId == 0 || len(req.Ids) == 0 {
code = pb.ErrorCode_ReqParameterError
}
return
}
func (this *apiComp) SellItem(session comm.IUserSession, req *pb.SmithySellReq) (code pb.ErrorCode, data proto.Message) {
if code = this.SellCheck(session, req); code != pb.ErrorCode_Success {
return
}
//校验customer类型因为有的类型是不能进入交易逻辑的
//TODO
_ = this.module.modelTrade.updateCustomer(session.GetUserId(), req.CustomerId)
conf := this.module.configure.GetSmithyCustomerConf(req.CustomerId)
if conf == nil {
code = pb.ErrorCode_ConfigNoFound
return
}
// 发奖励
this.module.DispenseRes(session, conf.Reword, true)
rsp := &pb.SmithySellResp{
CustomerId: req.CustomerId,
Ids: req.Ids,
}
session.SendMsg(string(this.module.GetType()), "sell", rsp)
return
}

View File

@ -10,23 +10,32 @@ import (
)
const (
game_smithy = "game_smithy.json"
game_smithystove = "game_smithystove.json"
game_smithy = "game_smithy.json"
game_smithystoveold = "game_smithystove.json"
game_smithyreel = "game_newsmithy.json" // 新版铁匠铺卷轴
game_smproficiency = "game_smithyproficiency.json" // 铁匠铺熟练度
game_smithystove = "game_smithystovev1.json" // 铁匠铺台子 打造配置
game_smithytools = "game_smithytool.json" // 铁匠铺工具台
game_smithycustomer = "game_smithycustomer.json"
)
///配置管理基础组件
// /配置管理基础组件
type configureComp struct {
modules.MCompConfigure
module *Smithy
hlock sync.RWMutex
_smithyMap map[int64]*cfg.GameSmithyData
_mapProficile map[int64]*cfg.GameSmithyProficiencyData // 熟练度 key 卷轴ID+ 等级
_mapskill map[int64]*cfg.GameSmithyToolData // 熟练度 key 技能类型+ 技能等级等级
}
//组件初始化接口
// 组件初始化接口
func (this *configureComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
err = this.MCompConfigure.Init(service, module, comp, options)
this._smithyMap = make(map[int64]*cfg.GameSmithyData, 0)
this.module = module.(*Smithy)
this._smithyMap = make(map[int64]*cfg.GameSmithyData, 0)
configure.RegisterConfigure(game_smithy, cfg.NewGameSmithy, func() {
if v, err := this.GetConfigure(game_smithy); err == nil {
if configure, ok := v.(*cfg.GameSmithy); ok {
@ -41,7 +50,17 @@ func (this *configureComp) Init(service core.IService, module core.IModule, comp
log.Errorf("get game_pagoda conf err:%v", err)
return
})
err = this.LoadConfigure(game_smithystove, cfg.NewGameSmithyStove)
this._mapProficile = make(map[int64]*cfg.GameSmithyProficiencyData, 0)
configure.RegisterConfigure(game_smproficiency, cfg.NewGameSmithyProficiency, this.LoadProficileData)
this._mapskill = make(map[int64]*cfg.GameSmithyToolData, 0)
configure.RegisterConfigure(game_smithytools, cfg.NewGameSmithyTool, this.LoadSmithySkillData)
err = this.LoadConfigure(game_smithyreel, cfg.NewGameSmithyStove)
err = this.LoadConfigure(game_smithystove, cfg.NewGameSmithyStoveV1)
err = this.LoadConfigure(game_smithytools, cfg.NewGameSmithyTool)
err = this.LoadConfigure(game_smithystoveold, cfg.NewGameSmithyStove)
err = this.LoadConfigure(game_smithycustomer, cfg.NewGameSmithyCustomer)
return
}
@ -66,7 +85,7 @@ func (this *configureComp) GetSmithyTypeConfigData() (mapType map[int32]struct{}
// 获取炉子配置数据
func (this *configureComp) GetSmithyStoveConfigData(level int32) (data *cfg.GameSmithyStoveData) {
if v, err := this.GetConfigure(game_smithystove); err == nil {
if v, err := this.GetConfigure(game_smithystoveold); err == nil {
if configure, ok := v.(*cfg.GameSmithyStove); ok {
data = configure.Get(int32(level))
return
@ -75,7 +94,7 @@ func (this *configureComp) GetSmithyStoveConfigData(level int32) (data *cfg.Game
return
}
//加载多个配置文件
// 加载多个配置文件
func (this *configureComp) LoadMultiConfigure(confs map[string]interface{}) (err error) {
for k, v := range confs {
err = configure.RegisterConfigure(k, v, nil)
@ -87,7 +106,132 @@ func (this *configureComp) LoadMultiConfigure(confs map[string]interface{}) (err
return
}
//读取配置数据
// 读取配置数据
func (this *configureComp) GetConfigure(name string) (v interface{}, err error) {
return configure.GetConfigure(name)
}
// 获取图纸信息
func (this *configureComp) GetSmithyReelConfigData(id int32) (data *cfg.GameNewSmithyData) {
if v, err := this.GetConfigure(game_smithyreel); err == nil {
if configure, ok := v.(*cfg.GameNewSmithy); ok {
data = configure.Get(int32(id))
return
}
}
return
}
func (this *configureComp) CheckSmithyFirstReelConfigData(etype int32, id int32) bool {
if v, err := this.GetConfigure(game_smithyreel); err == nil {
if configure, ok := v.(*cfg.GameNewSmithy); ok {
for _, v := range configure.GetDataList() {
if v.Type == etype {
if v.Id == id {
return true
} else {
return false
}
}
}
return true
}
}
return false
}
// 获取铁匠铺熟练度数据
func (this *configureComp) GetSmithProficiencyConf(id int32) (data *cfg.GameSmithyProficiencyData) {
if v, err := this.GetConfigure(game_smproficiency); err == nil {
if configure, ok := v.(*cfg.GameSmithyProficiency); ok {
data = configure.Get(int32(id))
return
}
}
return
}
// 获取铁匠铺的工具台技能
func (this *configureComp) GetSmithySkill(skillType int32, skillLv int32) *cfg.GameSmithyToolData {
return this._mapskill[int64(skillType<<16)+int64(skillLv)]
}
func (this *configureComp) LoadSmithySkillData() {
if v, err := this.GetConfigure(game_smithytools); err == nil {
if configure, ok := v.(*cfg.GameSmithyTool); ok {
this.hlock.Lock()
defer this.hlock.Unlock()
for _, value := range configure.GetDataList() {
this._mapskill[int64(value.SkillType<<16)+int64(value.SkillLv)] = value
}
return
}
} else {
log.Errorf("get LoadSmithySkillData conf err:%v", err)
}
}
func (this *configureComp) LoadProficileData() {
if v, err := this.GetConfigure(game_smproficiency); err == nil {
if configure, ok := v.(*cfg.GameSmithyProficiency); ok {
this.hlock.Lock()
defer this.hlock.Unlock()
for _, value := range configure.GetDataList() {
this._mapProficile[int64(value.ReelId<<16)+int64(value.ProficiencyLv)] = value
}
return
}
} else {
log.Errorf("get game_pagoda conf err:%v", err)
}
return
}
func (this *configureComp) GetSmithyProficileData(reelid int32, proficile int32) *cfg.GameSmithyProficiencyData {
return this._mapProficile[int64(reelid<<16)+int64(proficile)]
}
// 获取铁匠铺顾客配置
func (this *configureComp) GetSmithyCustomerConfList() (data []*cfg.GameSmithyCustomerData) {
if v, err := this.GetConfigure(game_smithycustomer); err != nil {
if conf, ok := v.(*cfg.GameSmithyCustomer); ok {
data = conf.GetDataList()
return
}
}
return
}
func (this *configureComp) GetSmithyCustomerConf(id int32) *cfg.GameSmithyCustomerData {
if v, err := this.GetConfigure(game_smithycustomer); err == nil {
if configure, ok := v.(*cfg.GameSmithyCustomer); ok {
return configure.GetDataMap()[id]
}
}
return nil
}
// 获取铁匠铺工作台信息
func (this *configureComp) GetSmithyToolsData(id int32) (data *cfg.GameSmithyToolData) {
if v, err := this.GetConfigure(game_smithytools); err == nil {
if configure, ok := v.(*cfg.GameSmithyTool); ok {
data = configure.Get(int32(id))
return
}
}
return nil
}
func (this *configureComp) GetSmithyStoveConf(level int32) (data *cfg.GameSmithyStoveV1Data) {
if v, err := this.GetConfigure(game_smithystove); err == nil {
if configure, ok := v.(*cfg.GameSmithyStoveV1); ok {
data = configure.Get(int32(level))
return
}
}
return
}

View File

@ -186,33 +186,3 @@ func (this *modelSmithy) CalculationStoveSkillLv(uid string, Smithy *pb.DBSmithy
mapData["orderCostTime"] = Smithy.OrderCostTime
this.module.ModifySmithyData(uid, mapData)
}
// 获取铁匠铺信息
func (this *modelSmithy) getSmithyStoveList(uid string) (result *pb.DBStove, err error) {
result = &pb.DBStove{}
if err = this.Get(uid, result); err != nil {
if redis.RedisNil != err { // 没有数据直接创建新的数据
result.Id = primitive.NewObjectID().Hex()
result.Uid = uid
result.Data = make(map[int32]int32, 0)
result.Skill = make(map[int32]int32, 0)
result.Lv = 1
result.Temperature = 20000 // 配置
result.RecoveTime = 0
if err = this.Add(uid, result); err != nil {
this.module.Errorf("err:%v", err)
err = nil
return
}
}
return
}
err = nil
return result, err
}
func (this *modelSmithy) updateSmithyStove(uid string, update map[string]interface{}) (err error) {
err = this.Change(uid, update)
return err
}

View File

@ -0,0 +1,117 @@
package smithy
import (
"go_dreamfactory/comm"
"go_dreamfactory/lego/core"
"go_dreamfactory/lego/sys/redis"
"go_dreamfactory/modules"
"go_dreamfactory/pb"
"go_dreamfactory/sys/configure"
cfg "go_dreamfactory/sys/configure/structs"
"strconv"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/x/bsonx"
)
type modelStove struct {
modules.MCompModel
module *Smithy
}
func (this *modelStove) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
this.TableName = string(comm.TableStove)
err = this.MCompModel.Init(service, module, comp, options)
this.module = module.(*Smithy)
// uid 创建索引
this.DB.CreateIndex(core.SqlTable(this.TableName), mongo.IndexModel{
Keys: bsonx.Doc{{Key: "uid", Value: bsonx.Int32(1)}},
})
return
}
// 获取铁匠铺信息
func (this *modelStove) getSmithyStoveList(uid string) (result *pb.DBStove, err error) {
result = &pb.DBStove{}
if err = this.Get(uid, result); err != nil {
if redis.RedisNil != err { // 没有数据直接创建新的数据
result.Id = primitive.NewObjectID().Hex()
result.Uid = uid
result.Data = make(map[int32]*pb.Mastery, 0)
result.Skill = make(map[int32]int32, 0)
result.Forge = make(map[int32]int32, 0)
result.Lv = 1
result.Temperature = 20000 // 配置
result.RecoveTime = 0
if err = this.Add(uid, result); err != nil {
this.module.Errorf("err:%v", err)
err = nil
return
}
}
return
}
err = nil
return result, err
}
func (this *modelStove) updateSmithyStove(uid string, update map[string]interface{}) (err error) {
err = this.Change(uid, update)
return err
}
// 图纸属性 炉温消耗减少
func (this *modelStove) CheckTemperature(reelId int32, lv int32) (t int32) {
var index int32
for index = 1; index <= lv; index++ {
if cfg := this.module.configure.GetSmithyProficileData(reelId, index); cfg != nil {
if cfg.Type == comm.SmithyReelType1 {
t += cfg.Value1
}
}
}
return
}
// 检查消耗减少
func (this *modelStove) CheckForgeConsume(reelId int32, lv int32) (atn []*cfg.Gameatn) {
var index int32
for index = 1; index <= lv; index++ {
if cfgData := this.module.configure.GetSmithyProficileData(reelId, index); cfgData != nil {
if cfgData.Type == comm.SmithyReelType2 {
atn = append(atn, &cfg.Gameatn{
A: "item",
T: strconv.Itoa(int(cfgData.Value1)),
N: cfgData.Value2,
})
}
}
}
return
}
// 计算恢复进度
func (this *modelStove) calculationRecoveryT(uid string, stove *pb.DBStove) {
conf := this.module.configure.GetSmithyStoveConf(stove.Lv)
if conf == nil {
return
}
if stove.Temperature < conf.MaxTemperature {
update := make(map[string]interface{})
// 小于最高温度就开始恢复
addT := (configure.Now().Unix() - stove.RecoveTime) / int64(conf.TemperatureRecovery)
stove.Temperature += int32(addT)
if stove.Temperature > conf.MaxTemperature {
stove.Temperature = conf.MaxTemperature
stove.RecoveTime = 0
} else {
stove.RecoveTime += addT * int64(conf.TemperatureRecovery)
}
update["temperature"] = stove.Temperature
update["recoveTime"] = stove.RecoveTime
this.module.modelStove.updateSmithyStove(uid, update)
}
}

View File

@ -4,7 +4,12 @@ import (
"go_dreamfactory/comm"
"go_dreamfactory/lego/core"
"go_dreamfactory/modules"
"go_dreamfactory/pb"
"go_dreamfactory/sys/configure"
cfg "go_dreamfactory/sys/configure/structs"
"math/rand"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/x/bsonx"
)
@ -24,4 +29,107 @@ func (this *modelTrade) Init(service core.IService, module core.IModule, comp co
})
return
}
//
// 权重项目
type WeightedRandom struct {
items []*cfg.GameSmithyCustomerData
totalWeight int
}
func newWeightedRandom(items []*cfg.GameSmithyCustomerData) *WeightedRandom {
wr := &WeightedRandom{items: items}
for _, item := range wr.items {
wr.totalWeight += int(item.Weight)
}
return wr
}
func (wr *WeightedRandom) pick() *cfg.GameSmithyCustomerData {
randomNumber := rand.Intn(wr.totalWeight)
for _, item := range wr.items {
if randomNumber < int(item.Weight) {
return item
}
randomNumber -= int(item.Weight)
}
return nil
}
// 随机顾客
func (s *modelTrade) getCustomerRandom() (customerId int32) {
items := s.module.configure.GetSmithyCustomerConfList()
wr := newWeightedRandom(items)
if c := wr.pick(); c != nil {
customerId = c.CustomerId
}
return
}
func (s *modelTrade) getDBCustomer(uid string) (*pb.DBCustomer, error) {
customer := &pb.DBCustomer{}
if err := s.Get(uid, customer); err != nil {
s.module.Errorln(err)
return nil, err
}
return customer, nil
}
// 初始顾客
func (s *modelTrade) addCustomer(uid string, num int32) (*pb.DBCustomer, error) {
customer := &pb.DBCustomer{
Id: primitive.NewObjectID().Hex(),
Uid: uid,
Total: num,
LastRefreshTime: configure.Now().Unix(),
}
for i := 0; i < int(num); i++ {
customer.CustomerIds = append(customer.CustomerIds, s.getCustomerRandom())
}
if err := s.Add(uid, customer); err != nil {
s.module.Errorln(err)
return nil, err
}
return customer, nil
}
// 移除顾客
func (s *modelTrade) removeCustomer(cus *pb.DBCustomer, customerId int32) *pb.DBCustomer {
for i, v := range cus.CustomerIds {
if v == customerId {
cus.CustomerIds = append(cus.CustomerIds[:i], cus.CustomerIds[i+1:]...)
i--
}
}
return cus
}
// 随机新顾客
func (s *modelTrade) updateCustomer(uid string, customerId int32) error {
cus, err := s.getDBCustomer(uid)
if err == nil {
cus = s.removeCustomer(cus, customerId)
cus.Total++
//上限
limit := 20
left := limit - int(cus.Total)
if left <= 0 {
return comm.NewCustomError(pb.ErrorCode_SmithyCustomerLimit)
}
cus.CustomerIds = append(cus.CustomerIds, s.getCustomerRandom())
cus.LastRefreshTime = configure.Now().Unix()
update := map[string]interface{}{
"customerIds": cus.CustomerIds,
"total": cus.Total,
"lastRefreshTime": cus.LastRefreshTime,
}
if err := s.Change(uid, update); err != nil {
return err
}
}
return nil
}
//顾客类型策略
//交易

View File

@ -18,6 +18,7 @@ type Smithy struct {
modelTrade *modelTrade
api *apiComp
configure *configureComp
modelStove *modelStove
}
func NewModule() core.IModule {
@ -40,6 +41,7 @@ func (this *Smithy) OnInstallComp() {
this.modelSmithy = this.RegisterComp(new(modelSmithy)).(*modelSmithy)
this.configure = this.RegisterComp(new(configureComp)).(*configureComp)
this.modelTrade = this.RegisterComp(new(modelTrade)).(*modelTrade)
this.modelStove = this.RegisterComp(new(modelStove)).(*modelStove)
}
// 接口信息

View File

@ -315,6 +315,11 @@ const (
// AutoBattle
ErrorCode_AutoBattleNoData ErrorCode = 4001 //没有正在自动战斗的数据
ErrorCode_AutoBattleStatesErr ErrorCode = 4002 // 自动战斗状态错误
// smithy
ErrorCode_SmithyNoReel ErrorCode = 4101 // 没有激活图纸信息
ErrorCode_SmithyNoTemperature ErrorCode = 4102 // 炉温不够不能打造
ErrorCode_SmithyStoveMaxLv ErrorCode = 4103 // 炉子达到最大等级
ErrorCode_SmithyCustomerLimit ErrorCode = 4104 //顾客上限
)
// Enum value maps for ErrorCode.
@ -581,6 +586,10 @@ var (
3901: "AcademyTaskNoCompleteTask",
4001: "AutoBattleNoData",
4002: "AutoBattleStatesErr",
4101: "SmithyNoReel",
4102: "SmithyNoTemperature",
4103: "SmithyStoveMaxLv",
4104: "SmithyCustomerLimit",
}
ErrorCode_value = map[string]int32{
"Success": 0,
@ -844,6 +853,10 @@ var (
"AcademyTaskNoCompleteTask": 3901,
"AutoBattleNoData": 4001,
"AutoBattleStatesErr": 4002,
"SmithyNoReel": 4101,
"SmithyNoTemperature": 4102,
"SmithyStoveMaxLv": 4103,
"SmithyCustomerLimit": 4104,
}
)
@ -878,7 +891,7 @@ var File_errorcode_proto protoreflect.FileDescriptor
var file_errorcode_proto_rawDesc = []byte{
0x0a, 0x0f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2a, 0x92, 0x2f, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12,
0x6f, 0x2a, 0xf0, 0x2f, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12,
0x0b, 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d,
0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x10, 0x0a, 0x12,
0x1b, 0x0a, 0x17, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
@ -1255,8 +1268,14 @@ var file_errorcode_proto_rawDesc = []byte{
0x73, 0x6b, 0x10, 0xbd, 0x1e, 0x12, 0x15, 0x0a, 0x10, 0x41, 0x75, 0x74, 0x6f, 0x42, 0x61, 0x74,
0x74, 0x6c, 0x65, 0x4e, 0x6f, 0x44, 0x61, 0x74, 0x61, 0x10, 0xa1, 0x1f, 0x12, 0x18, 0x0a, 0x13,
0x41, 0x75, 0x74, 0x6f, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73,
0x45, 0x72, 0x72, 0x10, 0xa2, 0x1f, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x45, 0x72, 0x72, 0x10, 0xa2, 0x1f, 0x12, 0x11, 0x0a, 0x0c, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79,
0x4e, 0x6f, 0x52, 0x65, 0x65, 0x6c, 0x10, 0x85, 0x20, 0x12, 0x18, 0x0a, 0x13, 0x53, 0x6d, 0x69,
0x74, 0x68, 0x79, 0x4e, 0x6f, 0x54, 0x65, 0x6d, 0x70, 0x65, 0x72, 0x61, 0x74, 0x75, 0x72, 0x65,
0x10, 0x86, 0x20, 0x12, 0x15, 0x0a, 0x10, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x53, 0x74, 0x6f,
0x76, 0x65, 0x4d, 0x61, 0x78, 0x4c, 0x76, 0x10, 0x87, 0x20, 0x12, 0x18, 0x0a, 0x13, 0x53, 0x6d,
0x69, 0x74, 0x68, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69,
0x74, 0x10, 0x88, 0x20, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@ -20,26 +20,81 @@ const (
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
type Mastery struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Lv int32 `protobuf:"varint,1,opt,name=lv,proto3" json:"lv"`
Value int32 `protobuf:"varint,2,opt,name=value,proto3" json:"value"`
}
func (x *Mastery) Reset() {
*x = Mastery{}
if protoimpl.UnsafeEnabled {
mi := &file_smithy_smithy_db_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Mastery) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Mastery) ProtoMessage() {}
func (x *Mastery) ProtoReflect() protoreflect.Message {
mi := &file_smithy_smithy_db_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Mastery.ProtoReflect.Descriptor instead.
func (*Mastery) Descriptor() ([]byte, []int) {
return file_smithy_smithy_db_proto_rawDescGZIP(), []int{0}
}
func (x *Mastery) GetLv() int32 {
if x != nil {
return x.Lv
}
return 0
}
func (x *Mastery) GetValue() int32 {
if x != nil {
return x.Value
}
return 0
}
// 炉子信息
type DBStove struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" bson:"_id"` //ID
Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid" bson:"uid"` //用户ID
Lv int32 `protobuf:"varint,3,opt,name=lv,proto3" json:"lv"` // 炉子等级
Data map[int32]int32 `protobuf:"bytes,4,rep,name=data,proto3" json:"data" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // key 套装类型 value 熟练度
Skill map[int32]int32 `protobuf:"bytes,5,rep,name=skill,proto3" json:"skill" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 台子技能
Forge map[int32]int32 `protobuf:"bytes,6,rep,name=forge,proto3" json:"forge" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // key 套装类型 value 打造次数
Temperature int32 `protobuf:"varint,7,opt,name=temperature,proto3" json:"temperature"` // 炉子温度
RecoveTime int64 `protobuf:"varint,8,opt,name=recoveTime,proto3" json:"recoveTime"` // 恢复满时间
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" bson:"_id"` //ID
Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid" bson:"uid"` //用户ID
Lv int32 `protobuf:"varint,3,opt,name=lv,proto3" json:"lv"` // 炉子等级
Data map[int32]*Mastery `protobuf:"bytes,4,rep,name=data,proto3" json:"data" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // key 图纸ID value 熟练度
Skill map[int32]int32 `protobuf:"bytes,5,rep,name=skill,proto3" json:"skill" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 台子技能
Forge map[int32]int32 `protobuf:"bytes,6,rep,name=forge,proto3" json:"forge" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // key 套装类型 value 打造次数
Temperature int32 `protobuf:"varint,7,opt,name=temperature,proto3" json:"temperature"` // 炉子温度
RecoveTime int64 `protobuf:"varint,8,opt,name=recoveTime,proto3" json:"recoveTime"` // 恢复满时间
}
func (x *DBStove) Reset() {
*x = DBStove{}
if protoimpl.UnsafeEnabled {
mi := &file_smithy_smithy_db_proto_msgTypes[0]
mi := &file_smithy_smithy_db_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -52,7 +107,7 @@ func (x *DBStove) String() string {
func (*DBStove) ProtoMessage() {}
func (x *DBStove) ProtoReflect() protoreflect.Message {
mi := &file_smithy_smithy_db_proto_msgTypes[0]
mi := &file_smithy_smithy_db_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -65,7 +120,7 @@ func (x *DBStove) ProtoReflect() protoreflect.Message {
// Deprecated: Use DBStove.ProtoReflect.Descriptor instead.
func (*DBStove) Descriptor() ([]byte, []int) {
return file_smithy_smithy_db_proto_rawDescGZIP(), []int{0}
return file_smithy_smithy_db_proto_rawDescGZIP(), []int{1}
}
func (x *DBStove) GetId() string {
@ -89,7 +144,7 @@ func (x *DBStove) GetLv() int32 {
return 0
}
func (x *DBStove) GetData() map[int32]int32 {
func (x *DBStove) GetData() map[int32]*Mastery {
if x != nil {
return x.Data
}
@ -124,68 +179,20 @@ func (x *DBStove) GetRecoveTime() int64 {
return 0
}
// 商人信息
type DBBusiness struct {
type DBCustomer struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Shop map[int32]int32 `protobuf:"bytes,1,rep,name=shop,proto3" json:"shop" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" bson:"_id"` //ID
Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid" bson:"uid"` //
CustomerIds []int32 `protobuf:"varint,3,rep,packed,name=customerIds,proto3" json:"customerIds" bson:"customerIds"` // 顾客Ids
Total int32 `protobuf:"varint,4,opt,name=total,proto3" json:"total" bson:"total"` //顾客累计数
LastRefreshTime int64 `protobuf:"varint,5,opt,name=lastRefreshTime,proto3" json:"lastRefreshTime" bson:"lastRefreshTime"` // 上次更新时间
}
func (x *DBBusiness) Reset() {
*x = DBBusiness{}
if protoimpl.UnsafeEnabled {
mi := &file_smithy_smithy_db_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DBBusiness) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DBBusiness) ProtoMessage() {}
func (x *DBBusiness) ProtoReflect() protoreflect.Message {
mi := &file_smithy_smithy_db_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use DBBusiness.ProtoReflect.Descriptor instead.
func (*DBBusiness) Descriptor() ([]byte, []int) {
return file_smithy_smithy_db_proto_rawDescGZIP(), []int{1}
}
func (x *DBBusiness) GetShop() map[int32]int32 {
if x != nil {
return x.Shop
}
return nil
}
type DBBusinessData struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" bson:"_id"` //ID
Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid" bson:"uid"` //用户ID
Data []*DBBusiness `protobuf:"bytes,3,rep,name=data,proto3" json:"data"`
Count int32 `protobuf:"varint,4,opt,name=count,proto3" json:"count"` // 刷新次数
RefreshTime int64 `protobuf:"varint,5,opt,name=refreshTime,proto3" json:"refreshTime" bson:"refreshTime"` //刷新开始时间
}
func (x *DBBusinessData) Reset() {
*x = DBBusinessData{}
func (x *DBCustomer) Reset() {
*x = DBCustomer{}
if protoimpl.UnsafeEnabled {
mi := &file_smithy_smithy_db_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@ -193,13 +200,13 @@ func (x *DBBusinessData) Reset() {
}
}
func (x *DBBusinessData) String() string {
func (x *DBCustomer) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DBBusinessData) ProtoMessage() {}
func (*DBCustomer) ProtoMessage() {}
func (x *DBBusinessData) ProtoReflect() protoreflect.Message {
func (x *DBCustomer) ProtoReflect() protoreflect.Message {
mi := &file_smithy_smithy_db_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@ -211,42 +218,42 @@ func (x *DBBusinessData) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
// Deprecated: Use DBBusinessData.ProtoReflect.Descriptor instead.
func (*DBBusinessData) Descriptor() ([]byte, []int) {
// Deprecated: Use DBCustomer.ProtoReflect.Descriptor instead.
func (*DBCustomer) Descriptor() ([]byte, []int) {
return file_smithy_smithy_db_proto_rawDescGZIP(), []int{2}
}
func (x *DBBusinessData) GetId() string {
func (x *DBCustomer) GetId() string {
if x != nil {
return x.Id
}
return ""
}
func (x *DBBusinessData) GetUid() string {
func (x *DBCustomer) GetUid() string {
if x != nil {
return x.Uid
}
return ""
}
func (x *DBBusinessData) GetData() []*DBBusiness {
func (x *DBCustomer) GetCustomerIds() []int32 {
if x != nil {
return x.Data
return x.CustomerIds
}
return nil
}
func (x *DBBusinessData) GetCount() int32 {
func (x *DBCustomer) GetTotal() int32 {
if x != nil {
return x.Count
return x.Total
}
return 0
}
func (x *DBBusinessData) GetRefreshTime() int64 {
func (x *DBCustomer) GetLastRefreshTime() int64 {
if x != nil {
return x.RefreshTime
return x.LastRefreshTime
}
return 0
}
@ -653,111 +660,108 @@ var File_smithy_smithy_db_proto protoreflect.FileDescriptor
var file_smithy_smithy_db_proto_rawDesc = []byte{
0x0a, 0x16, 0x73, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x2f, 0x73, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x5f,
0x64, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa8, 0x03, 0x0a, 0x07, 0x44, 0x42, 0x53, 0x74, 0x6f, 0x76, 0x65,
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, 0x0e, 0x0a, 0x02, 0x6c, 0x76, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02,
0x6c, 0x76, 0x12, 0x26, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x12, 0x2e, 0x44, 0x42, 0x53, 0x74, 0x6f, 0x76, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45,
0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x29, 0x0a, 0x05, 0x73, 0x6b,
0x69, 0x6c, 0x6c, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x44, 0x42, 0x53, 0x74,
0x6f, 0x76, 0x65, 0x2e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05,
0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x12, 0x29, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x67, 0x65, 0x18, 0x06,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x44, 0x42, 0x53, 0x74, 0x6f, 0x76, 0x65, 0x2e, 0x46,
0x6f, 0x72, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x67, 0x65,
0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x65, 0x72, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18,
0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x65, 0x72, 0x61, 0x74, 0x75,
0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x54, 0x69, 0x6d, 0x65,
0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x54, 0x69,
0x6d, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 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, 0x1a, 0x38, 0x0a, 0x0a, 0x53,
0x72, 0x6f, 0x74, 0x6f, 0x22, 0x2f, 0x0a, 0x07, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x79, 0x12,
0x0e, 0x0a, 0x02, 0x6c, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x6c, 0x76, 0x12,
0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xb2, 0x03, 0x0a, 0x07, 0x44, 0x42, 0x53, 0x74, 0x6f, 0x76,
0x65, 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, 0x0e, 0x0a, 0x02, 0x6c, 0x76, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
0x02, 0x6c, 0x76, 0x12, 0x26, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x12, 0x2e, 0x44, 0x42, 0x53, 0x74, 0x6f, 0x76, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61,
0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x29, 0x0a, 0x05, 0x73,
0x6b, 0x69, 0x6c, 0x6c, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x44, 0x42, 0x53,
0x74, 0x6f, 0x76, 0x65, 0x2e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
0x05, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x12, 0x29, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x67, 0x65, 0x18,
0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x44, 0x42, 0x53, 0x74, 0x6f, 0x76, 0x65, 0x2e,
0x46, 0x6f, 0x72, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x67,
0x65, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x65, 0x72, 0x61, 0x74, 0x75, 0x72, 0x65,
0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x65, 0x72, 0x61, 0x74,
0x75, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x54, 0x69, 0x6d,
0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x54,
0x69, 0x6d, 0x65, 0x1a, 0x41, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79,
0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b,
0x65, 0x79, 0x12, 0x1e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x08, 0x2e, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c,
0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x38, 0x0a, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 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,
0x1a, 0x38, 0x0a, 0x0a, 0x46, 0x6f, 0x72, 0x67, 0x65, 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, 0x90, 0x01, 0x0a, 0x0a, 0x44,
0x42, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 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, 0x20, 0x0a, 0x0b, 0x63,
0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05,
0x52, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x14, 0x0a,
0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f,
0x74, 0x61, 0x6c, 0x12, 0x28, 0x0a, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x66, 0x72, 0x65,
0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x6c, 0x61,
0x73, 0x74, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xba, 0x01,
0x0a, 0x08, 0x44, 0x42, 0x54, 0x75, 0x6a, 0x69, 0x61, 0x6e, 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, 0x2d, 0x0a, 0x06,
0x74, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x44,
0x42, 0x54, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x2e, 0x54, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x45, 0x6e,
0x74, 0x72, 0x79, 0x52, 0x06, 0x74, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73,
0x6c, 0x69, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x6c, 0x69,
0x64, 0x65, 0x72, 0x1a, 0x45, 0x0a, 0x0b, 0x54, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x45, 0x6e, 0x74,
0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
0x03, 0x6b, 0x65, 0x79, 0x12, 0x20, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x46, 0x6f, 0x72, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52,
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x55, 0x0a, 0x09, 0x46, 0x6f,
0x72, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x6f, 0x72, 0x67, 0x65,
0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x6f, 0x72,
0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x6c, 0x76, 0x18, 0x02, 0x20,
0x01, 0x28, 0x05, 0x52, 0x02, 0x6c, 0x76, 0x12, 0x18, 0x0a, 0x07, 0x71, 0x75, 0x61, 0x6c, 0x69,
0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74,
0x79, 0x22, 0x4f, 0x0a, 0x05, 0x43, 0x6c, 0x61, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65,
0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x65,
0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05,
0x73, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x54, 0x69,
0x6d, 0x65, 0x22, 0x5a, 0x0a, 0x0a, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x6e, 0x67,
0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01,
0x28, 0x05, 0x52, 0x08, 0x64, 0x65, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05,
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75,
0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x65, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03,
0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6e, 0x65, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x82,
0x04, 0x0a, 0x08, 0x44, 0x42, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 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, 0x1c, 0x0a,
0x05, 0x63, 0x6c, 0x61, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x43,
0x6c, 0x61, 0x6e, 0x67, 0x52, 0x05, 0x63, 0x6c, 0x61, 0x6e, 0x67, 0x12, 0x23, 0x0a, 0x06, 0x6f,
0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x4f, 0x72,
0x64, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x6e, 0x67, 0x52, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73,
0x12, 0x21, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x0b, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x05, 0x69, 0x74,
0x65, 0x6d, 0x73, 0x12, 0x2a, 0x0a, 0x05, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x14, 0x2e, 0x44, 0x42, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x2e, 0x53, 0x6b,
0x69, 0x6c, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x12,
0x18, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x76, 0x65, 0x4c, 0x76, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05,
0x52, 0x07, 0x73, 0x74, 0x6f, 0x76, 0x65, 0x4c, 0x76, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x72, 0x64,
0x65, 0x72, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05,
0x52, 0x0d, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12,
0x14, 0x0a, 0x05, 0x63, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05,
0x63, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x64, 0x65, 0x73, 0x6b, 0x46, 0x6c, 0x6f,
0x6f, 0x72, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x44, 0x42, 0x53, 0x6d, 0x69,
0x74, 0x68, 0x79, 0x2e, 0x44, 0x65, 0x73, 0x6b, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x45, 0x6e, 0x74,
0x72, 0x79, 0x52, 0x09, 0x64, 0x65, 0x73, 0x6b, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x12, 0x1e, 0x0a,
0x0a, 0x73, 0x74, 0x6f, 0x76, 0x65, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28,
0x05, 0x52, 0x0a, 0x73, 0x74, 0x6f, 0x76, 0x65, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x12, 0x1c, 0x0a,
0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05,
0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x38, 0x0a, 0x0a, 0x53,
0x6b, 0x69, 0x6c, 0x6c, 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, 0x1a, 0x38, 0x0a, 0x0a, 0x46, 0x6f, 0x72, 0x67, 0x65, 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,
0x70, 0x0a, 0x0a, 0x44, 0x42, 0x42, 0x75, 0x73, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x29, 0x0a,
0x04, 0x73, 0x68, 0x6f, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x44, 0x42,
0x42, 0x75, 0x73, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x6e, 0x74,
0x72, 0x79, 0x52, 0x04, 0x73, 0x68, 0x6f, 0x70, 0x1a, 0x37, 0x0a, 0x09, 0x53, 0x68, 0x6f, 0x70,
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, 0x8b, 0x01, 0x0a, 0x0e, 0x44, 0x42, 0x42, 0x75, 0x73, 0x69, 0x6e, 0x65, 0x73, 0x73,
0x44, 0x61, 0x74, 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, 0x1f, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x44, 0x42, 0x42, 0x75, 0x73, 0x69, 0x6e, 0x65, 0x73,
0x73, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74,
0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a,
0x0b, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01,
0x28, 0x03, 0x52, 0x0b, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x22,
0xba, 0x01, 0x0a, 0x08, 0x44, 0x42, 0x54, 0x75, 0x6a, 0x69, 0x61, 0x6e, 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, 0x2d,
0x0a, 0x06, 0x74, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15,
0x2e, 0x44, 0x42, 0x54, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x2e, 0x54, 0x75, 0x6a, 0x69, 0x61, 0x6e,
0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x74, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x12, 0x16, 0x0a,
0x06, 0x73, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73,
0x6c, 0x69, 0x64, 0x65, 0x72, 0x1a, 0x45, 0x0a, 0x0b, 0x54, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x45,
0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x20, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x46, 0x6f, 0x72, 0x67, 0x65, 0x44, 0x61, 0x74,
0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x55, 0x0a, 0x09,
0x46, 0x6f, 0x72, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x6f, 0x72,
0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
0x6f, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x6c, 0x76, 0x18,
0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x6c, 0x76, 0x12, 0x18, 0x0a, 0x07, 0x71, 0x75, 0x61,
0x6c, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x71, 0x75, 0x61, 0x6c,
0x69, 0x74, 0x79, 0x22, 0x4f, 0x0a, 0x05, 0x43, 0x6c, 0x61, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x08,
0x64, 0x65, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08,
0x64, 0x65, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x54, 0x69, 0x6d,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14,
0x0a, 0x05, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73,
0x54, 0x69, 0x6d, 0x65, 0x22, 0x5a, 0x0a, 0x0a, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x6c, 0x61,
0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01,
0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x65, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14,
0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63,
0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x65, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65,
0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6e, 0x65, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65,
0x22, 0x82, 0x04, 0x0a, 0x08, 0x44, 0x42, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 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,
0x1c, 0x0a, 0x05, 0x63, 0x6c, 0x61, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06,
0x2e, 0x43, 0x6c, 0x61, 0x6e, 0x67, 0x52, 0x05, 0x63, 0x6c, 0x61, 0x6e, 0x67, 0x12, 0x23, 0x0a,
0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e,
0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x6e, 0x67, 0x52, 0x06, 0x6f, 0x72, 0x64, 0x65,
0x72, 0x73, 0x12, 0x21, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x0b, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x05,
0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x2a, 0x0a, 0x05, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x18, 0x06,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x44, 0x42, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x2e,
0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x73, 0x6b, 0x69, 0x6c,
0x6c, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x76, 0x65, 0x4c, 0x76, 0x18, 0x07, 0x20, 0x01,
0x28, 0x05, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x76, 0x65, 0x4c, 0x76, 0x12, 0x24, 0x0a, 0x0d, 0x6f,
0x72, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01,
0x28, 0x05, 0x52, 0x0d, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d,
0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03,
0x52, 0x05, 0x63, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x64, 0x65, 0x73, 0x6b, 0x46,
0x6c, 0x6f, 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x44, 0x42, 0x53,
0x6d, 0x69, 0x74, 0x68, 0x79, 0x2e, 0x44, 0x65, 0x73, 0x6b, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x45,
0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x64, 0x65, 0x73, 0x6b, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x12,
0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x76, 0x65, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x18, 0x0b, 0x20,
0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x74, 0x6f, 0x76, 0x65, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x12,
0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01,
0x28, 0x05, 0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x38, 0x0a,
0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 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, 0x1a, 0x3c, 0x0a, 0x0e, 0x44, 0x65, 0x73, 0x6b, 0x46,
0x6c, 0x6f, 0x6f, 0x72, 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, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x33,
0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3c, 0x0a, 0x0e, 0x44, 0x65, 0x73, 0x6b, 0x46, 0x6c, 0x6f,
0x6f, 0x72, 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, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x33,
}
var (
@ -772,43 +776,41 @@ func file_smithy_smithy_db_proto_rawDescGZIP() []byte {
return file_smithy_smithy_db_proto_rawDescData
}
var file_smithy_smithy_db_proto_msgTypes = make([]protoimpl.MessageInfo, 15)
var file_smithy_smithy_db_proto_msgTypes = make([]protoimpl.MessageInfo, 14)
var file_smithy_smithy_db_proto_goTypes = []interface{}{
(*DBStove)(nil), // 0: DBStove
(*DBBusiness)(nil), // 1: DBBusiness
(*DBBusinessData)(nil), // 2: DBBusinessData
(*DBTujian)(nil), // 3: DBTujian
(*ForgeData)(nil), // 4: ForgeData
(*Clang)(nil), // 5: Clang
(*OrderClang)(nil), // 6: OrderClang
(*DBSmithy)(nil), // 7: DBSmithy
nil, // 8: DBStove.DataEntry
nil, // 9: DBStove.SkillEntry
nil, // 10: DBStove.ForgeEntry
nil, // 11: DBBusiness.ShopEntry
nil, // 12: DBTujian.TujianEntry
nil, // 13: DBSmithy.SkillEntry
nil, // 14: DBSmithy.DeskFloorEntry
(*UserAssets)(nil), // 15: UserAssets
(*Mastery)(nil), // 0: Mastery
(*DBStove)(nil), // 1: DBStove
(*DBCustomer)(nil), // 2: DBCustomer
(*DBTujian)(nil), // 3: DBTujian
(*ForgeData)(nil), // 4: ForgeData
(*Clang)(nil), // 5: Clang
(*OrderClang)(nil), // 6: OrderClang
(*DBSmithy)(nil), // 7: DBSmithy
nil, // 8: DBStove.DataEntry
nil, // 9: DBStove.SkillEntry
nil, // 10: DBStove.ForgeEntry
nil, // 11: DBTujian.TujianEntry
nil, // 12: DBSmithy.SkillEntry
nil, // 13: DBSmithy.DeskFloorEntry
(*UserAssets)(nil), // 14: UserAssets
}
var file_smithy_smithy_db_proto_depIdxs = []int32{
8, // 0: DBStove.data:type_name -> DBStove.DataEntry
9, // 1: DBStove.skill:type_name -> DBStove.SkillEntry
10, // 2: DBStove.forge:type_name -> DBStove.ForgeEntry
11, // 3: DBBusiness.shop:type_name -> DBBusiness.ShopEntry
1, // 4: DBBusinessData.data:type_name -> DBBusiness
12, // 5: DBTujian.tujian:type_name -> DBTujian.TujianEntry
5, // 6: DBSmithy.clang:type_name -> Clang
6, // 7: DBSmithy.orders:type_name -> OrderClang
15, // 8: DBSmithy.items:type_name -> UserAssets
13, // 9: DBSmithy.skill:type_name -> DBSmithy.SkillEntry
14, // 10: DBSmithy.deskFloor:type_name -> DBSmithy.DeskFloorEntry
4, // 11: DBTujian.TujianEntry.value:type_name -> ForgeData
12, // [12:12] is the sub-list for method output_type
12, // [12:12] is the sub-list for method input_type
12, // [12:12] is the sub-list for extension type_name
12, // [12:12] is the sub-list for extension extendee
0, // [0:12] is the sub-list for field type_name
11, // 3: DBTujian.tujian:type_name -> DBTujian.TujianEntry
5, // 4: DBSmithy.clang:type_name -> Clang
6, // 5: DBSmithy.orders:type_name -> OrderClang
14, // 6: DBSmithy.items:type_name -> UserAssets
12, // 7: DBSmithy.skill:type_name -> DBSmithy.SkillEntry
13, // 8: DBSmithy.deskFloor:type_name -> DBSmithy.DeskFloorEntry
0, // 9: DBStove.DataEntry.value:type_name -> Mastery
4, // 10: DBTujian.TujianEntry.value:type_name -> ForgeData
11, // [11:11] is the sub-list for method output_type
11, // [11:11] is the sub-list for method input_type
11, // [11:11] is the sub-list for extension type_name
11, // [11:11] is the sub-list for extension extendee
0, // [0:11] is the sub-list for field type_name
}
func init() { file_smithy_smithy_db_proto_init() }
@ -819,7 +821,7 @@ func file_smithy_smithy_db_proto_init() {
file_comm_proto_init()
if !protoimpl.UnsafeEnabled {
file_smithy_smithy_db_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DBStove); i {
switch v := v.(*Mastery); i {
case 0:
return &v.state
case 1:
@ -831,7 +833,7 @@ func file_smithy_smithy_db_proto_init() {
}
}
file_smithy_smithy_db_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DBBusiness); i {
switch v := v.(*DBStove); i {
case 0:
return &v.state
case 1:
@ -843,7 +845,7 @@ func file_smithy_smithy_db_proto_init() {
}
}
file_smithy_smithy_db_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DBBusinessData); i {
switch v := v.(*DBCustomer); i {
case 0:
return &v.state
case 1:
@ -921,7 +923,7 @@ func file_smithy_smithy_db_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_smithy_smithy_db_proto_rawDesc,
NumEnums: 0,
NumMessages: 15,
NumMessages: 14,
NumExtensions: 0,
NumServices: 0,
},

View File

@ -112,9 +112,9 @@ type SmithyForgeEquipReq struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
EquipType int32 `protobuf:"varint,1,opt,name=equipType,proto3" json:"equipType"` // 装备类型
Lava int32 `protobuf:"varint,2,opt,name=lava,proto3" json:"lava"` // 添加熔岩
Quality int32 `protobuf:"varint,3,opt,name=quality,proto3" json:"quality"` // 精益制造
ReelId int32 `protobuf:"varint,1,opt,name=reelId,proto3" json:"reelId"` // 卷轴ID
Lava int32 `protobuf:"varint,2,opt,name=lava,proto3" json:"lava"` // 添加熔岩
Quality int32 `protobuf:"varint,3,opt,name=quality,proto3" json:"quality"` // 精益制造
}
func (x *SmithyForgeEquipReq) Reset() {
@ -149,9 +149,9 @@ func (*SmithyForgeEquipReq) Descriptor() ([]byte, []int) {
return file_smithy_smithy_msg_proto_rawDescGZIP(), []int{2}
}
func (x *SmithyForgeEquipReq) GetEquipType() int32 {
func (x *SmithyForgeEquipReq) GetReelId() int32 {
if x != nil {
return x.EquipType
return x.ReelId
}
return 0
}
@ -637,14 +637,14 @@ func (x *SmithyToolsUpResp) GetData() *DBStove {
}
// 刷新商人
type SmithyRefreshShopReq struct {
type SmithyCustomerReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *SmithyRefreshShopReq) Reset() {
*x = SmithyRefreshShopReq{}
func (x *SmithyCustomerReq) Reset() {
*x = SmithyCustomerReq{}
if protoimpl.UnsafeEnabled {
mi := &file_smithy_smithy_msg_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@ -652,13 +652,13 @@ func (x *SmithyRefreshShopReq) Reset() {
}
}
func (x *SmithyRefreshShopReq) String() string {
func (x *SmithyCustomerReq) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SmithyRefreshShopReq) ProtoMessage() {}
func (*SmithyCustomerReq) ProtoMessage() {}
func (x *SmithyRefreshShopReq) ProtoReflect() protoreflect.Message {
func (x *SmithyCustomerReq) ProtoReflect() protoreflect.Message {
mi := &file_smithy_smithy_msg_proto_msgTypes[12]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@ -670,21 +670,21 @@ func (x *SmithyRefreshShopReq) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
// Deprecated: Use SmithyRefreshShopReq.ProtoReflect.Descriptor instead.
func (*SmithyRefreshShopReq) Descriptor() ([]byte, []int) {
// Deprecated: Use SmithyCustomerReq.ProtoReflect.Descriptor instead.
func (*SmithyCustomerReq) Descriptor() ([]byte, []int) {
return file_smithy_smithy_msg_proto_rawDescGZIP(), []int{12}
}
type SmithyRefreshShopResp struct {
type SmithyCustomerResp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Data *DBBusiness `protobuf:"bytes,1,opt,name=data,proto3" json:"data"`
CustomerIds []int32 `protobuf:"varint,1,rep,packed,name=customerIds,proto3" json:"customerIds"` //顾客
}
func (x *SmithyRefreshShopResp) Reset() {
*x = SmithyRefreshShopResp{}
func (x *SmithyCustomerResp) Reset() {
*x = SmithyCustomerResp{}
if protoimpl.UnsafeEnabled {
mi := &file_smithy_smithy_msg_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@ -692,13 +692,13 @@ func (x *SmithyRefreshShopResp) Reset() {
}
}
func (x *SmithyRefreshShopResp) String() string {
func (x *SmithyCustomerResp) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SmithyRefreshShopResp) ProtoMessage() {}
func (*SmithyCustomerResp) ProtoMessage() {}
func (x *SmithyRefreshShopResp) ProtoReflect() protoreflect.Message {
func (x *SmithyCustomerResp) ProtoReflect() protoreflect.Message {
mi := &file_smithy_smithy_msg_proto_msgTypes[13]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@ -710,30 +710,30 @@ func (x *SmithyRefreshShopResp) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
// Deprecated: Use SmithyRefreshShopResp.ProtoReflect.Descriptor instead.
func (*SmithyRefreshShopResp) Descriptor() ([]byte, []int) {
// Deprecated: Use SmithyCustomerResp.ProtoReflect.Descriptor instead.
func (*SmithyCustomerResp) Descriptor() ([]byte, []int) {
return file_smithy_smithy_msg_proto_rawDescGZIP(), []int{13}
}
func (x *SmithyRefreshShopResp) GetData() *DBBusiness {
func (x *SmithyCustomerResp) GetCustomerIds() []int32 {
if x != nil {
return x.Data
return x.CustomerIds
}
return nil
}
// 出售装备
type SmithySellItemReq struct {
type SmithySellReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id"` // 装备ID
Count int32 `protobuf:"varint,2,opt,name=count,proto3" json:"count"` // 数量
Ids []int32 `protobuf:"varint,1,rep,packed,name=ids,proto3" json:"ids"` // 装备ID
CustomerId int32 `protobuf:"varint,2,opt,name=customerId,proto3" json:"customerId"` //顾客ID
}
func (x *SmithySellItemReq) Reset() {
*x = SmithySellItemReq{}
func (x *SmithySellReq) Reset() {
*x = SmithySellReq{}
if protoimpl.UnsafeEnabled {
mi := &file_smithy_smithy_msg_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@ -741,13 +741,13 @@ func (x *SmithySellItemReq) Reset() {
}
}
func (x *SmithySellItemReq) String() string {
func (x *SmithySellReq) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SmithySellItemReq) ProtoMessage() {}
func (*SmithySellReq) ProtoMessage() {}
func (x *SmithySellItemReq) ProtoReflect() protoreflect.Message {
func (x *SmithySellReq) ProtoReflect() protoreflect.Message {
mi := &file_smithy_smithy_msg_proto_msgTypes[14]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@ -759,35 +759,36 @@ func (x *SmithySellItemReq) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
// Deprecated: Use SmithySellItemReq.ProtoReflect.Descriptor instead.
func (*SmithySellItemReq) Descriptor() ([]byte, []int) {
// Deprecated: Use SmithySellReq.ProtoReflect.Descriptor instead.
func (*SmithySellReq) Descriptor() ([]byte, []int) {
return file_smithy_smithy_msg_proto_rawDescGZIP(), []int{14}
}
func (x *SmithySellItemReq) GetId() int32 {
func (x *SmithySellReq) GetIds() []int32 {
if x != nil {
return x.Id
return x.Ids
}
return nil
}
func (x *SmithySellReq) GetCustomerId() int32 {
if x != nil {
return x.CustomerId
}
return 0
}
func (x *SmithySellItemReq) GetCount() int32 {
if x != nil {
return x.Count
}
return 0
}
type SmithySellItemResp struct {
type SmithySellResp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Data *DBBusiness `protobuf:"bytes,1,opt,name=data,proto3" json:"data"`
CustomerId int32 `protobuf:"varint,1,opt,name=customerId,proto3" json:"customerId"` //顾客ID
Ids []int32 `protobuf:"varint,2,rep,packed,name=ids,proto3" json:"ids"` //出售的装备
}
func (x *SmithySellItemResp) Reset() {
*x = SmithySellItemResp{}
func (x *SmithySellResp) Reset() {
*x = SmithySellResp{}
if protoimpl.UnsafeEnabled {
mi := &file_smithy_smithy_msg_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@ -795,13 +796,13 @@ func (x *SmithySellItemResp) Reset() {
}
}
func (x *SmithySellItemResp) String() string {
func (x *SmithySellResp) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SmithySellItemResp) ProtoMessage() {}
func (*SmithySellResp) ProtoMessage() {}
func (x *SmithySellItemResp) ProtoReflect() protoreflect.Message {
func (x *SmithySellResp) ProtoReflect() protoreflect.Message {
mi := &file_smithy_smithy_msg_proto_msgTypes[15]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@ -813,14 +814,21 @@ func (x *SmithySellItemResp) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
// Deprecated: Use SmithySellItemResp.ProtoReflect.Descriptor instead.
func (*SmithySellItemResp) Descriptor() ([]byte, []int) {
// Deprecated: Use SmithySellResp.ProtoReflect.Descriptor instead.
func (*SmithySellResp) Descriptor() ([]byte, []int) {
return file_smithy_smithy_msg_proto_rawDescGZIP(), []int{15}
}
func (x *SmithySellItemResp) GetData() *DBBusiness {
func (x *SmithySellResp) GetCustomerId() int32 {
if x != nil {
return x.Data
return x.CustomerId
}
return 0
}
func (x *SmithySellResp) GetIds() []int32 {
if x != nil {
return x.Ids
}
return nil
}
@ -1380,95 +1388,96 @@ var file_smithy_smithy_msg_proto_rawDesc = []byte{
0x0a, 0x16, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x76, 0x65,
0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x44, 0x42, 0x53, 0x74, 0x6f, 0x76, 0x65,
0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x61, 0x0a, 0x13, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79,
0x46, 0x6f, 0x72, 0x67, 0x65, 0x45, 0x71, 0x75, 0x69, 0x70, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a,
0x09, 0x65, 0x71, 0x75, 0x69, 0x70, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
0x52, 0x09, 0x65, 0x71, 0x75, 0x69, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6c,
0x61, 0x76, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6c, 0x61, 0x76, 0x61, 0x12,
0x18, 0x0a, 0x07, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
0x52, 0x07, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x22, 0x4a, 0x0a, 0x14, 0x53, 0x6d, 0x69,
0x74, 0x68, 0x79, 0x46, 0x6f, 0x72, 0x67, 0x65, 0x45, 0x71, 0x75, 0x69, 0x70, 0x52, 0x65, 0x73,
0x70, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x71, 0x75, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
0x52, 0x05, 0x65, 0x71, 0x75, 0x69, 0x70, 0x12, 0x1c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18,
0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x44, 0x42, 0x53, 0x74, 0x6f, 0x76, 0x65, 0x52,
0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x79, 0x0a, 0x13, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x4f,
0x72, 0x64, 0x65, 0x72, 0x45, 0x71, 0x75, 0x69, 0x70, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07,
0x73, 0x75, 0x69, 0x74, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73,
0x75, 0x69, 0x74, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69,
0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69,
0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x61, 0x76, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
0x52, 0x04, 0x6c, 0x61, 0x76, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74,
0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79,
0x22, 0x4a, 0x0a, 0x14, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x45,
0x71, 0x75, 0x69, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x71, 0x75, 0x69,
0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x65, 0x71, 0x75, 0x69, 0x70, 0x12, 0x1c,
0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x44,
0x42, 0x53, 0x74, 0x6f, 0x76, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x12, 0x0a, 0x10,
0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x53, 0x74, 0x6f, 0x76, 0x65, 0x55, 0x70, 0x52, 0x65, 0x71,
0x22, 0x31, 0x0a, 0x11, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x53, 0x74, 0x6f, 0x76, 0x65, 0x55,
0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x5b, 0x0a, 0x13, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79,
0x46, 0x6f, 0x72, 0x67, 0x65, 0x45, 0x71, 0x75, 0x69, 0x70, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a,
0x06, 0x72, 0x65, 0x65, 0x6c, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x72,
0x65, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x61, 0x76, 0x61, 0x18, 0x02, 0x20,
0x01, 0x28, 0x05, 0x52, 0x04, 0x6c, 0x61, 0x76, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x71, 0x75, 0x61,
0x6c, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x71, 0x75, 0x61, 0x6c,
0x69, 0x74, 0x79, 0x22, 0x4a, 0x0a, 0x14, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x46, 0x6f, 0x72,
0x67, 0x65, 0x45, 0x71, 0x75, 0x69, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x65,
0x71, 0x75, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x65, 0x71, 0x75, 0x69,
0x70, 0x12, 0x1c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x08, 0x2e, 0x44, 0x42, 0x53, 0x74, 0x6f, 0x76, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22,
0x79, 0x0a, 0x13, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x45, 0x71,
0x75, 0x69, 0x70, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x69, 0x74, 0x65, 0x49,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x75, 0x69, 0x74, 0x65, 0x49, 0x64,
0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01,
0x28, 0x05, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04,
0x6c, 0x61, 0x76, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6c, 0x61, 0x76, 0x61,
0x12, 0x18, 0x0a, 0x07, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28,
0x05, 0x52, 0x07, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x22, 0x4a, 0x0a, 0x14, 0x53, 0x6d,
0x69, 0x74, 0x68, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x45, 0x71, 0x75, 0x69, 0x70, 0x52, 0x65,
0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x71, 0x75, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28,
0x05, 0x52, 0x05, 0x65, 0x71, 0x75, 0x69, 0x70, 0x12, 0x1c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61,
0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x44, 0x42, 0x53, 0x74, 0x6f, 0x76, 0x65,
0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x12, 0x0a, 0x10, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79,
0x53, 0x74, 0x6f, 0x76, 0x65, 0x55, 0x70, 0x52, 0x65, 0x71, 0x22, 0x31, 0x0a, 0x11, 0x53, 0x6d,
0x69, 0x74, 0x68, 0x79, 0x53, 0x74, 0x6f, 0x76, 0x65, 0x55, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12,
0x1c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e,
0x44, 0x42, 0x53, 0x74, 0x6f, 0x76, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x3d, 0x0a,
0x0d, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x52, 0x69, 0x73, 0x65, 0x52, 0x65, 0x71, 0x12, 0x16,
0x0a, 0x06, 0x69, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
0x69, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18,
0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x2e, 0x0a, 0x0e,
0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x52, 0x69, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1c,
0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x44,
0x42, 0x53, 0x74, 0x6f, 0x76, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x22, 0x0a, 0x10,
0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x54, 0x6f, 0x6f, 0x6c, 0x73, 0x55, 0x70, 0x52, 0x65, 0x71,
0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64,
0x22, 0x31, 0x0a, 0x11, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x54, 0x6f, 0x6f, 0x6c, 0x73, 0x55,
0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x44, 0x42, 0x53, 0x74, 0x6f, 0x76, 0x65, 0x52, 0x04, 0x64,
0x61, 0x74, 0x61, 0x22, 0x3d, 0x0a, 0x0d, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x52, 0x69, 0x73,
0x65, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05,
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75,
0x6e, 0x74, 0x22, 0x2e, 0x0a, 0x0e, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x52, 0x69, 0x73, 0x65,
0x52, 0x65, 0x73, 0x70, 0x12, 0x1c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x08, 0x2e, 0x44, 0x42, 0x53, 0x74, 0x6f, 0x76, 0x65, 0x52, 0x04, 0x64, 0x61,
0x74, 0x61, 0x22, 0x22, 0x0a, 0x10, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x54, 0x6f, 0x6f, 0x6c,
0x73, 0x55, 0x70, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x22, 0x31, 0x0a, 0x11, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79,
0x54, 0x6f, 0x6f, 0x6c, 0x73, 0x55, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1c, 0x0a, 0x04, 0x64,
0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x44, 0x42, 0x53, 0x74,
0x6f, 0x76, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x16, 0x0a, 0x14, 0x53, 0x6d, 0x69,
0x74, 0x68, 0x79, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x68, 0x6f, 0x70, 0x52, 0x65,
0x71, 0x22, 0x38, 0x0a, 0x15, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x52, 0x65, 0x66, 0x72, 0x65,
0x73, 0x68, 0x53, 0x68, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1f, 0x0a, 0x04, 0x64, 0x61,
0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x44, 0x42, 0x42, 0x75, 0x73,
0x69, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x39, 0x0a, 0x11, 0x53,
0x6d, 0x69, 0x74, 0x68, 0x79, 0x53, 0x65, 0x6c, 0x6c, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71,
0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64,
0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x35, 0x0a, 0x12, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79,
0x53, 0x65, 0x6c, 0x6c, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1f, 0x0a, 0x04,
0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x44, 0x42, 0x42,
0x75, 0x73, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x39, 0x0a,
0x14, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64,
0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x21, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x01,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x6e,
0x67, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0x36, 0x0a, 0x15, 0x53, 0x6d, 0x69, 0x74,
0x68, 0x79, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73,
0x70, 0x12, 0x1d, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x09, 0x2e, 0x44, 0x42, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61,
0x22, 0x14, 0x0a, 0x12, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x47, 0x65, 0x74, 0x52, 0x65, 0x77,
0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x22, 0x34, 0x0a, 0x13, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79,
0x47, 0x65, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1d, 0x0a,
0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x44, 0x42,
0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x32, 0x0a, 0x14,
0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x44, 0x65, 0x73, 0x6b, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c,
0x76, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65,
0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x65, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65,
0x22, 0x36, 0x0a, 0x15, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x44, 0x65, 0x73, 0x6b, 0x53, 0x6b,
0x69, 0x6c, 0x6c, 0x4c, 0x76, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1d, 0x0a, 0x04, 0x64, 0x61, 0x74,
0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x44, 0x42, 0x53, 0x6d, 0x69, 0x74,
0x68, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x17, 0x0a, 0x15, 0x53, 0x6d, 0x69, 0x74,
0x68, 0x79, 0x53, 0x74, 0x6f, 0x76, 0x65, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x76, 0x52, 0x65,
0x71, 0x22, 0x37, 0x0a, 0x16, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x53, 0x74, 0x6f, 0x76, 0x65,
0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x76, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1d, 0x0a, 0x04, 0x64,
0x61, 0x74, 0x61, 0x22, 0x13, 0x0a, 0x11, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x43, 0x75, 0x73,
0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x71, 0x22, 0x36, 0x0a, 0x12, 0x53, 0x6d, 0x69, 0x74,
0x68, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x20,
0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20,
0x03, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x73,
0x22, 0x41, 0x0a, 0x0d, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x53, 0x65, 0x6c, 0x6c, 0x52, 0x65,
0x71, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x03,
0x69, 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49,
0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65,
0x72, 0x49, 0x64, 0x22, 0x42, 0x0a, 0x0e, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x53, 0x65, 0x6c,
0x6c, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65,
0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f,
0x6d, 0x65, 0x72, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03,
0x28, 0x05, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x39, 0x0a, 0x14, 0x53, 0x6d, 0x69, 0x74, 0x68,
0x79, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12,
0x21, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b,
0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x6e, 0x67, 0x52, 0x05, 0x6f, 0x72, 0x64,
0x65, 0x72, 0x22, 0x36, 0x0a, 0x15, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x43, 0x72, 0x65, 0x61,
0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1d, 0x0a, 0x04, 0x64,
0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x44, 0x42, 0x53, 0x6d,
0x69, 0x74, 0x68, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x2e, 0x0a, 0x14, 0x53, 0x6d,
0x69, 0x74, 0x68, 0x79, 0x47, 0x65, 0x74, 0x52, 0x61, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52,
0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x65, 0x6f, 0x70, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01,
0x28, 0x05, 0x52, 0x06, 0x70, 0x65, 0x6f, 0x70, 0x6c, 0x65, 0x22, 0x34, 0x0a, 0x15, 0x53, 0x6d,
0x69, 0x74, 0x68, 0x79, 0x47, 0x65, 0x74, 0x52, 0x61, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52,
0x65, 0x73, 0x70, 0x12, 0x1b, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x07, 0x2e, 0x44, 0x42, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72,
0x22, 0x12, 0x0a, 0x10, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x47, 0x65, 0x74, 0x4c, 0x69, 0x73,
0x74, 0x52, 0x65, 0x71, 0x22, 0x32, 0x0a, 0x11, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x47, 0x65,
0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1d, 0x0a, 0x04, 0x64, 0x61, 0x74,
0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x44, 0x42, 0x53, 0x6d, 0x69, 0x74,
0x68, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62,
0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x69, 0x74, 0x68, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x14, 0x0a, 0x12, 0x53, 0x6d,
0x69, 0x74, 0x68, 0x79, 0x47, 0x65, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71,
0x22, 0x34, 0x0a, 0x13, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x47, 0x65, 0x74, 0x52, 0x65, 0x77,
0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1d, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x44, 0x42, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79,
0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x32, 0x0a, 0x14, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79,
0x44, 0x65, 0x73, 0x6b, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x76, 0x52, 0x65, 0x71, 0x12, 0x1a,
0x0a, 0x08, 0x64, 0x65, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
0x52, 0x08, 0x64, 0x65, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x22, 0x36, 0x0a, 0x15, 0x53, 0x6d,
0x69, 0x74, 0x68, 0x79, 0x44, 0x65, 0x73, 0x6b, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x76, 0x52,
0x65, 0x73, 0x70, 0x12, 0x1d, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x09, 0x2e, 0x44, 0x42, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x52, 0x04, 0x64, 0x61,
0x74, 0x61, 0x22, 0x17, 0x0a, 0x15, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x53, 0x74, 0x6f, 0x76,
0x65, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x76, 0x52, 0x65, 0x71, 0x22, 0x37, 0x0a, 0x16, 0x53,
0x6d, 0x69, 0x74, 0x68, 0x79, 0x53, 0x74, 0x6f, 0x76, 0x65, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c,
0x76, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1d, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x44, 0x42, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x52, 0x04,
0x64, 0x61, 0x74, 0x61, 0x22, 0x2e, 0x0a, 0x14, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x47, 0x65,
0x74, 0x52, 0x61, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06,
0x70, 0x65, 0x6f, 0x70, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x70, 0x65,
0x6f, 0x70, 0x6c, 0x65, 0x22, 0x34, 0x0a, 0x15, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x47, 0x65,
0x74, 0x52, 0x61, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1b, 0x0a,
0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x44, 0x42,
0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x12, 0x0a, 0x10, 0x53, 0x6d,
0x69, 0x74, 0x68, 0x79, 0x47, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x22, 0x32,
0x0a, 0x11, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x47, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52,
0x65, 0x73, 0x70, 0x12, 0x1d, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x09, 0x2e, 0x44, 0x42, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x52, 0x04, 0x64, 0x61,
0x74, 0x61, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x33,
}
var (
@ -1497,10 +1506,10 @@ var file_smithy_smithy_msg_proto_goTypes = []interface{}{
(*SmithyRiseResp)(nil), // 9: SmithyRiseResp
(*SmithyToolsUpReq)(nil), // 10: SmithyToolsUpReq
(*SmithyToolsUpResp)(nil), // 11: SmithyToolsUpResp
(*SmithyRefreshShopReq)(nil), // 12: SmithyRefreshShopReq
(*SmithyRefreshShopResp)(nil), // 13: SmithyRefreshShopResp
(*SmithySellItemReq)(nil), // 14: SmithySellItemReq
(*SmithySellItemResp)(nil), // 15: SmithySellItemResp
(*SmithyCustomerReq)(nil), // 12: SmithyCustomerReq
(*SmithyCustomerResp)(nil), // 13: SmithyCustomerResp
(*SmithySellReq)(nil), // 14: SmithySellReq
(*SmithySellResp)(nil), // 15: SmithySellResp
(*SmithyCreateOrderReq)(nil), // 16: SmithyCreateOrderReq
(*SmithyCreateOrderResp)(nil), // 17: SmithyCreateOrderResp
(*SmithyGetRewardReq)(nil), // 18: SmithyGetRewardReq
@ -1514,10 +1523,9 @@ var file_smithy_smithy_msg_proto_goTypes = []interface{}{
(*SmithyGetListReq)(nil), // 26: SmithyGetListReq
(*SmithyGetListResp)(nil), // 27: SmithyGetListResp
(*DBStove)(nil), // 28: DBStove
(*DBBusiness)(nil), // 29: DBBusiness
(*OrderClang)(nil), // 30: OrderClang
(*DBSmithy)(nil), // 31: DBSmithy
(*DBUser)(nil), // 32: DBUser
(*OrderClang)(nil), // 29: OrderClang
(*DBSmithy)(nil), // 30: DBSmithy
(*DBUser)(nil), // 31: DBUser
}
var file_smithy_smithy_msg_proto_depIdxs = []int32{
28, // 0: SmithyGetStoveInfoResp.data:type_name -> DBStove
@ -1526,20 +1534,18 @@ var file_smithy_smithy_msg_proto_depIdxs = []int32{
28, // 3: SmithyStoveUpResp.data:type_name -> DBStove
28, // 4: SmithyRiseResp.data:type_name -> DBStove
28, // 5: SmithyToolsUpResp.data:type_name -> DBStove
29, // 6: SmithyRefreshShopResp.data:type_name -> DBBusiness
29, // 7: SmithySellItemResp.data:type_name -> DBBusiness
30, // 8: SmithyCreateOrderReq.order:type_name -> OrderClang
31, // 9: SmithyCreateOrderResp.data:type_name -> DBSmithy
31, // 10: SmithyGetRewardResp.data:type_name -> DBSmithy
31, // 11: SmithyDeskSkillLvResp.data:type_name -> DBSmithy
31, // 12: SmithyStoveSkillLvResp.data:type_name -> DBSmithy
32, // 13: SmithyGetRandUserResp.user:type_name -> DBUser
31, // 14: SmithyGetListResp.data:type_name -> DBSmithy
15, // [15:15] is the sub-list for method output_type
15, // [15:15] is the sub-list for method input_type
15, // [15:15] is the sub-list for extension type_name
15, // [15:15] is the sub-list for extension extendee
0, // [0:15] is the sub-list for field type_name
29, // 6: SmithyCreateOrderReq.order:type_name -> OrderClang
30, // 7: SmithyCreateOrderResp.data:type_name -> DBSmithy
30, // 8: SmithyGetRewardResp.data:type_name -> DBSmithy
30, // 9: SmithyDeskSkillLvResp.data:type_name -> DBSmithy
30, // 10: SmithyStoveSkillLvResp.data:type_name -> DBSmithy
31, // 11: SmithyGetRandUserResp.user:type_name -> DBUser
30, // 12: SmithyGetListResp.data:type_name -> DBSmithy
13, // [13:13] is the sub-list for method output_type
13, // [13:13] is the sub-list for method input_type
13, // [13:13] is the sub-list for extension type_name
13, // [13:13] is the sub-list for extension extendee
0, // [0:13] is the sub-list for field type_name
}
func init() { file_smithy_smithy_msg_proto_init() }
@ -1695,7 +1701,7 @@ func file_smithy_smithy_msg_proto_init() {
}
}
file_smithy_smithy_msg_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SmithyRefreshShopReq); i {
switch v := v.(*SmithyCustomerReq); i {
case 0:
return &v.state
case 1:
@ -1707,7 +1713,7 @@ func file_smithy_smithy_msg_proto_init() {
}
}
file_smithy_smithy_msg_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SmithyRefreshShopResp); i {
switch v := v.(*SmithyCustomerResp); i {
case 0:
return &v.state
case 1:
@ -1719,7 +1725,7 @@ func file_smithy_smithy_msg_proto_init() {
}
}
file_smithy_smithy_msg_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SmithySellItemReq); i {
switch v := v.(*SmithySellReq); i {
case 0:
return &v.state
case 1:
@ -1731,7 +1737,7 @@ func file_smithy_smithy_msg_proto_init() {
}
}
file_smithy_smithy_msg_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SmithySellItemResp); i {
switch v := v.(*SmithySellResp); i {
case 0:
return &v.state
case 1:

View File

@ -0,0 +1,42 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
type GameNewSmithy struct {
_dataMap map[int32]*GameNewSmithyData
_dataList []*GameNewSmithyData
}
func NewGameNewSmithy(_buf []map[string]interface{}) (*GameNewSmithy, error) {
_dataList := make([]*GameNewSmithyData, 0, len(_buf))
dataMap := make(map[int32]*GameNewSmithyData)
for _, _ele_ := range _buf {
if _v, err2 := DeserializeGameNewSmithyData(_ele_); err2 != nil {
return nil, err2
} else {
_dataList = append(_dataList, _v)
dataMap[_v.Id] = _v
}
}
return &GameNewSmithy{_dataList:_dataList, _dataMap:dataMap}, nil
}
func (table *GameNewSmithy) GetDataMap() map[int32]*GameNewSmithyData {
return table._dataMap
}
func (table *GameNewSmithy) GetDataList() []*GameNewSmithyData {
return table._dataList
}
func (table *GameNewSmithy) Get(key int32) *GameNewSmithyData {
return table._dataMap[key]
}

View File

@ -0,0 +1,58 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
import "errors"
type GameNewSmithyData struct {
Id int32
ItemId int32
Type int32
Consume []*Gameatn
Temperature int32
Quality *Gameatn
}
const TypeId_GameNewSmithyData = -1249020316
func (*GameNewSmithyData) GetTypeId() int32 {
return -1249020316
}
func (_v *GameNewSmithyData)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["item_id"].(float64); !_ok_ { err = errors.New("item_id error"); return }; _v.ItemId = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["type"].(float64); !_ok_ { err = errors.New("type error"); return }; _v.Type = int32(_tempNum_) }
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["consume"].([]interface{}); !_ok_ { err = errors.New("consume error"); return }
_v.Consume = 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.Consume = append(_v.Consume, _list_v_)
}
}
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["temperature"].(float64); !_ok_ { err = errors.New("temperature error"); return }; _v.Temperature = int32(_tempNum_) }
{ var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _buf["quality"].(map[string]interface{}); !_ok_ { err = errors.New("quality error"); return }; if _v.Quality, err = DeserializeGameatn(_x_); err != nil { return } }
return
}
func DeserializeGameNewSmithyData(_buf map[string]interface{}) (*GameNewSmithyData, error) {
v := &GameNewSmithyData{}
if err := v.Deserialize(_buf); err == nil {
return v, nil
} else {
return nil, err
}
}

View File

@ -0,0 +1,42 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
type GameSmithyCustomer struct {
_dataMap map[int32]*GameSmithyCustomerData
_dataList []*GameSmithyCustomerData
}
func NewGameSmithyCustomer(_buf []map[string]interface{}) (*GameSmithyCustomer, error) {
_dataList := make([]*GameSmithyCustomerData, 0, len(_buf))
dataMap := make(map[int32]*GameSmithyCustomerData)
for _, _ele_ := range _buf {
if _v, err2 := DeserializeGameSmithyCustomerData(_ele_); err2 != nil {
return nil, err2
} else {
_dataList = append(_dataList, _v)
dataMap[_v.CustomerId] = _v
}
}
return &GameSmithyCustomer{_dataList:_dataList, _dataMap:dataMap}, nil
}
func (table *GameSmithyCustomer) GetDataMap() map[int32]*GameSmithyCustomerData {
return table._dataMap
}
func (table *GameSmithyCustomer) GetDataList() []*GameSmithyCustomerData {
return table._dataList
}
func (table *GameSmithyCustomer) Get(key int32) *GameSmithyCustomerData {
return table._dataMap[key]
}

View File

@ -0,0 +1,71 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
import "errors"
type GameSmithyCustomerData struct {
CustomerId int32
CustomerType int32
CustomerSpeak string
Goods []*Gameatn
Reword []*Gameatn
Weight int32
}
const TypeId_GameSmithyCustomerData = 1314583578
func (*GameSmithyCustomerData) GetTypeId() int32 {
return 1314583578
}
func (_v *GameSmithyCustomerData)Deserialize(_buf map[string]interface{}) (err error) {
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["customer_id"].(float64); !_ok_ { err = errors.New("customer_id error"); return }; _v.CustomerId = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["customer_type"].(float64); !_ok_ { err = errors.New("customer_type error"); return }; _v.CustomerType = int32(_tempNum_) }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["customer_speak"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.CustomerSpeak error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.CustomerSpeak, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["goods"].([]interface{}); !_ok_ { err = errors.New("goods error"); return }
_v.Goods = 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.Goods = append(_v.Goods, _list_v_)
}
}
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["reword"].([]interface{}); !_ok_ { err = errors.New("reword error"); return }
_v.Reword = 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.Reword = append(_v.Reword, _list_v_)
}
}
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["weight"].(float64); !_ok_ { err = errors.New("weight error"); return }; _v.Weight = int32(_tempNum_) }
return
}
func DeserializeGameSmithyCustomerData(_buf map[string]interface{}) (*GameSmithyCustomerData, error) {
v := &GameSmithyCustomerData{}
if err := v.Deserialize(_buf); err == nil {
return v, nil
} else {
return nil, err
}
}

View File

@ -0,0 +1,42 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
type GameSmithyProficiency struct {
_dataMap map[int32]*GameSmithyProficiencyData
_dataList []*GameSmithyProficiencyData
}
func NewGameSmithyProficiency(_buf []map[string]interface{}) (*GameSmithyProficiency, error) {
_dataList := make([]*GameSmithyProficiencyData, 0, len(_buf))
dataMap := make(map[int32]*GameSmithyProficiencyData)
for _, _ele_ := range _buf {
if _v, err2 := DeserializeGameSmithyProficiencyData(_ele_); err2 != nil {
return nil, err2
} else {
_dataList = append(_dataList, _v)
dataMap[_v.Id] = _v
}
}
return &GameSmithyProficiency{_dataList:_dataList, _dataMap:dataMap}, nil
}
func (table *GameSmithyProficiency) GetDataMap() map[int32]*GameSmithyProficiencyData {
return table._dataMap
}
func (table *GameSmithyProficiency) GetDataList() []*GameSmithyProficiencyData {
return table._dataList
}
func (table *GameSmithyProficiency) Get(key int32) *GameSmithyProficiencyData {
return table._dataMap[key]
}

View File

@ -0,0 +1,51 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
import "errors"
type GameSmithyProficiencyData struct {
Id int32
Proficiency int32
ReelId int32
ProficiencyLv int32
TitleText string
ContentText string
Type int32
Value1 int32
Value2 int32
}
const TypeId_GameSmithyProficiencyData = -1024047859
func (*GameSmithyProficiencyData) GetTypeId() int32 {
return -1024047859
}
func (_v *GameSmithyProficiencyData)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["proficiency"].(float64); !_ok_ { err = errors.New("proficiency error"); return }; _v.Proficiency = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["reelId"].(float64); !_ok_ { err = errors.New("reelId error"); return }; _v.ReelId = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["proficiency_lv"].(float64); !_ok_ { err = errors.New("proficiency_lv error"); return }; _v.ProficiencyLv = int32(_tempNum_) }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["title_text"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.TitleText error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.TitleText, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["content_text"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.ContentText error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.ContentText, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["type"].(float64); !_ok_ { err = errors.New("type error"); return }; _v.Type = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["value1"].(float64); !_ok_ { err = errors.New("value1 error"); return }; _v.Value1 = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["value2"].(float64); !_ok_ { err = errors.New("value2 error"); return }; _v.Value2 = int32(_tempNum_) }
return
}
func DeserializeGameSmithyProficiencyData(_buf map[string]interface{}) (*GameSmithyProficiencyData, error) {
v := &GameSmithyProficiencyData{}
if err := v.Deserialize(_buf); err == nil {
return v, nil
} else {
return nil, err
}
}

View File

@ -0,0 +1,42 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
type GameSmithyStoveV1 struct {
_dataMap map[int32]*GameSmithyStoveV1Data
_dataList []*GameSmithyStoveV1Data
}
func NewGameSmithyStoveV1(_buf []map[string]interface{}) (*GameSmithyStoveV1, error) {
_dataList := make([]*GameSmithyStoveV1Data, 0, len(_buf))
dataMap := make(map[int32]*GameSmithyStoveV1Data)
for _, _ele_ := range _buf {
if _v, err2 := DeserializeGameSmithyStoveV1Data(_ele_); err2 != nil {
return nil, err2
} else {
_dataList = append(_dataList, _v)
dataMap[_v.Star] = _v
}
}
return &GameSmithyStoveV1{_dataList:_dataList, _dataMap:dataMap}, nil
}
func (table *GameSmithyStoveV1) GetDataMap() map[int32]*GameSmithyStoveV1Data {
return table._dataMap
}
func (table *GameSmithyStoveV1) GetDataList() []*GameSmithyStoveV1Data {
return table._dataList
}
func (table *GameSmithyStoveV1) Get(key int32) *GameSmithyStoveV1Data {
return table._dataMap[key]
}

View File

@ -0,0 +1,56 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
import "errors"
type GameSmithyStoveV1Data struct {
Star int32
MaxTemperature int32
TemperatureRecovery int32
UpMaterial []*Gameatn
TitleText string
}
const TypeId_GameSmithyStoveV1Data = -1332837680
func (*GameSmithyStoveV1Data) GetTypeId() int32 {
return -1332837680
}
func (_v *GameSmithyStoveV1Data)Deserialize(_buf map[string]interface{}) (err error) {
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["star"].(float64); !_ok_ { err = errors.New("star error"); return }; _v.Star = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["max_temperature"].(float64); !_ok_ { err = errors.New("max_temperature error"); return }; _v.MaxTemperature = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["temperature_recovery"].(float64); !_ok_ { err = errors.New("temperature_recovery error"); return }; _v.TemperatureRecovery = int32(_tempNum_) }
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["up_material"].([]interface{}); !_ok_ { err = errors.New("up_material error"); return }
_v.UpMaterial = 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.UpMaterial = append(_v.UpMaterial, _list_v_)
}
}
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["title_text"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.TitleText error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.TitleText, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
return
}
func DeserializeGameSmithyStoveV1Data(_buf map[string]interface{}) (*GameSmithyStoveV1Data, error) {
v := &GameSmithyStoveV1Data{}
if err := v.Deserialize(_buf); err == nil {
return v, nil
} else {
return nil, err
}
}

View File

@ -0,0 +1,42 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
type GameSmithyTool struct {
_dataMap map[int32]*GameSmithyToolData
_dataList []*GameSmithyToolData
}
func NewGameSmithyTool(_buf []map[string]interface{}) (*GameSmithyTool, error) {
_dataList := make([]*GameSmithyToolData, 0, len(_buf))
dataMap := make(map[int32]*GameSmithyToolData)
for _, _ele_ := range _buf {
if _v, err2 := DeserializeGameSmithyToolData(_ele_); err2 != nil {
return nil, err2
} else {
_dataList = append(_dataList, _v)
dataMap[_v.Id] = _v
}
}
return &GameSmithyTool{_dataList:_dataList, _dataMap:dataMap}, nil
}
func (table *GameSmithyTool) GetDataMap() map[int32]*GameSmithyToolData {
return table._dataMap
}
func (table *GameSmithyTool) GetDataList() []*GameSmithyToolData {
return table._dataList
}
func (table *GameSmithyTool) Get(key int32) *GameSmithyToolData {
return table._dataMap[key]
}

View File

@ -0,0 +1,62 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
import "errors"
type GameSmithyToolData struct {
Id int32
SkillType int32
SkillLv int32
Preconditions int32
UpMaterial []*Gameatn
NameText string
ContentText string
Value int32
}
const TypeId_GameSmithyToolData = -2056914476
func (*GameSmithyToolData) GetTypeId() int32 {
return -2056914476
}
func (_v *GameSmithyToolData)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["skill_type"].(float64); !_ok_ { err = errors.New("skill_type error"); return }; _v.SkillType = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["skill_lv"].(float64); !_ok_ { err = errors.New("skill_lv error"); return }; _v.SkillLv = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["preconditions"].(float64); !_ok_ { err = errors.New("preconditions error"); return }; _v.Preconditions = int32(_tempNum_) }
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["up_material"].([]interface{}); !_ok_ { err = errors.New("up_material error"); return }
_v.UpMaterial = 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.UpMaterial = append(_v.UpMaterial, _list_v_)
}
}
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["name_text"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.NameText error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.NameText, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["content_text"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.ContentText error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.ContentText, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["value"].(float64); !_ok_ { err = errors.New("value error"); return }; _v.Value = int32(_tempNum_) }
return
}
func DeserializeGameSmithyToolData(_buf map[string]interface{}) (*GameSmithyToolData, error) {
v := &GameSmithyToolData{}
if err := v.Deserialize(_buf); err == nil {
return v, nil
} else {
return nil, err
}
}

View File

@ -31,14 +31,14 @@ func (*GameTrollGoodsData) GetTypeId() int32 {
func (_v *GameTrollGoodsData)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; if _v.Goodsname, _ok_ = _buf["goodsname"].(string); !_ok_ { err = errors.New("goodsname error"); return } }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["goodsname"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Goodsname error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Goodsname, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["goodsfor"].(float64); !_ok_ { err = errors.New("goodsfor error"); return }; _v.Goodsfor = int32(_tempNum_) }
{ var _ok_ bool; if _v.Goodsinfor, _ok_ = _buf["goodsinfor"].(string); !_ok_ { err = errors.New("goodsinfor error"); return } }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["goodsinfor"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Goodsinfor error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Goodsinfor, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
{ var _ok_ bool; if _v.Goodsicon, _ok_ = _buf["goodsicon"].(string); !_ok_ { err = errors.New("goodsicon error"); return } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["goodsprice"].(float64); !_ok_ { err = errors.New("goodsprice error"); return }; _v.Goodsprice = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["star_money"].(float64); !_ok_ { err = errors.New("star_money error"); return }; _v.StarMoney = int32(_tempNum_) }
{ var _ok_ bool; if _v.Uptext, _ok_ = _buf["uptext"].(string); !_ok_ { err = errors.New("uptext error"); return } }
{ var _ok_ bool; if _v.Suptext, _ok_ = _buf["suptext"].(string); !_ok_ { err = errors.New("suptext error"); return } }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["uptext"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Uptext error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Uptext, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["suptext"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Suptext error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Suptext, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["max"].(float64); !_ok_ { err = errors.New("max error"); return }; _v.Max = int32(_tempNum_) }
return
}

View File

@ -18,6 +18,9 @@ type GameWorldTaskData struct {
Group int32
Des int32
Icon string
TaskTname string
TaskName string
TaskDisplay string
Npc []string
GetafterEvent []int32
Completetask int32
@ -40,6 +43,9 @@ func (_v *GameWorldTaskData)Deserialize(_buf map[string]interface{}) (err error)
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["group"].(float64); !_ok_ { err = errors.New("group error"); return }; _v.Group = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["des"].(float64); !_ok_ { err = errors.New("des error"); return }; _v.Des = int32(_tempNum_) }
{ var _ok_ bool; if _v.Icon, _ok_ = _buf["icon"].(string); !_ok_ { err = errors.New("icon error"); return } }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["task_Tname"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.TaskTname error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.TaskTname, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["task_name"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.TaskName error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.TaskName, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["task_display"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.TaskDisplay error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.TaskDisplay, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
{
var _arr_ []interface{}
var _ok_ bool

View File

@ -0,0 +1,42 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
type Gamepandsmasexp struct {
_dataMap map[int32]*GamepandsmasexpData
_dataList []*GamepandsmasexpData
}
func NewGamepandsmasexp(_buf []map[string]interface{}) (*Gamepandsmasexp, error) {
_dataList := make([]*GamepandsmasexpData, 0, len(_buf))
dataMap := make(map[int32]*GamepandsmasexpData)
for _, _ele_ := range _buf {
if _v, err2 := DeserializeGamepandsmasexpData(_ele_); err2 != nil {
return nil, err2
} else {
_dataList = append(_dataList, _v)
dataMap[_v.Id] = _v
}
}
return &Gamepandsmasexp{_dataList:_dataList, _dataMap:dataMap}, nil
}
func (table *Gamepandsmasexp) GetDataMap() map[int32]*GamepandsmasexpData {
return table._dataMap
}
func (table *Gamepandsmasexp) GetDataList() []*GamepandsmasexpData {
return table._dataList
}
func (table *Gamepandsmasexp) Get(key int32) *GamepandsmasexpData {
return table._dataMap[key]
}

View File

@ -0,0 +1,143 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
import "errors"
type GamepandsmasexpData struct {
Id int32
Bossid int32
Name string
ReadyID int32
Difficulty int32
BattleReadyID int32
Captionrecommend []int32
Firstprize []*Gameatn
Dropshow []*Gameatn
Drop int32
Scene string
Bossmodel int32
BossSkill int32
Boss []int32
PsConsume []*Gameatn
PsMg []*Gameatn
}
const TypeId_GamepandsmasexpData = 192857656
func (*GamepandsmasexpData) GetTypeId() int32 {
return 192857656
}
func (_v *GamepandsmasexpData)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["bossid"].(float64); !_ok_ { err = errors.New("bossid error"); return }; _v.Bossid = 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["ReadyID"].(float64); !_ok_ { err = errors.New("ReadyID error"); return }; _v.ReadyID = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["difficulty"].(float64); !_ok_ { err = errors.New("difficulty error"); return }; _v.Difficulty = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["BattleReadyID"].(float64); !_ok_ { err = errors.New("BattleReadyID error"); return }; _v.BattleReadyID = int32(_tempNum_) }
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["captionrecommend"].([]interface{}); !_ok_ { err = errors.New("captionrecommend error"); return }
_v.Captionrecommend = make([]int32, 0, len(_arr_))
for _, _e_ := range _arr_ {
var _list_v_ int32
{ var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) }
_v.Captionrecommend = append(_v.Captionrecommend, _list_v_)
}
}
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["firstprize"].([]interface{}); !_ok_ { err = errors.New("firstprize error"); return }
_v.Firstprize = 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.Firstprize = append(_v.Firstprize, _list_v_)
}
}
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["dropshow"].([]interface{}); !_ok_ { err = errors.New("dropshow error"); return }
_v.Dropshow = 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.Dropshow = append(_v.Dropshow, _list_v_)
}
}
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["drop"].(float64); !_ok_ { err = errors.New("drop error"); return }; _v.Drop = int32(_tempNum_) }
{ var _ok_ bool; if _v.Scene, _ok_ = _buf["scene"].(string); !_ok_ { err = errors.New("scene error"); return } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["bossmodel"].(float64); !_ok_ { err = errors.New("bossmodel error"); return }; _v.Bossmodel = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["boss_skill"].(float64); !_ok_ { err = errors.New("boss_skill error"); return }; _v.BossSkill = int32(_tempNum_) }
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["boss"].([]interface{}); !_ok_ { err = errors.New("boss error"); return }
_v.Boss = make([]int32, 0, len(_arr_))
for _, _e_ := range _arr_ {
var _list_v_ int32
{ var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) }
_v.Boss = append(_v.Boss, _list_v_)
}
}
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["ps_consume"].([]interface{}); !_ok_ { err = errors.New("ps_consume error"); return }
_v.PsConsume = 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.PsConsume = append(_v.PsConsume, _list_v_)
}
}
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["ps_mg"].([]interface{}); !_ok_ { err = errors.New("ps_mg error"); return }
_v.PsMg = 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.PsMg = append(_v.PsMg, _list_v_)
}
}
return
}
func DeserializeGamepandsmasexpData(_buf map[string]interface{}) (*GamepandsmasexpData, error) {
v := &GamepandsmasexpData{}
if err := v.Deserialize(_buf); err == nil {
return v, nil
} else {
return nil, err
}
}

View File

@ -159,6 +159,12 @@ type Tables struct {
MainStartype *GameMainStartype
Battletasktesting *GameBattletasktesting
BattleReady *GameBattleReady
NewSmithy *GameNewSmithy
SmithyProficiency *GameSmithyProficiency
SmithyStoveV1 *GameSmithyStoveV1
SmithyTool *GameSmithyTool
pandsmasexp *Gamepandsmasexp
SmithyCustomer *GameSmithyCustomer
}
func NewTables(loader JsonLoader) (*Tables, error) {
@ -1054,5 +1060,41 @@ func NewTables(loader JsonLoader) (*Tables, error) {
if tables.BattleReady, err = NewGameBattleReady(buf) ; err != nil {
return nil, err
}
if buf, err = loader("game_newsmithy") ; err != nil {
return nil, err
}
if tables.NewSmithy, err = NewGameNewSmithy(buf) ; err != nil {
return nil, err
}
if buf, err = loader("game_smithyproficiency") ; err != nil {
return nil, err
}
if tables.SmithyProficiency, err = NewGameSmithyProficiency(buf) ; err != nil {
return nil, err
}
if buf, err = loader("game_smithystovev1") ; err != nil {
return nil, err
}
if tables.SmithyStoveV1, err = NewGameSmithyStoveV1(buf) ; err != nil {
return nil, err
}
if buf, err = loader("game_smithytool") ; err != nil {
return nil, err
}
if tables.SmithyTool, err = NewGameSmithyTool(buf) ; err != nil {
return nil, err
}
if buf, err = loader("game_pandsmasexp") ; err != nil {
return nil, err
}
if tables.pandsmasexp, err = NewGamepandsmasexp(buf) ; err != nil {
return nil, err
}
if buf, err = loader("game_smithycustomer") ; err != nil {
return nil, err
}
if tables.SmithyCustomer, err = NewGameSmithyCustomer(buf) ; err != nil {
return nil, err
}
return tables, nil
}