Compare commits

..

No commits in common. "0fd7f63f87aff1f3e2214aca66523305c01fdb0f" and "3bdc98a1f6c54550f9632787f219aa31435f18bf" have entirely different histories.

6 changed files with 129 additions and 197 deletions

View File

@ -30,6 +30,6 @@ export default async function (call: ApiCall<ReqOpen, ResOpen>) {
}); });
UserFun.activeHeadFrame(call.uid, 'jjc_rank', data["rank"] + 1); UserFun.activeHeadFrame(call.uid, 'jjc_rank', data["rank"] + 1);
//JJCFun.checkUpdatePlayer() JJCFun.checkUpdatePlayer()
} }

View File

@ -1,51 +0,0 @@
import { patchInit } from "../patch";
class Path {
async fun1(a: any) {
let taskType = 2;
let users = await G.mongodb.collection('user').find({ loginTime: { $gte: 1704643200 } }).toArray();
for (let i = 0; i < users.length; i++) {
let user = users[i];
let unFinishTask = (await G.mongodb.collection('task').find({
uid: user.uid, type: taskType, finish: 0
}, { projection: { taskid: 1 } }).toArray()).map(i => i.taskid);
if (unFinishTask.length >= 2) {
for (let taskid of unFinishTask) {
let con = G.gc.task[taskType][taskid];
if (!con) {
await G.mongodb.collection("task").deleteOne({
uid: user.uid, taskid: taskid
});
console.log(`删除玩家${user.uid}任务:${taskid}`);
}
if (unFinishTask.includes(con.pretask)) {
await G.mongodb.collection("task").deleteOne({
uid: user.uid, taskid: taskid
});
console.log(`删除玩家${user.uid}任务:${taskid}`);
}
}
}
}
}
async run() {
await this.fun1(1);
}
}
async function main() {
await patchInit()
let patch = new Path();
await patch.run();
console.log("逻辑执行完成,等待退出");
setTimeout(function () {
console.log('结束程序');
process.exit();
}, 3000);
}
main();

View File

