商队系统改造

This commit is contained in:
meixiongfeng 2023-04-24 20:35:03 +08:00
parent cc550d9da5
commit d511fb2756
26 changed files with 1781 additions and 171 deletions

View File

@ -5,7 +5,7 @@
"HeroCount": 5,
"readyScene": "scenesfight_role_interface_02",
"battleScenes": [
"scenesfight_03_02"
"scenesfight_07"
],
"disableAiCamera": 0,
"DefaultHero": 0,
@ -21,7 +21,7 @@
"HeroCount": 5,
"readyScene": "scenesfight_role_interface_02",
"battleScenes": [
"scenesfight_03_02"
"scenesfight_07"
],
"disableAiCamera": 0,
"DefaultHero": 0,
@ -37,7 +37,7 @@
"HeroCount": 5,
"readyScene": "scenesfight_role_interface_02",
"battleScenes": [
"scenesfight_03_02"
"scenesfight_05_01"
],
"disableAiCamera": 0,
"DefaultHero": 0,
@ -53,7 +53,7 @@
"HeroCount": 5,
"readyScene": "scenesfight_role_interface_02",
"battleScenes": [
"scenesfight_03_02"
"scenesfight_07"
],
"disableAiCamera": 0,
"DefaultHero": 0,
@ -69,7 +69,7 @@
"HeroCount": 5,
"readyScene": "scenesfight_role_interface_02",
"battleScenes": [
"scenesfight_03_02"
"scenesfight_07"
],
"disableAiCamera": 0,
"DefaultHero": 0,
@ -85,7 +85,7 @@
"HeroCount": 5,
"readyScene": "scenesfight_role_interface_02",
"battleScenes": [
"scenesfight_03_02"
"scenesfight_07"
],
"disableAiCamera": 0,
"DefaultHero": 0,
@ -101,7 +101,7 @@
"HeroCount": 5,
"readyScene": "scenesfight_role_interface_02",
"battleScenes": [
"scenesfight_03_02"
"scenesfight_07"
],
"disableAiCamera": 0,
"DefaultHero": 0,
@ -117,7 +117,7 @@
"HeroCount": 5,
"readyScene": "scenesfight_role_interface_02",
"battleScenes": [
"scenesfight_03_02"
"scenesfight_07"
],
"disableAiCamera": 0,
"DefaultHero": 0,
@ -133,7 +133,7 @@
"HeroCount": 5,
"readyScene": "scenesfight_role_interface_02",
"battleScenes": [
"scenesfight_03_02"
"scenesfight_07"
],
"disableAiCamera": 0,
"DefaultHero": 0,
@ -149,7 +149,7 @@
"HeroCount": 5,
"readyScene": "scenesfight_role_interface_02",
"battleScenes": [
"scenesfight_03_02"
"scenesfight_07"
],
"disableAiCamera": 0,
"DefaultHero": 0,
@ -165,7 +165,7 @@
"HeroCount": 5,
"readyScene": "scenesfight_role_interface_02",
"battleScenes": [
"scenesfight_03_02"
"scenesfight_07"
],
"disableAiCamera": 0,
"DefaultHero": 0,
@ -197,7 +197,7 @@
"HeroCount": 5,
"readyScene": "scenesfight_role_interface_02",
"battleScenes": [
"scenesfight_03_02"
"scenesfight_07"
],
"disableAiCamera": 0,
"DefaultHero": 0,
@ -213,7 +213,7 @@
"HeroCount": 5,
"readyScene": "scenesfight_role_interface_02",
"battleScenes": [
"scenesfight_03_02"
"scenesfight_07"
],
"disableAiCamera": 0,
"DefaultHero": 0,
@ -229,7 +229,7 @@
"HeroCount": 5,
"readyScene": "scenesfight_role_interface_02",
"battleScenes": [
"scenesfight_03_02"
"scenesfight_07"
],
"disableAiCamera": 0,
"DefaultHero": 0,

View File

@ -1,38 +1,77 @@
[
{
"num": "20030001",
"stime": 100,
"etime": 120,
"id": "20030001",
"name": {
"key": "",
"text": ""
},
"intr": {
"key": "",
"text": ""
},
"Color": 1,
"Img": "",
"access": [
107
],
"model": "",
"point": "",
"stime": 20,
"etime": 20,
"hp": 7,
"model": "",
"point": "",
"moderate": 0,
"sprint": 0,
"acceleration": 0,
"deceleration": 0
"moderate": 100,
"sprint": 200,
"acceleration": 100,
"deceleration": 100
},
{
"num": "20030002",
"stime": 100,
"etime": 120,
"hp": 5,
"id": "20030002",
"name": {
"key": "",
"text": ""
},
"intr": {
"key": "",
"text": ""
},
"Color": 1,
"Img": "",
"access": [
107
],
"model": "",
"point": "",
"moderate": 0,
"sprint": 0,
"acceleration": 0,
"deceleration": 0
"stime": 20,
"etime": 20,
"hp": 5,
"moderate": 100,
"sprint": 200,
"acceleration": 100,
"deceleration": 100
},
{
"num": "20030003",
"stime": 100,
"etime": 120,
"hp": 5,
"id": "20030003",
"name": {
"key": "",
"text": ""
},
"intr": {
"key": "",
"text": ""
},
"Color": 1,
"Img": "",
"access": [
107
],
"model": "",
"point": "",
"moderate": 0,
"sprint": 0,
"acceleration": 0,
"deceleration": 0
"stime": 20,
"etime": 20,
"hp": 5,
"moderate": 100,
"sprint": 200,
"acceleration": 100,
"deceleration": 100
}
]

View File

