事件:修复有时候刷不到事件的问题

This commit is contained in:
luying
2021-12-24 12:07:28 +08:00
parent a8e5f94fd5
commit 0ce7e2eba2
2 changed files with 22 additions and 752 deletions

View File

@@ -178,6 +178,7 @@ export async function refreshEvent(num: number, roleId: string, roleName: string
let index = Math.floor(Math.random() * randomList.length);
let dic = randomList[index];
let point = randomPosition(dic.movePointArray, prePoint, curPoint);
if(!point) break;
let question = dic.eventType == EVENT_TYPE.QUIZ?randomQuestion(EVENT_QUIZ_NUM): undefined;
let eventCode = genCode(8);
let data = await EventRecordModel.saveEventRecord(eventCode, {
@@ -191,21 +192,28 @@ export async function refreshEvent(num: number, roleId: string, roleName: string
}
} else {
let randomList = dicEvent;
if(randomList.length == 0) return []
let curPoint = new Array<number>();
for(let i = 0; i < num; i++) {
let {dic} = getRandEelmWithWeight(randomList);
// 临时处理不出现相同的关卡id
for(let x = 0; x < 1000; x++) {
for(let x = 0; x < 1000; x++) { // 防死循环
let hasEvent = event.find(cur => {
return cur.type == EVENT_TYPE.BATTLE && cur.battleId == dic.warId});
let hasPreEvent = preEvents.find(cur => {
return cur.type == EVENT_TYPE.BATTLE && cur.battleId == dic.warId});
if(!hasEvent && !hasPreEvent) break;
if(x < 500) { // 基本不希望本轮和上轮出现过的关卡再次出现
if(!hasEvent && !hasPreEvent) break;
} else { // 但是实在找不到,只要本轮没出现过就好
if(!hasEvent) break;
}
dic = getRandEelmWithWeight(randomList).dic;
}
// if(!dic) break;
if(!dic) break;
let point = randomPosition(dic.movePointArray, prePoint, curPoint);
if(!point) break;
let eventCode = genCode(8);
let question = dic.eventType == EVENT_TYPE.QUIZ?randomQuestion(EVENT_QUIZ_NUM): [];
let data = await EventRecordModel.saveEventRecord(eventCode, {
@@ -232,7 +240,7 @@ function randomPosition(positionArr: number[], prePoint: Array<number>, curPoint
range = positionArr.filter(point => {return !curPoint.includes(point)});
}
if(range.length == 0) { // 还是不够,那是配表的问题,直接报错
throw new Error('event position not enough');
return false;
}
let index = Math.floor(Math.random() * range.length);
let point = range[index];

View File

@@ -8,7 +8,7 @@
"actorIDForQuestion": 0,
"winReward": "11001&2000",
"loseReward": "11001&1000",
"suitLevel": "1&60",
"suitLevel": "1&100",
"warId": 0,
"weight": 13,
"movePointArray": "81&83&85&87",
@@ -26,7 +26,7 @@
"actorIDForQuestion": 0,
"winReward": "31002&150",
"loseReward": "31002&75",
"suitLevel": "1&60",
"suitLevel": "1&100",
"warId": 2001,
"weight": 13,
"movePointArray": "81&83&85&87",
@@ -44,7 +44,7 @@
"actorIDForQuestion": 0,
"winReward": "17054&40",
"loseReward": "17054&20",
"suitLevel": "1&60",
"suitLevel": "1&100",
"warId": 2002,
"weight": 13,
"movePointArray": "81&83&85&87",
@@ -62,7 +62,7 @@
"actorIDForQuestion": 53,
"winReward": "17055&2",
"loseReward": "17055&1",
"suitLevel": "1&60",
"suitLevel": "1&100",
"warId": 0,
"weight": 13,
"movePointArray": "81&83&85&87",
@@ -80,7 +80,7 @@
"actorIDForQuestion": 12,
"winReward": "31001&5000",
"loseReward": "31001&2500",
"suitLevel": "1&60",
"suitLevel": "1&100",
"warId": 0,
"weight": 13,
"movePointArray": "81&83&85&87",
@@ -98,7 +98,7 @@
"actorIDForQuestion": 0,
"winReward": "17051&200",
"loseReward": "17051&100",
"suitLevel": "1&60",
"suitLevel": "1&100",
"warId": 2003,
"weight": 13,
"movePointArray": "81&83&85&87",
@@ -116,7 +116,7 @@
"actorIDForQuestion": 22,
"winReward": "71001&1",
"loseReward": "71001&1",
"suitLevel": "1&60",
"suitLevel": "1&100",
"warId": 0,
"weight": 13,
"movePointArray": "81&83&85&87",
@@ -134,7 +134,7 @@
"actorIDForQuestion": 0,
"winReward": "17044&1",
"loseReward": "17044&1",
"suitLevel": "1&60",
"suitLevel": "1&100",
"warId": 0,
"weight": 13,
"movePointArray": "81&83&85&87",
@@ -147,12 +147,12 @@
"eventID": 9,
"eventType": 1,
"quality": 1,
"name": "黄巾色将1",
"name": "土匪色首",
"sSpineInUI": "SL_huangjindao",
"actorIDForQuestion": 0,
"winReward": "22001&1",
"loseReward": "22001&1",
"suitLevel": "1&60",
"suitLevel": "1&100",
"warId": 0,
"weight": 13,
"movePointArray": "&",
@@ -160,743 +160,5 @@
"winDialogue": "12&13",
"loseDialogue": "14&15",
"group": 0
},
{
"eventID": 10,
"eventType": 1,
"quality": 1,
"name": "天降宝箱2",
"sSpineInUI": "gongbing",
"actorIDForQuestion": 0,
"winReward": "17052&2",
"loseReward": "17052&1",
"suitLevel": "90&100",
"warId": 0,
"weight": 13,
"movePointArray": "&",
"startDialogue": "1&4",
"winDialogue": "&",
"loseDialogue": "&",
"group": 0
},
{
"eventID": 11,
"eventType": 1,
"quality": 1,
"name": "逃兵献财2",
"sSpineInUI": "huangjindao",
"actorIDForQuestion": 0,
"winReward": "17053&1",
"loseReward": "17053&1",
"suitLevel": "90&100",
"warId": 0,
"weight": 13,
"movePointArray": "&",
"startDialogue": "2&3",
"winDialogue": "&",
"loseDialogue": "&",
"group": 0
},
{
"eventID": 12,
"eventType": 1,
"quality": 1,
"name": "老人奇遇2",
"sSpineInUI": "gongbing",
"actorIDForQuestion": 0,
"winReward": "60001&80",
"loseReward": "60001&40",
"suitLevel": "90&100",
"warId": 0,
"weight": 13,
"movePointArray": "&",
"startDialogue": "1&4",
"winDialogue": "&",
"loseDialogue": "&",
"group": 0
},
{
"eventID": 13,
"eventType": 2,
"quality": 2,
"name": "给贾诩解惑2",
"sSpineInUI": "jiaxu",
"actorIDForQuestion": 14,
"winReward": "11001&4000",
"loseReward": "11001&2000",
"suitLevel": "90&100",
"warId": 0,
"weight": 26,
"movePointArray": "&",
"startDialogue": "16&17",
"winDialogue": "18&",
"loseDialogue": "19&",
"group": 0
},
{
"eventID": 14,
"eventType": 2,
"quality": 2,
"name": "回答贾诩的考验2",
"sSpineInUI": "jiaxu",
"actorIDForQuestion": 14,
"winReward": "31002&200",
"loseReward": "31002&100",
"suitLevel": "90&100",
"warId": 0,
"weight": 26,
"movePointArray": "&",
"startDialogue": "16&17",
"winDialogue": "18&",
"loseDialogue": "19&",
"group": 0
},
{
"eventID": 15,
"eventType": 2,
"quality": 2,
"name": "帮助李典做题2",
"sSpineInUI": "lidian",
"actorIDForQuestion": 12,
"winReward": "17054&60",
"loseReward": "17054&30",
"suitLevel": "90&100",
"warId": 0,
"weight": 26,
"movePointArray": "&",
"startDialogue": "20&21&22&23&24",
"winDialogue": "25&",
"loseDialogue": "26&",
"group": 0
},
{
"eventID": 16,
"eventType": 3,
"quality": 2,
"name": "黄巾劫匪2",
"sSpineInUI": "huangjindao",
"actorIDForQuestion": 0,
"winReward": "17055&4",
"loseReward": "17055&2",
"suitLevel": "90&100",
"warId": 2001,
"weight": 26,
"movePointArray": "&",
"startDialogue": "5&6",
"winDialogue": "3&",
"loseDialogue": "7&",
"group": 0
},
{
"eventID": 17,
"eventType": 3,
"quality": 2,
"name": "解救百姓2",
"sSpineInUI": "qiangbing",
"actorIDForQuestion": 0,
"winReward": "31001&10000",
"loseReward": "31001&5000",
"suitLevel": "90&100",
"warId": 2002,
"weight": 26,
"movePointArray": "&",
"startDialogue": "27&28&29&30&31",
"winDialogue": "32&33",
"loseDialogue": "34&",
"group": 0
},
{
"eventID": 18,
"eventType": 3,
"quality": 2,
"name": "黄巾色将2",
"sSpineInUI": "SL_huangjindao",
"actorIDForQuestion": 0,
"winReward": "17051&400",
"loseReward": "17051&200",
"suitLevel": "90&100",
"warId": 2003,
"weight": 26,
"movePointArray": "&",
"startDialogue": "8&9&10&11",
"winDialogue": "12&13",
"loseDialogue": "14&15",
"group": 0
},
{
"eventID": 19,
"eventType": 1,
"quality": 2,
"name": "天降宝箱3",
"sSpineInUI": "gongbing",
"actorIDForQuestion": 0,
"winReward": "71001&2",
"loseReward": "71001&1",
"suitLevel": "90&100",
"warId": 0,
"weight": 26,
"movePointArray": "&",
"startDialogue": "1&4",
"winDialogue": "&",
"loseDialogue": "&",
"group": 0
},
{
"eventID": 20,
"eventType": 1,
"quality": 2,
"name": "逃兵献财3",
"sSpineInUI": "huangjindao",
"actorIDForQuestion": 0,
"winReward": "17044&2",
"loseReward": "17044&1",
"suitLevel": "90&100",
"warId": 0,
"weight": 26,
"movePointArray": "&",
"startDialogue": "2&3",
"winDialogue": "&",
"loseDialogue": "&",
"group": 0
},
{
"eventID": 21,
"eventType": 1,
"quality": 2,
"name": "老人奇遇3",
"sSpineInUI": "gongbing",
"actorIDForQuestion": 0,
"winReward": "22001&2",
"loseReward": "22001&1",
"suitLevel": "90&100",
"warId": 0,
"weight": 26,
"movePointArray": "&",
"startDialogue": "1&4",
"winDialogue": "&",
"loseDialogue": "&",
"group": 0
},
{
"eventID": 22,
"eventType": 2,
"quality": 2,
"name": "给贾诩解惑3",
"sSpineInUI": "jiaxu",
"actorIDForQuestion": 14,
"winReward": "17052&4",
"loseReward": "17052&2",
"suitLevel": "90&100",
"warId": 0,
"weight": 26,
"movePointArray": "&",
"startDialogue": "16&17",
"winDialogue": "18&",
"loseDialogue": "19&",
"group": 0
},
{
"eventID": 23,
"eventType": 2,
"quality": 2,
"name": "回答贾诩的考验3",
"sSpineInUI": "jiaxu",
"actorIDForQuestion": 14,
"winReward": "17053&2",
"loseReward": "17053&1",
"suitLevel": "90&100",
"warId": 0,
"weight": 26,
"movePointArray": "&",
"startDialogue": "16&17",
"winDialogue": "18&",
"loseDialogue": "19&",
"group": 0
},
{
"eventID": 24,
"eventType": 2,
"quality": 2,
"name": "帮助李典做题3",
"sSpineInUI": "lidian",
"actorIDForQuestion": 12,
"winReward": "60001&120",
"loseReward": "60001&60",
"suitLevel": "90&100",
"warId": 0,
"weight": 26,
"movePointArray": "&",
"startDialogue": "20&21&22&23&24",
"winDialogue": "25&",
"loseDialogue": "26&",
"group": 0
},
{
"eventID": 25,
"eventType": 3,
"quality": 3,
"name": "黄巾劫匪3",
"sSpineInUI": "huangjindao",
"actorIDForQuestion": 0,
"winReward": "11001&6000",
"loseReward": "11001&3000",
"suitLevel": "90&100",
"warId": 2001,
"weight": 26,
"movePointArray": "&",
"startDialogue": "5&6",
"winDialogue": "3&",
"loseDialogue": "7&",
"group": 0
},
{
"eventID": 26,
"eventType": 3,
"quality": 3,
"name": "解救百姓3",
"sSpineInUI": "qiangbing",
"actorIDForQuestion": 0,
"winReward": "31002&250",
"loseReward": "31002&125",
"suitLevel": "90&100",
"warId": 2002,
"weight": 26,
"movePointArray": "&",
"startDialogue": "27&28&29&30&31",
"winDialogue": "32&33",
"loseDialogue": "34&",
"group": 0
},
{
"eventID": 27,
"eventType": 3,
"quality": 3,
"name": "黄巾色将3",
"sSpineInUI": "SL_huangjindao",
"actorIDForQuestion": 0,
"winReward": "17054&80",
"loseReward": "17054&40",
"suitLevel": "90&100",
"warId": 2003,
"weight": 26,
"movePointArray": "&",
"startDialogue": "8&9&10&11",
"winDialogue": "12&13",
"loseDialogue": "14&15",
"group": 0
},
{
"eventID": 28,
"eventType": 1,
"quality": 3,
"name": "天降宝箱4",
"sSpineInUI": "gongbing",
"actorIDForQuestion": 0,
"winReward": "17055&6",
"loseReward": "17055&3",
"suitLevel": "90&100",
"warId": 0,
"weight": 26,
"movePointArray": "&",
"startDialogue": "1&4",
"winDialogue": "&",
"loseDialogue": "&",
"group": 0
},
{
"eventID": 29,
"eventType": 1,
"quality": 3,
"name": "逃兵献财4",
"sSpineInUI": "huangjindao",
"actorIDForQuestion": 0,
"winReward": "31001&15000",
"loseReward": "31001&7500",
"suitLevel": "90&100",
"warId": 0,
"weight": 26,
"movePointArray": "&",
"startDialogue": "2&3",
"winDialogue": "&",
"loseDialogue": "&",
"group": 0
},
{
"eventID": 30,
"eventType": 1,
"quality": 3,
"name": "老人奇遇4",
"sSpineInUI": "gongbing",
"actorIDForQuestion": 0,
"winReward": "17051&600",
"loseReward": "17051&300",
"suitLevel": "90&100",
"warId": 0,
"weight": 26,
"movePointArray": "&",
"startDialogue": "1&4",
"winDialogue": "&",
"loseDialogue": "&",
"group": 0
},
{
"eventID": 31,
"eventType": 2,
"quality": 3,
"name": "给贾诩解惑4",
"sSpineInUI": "jiaxu",
"actorIDForQuestion": 14,
"winReward": "71001&3",
"loseReward": "71001&2",
"suitLevel": "90&100",
"warId": 0,
"weight": 26,
"movePointArray": "&",
"startDialogue": "16&17",
"winDialogue": "18&",
"loseDialogue": "19&",
"group": 0
},
{
"eventID": 32,
"eventType": 2,
"quality": 3,
"name": "回答贾诩的考验4",
"sSpineInUI": "jiaxu",
"actorIDForQuestion": 14,
"winReward": "17044&2",
"loseReward": "17044&1",
"suitLevel": "90&100",
"warId": 0,
"weight": 26,
"movePointArray": "&",
"startDialogue": "16&17",
"winDialogue": "18&",
"loseDialogue": "19&",
"group": 0
},
{
"eventID": 33,
"eventType": 2,
"quality": 3,
"name": "帮助李典做题4",
"sSpineInUI": "lidian",
"actorIDForQuestion": 12,
"winReward": "17045&1",
"loseReward": "17045&1",
"suitLevel": "90&100",
"warId": 0,
"weight": 26,
"movePointArray": "&",
"startDialogue": "20&21&22&23&24",
"winDialogue": "25&",
"loseDialogue": "26&",
"group": 0
},
{
"eventID": 34,
"eventType": 3,
"quality": 3,
"name": "黄巾劫匪4",
"sSpineInUI": "huangjindao",
"actorIDForQuestion": 0,
"winReward": "22001&2",
"loseReward": "22001&1",
"suitLevel": "90&100",
"warId": 2001,
"weight": 26,
"movePointArray": "&",
"startDialogue": "5&6",
"winDialogue": "3&",
"loseDialogue": "7&",
"group": 0
},
{
"eventID": 35,
"eventType": 3,
"quality": 3,
"name": "解救百姓4",
"sSpineInUI": "qiangbing",
"actorIDForQuestion": 0,
"winReward": "17052&6",
"loseReward": "17052&3",
"suitLevel": "90&100",
"warId": 2002,
"weight": 26,
"movePointArray": "&",
"startDialogue": "27&28&29&30&31",
"winDialogue": "32&33",
"loseDialogue": "34&",
"group": 0
},
{
"eventID": 36,
"eventType": 3,
"quality": 3,
"name": "黄巾色将4",
"sSpineInUI": "SL_huangjindao",
"actorIDForQuestion": 0,
"winReward": "17053&3",
"loseReward": "17053&2",
"suitLevel": "90&100",
"warId": 2003,
"weight": 26,
"movePointArray": "&",
"startDialogue": "8&9&10&11",
"winDialogue": "12&13",
"loseDialogue": "14&15",
"group": 0
},
{
"eventID": 37,
"eventType": 1,
"quality": 3,
"name": "老人奇遇2",
"sSpineInUI": "gongbing",
"actorIDForQuestion": 0,
"winReward": "60001&80",
"loseReward": "60001&40",
"suitLevel": "90&100",
"warId": 0,
"weight": 13,
"movePointArray": "&",
"startDialogue": "1&4",
"winDialogue": "&",
"loseDialogue": "&",
"group": 0
},
{
"eventID": 38,
"eventType": 1,
"quality": 4,
"name": "天降宝箱",
"sSpineInUI": "gongbing",
"actorIDForQuestion": 0,
"winReward": "11001&2000",
"loseReward": "11001&1000",
"suitLevel": "90&100",
"warId": 0,
"weight": 13,
"movePointArray": "&",
"startDialogue": "1&4",
"winDialogue": "&",
"loseDialogue": "&",
"group": 0
},
{
"eventID": 39,
"eventType": 1,
"quality": 4,
"name": "逃兵献财",
"sSpineInUI": "huangjindao",
"actorIDForQuestion": 0,
"winReward": "31002&150",
"loseReward": "31002&75",
"suitLevel": "90&100",
"warId": 0,
"weight": 13,
"movePointArray": "&",
"startDialogue": "2&3",
"winDialogue": "&",
"loseDialogue": "&",
"group": 0
},
{
"eventID": 40,
"eventType": 1,
"quality": 4,
"name": "老人奇遇",
"sSpineInUI": "gongbing",
"actorIDForQuestion": 0,
"winReward": "17054&40",
"loseReward": "17054&20",
"suitLevel": "90&100",
"warId": 0,
"weight": 13,
"movePointArray": "&",
"startDialogue": "1&4",
"winDialogue": "&",
"loseDialogue": "&",
"group": 0
},
{
"eventID": 41,
"eventType": 2,
"quality": 4,
"name": "给贾诩解惑",
"sSpineInUI": "jiaxu",
"actorIDForQuestion": 14,
"winReward": "17055&2",
"loseReward": "17055&1",
"suitLevel": "90&100",
"warId": 0,
"weight": 13,
"movePointArray": "&",
"startDialogue": "16&17",
"winDialogue": "18&",
"loseDialogue": "19&",
"group": 0
},
{
"eventID": 42,
"eventType": 2,
"quality": 4,
"name": "回答贾诩的考验",
"sSpineInUI": "jiaxu",
"actorIDForQuestion": 14,
"winReward": "31001&5000",
"loseReward": "31001&2500",
"suitLevel": "90&100",
"warId": 0,
"weight": 13,
"movePointArray": "&",
"startDialogue": "16&17",
"winDialogue": "18&",
"loseDialogue": "19&",
"group": 0
},
{
"eventID": 43,
"eventType": 2,
"quality": 4,
"name": "帮助李典文学题",
"sSpineInUI": "lidian",
"actorIDForQuestion": 12,
"winReward": "17051&200",
"loseReward": "17051&100",
"suitLevel": "90&100",
"warId": 0,
"weight": 13,
"movePointArray": "&",
"startDialogue": "20&21&22&23&24",
"winDialogue": "25&",
"loseDialogue": "26&",
"group": 0
},
{
"eventID": 44,
"eventType": 3,
"quality": 4,
"name": "黄巾劫匪",
"sSpineInUI": "huangjindao",
"actorIDForQuestion": 0,
"winReward": "71001&1",
"loseReward": "71001&1",
"suitLevel": "90&100",
"warId": 2001,
"weight": 13,
"movePointArray": "&",
"startDialogue": "5&6",
"winDialogue": "3&",
"loseDialogue": "7&",
"group": 0
},
{
"eventID": 45,
"eventType": 3,
"quality": 4,
"name": "解救百姓",
"sSpineInUI": "qiangbing",
"actorIDForQuestion": 0,
"winReward": "17044&1",
"loseReward": "17044&1",
"suitLevel": "90&100",
"warId": 2002,
"weight": 13,
"movePointArray": "&",
"startDialogue": "27&28&29&30&31",
"winDialogue": "32&33",
"loseDialogue": "34&",
"group": 0
},
{
"eventID": 46,
"eventType": 3,
"quality": 4,
"name": "黄巾色将",
"sSpineInUI": "SL_huangjindao",
"actorIDForQuestion": 0,
"winReward": "22001&1",
"loseReward": "22001&1",
"suitLevel": "90&100",
"warId": 2003,
"weight": 13,
"movePointArray": "&",
"startDialogue": "8&9&10&11",
"winDialogue": "12&13",
"loseDialogue": "14&15",
"group": 0
},
{
"eventID": 47,
"eventType": 1,
"quality": 4,
"name": "天降宝箱2",
"sSpineInUI": "gongbing",
"actorIDForQuestion": 0,
"winReward": "17052&2",
"loseReward": "17052&1",
"suitLevel": "90&100",
"warId": 0,
"weight": 13,
"movePointArray": "&",
"startDialogue": "1&4",
"winDialogue": "&",
"loseDialogue": "&",
"group": 0
},
{
"eventID": 48,
"eventType": 1,
"quality": 4,
"name": "逃兵献财2",
"sSpineInUI": "huangjindao",
"actorIDForQuestion": 0,
"winReward": "17053&1",
"loseReward": "17053&1",
"suitLevel": "90&100",
"warId": 0,
"weight": 13,
"movePointArray": "&",
"startDialogue": "2&3",
"winDialogue": "&",
"loseDialogue": "&",
"group": 0
},
{
"eventID": 49,
"eventType": 1,
"quality": 4,
"name": "老人奇遇2",
"sSpineInUI": "gongbing",
"actorIDForQuestion": 0,
"winReward": "60001&80",
"loseReward": "60001&40",
"suitLevel": "90&100",
"warId": 0,
"weight": 13,
"movePointArray": "&",
"startDialogue": "1&4",
"winDialogue": "&",
"loseDialogue": "&",
"group": 0
},
{
"eventID": 50,
"eventType": 1,
"quality": 4,
"name": "老人奇遇2",
"sSpineInUI": "gongbing",
"actorIDForQuestion": 0,
"winReward": "60001&80",
"loseReward": "60001&40",
"suitLevel": "90&100",
"warId": 0,
"weight": 13,
"movePointArray": "&",
"startDialogue": "1&4",
"winDialogue": "&",
"loseDialogue": "&",
"group": 0
}
]