Compare commits

...

9 Commits

Author SHA1 Message Date
dy
eb73af1dd2 数据监测改为查半小时内在线用户 2024-01-03 22:40:24 +08:00
dy
1dd7bc2175 api pay 2024-01-03 22:10:35 +08:00
dy
ecc17a22a9 api 锁修改,一键接取悬赏 2024-01-03 21:57:12 +08:00
dy
826840455c api 锁修改 2024-01-03 20:19:58 +08:00
dy
60d0e04e33 fix 探险 gamelog 2024-01-03 19:36:28 +08:00
dy
6233a6672e Merge remote-tracking branch 'origin/bugfix' into bugfix 2024-01-03 19:28:34 +08:00
dy
afd856af30 fix 探险 2024-01-03 19:28:22 +08:00
xichaoyin
698c7bd3f6 fix:
修复讨伐海盗挑战boss胜利不扣除战斗次数bug
2024-01-03 18:42:36 +08:00
dy
7dd83e06ef watchdog.json 2024-01-03 17:35:08 +08:00
9 changed files with 116 additions and 56 deletions

View File

@ -63,7 +63,6 @@ export default async function (call: ApiCall<ReqPkBoss, ResPkBoss>) {
{ type: 'lingzhulaixi' },
{ $set: G.mongodb.createTreeObj({ key: `maxdps.${call.req.bid}`, val: 0 }) }
)
} else {
// 超过回合,直接赋值输
result.winSide = 1
@ -93,11 +92,13 @@ export default async function (call: ApiCall<ReqPkBoss, ResPkBoss>) {
_mySetDat = {
maxdps: _myData.maxdps,
time: _myData.time,
num: _myData.num + 1
}
_bossData.delhp += result.totalDamage[0]
}
// 无论挑战成功失败都扣除战斗次数
_mySetDat["num"] = _myData.num + 1;
// 设置boss数据
await LingZhuLaiXifun.setBossData(_bossData.bid, _setData)
await LingZhuLaiXifun.setMyData(call, { $set: _mySetDat })

View File

@ -4,6 +4,7 @@ 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<ReqSaoDang, ResSaoDang>) {
let _con = await LingZhuLaiXifun.getCon(call.req.bid)
@ -91,6 +92,8 @@ export default async function (call: ApiCall<ReqSaoDang, ResSaoDang>) {
prize = PublicShared.mergePrize(prize)
await PlayerFun.sendPrize(call, prize)
ActionLog.addDayLog(call.uid, { key: "lingzhulaixi/PkBoss", val: _num });
// 扣除挑战次数
_myData.num += _num

View File

@ -21,7 +21,11 @@ export default async function (call: ApiCall<ReqFastGuaJi, ResFastGuaJi>) {
let notFree = (data?.useFreeGuaJiNum || 0) >= freeNum
if (notFree) {
let num = G.gc.tanxian_com.fastGuaJiNeed[data.useFastGuaJiNum - freeNum] || 0;
let need = [{ a: 'attr', t: 'rmbmoney', n: num ? num : G.gc.tanxian_com.fastGuaJiNeed[G.gc.tanxian_com.fastGuaJiNeed.length - 1] }];
let need = [{
a: 'attr',
t: 'rmbmoney',
n: num ? num : G.gc.tanxian_com.fastGuaJiNeed[G.gc.tanxian_com.fastGuaJiNeed.length - 1]
}];
await PlayerFun.checkNeedIsMeet(call, need);
await PlayerFun.cutNeed(call, need);
}
@ -36,11 +40,11 @@ export default async function (call: ApiCall<ReqFastGuaJi, ResFastGuaJi>) {
// await event_dldh_addPrize(_p, call, G.gc.tanxian_com.fastGuaJiTime);
await PlayerFun.sendPrize(call, _p);
let setData = { useFastGuaJiNum: data.useFastGuaJiNum + 1, useFreeGuaJiNum: (data?.useFreeGuaJiNum || 0) + (notFree ? 0 : 1)}
if ((data?.zztqfreeNum || 0) < tqFree && tqFree) setData["zztqfreeNum"] = tqFree
TanXianFun.changeData(call, setData);
// (await call.conn.gonghui)?.addExp(20, call.uid);
// let setData = { useFastGuaJiNum: data.useFastGuaJiNum + 1, useFreeGuaJiNum: (data?.useFreeGuaJiNum || 0) + (notFree ? 0 : 1)}
let setData = {$inc: {useFastGuaJiNum: 1, useFreeGuaJiNum: (notFree ? 0 : 1)}}
// if ((data?.zztqfreeNum || 0) < tqFree && tqFree) setData["zztqfreeNum"] = tqFree
if ((data?.zztqfreeNum || 0) < tqFree && tqFree) setData["$set"] = {zztqfreeNum: tqFree}
await TanXianFun.changeDataNew(call, setData);
HongDianChange.sendChangeKey(call.uid, ['taskhd', 'huodonghd']);

View File

@ -1,4 +1,5 @@
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";
@ -33,7 +34,9 @@ export default async function (call: ApiCall<ReqOnekeyReceive, ResOnekeyReceive>
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];
@ -45,6 +48,7 @@ export default async function (call: ApiCall<ReqOnekeyReceive, ResOnekeyReceive>
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<ReqOnekeyReceive, ResOnekeyReceive>
HongDianChange.sendChangeKey(call.uid, ['xstaskhd', 'huodonghd']);
call.succ(change);
addGameLog(call.uid, "_onekeyReceive", {}, change)
}

View File

@ -6,7 +6,7 @@
},
{
"key":"got_jinbi",
"limit":200000000,
"limit":2000000000,
"tips":"jinbi获取达到20亿"
},
{
@ -34,16 +34,6 @@
"limit":500,
"tips":"地下钱庄使用次数超过500次"
},
{
"key":"shop/Buy/2",
"limit":50,
"tips":"势力商店购买某一商品超过50次"
},
{
"key":"shop/Buy/1",
"limit":10,
"tips":"杂货商店购买某一商品超过10次"
},
{
"key":"peijiancangku/Jump",
"limit":500,
@ -68,5 +58,36 @@
"key":"gonghui/FbFight",
"limit":5,
"tips":"势力战斗boss超过5次"
},
{
"key":"shop/Buy/2",
"limit":50,
"tips":"势力商店购买超过50次"
},
{
"key":"shop/Buy/1",
"limit":20,
"tips":"杂货商店购买超过20次"
},
{
"key":"shop/Buy/10",
"limit":20,
"tips":"荣誉商店购买超过20次"
},
{
"key":"shop/Buy/4",
"limit":10,
"tips":"饰品商店购买超过10次"
},
{
"key":"shop/Buy/11",
"limit":5,
"tips":"功绩商店购买超过5次"
},
{
"key":"shop/Buy/3",
"limit":5,
"tips":"战争商店购买超过5次"
}
]

View File

@ -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();

View File

@ -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,

View File

@ -1,16 +1,31 @@
import {ApiCall} from 'tsrpc';
import {ResOpen} from '../shared/protocols/tanxian/PtlOpen';
import {TeQuanFun} from './tequan';
import {addGameLog} from "../gameLog";
type dataChange = Partial<ResOpen>;
export class TanXianFun {
/**修改探险数据 */
/**
*
*
* changeDataNew和此方法一样
*/
static async changeData(call: ApiCall, change: dataChange) {
G.mongodb.collection('tanxian').updateOne({uid: call.uid}, {$set: {...change}});
let data = await this.getData(call);
Object.assign(data, change);
G.ioredis.setex(`tanxian:${call.uid}`, 600, JSON.stringify(data));
let {_id, uid, ...data} = (await G.mongodb.collection('tanxian').findOneAndUpdate({uid: call.uid}, {$set: {...change}}, {returnDocument: 'after'})).value;
G.ioredis.setex(`tanxian:${uid}`, 600, JSON.stringify(data));
}
/**
*
* inc去叠加用户限制的次数
* @param call
* @param change
*/
static async changeDataNew(call: ApiCall, change) {
let {_id, uid, ...data} = (await G.mongodb.collection('tanxian').findOneAndUpdate({uid: call.uid}, change, {returnDocument: 'after'})).value;
G.ioredis.setex(`tanxian:${uid}`, 600, JSON.stringify(data));
addGameLog(call.uid, "_fastguajiChange", {}, data)
}
/**获取探险数据 */

View File

@ -139,14 +139,14 @@ function setWs(server: WsServer<ServiceType>) {
//处理API锁极限情况下只锁10s防止死锁
//在下方postApiReturnFlow里会解锁
if (call.conn.apiLock[call.service.name] && new Date().getTime() - call.conn.apiLock[call.service.name] < 10000) {
call.error('', {code: -100, message: '', time: 0});
if (call.conn.apiLock[call.service.name] && call.conn.apiLock[call.service.name] > new Date().getTime()) {
call.error('', {code: -100, message: '', apilock: 1});
return null;
}
//API锁定
//API锁定到什么时候
if (!writeList.includes(call.service.name)) {
call.conn.apiLock[call.service.name] = new Date().getTime();
call.conn.apiLock[call.service.name] = new Date().getTime() + 10000;
}
//API耗时统计
call.conn.requstApiTime[call.service.name] = new Date().getTime();
@ -196,7 +196,17 @@ function setWs(server: WsServer<ServiceType>) {
}
//API解锁
let now = new Date().getTime();
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;
});