@ -2,6 +2,7 @@
{
"id": 1,
"model": "51004",
"idleAni": "kungfu_pavilion_action_1_act",
"weight": 1000,
"startstory": 4001,
"rejectstory": 4002,
@ -45,6 +46,7 @@
{
"id": 2,
"model": "51005",
"idleAni": "kungfu_pavilion_action_2_act",
"weight": 1000,
"startstory": 4001,
"rejectstory": 4002,

View File

@ -8,7 +8,7 @@
},
"icon": "xmwg_rw_pt1",
"taskcd": 200,
"tasktime": 168,
"tasktime": 65,
"tasktxt": {
"key": "Entrustment details of Po",
"text": "这是属于阿宝的专属委托"
@ -56,7 +56,7 @@
},
"icon": "xmwg_rw_pt2",
"taskcd": 200,
"tasktime": 124,
"tasktime": 143,
"tasktxt": {
"key": "Entrustment details of Bobi",
"text": "这是属于波比的专属委托"
@ -104,7 +104,7 @@
},
"icon": "xmwg_rw_pt3",
"taskcd": 200,
"tasktime": 125,
"tasktime": 68,
"tasktxt": {
"key": "Entrustment details of Tiger",
"text": "这是属于悍娇虎的专属委托"
@ -152,7 +152,7 @@
},
"icon": "xmwg_rw_pt4",
"taskcd": 200,
"tasktime": 169,
"tasktime": 80,
"tasktxt": {
"key": "Entrustment details of Shifu",
"text": "这是属于师父的专属委托"
@ -200,7 +200,7 @@
},
"icon": "xmwg_rw_pt5",
"taskcd": 200,
"tasktime": 176,
"tasktime": 157,
"tasktxt": {
"key": "Entrustment details of Po",
"text": "这是属于阿宝的专属委托"
@ -248,7 +248,7 @@
},
"icon": "xmwg_rw_pt6",
"taskcd": 200,
"tasktime": 97,
"tasktime": 179,
"tasktxt": {
"key": "Entrustment details of Bobi",
"text": "这是属于波比的专属委托"
@ -296,7 +296,7 @@
},
"icon": "xmwg_rw_pt7",
"taskcd": 200,
"tasktime": 66,
"tasktime": 175,
"tasktxt": {
"key": "Entrustment details of Tiger",
"text": "这是属于悍娇虎的专属委托"
@ -344,7 +344,7 @@
},
"icon": "xmwg_rw_pt1",
"taskcd": 200,
"tasktime": 173,
"tasktime": 75,
"tasktxt": {
"key": "Entrustment details of Shifu",
"text": "这是属于师父的专属委托"
@ -392,7 +392,7 @@
},
"icon": "xmwg_rw_pt2",
"taskcd": 200,
"tasktime": 104,
"tasktime": 86,
"tasktxt": {
"key": "Entrustment details of Po",
"text": "这是属于阿宝的专属委托"
@ -440,7 +440,7 @@
},
"icon": "xmwg_rw_pt3",
"taskcd": 200,
"tasktime": 77,
"tasktime": 119,
"tasktxt": {
"key": "Entrustment details of Bobi",
"text": "这是属于波比的专属委托"
@ -488,7 +488,7 @@
},
"icon": "xmwg_rw_pt4",
"taskcd": 200,
"tasktime": 180,
"tasktime": 144,
"tasktxt": {
"key": "Entrustment details of Tiger",
"text": "这是属于悍娇虎的专属委托"
@ -536,7 +536,7 @@
},
"icon": "xmwg_rw_pt5",
"taskcd": 200,
"tasktime": 91,
"tasktime": 167,
"tasktxt": {
"key": "Entrustment details of Shifu",
"text": "这是属于师父的专属委托"
@ -632,7 +632,7 @@
},
"icon": "xmwg_rw_pt7",
"taskcd": 200,
"tasktime": 95,
"tasktime": 87,
"tasktxt": {
"key": "Entrustment details of Bobi",
"text": "这是属于波比的专属委托"
@ -680,7 +680,7 @@
},
"icon": "xmwg_rw_pt1",
"taskcd": 200,
"tasktime": 86,
"tasktime": 133,
"tasktxt": {
"key": "Entrustment details of Tiger",
"text": "这是属于悍娇虎的专属委托"
@ -728,7 +728,7 @@
},
"icon": "xmwg_rw_pt2",
"taskcd": 200,
"tasktime": 162,
"tasktime": 172,
"tasktxt": {
"key": "Entrustment details of Shifu",
"text": "这是属于师父的专属委托"
@ -776,7 +776,7 @@
},
"icon": "xmwg_rw_pt3",
"taskcd": 200,
"tasktime": 175,
"tasktime": 164,
"tasktxt": {
"key": "Entrustment details of Po",
"text": "这是属于阿宝的专属委托"
@ -824,7 +824,7 @@
},
"icon": "xmwg_rw_pt4",
"taskcd": 200,
"tasktime": 63,
"tasktime": 85,
"tasktxt": {
"key": "Entrustment details of Bobi",
"text": "这是属于波比的专属委托"
@ -872,7 +872,7 @@
},
"icon": "xmwg_rw_pt5",
"taskcd": 200,
"tasktime": 131,
"tasktime": 115,
"tasktxt": {
"key": "Entrustment details of Tiger",
"text": "这是属于悍娇虎的专属委托"
@ -920,7 +920,7 @@
},
"icon": "xmwg_rw_pt6",
"taskcd": 200,
"tasktime": 155,
"tasktime": 148,
"tasktxt": {
"key": "Entrustment details of Shifu",
"text": "这是属于师父的专属委托"
@ -968,7 +968,7 @@
},
"icon": "xmwg_rw_pt7",
"taskcd": 200,
"tasktime": 76,
"tasktime": 118,
"tasktxt": {
"key": "Entrustment details of Po",
"text": "这是属于阿宝的专属委托"
@ -1016,7 +1016,7 @@
},
"icon": "xmwg_rw_pt1",
"taskcd": 200,
"tasktime": 101,
"tasktime": 174,
"tasktxt": {
"key": "Entrustment details of Bobi",
"text": "这是属于波比的专属委托"
@ -1064,7 +1064,7 @@
},
"icon": "xmwg_rw_pt2",
"taskcd": 200,
"tasktime": 158,
"tasktime": 140,
"tasktxt": {
"key": "Entrustment details of Tiger",
"text": "这是属于悍娇虎的专属委托"
@ -1112,7 +1112,7 @@
},
"icon": "xmwg_rw_pt3",
"taskcd": 200,
"tasktime": 172,
"tasktime": 147,
"tasktxt": {
"key": "Entrustment details of Shifu",
"text": "这是属于师父的专属委托"
@ -1160,7 +1160,7 @@
},
"icon": "xmwg_rw_pt4",
"taskcd": 200,
"tasktime": 116,
"tasktime": 120,
"tasktxt": {
"key": "Entrustment details of Po",
"text": "这是属于阿宝的专属委托"
@ -1256,7 +1256,7 @@
},
"icon": "xmwg_rw_pt6",
"taskcd": 200,
"tasktime": 60,
"tasktime": 170,
"tasktxt": {
"key": "Entrustment details of Tiger",
"text": "这是属于悍娇虎的专属委托"
@ -1304,7 +1304,7 @@
},
"icon": "xmwg_rw_pt7",
"taskcd": 200,
"tasktime": 134,
"tasktime": 149,
"tasktxt": {
"key": "Entrustment details of Shifu",
"text": "这是属于师父的专属委托"
@ -1352,7 +1352,7 @@
},
"icon": "xmwg_rw_pt1",
"taskcd": 200,
"tasktime": 125,
"tasktime": 132,
"tasktxt": {
"key": "Entrustment details of Po",
"text": "这是属于阿宝的专属委托"
@ -1400,7 +1400,7 @@
},
"icon": "xmwg_rw_pt2",
"taskcd": 200,
"tasktime": 131,
"tasktime": 87,
"tasktxt": {
"key": "Entrustment details of Bobi",
"text": "这是属于波比的专属委托"
@ -1448,7 +1448,7 @@
},
"icon": "xmwg_rw_pt3",
"taskcd": 200,
"tasktime": 118,
"tasktime": 149,
"tasktxt": {
"key": "Entrustment details of Tiger",
"text": "这是属于悍娇虎的专属委托"
@ -1496,7 +1496,7 @@
},
"icon": "xmwg_rw_pt4",
"taskcd": 200,
"tasktime": 148,
"tasktime": 164,
"tasktxt": {
"key": "Entrustment details of Shifu",
"text": "这是属于师父的专属委托"
@ -1544,7 +1544,7 @@
},
"icon": "xmwg_rw_pt5",
"taskcd": 200,
"tasktime": 64,
"tasktime": 85,
"tasktxt": {
"key": "Entrustment details of Po",
"text": "这是属于阿宝的专属委托"
@ -1592,7 +1592,7 @@
},
"icon": "xmwg_rw_pt6",
"taskcd": 200,
"tasktime": 110,
"tasktime": 148,
"tasktxt": {
"key": "Entrustment details of Bobi",
"text": "这是属于波比的专属委托"
@ -1640,7 +1640,7 @@
},
"icon": "xmwg_rw_pt7",
"taskcd": 200,
"tasktime": 151,
"tasktime": 131,
"tasktxt": {
"key": "Entrustment details of Tiger",
"text": "这是属于悍娇虎的专属委托"
@ -1688,7 +1688,7 @@
},
"icon": "xmwg_rw_pt1",
"taskcd": 200,
"tasktime": 101,
"tasktime": 125,
"tasktxt": {
"key": "Entrustment details of Shifu",
"text": "这是属于师父的专属委托"
@ -1736,7 +1736,7 @@
},
"icon": "xmwg_rw_pt2",
"taskcd": 200,
"tasktime": 96,
"tasktime": 93,
"tasktxt": {
"key": "Entrustment details of Po",
"text": "这是属于阿宝的专属委托"
@ -1784,7 +1784,7 @@
},
"icon": "xmwg_rw_pt3",
"taskcd": 200,
"tasktime": 61,
"tasktime": 162,
"tasktxt": {
"key": "Entrustment details of Bobi",
"text": "这是属于波比的专属委托"
@ -1832,7 +1832,7 @@
},
"icon": "xmwg_rw_pt4",
"taskcd": 200,
"tasktime": 151,
"tasktime": 119,
"tasktxt": {
"key": "Entrustment details of Tiger",
"text": "这是属于悍娇虎的专属委托"
@ -1880,7 +1880,7 @@
},
"icon": "xmwg_rw_pt5",
"taskcd": 200,
"tasktime": 85,
"tasktime": 63,
"tasktxt": {
"key": "Entrustment details of Shifu",
"text": "这是属于师父的专属委托"
@ -1928,7 +1928,7 @@
},
"icon": "xmwg_rw_pt6",
"taskcd": 200,
"tasktime": 132,
"tasktime": 136,
"tasktxt": {
"key": "Entrustment details of Po",
"text": "这是属于阿宝的专属委托"
@ -1976,7 +1976,7 @@
},
"icon": "xmwg_rw_pt7",
"taskcd": 200,
"tasktime": 74,
"tasktime": 135,
"tasktxt": {
"key": "Entrustment details of Bobi",
"text": "这是属于波比的专属委托"
@ -2024,7 +2024,7 @@
},
"icon": "xmwg_rw_pt1",
"taskcd": 200,
"tasktime": 98,
"tasktime": 69,
"tasktxt": {
"key": "Entrustment details of Tiger",
"text": "这是属于悍娇虎的专属委托"
@ -2072,7 +2072,7 @@
},
"icon": "xmwg_rw_pt2",
"taskcd": 200,
"tasktime": 153,
"tasktime": 103,
"tasktxt": {
"key": "Entrustment details of Shifu",
"text": "这是属于师父的专属委托"
@ -2120,7 +2120,7 @@
},
"icon": "xmwg_rw_pt3",
"taskcd": 200,
"tasktime": 162,
"tasktime": 66,
"tasktxt": {
"key": "Entrustment details of Po",
"text": "这是属于阿宝的专属委托"
@ -2168,7 +2168,7 @@
},
"icon": "xmwg_rw_pt4",
"taskcd": 200,
"tasktime": 117,
"tasktime": 169,
"tasktxt": {
"key": "Entrustment details of Bobi",
"text": "这是属于波比的专属委托"
@ -2216,7 +2216,7 @@
},
"icon": "xmwg_rw_pt5",
"taskcd": 200,
"tasktime": 71,
"tasktime": 112,
"tasktxt": {
"key": "Entrustment details of Tiger",
"text": "这是属于悍娇虎的专属委托"
@ -2264,7 +2264,7 @@
},
"icon": "xmwg_rw_pt6",
"taskcd": 200,
"tasktime": 119,
"tasktime": 62,
"tasktxt": {
"key": "Entrustment details of Shifu",
"text": "这是属于师父的专属委托"
@ -2312,7 +2312,7 @@
},
"icon": "xmwg_rw_pt7",
"taskcd": 200,
"tasktime": 166,
"tasktime": 92,
"tasktxt": {
"key": "Entrustment details of Po",
"text": "这是属于阿宝的专属委托"
@ -2360,7 +2360,7 @@
},
"icon": "xmwg_rw_pt1",
"taskcd": 200,
"tasktime": 100,
"tasktime": 156,
"tasktxt": {
"key": "Entrustment details of Bobi",
"text": "这是属于波比的专属委托"
@ -2408,7 +2408,7 @@
},
"icon": "xmwg_rw_pt2",
"taskcd": 200,
"tasktime": 148,
"tasktime": 92,
"tasktxt": {
"key": "Entrustment details of Tiger",
"text": "这是属于悍娇虎的专属委托"
@ -2456,7 +2456,7 @@
},
"icon": "xmwg_rw_pt3",
"taskcd": 200,
"tasktime": 154,
"tasktime": 170,
"tasktxt": {
"key": "Entrustment details of Shifu",
"text": "这是属于师父的专属委托"
@ -2504,7 +2504,7 @@
},
"icon": "xmwg_rw_pt4",
"taskcd": 200,
"tasktime": 119,
"tasktime": 69,
"tasktxt": {
"key": "Entrustment details of Po",
"text": "这是属于阿宝的专属委托"
@ -2552,7 +2552,7 @@
},
"icon": "xmwg_rw_pt5",
"taskcd": 200,
"tasktime": 93,
"tasktime": 75,
"tasktxt": {
"key": "Entrustment details of Bobi",
"text": "这是属于波比的专属委托"
@ -2600,7 +2600,7 @@
},
"icon": "xmwg_rw_pt6",
"taskcd": 200,
"tasktime": 163,
"tasktime": 80,
"tasktxt": {
"key": "Entrustment details of Tiger",
"text": "这是属于悍娇虎的专属委托"
@ -2648,7 +2648,7 @@
},
"icon": "xmwg_rw_pt7",
"taskcd": 200,
"tasktime": 180,
"tasktime": 134,
"tasktxt": {
"key": "Entrustment details of Shifu",
"text": "这是属于师父的专属委托"
@ -2696,7 +2696,7 @@
},
"icon": "xmwg_rw_pt1",
"taskcd": 200,
"tasktime": 104,
"tasktime": 120,
"tasktxt": {
"key": "Entrustment details of Po",
"text": "这是属于阿宝的专属委托"
@ -2744,7 +2744,7 @@
},
"icon": "xmwg_rw_pt2",
"taskcd": 200,
"tasktime": 119,
"tasktime": 117,
"tasktxt": {
"key": "Entrustment details of Bobi",
"text": "这是属于波比的专属委托"
@ -2792,7 +2792,7 @@
},
"icon": "xmwg_rw_pt3",
"taskcd": 200,
"tasktime": 103,
"tasktime": 119,
"tasktxt": {
"key": "Entrustment details of Tiger",
"text": "这是属于悍娇虎的专属委托"
@ -2840,7 +2840,7 @@
},
"icon": "xmwg_rw_pt4",
"taskcd": 200,
"tasktime": 164,
"tasktime": 109,
"tasktxt": {
"key": "Entrustment details of Shifu",
"text": "这是属于师父的专属委托"
@ -2888,7 +2888,7 @@
},
"icon": "xmwg_rw_pt5",
"taskcd": 200,
"tasktime": 90,
"tasktime": 114,
"tasktxt": {
"key": "Entrustment details of Po",
"text": "这是属于阿宝的专属委托"
@ -2936,7 +2936,7 @@
},
"icon": "xmwg_rw_pt6",
"taskcd": 200,
"tasktime": 113,
"tasktime": 70,
"tasktxt": {
"key": "Entrustment details of Bobi",
"text": "这是属于波比的专属委托"
@ -2984,7 +2984,7 @@
},
"icon": "xmwg_rw_pt7",
"taskcd": 200,
"tasktime": 138,
"tasktime": 117,
"tasktxt": {
"key": "Entrustment details of Tiger",
"text": "这是属于悍娇虎的专属委托"
@ -3032,7 +3032,7 @@
},
"icon": "xmwg_rw_pt1",
"taskcd": 200,
"tasktime": 178,
"tasktime": 143,
"tasktxt": {
"key": "Entrustment details of Shifu",
"text": "这是属于师父的专属委托"
@ -3080,7 +3080,7 @@
},
"icon": "xmwg_rw_pt2",
"taskcd": 200,
"tasktime": 113,
"tasktime": 92,
"tasktxt": {
"key": "Entrustment details of Po",
"text": "这是属于阿宝的专属委托"
@ -3128,7 +3128,7 @@
},
"icon": "xmwg_rw_pt3",
"taskcd": 200,
"tasktime": 165,
"tasktime": 130,
"tasktxt": {
"key": "Entrustment details of Bobi",
"text": "这是属于波比的专属委托"
@ -3176,7 +3176,7 @@
},
"icon": "xmwg_rw_pt4",
"taskcd": 200,
"tasktime": 155,
"tasktime": 105,
"tasktxt": {
"key": "Entrustment details of Tiger",
"text": "这是属于悍娇虎的专属委托"
@ -3224,7 +3224,7 @@
},
"icon": "xmwg_rw_pt5",
"taskcd": 200,
"tasktime": 107,
"tasktime": 152,
"tasktxt": {
"key": "Entrustment details of Shifu",
"text": "这是属于师父的专属委托"
@ -3272,7 +3272,7 @@
},
"icon": "xmwg_rw_pt6",
"taskcd": 200,
"tasktime": 141,
"tasktime": 98,
"tasktxt": {
"key": "Entrustment details of Po",
"text": "这是属于阿宝的专属委托"
@ -3320,7 +3320,7 @@
},
"icon": "xmwg_rw_pt7",
"taskcd": 200,
"tasktime": 70,
"tasktime": 167,
"tasktxt": {
"key": "Entrustment details of Bobi",
"text": "这是属于波比的专属委托"
@ -3368,7 +3368,7 @@
},
"icon": "xmwg_rw_pt1",
"taskcd": 200,
"tasktime": 115,
"tasktime": 179,
"tasktxt": {
"key": "Entrustment details of Tiger",
"text": "这是属于悍娇虎的专属委托"
@ -3416,7 +3416,7 @@
},
"icon": "xmwg_rw_pt2",
"taskcd": 200,
"tasktime": 65,
"tasktime": 109,
"tasktxt": {
"key": "Entrustment details of Shifu",
"text": "这是属于师父的专属委托"
@ -3464,7 +3464,7 @@
},
"icon": "xmwg_rw_pt3",
"taskcd": 200,
"tasktime": 160,
"tasktime": 68,
"tasktxt": {
"key": "Entrustment details of Po",
"text": "这是属于阿宝的专属委托"
@ -3512,7 +3512,7 @@
},
"icon": "xmwg_rw_pt4",
"taskcd": 200,
"tasktime": 106,
"tasktime": 96,
"tasktxt": {
"key": "Entrustment details of Bobi",
"text": "这是属于波比的专属委托"

View File

@ -735,6 +735,7 @@
"v": 500
}
],
"mounts": "20030001"
"mounts": "20030001",
"buzkashi_recentPlayer": 10
}
]

