Merge branch 'bugfix' of http://git.legu.cc/qixin/HJ_Server into bugfix

This commit is contained in:
ciniao 2023-12-22 14:34:18 +08:00
commit 7ca6fe75e3
47 changed files with 6188 additions and 776 deletions

View File

@ -11,4 +11,6 @@ WORKDIR /app
RUN npm config set registry http://registry.npm.taobao.org/ && npm install pm2@5.2.2 -g
RUN rm -rf node_modules/tsbuffer-validator/index.js && cp tsbufferIndex.js node_modules/tsbuffer-validator/index.js
CMD cd /app && sh zoeninfo.sh "Asia/Tokyo" && pm2-runtime start js_pm2.config.js -- ${Param}

1792
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -6,9 +6,9 @@
"private": true,
"scripts": {
"dev": "tsrpc-cli dev",
"build": "tsrpc-cli build && copy js_pm2.config.js dist && copy zoeninfo.sh dist && mkdir dist\\json && xcopy src\\json dist\\json /e ",
"build_win": "tsrpc-cli build && copy js_pm2.config.js dist && copy zoeninfo.sh dist && mkdir dist\\json && xcopy src\\json dist\\json /e ",
"build_linux": "tsrpc-cli build && cp js_pm2.config.js dist && cp zoeninfo.sh dist && cp src/json/ -a dist ",
"build": "tsrpc-cli build && copy js_pm2.config.js dist && copy zoeninfo.sh dist && copy tsbufferIndex.js dist && mkdir dist\\json && xcopy src\\json dist\\json /e ",
"build_win": "tsrpc-cli build && copy js_pm2.config.js dist && copy zoeninfo.sh dist && copy tsbufferIndex.js dist && mkdir dist\\json && xcopy src\\json dist\\json /e ",
"build_linux": "tsrpc-cli build && cp js_pm2.config.js dist && cp zoeninfo.sh dist && cp tsbufferIndex.js dist && cp src/json/ -a dist ",
"build_docker_win": "npm run build_win && cd dist && npm i --omit=dev",
"build_docker_linux": "npm run build_linux && cd dist && npm i --omit=dev",
"doc": "tsrpc-cli doc && node js_uploadDoc.js",
@ -42,6 +42,7 @@
"json5": "^2.2.3",
"mathjs": "^11.4.0",
"mongodb": "^4.17.1",
"node-gyp": "^10.0.1",
"ramda": "^0.29.1",
"redis": "^4.3.1",
"shelljs": "^0.8.5",

View File

@ -5,7 +5,7 @@ export default async function (call: ApiCall<ReqDelCrossEmail, ResDelCrossEmail>
let eids = call.req.eids;
G.mongodb.collection("email").updateMany({
_id: {$in: eids.map((i) => G.mongodb.conversionId(i))}
}, {isdel: true})
}, {$set: {isdel: true}})
call.succ({result:true})
}

View File

@ -39,15 +39,15 @@ export default async function (call: ApiCall<ReqSyncBtn, ResSyncBtn>) {
}
break;
case 'christmas':
//领完消失
if (!data[key]) {
let _hdList = await HuoDongFun.gethdList(call, 8)
if (_hdList) {
// 无此活动
data[key] = {active: true};
change[key] = data[key];
}
}
//领完消失
data[key] = {active: false};
change[key] = data[key];
let _hdList = await HuoDongFun.gethdList(call, 8)
if (_hdList.length > 0) {
// 无此活动
data[key] = {active: true};
change[key] = data[key];
}
break;
case 'dayjijin':
case 'dengjijijin':

View File