@ -94,37 +94,37 @@ export class JJCFun {
* @param uTimeOffset * @param uTimeOffset
* @param isUpdate * @param isUpdate
*/ */
// static async checkUpdatePlayer(min: number = 0, max: number = 1000, uTimeOffset: number = 600, isUpdate: boolean = true) { static async checkUpdatePlayer(min: number = 0, max: number = 1000, uTimeOffset: number = 600, isUpdate: boolean = true) {
// // 获取指定排名用户uid // 获取指定排名用户uid
// let sortInfo = await this.getRankListUid(min, max) let sortInfo = await this.getRankListUid(min, max)
// if (!sortInfo.length) return [] if (!sortInfo.length) return []
// let updateArr = [] let updateArr = []
// let users = await G.redis.hGetAll('rank:jjc:data') let users = await G.redis.hGetAll('rank:jjc:data')
// for (let i = 0; i < sortInfo.length; i++) { for (let i = 0; i < sortInfo.length; i++) {
// let uid = sortInfo[i] let uid = sortInfo[i]
// let rankInfo = users[uid] let rankInfo = users[uid]
// if (!rankInfo?.player) continue if (!rankInfo?.player) continue
// // 比对utime判断是否更新数据 // 比对utime判断是否更新数据
// if (!rankInfo.player.isNpc) { if (!rankInfo.player.isNpc) {
// if (!rankInfo.utime || (rankInfo.utime && rankInfo.utime < (G.time - uTimeOffset))) { if (!rankInfo.utime || (rankInfo.utime && rankInfo.utime < (G.time - uTimeOffset))) {
// updateArr.push(rankInfo) updateArr.push(rankInfo)
// } }
// } }
// } }
// // 更新数据 // 更新数据
// if (isUpdate && updateArr.length > 0) { if (isUpdate && updateArr.length > 0) {
// let playerArrInfo = await G.mongodb.collection("user").find({uid: {$in: updateArr.map(i => i.uid)}}).toArray() let playerArrInfo = await G.mongodb.collection("user").find({uid: {$in: updateArr.map(i => i.uid)}}).toArray()
// for (let i = 0; i < playerArrInfo.length; i++) { for (let i = 0; i < playerArrInfo.length; i++) {
// let playerInfo = playerArrInfo[i] let playerInfo = playerArrInfo[i]
// let index = updateArr.findIndex(x => x.player.uid == playerInfo.uid) let index = updateArr.findIndex(x => x.player.uid == playerInfo.uid)
// updateArr[index].player = playerInfo updateArr[index].player = playerInfo
// updateArr[index].utime = G.time updateArr[index].utime = G.time
// this.updatePlayerData(playerInfo.uid, updateArr[index]); this.updatePlayerData(playerInfo.uid, updateArr[index]);
// } }
// } }
// } }
/** /**
* uid[] * uid[]

View File

@ -260,10 +260,7 @@ export class PayFun {
let selectPrize = await G.ioredis.get(`pay:${payId}:${player.uid}`); let selectPrize = await G.ioredis.get(`pay:${payId}:${player.uid}`);
if (selectPrize) { if (selectPrize) {
prize.push(...JSON.parse(selectPrize)) prize.push(...JSON.parse(selectPrize))
//支付A check -> 玩家支付 -> 网络延迟 G.ioredis.del(`pay:${payId}:${player.uid}`)
//支付B check -> 玩家支付 -> pay -> del
//支付A -> pay 时,这里可能被清了,导致给玩家发放了空的奖励,因此,这里不清除
//G.ioredis.del(`pay:${payId}:${player.uid}`)
} }
} }

View File

@ -1,27 +1,25 @@
import {ObjectId, OptionalId} from 'mongodb'; import { ObjectId, OptionalId } from 'mongodb';
import {ApiCall, BaseConnection, TsrpcError} from 'tsrpc'; import { ApiCall, BaseConnection, TsrpcError } from 'tsrpc';
import {checkPlayerGift} from '../api_s2c/event/xianshilibao/fun'; import { checkPlayerGift } from '../api_s2c/event/xianshilibao/fun';
import {md_redPoint_check} from '../api_s2c/gongyu/mingdao/ApiOpen'; import { md_redPoint_check } from '../api_s2c/gongyu/mingdao/ApiOpen';
import {CollectionPeiJian} from '../module/collection_peijian'; import { CollectionPeiJian } from '../module/collection_peijian';
import {Wjjl} from '../module/collection_wjjl'; import { Wjjl } from '../module/collection_wjjl';
import {MongodbCollections} from '../module/mongodb'; import { MongodbCollections } from '../module/mongodb';
import {G123} from '../sdk/G123'; import { G123 } from '../sdk/G123';
import {ResGetList} from '../shared/protocols/item/PtlGetList'; import { ResGetList } from '../shared/protocols/item/PtlGetList';
import {ResLogin} from '../shared/protocols/user/PtlLogin'; import { ResLogin } from '../shared/protocols/user/PtlLogin';
import {player} from '../shared/protocols/user/type'; import { player } from '../shared/protocols/user/type';
import {HeroShared, otherBuff} from '../shared/public/hero'; import { HeroShared, otherBuff } from '../shared/public/hero';
import {PublicShared} from '../shared/public/public'; import { PublicShared } from '../shared/public/public';
import {HeroFun} from './hero'; import { HeroFun } from './hero';
import {ShiwuFun} from './shiwu'; import { ShiwuFun } from './shiwu';
import {UserFun} from './user'; import { UserFun } from './user';
import {getItemByItemId, getItemNum} from './item'; import { getItemByItemId, getItemNum } from './item';
import {getGud, setGud} from './gud'; import { getGud, setGud } from './gud';
import {addGameLog} from "../gameLog"; import { addGameLog } from "../gameLog";
import {PushGiftFun} from "./pushgift"; import { PushGiftFun } from "./pushgift";
import { ActionLog } from './actionLog/actionLog'; import { ActionLog } from './actionLog/actionLog';
import { roleDataType } from '../shared/fightControl/fightType'; import HeroSkinFun from './heroskin';
import { PlayerShared } from '../shared/public/player';
export type call = { export type call = {
get otherBuff(): otherBuff; get otherBuff(): otherBuff;
@ -43,41 +41,6 @@ export type call = {
}; };
export class PlayerFun { export class PlayerFun {
/**
* uid获取战斗数据
* @param uid
* @returns
*/
static async getDefaultFightDataByUid(uid:string){
let gud = await getGud(uid);
let posObj = gud.heroPos;
let roles: k_v<roleDataType> = {};
if (gud.selectMatrix && gud.matrixPos) {
posObj = gud.matrixPos[gud.selectMatrix];
}
let heros = await HeroFun.getHeros({uid:uid}, Object.values(posObj).filter(_id => _id != '') as string[]);
let otherBuff = UserFun.getOtherBuff(gud)
Object.entries(posObj).forEach(obj => {
let pos = obj[0];
let _id = obj[1];
let hero = heros.filter(h => h._id == _id)[0];
if (hero) {
roles[pos] = {
...hero,
attr: {
...HeroShared.getHeroBasicAttr(hero, { ...otherBuff, allBuff: HeroShared.getAllBuff(heros) }, Number(pos))
}
};
}
});
return {
player: { ...gud, buff: PlayerShared.getBuff(gud) },
roles: roles
};
}
/** /**
* atn数量 * atn数量
*/ */
@ -107,13 +70,13 @@ export class PlayerFun {
if (err) { if (err) {
// 消耗不足 触发推送礼包 // 消耗不足 触发推送礼包
PushGiftFun.chkItemGift(call.uid, atn) PushGiftFun.chkItemGift(call.uid, atn)
throw new TsrpcError('', {code: -104, atn: atn}); throw new TsrpcError('', { code: -104, atn: atn });
} else { } else {
return {isOk: false, atn: atn}; return { isOk: false, atn: atn };
} }
} }
} }
return {isOk: true, atn: null}; return { isOk: true, atn: null };
} }
/** /**
@ -131,7 +94,7 @@ export class PlayerFun {
atn: need atn: need
}; };
if (args.length < 1) { if (args.length < 1) {
throw new TsrpcError('', {code: -104, atn: meet.atn}); throw new TsrpcError('', { code: -104, atn: meet.atn });
} }
return await this.checkNeedByArgs(call, ...args); return await this.checkNeedByArgs(call, ...args);
} }
@ -154,10 +117,10 @@ export class PlayerFun {
all.push(this.addItem(call, item)); all.push(this.addItem(call, item));
} }
// 记录消耗 // 记录消耗
addGameLog(call.uid, call.service.name, call.req, {need: val}) addGameLog(call.uid, call.service.name, call.req, { need: val })
await Promise.all(all); await Promise.all(all);
G.emit('USE_ITEM', call.conn.gud, needArr.map(need => { G.emit('USE_ITEM', call.conn.gud, needArr.map(need => {
return {...need, n: Math.abs(need.n)}; return { ...need, n: Math.abs(need.n) };
})); }));
} }
@ -173,16 +136,18 @@ export class PlayerFun {
let equip = prizeList.filter(atn => atn.a == 'equip' && atn.n != 0); let equip = prizeList.filter(atn => atn.a == 'equip' && atn.n != 0);
let shiwu = prizeList.filter(atn => atn.a == 'shiwu' && atn.n != 0); let shiwu = prizeList.filter(atn => atn.a == 'shiwu' && atn.n != 0);
let peijian = prizeList.filter(atn => atn.a == 'peijian' && atn.n != 0); let peijian = prizeList.filter(atn => atn.a == 'peijian' && atn.n != 0);
let heroskin = prizeList.filter(atn => atn.a == 'heroskin' && atn.n != 0);
// 记录获得 // 记录获得
addGameLog(call.uid, call.service.name, call.req, {prize: prizeList}) addGameLog(call.uid, call.service.name, call.req, { prize: prizeList })
await Promise.all([ await Promise.all([
attr.length > 0 && this.addAttr(call, attr), attr.length > 0 && this.addAttr(call, attr),
item.length > 0 && this.addItem(call, item), item.length > 0 && this.addItem(call, item),
hero.length > 0 && this.addHero(call, hero), hero.length > 0 && this.addHero(call, hero),
equip.length > 0 && this.addEquip(call, equip), equip.length > 0 && this.addEquip(call, equip),
shiwu.length > 0 && this.addShiwu(call, shiwu), shiwu.length > 0 && this.addShiwu(call, shiwu),
peijian.length > 0 && this.addPeijian(call, peijian) peijian.length > 0 && this.addPeijian(call, peijian),
heroskin.length > 0 && this.addHeroskin(call, heroskin),
]); ]);
return prizeList; return prizeList;
@ -217,9 +182,9 @@ export class PlayerFun {
} }
} }
if( (atn.t == 'rmbmoney' || atn.t == 'jinbi') && atn.n > 0 ){ if ((atn.t == 'rmbmoney' || atn.t == 'jinbi') && atn.n > 0) {
//统计今日获取的金币和钻石 //统计今日获取的金币和钻石
ActionLog.addDayLog(call.conn.uid, { key: 'got_'+atn.t, val: atn.n }); ActionLog.addDayLog(call.conn.uid, { key: 'got_' + atn.t, val: atn.n });
} }
// 增加vip经验的任务监听 // 增加vip经验的任务监听
@ -227,7 +192,7 @@ export class PlayerFun {
G.emit("Class_task_157", 'Class_task_157', call, atn.n, 0); G.emit("Class_task_157", 'Class_task_157', call, atn.n, 0);
} }
all.push(this.changeAttr(call.conn.uid, change)); all.push(this.changeAttr(call.conn.uid, change));
all.push(this.upAttr(call, {...atn, n: change[atn.t]})); all.push(this.upAttr(call, { ...atn, n: change[atn.t] }));
//await this.changeAttr(call.conn.uid, change); //await this.changeAttr(call.conn.uid, change);
//await this.upAttr(call, {...atn, n: change[atn.t]}); //await this.upAttr(call, {...atn, n: change[atn.t]});
} }
@ -270,17 +235,17 @@ export class PlayerFun {
G.mongodb.collection('rmbuse').insertOne(data); G.mongodb.collection('rmbuse').insertOne(data);
// 消费竞赛开启时写入跨服数据库 // 消费竞赛开启时写入跨服数据库
if (G.huodong.xfjs && !data.isAdd && typeof data.change == 'number') { if (G.huodong.xfjs && !data.isAdd && typeof data.change == 'number') {
G.crossmongodb.collection('rmbuse').updateOne({uid: data.uid, type: `xfjs_${G.huodong.xfjsId}`}, { G.crossmongodb.collection('rmbuse').updateOne({ uid: data.uid, type: `xfjs_${G.huodong.xfjsId}` }, {
$set: {time: G.time}, $set: { time: G.time },
$inc: {change: data.change} $inc: { change: data.change }
}, {upsert: true}); }, { upsert: true });
} }
} }
static async changeAttr(uid: string, change: Partial<player>) { static async changeAttr(uid: string, change: Partial<player>) {
setGud(uid, change); setGud(uid, change);
G.mongodb.collection('user').updateOne({uid: uid}, {$set: change}); G.mongodb.collection('user').updateOne({ uid: uid }, { $set: change });
if (G.server.uid_connections[uid]) { if (G.server.uid_connections[uid]) {
checkPlayerGift(G.server.uid_connections[uid].gud, change); checkPlayerGift(G.server.uid_connections[uid].gud, change);
@ -302,9 +267,9 @@ export class PlayerFun {
const curLv = call.conn.gud.lv; const curLv = call.conn.gud.lv;
while (conf[curLv + addLv + 1] && atn.n >= conf[curLv + addLv + 1].need) { while (conf[curLv + addLv + 1] && atn.n >= conf[curLv + addLv + 1].need) {
addLv++; addLv++;
G123.sendUserLevelUp({...call.conn.gud, lv: curLv + addLv, nexp: atn.n}); G123.sendUserLevelUp({ ...call.conn.gud, lv: curLv + addLv, nexp: atn.n });
} }
addLv && await this.addAttr(call, {lv: curLv + addLv}); addLv && await this.addAttr(call, { lv: curLv + addLv });
break; break;
case 'payExp': case 'payExp':
let addVip = 0; let addVip = 0;
@ -313,7 +278,7 @@ export class PlayerFun {
while (vipConf[curVip + addVip + 1] && atn.n >= vipConf[curVip + addVip + 1].exp) { while (vipConf[curVip + addVip + 1] && atn.n >= vipConf[curVip + addVip + 1].exp) {
addVip++; addVip++;
} }
addVip && await this.addAttr(call, {vip: curVip + addVip}); addVip && await this.addAttr(call, { vip: curVip + addVip });
break; break;
} }
} }
@ -324,7 +289,7 @@ export class PlayerFun {
static async addItem(call: call, val: atn[]) { static async addItem(call: call, val: atn[]) {
for (let atn of val) { for (let atn of val) {
let upObj = { let upObj = {
filter: {uid: call.uid, itemId: atn.t}, filter: { uid: call.uid, itemId: atn.t },
update: { update: {
$setOnInsert: { $setOnInsert: {
firstTime: G.time, firstTime: G.time,
@ -356,7 +321,7 @@ export class PlayerFun {
}; };
G.mongodb.collection('item').updateOne(upObj.filter, upObj.update, upObj.options); G.mongodb.collection('item').updateOne(upObj.filter, upObj.update, upObj.options);
call.addEventMsg('msg_s2c/ItemChange', atn.t, data); call.addEventMsg('msg_s2c/ItemChange', atn.t, data);
addGameLog(call.uid, "_itemChange", {"additem": 1}, { addGameLog(call.uid, "_itemChange", { "additem": 1 }, {
"filter": upObj.filter, "filter": upObj.filter,
"update": upObj.update, "update": upObj.update,
"options": upObj.options "options": upObj.options
@ -364,10 +329,10 @@ export class PlayerFun {
} else { } else {
if (item.num + atn.n <= 0) { if (item.num + atn.n <= 0) {
await Promise.all([ await Promise.all([
G.mongodb.collection('item').deleteOne({uid: call.uid, itemId: atn.t}) G.mongodb.collection('item').deleteOne({ uid: call.uid, itemId: atn.t })
]); ]);
call.addEventMsg('msg_s2c/ItemChange', atn.t, {num: 0}); call.addEventMsg('msg_s2c/ItemChange', atn.t, { num: 0 });
addGameLog(call.uid, "_itemChange", {"delitem": 1}, {"itemId": atn.t}) addGameLog(call.uid, "_itemChange", { "delitem": 1 }, { "itemId": atn.t })
} else { } else {
await Promise.all([ await Promise.all([
G.mongodb.collection('item').updateOne(upObj.filter, upObj.update, upObj.options) G.mongodb.collection('item').updateOne(upObj.filter, upObj.update, upObj.options)
@ -376,7 +341,7 @@ export class PlayerFun {
num: item.num + atn.n, num: item.num + atn.n,
lastTime: upObj.update.$set.lastTime lastTime: upObj.update.$set.lastTime
}); });
addGameLog(call.uid, "_itemChange", {"attritem": 1}, { addGameLog(call.uid, "_itemChange", { "attritem": 1 }, {
"filter": upObj.filter, "filter": upObj.filter,
"update": upObj.update, "update": upObj.update,
"options": upObj.options, "options": upObj.options,
@ -411,7 +376,7 @@ export class PlayerFun {
insertData.forEach((v, key) => { insertData.forEach((v, key) => {
let id = result.insertedIds[key].toHexString(); let id = result.insertedIds[key].toHexString();
let {_id, ...ops} = v; let { _id, ...ops } = v;
Wjjl.setVal(call.uid, `has_equip_color_${G.gc.equip[ops.equipId].colour}`, 1, false); Wjjl.setVal(call.uid, `has_equip_color_${G.gc.equip[ops.equipId].colour}`, 1, false);
@ -445,10 +410,10 @@ export class PlayerFun {
*/ */
static async cutEquip(call: call, _idArr: string[]) { static async cutEquip(call: call, _idArr: string[]) {
for (let _id of _idArr) { for (let _id of _idArr) {
G.mongodb.collection('equip').deleteOne({uid: call.uid, _id: new ObjectId(_id)}); G.mongodb.collection('equip').deleteOne({ uid: call.uid, _id: new ObjectId(_id) });
call.addEventMsg('msg_s2c/EquipChange', _id, {num: 0}); call.addEventMsg('msg_s2c/EquipChange', _id, { num: 0 });
addGameLog(call.uid, "_cutEquip", {}, {_id: _id}) addGameLog(call.uid, "_cutEquip", {}, { _id: _id })
} }
} }
@ -482,7 +447,7 @@ export class PlayerFun {
let v = insertData[key] let v = insertData[key]
let id = result.insertedIds[key].toHexString(); let id = result.insertedIds[key].toHexString();
let {_id, ...ops} = v; let { _id, ...ops } = v;
call.addEventMsg('msg_s2c/HeroChange', id, { call.addEventMsg('msg_s2c/HeroChange', id, {
_id: id, _id: id,
@ -515,9 +480,9 @@ export class PlayerFun {
static async cutHero(call: call, _idArr: string[]) { static async cutHero(call: call, _idArr: string[]) {
for (let _id of _idArr) { for (let _id of _idArr) {
await HeroFun.delHero(call, _id); await HeroFun.delHero(call, _id);
G.mongodb.collection('hero').deleteOne({uid: call.uid, _id: new ObjectId(_id)}); G.mongodb.collection('hero').deleteOne({ uid: call.uid, _id: new ObjectId(_id) });
call.addEventMsg('msg_s2c/HeroChange', _id, {num: 0}); call.addEventMsg('msg_s2c/HeroChange', _id, { num: 0 });
addGameLog(call.uid, "_cutHero", {}, {_id: _id}) addGameLog(call.uid, "_cutHero", {}, { _id: _id })
} }
} }
@ -532,7 +497,7 @@ export class PlayerFun {
colour: v.colour, colour: v.colour,
wearId: '', wearId: '',
shiwuId: v.t, shiwuId: v.t,
jichu: ShiwuFun.randomJichu({colour: v.colour, shiwuId: v.t}), jichu: ShiwuFun.randomJichu({ colour: v.colour, shiwuId: v.t }),
fujia: [] fujia: []
}; };
if (v.shiwuBuff) { if (v.shiwuBuff) {
@ -552,7 +517,7 @@ export class PlayerFun {
insertData.forEach((v, key) => { insertData.forEach((v, key) => {
let id = result.insertedIds[key].toHexString(); let id = result.insertedIds[key].toHexString();
let {_id, ...ops} = v; let { _id, ...ops } = v;
call.addEventMsg('msg_s2c/ShiwuChange', id, { call.addEventMsg('msg_s2c/ShiwuChange', id, {
_id: id, _id: id,
...ops ...ops
@ -571,9 +536,9 @@ export class PlayerFun {
*/ */
static async cutShiwu(call: call, _idArr: string[]) { static async cutShiwu(call: call, _idArr: string[]) {
for (let _id of _idArr) { for (let _id of _idArr) {
G.mongodb.collection('shiwu').deleteOne({uid: call.uid, _id: new ObjectId(_id)}); G.mongodb.collection('shiwu').deleteOne({ uid: call.uid, _id: new ObjectId(_id) });
call.addEventMsg('msg_s2c/ShiwuChange', _id, {num: 0}); call.addEventMsg('msg_s2c/ShiwuChange', _id, { num: 0 });
addGameLog(call.uid, "_cutShiwu", {}, {_id: _id}) addGameLog(call.uid, "_cutShiwu", {}, { _id: _id })
} }
} }
@ -598,7 +563,7 @@ export class PlayerFun {
addGameLog(call.uid, "_addPeiJian", {}, insertData) addGameLog(call.uid, "_addPeiJian", {}, insertData)
insertData.forEach((v, key) => { insertData.forEach((v, key) => {
let {_id, uid, ...ops} = v; let { _id, uid, ...ops } = v;
let id = _id.toHexString(); let id = _id.toHexString();
if (G.gc.peijian[v.peijianId].colour != 5) { if (G.gc.peijian[v.peijianId].colour != 5) {
@ -606,8 +571,8 @@ export class PlayerFun {
lshd[v.peijianId]++; lshd[v.peijianId]++;
} }
G.redis.set('peijian', call.uid, id, {_id: id, ...ops}); G.redis.set('peijian', call.uid, id, { _id: id, ...ops });
call.addEventMsg('msg_s2c/PeijianChange', id, {_id: id, ...ops}); call.addEventMsg('msg_s2c/PeijianChange', id, { _id: id, ...ops });
}); });
G.mongodb.collection('playerInfo', 'lshd_peijian').updateOne( G.mongodb.collection('playerInfo', 'lshd_peijian').updateOne(
@ -628,15 +593,39 @@ export class PlayerFun {
return Object.values(result.insertedIds).map(v => G.mongodb.conversionId(v)); return Object.values(result.insertedIds).map(v => G.mongodb.conversionId(v));
} }
/**
*
* */
static async addHeroskin(call: call, val: atn[]) {
let prize = [];
let upskin = {};
let heroskin = HeroSkinFun.getHeroSkin(call);
for (let p of val) {
if (!heroskin[p.t]) {
upskin[p.t] = 1;
} else {
prize.concat(G.gc.heroSkin[p.t].zhuanhuan);
}
}
if (Object.keys(upskin).length > 0) {
this.addAttr(call, { heroskin: Object.assign(heroskin, upskin) });
}
// 皮肤存在转换为其他奖励
if (prize.length > 0) {
this.sendPrize(call, prize);
}
}
/** /**
* *
*/ */
static async cutPeijian(call: call, _idArr: string[]) { static async cutPeijian(call: call, _idArr: string[]) {
for (let _id of _idArr) { for (let _id of _idArr) {
G.redis.del('peijian', call.uid, _id); G.redis.del('peijian', call.uid, _id);
G.mongodb.collection('peijian').deleteOne({uid: call.uid, _id: new ObjectId(_id)}); G.mongodb.collection('peijian').deleteOne({ uid: call.uid, _id: new ObjectId(_id) });
call.addEventMsg('msg_s2c/PeijianChange', _id, {num: 0}); call.addEventMsg('msg_s2c/PeijianChange', _id, { num: 0 });
addGameLog(call.uid, "_cutPeijian", {}, {_id: _id}) addGameLog(call.uid, "_cutPeijian", {}, { _id: _id })
} }
} }
@ -645,7 +634,7 @@ export class PlayerFun {
*/ */
static async getAttr(uid: string, where: { ctype: string; }) { static async getAttr(uid: string, where: { ctype: string; }) {
let _w = where; let _w = where;
Object.assign(_w, {uid: uid}); Object.assign(_w, { uid: uid });
const _res = await G.mongodb.collection('playattr').find(_w).toArray(); const _res = await G.mongodb.collection('playattr').find(_w).toArray();
_res.forEach(v => { _res.forEach(v => {
if (v._id) { if (v._id) {
@ -660,7 +649,7 @@ export class PlayerFun {
*/ */
static async getAttrOne(uid: string, where: { ctype: string; }) { static async getAttrOne(uid: string, where: { ctype: string; }) {
let _w = where; let _w = where;
Object.assign(_w, {uid: uid}); Object.assign(_w, { uid: uid });
const _res = await G.mongodb.collection('playattr').findOne(_w); const _res = await G.mongodb.collection('playattr').findOne(_w);
if (_res) { if (_res) {
delete _res['_id']; delete _res['_id'];
@ -676,10 +665,10 @@ export class PlayerFun {
time = G.time; time = G.time;
} }
let _zeroTime = PublicShared.getToDayZeroTime(time); let _zeroTime = PublicShared.getToDayZeroTime(time);
let _tmp = {lasttime: {$gte: _zeroTime, $lte: _zeroTime + 24 * 60 * 60 - 1}}; let _tmp = { lasttime: { $gte: _zeroTime, $lte: _zeroTime + 24 * 60 * 60 - 1 } };
let _w = where; let _w = where;
Object.assign(_w, {uid: uid, ..._tmp}); Object.assign(_w, { uid: uid, ..._tmp });
const _res = await G.mongodb.collection('playattr').find(_w).toArray(); const _res = await G.mongodb.collection('playattr').find(_w).toArray();
_res.forEach(v => { _res.forEach(v => {
if (v._id) { if (v._id) {
@ -694,7 +683,7 @@ export class PlayerFun {
*/ */
static async setAttr(uid: string, where: { ctype: string; }, data: {}, islasttime = 1) { static async setAttr(uid: string, where: { ctype: string; }, data: {}, islasttime = 1) {
let _w = where; let _w = where;
Object.assign(_w, {uid: uid}); Object.assign(_w, { uid: uid });
if (islasttime == 1) { if (islasttime == 1) {
data["lasttime"] = G.time; data["lasttime"] = G.time;
@ -705,7 +694,7 @@ export class PlayerFun {
// 加入创建数据时间 // 加入创建数据时间
data["ctime"] = G.time; data["ctime"] = G.time;
} }
let _res = await G.mongodb.collection('playattr').updateMany(_w, {$set: data}, {upsert: true}); let _res = await G.mongodb.collection('playattr').updateMany(_w, { $set: data }, { upsert: true });
return _res; return _res;
} }
} }

View File

@ -305,11 +305,8 @@ export class UserFun {
gud.headFrames[conf.id] += val * v; gud.headFrames[conf.id] += val * v;
} }
} }
else if(conf?.cond?.[0] == "jjc_rank") {
change = true;
gud.headFrames[conf.id] = -1;
}
} }
if (change) { if (change) {
PlayerFun.changeAttr(uid, {headFrames: gud.headFrames}); PlayerFun.changeAttr(uid, {headFrames: gud.headFrames});
G.server.sendMsgByUid(uid, 'msg_s2c/PlayerChange', {headFrames: gud.headFrames}); G.server.sendMsgByUid(uid, 'msg_s2c/PlayerChange', {headFrames: gud.headFrames});