File diff suppressed because it is too large Load Diff

View File

@ -2,6 +2,12 @@
{
"id": 1,
"type": 1,
"type2_png": "tj_img_gjtz",
"type2_star": 1,
"type3_name": {
"key": "newsmithy_maketype3_name_1",
"text": "一阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text1",
"text": "1阶攻击图纸"
@ -48,6 +54,12 @@
{
"id": 2,
"type": 1,
"type2_png": "tj_img_gjtz",
"type2_star": 1,
"type3_name": {
"key": "newsmithy_maketype3_name_2",
"text": "二阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text2",
"text": "2阶攻击图纸"
@ -95,6 +107,12 @@
{
"id": 3,
"type": 1,
"type2_png": "tj_img_gjtz",
"type2_star": 1,
"type3_name": {
"key": "newsmithy_maketype3_name_3",
"text": "三阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text3",
"text": "3阶攻击图纸"
@ -143,6 +161,12 @@
{
"id": 4,
"type": 1,
"type2_png": "tj_img_gjtz",
"type2_star": 1,
"type3_name": {
"key": "newsmithy_maketype3_name_4",
"text": "四阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text4",
"text": "4阶攻击图纸"
@ -190,6 +214,12 @@
{
"id": 5,
"type": 1,
"type2_png": "tj_img_gjtz",
"type2_star": 1,
"type3_name": {
"key": "newsmithy_maketype3_name_5",
"text": "五阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text5",
"text": "5阶攻击图纸"
@ -238,6 +268,12 @@
{
"id": 6,
"type": 1,
"type2_png": "tj_img_gjtz",
"type2_star": 2,
"type3_name": {
"key": "newsmithy_maketype3_name_1",
"text": "一阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text6",
"text": "6阶攻击图纸"
@ -285,6 +321,12 @@
{
"id": 7,
"type": 1,
"type2_png": "tj_img_gjtz",
"type2_star": 2,
"type3_name": {
"key": "newsmithy_maketype3_name_2",
"text": "二阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text7",
"text": "7阶攻击图纸"
@ -333,6 +375,12 @@
{
"id": 8,
"type": 1,
"type2_png": "tj_img_gjtz",
"type2_star": 2,
"type3_name": {
"key": "newsmithy_maketype3_name_3",
"text": "三阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text8",
"text": "8阶攻击图纸"
@ -380,6 +428,12 @@
{
"id": 9,
"type": 1,
"type2_png": "tj_img_gjtz",
"type2_star": 2,
"type3_name": {
"key": "newsmithy_maketype3_name_4",
"text": "四阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text9",
"text": "9阶攻击图纸"
@ -428,6 +482,12 @@
{
"id": 10,
"type": 1,
"type2_png": "tj_img_gjtz",
"type2_star": 2,
"type3_name": {
"key": "newsmithy_maketype3_name_5",
"text": "五阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text10",
"text": "10阶攻击图纸"
@ -480,6 +540,12 @@
{
"id": 11,
"type": 1,
"type2_png": "tj_img_gjtz",
"type2_star": 3,
"type3_name": {
"key": "newsmithy_maketype3_name_1",
"text": "一阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text11",
"text": "11阶攻击图纸"
@ -531,6 +597,12 @@
{
"id": 12,
"type": 1,
"type2_png": "tj_img_gjtz",
"type2_star": 3,
"type3_name": {
"key": "newsmithy_maketype3_name_2",
"text": "二阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text12",
"text": "12阶攻击图纸"
@ -582,6 +654,12 @@
{
"id": 13,
"type": 1,
"type2_png": "tj_img_gjtz",
"type2_star": 3,
"type3_name": {
"key": "newsmithy_maketype3_name_3",
"text": "三阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text13",
"text": "13阶攻击图纸"
@ -633,6 +711,12 @@
{
"id": 14,
"type": 1,
"type2_png": "tj_img_gjtz",
"type2_star": 3,
"type3_name": {
"key": "newsmithy_maketype3_name_4",
"text": "四阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text14",
"text": "14阶攻击图纸"
@ -684,6 +768,12 @@
{
"id": 15,
"type": 1,
"type2_png": "tj_img_gjtz",
"type2_star": 3,
"type3_name": {
"key": "newsmithy_maketype3_name_5",
"text": "五阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text15",
"text": "15阶攻击图纸"
@ -735,6 +825,12 @@
{
"id": 16,
"type": 1,
"type2_png": "tj_img_gjtz",
"type2_star": 4,
"type3_name": {
"key": "newsmithy_maketype3_name_1",
"text": "一阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text16",
"text": "16阶攻击图纸"
@ -786,6 +882,12 @@
{
"id": 17,
"type": 1,
"type2_png": "tj_img_gjtz",
"type2_star": 4,
"type3_name": {
"key": "newsmithy_maketype3_name_2",
"text": "二阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text17",
"text": "17阶攻击图纸"
@ -837,6 +939,12 @@
{
"id": 18,
"type": 1,
"type2_png": "tj_img_gjtz",
"type2_star": 4,
"type3_name": {
"key": "newsmithy_maketype3_name_3",
"text": "三阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text18",
"text": "18阶攻击图纸"
@ -888,6 +996,12 @@
{
"id": 19,
"type": 1,
"type2_png": "tj_img_gjtz",
"type2_star": 4,
"type3_name": {
"key": "newsmithy_maketype3_name_4",
"text": "四阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text19",
"text": "19阶攻击图纸"
@ -939,6 +1053,12 @@
{
"id": 20,
"type": 1,
"type2_png": "tj_img_gjtz",
"type2_star": 4,
"type3_name": {
"key": "newsmithy_maketype3_name_5",
"text": "五阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text20",
"text": "20阶攻击图纸"
@ -995,6 +1115,12 @@
{
"id": 21,
"type": 1,
"type2_png": "tj_img_gjtz",
"type2_star": 5,
"type3_name": {
"key": "newsmithy_maketype3_name_1",
"text": "一阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text21",
"text": "21阶攻击图纸"
@ -1051,6 +1177,12 @@
{
"id": 22,
"type": 1,
"type2_png": "tj_img_gjtz",
"type2_star": 5,
"type3_name": {
"key": "newsmithy_maketype3_name_2",
"text": "二阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text22",
"text": "22阶攻击图纸"
@ -1107,6 +1239,12 @@
{
"id": 23,
"type": 1,
"type2_png": "tj_img_gjtz",
"type2_star": 5,
"type3_name": {
"key": "newsmithy_maketype3_name_3",
"text": "三阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text23",
"text": "23阶攻击图纸"
@ -1163,6 +1301,12 @@
{
"id": 24,
"type": 1,
"type2_png": "tj_img_gjtz",
"type2_star": 5,
"type3_name": {
"key": "newsmithy_maketype3_name_4",
"text": "四阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text24",
"text": "24阶攻击图纸"
@ -1219,6 +1363,12 @@
{
"id": 25,
"type": 1,
"type2_png": "tj_img_gjtz",
"type2_star": 5,
"type3_name": {
"key": "newsmithy_maketype3_name_5",
"text": "五阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text25",
"text": "25阶攻击图纸"
@ -1275,6 +1425,12 @@
{
"id": 26,
"type": 2,
"type2_png": "tj_img_fytz",
"type2_star": 1,
"type3_name": {
"key": "newsmithy_maketype3_name_1",
"text": "一阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text26",
"text": "1阶防御图纸"
@ -1321,6 +1477,12 @@
{
"id": 27,
"type": 2,
"type2_png": "tj_img_fytz",
"type2_star": 1,
"type3_name": {
"key": "newsmithy_maketype3_name_2",
"text": "二阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text27",
"text": "2阶防御图纸"
@ -1368,6 +1530,12 @@
{
"id": 28,
"type": 2,
"type2_png": "tj_img_fytz",
"type2_star": 1,
"type3_name": {
"key": "newsmithy_maketype3_name_3",
"text": "三阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text28",
"text": "3阶防御图纸"
@ -1416,6 +1584,12 @@
{
"id": 29,
"type": 2,
"type2_png": "tj_img_fytz",
"type2_star": 1,
"type3_name": {
"key": "newsmithy_maketype3_name_4",
"text": "四阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text29",
"text": "4阶防御图纸"
@ -1463,6 +1637,12 @@
{
"id": 30,
"type": 2,
"type2_png": "tj_img_fytz",
"type2_star": 1,
"type3_name": {
"key": "newsmithy_maketype3_name_5",
"text": "五阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text30",
"text": "5阶防御图纸"
@ -1511,6 +1691,12 @@
{
"id": 31,
"type": 2,
"type2_png": "tj_img_fytz",
"type2_star": 2,
"type3_name": {
"key": "newsmithy_maketype3_name_1",
"text": "一阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text31",
"text": "6阶防御图纸"
@ -1558,6 +1744,12 @@
{
"id": 32,
"type": 2,
"type2_png": "tj_img_fytz",
"type2_star": 2,
"type3_name": {
"key": "newsmithy_maketype3_name_2",
"text": "二阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text32",
"text": "7阶防御图纸"
@ -1606,6 +1798,12 @@
{
"id": 33,
"type": 2,
"type2_png": "tj_img_fytz",
"type2_star": 2,
"type3_name": {
"key": "newsmithy_maketype3_name_3",
"text": "三阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text33",
"text": "8阶防御图纸"
@ -1653,6 +1851,12 @@
{
"id": 34,
"type": 2,
"type2_png": "tj_img_fytz",
"type2_star": 2,
"type3_name": {
"key": "newsmithy_maketype3_name_4",
"text": "四阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text34",
"text": "9阶防御图纸"
@ -1701,6 +1905,12 @@
{
"id": 35,
"type": 2,
"type2_png": "tj_img_fytz",
"type2_star": 2,
"type3_name": {
"key": "newsmithy_maketype3_name_5",
"text": "五阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text35",
"text": "10阶防御图纸"
@ -1753,6 +1963,12 @@
{
"id": 36,
"type": 2,
"type2_png": "tj_img_fytz",
"type2_star": 3,
"type3_name": {
"key": "newsmithy_maketype3_name_1",
"text": "一阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text36",
"text": "11阶防御图纸"
@ -1804,6 +2020,12 @@
{
"id": 37,
"type": 2,
"type2_png": "tj_img_fytz",
"type2_star": 3,
"type3_name": {
"key": "newsmithy_maketype3_name_2",
"text": "二阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text37",
"text": "12阶防御图纸"
@ -1855,6 +2077,12 @@
{
"id": 38,
"type": 2,
"type2_png": "tj_img_fytz",
"type2_star": 3,
"type3_name": {
"key": "newsmithy_maketype3_name_3",
"text": "三阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text38",
"text": "13阶防御图纸"
@ -1906,6 +2134,12 @@
{
"id": 39,
"type": 2,
"type2_png": "tj_img_fytz",
"type2_star": 3,
"type3_name": {
"key": "newsmithy_maketype3_name_4",
"text": "四阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text39",
"text": "14阶防御图纸"
@ -1957,6 +2191,12 @@
{
"id": 40,
"type": 2,
"type2_png": "tj_img_fytz",
"type2_star": 3,
"type3_name": {
"key": "newsmithy_maketype3_name_5",
"text": "五阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text40",
"text": "15阶防御图纸"
@ -2008,6 +2248,12 @@
{
"id": 41,
"type": 2,
"type2_png": "tj_img_fytz",
"type2_star": 4,
"type3_name": {
"key": "newsmithy_maketype3_name_1",
"text": "一阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text41",
"text": "16阶防御图纸"
@ -2059,6 +2305,12 @@
{
"id": 42,
"type": 2,
"type2_png": "tj_img_fytz",
"type2_star": 4,
"type3_name": {
"key": "newsmithy_maketype3_name_2",
"text": "二阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text42",
"text": "17阶防御图纸"
@ -2110,6 +2362,12 @@
{
"id": 43,
"type": 2,
"type2_png": "tj_img_fytz",
"type2_star": 4,
"type3_name": {
"key": "newsmithy_maketype3_name_3",
"text": "三阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text43",
"text": "18阶防御图纸"
@ -2161,6 +2419,12 @@
{
"id": 44,
"type": 2,
"type2_png": "tj_img_fytz",
"type2_star": 4,
"type3_name": {
"key": "newsmithy_maketype3_name_4",
"text": "四阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text44",
"text": "19阶防御图纸"
@ -2212,6 +2476,12 @@
{
"id": 45,
"type": 2,
"type2_png": "tj_img_fytz",
"type2_star": 4,
"type3_name": {
"key": "newsmithy_maketype3_name_5",
"text": "五阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text45",
"text": "20阶防御图纸"
@ -2268,6 +2538,12 @@
{
"id": 46,
"type": 2,
"type2_png": "tj_img_fytz",
"type2_star": 5,
"type3_name": {
"key": "newsmithy_maketype3_name_1",
"text": "一阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text46",
"text": "21阶防御图纸"
@ -2324,6 +2600,12 @@
{
"id": 47,
"type": 2,
"type2_png": "tj_img_fytz",
"type2_star": 5,
"type3_name": {
"key": "newsmithy_maketype3_name_2",
"text": "二阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text47",
"text": "22阶防御图纸"
@ -2380,6 +2662,12 @@
{
"id": 48,
"type": 2,
"type2_png": "tj_img_fytz",
"type2_star": 5,
"type3_name": {
"key": "newsmithy_maketype3_name_3",
"text": "三阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text48",
"text": "23阶防御图纸"
@ -2436,6 +2724,12 @@
{
"id": 49,
"type": 2,
"type2_png": "tj_img_fytz",
"type2_star": 5,
"type3_name": {
"key": "newsmithy_maketype3_name_4",
"text": "四阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text49",
"text": "24阶防御图纸"
@ -2492,6 +2786,12 @@
{
"id": 50,
"type": 2,
"type2_png": "tj_img_fytz",
"type2_star": 5,
"type3_name": {
"key": "newsmithy_maketype3_name_5",
"text": "五阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text50",
"text": "25阶防御图纸"
@ -2548,6 +2848,12 @@
{
"id": 51,
"type": 3,
"type2_png": "tj_img_fztz",
"type2_star": 1,
"type3_name": {
"key": "newsmithy_maketype3_name_1",
"text": "一阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text51",
"text": "1阶辅助图纸"
@ -2594,6 +2900,12 @@
{
"id": 52,
"type": 3,
"type2_png": "tj_img_fztz",
"type2_star": 1,
"type3_name": {
"key": "newsmithy_maketype3_name_2",
"text": "二阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text52",
"text": "2阶辅助图纸"
@ -2641,6 +2953,12 @@
{
"id": 53,
"type": 3,
"type2_png": "tj_img_fztz",
"type2_star": 1,
"type3_name": {
"key": "newsmithy_maketype3_name_3",
"text": "三阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text53",
"text": "3阶辅助图纸"
@ -2689,6 +3007,12 @@
{
"id": 54,
"type": 3,
"type2_png": "tj_img_fztz",
"type2_star": 1,
"type3_name": {
"key": "newsmithy_maketype3_name_4",
"text": "四阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text54",
"text": "4阶辅助图纸"
@ -2736,6 +3060,12 @@
{
"id": 55,
"type": 3,
"type2_png": "tj_img_fztz",
"type2_star": 1,
"type3_name": {
"key": "newsmithy_maketype3_name_5",
"text": "五阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text55",
"text": "5阶辅助图纸"
@ -2784,6 +3114,12 @@
{
"id": 56,
"type": 3,
"type2_png": "tj_img_fztz",
"type2_star": 2,
"type3_name": {
"key": "newsmithy_maketype3_name_1",
"text": "一阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text56",
"text": "6阶辅助图纸"
@ -2831,6 +3167,12 @@
{
"id": 57,
"type": 3,
"type2_png": "tj_img_fztz",
"type2_star": 2,
"type3_name": {
"key": "newsmithy_maketype3_name_2",
"text": "二阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text57",
"text": "7阶辅助图纸"
@ -2879,6 +3221,12 @@
{
"id": 58,
"type": 3,
"type2_png": "tj_img_fztz",
"type2_star": 2,
"type3_name": {
"key": "newsmithy_maketype3_name_3",
"text": "三阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text58",
"text": "8阶辅助图纸"
@ -2926,6 +3274,12 @@
{
"id": 59,
"type": 3,
"type2_png": "tj_img_fztz",
"type2_star": 2,
"type3_name": {
"key": "newsmithy_maketype3_name_4",
"text": "四阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text59",
"text": "9阶辅助图纸"
@ -2974,6 +3328,12 @@
{
"id": 60,
"type": 3,
"type2_png": "tj_img_fztz",
"type2_star": 2,
"type3_name": {
"key": "newsmithy_maketype3_name_5",
"text": "五阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text60",
"text": "10阶辅助图纸"
@ -3026,6 +3386,12 @@
{
"id": 61,
"type": 3,
"type2_png": "tj_img_fztz",
"type2_star": 3,
"type3_name": {
"key": "newsmithy_maketype3_name_1",
"text": "一阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text61",
"text": "11阶辅助图纸"
@ -3077,6 +3443,12 @@
{
"id": 62,
"type": 3,
"type2_png": "tj_img_fztz",
"type2_star": 3,
"type3_name": {
"key": "newsmithy_maketype3_name_2",
"text": "二阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text62",
"text": "12阶辅助图纸"
@ -3128,6 +3500,12 @@
{
"id": 63,
"type": 3,
"type2_png": "tj_img_fztz",
"type2_star": 3,
"type3_name": {
"key": "newsmithy_maketype3_name_3",
"text": "三阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text63",
"text": "13阶辅助图纸"
@ -3179,6 +3557,12 @@
{
"id": 64,
"type": 3,
"type2_png": "tj_img_fztz",
"type2_star": 3,
"type3_name": {
"key": "newsmithy_maketype3_name_4",
"text": "四阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text64",
"text": "14阶辅助图纸"
@ -3230,6 +3614,12 @@
{
"id": 65,
"type": 3,
"type2_png": "tj_img_fztz",
"type2_star": 3,
"type3_name": {
"key": "newsmithy_maketype3_name_5",
"text": "五阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text65",
"text": "15阶辅助图纸"
@ -3281,6 +3671,12 @@
{
"id": 66,
"type": 3,
"type2_png": "tj_img_fztz",
"type2_star": 4,
"type3_name": {
"key": "newsmithy_maketype3_name_1",
"text": "一阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text66",
"text": "16阶辅助图纸"
@ -3332,6 +3728,12 @@
{
"id": 67,
"type": 3,
"type2_png": "tj_img_fztz",
"type2_star": 4,
"type3_name": {
"key": "newsmithy_maketype3_name_2",
"text": "二阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text67",
"text": "17阶辅助图纸"
@ -3383,6 +3785,12 @@
{
"id": 68,
"type": 3,
"type2_png": "tj_img_fztz",
"type2_star": 4,
"type3_name": {
"key": "newsmithy_maketype3_name_3",
"text": "三阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text68",
"text": "18阶辅助图纸"
@ -3434,6 +3842,12 @@
{
"id": 69,
"type": 3,
"type2_png": "tj_img_fztz",
"type2_star": 4,
"type3_name": {
"key": "newsmithy_maketype3_name_4",
"text": "四阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text69",
"text": "19阶辅助图纸"
@ -3485,6 +3899,12 @@
{
"id": 70,
"type": 3,
"type2_png": "tj_img_fztz",
"type2_star": 4,
"type3_name": {
"key": "newsmithy_maketype3_name_5",
"text": "五阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text70",
"text": "20阶辅助图纸"
@ -3541,6 +3961,12 @@
{
"id": 71,
"type": 3,
"type2_png": "tj_img_fztz",
"type2_star": 5,
"type3_name": {
"key": "newsmithy_maketype3_name_1",
"text": "一阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text71",
"text": "21阶辅助图纸"
@ -3597,6 +4023,12 @@
{
"id": 72,
"type": 3,
"type2_png": "tj_img_fztz",
"type2_star": 5,
"type3_name": {
"key": "newsmithy_maketype3_name_2",
"text": "二阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text72",
"text": "22阶辅助图纸"
@ -3653,6 +4085,12 @@
{
"id": 73,
"type": 3,
"type2_png": "tj_img_fztz",
"type2_star": 5,
"type3_name": {
"key": "newsmithy_maketype3_name_3",
"text": "三阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text73",
"text": "23阶辅助图纸"
@ -3709,6 +4147,12 @@
{
"id": 74,
"type": 3,
"type2_png": "tj_img_fztz",
"type2_star": 5,
"type3_name": {
"key": "newsmithy_maketype3_name_4",
"text": "四阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text74",
"text": "24阶辅助图纸"
@ -3765,6 +4209,12 @@
{
"id": 75,
"type": 3,
"type2_png": "tj_img_fztz",
"type2_star": 5,
"type3_name": {
"key": "newsmithy_maketype3_name_5",
"text": "五阶"
},
"drawing_name": {
"key": "newsmithy_drawing_name_text75",
"text": "25阶辅助图纸"

View File

@ -11,7 +11,9 @@
"text": "双脚并立,双臂自然垂在身体的两侧。向上跳,双腿打开,双手举过头顶。\n再向上跳,双脚并拢,手臂放回身体两侧,重复这个动作。这项运动锻炼身体所有的大肌肉群。"
},
"ticks": 3,
"time": 60,
"ani": "fitness_action1",
"energy": "",
"p": 500,
"before_training": 25003,
"after_training": 25004,
@ -29,7 +31,9 @@
"text": "双腿与肩同宽,双臂与肩同高平伸于身体两侧。\n然后双臂进行顺时针绕环活动,之后逆时针绕环。"
},
"ticks": 3,
"time": 60,
"ani": "fitness_action2",
"energy": "",
"p": 500,
"before_training": 25003,
"after_training": 25004,

View File

@ -5748,7 +5748,7 @@
"type_sp": 1,
"tasktxt": {
"key": "20001_taskcond",
"text": "和骇客蛛进行对话"
"text": "触碰能源石"
},
"type": 20001,
"valid": 1,

View File

@ -3024,7 +3024,6 @@
"text": "攻击1个敌方4次每次伤害为自身攻击力45%每次有30%概率为目标附加1回合【眩晕】。"
},
"buffid": [
390001105,
390001105
],
"map": ""
@ -6184,7 +6183,9 @@
"key": "skill_1240021111",
"text": "攻击随机2个敌方伤害为自身攻击力55%,为目标附加【童真】。"
},
"buffid": [],
"buffid": [
390001211
],
"map": ""
},
{
@ -6352,7 +6353,10 @@
"key": "skill_1240022111",
"text": "攻击时若目标有【童真】附加2回合【速度下降】。受击时若攻击者有【童真】50%概率反击。"
},
"buffid": [],
"buffid": [
390001211,
390001008
],
"map": ""
},
{

View File

@ -1356,7 +1356,7 @@
"OverlayTimes": 5,
"SameID": false,
"golbalbufficon": "",
"buffIcon": "",
"buffIcon": "ty_zd_buff_j009",
"buffeffect": "",
"buffpos": "根节点"
},

View File

@ -8,15 +8,15 @@
"text": "进行10次普通招募"
},
"type_id": 3018001,
"active": 20,
"active": 40,
"id_after": 0,
"jump_interface": 107,
"icon": "wp_icon_0001",
"reword": [
{
"a": "attr",
"t": "diamond",
"n": 10
"a": "item",
"t": "151001",
"n": 1
}
]
},
@ -29,15 +29,15 @@
"text": "为任意英雄提升10次等级"
},
"type_id": 3024001,
"active": 20,
"active": 40,
"id_after": 0,
"jump_interface": 103,
"icon": "wp_icon_0001",
"reword": [
{
"a": "attr",
"t": "diamond",
"n": 10
"a": "item",
"t": "151001",
"n": 1
}
]
},
@ -50,15 +50,15 @@
"text": "强化任意装备成功6次"
},
"type_id": 3047001,
"active": 20,
"active": 40,
"id_after": 0,
"jump_interface": 102,
"icon": "wp_icon_0001",
"reword": [
{
"a": "attr",
"t": "diamond",
"n": 20
"a": "item",
"t": "151001",
"n": 1
}
]
},
@ -71,15 +71,15 @@
"text": "在商店购买任意7件商品"
},
"type_id": 3064001,
"active": 30,
"active": 40,
"id_after": 0,
"jump_interface": 122,
"icon": "wp_icon_0001",
"reword": [
{
"a": "attr",
"t": "diamond",
"n": 10
"a": "item",
"t": "151001",
"n": 1
}
]
},
@ -92,15 +92,15 @@
"text": "使用好友助战英雄战斗7次"
},
"type_id": 3012001,
"active": 30,
"active": 40,
"id_after": 0,
"jump_interface": 113,
"icon": "wp_icon_0001",
"reword": [
{
"a": "attr",
"t": "diamond",
"n": 10
"a": "item",
"t": "151001",
"n": 1
}
]
},
@ -113,15 +113,15 @@
"text": "刷新商店10次"
},
"type_id": 3105001,
"active": 30,
"active": 40,
"id_after": 0,
"jump_interface": 122,
"icon": "wp_icon_0001",
"reword": [
{
"a": "attr",
"t": "diamond",
"n": 10
"a": "item",
"t": "151001",
"n": 1
}
]
},
@ -134,15 +134,15 @@
"text": "消费1000颗钻石"
},
"type_id": 3104001,
"active": 30,
"active": 40,
"id_after": 0,
"jump_interface": 122,
"icon": "wp_icon_0001",
"reword": [
{
"a": "attr",
"t": "diamond",
"n": 20
"a": "item",
"t": "151001",
"n": 1
}
]
},
@ -155,15 +155,15 @@
"text": "进行30场竞技场挑战"
},
"type_id": 3130001,
"active": 30,
"active": 40,
"id_after": 0,
"jump_interface": 156,
"icon": "wp_icon_0001",
"reword": [
{
"a": "attr",
"t": "diamond",
"n": 10
"a": "item",
"t": "151001",
"n": 1
}
]
}

View File

@ -937,7 +937,7 @@
"key": 80010,
"lock": 1,
"lockend": 0,
"ontxe": 20060,
"ontxe": 200600,
"id_after": 0,
"group": 360,
"des": 3,

37
modules/caravan/api.go Normal file
View File

@ -0,0 +1,37 @@
package caravan
import (
"go_dreamfactory/lego/core"
"go_dreamfactory/modules"
)
const (
TrollGetListResp = "getlist"
TrollBuyOrSellResp = "buyorsell"
TrollNpcRewardResp = "npcreward"
TrollRankListResp = "ranklist"
TrollRecordListResp = "recordlist"
TrollAfkSetResp = "afkset"
TrollSurpriseIdResp = "surpriseid"
)
type apiComp struct {
modules.MCompGate
service core.IService
configure *configureComp
module *Caravan
}
//组件初始化接口
func (this *apiComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
err = this.MCompGate.Init(service, module, comp, options)
this.module = module.(*Caravan)
this.service = service
return
}
func (this *apiComp) Start() (err error) {
err = this.MCompGate.Start()
return
}

View File

@ -0,0 +1,169 @@
package caravan
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"go_dreamfactory/sys/configure"
"math"
)
//参数校验
func (this *apiComp) BuyOrSellCheck(session comm.IUserSession, req *pb.TrollBuyOrSellReq) (code pb.ErrorCode) {
if len(req.Items) == 0 {
code = pb.ErrorCode_ReqParameterError
}
return
}
func (this *apiComp) BuyOrSell(session comm.IUserSession, req *pb.TrollBuyOrSellReq) (code pb.ErrorCode, data *pb.ErrorData) {
var (
bSell bool // 是否有出售
gold int32 // 当次交易 获得的金币
earn int32 // 只统计赚的金币
update map[string]interface{}
gridNum int32 // 格子数量
)
update = make(map[string]interface{})
if code = this.BuyOrSellCheck(session, req); code != pb.ErrorCode_Success {
return // 参数校验失败直接返回
}
trolltrain, err := this.module.modelTroll.getTrollList(session.GetUserId())
if err != nil {
code = pb.ErrorCode_DBError
return
}
dayMaxCount := this.configure.GetTrollRule(comm.TrollBuyCount)
aiMaxCount := this.configure.GetTrollRule(comm.TrollAIBuyCount)
for k, v := range req.Items {
if v == 0 { // 过滤数量为0 的消息
continue
}
if trolltrain.RangeId == 0 {
trolltrain.RangeId = 1
update["rangeId"] = trolltrain.RangeId
}
if v < 0 {
if !bSell {
bSell = true
trolltrain.SellCount += 1 // 交易次数+1
if trolltrain.SellCount > dayMaxCount || (trolltrain.SellCount+trolltrain.AiCount) > aiMaxCount {
code = pb.ErrorCode_TrollMaxSellCount // 达到最大交易次数 直接返回
return
}
update["sellCount"] = trolltrain.SellCount
}
}
if _, ok := trolltrain.Shop[k]; !ok {
if v > 0 {
trolltrain.Shop[k] = v // 限购
}
} else {
if v > 0 {
trolltrain.Shop[k] += v // 限购
}
}
// 校验 是否大于买入最大限制
goods := this.configure.GetTrollGoods(k)
if goods == nil {
return
}
if trolltrain.Shop[k] > goods.Max { // 判断是否有效交易
// 买入上限 直接返回
code = pb.ErrorCode_TrollBuyMax
return
} else if trolltrain.Items[k]+v < 0 { //卖出数量不足
code = pb.ErrorCode_TrollSellMax
return
}
// 第一次购买商品
if trolltrain.TarinPos == 0 {
if _, ok := trolltrain.Price[k]; !ok {
trolltrain.Price[k] = 0
}
trolltrain.Price[k] = goods.Goodsprice * goods.StarMoney / 1000
trolltrain.RefreshTime = configure.Now().Unix()
//消耗的金币
gold -= trolltrain.Price[k] * trolltrain.Items[k]
} else {
p := this.configure.GetTrollCoefficient(trolltrain.RangeId)
if p == nil {
return
}
var sellPrice int32 // 交易价格
if trolltrain.TarinPos == 0 {
sellPrice = goods.Goodsprice * goods.StarMoney / 1000
} else {
sellPrice = int32(p.Coefficient) * goods.Goodsprice / 1000
}
// 校验是不是惊喜价格
if d1, ok := trolltrain.SurpriseID[trolltrain.TarinPos-1]; ok {
if d1 == k {
sellPrice = this.configure.GetTrollRule(comm.TrollSurprise) / 1000
}
}
if v < 0 { // 卖出
trolltrain.Items[k] += v
if sellPrice > trolltrain.Price[k] { // 赚了
earn += (sellPrice - trolltrain.Price[k]) * v
}
gold -= sellPrice * v
} else { // 买入 计算平均价格
totalGold := trolltrain.Items[k] * trolltrain.Price[k]
totalGold += v * sellPrice
trolltrain.Items[k] += v
trolltrain.Price[k] = totalGold / trolltrain.Items[k]
gold -= v * sellPrice
}
}
}
// 重新计算格子数量
grid := this.configure.GetTrollRule(comm.TrollItemCount)
for _, v := range trolltrain.Items {
if v > 0 {
gridNum += int32(math.Ceil(float64(v) / float64(grid)))
}
}
trolltrain.GridNum = gridNum
if gridNum > this.configure.GetTrollRule(comm.TrollGridCount) { // 背包格子上限
code = pb.ErrorCode_TrollMaxItemCount
return
}
code = this.module.ModuleUser.AddAttributeValue(session, comm.ResGold, int32(gold), true)
if code != pb.ErrorCode_Success { // 金币不足
code = pb.ErrorCode_GoldNoEnough
return
}
// 清除数量为0 的
for k, v := range trolltrain.Items {
if v == 0 {
delete(trolltrain.Items, k)
if _, ok := trolltrain.Price[k]; ok {
delete(trolltrain.Price, k) // 清除价格
}
}
}
trolltrain.TotalEarn += -int64(earn) // 累计获得的金币
// check npc level
if confLv := this.configure.GetTrollLv(trolltrain.GetNpcLv() + 1); confLv != nil {
if trolltrain.TotalEarn >= int64(confLv.Money) {
trolltrain.NpcLv += 1 // npc levelUp
update["npcLv"] = trolltrain.NpcLv
}
}
update["items"] = trolltrain.Items
update["price"] = trolltrain.Price
update["totalEarn"] = trolltrain.TotalEarn
update["gridNum"] = trolltrain.GridNum
update["shop"] = trolltrain.Shop
this.module.ModifyTrollData(session.GetUserId(), update)
// this.module.ModuleRtask.SendToRtask(session, comm.Rtype153, 1)
go this.module.ModuleRtask.TriggerTask(session.GetUserId(), comm.GettaskParam(comm.Rtype153, 1))
return
}

View File

@ -0,0 +1,111 @@
package caravan
import (
"crypto/rand"
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"go_dreamfactory/sys/configure"
"go_dreamfactory/utils"
"math/big"
)
//参数校验
func (this *apiComp) GetListCheck(session comm.IUserSession, req *pb.TrollGetListReq) (code pb.ErrorCode) {
return
}
func (this *apiComp) GetList(session comm.IUserSession, req *pb.TrollGetListReq) (code pb.ErrorCode, data *pb.ErrorData) {
var (
update map[string]interface{}
maxCoefficient int32
)
update = make(map[string]interface{})
if code = this.GetListCheck(session, req); code != pb.ErrorCode_Success {
return // 参数校验失败直接返回
}
trolltrain, err := this.module.modelTroll.getTrollList(session.GetUserId())
if err != nil {
code = pb.ErrorCode_DBError
return
}
// 自动交易
this.module.TrollAI(session, trolltrain)
maxCoefficient = this.configure.GetTrollMaxCoefficientNux() // 增长幅度的最大值
if maxCoefficient == 0 {
code = pb.ErrorCode_ConfigNoFound
return
}
// 跨天 则清除 每日交易次数
if !utils.IsToday(trolltrain.ResetTime) {
trolltrain.ResetTime = configure.Now().Unix()
update["resetTime"] = trolltrain.ResetTime
trolltrain.SellCount = 0
update["sellCount"] = trolltrain.SellCount // 重置每日交易次数
trolltrain.AiCount = 0
update["aiCount"] = trolltrain.AiCount // 重置ai 交易次数
this.module.ModifyTrollData(session.GetUserId(), update)
}
/// 计算经过了多少个周期
szTrain := this.configure.GetTrollAllTrain()
var (
circletime int32 // 循环一个周期的时间
circleCount int32 // 循环的次数
leftTime int32 // 离到达最后一站剩余的时间
index int32 // 总共经过了多少次车站
)
for _, v := range szTrain {
circletime += v
}
if int32(len(szTrain)) < trolltrain.TarinPos {
this.module.Errorf("TarinPos error: TarinPos:%d,maxLen:%d", trolltrain.TarinPos, len(szTrain))
code = pb.ErrorCode_ConfigNoFound
return
}
if configure.Now().Unix()-trolltrain.RefreshTime < int64(szTrain[trolltrain.TarinPos-1]) {
session.SendMsg(string(this.module.GetType()), TrollGetListResp, &pb.TrollGetListResp{Data: trolltrain})
return
}
trainNum := this.configure.GetTrollMaxTraintNum()
trolltrain.Shop = make(map[int32]int32) // 清空商人的购买数据
update["shop"] = trolltrain.Shop
t := int32(configure.Now().Unix() - trolltrain.Ctime)
circleCount = t / circletime // 经过的周期数
leftTime = t % circletime
if trolltrain.Circle != circleCount {
trolltrain.SurpriseID = make(map[int32]int32, 0)
n, _ := rand.Int(rand.Reader, big.NewInt(int64(trainNum)))
// 只算当前商人所属的货物
g := this.configure.GetTrollGoodsFor(int32(n.Int64()) + 1)
n2, _ := rand.Int(rand.Reader, big.NewInt(int64(len(g))))
trolltrain.SurpriseID[int32(n.Int64())+1] = g[int32(n2.Int64())]
update["surpriseID"] = trolltrain.SurpriseID
trolltrain.Circle = circleCount
update["circle"] = trolltrain.Circle
}
index = circleCount * trainNum // 计算火车的位置信息
for _, v := range szTrain {
if leftTime <= v {
trolltrain.RefreshTime = configure.Now().Unix() - int64(leftTime) //trolltrain.Ctime + int64(circleCount*circletime+leftTime)
trolltrain.RangeId = (index % maxCoefficient) + 1
trolltrain.TarinPos = (index % trainNum) + 1
break
}
index += 1
leftTime -= v
}
update["aiCount"] = trolltrain.AiCount
update["refreshTime"] = trolltrain.RefreshTime
update["tarinPos"] = trolltrain.TarinPos
update["rangeId"] = trolltrain.RangeId
update["shop"] = trolltrain.Shop
update["items"] = trolltrain.Items
update["price"] = trolltrain.Price
this.module.ModifyTrollData(session.GetUserId(), update)
session.SendMsg(string(this.module.GetType()), TrollGetListResp, &pb.TrollGetListResp{Data: trolltrain})
return
}

View File

@ -0,0 +1,185 @@
package caravan
import (
"go_dreamfactory/lego/core"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/modules"
"go_dreamfactory/sys/configure"
cfg "go_dreamfactory/sys/configure/structs"
"sync"
)
const (
game_trollgoods = "game_trollgoods.json"
game_trollcoefficient = "game_trollcoefficient.json"
game_trolltrain = "game_trolltrain.json"
game_trollrule = "game_trollrule.json"
game_trolllv = "game_trolllv.json"
)
///配置管理基础组件
type configureComp struct {
hlock sync.RWMutex
modules.MCompConfigure
}
//组件初始化接口
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.LoadConfigure(game_trollgoods, cfg.NewGameTrollGoods)
this.LoadConfigure(game_trollcoefficient, cfg.NewGameTrollCoefficient)
this.LoadConfigure(game_trolltrain, cfg.NewGameTrollTrain)
this.LoadConfigure(game_trollrule, cfg.NewGameTrollRule)
this.LoadConfigure(game_trolllv, cfg.NewGameTrollLv)
return
}
//加载多个配置文件
func (this *configureComp) LoadMultiConfigure(confs map[string]interface{}) (err error) {
for k, v := range confs {
err = configure.RegisterConfigure(k, v, nil)
if err != nil {
log.Errorf("配置文件:%s解析失败!", k)
break
}
}
return
}
//读取配置数据
func (this *configureComp) GetConfigure(name string) (v interface{}, err error) {
return configure.GetConfigure(name)
}
// 获取列车货物信息
func (this *configureComp) GetTrollGoods(itemId int32) (data *cfg.GameTrollGoodsData) {
if v, err := this.GetConfigure(game_trollgoods); err == nil {
if configure, ok := v.(*cfg.GameTrollGoods); ok {
data = configure.Get(itemId)
return
}
} else {
log.Errorf("get GameTrollGoodsData conf err:%v", err)
}
return
}
// 获取商人位置信息
func (this *configureComp) GetTrollTrain(id int32) (data *cfg.GameTrollTrainData) {
if v, err := this.GetConfigure(game_trolltrain); err == nil {
if configure, ok := v.(*cfg.GameTrollTrain); ok {
data = configure.Get(id)
return
}
} else {
log.Errorf("get GameTrollTrainData conf err:%v", err)
}
return
}
// 获取基本规则
func (this *configureComp) GetTrollRule(id int32) int32 {
if v, err := this.GetConfigure(game_trollrule); err == nil {
if configure, ok := v.(*cfg.GameTrollRule); ok {
return configure.Get(id).Quantity
}
}
log.Errorf("get GetTrollRule conf err:%d", id)
return 1
}
func (this *configureComp) GetTrollCoefficient(id int32) (data *cfg.GameTrollCoefficientData) {
if v, err := this.GetConfigure(game_trollcoefficient); err == nil {
if configure, ok := v.(*cfg.GameTrollCoefficient); ok {
data = configure.Get(id)
return
}
} else {
log.Errorf("get GameTrollCoefficientData conf err:%v", err)
}
return
}
func (this *configureComp) GetTrollLv(id int32) (data *cfg.GameTrollLvData) {
if v, err := this.GetConfigure(game_trolllv); err == nil {
if configure, ok := v.(*cfg.GameTrollLv); ok {
data = configure.Get(id)
return
}
} else {
log.Errorf("get GameTrollCoefficientData conf err:%v", err)
}
return
}
func (this *configureComp) GetTrollAllTrain() (data []int32) {
data = make([]int32, 0)
if v, err := this.GetConfigure(game_trolltrain); err == nil {
if configure, ok := v.(*cfg.GameTrollTrain); ok {
for _, v := range configure.GetDataList() {
time := v.Time
data = append(data, time)
}
return
}
} else {
log.Errorf("get GameTrollTrainData conf err:%v", err)
}
return
}
func (this *configureComp) GetTrollMaxCoefficientNux() int32 {
if v, err := this.GetConfigure(game_trollcoefficient); err == nil {
if configure, ok := v.(*cfg.GameTrollCoefficient); ok {
return int32(len(configure.GetDataList()))
}
} else {
log.Errorf("get GameTrollTrainData conf err:%v", err)
}
return 0
}
// 获取车站的数量
func (this *configureComp) GetTrollMaxTraintNum() int32 {
if v, err := this.GetConfigure(game_trolltrain); err == nil {
if configure, ok := v.(*cfg.GameTrollTrain); ok {
return int32(len(configure.GetDataList()))
}
} else {
log.Errorf("get GameTrollTrainData conf err:%v", err)
}
return 1 // 至少有1个车站
}
func (this *configureComp) GetTrollAllGoods() (data []*cfg.GameTrollGoodsData) {
if v, err := this.GetConfigure(game_trollgoods); err == nil {
if configure, ok := v.(*cfg.GameTrollGoods); ok {
data = configure.GetDataList()
return
}
} else {
log.Errorf("get GameTrollGoodsData conf err:%v", err)
}
return
}
// 返回商人货物信息
func (this *configureComp) GetTrollGoodsFor(trainID int32) (data []int32) {
if v, err := this.GetConfigure(game_trollgoods); err == nil {
if configure, ok := v.(*cfg.GameTrollGoods); ok {
for _, v := range configure.GetDataList() {
if v.Goodsfor == trainID {
data = append(data, v.Id)
}
}
return
}
} else {
log.Errorf("get GameTrollGoodsData conf err:%v", err)
}
return
}

View File

@ -0,0 +1,65 @@
package caravan
import (
"go_dreamfactory/comm"
"go_dreamfactory/lego/core"
"go_dreamfactory/lego/sys/mgo"
"go_dreamfactory/modules"
"go_dreamfactory/pb"
"go_dreamfactory/sys/configure"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/x/bsonx"
)
type modelCaravan struct {
modules.MCompModel
module *Caravan
}
func (this *modelCaravan) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
this.TableName = string(comm.TableTroll)
err = this.MCompModel.Init(service, module, comp, options)
this.module = module.(*Caravan)
// uid 创建索引
this.DB.CreateIndex(core.SqlTable(this.TableName), mongo.IndexModel{
Keys: bsonx.Doc{{Key: "uid", Value: bsonx.Int32(1)}},
})
return
}
func (this *modelCaravan) getTrollList(uid string) (result *pb.DBTrollTrain, err error) {
result = &pb.DBTrollTrain{
Id: primitive.NewObjectID().Hex(),
Uid: uid,
Items: map[int32]int32{},
Price: map[int32]int32{},
GridNum: 0,
TarinPos: 1,
RangeId: 0,
Buy: 0,
Sell: 0,
NpcLv: 0,
NpcReward: map[int32]int32{},
TotalEarn: 0,
SellCount: 0,
RefreshTime: configure.Now().Unix(),
AiCount: 0,
Shop: map[int32]int32{},
Ctime: configure.Now().Unix(),
Circle: 0,
SurpriseID: map[int32]int32{},
ResetTime: configure.Now().Unix(),
}
if err = this.Get(uid, result); err != nil && mgo.MongodbNil == err {
// 创建一条数据
err = this.Add(uid, result)
return
}
err = nil
return result, err
}
func (this *modelCaravan) modifyTrollDataByObjId(uid string, data map[string]interface{}) error {
return this.Change(uid, data)
}

270
modules/caravan/module.go Normal file
View File

@ -0,0 +1,270 @@
package caravan
import (
"go_dreamfactory/comm"
"go_dreamfactory/lego/core"
"go_dreamfactory/modules"
"go_dreamfactory/pb"
"go_dreamfactory/sys/configure"
"math"
)
type Caravan struct {
modules.ModuleBase
modelTroll *modelCaravan
api *apiComp
configure *configureComp
}
func NewModule() core.IModule {
return &Caravan{}
}
func (this *Caravan) GetType() core.M_Modules {
return comm.ModuleTroll
}
func (this *Caravan) Init(service core.IService, module core.IModule, options core.IModuleOptions) (err error) {
err = this.ModuleBase.Init(service, module, options)
return
}
func (this *Caravan) OnInstallComp() {
this.ModuleBase.OnInstallComp()
this.api = this.RegisterComp(new(apiComp)).(*apiComp)
this.modelTroll = this.RegisterComp(new(modelCaravan)).(*modelCaravan)
this.configure = this.RegisterComp(new(configureComp)).(*configureComp)
}
// 接口信息
func (this *Caravan) ModifyTrollData(uid string, data map[string]interface{}) (code pb.ErrorCode) {
err := this.modelTroll.modifyTrollDataByObjId(uid, data)
if err != nil {
code = pb.ErrorCode_DBError
}
return
}
func (this *Caravan) TrollAI(session comm.IUserSession, troll *pb.DBTrollTrain) (code pb.ErrorCode) {
var (
sellPrice map[int32]int32 // 出售货物价格
totalGold int32
index int32
update map[string]interface{}
rangeId int32 // 增幅ID
tarinPos int32 // 火车位置
refreshTime int64 // 刷新时间
)
if troll.Buy == 0 && troll.Sell == 0 {
return
}
update = make(map[string]interface{})
sellPrice = make(map[int32]int32)
now := configure.Now().Unix()
trainNum := this.configure.GetTrollMaxTraintNum()
maxCoefficient := this.configure.GetTrollMaxCoefficientNux() // 增长幅度的最大值
if maxCoefficient == 0 {
code = pb.ErrorCode_ConfigNoFound
return
}
rangeId = troll.RangeId
tarinPos = troll.TarinPos
refreshTime = troll.RefreshTime
goods := this.configure.GetTrollAllGoods()
for _, v := range goods {
sellPrice[v.Id] = v.Goodsprice
}
sz := this.configure.GetTrollAllTrain()
if len(sz) == 0 {
this.Errorf("GetTrollAllTrain configure err") // 配置异常 打个日志
return
}
iCount := this.configure.GetTrollRule(comm.TrollAIBuyCount)
for index = 0; ; index++ {
if index < tarinPos-1 { // 起始位置
continue
}
index := int32(index) % trainNum
refreshTime += int64(sz[index])
if now >= refreshTime {
rangeId = (rangeId % maxCoefficient) + 1
tarinPos = (tarinPos % trainNum) + 1
coefficient := this.configure.GetTrollCoefficient(rangeId) // 获取当前级别的涨幅数据
if coefficient == nil {
return
}
if troll.Sell <= coefficient.Coefficient { // 可以出售
var preGold int32 // 成本价
for _, v := range goods {
sellPrice[v.Id] = v.Goodsprice * coefficient.Coefficient / 1000
preGold += troll.Price[v.Id] * troll.Items[v.Id]
}
// 出售之前算成本
if len(troll.Items) > 0 {
sellGold := this.SellAllItem(session.GetUserId(), troll, sellPrice, tarinPos)
if sellGold != 0 {
if code = this.ModuleUser.AddAttributeValue(session, comm.ResGold, sellGold, true); code != pb.ErrorCode_Success {
this.Errorf("玩家 uid:%s 金币不足,获得金币%d", session.GetUserId(), sellGold)
} // 一次交易完成做一次结算
}
totalGold += sellGold
// 计算本次出售赚的金币
if sellGold-preGold > 0 {
troll.TotalEarn += int64(sellGold - preGold)
}
troll.AiCount++
aiMaxCount := this.configure.GetTrollRule(comm.TrollAIBuyCount)
if troll.AiCount+troll.SellCount > aiMaxCount { //达到最大交易次数
break
}
}
} else if troll.Buy >= coefficient.Coefficient { // 可以购买
for _, v := range goods {
sellPrice[v.Id] = v.Goodsprice * coefficient.Coefficient / 1000
}
troll.Shop = make(map[int32]int32) // 买之前清除购买上限
buyGold := this.BuyAllItem(session.GetUserId(), troll, sellPrice, tarinPos)
if buyGold != 0 {
if code = this.ModuleUser.AddAttributeValue(session, comm.ResGold, buyGold, true); code != pb.ErrorCode_Success {
this.Errorf("玩家 uid:%s 金币不足,获得金币%d", session.GetUserId(), buyGold)
}
}
totalGold += buyGold
}
} else { // 超过当前时间
refreshTime -= int64(sz[index])
break
}
if index > iCount*maxCoefficient { // ai挂机最大限制
break
}
}
update["shop"] = troll.Shop
update["items"] = troll.Items
update["price"] = troll.Price
update["aiCount"] = troll.AiCount
update["gridNum"] = troll.GridNum
update["totalEarn"] = troll.TotalEarn
if confLv := this.configure.GetTrollLv(troll.GetNpcLv() + 1); confLv != nil {
if troll.TotalEarn >= int64(confLv.Money) {
troll.NpcLv += 1 // npc levelUp
update["npcLv"] = troll.NpcLv
}
}
this.ModifyTrollData(session.GetUserId(), update)
return
}
// 出售所有货物
func (this *Caravan) SellAllItem(uid string, troll *pb.DBTrollTrain, price map[int32]int32, tarinPos int32) (gold int32) {
for k, v := range troll.Items {
if _, ok := price[k]; ok {
gold += price[k] * v
}
delete(troll.Items, k) // 清除数据
}
troll.Price = make(map[int32]int32, 0) // 原来的价格也清除
troll.GridNum = 0 // 清空格子
return
}
// 可以购买商品
func (this *Caravan) BuyAllItem(uid string, troll *pb.DBTrollTrain, price map[int32]int32, tarinPos int32) (gold int32) {
var (
box map[int32]int32 // 盒子 存放可购买的物品
leftGirdNum int32 // 剩余可购买格子数量
costGold int32
buyBox map[int32]int32 // 盒子 存放可购买的物品
)
maxGirdNum := this.configure.GetTrollRule(comm.TrollGridCount) // 获取背包最大格子数量
maxgoods := this.configure.GetTrollRule(comm.TrollItemCount) // 获取单个物品最大上限 20个
leftGirdNum = maxGirdNum - troll.GridNum
box = make(map[int32]int32, 0)
buyBox = make(map[int32]int32, 0)
goods := this.configure.GetTrollAllGoods()
for _, v := range goods {
for {
if leftGirdNum > 0 && troll.Shop[v.Id] < v.Max {
leftGirdNum--
troll.Shop[v.Id] += maxgoods
box[v.Id] += maxgoods // 加入篮子
} else {
break
}
}
// 检查该位置的格子没有补满
full := (troll.Items[v.Id] + box[v.Id]) % maxgoods
if full != 0 {
box[v.Id] += (maxgoods - full) // 格子补满
}
}
// 通过金币来校验哪些物品可以买
curGold := this.ModuleUser.QueryAttributeValue(uid, comm.ResGold)
for k, v := range box {
for i := 0; i < int(v); i++ { //0 1 2 3
curGold -= int64(price[k])
costGold -= price[k]
if curGold < 0 {
box[k] = int32(i)
costGold += price[k] // 返还之前扣的
break
}
buyBox[k]++
}
}
if len(buyBox) == 0 {
return // 没有可购买的直接返回
}
for _, v := range goods { // 计算购买后的平均价格
g := troll.Items[v.Id] * troll.Price[v.Id]
g += buyBox[v.Id] * price[v.Id]
troll.Items[v.Id] += buyBox[v.Id]
if troll.Items[v.Id] != 0 {
troll.Price[v.Id] = g / troll.Items[v.Id]
}
}
gold = costGold
// 统计格子
troll.GridNum = 0
for _, v := range troll.Items {
if v > 0 {
troll.GridNum += int32(math.Ceil(float64(v) / float64(maxgoods)))
}
}
return
}
func (this *Caravan) QueryRankList() (ranks []string, gold []int64, err error) {
var (
result []string
)
tableName := "trollRank"
if result, err = this.modelTroll.Redis.ZRevRange(tableName, 0, comm.MaxRankList).Result(); err != nil {
this.Errorln(err)
return
}
ranks = make([]string, 0)
for i := 0; i < len(result); i++ {
if _d, err := this.modelTroll.Redis.ZScore(tableName, result[i]); err == nil {
gold = append(gold, int64(_d))
ranks = append(ranks, result[i])
}
}
return
}

View File

@ -21,7 +21,7 @@ func NewGameBuzkashiMount(_buf []map[string]interface{}) (*GameBuzkashiMount, er
return nil, err2
} else {
_dataList = append(_dataList, _v)
dataMap[_v.Num] = _v
dataMap[_v.Id] = _v
}
}
return &GameBuzkashiMount{_dataList:_dataList, _dataMap:dataMap}, nil

View File

@ -11,12 +11,17 @@ package cfg
import "errors"
type GameBuzkashiMountData struct {
Num string
Id string
Name string
Intr string
Color int32
Img string
Access []int32
Model string
Point string
Stime int32
Etime int32
Hp int32
Model string
Point string
Moderate int32
Sprint int32
Acceleration int32
@ -30,12 +35,30 @@ func (*GameBuzkashiMountData) GetTypeId() int32 {
}
func (_v *GameBuzkashiMountData)Deserialize(_buf map[string]interface{}) (err error) {
{ var _ok_ bool; if _v.Num, _ok_ = _buf["num"].(string); !_ok_ { err = errors.New("num error"); return } }
{ var _ok_ bool; if _v.Id, _ok_ = _buf["id"].(string); !_ok_ { err = errors.New("id error"); return } }
{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 __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["intr"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Intr error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Intr, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["Color"].(float64); !_ok_ { err = errors.New("Color error"); return }; _v.Color = int32(_tempNum_) }
{ var _ok_ bool; if _v.Img, _ok_ = _buf["Img"].(string); !_ok_ { err = errors.New("Img error"); return } }
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["access"].([]interface{}); !_ok_ { err = errors.New("access error"); return }
_v.Access = 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.Access = append(_v.Access, _list_v_)
}
}
{ var _ok_ bool; if _v.Model, _ok_ = _buf["model"].(string); !_ok_ { err = errors.New("model error"); return } }
{ var _ok_ bool; if _v.Point, _ok_ = _buf["point"].(string); !_ok_ { err = errors.New("point error"); return } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["stime"].(float64); !_ok_ { err = errors.New("stime error"); return }; _v.Stime = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["etime"].(float64); !_ok_ { err = errors.New("etime error"); return }; _v.Etime = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["hp"].(float64); !_ok_ { err = errors.New("hp error"); return }; _v.Hp = int32(_tempNum_) }
{ var _ok_ bool; if _v.Model, _ok_ = _buf["model"].(string); !_ok_ { err = errors.New("model error"); return } }
{ var _ok_ bool; if _v.Point, _ok_ = _buf["point"].(string); !_ok_ { err = errors.New("point error"); return } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["moderate"].(float64); !_ok_ { err = errors.New("moderate error"); return }; _v.Moderate = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["sprint"].(float64); !_ok_ { err = errors.New("sprint error"); return }; _v.Sprint = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["acceleration"].(float64); !_ok_ { err = errors.New("acceleration error"); return }; _v.Acceleration = int32(_tempNum_) }

View File

@ -13,6 +13,7 @@ import "errors"
type GameDispatch_BattleData struct {
Id int32
Model string
IdleAni string
Weight int32
Startstory int32
Rejectstory int32
@ -37,6 +38,7 @@ func (*GameDispatch_BattleData) GetTypeId() int32 {
func (_v *GameDispatch_BattleData)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.Model, _ok_ = _buf["model"].(string); !_ok_ { err = errors.New("model error"); return } }
{ var _ok_ bool; if _v.IdleAni, _ok_ = _buf["idleAni"].(string); !_ok_ { err = errors.New("idleAni error"); return } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["weight"].(float64); !_ok_ { err = errors.New("weight error"); return }; _v.Weight = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["startstory"].(float64); !_ok_ { err = errors.New("startstory error"); return }; _v.Startstory = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["rejectstory"].(float64); !_ok_ { err = errors.New("rejectstory error"); return }; _v.Rejectstory = int32(_tempNum_) }

View File

@ -13,6 +13,9 @@ import "errors"
type GameNewSmithyData struct {
Id int32
Type int32
Type2Png string
Type2Star int32
Type3Name string
DrawingName string
QualityText string
DrawingPng string
@ -36,6 +39,9 @@ func (*GameNewSmithyData) GetTypeId() int32 {
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["type"].(float64); !_ok_ { err = errors.New("type error"); return }; _v.Type = int32(_tempNum_) }
{ var _ok_ bool; if _v.Type2Png, _ok_ = _buf["type2_png"].(string); !_ok_ { err = errors.New("type2_png error"); return } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["type2_star"].(float64); !_ok_ { err = errors.New("type2_star error"); return }; _v.Type2Star = int32(_tempNum_) }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["type3_name"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Type3Name error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Type3Name, _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["drawing_name"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.DrawingName error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.DrawingName, _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["quality_text"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.QualityText error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.QualityText, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
{ var _ok_ bool; if _v.DrawingPng, _ok_ = _buf["drawing_png"].(string); !_ok_ { err = errors.New("drawing_png error"); return } }

View File

@ -16,7 +16,9 @@ type GamePandamasMrylData struct {
Icon string
Des string
Ticks int32
Time int32
Ani string
Energy string
P int32
BeforeTraining int32
AfterTraining int32
@ -35,7 +37,9 @@ func (_v *GamePandamasMrylData)Deserialize(_buf map[string]interface{}) (err err
{ 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["des"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Des error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Des, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["ticks"].(float64); !_ok_ { err = errors.New("ticks error"); return }; _v.Ticks = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["time"].(float64); !_ok_ { err = errors.New("time error"); return }; _v.Time = int32(_tempNum_) }
{ var _ok_ bool; if _v.Ani, _ok_ = _buf["ani"].(string); !_ok_ { err = errors.New("ani error"); return } }
{ var _ok_ bool; if _v.Energy, _ok_ = _buf["energy"].(string); !_ok_ { err = errors.New("energy error"); return } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["p"].(float64); !_ok_ { err = errors.New("p error"); return }; _v.P = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["before_training"].(float64); !_ok_ { err = errors.New("before_training error"); return }; _v.BeforeTraining = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["after_training"].(float64); !_ok_ { err = errors.New("after_training error"); return }; _v.AfterTraining = int32(_tempNum_) }

View File

@ -224,6 +224,7 @@ type GameGlobalData struct {
BuzkashiResurrection int32
FavorabilityAttenuation []*Gamekv
Mounts string
BuzkashiRecentPlayer int32
}
const TypeId_GameGlobalData = 477542761
@ -927,6 +928,7 @@ func (_v *GameGlobalData)Deserialize(_buf map[string]interface{}) (err error) {
}
{ var _ok_ bool; if _v.Mounts, _ok_ = _buf["mounts"].(string); !_ok_ { err = errors.New("mounts error"); return } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["buzkashi_recentPlayer"].(float64); !_ok_ { err = errors.New("buzkashi_recentPlayer error"); return }; _v.BuzkashiRecentPlayer = int32(_tempNum_) }
return
}

View File

@ -21,6 +21,7 @@ type GameItemData struct {
Time int32
Reddottype int32
Effects string
ModelName string
BoxId int32
SynthetizeNum int32
Access []int32
@ -50,6 +51,7 @@ func (_v *GameItemData)Deserialize(_buf map[string]interface{}) (err error) {
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["time"].(float64); !_ok_ { err = errors.New("time error"); return }; _v.Time = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["reddottype"].(float64); !_ok_ { err = errors.New("reddottype error"); return }; _v.Reddottype = int32(_tempNum_) }
{ var _ok_ bool; if _v.Effects, _ok_ = _buf["effects"].(string); !_ok_ { err = errors.New("effects error"); return } }
{ var _ok_ bool; if _v.ModelName, _ok_ = _buf["modelName"].(string); !_ok_ { err = errors.New("modelName error"); return } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["box_id"].(float64); !_ok_ { err = errors.New("box_id error"); return }; _v.BoxId = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["synthetize_num"].(float64); !_ok_ { err = errors.New("synthetize_num error"); return }; _v.SynthetizeNum = int32(_tempNum_) }
{