diff --git a/src/api_s2c/lingzhulaixi/ApiPkBoss.ts b/src/api_s2c/lingzhulaixi/ApiPkBoss.ts index d469803..030ad43 100644 --- a/src/api_s2c/lingzhulaixi/ApiPkBoss.ts +++ b/src/api_s2c/lingzhulaixi/ApiPkBoss.ts @@ -91,13 +91,13 @@ export default async function (call: ApiCall) { } _mySetDat = { maxdps: _myData.maxdps, - time: _myData.time, } _bossData.delhp += result.totalDamage[0] } // 无论挑战成功失败都扣除战斗次数 _mySetDat["num"] = _myData.num + 1; + _mySetDat["time"] = G.time; // 设置boss数据 await LingZhuLaiXifun.setBossData(_bossData.bid, _setData) diff --git a/src/api_s2c/lingzhulaixi/ApiSaoDang.ts b/src/api_s2c/lingzhulaixi/ApiSaoDang.ts index b80b1dd..0ffc4b8 100644 --- a/src/api_s2c/lingzhulaixi/ApiSaoDang.ts +++ b/src/api_s2c/lingzhulaixi/ApiSaoDang.ts @@ -1,33 +1,33 @@ -import { ApiCall } from "tsrpc"; -import { LingZhuLaiXifun } from "../../public/lingzhulaixi"; -import { PlayerFun } from "../../public/player"; -import { ReqSaoDang, ResSaoDang } from "../../shared/protocols/lingzhulaixi/PtlSaoDang"; -import { PublicShared } from "../../shared/public/public"; -import { HongDianChange } from "../hongdian/fun"; +import {ApiCall} from "tsrpc"; +import {LingZhuLaiXifun} from "../../public/lingzhulaixi"; +import {PlayerFun} from "../../public/player"; +import {ReqSaoDang, ResSaoDang} from "../../shared/protocols/lingzhulaixi/PtlSaoDang"; +import {PublicShared} from "../../shared/public/public"; +import {HongDianChange} from "../hongdian/fun"; import {ActionLog} from "../../public/actionLog/actionLog"; export default async function (call: ApiCall) { let _con = await LingZhuLaiXifun.getCon(call.req.bid) if (!_con) { // 参数错误,无相关配置 - return call.error('', { code: -1, message: globalThis.lng.lingzhulaixi_1 }) + return call.error('', {code: -1, message: globalThis.lng.lingzhulaixi_1}) } if (call.conn.gud.lv < _con.lv) { // 等级不足 - return call.error('', { code: -2, message: globalThis.lng.lingzhulaixi_2 }) + return call.error('', {code: -2, message: globalThis.lng.lingzhulaixi_2}) } // boss信息 let _bossData = await LingZhuLaiXifun.getBossData(call.req.bid) if (_bossData.passtime != 0) { // boss 未复活 - return call.error('', { code: -3, message: globalThis.lng.lingzhulaixi_4 }) + return call.error('', {code: -3, message: globalThis.lng.lingzhulaixi_4}) } if (!_bossData.pkuser[call.uid]) { // 未挑战过,请先去挑战 - return call.error('', { code: -4, message: globalThis.lng.lingzhulaixi_5 }) + return call.error('', {code: -4, message: globalThis.lng.lingzhulaixi_5}) } let _myData = await LingZhuLaiXifun.getUsePKNum(call) @@ -54,7 +54,7 @@ export default async function (call: ApiCall) { if (!prize[0]) { // 无奖励,没有挑战次数 - return call.error('', { code: -5, message: globalThis.lng.lingzhulaixi_6 }) + return call.error('', {code: -5, message: globalThis.lng.lingzhulaixi_6}) } let _setData // 设置数据 @@ -71,8 +71,8 @@ export default async function (call: ApiCall) { Object.assign(_bossData, _setData["$set"]) // 清除玩家数据 await G.mongodb.cPlayerInfo('lingzhulaixi').updateMany( - { type: 'lingzhulaixi' }, - { $set: G.mongodb.createTreeObj({ key: `maxdps.${call.req.bid}`, val: 0 }) } + {type: 'lingzhulaixi'}, + {$set: G.mongodb.createTreeObj({key: `maxdps.${call.req.bid}`, val: 0})} ) } else { _setData = { @@ -86,13 +86,13 @@ export default async function (call: ApiCall) { // 设置boss数据 await LingZhuLaiXifun.setBossData(_bossData.bid, _setData) - await LingZhuLaiXifun.setMyData(call, { $inc: { num: _num } }) + await LingZhuLaiXifun.setMyData(call, {$inc: {num: _num}, $set: {time: G.time}}) // 发奖 prize = PublicShared.mergePrize(prize) await PlayerFun.sendPrize(call, prize) - ActionLog.addDayLog(call.uid, { key: "lingzhulaixi/PkBoss", val: _num }); + ActionLog.addDayLog(call.uid, {key: "lingzhulaixi/PkBoss", val: _num}); // 扣除挑战次数 _myData.num += _num diff --git a/src/api_s2c/pata/ApiSaoDang.ts b/src/api_s2c/pata/ApiSaoDang.ts index cd097cb..2d71115 100644 --- a/src/api_s2c/pata/ApiSaoDang.ts +++ b/src/api_s2c/pata/ApiSaoDang.ts @@ -1,10 +1,10 @@ -import { ApiCall } from "tsrpc"; -import { PataFun } from "../../public/pata"; -import { PlayerFun } from "../../public/player"; -import { ReqSaoDang, ResSaoDang } from "../../shared/protocols/pata/PtlSaoDang"; -import { PlayerShared } from '../../shared/public/player'; -import { PublicShared } from "../../shared/public/public"; -import { HongDianChange } from "../hongdian/fun"; +import {ApiCall} from "tsrpc"; +import {PataFun} from "../../public/pata"; +import {PlayerFun} from "../../public/player"; +import {ReqSaoDang, ResSaoDang} from "../../shared/protocols/pata/PtlSaoDang"; +import {PlayerShared} from '../../shared/public/player'; +import {PublicShared} from "../../shared/public/public"; +import {HongDianChange} from "../hongdian/fun"; export default async function (call: ApiCall) { let changeInfo = await PataFun.getInfo(call.uid); @@ -25,11 +25,11 @@ export default async function (call: ApiCall) { changeInfo.saodangNum = call.req.num + (changeInfo?.saodangNum || 0); // 改变的数据 - let setData = { - saodangNum: changeInfo.saodangNum - }; + // let setData = { + // saodangNum: changeInfo.saodangNum + // }; // 设置数据 - await PataFun.changeInfo(call.uid, changeInfo.sid, { $set: setData }); + await PataFun.changeInfo(call.uid, changeInfo.sid, {"$inc": {saodangNum: call.req.num}}); _prize = await PlayerFun.sendPrize(call, _prize); let data = { diff --git a/src/api_s2c/xstask/ApiOnekeyReceive.ts b/src/api_s2c/xstask/ApiOnekeyReceive.ts index a776b77..42d889a 100644 --- a/src/api_s2c/xstask/ApiOnekeyReceive.ts +++ b/src/api_s2c/xstask/ApiOnekeyReceive.ts @@ -1,9 +1,10 @@ -import { ApiCall } from "tsrpc"; -import { HeroFun } from '../../public/hero'; -import { XstaskFun } from '../../public/xstask'; -import { ReqOnekeyReceive, ResOnekeyReceive } from "../../shared/protocols/xstask/PtlOnekeyReceive"; -import { HeroShared } from '../../shared/public/hero'; -import { HongDianChange } from "../hongdian/fun"; +import {ApiCall} from "tsrpc"; +import { addGameLog } from "../../gameLog"; +import {HeroFun} from '../../public/hero'; +import {XstaskFun} from '../../public/xstask'; +import {ReqOnekeyReceive, ResOnekeyReceive} from "../../shared/protocols/xstask/PtlOnekeyReceive"; +import {HeroShared} from '../../shared/public/hero'; +import {HongDianChange} from "../hongdian/fun"; export default async function (call: ApiCall) { @@ -33,7 +34,9 @@ export default async function (call: ApiCall if (heroList.length != heroIds.length) return call.error(globalThis.lng.xstask_6); let change: ResOnekeyReceive = {}; + let lockNum = event?.receiveNum || 0 for (let receive of args) { + if (lockNum >= 8) continue let task = taskList.find(task => task._id == receive._id); let taskConf = G.gc.xstask[task.taskId]; @@ -43,8 +46,9 @@ export default async function (call: ApiCall let star = heros.map(h => G.gc.hero[h.heroId].star).reduce((a, b) => a + b); if (star < taskConf.needStar) return call.error(globalThis.lng.xstask_8); - change[receive._id] = { time: G.time, heros: receive.heroIds }; + change[receive._id] = {time: G.time, heros: receive.heroIds}; XstaskFun.receiveNum(call.uid) + lockNum += 1 } Object.entries(change).forEach(([k, v]) => { @@ -53,4 +57,6 @@ export default async function (call: ApiCall HongDianChange.sendChangeKey(call.uid, ['xstaskhd', 'huodonghd']); call.succ(change); + + addGameLog(call.uid, "_onekeyReceive", {}, change) } \ No newline at end of file diff --git a/src/oss/watchdog.json b/src/oss/watchdog.json index 8acd728..c702bc5 100644 --- a/src/oss/watchdog.json +++ b/src/oss/watchdog.json @@ -6,13 +6,13 @@ }, { "key":"got_jinbi", - "limit":200000000, + "limit":2000000000, "tips":"jinbi获取达到20亿" }, { "key":"got_rmbmoney", - "limit":30000, - "tips":"钻石获取达到3万" + "limit":50000, + "tips":"钻石获取达到5万" }, { "key":"use_attr_rmbmoney", @@ -21,8 +21,8 @@ }, { "key":"tanxian/FastGuaJi", - "limit":40, - "tips":"快速探险达到40次" + "limit":30, + "tips":"快速探险达到30次" }, { "key":"xstask/Receive/Num", diff --git a/src/public/pata.ts b/src/public/pata.ts index 96a988d..485807a 100644 --- a/src/public/pata.ts +++ b/src/public/pata.ts @@ -1,12 +1,12 @@ -import { UpdateFilter } from 'mongodb'; -import { paTaType } from '../shared/protocols/pata/type'; -import { PublicShared } from '../shared/public/public'; +import {UpdateFilter} from 'mongodb'; +import {paTaType} from '../shared/protocols/pata/type'; +import {PublicShared} from '../shared/public/public'; export class PataFun { /**获取爬塔信息 */ static async getInfo(uid: string, sid: number = 0) { - let info: paTaType = await G.mongodb.collection('pata').findOne({ uid: uid, sid: sid }); + let info: paTaType = await G.mongodb.collection('pata').findOne({uid: uid, sid: sid}); let nt = G.time; if (!info) { info = { @@ -17,7 +17,7 @@ export class PataFun { sid: sid, saodangNum: 0 }; - this.changeInfo(uid, info.sid, { $set: info }); + this.changeInfo(uid, info.sid, {$set: info}); } /** 第二天 */ @@ -27,7 +27,7 @@ export class PataFun { useNum: 0, saodangNum: 0 }; - this.changeInfo(uid, info.sid, { $set: setData }); + this.changeInfo(uid, info.sid, {$set: setData}); } if (info['_id']) { @@ -38,20 +38,19 @@ export class PataFun { } /**修改爬塔信息 */ - static async changeInfo(uid: string, sid: number, change: Pick, '$set'>) { - - G.mongodb.collection('pata').updateOne( - { uid: uid, sid: sid }, + static async changeInfo(uid: string, sid: number, change: Pick, string>) { + await G.mongodb.collection('pata').updateOne( + {uid: uid, sid: sid}, change, - { upsert: true } + {upsert: true} ); } - + /**获取爬塔红点 */ static async getHongDian(uid: string) { let mydata = await this.getInfo(uid); let con = Object.keys(G.gc.patacom); - con.sort((a, b) => { return parseInt(a) - parseInt(b); }); + con.sort((a, b) => parseInt(a) - parseInt(b)); for (let idx in con) { idx = con[idx]; if (mydata.lv <= parseInt(idx)) { diff --git a/src/public/pay.ts b/src/public/pay.ts index ae64794..bf4deb7 100644 --- a/src/public/pay.ts +++ b/src/public/pay.ts @@ -13,7 +13,7 @@ import {getConf as zmlbGetConf} from '../api_s2c/event/zhoumolibao/ApiOpen'; import {Christmasfun} from "../api_s2c/event/christmas/fun"; async function checkPayIsActive(payId: string, logs: payLog[], payArgs) { - let conf: any = await this.getConf(payId, payArgs); + let conf: any = await PayFun.getConf(payId, payArgs); if (!conf) return false; let lastLog = logs.last(); diff --git a/src/public/scheduler/scheduler_watchdog.ts b/src/public/scheduler/scheduler_watchdog.ts index 6ef9bb8..2d8bca4 100644 --- a/src/public/scheduler/scheduler_watchdog.ts +++ b/src/public/scheduler/scheduler_watchdog.ts @@ -34,7 +34,7 @@ export class WatchDog extends Scheduler { //获取今天0点之后在线的玩家 let users = await G.mongodb.collection("user").find({ lv: {$gt: 10}, - newonlinetime: {$gte: G.time - 3600, $lte: G.time + 30} + newonlinetime: {$gte: G.time - 1800, $lte: G.time + 30} }, { projection: { uid: 1, diff --git a/src/setWs.ts b/src/setWs.ts index 9a19905..a1186a8 100644 --- a/src/setWs.ts +++ b/src/setWs.ts @@ -13,7 +13,7 @@ import {player} from './shared/protocols/user/type'; import {unQueueByConn} from './api_s2c/user/ApiLogin'; import {clusterPublish, setUidProcessId} from './clusterUtils'; import {clearGud, getGud} from './public/gud'; -import { mylogger } from './gameLog'; +import {mylogger} from './gameLog'; export async function createWs() { @@ -27,7 +27,7 @@ export async function createWs() { //API超时时间5分钟,为登陆排队做准备 apiTimeout: 300000, logLevel: G.argv.logModel as LogLevel, - logger:mylogger + logger: mylogger }); setCrossWs(G.serverCross); await G.serverCross.autoImplementApi(resolve(__dirname, 'api_cross'), true); @@ -39,7 +39,7 @@ export async function createWs() { wss: getWssFile(), //API超时时间5分钟,为登陆排队做准备,只针对游服 apiTimeout: 300000, - logger:mylogger + logger: mylogger }); setWs(G.server); await G.server.autoImplementApi(resolve(__dirname, 'api_s2c'), true); @@ -140,7 +140,7 @@ function setWs(server: WsServer) { //处理API锁,极限情况下只锁10s,防止死锁 //在下方postApiReturnFlow里会解锁 if (call.conn.apiLock[call.service.name] && call.conn.apiLock[call.service.name] > new Date().getTime()) { - call.error('', {code: -100, message: '', time: 0}); + call.error('', {code: -100, message: '', apilock: 1}); return null; } @@ -198,10 +198,14 @@ function setWs(server: WsServer) { //API解锁 let now = new Date().getTime(); - if(node.return.isSucc){ - node.call.conn.apiLock[node.call.service.name] = now+200; - }else{ - delete node.call.conn.apiLock[node.call.service.name]; + if (node.return.isSucc) { + if (!writeList.includes(node.call.service.name)){ + node.call.conn.apiLock[node.call.service.name] = now + 200; + } + } else { + if (!node.return.err.apilock) { + delete node.call.conn.apiLock[node.call.service.name]; + } } return node;