@ -27,7 +27,6 @@ export default async function (call: ApiCall<ReqLiBao, ResLiBao>) {
// 判断是否选择奖励了
return call.error('', { code: -3, message: globalThis.lng.yangchengmubiao_2 })
}
let _prize: atn[] = _con.basep
for (let key in _select) {

View File

@ -19,17 +19,23 @@ export default async function (call: ApiCall<ReqQianDao, ResQianDao>) {
_mydata.qiandao.push(i)
_prize = _prize.concat(_con[i])
}
if (!_prize){
if (_prize.length <= 0){
// 没有奖励可以领取
return call.error('', { code: -1, message: globalThis.lng.yangchengmubiao_2 })
}
let _setData = {}
let _addVal = 0
// 懒得喊后台和前端修改了直接取prize里面的对应的经验字段去添加zhanling经验
for (const p of _prize) {
// 战令经验
if (p.t == "shengdanExp") {
_addVal += p.n
}
}
_mydata["val"] += _addVal
_setData["val"] = _mydata.val
_setData["qiandao"] = _mydata.qiandao
await Christmasfun.setMyData(call.uid, call.req.hdid, { $set: _setData })
await PlayerFun.sendPrize(call, _prize);
let changedata = { mydata: _mydata, prize: _prize}
// 推送红点

View File

@ -22,11 +22,14 @@ export default async function (call: ApiCall<ReqTaskRec, ResTaskRec>) {
return call.error('', { code: -3, message: globalThis.lng.yangchengmubiao_4 })
}
_mydata.taskfinish.push(taskid)
let _addval = _con.addval
let _setData = {}
_mydata["val"] += _addval
_setData["val"] = _mydata.val
_setData["taskfinish"] = _mydata.taskfinish
await Christmasfun.setMyData(call.uid, call.req.hdid, { $set: _setData })
let _prize = _con.prize
await PlayerFun.sendPrize(call, _prize);
let changedata = { mydata: _mydata, prize: _prize}
// 推送红点

View File

@ -30,7 +30,7 @@ export default async function (call: ApiCall<ReqZhanLingRec, ResZhanLingRec>) {
_mydata.gj.push(index)
}
if (!_prize) {
if (_prize.length <= 0) {
// 没有奖励可以领取
return call.error('', { code: -1, message: globalThis.lng.yangchengmubiao_2 })
}

View File

@ -113,11 +113,17 @@ export class Christmasfun {
mydata.taskval = await this.getTaskVal(call, hdid)
mydata.refresh = G.time
mydata.gamenum = 0
await this.setMyData(call.uid, hdid, { $set: { refresh: mydata.refresh, taskfinish: mydata.taskfinish, taskval: mydata.taskval, gamenum: mydata.gamenum} })
mydata.libao = {}
await this.setMyData(call.uid, hdid, { $set: {
refresh: mydata.refresh,
taskfinish: mydata.taskfinish,
taskval: mydata.taskval,
gamenum: mydata.gamenum,
libao:mydata.libao} })
return mydata
}
static async payChristmas(payid, call: ApiCall) {
static async payChristmas(payid, call: any) {
let _hd = await HuoDongFun.gethdList(call, 8)
for (let index = 0; index < _hd.length; index++) {
const hdinfo = _hd[index];
@ -126,8 +132,8 @@ export class Christmasfun {
let _mydata = await Christmasfun.getMyData(call, _hdid)
if (_mydata.pay) continue
await this.setMyData(call.uid, _hdid, { $set: { pay: true} })
let _prize = hdinfo.data.zlpayprize
await PlayerFun.sendPrize(call, _prize);
// let _prize = hdinfo.data.zlpayprize
// await PlayerFun.sendPrize(call, _prize);
}
else{
const libaos = hdinfo.data.libao
@ -140,6 +146,12 @@ export class Christmasfun {
if (_buyNum >= _tmp["buynum"]) continue
_mydata.libao[lbid] = _buyNum + 1
this.setMyData(call.uid, _hdid, { $set: { libao: _mydata.libao} })
let _select = _mydata.select[lbid] || {}
let _prize: atn[] = _tmp["basep"]
for (let key in _select) {
_prize.push(_tmp["dlz"][parseInt(key)][_select[key]])
}
await PlayerFun.sendPrize(call, _prize);
break
}

View File

@ -59,7 +59,7 @@ let enemyObject: object = {}
async function checkAndRefreshEnemy() {
if (lastRefreshTime + 3600 > G.time) return
lastRefreshTime = G.time
for (let i = 3; i <= 8; i ++) {
for (let i = 3; i <= 8; i++) {
let users = await G.mongodb.collection('user').aggregate([
{
$match: {
@ -85,7 +85,9 @@ async function checkAndRefreshEnemy() {
export async function refreshEnemys(call: ApiCall) {
if (!lastRefreshTime) await checkAndRefreshEnemy()
let dbUser = enemyObject[Math.floor(call.conn.gud.lv / 10)]
let lvDw = Math.floor(call.conn.gud.lv / 10 > 8 ? 8 : call.conn.gud.lv / 10)
let dbUser = enemyObject[lvDw] || []
let enemys: joinFightData[] = [];

View File

@ -57,6 +57,8 @@ export default async function (call: ApiCall<ReqChangePos, ResChangePos>) {
}
fightHeros.push(hero.heroId.toString());
fightHeros = await checkFightHerosAndFix(call.uid, heroPos, fightHeros)
Wjjl.setVal(call.uid, 'fight_hero_colour_4', fightHeros.map(id => G.gc.hero[id].colour).filter(c => c >= 4).length);
let checkMatrixPos = HeroFun.checkMatrixPosAndChange(call, heroPos, matrixPos)
@ -65,4 +67,12 @@ export default async function (call: ApiCall<ReqChangePos, ResChangePos>) {
call.conn.refreshPower();
kfjsFun.setHeroLvCount(call)
}
async function checkFightHerosAndFix(uid, heroPos, fightHeros) {
if (fightHeros.length == R.values(heroPos).length) {
return fightHeros
}
let heros = await HeroFun.getHeros({uid}, R.values(heroPos));
return heros.map(i => i.heroId)
}

View File

@ -364,6 +364,10 @@ export class HuoDongHongDianFun {
// 检测 htype 6 七日登录活动红点
ishd = await this.qiridengluHongDian(call, element)
}
if (element.htype == 8) {
// 检测 htype 8 圣诞活动红点
ishd = await this.christmasHongDian(call, element)
}
// 此活动有红点
if (ishd.show) {
@ -704,7 +708,7 @@ export class HuoDongHongDianFun {
for (let indextask = 0; indextask < Object.keys(_tasks).length; indextask++) {
const elementtask = Object.keys(_tasks)[indextask];
let _tmp = _tasks[elementtask];
if (_tmp.pval <= (_mydata.taskval[elementtask] || 0) && !_mydata.taskfinsih.includes(elementtask)) {
if (_tmp.pval <= (_mydata.taskval[elementtask] || 0) && !_mydata.taskfinish.includes(elementtask)) {
// 任务完成且没有领取
_res.show = true;
return _res;

View File

@ -6,7 +6,7 @@ import {PublicShared} from '../../shared/public/public';
import {TanXianShared} from '../../shared/public/tanxian';
import {event_dldh_addPrize} from '../event/diaoluoduihuan/ApiOpen';
import {getEventPrize} from '../tanxian/ApiEvent';
import { getItemByItemId } from "../../public/item";
import {getItemByItemId} from "../../public/item";
const iType = {
3: 'hero',
@ -15,10 +15,10 @@ const iType = {
};
export default async function (call: ApiCall<ReqUse, ResUse>) {
//ȥ<><C8A5>item Redis<69><73><EFBFBD>
let itemInfo = await getItemByItemId(call.uid,call.req.itemId); //call.conn.item[call.req.itemId];
if(!itemInfo[call.req.itemId]) return call.error(globalThis.lng.item_1);
//ȥ<><C8A5>item Redis<69><73><EFBFBD>
let itemInfo = await getItemByItemId(call.uid, call.req.itemId); //call.conn.item[call.req.itemId];
if (!itemInfo[call.req.itemId]) return call.error(globalThis.lng.item_1);
let item = itemInfo[call.req.itemId];
let useNum = call.req.useNum;
@ -105,8 +105,9 @@ export default async function (call: ApiCall<ReqUse, ResUse>) {
n: useNum
}
];
} else if ([7, 8].includes(itemConf.type)) {
} else if ([6, 7, 8].includes(itemConf.type)) {
if (useNum > item.num) return call.error(globalThis.lng.item_3);
if (itemConf.type == 6) UserFun.activeModel(call.uid, itemConf.diaoluo.toString(), useNum);
if (itemConf.type == 7) UserFun.activeHeadFrame(call.uid, itemConf.diaoluo.toString(), useNum);
if (itemConf.type == 8) UserFun.activeChatFrame(call.uid, itemConf.diaoluo.toString(), useNum);

View File

@ -1,16 +1,27 @@
import { ApiCall } from "tsrpc";
import { PlayerFun } from '../../public/player';
import { ReqChangeInfo, ResChangeInfo } from "../../shared/protocols/user/PtlChangeInfo";
import { ResLogin } from '../../shared/protocols/user/PtlLogin';
import { UserShared } from '../../shared/public/user';
import {ApiCall} from "tsrpc";
import {PlayerFun} from '../../public/player';
import {ReqChangeInfo, ResChangeInfo} from "../../shared/protocols/user/PtlChangeInfo";
import {ResLogin} from '../../shared/protocols/user/PtlLogin';
import {UserShared} from '../../shared/public/user';
export default async function (call: ApiCall<ReqChangeInfo, ResChangeInfo>) {
if (call.req.type == 'model' && !call.req.pos) return call.error(globalThis.lng.shiwu_6);
// if (call.req.type == 'model' && !call.req.pos) return call.error(globalThis.lng.shiwu_6);
const active = (await G.mongodb.collection('playerInfo', 'playerInfo').findOne({ uid: call.uid, type: 'playerInfo' }))?.active || {};
const fmtId = UserShared.getInfoId(call.req.type, call.req.id, call.req.pos || '');
const isMeet = UserShared.chechIsActive(fmtId, { lv: call.conn.gud.lv, vip: call.conn.gud.vip, lsyx: call.conn.lshd.hero, active: active });
let active = (await G.mongodb.collection('playerInfo', 'playerInfo').findOne({
uid: call.uid,
type: 'playerInfo'
}))?.active || {};
const fmtId = UserShared.getInfoId(call.req.type, call.req.id);
if (R.values(active).length == 0) active = UserShared.getActive(fmtId, call.conn.gud, call.req.type, call.req.id)
const isMeet = UserShared.chechIsActive(fmtId, {
lv: call.conn.gud.lv,
vip: call.conn.gud.vip,
lsyx: call.conn.lshd.hero,
model: call.conn.gud.model,
active: active
});
if (!isMeet && call.req.type != 'headFrame' && call.req.type != 'chatFrame') return call.error(globalThis.lng.user_1);
@ -18,10 +29,12 @@ export default async function (call: ApiCall<ReqChangeInfo, ResChangeInfo>) {
if (call.req.type == 'model') {
let d = JSON.parse(JSON.stringify(call.conn.gud.model));
d[call.req.pos] = {
let changeItem = {
id: call.req.id,
time: active[fmtId] || -1
};
}
d[call.req.id] = changeItem
change.upModel = changeItem
change.model = d;
} else {
change[call.req.type] = {

View File

@ -2,13 +2,14 @@ import {RedisClientType, createClient} from "redis";
import {redisClient} from "./setRedis";
import {ConnectionStatus, WsServer} from "tsrpc";
import cluster from 'cluster';
import { clusterFun } from "./clusterFunction";
import {clusterFun} from "./clusterFunction";
//维护当前uid和pid的对应关系
let uid2processId = {};
//订阅redis
let subscribeRedis: RedisClientType
let firstPid = null;
//发布和可写redis复用原 setRedis 里的redisClient
@ -20,10 +21,10 @@ let firstPid = null;
*/
export function clusterSubscribe(key: string, callback: Function) {
subscribeRedis.subscribe(G.redis.fromatKey(key), function (msg) {
try{
try {
callback(msg);
}catch(e){
console.error("clusterSubscribe error",e);
} catch (e) {
console.error("clusterSubscribe error", e);
}
});
}
@ -43,14 +44,19 @@ export function clusterPublish(key: string, data: any) {
* N个进程中使
*/
export function clusterRunOnce(fun) {
console.log(`${process.pid}环境变量pm_id===>${process.env.pm_id}`);
if (process.env.pm_id == null || process.env.pm_id === '0') {
//非pm2启动的或是pm2下启动的第一个进程
console.log("run clusterRunOnce1 ===>", process.pid)
fun();
return;
}
if(firstPid == process.pid){
if(G.config.isG123)return;
if (firstPid == process.pid) {
//pm2的其中一个进程
console.log("run clusterRunOnce2 ===>", process.pid)
fun();
return;
}
@ -60,16 +66,16 @@ export function clusterRunOnce(fun) {
*
* uid所在的进程执行fun方法uid不在任何进程的话
*/
export function clusterFunctionRunAtUidProcess(uid:string, fun:string, ...arg:any[]) {
if(!uid2processId[uid] || uid2processId[uid] == process.pid){
clusterFun[ fun ].call(this, ...arg);
export function clusterFunctionRunAtUidProcess(uid: string, fun: string, ...arg: any[]) {
if (!uid2processId[uid] || uid2processId[uid] == process.pid) {
clusterFun[fun].call(this, ...arg);
return;
}
clusterPublish("RunclusterFunction", JSON.stringify({
"uid": uid,
"fun": fun,
"arg" : arg
"arg": arg
}))
}
@ -159,17 +165,17 @@ async function initSubscribeRedis() {
clusterSubscribe('broadcastClusterMsg', function (msg) {
let data = JSON.parse(msg);
if(!data.filter){
if (!data.filter) {
//如果不是有条件发送的话
G.server.broadcastMsg(data.msgName, data.msg);
}else {
} else {
//但是如果是有条件发送的话
//条件里可能需要进程内的信息,则需要每个进程都分别筛选后执行
if (data.filter.ghId != null) {
//指定公会
let conns = G.server.connections;
conns = conns.filter(c => c?.gud?.ghId == data.filter.ghId);
conns.length>0 && G.server.broadcastMsg(data.msgName, data.msg, conns);
conns.length > 0 && G.server.broadcastMsg(data.msgName, data.msg, conns);
}
}
});
@ -178,7 +184,7 @@ async function initSubscribeRedis() {
clusterSubscribe('RunclusterFunction', function (msg) {
let data = JSON.parse(msg);
if (uid2processId[data.uid] == process.pid) {
clusterFun[ data.fun ].call(this, ...data.arg);
clusterFun[data.fun].call(this, ...data.arg);
}
});
}
@ -193,8 +199,8 @@ export async function clusterMain() {
});
//初始化订阅redis
await initSubscribeRedis();
if(process.env.pm_id != null){
if (process.env.pm_id != null) {
//pm2启动的设置key为我的pid
firstPid = await redisClient.get(G.redis.fromatKey("firstPid"));
if (!firstPid) {
@ -207,7 +213,7 @@ export async function clusterMain() {
redisClient.del(G.redis.fromatKey("uid2processId"));
});
}
//初始化玩家pid信息
await initUid2processId();

View File

@ -875,6 +875,29 @@ export const serviceProto: ServiceProto<ServiceType> = {
},
{
"id": 5,
"name": "upModel",
"type": {
"type": "Interface",
"properties": [
{
"id": 0,
"name": "id",
"type": {
"type": "String"
}
},
{
"id": 1,
"name": "time",
"type": {
"type": "Number"
}
}
]
}
},
{
"id": 6,
"name": "model",
"type": {
"type": "Interface",
@ -903,14 +926,14 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 6,
"id": 7,
"name": "renown",
"type": {
"type": "Number"
}
},
{
"id": 7,
"id": 8,
"name": "wxcLv",
"type": {
"type": "Interface",
@ -936,14 +959,14 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 8,
"id": 9,
"name": "mapId",
"type": {
"type": "Number"
}
},
{
"id": 9,
"id": 10,
"name": "shoucangping",
"type": {
"type": "Interface",
@ -956,14 +979,14 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 10,
"id": 11,
"name": "useTujianLvPoint",
"type": {
"type": "Number"
}
},
{
"id": 11,
"id": 12,
"name": "skills",
"type": {
"type": "Interface",
@ -976,7 +999,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 12,
"id": 13,
"name": "fightSkills",
"type": {
"type": "Interface",
@ -989,7 +1012,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 13,
"id": 14,
"name": "heroPos",
"type": {
"type": "Interface",
@ -1002,21 +1025,21 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 14,
"id": 15,
"name": "ghId",
"type": {
"type": "String"
}
},
{
"id": 15,
"id": 16,
"name": "ghName",
"type": {
"type": "String"
}
},
{
"id": 16,
"id": 17,
"name": "ghLevel",
"type": {
"type": "Reference",
@ -1024,7 +1047,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 17,
"id": 18,
"name": "ghwz",
"type": {
"type": "Interface",
@ -1038,7 +1061,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 18,
"id": 19,
"name": "ghExitTime",
"type": {
"type": "Number"
@ -1046,7 +1069,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 19,
"id": 20,
"name": "loginTime",
"type": {
"type": "Number"
@ -1054,7 +1077,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 20,
"id": 21,
"name": "logoutTime",
"type": {
"type": "Number"
@ -1062,7 +1085,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 21,
"id": 22,
"name": "cTime",
"type": {
"type": "Number"
@ -1070,7 +1093,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 22,
"id": 23,
"name": "loginDays",
"type": {
"type": "Number"
@ -1078,7 +1101,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 23,
"id": 24,
"name": "serverName",
"type": {
"type": "String"
@ -1086,7 +1109,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 24,
"id": 25,
"name": "sid",
"type": {
"type": "Number"
@ -1094,7 +1117,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 25,
"id": 26,
"name": "onlineTime",
"type": {
"type": "Number"
@ -1102,7 +1125,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 26,
"id": 27,
"name": "newonlinetime",
"type": {
"type": "Number"
@ -1110,7 +1133,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 27,
"id": 28,
"name": "isNpc",
"type": {
"type": "Boolean"
@ -1118,7 +1141,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 28,
"id": 29,
"name": "matrix",
"type": {
"type": "Interface",
@ -1132,7 +1155,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 29,
"id": 30,
"name": "matrixPos",
"type": {
"type": "Interface",
@ -1152,7 +1175,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 30,
"id": 31,
"name": "selectMatrix",
"type": {
"type": "String"
@ -1160,7 +1183,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 31,
"id": 32,
"name": "fightHeros",
"type": {
"type": "Array",
@ -1171,7 +1194,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 32,
"id": 33,
"name": "helpHeros",
"type": {
"type": "Array",
@ -1248,7 +1271,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 33,
"id": 34,
"name": "changeNameNum",
"type": {
"type": "Number"
@ -1256,7 +1279,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 34,
"id": 35,
"name": "peijianUnlock",
"type": {
"type": "Interface",
@ -1270,7 +1293,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 35,
"id": 36,
"name": "headFrames",
"type": {
"type": "Interface",
@ -1284,7 +1307,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 36,
"id": 37,
"name": "chatFrames",
"type": {
"type": "Interface",

View File

@ -0,0 +1,27 @@
import {ctor} from "../global";
import {initMongoDB} from "../setMongodb";
async function start() {
await initMongoDB()
// 刷新活动配置
console.log(`删除错误活动数据开始...`);
await G.mongodb.collection("hdinfo").deleteOne({hdid: 8000})
console.log(`删除错误活动数据完成...`);
}
ctor();
start().then(() => {
let s = 0;
setInterval(() => {
s += 1;
console.log(new Date().format("MM-dd hh:mm:ss"));
if (s >= 3) process.exit(1);
}, 1000)
console.log("逻辑执行完成...等待退出!!!");
});

View File

@ -143,6 +143,10 @@ export type gEventType = {
Class_task_154: (eventname, call, val, chkVal) => void;
/**每日任务宝箱领取 */
Class_task_155: (eventname, call, val, chkVal) => void;
/**每日钻石消耗 */
Class_task_156: (eventname, call, val, chkVal) => void;
/**每日获取vip经验 */
Class_task_157: (eventname, call, val, chkVal) => void;
};
export function addListener() {
@ -177,8 +181,6 @@ export function addListener() {
ActionLog.addRetainLog(player.uid, { key: 'pay', val: conf.payExp[0].n });
if (payId == G.gc.zhanling.payId) payZhanLing(player);
//圣诞节活动充值
Christmasfun.payChristmas(payId, call);
let payEmailConf = G.gc.payEmail[payId] as _gcType['payEmail']['caifutequan'];
if (payEmailConf?.length > 0) {
let sendEmailConfs = payEmailConf;

View File

@ -3828,7 +3828,7 @@
"hdid" : 10000, // 唯一活动id 超值好礼
"htype" : 10, // 后端唯一识别标识
"stype" : 1000, // 前端唯一识别标识(看前端需要是否修改)
"ttype" : 0, // 0 按照开服时间计算1 玩家注册时间计算 4 屏蔽此活动
"ttype" : 4, // 0 按照开服时间计算1 玩家注册时间计算 4 屏蔽此活动
"stime" : 0, // 活动开始天数
"rtime" : 30, // 活动显示结束天数
"etime" : 30, // 活动实际结束
@ -3849,27 +3849,33 @@
free: false,
payId: 'czlb_1',
buyNum: 1,
equal: 15000,
prize: [
{
"a": "item",
"t": "13",
"n": 600
"n": 601
}
],
"recPrize1": [
],
"recPrize1": [
{
"a": "item",
"t": "13",
"t": "12",
"n": 600
},
{
"a": "attr",
"t": "rmbmoney",
"n": 333
}
],
"recPrize2": [
],
"recPrize2": [
{
"a": "item",
"t": "13",
"n": 600
"t": "4",
"n": 10
}
]
]
},
{
id: '2',
@ -3878,27 +3884,62 @@
free: false,
payId: 'czlb_2',
buyNum: 1,
equal: 35000,
prize: [
{
"a": "item",
"t": "13",
"n": 600
"t": "1",
"n": 1200
}
],
"recPrize1": [
],
"recPrize1": [
{
"a": "item",
"t": "13",
"n": 600
"t": "2",
"n": 4400
}
],
"recPrize2": [
],
"recPrize2": [
{
"a": "item",
"t": "9",
"n": 63300
},
{
"a": "attr",
"t": "jinbi",
"n": 114514
},
{
"a": "attr",
"t": "rmbmoney",
"n": 31313
},
{
"a": "item",
"t": "2",
"n": 111
},
{
"a": "item",
"t": "13",
"n": 600
"n": 515
},{
"a": "item",
"t": "601",
"n": 1
},
{
"a": "item",
"t": "633",
"n": 2
},
{
"a": "hero",
"t": "5001",
"n": 1
}
]
]
},
{
id: '3',
@ -3907,27 +3948,28 @@
free: false,
payId: 'czlb_3',
buyNum: 1,
equal: 65000,
prize: [
{
"a": "item",
"t": "13",
"n": 600
"n": 123
}
],
"recPrize1": [
],
"recPrize1": [
{
"a": "item",
"t": "13",
"n": 600
"n": 321
}
],
"recPrize2": [
],
"recPrize2": [
{
"a": "item",
"t": "13",
"n": 600
"n": 548
}
]
]
}
]
}
@ -3986,5 +4028,201 @@
}
]
}
},
{
"hdid" : 12000, // 唯一活动id 累计购买礼包
"htype" : 12, // 后端唯一识别标识
"stype" : 1200, // 前端唯一识别标识(看前端需要是否修改)
"ttype" : 0, // 0 按照开服时间计算1 玩家注册时间计算 4 屏蔽此活动
"stime" : 0, // 活动开始天数
"rtime" : 30, // 活动显示结束天数
"etime" : 30, // 活动实际结束
"name": "ljlibao",
"icon": "icon_ljlibao",
"showtime" : "仅供参考,会复写正确值", // 自选礼包,如果存在多个活动,计费点不要设置一样;如果是一样,可能会存在付费一次,购买多次。
"data" : {
//活动文本描述
intr: "ljlibaotips_1",
intr: "ljlibaotips_2",
//礼包
gift: [
{
id: '1',
name: 'ljlibaotips_3',
need:[],
free: false,
payId: 'ljlibao_1',
scale: 200,
buynum: 1,
prize:[
{
"a": "item",
"t": "13",
"n": 123
}
]
},
{
id: '2',
name: 'ljlibaotips_4',
need:[],
free: false,
payId: 'ljlibao_2',
buynum: 1,
scale: 201,
prize:[
{
"a": "item",
"t": "12",
"n": 111
}
]
},
{
id: '3',
name: 'ljlibaotips_5',
need:[],
free: false,
payId: 'ljlibao_3',
buynum: 1,
scale: 203,
prize:[
{
"a": "item",
"t": "1",
"n": 111111
}
]
},
{
id: '4',
name: 'ljlibaotips_6',
need:[],
free: false,
payId: 'ljlibao_4',
buynum: 1,
scale: 204,
prize:[
{
"a": "item",
"t": "13",
"n": 123
},
{
"a": "item",
"t": "2",
"n": 123
}
]
},
{
id: '5',
name: 'ljlibaotips_7',
need:[],
free: false,
payId: 'ljlibao_5',
buynum: 1,
scale: 201,
prize:[
{
"a": "item",
"t": "13",
"n": 12
},
{
"a": "item",
"t": "1",
"n": 31
}
]
},
{
id: '6',
name: 'ljlibaotips_8',
need:[],
free: false,
payId: 'ljlibao_6',
buynum: 1,
scale: 200,
prize:[
{
"a": "item",
"t": "1",
"n": 123
},
{
"a": "item",
"t": "2",
"n": 123
}
]
},
{
id: '7',
name: 'ljlibaotips_9',
need:[],
free: false,
payId: 'ljlibao_7',
buynum: 1,
scale: 300,
prize:[
{
"a": "item",
"t": "4",
"n": 123
},
{
"a": "item",
"t": "2",
"n": 123
}
]
},
],
//自选框掉落池
dlz: [
{
"1": {"a": "item", "t":"600", "n": 20},
"2": {"a": "item", "t":"5002", "n": 10},
"3": {"a": "item", "t":"5004", "n": 10}
},
{
"1": {"a": "item", "t":"600", "n": 20},
"2": {"a": "item", "t":"5002", "n": 10},
"3": {"a": "item", "t":"5004", "n": 10}
},
{
"1": {"a": "item", "t":"1", "n": 10000000},
"2": {"a": "item", "t":"12", "n": 1000},
"3": {"a": "item", "t":"2", "n": 2000},
"4": {"a": "item", "t":"18", "n": 500}
},
{
"1": {"a": "item", "t":"600", "n": 20},
"2": {"a": "item", "t":"5002", "n": 10},
"3": {"a": "item", "t":"5004", "n": 10}
},
{
"1": {"a": "item", "t":"600", "n": 20},
"2": {"a": "item", "t":"5002", "n": 10},
"3": {"a": "item", "t":"5004", "n": 10}
},
{
"1": {"a": "item", "t":"600", "n": 20},
"2": {"a": "item", "t":"5002", "n": 10},
"3": {"a": "item", "t":"5004", "n": 10}
},
{
"1": {"a": "item", "t":"600", "n": 20},
"2": {"a": "item", "t":"5002", "n": 10},
"3": {"a": "item", "t":"5004", "n": 10}
},
{
"1": {"a": "item", "t":"600", "n": 20},
"2": {"a": "item", "t":"5002", "n": 10},
"3": {"a": "item", "t":"5004", "n": 10}
}
]
}
}
]

View File

@ -3860,6 +3860,7 @@
"way": [],
"go": "",
"icon": "txk_019",
"sicon": "txk_019",
"describe": "intr_item_describe_50001",
"diaoluo": 3,
"useNeed": [],
@ -3878,6 +3879,7 @@
"way": [],
"go": "",
"icon": "txk_016",
"sicon": "txk_016",
"describe": "intr_item_describe_50002",
"diaoluo": 4,
"useNeed": [],
@ -3896,6 +3898,7 @@
"way": [],
"go": "",
"icon": "txk_023",
"sicon": "txk_023",
"describe": "intr_item_describe_50003",
"diaoluo": 6,
"useNeed": [],
@ -3914,6 +3917,7 @@
"way": [],
"go": "",
"icon": "txk_009",
"sicon": "txk_009",
"describe": "intr_item_describe_50004",
"diaoluo": 7,
"useNeed": [],
@ -3932,6 +3936,7 @@
"way": [],
"go": "",
"icon": "txk_026",
"sicon": "txk_026",
"describe": "intr_item_describe_50005",
"diaoluo": 8,
"useNeed": [],
@ -3950,6 +3955,7 @@
"way": [],
"go": "",
"icon": "txk_018",
"sicon": "txk_018",
"describe": "intr_item_describe_50006",
"diaoluo": 9,
"useNeed": [],
@ -3968,6 +3974,7 @@
"way": [],
"go": "",
"icon": "txk_014",
"sicon": "txk_014",
"describe": "intr_item_describe_50007",
"diaoluo": 10,
"useNeed": [],
@ -3986,6 +3993,7 @@
"way": [],
"go": "",
"icon": "txk_022",
"sicon": "txk_022",
"describe": "intr_item_describe_50008",
"diaoluo": 11,
"useNeed": [],
@ -4004,6 +4012,7 @@
"way": [],
"go": "",
"icon": "txk_028",
"sicon": "txk_028",
"describe": "intr_item_describe_50009",
"diaoluo": 23,
"useNeed": [],
@ -4012,6 +4021,24 @@
"payId": "",
"advancedEffects": ""
},
"50010": {
"id": 50010,
"name": "playerheadFrame_name_24",
"type": 7,
"sort": 1,
"colour": 4,
"way": [],
"go": "",
"icon": "txk_025",
"sicon": "txk_025",
"describe": "intr_item_describe_50010",
"diaoluo": 24,
"useNeed": [],
"usePrize": [],
"selecPrize": [],
"payId": "",
"advancedEffects": ""
},
"50101": {
"id": 50101,
"name": "playerChatFrame_name_6",
@ -4022,6 +4049,7 @@
"way": [],
"go": "",
"icon": "lt_dhk11",
"sicon": "lt_dhk11",
"describe": "intr_item_describe_50101",
"diaoluo": 6,
"useNeed": [],
@ -4040,6 +4068,7 @@
"way": [],
"go": "",
"icon": "lt_dhk10",
"sicon": "lt_dhk10",
"describe": "intr_item_describe_50102",
"diaoluo": 7,
"useNeed": [],
@ -4058,6 +4087,7 @@
"way": [],
"go": "",
"icon": "txk_020",
"sicon": "txk_020",
"describe": "intr_item_describe_50103",
"diaoluo": 15,
"useNeed": [],
@ -4076,6 +4106,7 @@
"way": [],
"go": "",
"icon": "lt_dhk14",
"sicon": "lt_dhk14",
"describe": "intr_item_describe_50104",
"diaoluo": 8,
"useNeed": [],
@ -4094,6 +4125,7 @@
"way": [],
"go": "",
"icon": "txk_017",
"sicon": "txk_017",
"describe": "intr_item_describe_50201",
"diaoluo": 16,
"useNeed": [],
@ -4112,6 +4144,7 @@
"way": [],
"go": "",
"icon": "txk_011",
"sicon": "txk_011",
"describe": "intr_item_describe_50202",
"diaoluo": 17,
"useNeed": [],
@ -4130,6 +4163,7 @@
"way": [],
"go": "",
"icon": "txk_005",
"sicon": "txk_005",
"describe": "intr_item_describe_50203",
"diaoluo": 18,
"useNeed": [],
@ -4148,6 +4182,7 @@
"way": [],
"go": "",
"icon": "txk_004",
"sicon": "txk_004",
"describe": "intr_item_describe_50204",
"diaoluo": 19,
"useNeed": [],
@ -4166,6 +4201,7 @@
"way": [],
"go": "",
"icon": "txk_024",
"sicon": "txk_024",
"describe": "intr_item_describe_50205",
"diaoluo": 20,
"useNeed": [],
@ -4184,6 +4220,7 @@
"way": [],
"go": "",
"icon": "txk_013",
"sicon": "txk_013",
"describe": "intr_item_describe_50206",
"diaoluo": 21,
"useNeed": [],
@ -4202,6 +4239,7 @@
"way": [],
"go": "",
"icon": "txk_021",
"sicon": "txk_021",
"describe": "intr_item_describe_50207",
"diaoluo": 22,
"useNeed": [],
@ -4220,7 +4258,8 @@
"way": [],
"go": "",
"icon": 100011,
"describe": "intr_item_describe_50208",
"sicon": 100011,
"describe": "intr_item_describe_50301",
"diaoluo": 3,
"useNeed": [],
"usePrize": [],
@ -4238,7 +4277,8 @@
"way": [],
"go": "",
"icon": 100021,
"describe": "intr_item_describe_50209",
"sicon": 100021,
"describe": "intr_item_describe_50302",
"diaoluo": 4,
"useNeed": [],
"usePrize": [],

View File

@ -718,7 +718,7 @@
},
"or": {},
"time": 0,
"tips": "openCond_tips_53",
"tips": "openCond_tips_96",
"display": {
"lv": 15
}
@ -839,7 +839,7 @@
},
"or": {},
"time": 0,
"tips": "openCond_tips_60",
"tips": "openCond_tips_96",
"display": {
"lv": 15
}
@ -904,7 +904,7 @@
},
"or": {},
"time": 0,
"tips": "openCond_tips_65",
"tips": "openCond_tips_96",
"display": {
"lv": 15
}
@ -1339,5 +1339,31 @@
"display": {
"lv": 15
}
},
"czlibao": {
"name": "czlibao",
"undefined": "超值礼包破冰",
"and": {
"lv": 15
},
"or": {},
"time": 0,
"tips": "openCond_tips_96",
"display": {
"lv": 15
}
},
"xiaofeijingsai": {
"name": "xiaofeijingsai",
"undefined": "钻石消费竞赛",
"and": {
"lv": 15
},
"or": {},
"time": 0,
"tips": "openCond_tips_96",
"display": {
"lv": 15
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -29,6 +29,36 @@
"colour": 1,
"ani": ""
},
"3": {
"id": 3,
"name": "intr_playerinfo_name_3",
"undefined": "获得圣诞活动皮肤【圣诞庆典:男】后解锁",
"img": 100011,
"cond": [
"model",
3
],
"intr": "intr_playerinfo_intr_3",
"sort": 3,
"buff": {},
"colour": 1,
"ani": ""
},
"4": {
"id": 4,
"name": "intr_playerinfo_name_4",
"undefined": "获得圣诞活动皮肤【圣诞庆典:女】后解锁",
"img": 100021,
"cond": [
"model",
4
],
"intr": "intr_playerinfo_intr_4",
"sort": 4,
"buff": {},
"colour": 1,
"ani": ""
},
"1001": {
"id": 1001,
"name": "intr_playerinfo_name_1001",
@ -39,7 +69,7 @@
1001
],
"intr": "intr_playerinfo_intr_1001",
"sort": 40,
"sort": 42,
"buff": {},
"colour": 1,
"ani": ""
@ -54,7 +84,7 @@
1002
],
"intr": "intr_playerinfo_intr_1002",
"sort": 41,
"sort": 43,
"buff": {},
"colour": 1,
"ani": ""
@ -69,7 +99,7 @@
2001
],
"intr": "intr_playerinfo_intr_2001",
"sort": 38,
"sort": 40,
"buff": {},
"colour": 1,
"ani": ""
@ -84,7 +114,7 @@
2002
],
"intr": "intr_playerinfo_intr_2002",
"sort": 39,
"sort": 41,
"buff": {},
"colour": 1,
"ani": ""
@ -99,7 +129,7 @@
3001
],
"intr": "intr_playerinfo_intr_3001",
"sort": 23,
"sort": 25,
"buff": {},
"colour": 1,
"ani": ""
@ -114,7 +144,7 @@
3002
],
"intr": "intr_playerinfo_intr_3002",
"sort": 24,
"sort": 26,
"buff": {},
"colour": 1,
"ani": ""
@ -129,7 +159,7 @@
3003
],
"intr": "intr_playerinfo_intr_3003",
"sort": 25,
"sort": 27,
"buff": {},
"colour": 1,
"ani": ""
@ -144,7 +174,7 @@
3004
],
"intr": "intr_playerinfo_intr_3004",
"sort": 26,
"sort": 28,
"buff": {},
"colour": 1,
"ani": ""
@ -159,7 +189,7 @@
3005
],
"intr": "intr_playerinfo_intr_3005",
"sort": 27,
"sort": 29,
"buff": {},
"colour": 1,
"ani": ""
@ -174,7 +204,7 @@
3006
],
"intr": "intr_playerinfo_intr_3006",
"sort": 28,
"sort": 30,
"buff": {},
"colour": 1,
"ani": ""
@ -189,7 +219,7 @@
3007
],
"intr": "intr_playerinfo_intr_3007",
"sort": 29,
"sort": 31,
"buff": {},
"colour": 1,
"ani": ""
@ -204,7 +234,7 @@
3008
],
"intr": "intr_playerinfo_intr_3008",
"sort": 30,
"sort": 32,
"buff": {},
"colour": 1,
"ani": ""
@ -219,7 +249,7 @@
3009
],
"intr": "intr_playerinfo_intr_3009",
"sort": 31,
"sort": 33,
"buff": {},
"colour": 1,
"ani": ""
@ -234,7 +264,7 @@
3010
],
"intr": "intr_playerinfo_intr_3010",
"sort": 32,
"sort": 34,
"buff": {},
"colour": 1,
"ani": ""
@ -249,7 +279,7 @@
3011
],
"intr": "intr_playerinfo_intr_3011",
"sort": 33,
"sort": 35,
"buff": {},
"colour": 1,
"ani": ""
@ -264,7 +294,7 @@
3012
],
"intr": "intr_playerinfo_intr_3012",
"sort": 34,
"sort": 36,
"buff": {},
"colour": 1,
"ani": ""
@ -279,7 +309,7 @@
3013
],
"intr": "intr_playerinfo_intr_3013",
"sort": 35,
"sort": 37,
"buff": {},
"colour": 1,
"ani": ""
@ -294,7 +324,7 @@
3014
],
"intr": "intr_playerinfo_intr_3014",
"sort": 36,
"sort": 38,
"buff": {},
"colour": 1,
"ani": ""
@ -309,7 +339,7 @@
3015
],
"intr": "intr_playerinfo_intr_3015",
"sort": 37,
"sort": 39,
"buff": {},
"colour": 1,
"ani": ""
@ -324,7 +354,7 @@
4001
],
"intr": "intr_playerinfo_intr_4001",
"sort": 8,
"sort": 10,
"buff": {},
"colour": 1,
"ani": ""
@ -339,7 +369,7 @@
4002
],
"intr": "intr_playerinfo_intr_4002",
"sort": 9,
"sort": 11,
"buff": {},
"colour": 1,
"ani": ""
@ -354,7 +384,7 @@
4003
],
"intr": "intr_playerinfo_intr_4003",
"sort": 10,
"sort": 12,
"buff": {},
"colour": 1,
"ani": ""
@ -369,7 +399,7 @@
4004
],
"intr": "intr_playerinfo_intr_4004",
"sort": 11,
"sort": 13,
"buff": {},
"colour": 1,
"ani": ""
@ -384,7 +414,7 @@
4005
],
"intr": "intr_playerinfo_intr_4005",
"sort": 12,
"sort": 14,
"buff": {},
"colour": 1,
"ani": ""
@ -399,7 +429,7 @@
4006
],
"intr": "intr_playerinfo_intr_4006",
"sort": 13,
"sort": 15,
"buff": {},
"colour": 1,
"ani": ""
@ -414,7 +444,7 @@
4007
],
"intr": "intr_playerinfo_intr_4007",
"sort": 14,
"sort": 16,
"buff": {},
"colour": 1,
"ani": ""
@ -429,7 +459,7 @@
4008
],
"intr": "intr_playerinfo_intr_4008",
"sort": 15,
"sort": 17,
"buff": {},
"colour": 1,
"ani": ""
@ -444,7 +474,7 @@
4009
],
"intr": "intr_playerinfo_intr_4009",
"sort": 16,
"sort": 18,
"buff": {},
"colour": 1,
"ani": ""
@ -459,7 +489,7 @@
4010
],
"intr": "intr_playerinfo_intr_4010",
"sort": 17,
"sort": 19,
"buff": {},
"colour": 1,
"ani": ""
@ -474,7 +504,7 @@
4011
],
"intr": "intr_playerinfo_intr_4011",
"sort": 18,
"sort": 20,
"buff": {},
"colour": 1,
"ani": ""
@ -489,7 +519,7 @@
4012
],
"intr": "intr_playerinfo_intr_4012",
"sort": 19,
"sort": 21,
"buff": {},
"colour": 1,
"ani": ""
@ -504,7 +534,7 @@
4013
],
"intr": "intr_playerinfo_intr_4013",
"sort": 20,
"sort": 22,
"buff": {},
"colour": 1,
"ani": ""
@ -519,7 +549,7 @@
4014
],
"intr": "intr_playerinfo_intr_4014",
"sort": 21,
"sort": 23,
"buff": {},
"colour": 1,
"ani": ""
@ -534,7 +564,7 @@
4015
],
"intr": "intr_playerinfo_intr_4015",
"sort": 22,
"sort": 24,
"buff": {},
"colour": 1,
"ani": ""
@ -549,7 +579,7 @@
5001
],
"intr": "intr_playerinfo_intr_5001",
"sort": 3,
"sort": 5,
"buff": {},
"colour": 1,
"ani": ""
@ -564,7 +594,7 @@
5002
],
"intr": "intr_playerinfo_intr_5002",
"sort": 4,
"sort": 6,
"buff": {},
"colour": 1,
"ani": ""
@ -579,7 +609,7 @@
5003
],
"intr": "intr_playerinfo_intr_5003",
"sort": 5,
"sort": 7,
"buff": {},
"colour": 1,
"ani": ""
@ -594,7 +624,7 @@
5004
],
"intr": "intr_playerinfo_intr_5004",
"sort": 6,
"sort": 8,
"buff": {},
"colour": 1,
"ani": ""
@ -609,7 +639,7 @@
5005
],
"intr": "intr_playerinfo_intr_5005",
"sort": 7,
"sort": 9,
"buff": {},
"colour": 1,
"ani": ""

View File

@ -391,5 +391,22 @@
},
"colour": 4,
"ani": ""
},
"24": {
"id": 24,
"name": "playerheadFrame_name_24",
"undefined": "消费竞赛活动前三名获得,解锁后伤害加成+1%限时7天",
"img": "txk_025",
"cond": [
"time",
604800
],
"intr": "playerheadFrame_des_24",
"sort": 24,
"buff": {
"dpspro": 0.01
},
"colour": 5,
"ani": ""
}
}

View File

@ -1,76 +1,74 @@
{
"1": {
"1": {
"type": 1,
"id": 1,
"name": "playerModel_name_1",
"head": 10001,
"img": "zhu_10001",
"cond": [
"lv",
1
],
"intr": "playerModel_des_1",
"sort": 1,
"buff": {},
"colour": 1,
"mwSpine": "ani_mingwangnan",
"fireHead": "img_lih2"
"id": 1,
"type": 1,
"name": "playerModel_name_1",
"head": 10001,
"img": "zhu_10001",
"cond": [
"lv",
1
],
"intr": "playerModel_des_1",
"sort": 1,
"buff": {},
"colour": 1,
"mwSpine": "ani_mingwangnan",
"fireHead": "img_lih2"
},
"2": {
"id": 2,
"type": 1,
"name": "playerModel_name_2",
"head": 10002,
"img": "zhu_10002",
"cond": [
"lv",
1
],
"intr": "playerModel_des_2",
"sort": 2,
"buff": {},
"colour": 1,
"mwSpine": "ani_mingwangnv",
"fireHead": "img_lih1"
},
"3": {
"id": 3,
"type": 1,
"name": "playerModel_name_3",
"head": 100011,
"img": 100011,
"cond": [
"time",
-1
],
"intr": "playerModel_des_3",
"sort": 3,
"buff": {
"defpro": 0.02
},
"2": {
"type": 1,
"id": 2,
"name": "playerModel_name_2",
"head": 10002,
"img": "zhu_10002",
"cond": [
"lv",
1
],
"intr": "playerModel_des_2",
"sort": 2,
"buff": {},
"colour": 1,
"mwSpine": "ani_mingwangnv",
"fireHead": "img_lih1"
"colour": 5,
"mwSpine": "ani_mingwangnan",
"fireHead": "img_lih21"
},
"4": {
"id": 4,
"type": 1,
"name": "playerModel_name_4",
"head": 100021,
"img": 100021,
"cond": [
"time",
-1
],
"intr": "playerModel_des_4",
"sort": 4,
"buff": {
"atkpro": 0.02
},
"3": {
"type": 1,
"id": 3,
"name": "playerModel_name_3",
"head": 100011,
"img": 100011,
"cond": [
"time",
-1
],
"intr": "playerModel_des_3",
"sort": 3,
"buff": {
"defpro": 0.02
},
"colour": 5,
"mwSpine": "ani_mingwangnan",
"fireHead": "img_lih21"
},
"4": {
"type": 1,
"id": 4,
"name": "playerModel_name_4",
"head": 100021,
"img": 100021,
"cond": [
"time",
-1
],
"intr": "playerModel_des_4",
"sort": 4,
"buff": {
"atkpro": 0.02
},
"colour": 5,
"mwSpine": "ani_mingwangnv",
"fireHead": "img_lih11"
}
"colour": 5,
"mwSpine": "ani_mingwangnv",
"fireHead": "img_lih11"
}
}

View File

@ -499,8 +499,8 @@
"13": {
"id": 13,
"type": 12,
"name": "wsw_wz_dhsd",
"undefined": "兑换商店",
"name": "wsw_wz_mrjxdh",
"undefined": "每日精选兑换商店",
"openCond": [
"lv",
15
@ -511,7 +511,7 @@
"freeRefreshInterval": 0,
"freeRefreshNum": 0,
"shopItems": [
4001
10001
],
"showItem": [
{

View File

@ -3918,31 +3918,6 @@
9999
],
"vipAddbuyNum": []
},
{
"id": 4001,
"a": "item",
"t": 4,
"n": 10,
"p": 1,
"colour": 4,
"buyNum": -1,
"openDay": 1,
"buyNeed": [
{
"a": "item",
"t": "15",
"n": 2800
}
],
"sale": 10,
"needVip": 0,
"needZCCG": 0,
"lv": [
1,
9999
],
"vipAddbuyNum": []
}
],
"4002": [
@ -6294,6 +6269,33 @@
"vipAddbuyNum": []
}
],
"10001": [
{
"id": 10001,
"a": "item",
"t": 4,
"n": 10,
"p": 1,
"colour": 4,
"buyNum": -1,
"openDay": 1,
"buyNeed": [
{
"a": "item",
"t": "15",
"n": 2800
}
],
"sale": 10,
"needVip": 0,
"needZCCG": 0,
"lv": [
1,
9999
],
"vipAddbuyNum": []
}
],
"120001": [
{
"id": 120001,

View File

@ -198,5 +198,22 @@
"npcImg": "img_sd_3015",
"npcText": "intr_shopCom_text_10",
"helpText": "intr_shopCom_helpText_10"
},
"11": {
"id": 11,
"shopId": 13,
"shopType": 12,
"title": "wsw_wz_dhsd",
"undefined": "兑换商店",
"openCond": "shop_13",
"des": "intr_shop_des_13",
"img": "wsw_wz_dhsd",
"cost": [
{
"a": "attr",
"t": "rmbmoney",
"n": 1
}
]
}
}

View File

@ -2,8 +2,39 @@
"1": {
"id": 1,
"type": 1,
"typeName": "tuisonglibao_name_2",
"num": [
5
100
],
"payId": [
"guanqialibao_1",
"guanqialibao_3"
],
"time": 3600,
"displayCD": 3600,
"scale": 3000
},
"2": {
"id": 2,
"type": 1,
"typeName": "tuisonglibao_name_2",
"num": [
140
],
"payId": [
"guanqialibao_1",
"guanqialibao_3"
],
"time": 3600,
"displayCD": 3600,
"scale": 3000
},
"3": {
"id": 3,
"type": 1,
"typeName": "tuisonglibao_name_2",
"num": [
180
],
"payId": [
"guanqialibao_1",
@ -11,78 +42,257 @@
"guanqialibao_3"
],
"time": 3600,
"displayCD": 7200,
"scale": 500
},
"2": {
"id": 2,
"type": 1,
"num": [
10
],
"payId": [
"guanqialibao_1",
"guanqialibao_2"
],
"time": 3600,
"displayCD": 7200,
"scale": 501
},
"3": {
"id": 3,
"type": 1,
"num": [
20
],
"payId": [
"guanqialibao_1",
"guanqialibao_3"
],
"time": 3600,
"displayCD": 7200,
"scale": 502
"displayCD": 3600,
"scale": 3000
},
"4": {
"id": 4,
"type": 2,
"type": 1,
"typeName": "tuisonglibao_name_2",
"num": [
{
"a": "item",
"t": "1"
}
240
],
"payId": [
"daojulibao_1",
"daojulibao_2"
"guanqialibao_1",
"guanqialibao_2",
"guanqialibao_3"
],
"time": 3600,
"displayCD": 7200,
"scale": 503
"displayCD": 3600,
"scale": 3000
},
"5": {
"id": 5,
"type": 2,
"type": 1,
"typeName": "tuisonglibao_name_2",
"num": [
{
"a": "item",
"t": "2"
}
300
],
"payId": [
"daojulibao_1",
"daojulibao_3"
"guanqialibao_1",
"guanqialibao_2",
"guanqialibao_3"
],
"time": 3600,
"displayCD": 7200,
"scale": 504
"displayCD": 3600,
"scale": 3000
},
"6": {
"id": 6,
"type": 1,
"typeName": "tuisonglibao_name_2",
"num": [
360
],
"payId": [
"guanqialibao_1",
"guanqialibao_2",
"guanqialibao_3"
],
"time": 3600,
"displayCD": 3600,
"scale": 3000
},
"7": {
"id": 7,
"type": 1,
"typeName": "tuisonglibao_name_2",
"num": [
400
],
"payId": [
"guanqialibao_1",
"guanqialibao_2",
"guanqialibao_3"
],
"time": 3600,
"displayCD": 3600,
"scale": 3000
},
"8": {
"id": 8,
"type": 1,
"typeName": "tuisonglibao_name_2",
"num": [
460
],
"payId": [
"guanqialibao_1",
"guanqialibao_2",
"guanqialibao_3"
],
"time": 3600,
"displayCD": 3600,
"scale": 3000
},
"9": {
"id": 9,
"type": 1,
"typeName": "tuisonglibao_name_2",
"num": [
490
],
"payId": [
"guanqialibao_1",
"guanqialibao_2",
"guanqialibao_3"
],
"time": 3600,
"displayCD": 3600,
"scale": 3000
},
"10": {
"id": 10,
"type": 1,
"typeName": "tuisonglibao_name_2",
"num": [
520
],
"payId": [
"guanqialibao_1",
"guanqialibao_2",
"guanqialibao_3"
],
"time": 3600,
"displayCD": 3600,
"scale": 3000
},
"11": {
"id": 11,
"type": 1,
"typeName": "tuisonglibao_name_2",
"num": [
550
],
"payId": [
"guanqialibao_1",
"guanqialibao_2",
"guanqialibao_3"
],
"time": 3600,
"displayCD": 3600,
"scale": 3000
},
"12": {
"id": 12,
"type": 1,
"typeName": "tuisonglibao_name_2",
"num": [
580
],
"payId": [
"guanqialibao_1",
"guanqialibao_2",
"guanqialibao_4"
],
"time": 3600,
"displayCD": 3600,
"scale": 3000
},
"13": {
"id": 13,
"type": 1,
"typeName": "tuisonglibao_name_2",
"num": [
610
],
"payId": [
"guanqialibao_1",
"guanqialibao_2",
"guanqialibao_4"
],
"time": 3600,
"displayCD": 3600,
"scale": 3000
},
"14": {
"id": 14,
"type": 1,
"typeName": "tuisonglibao_name_2",
"num": [
640
],
"payId": [
"guanqialibao_1",
"guanqialibao_2",
"guanqialibao_4"
],
"time": 3600,
"displayCD": 3600,
"scale": 3000
},
"15": {
"id": 15,
"type": 1,
"typeName": "tuisonglibao_name_2",
"num": [
670
],
"payId": [
"guanqialibao_1",
"guanqialibao_2",
"guanqialibao_4"
],
"time": 3600,
"displayCD": 3600,
"scale": 3000
},
"16": {
"id": 16,
"type": 1,
"typeName": "tuisonglibao_name_2",
"num": [
700
],
"payId": [
"guanqialibao_1",
"guanqialibao_2",
"guanqialibao_4"
],
"time": 3600,
"displayCD": 3600,
"scale": 3000
},
"17": {
"id": 17,
"type": 1,
"typeName": "tuisonglibao_name_2",
"num": [
730
],
"payId": [
"guanqialibao_1",
"guanqialibao_2",
"guanqialibao_4"
],
"time": 3600,
"displayCD": 3600,
"scale": 3000
},
"18": {
"id": 18,
"type": 1,
"typeName": "tuisonglibao_name_2",
"num": [
760
],
"payId": [
"guanqialibao_1",
"guanqialibao_2",
"guanqialibao_4"
],
"time": 3600,
"displayCD": 3600,
"scale": 3000
},
"101": {
"id": 101,
"type": 2,
"typeName": "tuisonglibao_name_3",
"num": [
{
"a": "attr",
"t": "jinbi"
"a": "item",
"t": "9"
}
],
"payId": [
@ -91,167 +301,227 @@
"daojulibao_3"
],
"time": 3600,
"displayCD": 7200,
"scale": 505
"displayCD": 86400,
"scale": 3000
},
"7": {
"id": 7,
"type": 3,
"102": {
"id": 102,
"type": 2,
"typeName": "tuisonglibao_name_3",
"num": [
1
{
"a": "item",
"t": "28"
}
],
"payId": [
"zhanbailibao_1",
"zhanbailibao_2",
"zhanbailibao_3"
"daojulibao_4",
"daojulibao_5",
"daojulibao_6"
],
"time": 3600,
"displayCD": 7200,
"scale": 506
"displayCD": 86400,
"scale": 3000
},
"8": {
"id": 8,
"type": 4,
"103": {
"id": 103,
"type": 2,
"typeName": "tuisonglibao_name_3",
"num": [
3
{
"a": "item",
"t": "18"
}
],
"payId": [
"choukalibao_1",
"choukalibao_2",
"choukalibao_3"
"daojulibao_7",
"daojulibao_8",
"daojulibao_9"
],
"time": 3600,
"displayCD": 7200,
"scale": 507
"displayCD": 86400,
"scale": 3000
},
"9": {
"id": 9,
"104": {
"id": 104,
"type": 2,
"typeName": "tuisonglibao_name_3",
"num": [
{
"a": "item",
"t": "19"
}
],
"payId": [
"daojulibao_10",
"daojulibao_11",
"daojulibao_12"
],
"time": 3600,
"displayCD": 86400,
"scale": 3000
},
"401": {
"id": 401,
"type": 5,
"typeName": "tuisonglibao_name_1",
"num": [
31
15
],
"payId": [
"lv30"
"lv15"
],
"time": 3600,
"displayCD": 3600,
"scale": 3300
"scale": 3000
},
"10": {
"id": 10,
"402": {
"id": 402,
"type": 5,
"typeName": "tuisonglibao_name_1",
"num": [
45
25
],
"payId": [
"lv40"
"lv25"
],
"time": 3600,
"displayCD": 3600,
"scale": 3300
"scale": 3000
},
"11": {
"id": 11,
"403": {
"id": 403,
"type": 5,
"typeName": "tuisonglibao_name_1",
"num": [
40
],
"payId": [
"lv40",
"lv40_1"
],
"time": 3600,
"displayCD": 3600,
"scale": 3000
},
"404": {
"id": 404,
"type": 5,
"typeName": "tuisonglibao_name_1",
"num": [
50
],
"payId": [
"lv55"
"lv50_1",
"lv50_2"
],
"time": 3600,
"displayCD": 3600,
"scale": 2000
"scale": 3000
},
"12": {
"id": 12,
"405": {
"id": 405,
"type": 5,
"typeName": "tuisonglibao_name_1",
"num": [
53
55
],
"payId": [
"lv58"
"lv55",
"lv55_1"
],
"time": 3600,
"displayCD": 3600,
"scale": 2000
"scale": 3000
},
"13": {
"id": 13,
"type": 5,
"num": [
56
],
"payId": [
"lv60"
],
"time": 3600,
"displayCD": 3600,
"scale": 2000
},
"14": {
"id": 14,
"406": {
"id": 406,
"type": 5,
"typeName": "tuisonglibao_name_1",
"num": [
60
],
"payId": [
"lv63"
"lv60",
"lv60_1"
],
"time": 3600,
"displayCD": 3600,
"scale": 2000
"scale": 3000
},
"15": {
"id": 15,
"407": {
"id": 407,
"type": 5,
"typeName": "tuisonglibao_name_1",
"num": [
63
],
"payId": [
"lv66"
"lv63",
"lv63_1"
],
"time": 3600,
"displayCD": 3600,
"scale": 2000
"scale": 3000
},
"16": {
"id": 16,
"408": {
"id": 408,
"type": 5,
"typeName": "tuisonglibao_name_1",
"num": [
66
],
"payId": [
"lv69"
"lv66",
"lv66_1"
],
"time": 3600,
"displayCD": 3600,
"scale": 1800
"scale": 3000
},
"17": {
"id": 17,
"409": {
"id": 409,
"type": 5,
"typeName": "tuisonglibao_name_1",
"num": [
68
69
],
"payId": [
"lv72"
"lv69",
"lv69_1"
],
"time": 3600,
"displayCD": 3600,
"scale": 1800
"scale": 3000
},
"18": {
"id": 18,
"410": {
"id": 410,
"type": 5,
"typeName": "tuisonglibao_name_1",
"num": [
70
73
],
"payId": [
"lv75"
"lv73_1",
"lv73_2"
],
"time": 3600,
"displayCD": 3600,
"scale": 1800
"scale": 3000
},
"411": {
"id": 411,
"type": 5,
"typeName": "tuisonglibao_name_1",
"num": [
82
],
"payId": [
"lv82_1",
"lv82_2"
],
"time": 3600,
"displayCD": 3600,
"scale": 3000
}
}

View File

@ -1032,7 +1032,7 @@ type gc_playerLv = k_v<{
'tujianlv': number
}>;
type gc_playerModel = k_v<k_v<{
type gc_playerModel = k_v<{
/** 类型 */
'type': number
/** id */
@ -1057,7 +1057,7 @@ type gc_playerModel = k_v<k_v<{
'mwSpine': string
/** 战斗半身像 */
'fireHead': string
}>>;
}>;
type gc_pmd = { "get_hero_star5_pmd": string, "glkb_pmd": string, "jinjie_peijian": string, "guild_pmd": string, "tlsd_pmd": string, "hbzb_pmd1": string, "hbzb_pmd2": string, "hbzb_pmd3": string, [x: string]: any }

View File

@ -2193,6 +2193,29 @@ export const serviceProto: ServiceProto<ServiceType> = {
},
{
"id": 5,
"name": "upModel",
"type": {
"type": "Interface",
"properties": [
{
"id": 0,
"name": "id",
"type": {
"type": "String"
}
},
{
"id": 1,
"name": "time",
"type": {
"type": "Number"
}
}
]
}
},
{
"id": 6,
"name": "model",
"type": {
"type": "Interface",
@ -2221,14 +2244,14 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 6,
"id": 7,
"name": "renown",
"type": {
"type": "Number"
}
},
{
"id": 7,
"id": 8,
"name": "wxcLv",
"type": {
"type": "Interface",
@ -2254,14 +2277,14 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 8,
"id": 9,
"name": "mapId",
"type": {
"type": "Number"
}
},
{
"id": 9,
"id": 10,
"name": "shoucangping",
"type": {
"type": "Interface",
@ -2274,14 +2297,14 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 10,
"id": 11,
"name": "useTujianLvPoint",
"type": {
"type": "Number"
}
},
{
"id": 11,
"id": 12,
"name": "skills",
"type": {
"type": "Interface",
@ -2294,7 +2317,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 12,
"id": 13,
"name": "fightSkills",
"type": {
"type": "Interface",
@ -2307,7 +2330,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 13,
"id": 14,
"name": "heroPos",
"type": {
"type": "Interface",
@ -2320,21 +2343,21 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 14,
"id": 15,
"name": "ghId",
"type": {
"type": "String"
}
},
{
"id": 15,
"id": 16,
"name": "ghName",
"type": {
"type": "String"
}
},
{
"id": 16,
"id": 17,
"name": "ghLevel",
"type": {
"type": "Reference",
@ -2342,7 +2365,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 17,
"id": 18,
"name": "ghwz",
"type": {
"type": "Interface",
@ -2356,7 +2379,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 18,
"id": 19,
"name": "ghExitTime",
"type": {
"type": "Number"
@ -2364,7 +2387,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 19,
"id": 20,
"name": "loginTime",
"type": {
"type": "Number"
@ -2372,7 +2395,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 20,
"id": 21,
"name": "logoutTime",
"type": {
"type": "Number"
@ -2380,7 +2403,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 21,
"id": 22,
"name": "cTime",
"type": {
"type": "Number"
@ -2388,7 +2411,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 22,
"id": 23,
"name": "loginDays",
"type": {
"type": "Number"
@ -2396,7 +2419,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 23,
"id": 24,
"name": "serverName",
"type": {
"type": "String"
@ -2404,7 +2427,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 24,
"id": 25,
"name": "sid",
"type": {
"type": "Number"
@ -2412,7 +2435,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 25,
"id": 26,
"name": "onlineTime",
"type": {
"type": "Number"
@ -2420,7 +2443,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 26,
"id": 27,
"name": "newonlinetime",
"type": {
"type": "Number"
@ -2428,7 +2451,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 27,
"id": 28,
"name": "isNpc",
"type": {
"type": "Boolean"
@ -2436,7 +2459,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 28,
"id": 29,
"name": "matrix",
"type": {
"type": "Interface",
@ -2450,7 +2473,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 29,
"id": 30,
"name": "matrixPos",
"type": {
"type": "Interface",
@ -2470,7 +2493,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 30,
"id": 31,
"name": "selectMatrix",
"type": {
"type": "String"
@ -2478,7 +2501,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 31,
"id": 32,
"name": "fightHeros",
"type": {
"type": "Array",
@ -2489,7 +2512,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 32,
"id": 33,
"name": "helpHeros",
"type": {
"type": "Array",
@ -2566,7 +2589,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 33,
"id": 34,
"name": "changeNameNum",
"type": {
"type": "Number"
@ -2574,7 +2597,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 34,
"id": 35,
"name": "peijianUnlock",
"type": {
"type": "Interface",
@ -2588,7 +2611,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 35,
"id": 36,
"name": "headFrames",
"type": {
"type": "Interface",
@ -2602,7 +2625,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 36,
"id": 37,
"name": "chatFrames",
"type": {
"type": "Interface",

View File

@ -0,0 +1,35 @@
import {ctor} from "./global";
import {initMongoDB} from "./setMongodb";
async function start() {
await initMongoDB()
// 刷新活动配置
console.log(`修复玩家model数据开始...`);
await G.mongodb.collection("user").updateMany({},{
$set:{
upModel:{id: "1", time: -1},
model: {
'1': {id: "1", time: -1},
'2': {id: "2", time: -1}
}
}
})
console.log(`修复玩家model数据完成...`);
}
ctor();
start().then(() => {
let s = 0;
setInterval(() => {
s += 1;
console.log(new Date().format("MM-dd hh:mm:ss"));
if (s >= 3) process.exit(1);
}, 1000)
console.log("逻辑执行完成...等待退出!!!");
});

121
src/path_20231221.ts Normal file
View File

@ -0,0 +1,121 @@
import {ctor} from "./global";
import {initMongoDB} from "./setMongodb";
import {yangchengmubiao} from "./shared/protocols/event/yangchengmubiao/PtlOpen";
async function start() {
await initMongoDB()
const hdid = [100, 101];
const task = {
'2001': {
'prize': [{'a': 'item', 't': '4', 'n': 5}, {'a': 'item', 't': '626', 'n': 10}],
'tujing': '',
'title': 'intr_yczm_day_des_2',
'type': 2,
'pval': 50,
'cond': [],
'stype': 118
},
'2002': {
'prize': [{'a': 'item', 't': '4', 'n': 5}, {'a': 'item', 't': '626', 'n': 10}],
'tujing': '',
'title': 'intr_yczm_day_des_2',
'type': 2,
'pval': 100,
'cond': [],
'stype': 118
},
'2003': {
'prize': [{'a': 'item', 't': '4', 'n': 10}, {'a': 'item', 't': '626', 'n': 20}],
'tujing': '',
'title': 'intr_yczm_day_des_2',
'type': 2,
'pval': 200,
'cond': [],
'stype': 118
},
'2004': {
'prize': [{'a': 'item', 't': '4', 'n': 10}, {'a': 'item', 't': '600', 'n': 20}],
'tujing': '',
'title': 'intr_yczm_day_des_2',
'type': 2,
'pval': 250,
'cond': [],
'stype': 118
},
'2005': {
'prize': [{'a': 'item', 't': '4', 'n': 10}, {'a': 'item', 't': '600', 'n': 20}],
'tujing': '',
'title': 'intr_yczm_day_des_2',
'type': 2,
'pval': 300,
'cond': [],
'stype': 118
},
'2006': {
'prize': [{'a': 'item', 't': '4', 'n': 10}, {'a': 'item', 't': '619', 'n': 1}],
'tujing': '',
'title': 'intr_yczm_day_des_2',
'type': 2,
'pval': 400,
'cond': [],
'stype': 118
},
'2007': {
'prize': [{'a': 'item', 't': '4', 'n': 10}, {'a': 'item', 't': '619', 'n': 1}],
'tujing': '',
'title': 'intr_yczm_day_des_2',
'type': 2,
'pval': 500,
'cond': [],
'stype': 118
}
};
// 中间插入了2004 所以之前的任务id一次往后顺延
const change = {2004: 2005, 2005: 2006, 2006: 2007};
// 刷新活动配置
await G.mongodb.collection("hdinfo").updateMany({hdid: {$in: hdid}}, {
"$set": {'data.tasklist.2': task}
})
let datas: yangchengmubiao[] = [];
// 刷新玩家领取记录
datas = datas.concat(await G.mongodb.cEvent(`yangchengmubiao${hdid[0]}`).find(
{type: `yangchengmubiao${hdid[0]}`}
).toArray());
datas = datas.concat(await G.mongodb.cEvent(`yangchengmubiao${hdid[1]}`).find(
{type: `yangchengmubiao${hdid[1]}`}
).toArray());
for (let i = 0; i < datas.length; i++) {
let data = datas[i];
let finished = data.finishid["2"].map((task) => {
return change[task] ? change[task] : task
});
let maxtaskval = Math.max(...Object.values(data.taskval));
let taskval = {};
for (let taskid in task) {
taskval[taskid] = maxtaskval;
}
await G.mongodb.collection("event").updateOne(
{uid: data.uid, type: data.type}, {$set: {taskval: taskval, "finishid.2": finished}}
)
console.log(`修复玩家${data.uid}人才计划数据完成...`);
}
}
ctor();
start().then(() => {
let s = 0;
setInterval(() => {
s += 1;
console.log(new Date().format("MM-dd hh:mm:ss"));
if (s >= 3) process.exit(1);
}, 1000)
console.log("逻辑执行完成...等待退出!!!");
});

View File

@ -54,7 +54,6 @@ export class HuoDongFun {
if (htype != 0) _where["htype"] = htype
let _res = await this.catAllHD(_where)
let result = []
for (let index = 0; index < _res.length; index++) {
const element = _res[index];

View File

@ -10,6 +10,7 @@ import {call, PlayerFun} from './player';
import {number} from "mathjs";
import {getGud} from './gud';
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);
@ -177,8 +178,13 @@ export class PayFun {
if (payed) {
console.log(uid, payId, payArgs, orderNo);
console.log('订单号已存在');
return;
}
}
/**
*
* emit事件
*/
let conf: any = await this.getConf(payId, payArgs);
@ -230,16 +236,21 @@ export class PayFun {
let conf = await zmlbGetConf(call, {payId})
prize.push(...conf.prize)
}
//圣诞节活动充值
try{
await Christmasfun.payChristmas(payId, call);
}catch (e) {
console.log("Christmasfun.payChristmas Error",e);
}
let isReplaceConf = await this.checkBuysAfterPay(uid, payId, conf, payArgs, player)
if (isReplaceConf) {
let prizePayId = `zuanshi_${conf.money}`
payArgs.toPrizePayId = prizePayId
conf = this.replacePrizeToChongzhi(prizePayId, conf)
prize = [...conf.prize]
prize = conf.prize;
}
await PlayerFun.sendPrize(call, prize);
await PlayerFun.addAttr(call, conf.payExp);
if (payId == 'G123SendGift') {
@ -285,7 +296,7 @@ export class PayFun {
* @param payId
* @param conf
*/
static async replacePrizeToChongzhi(payId, conf) {
static replacePrizeToChongzhi(payId, conf) {
return {
id: payId,
money: conf.money,

View File

@ -169,6 +169,15 @@ export class PlayerFun {
change[atn.t] = this.fixAttrLteZero(atn.t, await this.getAtnNum(call, atn) + atn.n);
if (atn.t == 'rmbmoney') {
this.changeAttrLog(call.conn.uid, change[atn.t], atn, call.conn.gud.rmbmoney)
// 扣除钻石时
if (atn.n < 0) {
// 监听任务消耗任务
G.emit("Class_task_156", 'Class_task_156', call, -atn.n, 0);
}
}
// 增加vip经验的任务监听
if (atn.t == "payExp" && 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.upAttr(call, {...atn, n: change[atn.t]}));

View File

@ -22,7 +22,7 @@ export class CrossEmailPull extends Scheduler {
G.clientCross.callApi("email/GetCrossEmail", {server_id: G.config.serverId + ""}).then((res) => {
if (!res.isSucc) return;
res.res.emails.forEach(async (email) => {
let _prize = email?.prizeData?.prize || [];
let _prize = R.clone(email?.prizeData?.prize) || [];
if (email?.prizeData) delete email.prizeData;
email["prize"] = _prize;

View File

@ -788,7 +788,7 @@ export class TaskAllEmitFun {
let _val = node.call.req.num;
G.emit("Class_task_136", 'Class_task_136', node.call, _val, 0);
// todo 统计藏品修复胶此处只是临时处理防止线上任务数据出错正确做法是统计修复胶的消耗走136任务的统计
G.emit("Class_task_134", 'Class_task_134', node.call, _val, 0, {});
G.emit("Class_task_134", 'Class_task_134', node.call, _val, 0, []);
}
if (node.call.service.name == 'peijian/LvUp' && node.return.isSucc) {

View File

@ -390,7 +390,10 @@ export module manager {
async initVal(call: ApiCall, con) {
const data = await TanXianFun.getData(call);
return data.useFastGuaJiNum || 0
if (data?.resetTime > PublicShared.getToDayZeroTime()) {
return data.useFastGuaJiNum || 0
}
return 0
}
}
@ -401,7 +404,10 @@ export module manager {
async initVal(call: ApiCall, con) {
let data = await JJCFun.getData(call);
return data?.useFightNum || 0
if (data?.resetTime >= PublicShared.getToDayZeroTime()) {
return data?.useFightNum || 0
}
return 0
}
}
@ -418,7 +424,10 @@ export module manager {
async initVal(call: ApiCall, con) {
let myData = await G.mongodb.cPlayerInfo('meirishilian').findOne({uid: call.uid, type: 'meirishilian'});
return R.compose(R.sum(), R.map(i => i[0].useFightNum), R.values())(myData.data.numInfo) || 0
if (myData.data.refreshTime > PublicShared.getToDayZeroTime()) {
return R.compose(R.sum(), R.map(i => i[0].useFightNum), R.values())(myData.data.numInfo) || 0
}
return 0
}
}
@ -435,7 +444,10 @@ export module manager {
async initVal(call: ApiCall, con) {
let myData = await G.mongodb.cPlayerInfo('qjzzd').findOne({uid: call.uid, type: 'qjzzd'});
return myData.useFightNum || 0
if (myData?.refreFightTime > PublicShared.getToDayZeroTime()) {
return myData?.useFightNum || 0
}
return 0
}
}
@ -491,7 +503,10 @@ export module manager {
async initVal(call: ApiCall, con) {
let data: Partial<CollectionWanted> = await G.mongodb.collection('wanted').findOne({uid: call.uid}) || {};
return data.toDayUseNum || 0
if (data.refreshTime > PublicShared.getToDayZeroTime()) {
return data.toDayUseNum || 0
}
return 0
}
}
@ -766,24 +781,44 @@ export module manager {
return call.conn.gud?.helpHeros?.length || 0;
}
}
// 第56个任务 完成圣诞活动小游戏
export class Class_task_154 extends BaseClass {
stype = 154
isinc = 1
async initVal(call: ApiCall, con) {
return 1;
return 0;
}
}
// 第57个任务 领取每日任务最终宝箱
export class Class_task_155 extends BaseClass {
stype = 155
isinc = 0
async initVal(call: ApiCall, con) {
return 0;
}
}
// 第58个任务 每日钻石消耗
export class Class_task_156 extends BaseClass {
stype = 156
isinc = 1
async initVal(call: ApiCall, con) {
return 1;
}
}
// 第59个任务 获得vip经验
export class Class_task_157 extends BaseClass {
stype = 157
isinc = 1
async initVal(call: ApiCall, con) {
return 0;
}
}
}

View File

@ -1,14 +1,14 @@
import CryptoJS from 'crypto-js';
import { ObjectId, OptionalId, WithId } from 'mongodb';
import { BaseConnection } from 'tsrpc';
import { Wjjl } from '../module/collection_wjjl';
import { ServiceType } from '../shared/protocols/serviceProto';
import { ReqLogin, ResLogin, playerAppend, playerAttr, playerInfo } from '../shared/protocols/user/PtlLogin';
import { player } from '../shared/protocols/user/type';
import { PublicShared } from '../shared/public/public';
import { PlayerFun } from './player';
import { ZhanLingTasks } from './zhanling';
import { getGud, setGud } from './gud';
import {ObjectId, OptionalId, WithId} from 'mongodb';
import {BaseConnection} from 'tsrpc';
import {Wjjl} from '../module/collection_wjjl';
import {ServiceType} from '../shared/protocols/serviceProto';
import {ReqLogin, ResLogin, playerAppend, playerAttr, playerInfo} from '../shared/protocols/user/PtlLogin';
import {player} from '../shared/protocols/user/type';
import {PublicShared} from '../shared/public/public';
import {PlayerFun} from './player';
import {ZhanLingTasks} from './zhanling';
import {getGud, setGud} from './gud';
export const defaultUserInfo: playerInfo = {
lv: 1,
@ -30,14 +30,13 @@ export const defaultUserAttr: playerAttr = {
export const defaultUserAppend: playerAppend = {
name: '',
tujianLv: 0,
head: { id: "1", time: -1 },
headFrame: { id: "1", time: -1 },
chatFrame: { id: "1", time: -1 },
head: {id: "1", time: -1},
headFrame: {id: "1", time: -1},
chatFrame: {id: "1", time: -1},
upModel: {id: "1", time: -1},
model: {
1: { id: "1", time: -1 },
2: { id: "1", time: -1 },
3: { id: "1", time: -1 },
4: { id: "1", time: -1 },
1: {id: "1", time: -1},
2: {id: "2", time: -1}
},
renown: 0,
wxcLv: {
@ -60,12 +59,12 @@ export const defaultUserAppend: playerAppend = {
ghId: '',
ghName: '',
ghLevel: 0,
ghwz: { 1: 0, 2: 0, 3: 0, 4: 0 }
ghwz: {1: 0, 2: 0, 3: 0, 4: 0}
};
export class UserFun {
static create(bUid: string) {
let { bindUid, ...userInfo } = defaultUserInfo;
let {bindUid, ...userInfo} = defaultUserInfo;
return {
bindUid: bUid,
@ -73,6 +72,7 @@ export class UserFun {
...defaultUserAttr
};
}
static async check(gud: ResLogin['gud'], req: ReqLogin) {
let obj: k_v<any> = {};
let add: k_v<any> = {};
@ -126,14 +126,14 @@ export class UserFun {
if (h_ids.length < 1) {
gud.fightHeros = [];
} else {
let dHeros = await G.mongodb.collection('hero').find({ _id: { $in: h_ids.map(id => G.mongodb.conversionId(id)) } }).toArray();
let dHeros = await G.mongodb.collection('hero').find({_id: {$in: h_ids.map(id => G.mongodb.conversionId(id))}}).toArray();
gud.fightHeros = dHeros.map(h => h.heroId.toString());
}
add.fightHeros = gud.fightHeros;
}
if (!gud.matrixPos) {
gud.matrixPos = Object.fromEntries(Object.keys(G.gc.fightPlan).map(pos => [pos, { ...gud.heroPos }]));
gud.matrixPos = Object.fromEntries(Object.keys(G.gc.fightPlan).map(pos => [pos, {...gud.heroPos}]));
add.matrixPos = gud.matrixPos;
}
@ -197,7 +197,7 @@ export class UserFun {
add.loginTime = G.time;
if (Object.keys(add).length > 0) {
G.mongodb.collection('user').updateOne({ bindUid: gud.bindUid,sid:gud.sid }, {
G.mongodb.collection('user').updateOne({bindUid: gud.bindUid, sid: gud.sid}, {
$set: {
...add
}
@ -211,24 +211,25 @@ export class UserFun {
return obj;
}
// 检查空数据并修复
static async checkUidOrName() {
let users = await G.mongodb.collection('user').findOne({$or: [{uid: {$in:['', null]}},{name: {$in: ['', null]}}]})
if(users) {
let users = await G.mongodb.collection('user').findOne({$or: [{uid: {$in: ['', null]}}, {name: {$in: ['', null]}}]})
if (users) {
let {bindUid, sid, _id} = users
let uid = users.uid || (sid + '_' + _id)
// 随机创建name
let b64 = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(bindUid + sid));
let name = users.name || `temp_${b64}`.toLocaleLowerCase();
await G.mongodb.collection('user').updateOne({ bindUid, sid }, {
await G.mongodb.collection('user').updateOne({bindUid, sid}, {
$set: {
uid, name
}
});
}
return
return
}
/**创建账号数据 */
static async createUser(client: BaseConnection<ServiceType>, bindUid: string, sid: number): Promise<WithId<OptionalId<ResLogin['gud']>>> {
// 开启事务
@ -258,14 +259,17 @@ export class UserFun {
// session.endSession() // 结束事务
return gud as WithId<OptionalId<ResLogin['gud']>>;
}
/**获取玩家附带的buff加成 */
static getOtherBuff(gud: ResLogin['gud']) {
return gud;
}
static async getGud(uid: string) {
//return await G.redis.get('user', uid);
return await getGud(uid);
}
/**激活头像框 */
static async activeHeadFrame(uid: string, k: string, v: number) {
let gud: player;
@ -312,11 +316,12 @@ export class UserFun {
}
if (change) {
PlayerFun.changeAttr(uid, { headFrames: gud.headFrames });
G.server.sendMsgByUid(uid, 'msg_s2c/PlayerChange', { headFrames: gud.headFrames });
PlayerFun.changeAttr(uid, {headFrames: gud.headFrames});
G.server.sendMsgByUid(uid, 'msg_s2c/PlayerChange', {headFrames: gud.headFrames});
G.server.uid_connections[uid]?.refreshPower();
}
}
/**激活聊天框 */
static async activeChatFrame(uid: string, k: string, v: number) {
let gud: player;
@ -363,8 +368,60 @@ export class UserFun {
}
if (change) {
PlayerFun.changeAttr(uid, { chatFrames: gud.chatFrames });
G.server.sendMsgByUid(uid, 'msg_s2c/PlayerChange', { chatFrames: gud.chatFrames });
PlayerFun.changeAttr(uid, {chatFrames: gud.chatFrames});
G.server.sendMsgByUid(uid, 'msg_s2c/PlayerChange', {chatFrames: gud.chatFrames});
G.server.uid_connections[uid]?.refreshPower();
}
}
/**激活造型 */
static async activeModel(uid: string, k: string, v: number) {
let gud: player;
// if (G.server.uid_connections[uid]) {
// gud = G.server.uid_connections[uid].gud;
// } else {
// gud = await G.redis.get('user', uid);
// }
gud = await getGud(uid);
let change = false;
let model = G.gc.playerModel;
let checks = Object.values(model).filter(v => v.cond[0] == k);
if (checks.length > 0) {
checks.forEach(conf => {
let val = v;
if (k == 'wxcLv') val = gud.wxcLv.lv;
else if (gud[k] != undefined) val = gud[k];
if (k == 'jjc_rank' && !gud.model[conf.id] && val <= conf.cond[1]) {
gud.model[conf.id] = {id: conf.id + '', time: -1};
change = true;
} else if (!gud.model[conf.id] && val >= conf.cond[1]) {
gud.model[conf.id] = {id: conf.id + '', time: -1};
change = true;
}
});
} else {
let conf = model[k];
if (conf?.cond?.[0] == 'time') {
let val = conf.cond[1];
if (val == -1) {
change = true;
gud.model[conf.id] = {id: conf.id + '', time: -1};
} else if (gud.model[conf.id].time < G.time) {
change = true;
gud.model[conf.id] = {id: conf.id + '', time: G.time + val * v};
} else {
change = true;
gud.model[conf.id] = {id: conf.id + '', time: gud.model[conf.id].time += val * v}
}
}
}
if (change) {
PlayerFun.changeAttr(uid, {model: gud.model});
G.server.sendMsgByUid(uid, 'msg_s2c/PlayerChange', {model: gud.model});
G.server.uid_connections[uid]?.refreshPower();
}
}

View File

@ -37,7 +37,7 @@ export function getFightDPS(fromRole: FightObj, toRole: FightObj, extData: DPS_E
*
0.9-1.11 -1010
*/
if (fromRole.isDead || toRole.isDead) return { num: 0, dps: 0, miss: false, baoji: false, fromRole: fromRole, toRole: toRole };
let miss = false, baoji = false, dps = 0;
let fromRoleLv = fromRole.getData('lv'), toRoleLv = toRole.getData('lv');
@ -182,6 +182,18 @@ export function getBuffDPS(toRole: FightObj, fromRole: FightObj, extData: { xiao
// todo 主角技能还没有限制百分比的最大伤害以下判断修复技能buff没有伤害
if (fromRole.getData('pos') != 7){
dps = dps > maxDps ? maxDps : dps;
} else {
// 主角技能伤害最大值: avg(所有上场干部的maxDps) * 2
let sumHeroMaxDps = 0, heroCount = 0;
const fromRoleSide = fromRole.getData('side');
fromRole.fightControl.fightRolesArr.forEach(role => {
if (role.getData('pos') < 7 && role.getData('side') === fromRoleSide) {
sumHeroMaxDps += role.getData('maxdps');
heroCount++;
}
});
maxDps = sumHeroMaxDps / heroCount * 2;
dps = dps > maxDps ? maxDps : dps;
}
return { num: -dps, dps: -dps, miss: miss, baoji: baoji, fromRole: fromRole, toRole: toRole };

View File

@ -3954,6 +3954,29 @@ export const serviceProto: ServiceProto<ServiceType> = {
},
{
"id": 5,
"name": "upModel",
"type": {
"type": "Interface",
"properties": [
{
"id": 0,
"name": "id",
"type": {
"type": "String"
}
},
{
"id": 1,
"name": "time",
"type": {
"type": "Number"
}
}
]
}
},
{
"id": 6,
"name": "model",
"type": {
"type": "Interface",
@ -3982,14 +4005,14 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 6,
"id": 7,
"name": "renown",
"type": {
"type": "Number"
}
},
{
"id": 7,
"id": 8,
"name": "wxcLv",
"type": {
"type": "Interface",
@ -4015,14 +4038,14 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 8,
"id": 9,
"name": "mapId",
"type": {
"type": "Number"
}
},
{
"id": 9,
"id": 10,
"name": "shoucangping",
"type": {
"type": "Interface",
@ -4035,14 +4058,14 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 10,
"id": 11,
"name": "useTujianLvPoint",
"type": {
"type": "Number"
}
},
{
"id": 11,
"id": 12,
"name": "skills",
"type": {
"type": "Interface",
@ -4055,7 +4078,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 12,
"id": 13,
"name": "fightSkills",
"type": {
"type": "Interface",
@ -4068,7 +4091,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 13,
"id": 14,
"name": "heroPos",
"type": {
"type": "Interface",
@ -4081,21 +4104,21 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 14,
"id": 15,
"name": "ghId",
"type": {
"type": "String"
}
},
{
"id": 15,
"id": 16,
"name": "ghName",
"type": {
"type": "String"
}
},
{
"id": 16,
"id": 17,
"name": "ghLevel",
"type": {
"type": "Reference",
@ -4103,7 +4126,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 17,
"id": 18,
"name": "ghwz",
"type": {
"type": "Interface",
@ -4117,7 +4140,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 18,
"id": 19,
"name": "ghExitTime",
"type": {
"type": "Number"
@ -4125,7 +4148,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 19,
"id": 20,
"name": "loginTime",
"type": {
"type": "Number"
@ -4133,7 +4156,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 20,
"id": 21,
"name": "logoutTime",
"type": {
"type": "Number"
@ -4141,7 +4164,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 21,
"id": 22,
"name": "cTime",
"type": {
"type": "Number"
@ -4149,7 +4172,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 22,
"id": 23,
"name": "loginDays",
"type": {
"type": "Number"
@ -4157,7 +4180,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 23,
"id": 24,
"name": "serverName",
"type": {
"type": "String"
@ -4165,7 +4188,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 24,
"id": 25,
"name": "sid",
"type": {
"type": "Number"
@ -4173,7 +4196,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 25,
"id": 26,
"name": "onlineTime",
"type": {
"type": "Number"
@ -4181,7 +4204,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 26,
"id": 27,
"name": "newonlinetime",
"type": {
"type": "Number"
@ -4189,7 +4212,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 27,
"id": 28,
"name": "isNpc",
"type": {
"type": "Boolean"
@ -4197,7 +4220,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 28,
"id": 29,
"name": "matrix",
"type": {
"type": "Interface",
@ -4211,7 +4234,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 29,
"id": 30,
"name": "matrixPos",
"type": {
"type": "Interface",
@ -4231,7 +4254,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 30,
"id": 31,
"name": "selectMatrix",
"type": {
"type": "String"
@ -4239,7 +4262,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 31,
"id": 32,
"name": "fightHeros",
"type": {
"type": "Array",
@ -4250,7 +4273,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 32,
"id": 33,
"name": "helpHeros",
"type": {
"type": "Array",
@ -4327,7 +4350,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 33,
"id": 34,
"name": "changeNameNum",
"type": {
"type": "Number"
@ -4335,7 +4358,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 34,
"id": 35,
"name": "peijianUnlock",
"type": {
"type": "Interface",
@ -4349,7 +4372,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 35,
"id": 36,
"name": "headFrames",
"type": {
"type": "Interface",
@ -4363,7 +4386,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 36,
"id": 37,
"name": "chatFrames",
"type": {
"type": "Interface",
@ -5175,6 +5198,29 @@ export const serviceProto: ServiceProto<ServiceType> = {
},
{
"id": 5,
"name": "upModel",
"type": {
"type": "Interface",
"properties": [
{
"id": 0,
"name": "id",
"type": {
"type": "String"
}
},
{
"id": 1,
"name": "time",
"type": {
"type": "Number"
}
}
]
}
},
{
"id": 6,
"name": "model",
"type": {
"type": "Interface",
@ -5203,14 +5249,14 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 6,
"id": 7,
"name": "renown",
"type": {
"type": "Number"
}
},
{
"id": 7,
"id": 8,
"name": "wxcLv",
"type": {
"type": "Interface",
@ -5236,14 +5282,14 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 8,
"id": 9,
"name": "mapId",
"type": {
"type": "Number"
}
},
{
"id": 9,
"id": 10,
"name": "shoucangping",
"type": {
"type": "Interface",
@ -5256,14 +5302,14 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 10,
"id": 11,
"name": "useTujianLvPoint",
"type": {
"type": "Number"
}
},
{
"id": 11,
"id": 12,
"name": "skills",
"type": {
"type": "Interface",
@ -5276,7 +5322,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 12,
"id": 13,
"name": "fightSkills",
"type": {
"type": "Interface",
@ -5289,7 +5335,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 13,
"id": 14,
"name": "heroPos",
"type": {
"type": "Interface",
@ -5302,21 +5348,21 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 14,
"id": 15,
"name": "ghId",
"type": {
"type": "String"
}
},
{
"id": 15,
"id": 16,
"name": "ghName",
"type": {
"type": "String"
}
},
{
"id": 16,
"id": 17,
"name": "ghLevel",
"type": {
"type": "Reference",
@ -5324,7 +5370,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 17,
"id": 18,
"name": "ghwz",
"type": {
"type": "Interface",
@ -5338,7 +5384,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 18,
"id": 19,
"name": "ghExitTime",
"type": {
"type": "Number"
@ -5346,7 +5392,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 19,
"id": 20,
"name": "loginTime",
"type": {
"type": "Number"
@ -5354,7 +5400,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 20,
"id": 21,
"name": "logoutTime",
"type": {
"type": "Number"
@ -5362,7 +5408,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 21,
"id": 22,
"name": "cTime",
"type": {
"type": "Number"
@ -5370,7 +5416,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 22,
"id": 23,
"name": "loginDays",
"type": {
"type": "Number"
@ -5378,7 +5424,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 23,
"id": 24,
"name": "serverName",
"type": {
"type": "String"
@ -5386,7 +5432,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 24,
"id": 25,
"name": "sid",
"type": {
"type": "Number"
@ -5394,7 +5440,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 25,
"id": 26,
"name": "onlineTime",
"type": {
"type": "Number"
@ -5402,7 +5448,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 26,
"id": 27,
"name": "newonlinetime",
"type": {
"type": "Number"
@ -5410,7 +5456,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 27,
"id": 28,
"name": "isNpc",
"type": {
"type": "Boolean"
@ -5418,7 +5464,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 28,
"id": 29,
"name": "matrix",
"type": {
"type": "Interface",
@ -5432,7 +5478,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 29,
"id": 30,
"name": "matrixPos",
"type": {
"type": "Interface",
@ -5452,7 +5498,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 30,
"id": 31,
"name": "selectMatrix",
"type": {
"type": "String"
@ -5460,7 +5506,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 31,
"id": 32,
"name": "fightHeros",
"type": {
"type": "Array",
@ -5471,7 +5517,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 32,
"id": 33,
"name": "helpHeros",
"type": {
"type": "Array",
@ -5548,7 +5594,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 33,
"id": 34,
"name": "changeNameNum",
"type": {
"type": "Number"
@ -5556,7 +5602,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 34,
"id": 35,
"name": "peijianUnlock",
"type": {
"type": "Interface",
@ -5570,7 +5616,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 35,
"id": 36,
"name": "headFrames",
"type": {
"type": "Interface",
@ -5584,7 +5630,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 36,
"id": 37,
"name": "chatFrames",
"type": {
"type": "Interface",
@ -22862,6 +22908,29 @@ export const serviceProto: ServiceProto<ServiceType> = {
},
{
"id": 5,
"name": "upModel",
"type": {
"type": "Interface",
"properties": [
{
"id": 0,
"name": "id",
"type": {
"type": "String"
}
},
{
"id": 1,
"name": "time",
"type": {
"type": "Number"
}
}
]
}
},
{
"id": 6,
"name": "model",
"type": {
"type": "Interface",
@ -22890,14 +22959,14 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 6,
"id": 7,
"name": "renown",
"type": {
"type": "Number"
}
},
{
"id": 7,
"id": 8,
"name": "wxcLv",
"type": {
"type": "Interface",
@ -22923,14 +22992,14 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 8,
"id": 9,
"name": "mapId",
"type": {
"type": "Number"
}
},
{
"id": 9,
"id": 10,
"name": "shoucangping",
"type": {
"type": "Interface",
@ -22943,14 +23012,14 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 10,
"id": 11,
"name": "useTujianLvPoint",
"type": {
"type": "Number"
}
},
{
"id": 11,
"id": 12,
"name": "skills",
"type": {
"type": "Interface",
@ -22963,7 +23032,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 12,
"id": 13,
"name": "fightSkills",
"type": {
"type": "Interface",
@ -22976,7 +23045,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 13,
"id": 14,
"name": "heroPos",
"type": {
"type": "Interface",
@ -22989,21 +23058,21 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 14,
"id": 15,
"name": "ghId",
"type": {
"type": "String"
}
},
{
"id": 15,
"id": 16,
"name": "ghName",
"type": {
"type": "String"
}
},
{
"id": 16,
"id": 17,
"name": "ghLevel",
"type": {
"type": "Reference",
@ -23011,7 +23080,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
}
},
{
"id": 17,
"id": 18,
"name": "ghwz",
"type": {
"type": "Interface",
@ -23025,7 +23094,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 18,
"id": 19,
"name": "ghExitTime",
"type": {
"type": "Number"
@ -23033,7 +23102,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 19,
"id": 20,
"name": "loginTime",
"type": {
"type": "Number"
@ -23041,7 +23110,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 20,
"id": 21,
"name": "logoutTime",
"type": {
"type": "Number"
@ -23049,7 +23118,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 21,
"id": 22,
"name": "cTime",
"type": {
"type": "Number"
@ -23057,7 +23126,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 22,
"id": 23,
"name": "loginDays",
"type": {
"type": "Number"
@ -23065,7 +23134,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 23,
"id": 24,
"name": "serverName",
"type": {
"type": "String"
@ -23073,7 +23142,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 24,
"id": 25,
"name": "sid",
"type": {
"type": "Number"
@ -23081,7 +23150,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 25,
"id": 26,
"name": "onlineTime",
"type": {
"type": "Number"
@ -23089,7 +23158,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 26,
"id": 27,
"name": "newonlinetime",
"type": {
"type": "Number"
@ -23097,7 +23166,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 27,
"id": 28,
"name": "isNpc",
"type": {
"type": "Boolean"
@ -23105,7 +23174,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 28,
"id": 29,
"name": "matrix",
"type": {
"type": "Interface",
@ -23119,7 +23188,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 29,
"id": 30,
"name": "matrixPos",
"type": {
"type": "Interface",
@ -23139,7 +23208,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 30,
"id": 31,
"name": "selectMatrix",
"type": {
"type": "String"
@ -23147,7 +23216,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 31,
"id": 32,
"name": "fightHeros",
"type": {
"type": "Array",
@ -23158,7 +23227,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 32,
"id": 33,
"name": "helpHeros",
"type": {
"type": "Array",
@ -23235,7 +23304,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 33,
"id": 34,
"name": "changeNameNum",
"type": {
"type": "Number"
@ -23243,7 +23312,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 34,
"id": 35,
"name": "peijianUnlock",
"type": {
"type": "Interface",
@ -23257,7 +23326,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 35,
"id": 36,
"name": "headFrames",
"type": {
"type": "Interface",
@ -23271,7 +23340,7 @@ export const serviceProto: ServiceProto<ServiceType> = {
"optional": true
},
{
"id": 36,
"id": 37,
"name": "chatFrames",
"type": {
"type": "Interface",

View File

@ -19,7 +19,7 @@ export type ResLogin = {
/**
*
*/
openDay:number;
openDay: number;
/**当前时间 */
curTime: number;
/**是否第一次登录 */
@ -94,6 +94,13 @@ export type playerAppend = {
};
/**名字 */
name: string;
/**正在使用的造型 */
upModel: {
/**id */
id: string,
/**到期时间戳 -1永久 */
time: number;
};
/**造型 */
model: {
[k: string]: {

View File

@ -70,6 +70,14 @@ export class HeroShared {
}
}
}
if (otherBuff.model) {
for (let [id, item] of Object.entries(otherBuff.model)) {
if (item.time == -1 || item.time > G.time) {
PublicShared.mergeProperty(buff, G.gc.playerModel[id].buff);
}
}
}
}
//计算装备属性

View File

@ -1,25 +1,42 @@
export class UserShared {
/**获取头像之类id */
static getInfoId(type: 'head' | 'headFrame' | 'chatFrame' | 'model', id: string, pos?: string) {
return Array.from(arguments).filter(s => s != '').join('_');
}
// todo active始终为空暂时获取对应的avtive解决打包上线的圣诞版本
// 后续要理清数据格式填入playerinfo的active包括user/infoOpen接口的返回
static getActive(fmtId, player, type, id?) {
switch (type) {
case 'head':
return {[fmtId]: player.head?.time}
case 'headFrame':
return {[fmtId]: player.headFrames[id]}
case 'chatFrame':
return {[fmtId]: player.chatFrames[id]}
case 'model':
return {[fmtId]: player.model?.[id]?.time}
}
return {}
}
/**
*
*
* @param id 使 UserShared.getInfo id
*/
static chechIsActive(fmtId: string, collection: Partial<{ lv: number, vip: number, lsyx: k_v<number>, active: k_v<number>; }>) {
static chechIsActive(fmtId: string, collection: Partial<{ lv: number, vip: number, lsyx: k_v<number>, model: k_v<any>, active: k_v<number>; }>) {
const [type, id, pos] = fmtId.split('_');
const [type, id] = fmtId.split('_');
const jsonName = 'player' + type.slice(0, 1).toLocaleUpperCase() + type.slice(1);
const json = G.gc[jsonName] as any;
const conf: _gcType['playerHead'][''] = pos ? json[pos][id] : json[id];
const conf: _gcType['playerHead'] = json[id];
if (conf.cond[0] == 'lv') return collection.lv >= conf.cond[1];
else if (conf.cond[0] == 'vip') return collection.vip >= conf.cond[1];
else if (conf.cond[0] == 'hero') return collection.lsyx[conf.cond[1]] > 0;
else if (conf.cond[0] == 'time') return collection.active[fmtId] == -1 || collection.active[fmtId] > G.time;
// else if (conf.cond[0] == 'time') return collection.active[fmtId] == -1 || collection.active[fmtId] > G.time;
else if (conf.cond[0] == 'time') return conf.cond[1] == -1 || collection.active?.[fmtId] > G.time;
else if (conf.cond[0] == 'model') return Object.values(collection.model).find(i => i.id == conf.cond[1]);
else return false;
}
}

1122
tsbufferIndex.js Normal file

File diff suppressed because it is too large Load Diff