fix 联调时遇到的问题
This commit is contained in:
@@ -2,9 +2,9 @@ import { Application, BackendSession } from 'pinus';
|
|||||||
import { DailyRecordModel } from '../../../db/DailyRecord';
|
import { DailyRecordModel } from '../../../db/DailyRecord';
|
||||||
import { BattleRecordModel } from '../../../db/BattleRecord';
|
import { BattleRecordModel } from '../../../db/BattleRecord';
|
||||||
import { getGamedata } from '../../../pubUtils/gamedata';
|
import { getGamedata } from '../../../pubUtils/gamedata';
|
||||||
import { WAR_TYPE, GONGSHI } from '../../../consts/consts';
|
import { WAR_TYPE, GOLD_COST_RATIO } from '../../../consts/consts';
|
||||||
import { STATUS } from '../../../consts/statusCode';
|
import { STATUS } from '../../../consts/statusCode';
|
||||||
import { resResult } from '../../../pubUtils/util';
|
import { resResult, calculateNum } from '../../../pubUtils/util';
|
||||||
import { RoleModel } from '../../../db/Role';
|
import { RoleModel } from '../../../db/Role';
|
||||||
import { getDailyNum } from '../../../services/dailyBattleService';
|
import { getDailyNum } from '../../../services/dailyBattleService';
|
||||||
|
|
||||||
@@ -53,8 +53,7 @@ export class DailyBattleHandler {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let checkDailyResult = getDailyNum(refreshResult, timesPerDay, timesCanBuy);
|
let checkDailyResult = await getDailyNum(refreshResult, timesPerDay, timesCanBuy);
|
||||||
|
|
||||||
result.push({
|
result.push({
|
||||||
type, name, ...checkDailyResult,
|
type, name, ...checkDailyResult,
|
||||||
wars
|
wars
|
||||||
@@ -84,7 +83,7 @@ export class DailyBattleHandler {
|
|||||||
let buyCost = 0;
|
let buyCost = 0;
|
||||||
for(let i = 1; i <= count; i++) {
|
for(let i = 1; i <= count; i++) {
|
||||||
let num = buyCount + i;
|
let num = buyCount + i;
|
||||||
buyCost += eval(GONGSHI.DAILY_REFRESH_NUM_COST);
|
buyCost += calculateNum(GOLD_COST_RATIO.DAILY_REF_NUM, {num}, 50);
|
||||||
}
|
}
|
||||||
let {gold} = await RoleModel.findByRoleId(roleId);
|
let {gold} = await RoleModel.findByRoleId(roleId);
|
||||||
if(buyCost > gold) {
|
if(buyCost > gold) {
|
||||||
@@ -94,7 +93,7 @@ export class DailyBattleHandler {
|
|||||||
let newDailyRecord = await DailyRecordModel.increseBuyCount(roleId, type, count);
|
let newDailyRecord = await DailyRecordModel.increseBuyCount(roleId, type, count);
|
||||||
|
|
||||||
console.log(buyCost);
|
console.log(buyCost);
|
||||||
let checkDailyResult = getDailyNum(newDailyRecord, timesPerDay, timesCanBuy);
|
let checkDailyResult = await getDailyNum(newDailyRecord, timesPerDay, timesCanBuy);
|
||||||
return resResult(STATUS.SUCCESS, { type, ...checkDailyResult, buyCost});
|
return resResult(STATUS.SUCCESS, { type, ...checkDailyResult, buyCost});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,14 +1,14 @@
|
|||||||
import { STATUS } from './../../../consts/statusCode';
|
import { STATUS } from './../../../consts/statusCode';
|
||||||
import { TOWER_TASK_CONST, HANG_UP_CONSTS, GONGSHI } from './../../../consts/consts';
|
import { HANG_UP_CONSTS, GOLD_COST_RATIO, TOWER_TASK_CONST } from './../../../consts/consts';
|
||||||
import { TowerTaskRecModel } from './../../../db/TowerTaskRec';
|
import { TowerTaskRecModel } from './../../../db/TowerTaskRec';
|
||||||
import { HangUpSpdUpRecModel } from './../../../db/HangUpSpdUpRec';
|
import { HangUpSpdUpRecModel } from './../../../db/HangUpSpdUpRec';
|
||||||
import { HangUpRecordModel } from './../../../db/HangUpRecord';
|
import { HangUpRecordModel } from './../../../db/HangUpRecord';
|
||||||
import { RoleModel } from './../../../db/Role';
|
import { RoleModel } from './../../../db/Role';
|
||||||
import { TowerRecordModel } from './../../../db/TowerRecord';
|
import { TowerRecordModel } from './../../../db/TowerRecord';
|
||||||
import { Application, BackendSession } from 'pinus';
|
import { Application, BackendSession } from 'pinus';
|
||||||
import { getTaskById, getTaskIdByFloor, getTowerDataByLv } from '../../../pubUtils/gamedata';
|
import { getTaskById, getTowerDataByLv } from '../../../pubUtils/gamedata';
|
||||||
import { decodeArrayStr, decodeIdCntArrayStr, getRandEelm, resResult, shouldRefresh, getRandomWithWeight } from '../../../pubUtils/util';
|
import { decodeArrayStr, resResult, shouldRefresh, calculateNum } from '../../../pubUtils/util';
|
||||||
import { calcuHangUpReward, checkTaskConditions, checkHangUpSpdUpCnt } from '../../../services/battleService';
|
import { calcuHangUpReward, checkTaskConditions, checkHangUpSpdUpCnt, createCurTasks, treatTask, getRemainTime } from '../../../services/battleService';
|
||||||
import { handleFixedReward, handleReward } from '../../../services/rewardService';
|
import { handleFixedReward, handleReward } from '../../../services/rewardService';
|
||||||
|
|
||||||
export default function(app: Application) {
|
export default function(app: Application) {
|
||||||
@@ -68,18 +68,27 @@ export class TowerBattleHandler {
|
|||||||
|
|
||||||
async checkHangUpRewards(msg: {}, session: BackendSession) {
|
async checkHangUpRewards(msg: {}, session: BackendSession) {
|
||||||
let roleId = session.get('roleId');
|
let roleId = session.get('roleId');
|
||||||
const { timeReward, startTime, deltaTime } = await calcuHangUpReward(roleId);
|
const result = await calcuHangUpReward(roleId);
|
||||||
|
if(result.status == -1) {
|
||||||
|
return result.resResult
|
||||||
|
}
|
||||||
|
let {timeReward, startTime, deltaTime} = result.data;
|
||||||
return resResult(STATUS.SUCCESS, {startTime, hangUpPassTime: deltaTime, rewards: timeReward.map(cur => {return {id: cur.gid, count: cur.count}})});
|
return resResult(STATUS.SUCCESS, {startTime, hangUpPassTime: deltaTime, rewards: timeReward.map(cur => {return {id: cur.gid, count: cur.count}})});
|
||||||
}
|
}
|
||||||
|
|
||||||
async recHangUpRewards(msg: {}, session: BackendSession) {
|
async recHangUpRewards(msg: {}, session: BackendSession) {
|
||||||
let roleId = session.get('roleId');
|
let roleId = session.get('roleId');
|
||||||
let roleName = session.get('roleName');
|
let roleName = session.get('roleName');
|
||||||
const { timeReward, endLv, endTime, deltaTime, needReceiveGoods } = await calcuHangUpReward(roleId);
|
const result = await calcuHangUpReward(roleId);
|
||||||
|
if(result.status == -1) {
|
||||||
|
return result.resResult
|
||||||
|
}
|
||||||
|
let { timeReward, endLv, endTime, deltaTime, needReceiveGoods } = result.data;
|
||||||
|
|
||||||
const goods = await handleReward(roleId, roleName, timeReward);
|
const goods = await handleReward(roleId, roleName, timeReward);
|
||||||
await HangUpRecordModel.updateRec(roleId, roleName, endLv, endTime, needReceiveGoods);
|
await HangUpRecordModel.updateRec(roleId, roleName, endLv, endTime, needReceiveGoods);
|
||||||
return resResult(STATUS.SUCCESS, { endTime, hangUpPassTime: deltaTime, ...goods });
|
|
||||||
|
return resResult(STATUS.SUCCESS, { endTime, hangUpPassTime: deltaTime%HANG_UP_CONSTS.MAX_TIME, ...goods });
|
||||||
}
|
}
|
||||||
|
|
||||||
async hangUpSpeedUp(msg: {speedUpCnt: number}, session: BackendSession) {
|
async hangUpSpeedUp(msg: {speedUpCnt: number}, session: BackendSession) {
|
||||||
@@ -89,7 +98,11 @@ export class TowerBattleHandler {
|
|||||||
return resResult(STATUS.WRONG_PARMS);
|
return resResult(STATUS.WRONG_PARMS);
|
||||||
}
|
}
|
||||||
const curTime = new Date();
|
const curTime = new Date();
|
||||||
const { timeReward, endLv, deltaTime, needReceiveGoods } = await calcuHangUpReward(roleId, true, msg.speedUpCnt, curTime);
|
const calResult = await calcuHangUpReward(roleId, true, msg.speedUpCnt, curTime);
|
||||||
|
if(calResult.status == -1) {
|
||||||
|
return calResult.resResult;
|
||||||
|
}
|
||||||
|
let { timeReward, endLv, deltaTime, needReceiveGoods } = calResult.data;
|
||||||
|
|
||||||
let result = await checkHangUpSpdUpCnt(roleId, msg.speedUpCnt, curTime);
|
let result = await checkHangUpSpdUpCnt(roleId, msg.speedUpCnt, curTime);
|
||||||
if(result.status == -1) return result.resResult;
|
if(result.status == -1) return result.resResult;
|
||||||
@@ -117,11 +130,7 @@ export class TowerBattleHandler {
|
|||||||
for(let i = 1; i <= count; i++) {
|
for(let i = 1; i <= count; i++) {
|
||||||
let num = HANG_UP_CONSTS.MAX_SPD_UP_CNT - originCnt + i;
|
let num = HANG_UP_CONSTS.MAX_SPD_UP_CNT - originCnt + i;
|
||||||
if(num < 0) num = i;
|
if(num < 0) num = i;
|
||||||
try {
|
gold += calculateNum(GOLD_COST_RATIO.TOWER_HANG_SPDUP, {num}, 50);
|
||||||
gold += parseInt(eval(GONGSHI.TOWER_HANG_UP_SPEED_COST));
|
|
||||||
} catch(e) {
|
|
||||||
gold += 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return gold
|
return gold
|
||||||
}
|
}
|
||||||
@@ -129,33 +138,54 @@ export class TowerBattleHandler {
|
|||||||
async getTasks(msg: {}, session: BackendSession) {
|
async getTasks(msg: {}, session: BackendSession) {
|
||||||
let roleId = session.get('roleId');
|
let roleId = session.get('roleId');
|
||||||
let roleName = session.get('roleName');
|
let roleName = session.get('roleName');
|
||||||
let { towerLv } = await RoleModel.findByRoleId(roleId);
|
let curTime = new Date();
|
||||||
|
let { towerLv, towerTaskReCnt = 0, towerTaskRefTime = curTime } = await RoleModel.findByRoleId(roleId);
|
||||||
|
let needRefresh = shouldRefresh(towerTaskRefTime, curTime, TOWER_TASK_CONST.REFRESH_TIME);
|
||||||
|
if(needRefresh) {
|
||||||
|
towerTaskReCnt = 0;
|
||||||
|
}
|
||||||
|
let costGold = calculateNum(GOLD_COST_RATIO.TPWER_TASK_REF, {num: towerTaskReCnt}, 200);
|
||||||
let curTasks = await TowerTaskRecModel.getCurTasks(roleId);
|
let curTasks = await TowerTaskRecModel.getCurTasks(roleId);
|
||||||
if (!curTasks || curTasks.length == 0) {
|
if (!curTasks || curTasks.length == 0) {
|
||||||
let taskIds = [];
|
curTasks = await createCurTasks(towerLv, roleId, roleName);
|
||||||
const taskList = getTaskIdByFloor(towerLv)||[];
|
|
||||||
const randomList = taskList.map(taskId => getTaskById(taskId));
|
|
||||||
for(let i = 0; i < TOWER_TASK_CONST.RAND_CNT; i++) {
|
|
||||||
let list = randomList.filter(taskId => !taskIds.includes(taskId));
|
|
||||||
console.log(taskIds, JSON.stringify(list));
|
|
||||||
let {dic: tmp} = getRandomWithWeight(list);
|
|
||||||
if(tmp) {
|
|
||||||
taskIds.push(tmp.taskId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
curTasks = await TowerTaskRecModel.createTasks(roleId, roleName, taskIds);
|
|
||||||
}
|
}
|
||||||
return resResult(STATUS.SUCCESS, { curTasks });
|
let refRemainTime = getRemainTime(curTime);
|
||||||
|
|
||||||
|
return resResult(STATUS.SUCCESS, { curTasks: treatTask(curTasks, curTime), refRemainTime, nextCostGold: costGold });
|
||||||
|
}
|
||||||
|
|
||||||
|
async refreshTasks(msg: {}, session: BackendSession) {
|
||||||
|
let roleId = session.get('roleId');
|
||||||
|
let roleName = session.get('roleName');
|
||||||
|
let curTime = new Date();
|
||||||
|
let { towerLv, towerTaskReCnt = 0, towerTaskRefTime = curTime } = await RoleModel.findByRoleId(roleId);
|
||||||
|
let needRefresh = shouldRefresh(towerTaskRefTime, curTime, TOWER_TASK_CONST.REFRESH_TIME);
|
||||||
|
if(needRefresh) {
|
||||||
|
towerTaskReCnt = 0;
|
||||||
|
}
|
||||||
|
let costGold = calculateNum(GOLD_COST_RATIO.TPWER_TASK_REF, {num: towerTaskReCnt}, 200);
|
||||||
|
let {gold} = await RoleModel.findByRoleId(roleId);
|
||||||
|
if(costGold > gold) {
|
||||||
|
return resResult(STATUS.TOWER_GOLD_NOT_ENOUGH);
|
||||||
|
}
|
||||||
|
await RoleModel.increaseTowerRefCnt(roleId, needRefresh, curTime);
|
||||||
|
|
||||||
|
await TowerTaskRecModel.refreshTask(roleId); // 刷掉旧的任务
|
||||||
|
let curTasks = await createCurTasks(towerLv, roleId, roleName); // 刷出新的任务
|
||||||
|
|
||||||
|
let nextCostGold = calculateNum(GOLD_COST_RATIO.TPWER_TASK_REF, {num: towerTaskReCnt + 1}, 200);
|
||||||
|
return resResult(STATUS.SUCCESS, { curTasks: treatTask(curTasks, curTime), costGold, nextCostGold});
|
||||||
}
|
}
|
||||||
|
|
||||||
async sendTaskHero(msg: {batchCode: string, tasks: Array<{taskCode: string, heroes: Array<number>}>}, session: BackendSession) {
|
async sendTaskHero(msg: {batchCode: string, tasks: Array<{taskCode: string, heroes: Array<number>}>}, session: BackendSession) {
|
||||||
let roleId = session.get('roleId');
|
let roleId = session.get('roleId');
|
||||||
|
|
||||||
|
const curTime = new Date();
|
||||||
const curTasks = await TowerTaskRecModel.getCurTasks(roleId); // 当前一批的任务
|
const curTasks = await TowerTaskRecModel.getCurTasks(roleId); // 当前一批的任务
|
||||||
if (!curTasks || curTasks.length == 0) {
|
if (!curTasks || curTasks.length == 0) {
|
||||||
return resResult(STATUS.TOWER_TASK_NOT_FOUND);
|
return resResult(STATUS.TOWER_TASK_NOT_FOUND);
|
||||||
}
|
}
|
||||||
let usedHeroes = [];
|
let usedHeroes = [], tasks = [];
|
||||||
const tasksCode = [];
|
const tasksCode = [];
|
||||||
const taskMap = new Map<string, any>()
|
const taskMap = new Map<string, any>()
|
||||||
curTasks.forEach(task => {
|
curTasks.forEach(task => {
|
||||||
@@ -165,6 +195,9 @@ export class TowerBattleHandler {
|
|||||||
});
|
});
|
||||||
for (let task of msg.tasks) {
|
for (let task of msg.tasks) {
|
||||||
let curTask = taskMap.get(task.taskCode); // 数据库中,这个任务的数据
|
let curTask = taskMap.get(task.taskCode); // 数据库中,这个任务的数据
|
||||||
|
if(!curTask) {
|
||||||
|
return resResult(STATUS.TOWER_TASK_MISSING)
|
||||||
|
}
|
||||||
let taskInfo = getTaskById(curTask.taskId);
|
let taskInfo = getTaskById(curTask.taskId);
|
||||||
if (task.heroes.length > taskInfo.actorNeeded) { // 武将数,从策划表中读取
|
if (task.heroes.length > taskInfo.actorNeeded) { // 武将数,从策划表中读取
|
||||||
return resResult(STATUS.TOWER_TASK_MAX_HERO);
|
return resResult(STATUS.TOWER_TASK_MAX_HERO);
|
||||||
@@ -178,14 +211,14 @@ export class TowerBattleHandler {
|
|||||||
return resResult(STATUS.TOWER_TASK_HERO_HAS_USED);
|
return resResult(STATUS.TOWER_TASK_HERO_HAS_USED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
tasks.push({...task, completeTime: taskInfo.completeTime})
|
||||||
|
|
||||||
}
|
}
|
||||||
const curTime = new Date();
|
const recs = await TowerTaskRecModel.sendHeroes(roleId, msg.batchCode, tasks, curTime,);
|
||||||
const recs = await TowerTaskRecModel.sendHeroes(roleId, msg.batchCode, msg.tasks, curTime);
|
|
||||||
if (!recs || recs.length === 0) {
|
if (!recs || recs.length === 0) {
|
||||||
return resResult(STATUS.TOWER_TASK_SEND_ERR);
|
return resResult(STATUS.TOWER_TASK_SEND_ERR);
|
||||||
}
|
}
|
||||||
return resResult(STATUS.SUCCESS, { tasks: recs });
|
return resResult(STATUS.SUCCESS, { tasks: treatTask(recs, curTime) });
|
||||||
}
|
}
|
||||||
|
|
||||||
async settleTask(msg: {batchCode: string, taskCode: string}, session: BackendSession) {
|
async settleTask(msg: {batchCode: string, taskCode: string}, session: BackendSession) {
|
||||||
@@ -219,7 +252,7 @@ export class TowerBattleHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
await TowerTaskRecModel.finishTask(msg.batchCode, compTasks);
|
const rec = await TowerTaskRecModel.finishTask(msg.batchCode, compTasks);
|
||||||
return resResult(STATUS.SUCCESS, { compTasks, goods });
|
return resResult(STATUS.SUCCESS, { compTasks: treatTask(rec, curTime), goods });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +1,17 @@
|
|||||||
import { HeroModel } from './../db/Hero';
|
import { HeroModel } from './../db/Hero';
|
||||||
import { HangUpRecordModel } from './../db/HangUpRecord';
|
import { HangUpRecordModel } from './../db/HangUpRecord';
|
||||||
import { ChannelService } from 'pinus';
|
import { ChannelService } from 'pinus';
|
||||||
import { HANG_UP_CONSTS } from './../consts/consts';
|
import { HANG_UP_CONSTS, TOWER_TASK_CONST } from './../consts/consts';
|
||||||
import { BattleRecordModel } from './../db/BattleRecord';
|
import { BattleRecordModel } from './../db/BattleRecord';
|
||||||
import { TowerRecordModel } from './../db/TowerRecord';
|
import { TowerRecordModel } from './../db/TowerRecord';
|
||||||
import { RoleModel } from './../db/Role';
|
import { RoleModel } from './../db/Role';
|
||||||
import { getHeroInfoById, getJobInfoById, getTowerDataByLv } from "../pubUtils/gamedata"
|
import { getHeroInfoById, getJobInfoById, getTowerDataByLv, getTaskById, getTaskIdByFloor } from "../pubUtils/gamedata"
|
||||||
import { decodeArrayStr, shouldRefresh, resResult, decodeStr, cal } from '../pubUtils/util';
|
import { decodeArrayStr, shouldRefresh, resResult, decodeStr, cal, getRandomWithWeight, getRefTime } from '../pubUtils/util';
|
||||||
import { handleFixedReward } from './rewardService';
|
import { handleFixedReward } from './rewardService';
|
||||||
import { STATUS } from '../consts/statusCode';
|
import { STATUS } from '../consts/statusCode';
|
||||||
import { HangUpSpdUpRecModel } from '../db/HangUpSpdUpRec';
|
import { HangUpSpdUpRecModel } from '../db/HangUpSpdUpRec';
|
||||||
|
import TowerTaskRec, { TowerTaskRecModel } from '../db/TowerTaskRec';
|
||||||
|
import { PvpDefenseModel } from '../db/PvpDefense';
|
||||||
|
|
||||||
export async function checkTowerWar(roleId: string, battleId: number, heroes: Array<number>) {
|
export async function checkTowerWar(roleId: string, battleId: number, heroes: Array<number>) {
|
||||||
const battleIdStr = `${battleId}`;
|
const battleIdStr = `${battleId}`;
|
||||||
@@ -114,6 +116,9 @@ export async function checkHangUpSpdUpCnt(roleId: string, cnt: number, curTime:
|
|||||||
|
|
||||||
export async function calcuHangUpReward(roleId: string, speedUp = false, speedUpCnt = 1, curTime = new Date()) {
|
export async function calcuHangUpReward(roleId: string, speedUp = false, speedUpCnt = 1, curTime = new Date()) {
|
||||||
let { towerLv = 1, hangUpSpdUpCnt = 0, lastSpdUpTime } = await RoleModel.findByRoleId(roleId);
|
let { towerLv = 1, hangUpSpdUpCnt = 0, lastSpdUpTime } = await RoleModel.findByRoleId(roleId);
|
||||||
|
if(towerLv < HANG_UP_CONSTS.ENABLE_LV) {
|
||||||
|
return {status: -1, resResult: resResult(STATUS.TOWER_HANG_UP_NOT_START)}
|
||||||
|
}
|
||||||
|
|
||||||
let towerInfo = getTowerDataByLv(towerLv - 1); // towerLv 是当前层,奖励计算按照已经通过的层,即上一层
|
let towerInfo = getTowerDataByLv(towerLv - 1); // towerLv 是当前层,奖励计算按照已经通过的层,即上一层
|
||||||
let timeReward = []; // 奖励
|
let timeReward = []; // 奖励
|
||||||
@@ -175,12 +180,15 @@ export async function calcuHangUpReward(roleId: string, speedUp = false, speedUp
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
endLv: towerLv - 1,
|
status: 0,
|
||||||
startTime,
|
data: {
|
||||||
deltaTime,
|
endLv: towerLv - 1,
|
||||||
endTime,
|
startTime,
|
||||||
timeReward,
|
deltaTime,
|
||||||
needReceiveGoods
|
endTime,
|
||||||
|
timeReward,
|
||||||
|
needReceiveGoods
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -236,3 +244,45 @@ export async function checkTaskConditions(roleId: string, heroes: Array<number>,
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建新的派遣任务
|
||||||
|
* @param towerLv 玩家层数
|
||||||
|
* @param roleId 玩家id
|
||||||
|
* @param roleName 玩家名
|
||||||
|
*/
|
||||||
|
export async function createCurTasks(towerLv: number, roleId: string, roleName: string) {
|
||||||
|
|
||||||
|
let taskIds = [];
|
||||||
|
const taskList = getTaskIdByFloor(towerLv)||[];
|
||||||
|
const randomList = taskList.map(taskId => getTaskById(taskId));
|
||||||
|
for(let i = 0; i < TOWER_TASK_CONST.RAND_CNT; i++) {
|
||||||
|
let list = randomList.filter(cur => !taskIds.includes(cur.taskId));
|
||||||
|
let {dic: tmp} = getRandomWithWeight(list);
|
||||||
|
if(tmp) {
|
||||||
|
taskIds.push(tmp.taskId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const curTasks = await TowerTaskRecModel.createTasks(roleId, roleName, taskIds);
|
||||||
|
return curTasks
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getRemainTime(curTime: Date) {
|
||||||
|
let nextTime = getRefTime(curTime, TOWER_TASK_CONST.REFRESH_TIME, 1);
|
||||||
|
return Math.floor((nextTime.getTime() - curTime.getTime())/1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function treatTask(recs: Array<any>, curTime: Date) {
|
||||||
|
return recs.map(cur => {
|
||||||
|
let { heroes, batchCode, taskId, taskCode, status, completeTime} = cur;
|
||||||
|
let remainTime = 0;
|
||||||
|
if(status == 1) {
|
||||||
|
console.log(curTime.getTime(), completeTime.getTime())
|
||||||
|
remainTime = Math.floor((completeTime.getTime() - curTime.getTime())/1000);
|
||||||
|
if(remainTime < 0) {
|
||||||
|
status = 2; remainTime = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return { heroes, batchCode, taskId, taskCode, status, completeTime, remainTime }
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -23,7 +23,7 @@ export async function checkDaily(roleId: string, battleId: number, inc: number)
|
|||||||
if(count + inc > curDaily.timesPerDay + buyCount ) {
|
if(count + inc > curDaily.timesPerDay + buyCount ) {
|
||||||
return { status: -1, resResult: resResult(STATUS.DAILY_TIMES_LACK) }
|
return { status: -1, resResult: resResult(STATUS.DAILY_TIMES_LACK) }
|
||||||
}
|
}
|
||||||
let checkDailyResult = getDailyNum(curDaily, curDaily.timesPerDay, curDaily.timesCanBuy);
|
let checkDailyResult = await getDailyNum(dailyRecord, curDaily.timesPerDay, curDaily.timesCanBuy);
|
||||||
return {status: 1, data: {type, ...checkDailyResult}};
|
return {status: 1, data: {type, ...checkDailyResult}};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -56,7 +56,7 @@ export async function checkDailyAndIncrease(roleId: string, battleId: number, in
|
|||||||
return { status: -1, resResult: resResult(STATUS.DAILY_TIMES_LACK) }
|
return { status: -1, resResult: resResult(STATUS.DAILY_TIMES_LACK) }
|
||||||
}
|
}
|
||||||
let result = await DailyRecordModel.increseDailyCount(roleId, type, inc);
|
let result = await DailyRecordModel.increseDailyCount(roleId, type, inc);
|
||||||
let checkDailyResult = getDailyNum(result, curDaily.timesPerDay, curDaily.timesCanBuy);
|
let checkDailyResult = await getDailyNum(result, curDaily.timesPerDay, curDaily.timesCanBuy);
|
||||||
return {status: 1, data: {type, ...checkDailyResult}};
|
return {status: 1, data: {type, ...checkDailyResult}};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -178,5 +178,16 @@ export const FIX_SMS_CODE_TELS = ['18855953630', '13911134885', '15167549151', '
|
|||||||
|
|
||||||
export const GONGSHI = {
|
export const GONGSHI = {
|
||||||
"TOWER_HANG_UP_SPEED_COST": "50",
|
"TOWER_HANG_UP_SPEED_COST": "50",
|
||||||
|
"TOWER_TASK_REF_COST": "200",
|
||||||
"DAILY_REFRESH_NUM_COST": "50*num"
|
"DAILY_REFRESH_NUM_COST": "50*num"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 计算元宝和次数相关的系数
|
||||||
|
* 公式: A * num + B
|
||||||
|
*/
|
||||||
|
export const GOLD_COST_RATIO = {
|
||||||
|
"TOWER_HANG_SPDUP": { "A": 0, "B": 50 },
|
||||||
|
"TPWER_TASK_REF": { "A": 0, "B": 200 },
|
||||||
|
"DAILY_REF_NUM": { "A": 50, "B": 0 }
|
||||||
|
}
|
||||||
@@ -65,6 +65,8 @@ export const STATUS = {
|
|||||||
TOWER_TASK_SEND_ERR: { code: 20514, simStr: '任务派遣失败,请检查任务编号' },
|
TOWER_TASK_SEND_ERR: { code: 20514, simStr: '任务派遣失败,请检查任务编号' },
|
||||||
TOWER_TASK_BATCH_NOT_FOUND: { code: 20515, simStr: '派遣编码错误' },
|
TOWER_TASK_BATCH_NOT_FOUND: { code: 20515, simStr: '派遣编码错误' },
|
||||||
TOWER_GOLD_NOT_ENOUGH: { code: 20516, simStr: '元宝不足' },
|
TOWER_GOLD_NOT_ENOUGH: { code: 20516, simStr: '元宝不足' },
|
||||||
|
TOWER_TASK_MISSING: { code: 20517, simStr: '未找到该任务' },
|
||||||
|
TOWER_HANG_UP_NOT_START: { code: 20518, simStr: '挂机尚未开启' },
|
||||||
// 共斗 20600 - 20699
|
// 共斗 20600 - 20699
|
||||||
COM_BATTLE_DUP_ENTER: { code: 20601, simStr: '不能重复加入' },
|
COM_BATTLE_DUP_ENTER: { code: 20601, simStr: '不能重复加入' },
|
||||||
// 养成相关状态 30000 - 39999
|
// 养成相关状态 30000 - 39999
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ export default class DailyRecord extends BaseModel {
|
|||||||
refTime: number; // 刷新时间
|
refTime: number; // 刷新时间
|
||||||
|
|
||||||
public static async getDailyRecordById(roleId: string, type: number, lean = true) {
|
public static async getDailyRecordById(roleId: string, type: number, lean = true) {
|
||||||
const result = await DailyRecordModel.findOneAndUpdate({ roleId, type }, {}, {new: true, upsert: true}).select('type count buyCount refTime').lean(lean);
|
const result = await DailyRecordModel.findOneAndUpdate({ roleId, type }, {}, {new: true, upsert: true}).lean(lean);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+39
-24
@@ -97,19 +97,22 @@ export default class Role extends BaseModel {
|
|||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
loginTime: Date; // 更新 / 登录时间
|
loginTime: Date; // 更新 / 登录时间
|
||||||
|
|
||||||
|
// 天梯相关
|
||||||
@prop({ required: true, default: 1 })
|
@prop({ required: true, default: 1 })
|
||||||
towerLv: number; // 天梯当前层数
|
towerLv: number; // 天梯当前层数
|
||||||
|
|
||||||
@prop({ required: true })
|
|
||||||
eventStatus: number; // 奇遇开启状态, 0-未开启 1-开启了第一场事件 2-完全开启
|
|
||||||
|
|
||||||
// @prop({ required: false })
|
|
||||||
// hangUpTime: Date; // 当前挂机开始时间
|
|
||||||
@prop({ required: true, default: HANG_UP_CONSTS.MAX_SPD_UP_CNT})
|
@prop({ required: true, default: HANG_UP_CONSTS.MAX_SPD_UP_CNT})
|
||||||
hangUpSpdUpCnt: number; // 挂机加速次数
|
hangUpSpdUpCnt: number; // 挂机加速次数
|
||||||
@prop({ required: true, default: new Date()})
|
@prop({ required: true, default: new Date()})
|
||||||
lastSpdUpTime: Date; // 最后一次挂机加速时间
|
lastSpdUpTime: Date; // 最后一次挂机加速时间
|
||||||
|
|
||||||
|
@prop({ required: true, default: 0})
|
||||||
|
towerTaskReCnt: number; // 刷新派遣任务的次数,向上累加,消耗元宝和这个相关
|
||||||
|
@prop({ required: true, default: new Date()})
|
||||||
|
towerTaskRefTime: Date; // 刷新派遣任务的时间
|
||||||
|
|
||||||
|
@prop({ required: true })
|
||||||
|
eventStatus: number; // 奇遇开启状态, 0-未开启 1-开启了第一场事件 2-完全开启
|
||||||
|
|
||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
expeditionPoint: number; // 远征点数
|
expeditionPoint: number; // 远征点数
|
||||||
@@ -188,27 +191,27 @@ export default class Role extends BaseModel {
|
|||||||
|
|
||||||
|
|
||||||
public static async addItems(roleId: string, field: string, id: number, cnt: number, lean = true) {
|
public static async addItems(roleId: string, field: string, id: number, cnt: number, lean = true) {
|
||||||
try {
|
try {
|
||||||
let role = await RoleModel.findOne({roleId}).lean(lean);
|
let role = await RoleModel.findOne({roleId}).lean(lean);
|
||||||
let item = role?role[field]:[];
|
let item = role?role[field]:[];
|
||||||
let curItem = item.find(cur => cur.id == id);
|
let curItem = item.find(cur => cur.id == id);
|
||||||
if(!curItem) {
|
if(!curItem) {
|
||||||
let addToSet = {};
|
let addToSet = {};
|
||||||
addToSet[field] = {id, count: cnt};
|
addToSet[field] = {id, count: cnt};
|
||||||
let result = await RoleModel.findOneAndUpdate({roleId}, { $addToSet: addToSet }, { "new": true, "upsert": true}).lean(lean);
|
let result = await RoleModel.findOneAndUpdate({roleId}, { $addToSet: addToSet }, { "new": true, "upsert": true}).lean(lean);
|
||||||
return result;
|
return result;
|
||||||
} else {
|
} else {
|
||||||
let condition = { roleId };
|
let condition = { roleId };
|
||||||
condition[`${field}.id`] = id;
|
condition[`${field}.id`] = id;
|
||||||
let update = {};
|
let update = {};
|
||||||
update[`${field}.$.count`] = cnt;
|
update[`${field}.$.count`] = cnt;
|
||||||
|
|
||||||
let result = await RoleModel.findOneAndUpdate(condition, { $inc: update }, { "new": true, "upsert": true}).lean(lean);
|
let result = await RoleModel.findOneAndUpdate(condition, { $inc: update }, { "new": true, "upsert": true}).lean(lean);
|
||||||
return result;
|
return result;
|
||||||
|
}
|
||||||
|
}catch(e) {
|
||||||
|
console.error(e)
|
||||||
}
|
}
|
||||||
}catch(e) {
|
|
||||||
console.error(e)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async addCoin(roleId: string, cnt: number, lean = true) {
|
public static async addCoin(roleId: string, cnt: number, lean = true) {
|
||||||
@@ -239,6 +242,18 @@ try {
|
|||||||
).lean(lean);
|
).lean(lean);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 刷新派遣任务次数增长
|
||||||
|
public static async increaseTowerRefCnt(roleId: string, needRefresh: boolean, curTime: Date, lean = true) {
|
||||||
|
|
||||||
|
let role = null;
|
||||||
|
if (needRefresh) {
|
||||||
|
role = await RoleModel.findOneAndUpdate({roleId}, {towerTaskReCnt: 0, towerTaskRefTime: curTime}, {new: true}).lean(lean);
|
||||||
|
} else {
|
||||||
|
role = await RoleModel.findOneAndUpdate({roleId}, {$inc: {towerTaskReCnt: 1}}, {new: true}).lean(lean);
|
||||||
|
}
|
||||||
|
return role;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const RoleModel = getModelForClass(Role);
|
export const RoleModel = getModelForClass(Role);
|
||||||
|
|||||||
+25
-14
@@ -1,5 +1,7 @@
|
|||||||
import BaseModel from './BaseModel';
|
import BaseModel from './BaseModel';
|
||||||
import { index, getModelForClass, prop } from '@typegoose/typegoose';
|
import { index, getModelForClass, prop } from '@typegoose/typegoose';
|
||||||
|
import { getRefTime } from '../pubUtils/util';
|
||||||
|
import { TOWER_TASK_CONST } from '../consts/consts';
|
||||||
|
|
||||||
function genCodeTmp(len) {
|
function genCodeTmp(len) {
|
||||||
const chars = '123456789ABCDEFGHJKLMNPQRSTWXYZabcdefghijklmnopqrstuvwxyz';
|
const chars = '123456789ABCDEFGHJKLMNPQRSTWXYZabcdefghijklmnopqrstuvwxyz';
|
||||||
@@ -11,13 +13,7 @@ function genCodeTmp(len) {
|
|||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getRefTime(curTime = new Date()) {
|
|
||||||
if (curTime.getHours() < 5) {
|
|
||||||
curTime.setDate(curTime.getDate() - 1);
|
|
||||||
}
|
|
||||||
curTime.setHours(5, 0, 0, 0);
|
|
||||||
return curTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 天梯派遣记录表
|
* 天梯派遣记录表
|
||||||
@@ -34,6 +30,8 @@ export default class TowerTaskRec extends BaseModel {
|
|||||||
batchCode: string; // 本批派遣任务唯一标识
|
batchCode: string; // 本批派遣任务唯一标识
|
||||||
@prop({ required: true, default: 0})
|
@prop({ required: true, default: 0})
|
||||||
status: number; // 派遣任务当前状态,0-可派遣,1-已派遣,2-已完成,3-已领取
|
status: number; // 派遣任务当前状态,0-可派遣,1-已派遣,2-已完成,3-已领取
|
||||||
|
@prop({ required: true, default: 1})
|
||||||
|
refreshStatus: number; // 派遣任务是否显示 0-不显示,被刷新掉了 1-显示
|
||||||
@prop({ required: true, type: Number, default: [] })
|
@prop({ required: true, type: Number, default: [] })
|
||||||
heroes: Array<number>; // 此批派遣使用的全部武将
|
heroes: Array<number>; // 此批派遣使用的全部武将
|
||||||
|
|
||||||
@@ -43,10 +41,13 @@ export default class TowerTaskRec extends BaseModel {
|
|||||||
taskCode: string; // 服务器生成的任务唯一编号
|
taskCode: string; // 服务器生成的任务唯一编号
|
||||||
@prop({ required: false })
|
@prop({ required: false })
|
||||||
sendTime: Date; // 派遣时间
|
sendTime: Date; // 派遣时间
|
||||||
|
@prop({ required: false })
|
||||||
|
completeTime: Date; // 派遣结束时间
|
||||||
|
|
||||||
public static async getCurTasks(roleId: string, lean = true) {
|
public static async getCurTasks(roleId: string, lean = true) {
|
||||||
const refTime = getRefTime();
|
let curTime = new Date();
|
||||||
const recs = await TowerTaskRecModel.find({roleId, createdAt: {$gte: refTime}}).lean(lean);
|
const refTime = getRefTime(curTime, TOWER_TASK_CONST.REFRESH_TIME);
|
||||||
|
const recs = await TowerTaskRecModel.find({roleId, createdAt: {$gte: refTime}, refreshStatus: 1}).sort({createdAt: 1}).lean(lean);
|
||||||
return recs;
|
return recs;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -67,13 +68,14 @@ export default class TowerTaskRec extends BaseModel {
|
|||||||
return recs;
|
return recs;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async sendHeroes(_roleId: string, batchCode: string, tasks: Array<{taskCode:string, heroes: Array<number>}>, sendTime: Date, lean = true) {
|
public static async sendHeroes(_roleId: string, batchCode: string, tasks: Array<{taskCode:string, heroes: Array<number>, completeTime: number}>, sendTime: Date, lean = true) {
|
||||||
let recs = new Array();
|
let recs = new Array();
|
||||||
const refTime = getRefTime();
|
let curTime = new Date();
|
||||||
for (let task of tasks) {
|
const refTime = getRefTime(curTime, TOWER_TASK_CONST.REFRESH_TIME);
|
||||||
|
for (let {taskCode, heroes, completeTime} of tasks) {
|
||||||
const rec = await TowerTaskRecModel.findOneAndUpdate(
|
const rec = await TowerTaskRecModel.findOneAndUpdate(
|
||||||
{batchCode, taskCode: task.taskCode, createdAt: {$gte: refTime}},
|
{batchCode, taskCode: taskCode, createdAt: {$gte: refTime}},
|
||||||
{heroes: task.heroes, status: 1, sendTime},
|
{heroes: heroes, status: 1, sendTime, completeTime: new Date(sendTime.getTime() + completeTime * 1000)},
|
||||||
{new: true}).lean(lean);
|
{new: true}).lean(lean);
|
||||||
|
|
||||||
recs.push(rec);
|
recs.push(rec);
|
||||||
@@ -95,6 +97,15 @@ export default class TowerTaskRec extends BaseModel {
|
|||||||
return recs;
|
return recs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 刷掉旧任务
|
||||||
|
public static async refreshTask(roleId: string, lean = true) {
|
||||||
|
let curTime = new Date();
|
||||||
|
const refTime = getRefTime(curTime, TOWER_TASK_CONST.REFRESH_TIME);
|
||||||
|
console.log(refTime)
|
||||||
|
const recs = await TowerTaskRecModel.updateMany({roleId, createdAt: {$gte: refTime}, refreshStatus: 1}, {refreshStatus: 0}, {new: true}).lean(lean);
|
||||||
|
return recs;
|
||||||
|
}
|
||||||
|
|
||||||
public static async deleteAccount(roleId: string, lean = true) {
|
public static async deleteAccount(roleId: string, lean = true) {
|
||||||
let result = await TowerTaskRecModel.deleteMany({roleId}).lean(lean);
|
let result = await TowerTaskRecModel.deleteMany({roleId}).lean(lean);
|
||||||
return result||{};
|
return result||{};
|
||||||
|
|||||||
+37
-1
@@ -2,6 +2,7 @@ import { STATUS } from './../consts/statusCode';
|
|||||||
|
|
||||||
import { getGamedata } from './gamedata';
|
import { getGamedata } from './gamedata';
|
||||||
import { HeroModel } from '../db/Hero';
|
import { HeroModel } from '../db/Hero';
|
||||||
|
|
||||||
const moment = require('moment');
|
const moment = require('moment');
|
||||||
|
|
||||||
export function genCode(len) {
|
export function genCode(len) {
|
||||||
@@ -177,7 +178,8 @@ export function deltaDays(preTime: Date, proTime: Date): number {
|
|||||||
* @param hour 几点刷新
|
* @param hour 几点刷新
|
||||||
* @param deltaDay 间隔几天刷新,默认每天刷新(deltaDay = 1)
|
* @param deltaDay 间隔几天刷新,默认每天刷新(deltaDay = 1)
|
||||||
*/
|
*/
|
||||||
export function shouldRefresh(preTime: Date, curTime: Date, hour: number, deltaDay = 1): boolean {
|
export function shouldRefresh(preTime: Date, now: Date, hour: number, deltaDay = 1): boolean {
|
||||||
|
let curTime = new Date(now.getTime());
|
||||||
let refeshTime = curTime.setHours(hour, 0, 0, 0);
|
let refeshTime = curTime.setHours(hour, 0, 0, 0);
|
||||||
if (refeshTime - preTime.getTime() > deltaDay * 24 * 60 * 60 * 1000 && curTime.getTime() >= refeshTime) {
|
if (refeshTime - preTime.getTime() > deltaDay * 24 * 60 * 60 * 1000 && curTime.getTime() >= refeshTime) {
|
||||||
return true;
|
return true;
|
||||||
@@ -185,6 +187,21 @@ export function shouldRefresh(preTime: Date, curTime: Date, hour: number, deltaD
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取 x天后的y点
|
||||||
|
* @param curTime 现在时间
|
||||||
|
* @param hour 几点刷新
|
||||||
|
*/
|
||||||
|
export function getRefTime(now = new Date(), hour: number, day = 0) {
|
||||||
|
let curTime = new Date(now.getTime());
|
||||||
|
if (curTime.getHours() < hour) {
|
||||||
|
curTime.setDate(curTime.getDate() - 1);
|
||||||
|
}
|
||||||
|
curTime.setHours(hour, 0, 0, 0);
|
||||||
|
curTime = new Date(curTime.getTime() + day * 24 * 60 * 60 * 1000);
|
||||||
|
return curTime;
|
||||||
|
}
|
||||||
|
|
||||||
export function getRandEelm(source: Array<any> = [], cnt = 1): Array<any> {
|
export function getRandEelm(source: Array<any> = [], cnt = 1): Array<any> {
|
||||||
if (cnt > source.length) return [];
|
if (cnt > source.length) return [];
|
||||||
if (cnt === source.length) return source;
|
if (cnt === source.length) return source;
|
||||||
@@ -266,3 +283,22 @@ export const cal = {
|
|||||||
return this.mul(c / d, Math.pow(10, f - e));
|
return this.mul(c / d, Math.pow(10, f - e));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//计算公式
|
||||||
|
export function calculateNum(ratio: {A: number, B: number}, params: {num: number}, defaultVal = 0) {
|
||||||
|
// result = a * num + b
|
||||||
|
try {
|
||||||
|
let {A, B} = ratio;
|
||||||
|
let {num} = params;
|
||||||
|
let result = A * num + B;
|
||||||
|
if(isNaN(result)) {
|
||||||
|
console.error('calculate wrong: ', A, B, num)
|
||||||
|
return defaultVal;
|
||||||
|
} else {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}catch(e) {
|
||||||
|
console.error(e);
|
||||||
|
return defaultVal;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,9 +2,9 @@
|
|||||||
{
|
{
|
||||||
"war_id": 3001,
|
"war_id": 3001,
|
||||||
"dispatchJsonId": 3001,
|
"dispatchJsonId": 3001,
|
||||||
"bg_img_id": 3001,
|
"bg_img_id": 501,
|
||||||
"script_id": 0,
|
"script_id": 0,
|
||||||
"fixReward": "&",
|
"fixReward": "10205&1|17001&10|17005&2|17006&3",
|
||||||
"warType": 4,
|
"warType": 4,
|
||||||
"gk_name": "每日&护送商人",
|
"gk_name": "每日&护送商人",
|
||||||
"kingExp": 100,
|
"kingExp": 100,
|
||||||
@@ -12,9 +12,9 @@
|
|||||||
"turnLimted": 20,
|
"turnLimted": 20,
|
||||||
"forcedCharactor": "&",
|
"forcedCharactor": "&",
|
||||||
"fobiddenCharactor": "&",
|
"fobiddenCharactor": "&",
|
||||||
"victoryInfoInUI": "马车到达安全地区",
|
"victoryInfoInUI": "消灭所有敌军",
|
||||||
"loseInfoInUI": "马车被抢\n我方全部阵亡",
|
"loseInfoInUI": "马车被抢\r\n我方全部阵亡",
|
||||||
"starInfoInUI": "1.我方无人阵亡;\n2.在5回合内获得胜利",
|
"starInfoInUI": "1.我方无人阵亡;\r\n2.在5回合内获得胜利",
|
||||||
"cost": 0,
|
"cost": 0,
|
||||||
"iconInMap": "dengji1",
|
"iconInMap": "dengji1",
|
||||||
"iconName": "新手",
|
"iconName": "新手",
|
||||||
@@ -25,9 +25,9 @@
|
|||||||
{
|
{
|
||||||
"war_id": 3002,
|
"war_id": 3002,
|
||||||
"dispatchJsonId": 3002,
|
"dispatchJsonId": 3002,
|
||||||
"bg_img_id": 3002,
|
"bg_img_id": 501,
|
||||||
"script_id": 0,
|
"script_id": 0,
|
||||||
"fixReward": "&",
|
"fixReward": "10005&1|17002&10|17007&2|17008&3",
|
||||||
"warType": 4,
|
"warType": 4,
|
||||||
"gk_name": "每日&护送商人",
|
"gk_name": "每日&护送商人",
|
||||||
"kingExp": 100,
|
"kingExp": 100,
|
||||||
@@ -35,9 +35,9 @@
|
|||||||
"turnLimted": 20,
|
"turnLimted": 20,
|
||||||
"forcedCharactor": "&",
|
"forcedCharactor": "&",
|
||||||
"fobiddenCharactor": "&",
|
"fobiddenCharactor": "&",
|
||||||
"victoryInfoInUI": "马车到达安全地区",
|
"victoryInfoInUI": "消灭所有敌军",
|
||||||
"loseInfoInUI": "马车被抢\n我方全部阵亡",
|
"loseInfoInUI": "马车被抢\r\n我方全部阵亡",
|
||||||
"starInfoInUI": "1.我方无人阵亡;\n2.在5回合内获得胜利",
|
"starInfoInUI": "1.我方无人阵亡;\r\n2.在5回合内获得胜利",
|
||||||
"cost": 0,
|
"cost": 0,
|
||||||
"iconInMap": "dengji2",
|
"iconInMap": "dengji2",
|
||||||
"iconName": "普通",
|
"iconName": "普通",
|
||||||
@@ -48,9 +48,9 @@
|
|||||||
{
|
{
|
||||||
"war_id": 3003,
|
"war_id": 3003,
|
||||||
"dispatchJsonId": 3003,
|
"dispatchJsonId": 3003,
|
||||||
"bg_img_id": 3003,
|
"bg_img_id": 501,
|
||||||
"script_id": 0,
|
"script_id": 0,
|
||||||
"fixReward": "&",
|
"fixReward": "16004&1|16005&10|15014&2|15015&3",
|
||||||
"warType": 4,
|
"warType": 4,
|
||||||
"gk_name": "每日&护送商人",
|
"gk_name": "每日&护送商人",
|
||||||
"kingExp": 100,
|
"kingExp": 100,
|
||||||
@@ -58,9 +58,9 @@
|
|||||||
"turnLimted": 20,
|
"turnLimted": 20,
|
||||||
"forcedCharactor": "&",
|
"forcedCharactor": "&",
|
||||||
"fobiddenCharactor": "&",
|
"fobiddenCharactor": "&",
|
||||||
"victoryInfoInUI": "马车到达安全地区",
|
"victoryInfoInUI": "消灭所有敌军",
|
||||||
"loseInfoInUI": "马车被抢\n我方全部阵亡",
|
"loseInfoInUI": "马车被抢\r\n我方全部阵亡",
|
||||||
"starInfoInUI": "1.我方无人阵亡;\n2.在5回合内获得胜利",
|
"starInfoInUI": "1.我方无人阵亡;\r\n2.在5回合内获得胜利",
|
||||||
"cost": 0,
|
"cost": 0,
|
||||||
"iconInMap": "dengji3",
|
"iconInMap": "dengji3",
|
||||||
"iconName": "困难",
|
"iconName": "困难",
|
||||||
@@ -71,9 +71,9 @@
|
|||||||
{
|
{
|
||||||
"war_id": 3004,
|
"war_id": 3004,
|
||||||
"dispatchJsonId": 3004,
|
"dispatchJsonId": 3004,
|
||||||
"bg_img_id": 3004,
|
"bg_img_id": 501,
|
||||||
"script_id": 0,
|
"script_id": 0,
|
||||||
"fixReward": "&",
|
"fixReward": "31001&1|31002&10|17006&2|17006&3",
|
||||||
"warType": 4,
|
"warType": 4,
|
||||||
"gk_name": "每日&护送商人",
|
"gk_name": "每日&护送商人",
|
||||||
"kingExp": 100,
|
"kingExp": 100,
|
||||||
@@ -81,9 +81,9 @@
|
|||||||
"turnLimted": 20,
|
"turnLimted": 20,
|
||||||
"forcedCharactor": "&",
|
"forcedCharactor": "&",
|
||||||
"fobiddenCharactor": "&",
|
"fobiddenCharactor": "&",
|
||||||
"victoryInfoInUI": "马车到达安全地区",
|
"victoryInfoInUI": "消灭所有敌军",
|
||||||
"loseInfoInUI": "马车被抢\n我方全部阵亡",
|
"loseInfoInUI": "马车被抢\r\n我方全部阵亡",
|
||||||
"starInfoInUI": "1.我方无人阵亡;\n2.在5回合内获得胜利",
|
"starInfoInUI": "1.我方无人阵亡;\r\n2.在5回合内获得胜利",
|
||||||
"cost": 0,
|
"cost": 0,
|
||||||
"iconInMap": "dengji4",
|
"iconInMap": "dengji4",
|
||||||
"iconName": "恶梦",
|
"iconName": "恶梦",
|
||||||
@@ -94,9 +94,9 @@
|
|||||||
{
|
{
|
||||||
"war_id": 3005,
|
"war_id": 3005,
|
||||||
"dispatchJsonId": 3005,
|
"dispatchJsonId": 3005,
|
||||||
"bg_img_id": 3005,
|
"bg_img_id": 501,
|
||||||
"script_id": 0,
|
"script_id": 0,
|
||||||
"fixReward": "&",
|
"fixReward": "31003&1|31004&30|31002&20|31002&20",
|
||||||
"warType": 4,
|
"warType": 4,
|
||||||
"gk_name": "每日&护送商人",
|
"gk_name": "每日&护送商人",
|
||||||
"kingExp": 100,
|
"kingExp": 100,
|
||||||
@@ -104,9 +104,9 @@
|
|||||||
"turnLimted": 20,
|
"turnLimted": 20,
|
||||||
"forcedCharactor": "&",
|
"forcedCharactor": "&",
|
||||||
"fobiddenCharactor": "&",
|
"fobiddenCharactor": "&",
|
||||||
"victoryInfoInUI": "马车到达安全地区",
|
"victoryInfoInUI": "消灭所有敌军",
|
||||||
"loseInfoInUI": "马车被抢\n我方全部阵亡",
|
"loseInfoInUI": "马车被抢\r\n我方全部阵亡",
|
||||||
"starInfoInUI": "1.我方无人阵亡;\n2.在5回合内获得胜利",
|
"starInfoInUI": "1.我方无人阵亡;\r\n2.在5回合内获得胜利",
|
||||||
"cost": 0,
|
"cost": 0,
|
||||||
"iconInMap": "dengji5",
|
"iconInMap": "dengji5",
|
||||||
"iconName": "地狱",
|
"iconName": "地狱",
|
||||||
@@ -114,6 +114,328 @@
|
|||||||
"previousGk": 3004,
|
"previousGk": 3004,
|
||||||
"dailyType": 1
|
"dailyType": 1
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"war_id": 3006,
|
||||||
|
"dispatchJsonId": 3006,
|
||||||
|
"bg_img_id": 501,
|
||||||
|
"script_id": 0,
|
||||||
|
"fixReward": "10205&1|17001&10|17005&2|17006&3",
|
||||||
|
"warType": 4,
|
||||||
|
"gk_name": "每日&护送商人",
|
||||||
|
"kingExp": 100,
|
||||||
|
"lvLimted": 10,
|
||||||
|
"turnLimted": 20,
|
||||||
|
"forcedCharactor": "&",
|
||||||
|
"fobiddenCharactor": "&",
|
||||||
|
"victoryInfoInUI": "消灭所有敌军",
|
||||||
|
"loseInfoInUI": "马车被抢\r\n我方全部阵亡",
|
||||||
|
"starInfoInUI": "1.我方无人阵亡;\r\n2.在6回合内获得胜利",
|
||||||
|
"cost": 0,
|
||||||
|
"iconInMap": "dengji5",
|
||||||
|
"iconName": "痛苦",
|
||||||
|
"recommendedPower": 10008,
|
||||||
|
"previousGk": 3005,
|
||||||
|
"dailyType": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"war_id": 3007,
|
||||||
|
"dispatchJsonId": 3007,
|
||||||
|
"bg_img_id": 501,
|
||||||
|
"script_id": 0,
|
||||||
|
"fixReward": "10005&1|17002&10|17007&2|17008&3",
|
||||||
|
"warType": 4,
|
||||||
|
"gk_name": "每日&护送商人",
|
||||||
|
"kingExp": 100,
|
||||||
|
"lvLimted": 10,
|
||||||
|
"turnLimted": 20,
|
||||||
|
"forcedCharactor": "&",
|
||||||
|
"fobiddenCharactor": "&",
|
||||||
|
"victoryInfoInUI": "消灭所有敌军",
|
||||||
|
"loseInfoInUI": "马车被抢\r\n我方全部阵亡",
|
||||||
|
"starInfoInUI": "1.我方无人阵亡;\r\n2.在7回合内获得胜利",
|
||||||
|
"cost": 0,
|
||||||
|
"iconInMap": "dengji6",
|
||||||
|
"iconName": "大师",
|
||||||
|
"recommendedPower": 10008,
|
||||||
|
"previousGk": 3006,
|
||||||
|
"dailyType": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"war_id": 3008,
|
||||||
|
"dispatchJsonId": 3008,
|
||||||
|
"bg_img_id": 501,
|
||||||
|
"script_id": 0,
|
||||||
|
"fixReward": "16004&1|16005&10|15014&2|15015&3",
|
||||||
|
"warType": 4,
|
||||||
|
"gk_name": "每日&护送商人",
|
||||||
|
"kingExp": 100,
|
||||||
|
"lvLimted": 10,
|
||||||
|
"turnLimted": 20,
|
||||||
|
"forcedCharactor": "&",
|
||||||
|
"fobiddenCharactor": "&",
|
||||||
|
"victoryInfoInUI": "消灭所有敌军",
|
||||||
|
"loseInfoInUI": "马车被抢\r\n我方全部阵亡",
|
||||||
|
"starInfoInUI": "1.我方无人阵亡;\r\n2.在8回合内获得胜利",
|
||||||
|
"cost": 0,
|
||||||
|
"iconInMap": "dengji7",
|
||||||
|
"iconName": "折磨",
|
||||||
|
"recommendedPower": 10008,
|
||||||
|
"previousGk": 3007,
|
||||||
|
"dailyType": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"war_id": 3009,
|
||||||
|
"dispatchJsonId": 3009,
|
||||||
|
"bg_img_id": 501,
|
||||||
|
"script_id": 0,
|
||||||
|
"fixReward": "31001&1|31002&10|17006&2|17006&3",
|
||||||
|
"warType": 4,
|
||||||
|
"gk_name": "每日&护送商人",
|
||||||
|
"kingExp": 100,
|
||||||
|
"lvLimted": 10,
|
||||||
|
"turnLimted": 20,
|
||||||
|
"forcedCharactor": "&",
|
||||||
|
"fobiddenCharactor": "&",
|
||||||
|
"victoryInfoInUI": "消灭所有敌军",
|
||||||
|
"loseInfoInUI": "马车被抢\r\n我方全部阵亡",
|
||||||
|
"starInfoInUI": "1.我方无人阵亡;\r\n2.在9回合内获得胜利",
|
||||||
|
"cost": 0,
|
||||||
|
"iconInMap": "dengji8",
|
||||||
|
"iconName": "折磨1",
|
||||||
|
"recommendedPower": 10008,
|
||||||
|
"previousGk": 3008,
|
||||||
|
"dailyType": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"war_id": 3010,
|
||||||
|
"dispatchJsonId": 3010,
|
||||||
|
"bg_img_id": 501,
|
||||||
|
"script_id": 0,
|
||||||
|
"fixReward": "6005&1|6004&10|10001&2|10002&3",
|
||||||
|
"warType": 4,
|
||||||
|
"gk_name": "每日&城池守卫",
|
||||||
|
"kingExp": 100,
|
||||||
|
"lvLimted": 10,
|
||||||
|
"turnLimted": 20,
|
||||||
|
"forcedCharactor": "&",
|
||||||
|
"fobiddenCharactor": "&",
|
||||||
|
"victoryInfoInUI": "消灭所有敌军",
|
||||||
|
"loseInfoInUI": "\r\n我方全部阵亡",
|
||||||
|
"starInfoInUI": "1.我方无人阵亡;\r\n2.在5回合内获得胜利",
|
||||||
|
"cost": 0,
|
||||||
|
"iconInMap": "dengji1",
|
||||||
|
"iconName": "新手",
|
||||||
|
"recommendedPower": 10008,
|
||||||
|
"previousGk": 0,
|
||||||
|
"dailyType": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"war_id": 3011,
|
||||||
|
"dispatchJsonId": 3011,
|
||||||
|
"bg_img_id": 501,
|
||||||
|
"script_id": 0,
|
||||||
|
"fixReward": "10206&1|1&10|2&2|3&3",
|
||||||
|
"warType": 4,
|
||||||
|
"gk_name": "每日&城池守卫",
|
||||||
|
"kingExp": 100,
|
||||||
|
"lvLimted": 10,
|
||||||
|
"turnLimted": 20,
|
||||||
|
"forcedCharactor": "&",
|
||||||
|
"fobiddenCharactor": "&",
|
||||||
|
"victoryInfoInUI": "消灭所有敌军",
|
||||||
|
"loseInfoInUI": "\r\n我方全部阵亡",
|
||||||
|
"starInfoInUI": "1.我方无人阵亡;\r\n2.在5回合内获得胜利",
|
||||||
|
"cost": 0,
|
||||||
|
"iconInMap": "dengji2",
|
||||||
|
"iconName": "普通",
|
||||||
|
"recommendedPower": 10008,
|
||||||
|
"previousGk": 3010,
|
||||||
|
"dailyType": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"war_id": 3012,
|
||||||
|
"dispatchJsonId": 3012,
|
||||||
|
"bg_img_id": 501,
|
||||||
|
"script_id": 0,
|
||||||
|
"fixReward": "16004&1|16005&10|15014&2|15015&3",
|
||||||
|
"warType": 4,
|
||||||
|
"gk_name": "每日&城池守卫",
|
||||||
|
"kingExp": 100,
|
||||||
|
"lvLimted": 10,
|
||||||
|
"turnLimted": 20,
|
||||||
|
"forcedCharactor": "&",
|
||||||
|
"fobiddenCharactor": "&",
|
||||||
|
"victoryInfoInUI": "消灭所有敌军",
|
||||||
|
"loseInfoInUI": "\r\n我方全部阵亡",
|
||||||
|
"starInfoInUI": "1.我方无人阵亡;\r\n2.在5回合内获得胜利",
|
||||||
|
"cost": 0,
|
||||||
|
"iconInMap": "dengji3",
|
||||||
|
"iconName": "困难",
|
||||||
|
"recommendedPower": 10008,
|
||||||
|
"previousGk": 3011,
|
||||||
|
"dailyType": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"war_id": 3013,
|
||||||
|
"dispatchJsonId": 3013,
|
||||||
|
"bg_img_id": 501,
|
||||||
|
"script_id": 0,
|
||||||
|
"fixReward": "31001&1|31002&10|17006&2|17006&3",
|
||||||
|
"warType": 4,
|
||||||
|
"gk_name": "每日&城池守卫",
|
||||||
|
"kingExp": 100,
|
||||||
|
"lvLimted": 10,
|
||||||
|
"turnLimted": 20,
|
||||||
|
"forcedCharactor": "&",
|
||||||
|
"fobiddenCharactor": "&",
|
||||||
|
"victoryInfoInUI": "消灭所有敌军",
|
||||||
|
"loseInfoInUI": "\r\n我方全部阵亡",
|
||||||
|
"starInfoInUI": "1.我方无人阵亡;\r\n2.在5回合内获得胜利",
|
||||||
|
"cost": 0,
|
||||||
|
"iconInMap": "dengji4",
|
||||||
|
"iconName": "恶梦",
|
||||||
|
"recommendedPower": 10008,
|
||||||
|
"previousGk": 3012,
|
||||||
|
"dailyType": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"war_id": 3014,
|
||||||
|
"dispatchJsonId": 3014,
|
||||||
|
"bg_img_id": 501,
|
||||||
|
"script_id": 0,
|
||||||
|
"fixReward": "31003&1|31004&30|31002&20|31002&20",
|
||||||
|
"warType": 4,
|
||||||
|
"gk_name": "每日&城池守卫",
|
||||||
|
"kingExp": 100,
|
||||||
|
"lvLimted": 10,
|
||||||
|
"turnLimted": 20,
|
||||||
|
"forcedCharactor": "&",
|
||||||
|
"fobiddenCharactor": "&",
|
||||||
|
"victoryInfoInUI": "消灭所有敌军",
|
||||||
|
"loseInfoInUI": "\r\n我方全部阵亡",
|
||||||
|
"starInfoInUI": "1.我方无人阵亡;\r\n2.在5回合内获得胜利",
|
||||||
|
"cost": 0,
|
||||||
|
"iconInMap": "dengji5",
|
||||||
|
"iconName": "地狱",
|
||||||
|
"recommendedPower": 10008,
|
||||||
|
"previousGk": 3013,
|
||||||
|
"dailyType": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"war_id": 3020,
|
||||||
|
"dispatchJsonId": 3020,
|
||||||
|
"bg_img_id": 501,
|
||||||
|
"script_id": 0,
|
||||||
|
"fixReward": "10001&1|10002&30|10003&20|10004&20",
|
||||||
|
"warType": 4,
|
||||||
|
"gk_name": "每日&保护矿产",
|
||||||
|
"kingExp": 100,
|
||||||
|
"lvLimted": 10,
|
||||||
|
"turnLimted": 20,
|
||||||
|
"forcedCharactor": "&",
|
||||||
|
"fobiddenCharactor": "&",
|
||||||
|
"victoryInfoInUI": "消灭所有敌军",
|
||||||
|
"loseInfoInUI": "\r\n我方全部阵亡",
|
||||||
|
"starInfoInUI": "1.我方无人阵亡;\r\n2.在5回合内获得胜利",
|
||||||
|
"cost": 0,
|
||||||
|
"iconInMap": "dengji1",
|
||||||
|
"iconName": "新手",
|
||||||
|
"recommendedPower": 10008,
|
||||||
|
"previousGk": 0,
|
||||||
|
"dailyType": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"war_id": 3021,
|
||||||
|
"dispatchJsonId": 3021,
|
||||||
|
"bg_img_id": 501,
|
||||||
|
"script_id": 0,
|
||||||
|
"fixReward": "10206&1|17002&10|17007&2|17008&3",
|
||||||
|
"warType": 4,
|
||||||
|
"gk_name": "每日&保护矿产",
|
||||||
|
"kingExp": 100,
|
||||||
|
"lvLimted": 10,
|
||||||
|
"turnLimted": 20,
|
||||||
|
"forcedCharactor": "&",
|
||||||
|
"fobiddenCharactor": "&",
|
||||||
|
"victoryInfoInUI": "消灭所有敌军",
|
||||||
|
"loseInfoInUI": "\r\n我方全部阵亡",
|
||||||
|
"starInfoInUI": "1.我方无人阵亡;\r\n2.在5回合内获得胜利",
|
||||||
|
"cost": 0,
|
||||||
|
"iconInMap": "dengji2",
|
||||||
|
"iconName": "普通",
|
||||||
|
"recommendedPower": 10008,
|
||||||
|
"previousGk": 3020,
|
||||||
|
"dailyType": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"war_id": 3022,
|
||||||
|
"dispatchJsonId": 3022,
|
||||||
|
"bg_img_id": 501,
|
||||||
|
"script_id": 0,
|
||||||
|
"fixReward": "16004&1|16005&10|15014&2|15015&3",
|
||||||
|
"warType": 4,
|
||||||
|
"gk_name": "每日&保护矿产",
|
||||||
|
"kingExp": 100,
|
||||||
|
"lvLimted": 10,
|
||||||
|
"turnLimted": 20,
|
||||||
|
"forcedCharactor": "&",
|
||||||
|
"fobiddenCharactor": "&",
|
||||||
|
"victoryInfoInUI": "消灭所有敌军",
|
||||||
|
"loseInfoInUI": "\r\n我方全部阵亡",
|
||||||
|
"starInfoInUI": "1.我方无人阵亡;\r\n2.在5回合内获得胜利",
|
||||||
|
"cost": 0,
|
||||||
|
"iconInMap": "dengji3",
|
||||||
|
"iconName": "困难",
|
||||||
|
"recommendedPower": 10008,
|
||||||
|
"previousGk": 3021,
|
||||||
|
"dailyType": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"war_id": 3023,
|
||||||
|
"dispatchJsonId": 3023,
|
||||||
|
"bg_img_id": 501,
|
||||||
|
"script_id": 0,
|
||||||
|
"fixReward": "31001&1|31002&10|17006&2|17006&3",
|
||||||
|
"warType": 4,
|
||||||
|
"gk_name": "每日&保护矿产",
|
||||||
|
"kingExp": 100,
|
||||||
|
"lvLimted": 10,
|
||||||
|
"turnLimted": 20,
|
||||||
|
"forcedCharactor": "&",
|
||||||
|
"fobiddenCharactor": "&",
|
||||||
|
"victoryInfoInUI": "消灭所有敌军",
|
||||||
|
"loseInfoInUI": "\r\n我方全部阵亡",
|
||||||
|
"starInfoInUI": "1.我方无人阵亡;\r\n2.在5回合内获得胜利",
|
||||||
|
"cost": 0,
|
||||||
|
"iconInMap": "dengji4",
|
||||||
|
"iconName": "恶梦",
|
||||||
|
"recommendedPower": 10008,
|
||||||
|
"previousGk": 3022,
|
||||||
|
"dailyType": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"war_id": 3024,
|
||||||
|
"dispatchJsonId": 3024,
|
||||||
|
"bg_img_id": 501,
|
||||||
|
"script_id": 0,
|
||||||
|
"fixReward": "31003&1|31004&30|31002&20|31002&20",
|
||||||
|
"warType": 4,
|
||||||
|
"gk_name": "每日&保护矿产",
|
||||||
|
"kingExp": 100,
|
||||||
|
"lvLimted": 10,
|
||||||
|
"turnLimted": 20,
|
||||||
|
"forcedCharactor": "&",
|
||||||
|
"fobiddenCharactor": "&",
|
||||||
|
"victoryInfoInUI": "消灭所有敌军",
|
||||||
|
"loseInfoInUI": "\r\n我方全部阵亡",
|
||||||
|
"starInfoInUI": "1.我方无人阵亡;\r\n2.在5回合内获得胜利",
|
||||||
|
"cost": 0,
|
||||||
|
"iconInMap": "dengji5",
|
||||||
|
"iconName": "地狱",
|
||||||
|
"recommendedPower": 10008,
|
||||||
|
"previousGk": 3023,
|
||||||
|
"dailyType": 3
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"war_id": 0,
|
"war_id": 0,
|
||||||
"dispatchJsonId": 0,
|
"dispatchJsonId": 0,
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
"bonus": "3&2|4&1",
|
"bonus": "3&2|4&1",
|
||||||
"bonusCondition": "3&1&1",
|
"bonusCondition": "3&1&1",
|
||||||
"actorCnt": 1,
|
"actorCnt": 1,
|
||||||
"completeTime": 50,
|
"completeTime": 500000,
|
||||||
"suitFloor": 1,
|
"suitFloor": 1,
|
||||||
"weight": 1
|
"weight": 1
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user