奇遇随机添加权重

This commit is contained in:
luying
2020-10-14 17:19:09 +08:00
parent c06f422297
commit 57d60be3a2
5 changed files with 784 additions and 64 deletions

View File

@@ -2,8 +2,8 @@ import { Application, BackendSession, FrontendOrBackendSession } from 'pinus';
import { getGamedata } from '../../../util/gamedata';
import { EventRecordModel } from '../../../db/EventRecord';
import { RoleModel } from '../../../db/Role';
import { genCode, decodeStr, decodeStrSingle, Reward } from '../../../util/util';
import { EVENT_STATUS, EVENT_RECORD_STATUS, EVENT_TYPE } from '../../../consts/consts';
import { genCode, decodeStr, decodeStrSingle, Reward, getRandomWithWeight } from '../../../util/util';
import { EVENT_STATUS, EVENT_RECORD_STATUS, EVENT_TYPE, EVENT_RANDOM_TYPE_ONE_OPEN } from '../../../consts/consts';
export default function(app: Application) {
return new EventBattleHandler(app);
@@ -177,35 +177,55 @@ async function refreshEvent(num: number, roleId: string, roleName: string, t) {
suitLevel = decodeStrSingle('eventSuitLevel', suitLevel);
return suitLevel.min <= role.lv && suitLevel.max >= role.lv
});
let historyRecord = await EventRecordModel.getHostoryEventRecord(roleId);
let {history, turn} = historyRecord;
let randomList = dicEvent.filter(cur => {
return history.find(ccur => {
return ccur.eventId != cur.eventID;
});
});
console.log(JSON.stringify(randomList));
for(let i = 0; i < num; i++) {
if(randomList.length == 0) { // 一轮刷新过,开始新的一轮,保证所有事件都能刷新一遍
turn ++;
randomList = [...dicEvent];
if(EVENT_RANDOM_TYPE_ONE_OPEN) { // 每轮进行记录,保证每次随机出的不重复
let historyRecord = await EventRecordModel.getHostoryEventRecord(roleId);
let {history, turn} = historyRecord;
let randomList = dicEvent.filter(cur => {
return history.find(ccur => {
return ccur.eventId != cur.eventID;
});
});
console.log(JSON.stringify(randomList));
for(let i = 0; i < num; i++) {
if(randomList.length == 0) { // 刷新的3个事件不重复
turn ++;
randomList = [...dicEvent];
}
let {dic, index} = getRandomWithWeight(randomList);
if(!dic) break;
let eventCode = genCode(8);
let data = await EventRecordModel.saveEventRecord(eventCode, {
roleId, refTime: t, eventId: dic.eventID,
roleName, turn, type: dic.eventType, battleId: dic.warId||0, quality: dic.quality,
status: EVENT_RECORD_STATUS.WAITING
});
event.push(data)
randomList.splice(index, 1);
}
} else {
let randomList = dicEvent;
for(let i = 0; i < num; i++) {
let {dic} = getRandomWithWeight(randomList);
console.log('****', JSON.stringify(randomList))
if(!dic) break;
let eventCode = genCode(8);
let data = await EventRecordModel.saveEventRecord(eventCode, {
roleId, refTime: t, eventId: dic.eventID,
roleName, type: dic.eventType, battleId: dic.warId||0, quality: dic.quality,
status: EVENT_RECORD_STATUS.WAITING
});
event.push(data)
}
let index = Math.floor(Math.random() * randomList.length);
let dic = randomList[index];
let eventCode = genCode(8);
let data = await EventRecordModel.saveEventRecord(eventCode, {
roleId, refTime: t, eventId: dic.eventID,
roleName, turn, type: dic.eventType, battleId: dic.warId||0, quality: dic.quality,
status: EVENT_RECORD_STATUS.WAITING
});
event.push(data)
randomList.splice(index, 1);
}
return event;
}
function pushEventMsg(app, roleId, channelName, msg ) {
console.log('***pushEventMsg', channelName)
let channelService = app.get('channelService');

View File

@@ -48,17 +48,19 @@ import { GOOD_TYPE } from '../consts/consts';
let [gid, count, frequency] = arr;
if(isNaN(gid) || isNaN(count)) throw new Error('格式错误');
result = { gid: parseInt(gid), count: parseInt(count), frequency: parseInt(frequency) };
break;
}
case 'eventSuitLevel': {
let [min, max] = arr;
if(isNaN(min) || isNaN(max)) throw new Error('格式错误');
result = { min: parseInt(min), max: parseInt(max) };
break;
}
case 'attribute': {
let [id, value] = arr;
if(isNaN(id) || isNaN(value)) throw new Error('格式错误');
result = { id: parseInt(id), value: parseInt(value) };
break;
}
}
return result;
@@ -170,3 +172,21 @@ export function decodeIdCntArrayStr(str: string, multi: number) {
return ce;
}
export function getRandomWithWeight(randomList: any) {
let len = randomList.reduce((pre, cur) => {
return pre + cur.weight||1;
}, 0);
let index = Math.floor(Math.random() * len);
let result = { dic: null, index: -1 };
for(let i = 0; i < randomList.length; i++) {
let {weight = 0} = randomList[i];
if(index < weight) {
result.dic = randomList[i];
result.index = i;
break;
}
index -= weight;
}
return result
}

View File

@@ -37,6 +37,9 @@ export const WAR_TYPE = {
TOWER: 4
};
// 事件,是否开启保存随机记录方式
export const EVENT_RANDOM_TYPE_ONE_OPEN = false;
// 存于用户Role表事件开启状态
export const EVENT_STATUS = {
WAITING: 0, // 未开启

View File

@@ -48,8 +48,10 @@ export default class EventRecord extends BaseModel {
return {history: result, turn};
}
public static async saveEventRecord(eventCode: string, params: {roleId: string, refTime: number, eventId: number, roleName:string, turn: number, type: number, quality: number, battleId?: number, status: number } , lean=true ) {
let data = await EventRecordModel.findOneAndUpdate({eventCode}, { $set: {...params } }, {upsert: true, new: true}).select('eventCode eventId type quality status battleId').lean(lean);
public static async saveEventRecord(eventCode: string, params: {roleId: string, refTime: number, eventId: number, roleName:string, turn?: number, type: number, quality: number, battleId?: number, status: number } , lean=true ) {
let doc = new EventRecordModel();
let update = Object.assign(params, doc.toJSON(), {eventCode});
let data = await EventRecordModel.findOneAndUpdate({eventCode}, { $set: update }, {upsert: true, new: true}).select('eventCode eventId type quality status battleId').lean(lean);
return data;
}

View File

@@ -6,16 +6,16 @@
"name": "天降宝箱*铜币",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": "1&2",
"loseReward": "1&1",
"winReward": 0,
"loseReward": 0,
"suitLevel": "1&20",
"warId": 0,
"weight": 1,
"position": "1&3|2&4",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"__EMPTY_4": 0,
"__EMPTY_5": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
@@ -31,16 +31,16 @@
"name": "天降宝箱*元宝",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": "1&2",
"loseReward": "1&1",
"winReward": 0,
"loseReward": 0,
"suitLevel": "1&20",
"warId": 0,
"weight": 1,
"position": "1&3|2&5",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"__EMPTY_4": 0,
"__EMPTY_5": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
@@ -56,16 +56,16 @@
"name": "天降宝箱*材料",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": "1&2",
"loseReward": "1&1",
"winReward": 0,
"loseReward": 0,
"suitLevel": "1&20",
"warId": 0,
"weight": 1,
"position": "1&3|2&6",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"__EMPTY_4": 0,
"__EMPTY_5": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
@@ -81,16 +81,16 @@
"name": "答题*体力",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": "1&2",
"loseReward": "1&1",
"winReward": 0,
"loseReward": 0,
"suitLevel": "1&20",
"warId": 0,
"weight": 1,
"position": "1&3|2&7",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"__EMPTY_4": 0,
"__EMPTY_5": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
@@ -106,16 +106,16 @@
"name": "答题*将魂",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": "1&2",
"loseReward": "1&1",
"winReward": 0,
"loseReward": 0,
"suitLevel": "1&20",
"warId": 0,
"weight": 1,
"position": "1&3|2&8",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"__EMPTY_4": 0,
"__EMPTY_5": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
@@ -131,16 +131,16 @@
"name": "答题*经验书",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": "1&2",
"loseReward": "1&1",
"winReward": 0,
"loseReward": 0,
"suitLevel": "1&20",
"warId": 0,
"weight": 1,
"position": "1&3|2&9",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"__EMPTY_4": 0,
"__EMPTY_5": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
@@ -156,16 +156,16 @@
"name": "山贼拦路*待定",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": "1&2",
"loseReward": "1&1",
"winReward": 0,
"loseReward": 0,
"suitLevel": "1&20",
"warId": 2001,
"weight": 1,
"position": "1&3|2&10",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"__EMPTY_4": 0,
"__EMPTY_5": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
@@ -181,16 +181,16 @@
"name": "救援村落*待定",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": "1&2",
"loseReward": "1&1",
"winReward": 0,
"loseReward": 0,
"suitLevel": "1&20",
"warId": 2002,
"weight": 1,
"position": "1&3|2&11",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"__EMPTY_4": 0,
"__EMPTY_5": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
@@ -206,16 +206,691 @@
"name": "比武切磋*待定",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": "1&2",
"loseReward": "1&1",
"winReward": 0,
"loseReward": 0,
"suitLevel": "1&20",
"warId": 2003,
"weight": 1,
"position": "1&3|2&12",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
"starInfoInUI": 0,
"cost": 0,
"recommendedPower": 0,
"previousGk": 0
},
{
"eventID": 10,
"eventType": 1,
"quality": 1,
"name": "天降宝箱*铜币2",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": 0,
"loseReward": 0,
"suitLevel": "21&40",
"warId": 0,
"weight": 1,
"position": "1&3|2&13",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
"starInfoInUI": 0,
"cost": 0,
"recommendedPower": 0,
"previousGk": 0
},
{
"eventID": 11,
"eventType": 1,
"quality": 2,
"name": "天降宝箱*元宝2",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": 0,
"loseReward": 0,
"suitLevel": "21&40",
"warId": 0,
"weight": 1,
"position": "1&3|2&14",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
"starInfoInUI": 0,
"cost": 0,
"recommendedPower": 0,
"previousGk": 0
},
{
"eventID": 12,
"eventType": 1,
"quality": 2,
"name": "天降宝箱*材料2",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": 0,
"loseReward": 0,
"suitLevel": "21&40",
"warId": 0,
"weight": 1,
"position": "1&3|2&15",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
"starInfoInUI": 0,
"cost": 0,
"recommendedPower": 0,
"previousGk": 0
},
{
"eventID": 13,
"eventType": 2,
"quality": 2,
"name": "答题*体力2",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": 0,
"loseReward": 0,
"suitLevel": "21&40",
"warId": 0,
"weight": 1,
"position": "1&3|2&16",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
"starInfoInUI": 0,
"cost": 0,
"recommendedPower": 0,
"previousGk": 0
},
{
"eventID": 14,
"eventType": 2,
"quality": 2,
"name": "答题*将魂2",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": 0,
"loseReward": 0,
"suitLevel": "21&40",
"warId": 0,
"weight": 1,
"position": "1&3|2&17",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
"starInfoInUI": 0,
"cost": 0,
"recommendedPower": 0,
"previousGk": 0
},
{
"eventID": 15,
"eventType": 2,
"quality": 2,
"name": "答题*经验书2",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": 0,
"loseReward": 0,
"suitLevel": "21&40",
"warId": 0,
"weight": 1,
"position": "1&3|2&18",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
"starInfoInUI": 0,
"cost": 0,
"recommendedPower": 0,
"previousGk": 0
},
{
"eventID": 16,
"eventType": 3,
"quality": 2,
"name": "山贼拦路*待定2",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": 0,
"loseReward": 0,
"suitLevel": "21&40",
"warId": 2001,
"weight": 1,
"position": "1&3|2&19",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
"starInfoInUI": 0,
"cost": 0,
"recommendedPower": 0,
"previousGk": 0
},
{
"eventID": 17,
"eventType": 3,
"quality": 2,
"name": "救援村落*待定2",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": 0,
"loseReward": 0,
"suitLevel": "21&40",
"warId": 2002,
"weight": 1,
"position": "1&3|2&20",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
"starInfoInUI": 0,
"cost": 0,
"recommendedPower": 0,
"previousGk": 0
},
{
"eventID": 18,
"eventType": 3,
"quality": 2,
"name": "比武切磋*待定2",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": 0,
"loseReward": 0,
"suitLevel": "21&40",
"warId": 2003,
"weight": 1,
"position": "1&3|2&21",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
"starInfoInUI": 0,
"cost": 0,
"recommendedPower": 0,
"previousGk": 0
},
{
"eventID": 19,
"eventType": 1,
"quality": 3,
"name": "天降宝箱*铜币3",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": 0,
"loseReward": 0,
"suitLevel": "41&100",
"warId": 0,
"weight": 2,
"position": "1&3|2&22",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
"starInfoInUI": 0,
"cost": 0,
"recommendedPower": 0,
"previousGk": 0
},
{
"eventID": 20,
"eventType": 1,
"quality": 3,
"name": "天降宝箱*元宝3",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": 0,
"loseReward": 0,
"suitLevel": "41&100",
"warId": 0,
"weight": 2,
"position": "1&3|2&23",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
"starInfoInUI": 0,
"cost": 0,
"recommendedPower": 0,
"previousGk": 0
},
{
"eventID": 21,
"eventType": 1,
"quality": 3,
"name": "天降宝箱*材料3",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": 0,
"loseReward": 0,
"suitLevel": "41&100",
"warId": 0,
"weight": 2,
"position": "1&3|2&24",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
"starInfoInUI": 0,
"cost": 0,
"recommendedPower": 0,
"previousGk": 0
},
{
"eventID": 22,
"eventType": 2,
"quality": 3,
"name": "答题*体力3",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": 0,
"loseReward": 0,
"suitLevel": "41&100",
"warId": 0,
"weight": 2,
"position": "1&3|2&25",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
"starInfoInUI": 0,
"cost": 0,
"recommendedPower": 0,
"previousGk": 0
},
{
"eventID": 23,
"eventType": 2,
"quality": 3,
"name": "答题*将魂3",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": 0,
"loseReward": 0,
"suitLevel": "41&100",
"warId": 0,
"weight": 2,
"position": "1&3|2&26",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
"starInfoInUI": 0,
"cost": 0,
"recommendedPower": 0,
"previousGk": 0
},
{
"eventID": 24,
"eventType": 2,
"quality": 3,
"name": "答题*经验书3",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": 0,
"loseReward": 0,
"suitLevel": "41&100",
"warId": 0,
"weight": 2,
"position": "1&3|2&27",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
"starInfoInUI": 0,
"cost": 0,
"recommendedPower": 0,
"previousGk": 0
},
{
"eventID": 25,
"eventType": 3,
"quality": 3,
"name": "山贼拦路*待定3",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": 0,
"loseReward": 0,
"suitLevel": "41&100",
"warId": 2001,
"weight": 2,
"position": "1&3|2&28",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
"starInfoInUI": 0,
"cost": 0,
"recommendedPower": 0,
"previousGk": 0
},
{
"eventID": 26,
"eventType": 3,
"quality": 3,
"name": "救援村落*待定3",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": 0,
"loseReward": 0,
"suitLevel": "41&100",
"warId": 2002,
"weight": 2,
"position": "1&3|2&29",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
"starInfoInUI": 0,
"cost": 0,
"recommendedPower": 0,
"previousGk": 0
},
{
"eventID": 27,
"eventType": 3,
"quality": 3,
"name": "比武切磋*待定3",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": 0,
"loseReward": 0,
"suitLevel": "41&100",
"warId": 2003,
"weight": 2,
"position": "1&3|2&30",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
"starInfoInUI": 0,
"cost": 0,
"recommendedPower": 0,
"previousGk": 0
},
{
"eventID": 28,
"eventType": 1,
"quality": 4,
"name": "天降宝箱*铜币4",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": 0,
"loseReward": 0,
"suitLevel": "61&100",
"warId": 0,
"weight": 4,
"position": "1&3|2&31",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
"starInfoInUI": 0,
"cost": 0,
"recommendedPower": 0,
"previousGk": 0
},
{
"eventID": 29,
"eventType": 1,
"quality": 4,
"name": "天降宝箱*元宝4",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": 0,
"loseReward": 0,
"suitLevel": "61&100",
"warId": 0,
"weight": 4,
"position": "1&3|2&32",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
"starInfoInUI": 0,
"cost": 0,
"recommendedPower": 0,
"previousGk": 0
},
{
"eventID": 30,
"eventType": 1,
"quality": 4,
"name": "天降宝箱*材料4",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": 0,
"loseReward": 0,
"suitLevel": "61&100",
"warId": 0,
"weight": 4,
"position": "1&3|2&33",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
"starInfoInUI": 0,
"cost": 0,
"recommendedPower": 0,
"previousGk": 0
},
{
"eventID": 31,
"eventType": 2,
"quality": 4,
"name": "答题*体力4",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": 0,
"loseReward": 0,
"suitLevel": "61&100",
"warId": 0,
"weight": 4,
"position": "1&3|2&34",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
"starInfoInUI": 0,
"cost": 0,
"recommendedPower": 0,
"previousGk": 0
},
{
"eventID": 32,
"eventType": 2,
"quality": 4,
"name": "答题*将魂4",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": 0,
"loseReward": 0,
"suitLevel": "61&100",
"warId": 0,
"weight": 4,
"position": "1&3|2&35",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
"starInfoInUI": 0,
"cost": 0,
"recommendedPower": 0,
"previousGk": 0
},
{
"eventID": 33,
"eventType": 2,
"quality": 4,
"name": "答题*经验书4",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": 0,
"loseReward": 0,
"suitLevel": "61&100",
"warId": 0,
"weight": 4,
"position": "1&3|2&36",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
"starInfoInUI": 0,
"cost": 0,
"recommendedPower": 0,
"previousGk": 0
},
{
"eventID": 34,
"eventType": 3,
"quality": 4,
"name": "山贼拦路*待定4",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": 0,
"loseReward": 0,
"suitLevel": "61&100",
"warId": 2001,
"weight": 4,
"position": "1&3|2&37",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
"starInfoInUI": 0,
"cost": 0,
"recommendedPower": 0,
"previousGk": 0
},
{
"eventID": 35,
"eventType": 3,
"quality": 4,
"name": "救援村落*待定4",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": 0,
"loseReward": 0,
"suitLevel": "61&100",
"warId": 2002,
"weight": 4,
"position": "1&3|2&38",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,
"starInfoInUI": 0,
"cost": 0,
"recommendedPower": 0,
"previousGk": 0
},
{
"eventID": 36,
"eventType": 3,
"quality": 4,
"name": "比武切磋*待定4",
"sSpineInUI": 0,
"rScriptId": 0,
"winReward": 0,
"loseReward": 0,
"suitLevel": "61&100",
"warId": 2003,
"weight": 4,
"position": "1&3|2&39",
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0,
"__EMPTY_4": 0,
"__EMPTY_5": 0,
"fobiddenCharactor": 0,
"victoryInfoInUI": 0,
"loseInfoInUI": 0,