Compare commits
198 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
724145f9c8 | ||
![]() |
a20b284731 | ||
![]() |
2a9ce52aa1 | ||
![]() |
6370e88116 | ||
![]() |
e30155ca54 | ||
![]() |
73537c3637 | ||
![]() |
9e4c1995b7 | ||
![]() |
12f768d887 | ||
![]() |
aca0019d90 | ||
![]() |
1060c5ccc7 | ||
![]() |
c52f9b4b9a | ||
![]() |
129103d061 | ||
![]() |
8fe4e99ddc | ||
286b10947d | |||
![]() |
a2e3fc1aa9 | ||
![]() |
e9fba7ed05 | ||
a46b8f671c | |||
945d406131 | |||
af03f2f6c5 | |||
![]() |
8780716d44 | ||
![]() |
fc1e2c9e1f | ||
![]() |
00ed252403 | ||
![]() |
4c4e1d20dc | ||
![]() |
6d184b20ab | ||
![]() |
dd9eeca150 | ||
![]() |
8718342e3b | ||
![]() |
b27f8e5c64 | ||
![]() |
c2f3d0649d | ||
![]() |
f79f341998 | ||
![]() |
1688e5b197 | ||
![]() |
e6e1153a49 | ||
![]() |
036abb80b4 | ||
![]() |
9d3dd2dbc9 | ||
![]() |
de40641464 | ||
![]() |
5a8d95307b | ||
![]() |
75e010bbc4 | ||
![]() |
cd8e1a44ba | ||
![]() |
b44f083637 | ||
![]() |
e4011067fd | ||
75be49d528 | |||
799c0a60d3 | |||
05a1ab6fb3 | |||
38aeaf3247 | |||
625220ca03 | |||
![]() |
b7c86e9769 | ||
![]() |
e4815b4246 | ||
![]() |
3e43065142 | ||
![]() |
d421f06edf | ||
46a333b87f | |||
![]() |
3a7d3cadf4 | ||
0947bc386e | |||
a8d0a87f72 | |||
74e0286250 | |||
![]() |
ac90f9db33 | ||
![]() |
9154278020 | ||
![]() |
52c24d4507 | ||
08a9dd335a | |||
![]() |
a494f2a3d8 | ||
![]() |
ba124d82c9 | ||
b23d311dbd | |||
69945c3964 | |||
![]() |
be0923c849 | ||
![]() |
a600998fd3 | ||
00804b9b49 | |||
b5a9f6f530 | |||
![]() |
5161035eae | ||
![]() |
42f80bde16 | ||
![]() |
d6bafb7704 | ||
![]() |
369e654772 | ||
![]() |
3d7644dce4 | ||
![]() |
561954de17 | ||
![]() |
86fbc457f8 | ||
![]() |
fd7b8d945d | ||
7d85f554f4 | |||
![]() |
6eb61ece9c | ||
![]() |
184bdd304e | ||
![]() |
8c86b05fe1 | ||
![]() |
c7ce70fcc0 | ||
![]() |
ac4432fea8 | ||
![]() |
847613db4a | ||
![]() |
8d35b1d74c | ||
![]() |
f1f792ad82 | ||
![]() |
a8051b9767 | ||
![]() |
13de3624dc | ||
![]() |
55aa5eac26 | ||
a7b3f4d49e | |||
2c3d53899e | |||
![]() |
325ed8745c | ||
45c5a195ed | |||
![]() |
6f7eab1701 | ||
8e9553386f | |||
c09c9dec89 | |||
![]() |
b80263ed16 | ||
![]() |
363787fb39 | ||
![]() |
0a94965e30 | ||
![]() |
206e87d64c | ||
![]() |
138ee2675c | ||
![]() |
8aab7b6322 | ||
![]() |
48cd24d309 | ||
![]() |
d30f62f6c5 | ||
![]() |
8b8e14a609 | ||
![]() |
1c18a5b7fd | ||
![]() |
950a048742 | ||
![]() |
273b1865c3 | ||
![]() |
14796bb06b | ||
72b215451b | |||
104a1edadc | |||
![]() |
7feff43ee6 | ||
![]() |
a26aa7dab3 | ||
![]() |
99ccf69f19 | ||
![]() |
700e0fe15d | ||
b83ff979cc | |||
![]() |
ca3e973afd | ||
![]() |
0932d3ee47 | ||
![]() |
452f5f3d14 | ||
![]() |
0a296d739a | ||
![]() |
4596fb537c | ||
d8a47e85b2 | |||
f802242b35 | |||
![]() |
c2ce055c73 | ||
![]() |
51ddb55637 | ||
f1963d2e53 | |||
0ddd611c59 | |||
![]() |
666b7e51c5 | ||
![]() |
0d736e4854 | ||
![]() |
b0a3c17927 | ||
![]() |
24cae9a4e9 | ||
![]() |
1c256ab58b | ||
![]() |
61afa26e45 | ||
![]() |
e9173290fa | ||
![]() |
149de2b908 | ||
![]() |
5d3508aa40 | ||
![]() |
0c26c6d5bb | ||
![]() |
0f3ad155ac | ||
![]() |
1ec21d71e0 | ||
![]() |
d91c413603 | ||
![]() |
e016e708c4 | ||
ccc6470f7b | |||
85dc5e02ff | |||
![]() |
63ce399c56 | ||
a9a5193efe | |||
e597f2969e | |||
![]() |
e469ed0b6a | ||
![]() |
ce3fd79126 | ||
![]() |
b354c61358 | ||
![]() |
35d51a3811 | ||
![]() |
29f7133f10 | ||
![]() |
2d62a387b6 | ||
![]() |
ffd8d50463 | ||
![]() |
f61b59123b | ||
7c3b5e985c | |||
![]() |
3c54ebe0c4 | ||
![]() |
8415d675c4 | ||
![]() |
96b71de06d | ||
![]() |
ef80c8b984 | ||
![]() |
8560986246 | ||
![]() |
9d82d08738 | ||
![]() |
86161fca85 | ||
fa25e745eb | |||
dcb83e9520 | |||
![]() |
bd4f128179 | ||
![]() |
a04394149d | ||
![]() |
3b3d61795e | ||
![]() |
da37b162d9 | ||
![]() |
8e1c5412d6 | ||
![]() |
b04ce950cd | ||
![]() |
8ec4a46837 | ||
![]() |
d7f0f22df7 | ||
![]() |
779709a32f | ||
![]() |
01f57b347f | ||
![]() |
ec40da9ad5 | ||
![]() |
28adc88ff0 | ||
![]() |
42601c29fd | ||
![]() |
a50b2624ac | ||
![]() |
65d306227b | ||
![]() |
38b2f9a99e | ||
![]() |
2e054daa65 | ||
![]() |
3e1c45aaf9 | ||
![]() |
f1dacd19b6 | ||
a5e726e811 | |||
8afa624f44 | |||
![]() |
6ec6de4d56 | ||
52ab7e9979 | |||
a1dbacd7fe | |||
![]() |
04533c80f4 | ||
![]() |
98a3927966 | ||
![]() |
eb73af1dd2 | ||
![]() |
1dd7bc2175 | ||
![]() |
ecc17a22a9 | ||
![]() |
826840455c | ||
![]() |
60d0e04e33 | ||
![]() |
6233a6672e | ||
![]() |
afd856af30 | ||
![]() |
698c7bd3f6 | ||
![]() |
7dd83e06ef | ||
![]() |
3c50fdbd01 | ||
![]() |
c65aea9ae2 | ||
![]() |
77e06ba769 |
@ -35,7 +35,7 @@ function dockerLogin() {
|
||||
const region = 'ap-northeast-1';
|
||||
const instanceId = 'cri-fe5eqsg73zl4vd4m';
|
||||
const version = '2018-12-01';
|
||||
const command = `aliyun cr GetAuthorizationToken --profile dev --region ${region} --InstanceId ${instanceId} --version ${version} --force`;
|
||||
const command = `aliyun cr GetAuthorizationToken --profile heijiao-dev --region ${region} --InstanceId ${instanceId} --version ${version} --force`;
|
||||
const output = execSync(command, { encoding: 'utf8' });
|
||||
const result = JSON.parse(output);
|
||||
const password = result.AuthorizationToken.replace(/"/g, '');
|
||||
|
@ -35,7 +35,7 @@ function dockerLogin() {
|
||||
const region = 'ap-northeast-1';
|
||||
const instanceId = 'cri-azy285s79zw3ti5v';
|
||||
const version = '2018-12-01';
|
||||
const command = `aliyun cr GetAuthorizationToken --profile prod --region ${region} --InstanceId ${instanceId} --version ${version} --force`;
|
||||
const command = `aliyun cr GetAuthorizationToken --profile heijiao-prod --region ${region} --InstanceId ${instanceId} --version ${version} --force`;
|
||||
const output = execSync(command, { encoding: 'utf8' });
|
||||
const result = JSON.parse(output);
|
||||
const password = result.AuthorizationToken.replace(/"/g, '');
|
||||
|
@ -17,7 +17,7 @@ export default async function (call: ApiCall<ReqGetUser, ResGetUser>) {
|
||||
arr.map(i=>{
|
||||
res[i.uid] = {
|
||||
data: i.data,
|
||||
jifen:i.jifen,
|
||||
jifen:i?.jifen||0,
|
||||
};
|
||||
});
|
||||
|
||||
|
@ -47,7 +47,8 @@ export default async function (call: ApiCall<ReqGetEnemy, ResGetEnemy>) {
|
||||
$and: [
|
||||
{"data.player.power": {$gte: r[0]}},
|
||||
{"data.player.power": {$lte: r[1]}},
|
||||
{uid: {$nin: blackUids}}
|
||||
{uid: {$nin: blackUids}},
|
||||
{"data.player.sid":user.data.player.sid}
|
||||
]
|
||||
}
|
||||
},
|
||||
|
@ -1,6 +1,4 @@
|
||||
import {ApiCall} from "tsrpc";
|
||||
import {EventFun} from '../public/event/event';
|
||||
import {PayFun} from '../public/pay';
|
||||
import {ReqSyncBtn, ResSyncBtn, syncBtnKeys} from "../shared/protocols/PtlSyncBtn";
|
||||
import {PublicShared} from '../shared/public/public';
|
||||
import {HuoDongFun} from "../public/huodongfun";
|
||||
@ -8,7 +6,6 @@ import {HuoDongFun} from "../public/huodongfun";
|
||||
const defaultKeys: syncBtnKeys[] = [
|
||||
'huobanzhaomu', 'yibaichou', 'shouchong',
|
||||
'dayjijin', 'dengjijijin', 'guanqiajijin', 'tianshujijin',
|
||||
'zhanling',
|
||||
'xianshilibao',
|
||||
'xianshizhaomu',
|
||||
'G123Gift',
|
||||
@ -65,39 +62,40 @@ export default async function (call: ApiCall<ReqSyncBtn, ResSyncBtn>) {
|
||||
break;
|
||||
case 'zhanling':
|
||||
//30天一轮循环,不管奖励。常驻活动
|
||||
if (!PublicShared.getEventIsOpen(G.gc.zhanling.eventOpen, call.conn.gud)) {
|
||||
data[key] = {active: false};
|
||||
} else {
|
||||
let zls = await G.mongodb.collection('scheduler').findOne({type: 'zhanling'});
|
||||
if (!data[key] || data[key].round != zls.round) {
|
||||
let lastRunTime = zls && zls.lastRunTime? zls.lastRunTime : G.time
|
||||
let round = zls && zls.lastRunTime? zls.round : 1
|
||||
data[key] = {active: true, sTime: lastRunTime, round: round};
|
||||
change[key] = data[key];
|
||||
// if (!PublicShared.getEventIsOpen(G.gc.zhanling.eventOpen, call.conn.gud)) {
|
||||
// data[key] = {active: false};
|
||||
// } else {
|
||||
// let zls = await G.mongodb.collection('scheduler').findOne({type: 'zhanling'});
|
||||
// if (!data[key] || data[key].round != (zls?.round || 0)) {
|
||||
// let lastRunTime = zls && zls.lastRunTime? zls.lastRunTime : G.time
|
||||
// let round = zls && zls.lastRunTime? zls.round : 1
|
||||
|
||||
PayFun.delPayLog(call.uid, {payId: G.gc.zhanling.payId, val: []});
|
||||
// data[key] = {active: true, sTime: lastRunTime, round: round};
|
||||
// change[key] = data[key];
|
||||
|
||||
G.mongodb.cEvent('zhanling').findOne({uid: call.uid, type: 'zhanling'}).then(data => {
|
||||
//新一轮战令 不管玩家多久没上线 只补发玩家上一轮没有领取的奖励
|
||||
data && EventFun.reissueZhanLingPrize(data, call.conn.gud);
|
||||
// PayFun.delPayLog(call.uid, {payId: G.gc.zhanling.payId, val: []});
|
||||
|
||||
G.mongodb.cEvent('zhanling').updateOne(
|
||||
{uid: call.uid, type: 'zhanling'},
|
||||
{
|
||||
$set: {
|
||||
lv: 1,
|
||||
exp: 0,
|
||||
rec: {},
|
||||
isPay: false,
|
||||
taskRec: [],
|
||||
refreshTime: G.time
|
||||
}
|
||||
},
|
||||
{upsert: true}
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
// G.mongodb.cEvent('zhanling').findOne({uid: call.uid, type: 'zhanling'}).then(data => {
|
||||
// //新一轮战令 不管玩家多久没上线 只补发玩家上一轮没有领取的奖励
|
||||
// data && EventFun.reissueZhanLingPrize(data, call.conn.gud);
|
||||
|
||||
// G.mongodb.cEvent('zhanling').updateOne(
|
||||
// {uid: call.uid, type: 'zhanling'},
|
||||
// {
|
||||
// $set: {
|
||||
// lv: 1,
|
||||
// exp: 0,
|
||||
// rec: {},
|
||||
// isPay: false,
|
||||
// taskRec: [],
|
||||
// refreshTime: G.time
|
||||
// }
|
||||
// },
|
||||
// {upsert: true}
|
||||
// );
|
||||
// });
|
||||
// }
|
||||
// }
|
||||
break;
|
||||
case 'xianshilibao':
|
||||
// 到时间消失
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { ApiCall, WsClientStatus } from "tsrpc";
|
||||
import { ActionLog } from '../../public/actionLog/actionLog';
|
||||
import { ChatFun } from '../../public/chat';
|
||||
import { ChatFun, getCrossChatGroupByOpenDay } from '../../public/chat';
|
||||
import { ReqSend, ResSend } from "../../shared/protocols/chat/PtlSend";
|
||||
import { chatMsgLog } from "../../shared/protocols/type"
|
||||
import { getGud } from "../../public/gud";
|
||||
@ -40,6 +40,8 @@ export default async function (call: ApiCall<ReqSend, ResSend>) {
|
||||
|
||||
if (sendData.type == 'cross' && G.clientCross?.status == WsClientStatus.Opened) {
|
||||
//如果是跨服的话,调用跨服API的这条协议
|
||||
sendData.otherData.group = getCrossChatGroupByOpenDay();
|
||||
|
||||
G.clientCross.sendMsg('msg_cross/CrossChat', sendData);
|
||||
call.succ({});
|
||||
return;
|
||||
|
@ -3,19 +3,56 @@ import { PlayerFun } from '../../public/player';
|
||||
import { ReqRec, ResRec } from "../../shared/protocols/conglinshoulie/PtlRec";
|
||||
import { HongDianChange } from "../hongdian/fun";
|
||||
import { addStar, clslDb } from './ApiOpen';
|
||||
import { EmailFun } from "../../public/email";
|
||||
|
||||
export default async function (call: ApiCall<ReqRec, ResRec>) {
|
||||
let conf = G.gc.clsl_com.fightWinPrize[call.req.index];
|
||||
if (!conf) return call.errorCode(-1);
|
||||
|
||||
let db = await clslDb().findOne({ uid: call.uid, type: 'clsl' });
|
||||
|
||||
let curStar = db?.allStar || 0;
|
||||
let danPrize = db?.danPrize || [];
|
||||
let curMaxStar = db?.curMaxStar || 0;
|
||||
|
||||
if ((db?.fightWinNum || 0) < conf.total || db?.recWinPrize?.includes(call.req.index)) return call.errorCode(-2);
|
||||
|
||||
await PlayerFun.sendPrize(call, conf.prize);
|
||||
|
||||
addStar(call, conf.star);
|
||||
let updata = { $push: { recWinPrize: call.req.index } };
|
||||
|
||||
clslDb().updateOne({ uid: call.uid, type: 'clsl' }, { $push: { recWinPrize: call.req.index } });
|
||||
// 首次达到某个段位
|
||||
if (curStar + conf.star > curMaxStar) {
|
||||
curMaxStar += conf.star;
|
||||
updata["$inc"] = { "curMaxStar": conf.star };
|
||||
}
|
||||
|
||||
// 段位奖励邮件
|
||||
let title = G.gc.clsl_com.email_dan.title;
|
||||
let content = G.gc.clsl_com.email_dan.content;
|
||||
G.gc.clsl_com.danPrize.forEach(conf => {
|
||||
// 段位未达到 或者 奖励已经发放
|
||||
if (conf.star > curMaxStar || danPrize.includes(conf.star)) {
|
||||
return
|
||||
}
|
||||
|
||||
// 发放邮件
|
||||
EmailFun.addEmail({
|
||||
uid: call.uid,
|
||||
type: 'system',
|
||||
title: title,
|
||||
content: content,
|
||||
prize: conf.prize,
|
||||
contentInsertArr:[conf.title]
|
||||
})
|
||||
|
||||
danPrize.push(conf.star);
|
||||
updata["$set"] = { danPrize: danPrize };
|
||||
})
|
||||
|
||||
|
||||
addStar(call, conf.star, undefined, updata);
|
||||
// clslDb().updateOne({ uid: call.uid, type: 'clsl' }, { $push: { recWinPrize: call.req.index } });
|
||||
|
||||
HongDianChange.sendChangeKey(call.uid, ['clslhd'])
|
||||
|
||||
|
@ -12,11 +12,38 @@ export default async function (call: ApiCall<ReqOpen, ResOpen>) {
|
||||
// 无此活动
|
||||
return call.error('', { code: -1, message: globalThis.lng.huodong_open_1 })
|
||||
}
|
||||
|
||||
let db = await G.mongodb.cEvent(`chuanshuozhilu${call.req.hdid}`).findOne({ uid: call.uid, type: `chuanshuozhilu${call.req.hdid}` });
|
||||
let _info = db?.info || {}
|
||||
// 如果初始没有数据,就判断玩家是否有活动对应的影响,生成一下初始化数据
|
||||
if (!db) {
|
||||
|
||||
let _dbType: `chuanshuozhilu${number}` = `chuanshuozhilu${call.req.hdid}`
|
||||
const hid = _hdinfo.data.hid
|
||||
let heros = await G.mongodb.collection("hero").find({uid: call.uid, heroId: hid})
|
||||
.sort({ "zhanli": -1 }).limit(1).toArray();
|
||||
|
||||
if (heros) {
|
||||
let hero = heros[0]
|
||||
const lv = hero.lv || 0
|
||||
const jieji = hero.jieji || 0
|
||||
let setInfo = {"lv": lv, "jieji": jieji}
|
||||
await G.mongodb.cEvent(_dbType).updateOne(
|
||||
{ uid: call.uid, type: _dbType },
|
||||
{ $set: G.mongodb.createTreeObj({ key: `info.${hid}`, val: setInfo})},
|
||||
{ upsert: true}
|
||||
)
|
||||
if (!cache[call.uid]) cache[call.uid] = {hid:{}};
|
||||
if (!cache[call.uid][hid]) cache[call.uid][hid] = setInfo;
|
||||
_info[hid] = setInfo
|
||||
|
||||
G.server.sendMsgByUid(call.uid, 'msg_s2c/HongDianChange', ['huodonghd']);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
call.succ({
|
||||
info: db?.info || {},
|
||||
info: _info,
|
||||
hdinfo: _hdinfo
|
||||
});
|
||||
}
|
||||
|
42
src/api_s2c/event/huangqijiuguan/ApiDuiHuan.ts
Normal file
42
src/api_s2c/event/huangqijiuguan/ApiDuiHuan.ts
Normal file
@ -0,0 +1,42 @@
|
||||
import HQJGFun from "./fun";
|
||||
import { ApiCall } from "tsrpc";
|
||||
import { PlayerFun } from "../../../public/player";
|
||||
import { ReqDuiHuan, ResDuiHuan } from "../../../shared/protocols/event/huangqijiuguan/PtlDuiHuan";
|
||||
|
||||
|
||||
|
||||
export default async function (call: ApiCall<ReqDuiHuan, ResDuiHuan>) {
|
||||
let hd = await HQJGFun.HdInfo(call, call.req.hdid);
|
||||
if (!hd || Object.keys(hd).length <= 0) {
|
||||
// 无此活动
|
||||
return call.error('', { code: -1, message: globalThis.lng.huodong_open_1 })
|
||||
}
|
||||
|
||||
let need = [];
|
||||
let prize = [];
|
||||
let mydata = await HQJGFun.getMydata(call, hd);
|
||||
for (let id in call.req.dh) {
|
||||
let con = hd.data.duihuan.filter(x => x.id == Number(id))[0];
|
||||
|
||||
if ((mydata.duihuan[id] || 0) + call.req.dh[id] > con.buyNum) {
|
||||
return call.error("", { code: -2, message: globalThis.lng.hqjgtips_28 })
|
||||
}
|
||||
|
||||
for (let i = 0; i < call.req.dh[id]; i++) {
|
||||
need.push(...con.need);
|
||||
prize.push(...con.prize);
|
||||
}
|
||||
|
||||
mydata.duihuan[id] = (mydata.duihuan[id] || 0) + call.req.dh[id];
|
||||
}
|
||||
|
||||
// 检查消耗
|
||||
await PlayerFun.checkNeedIsMeet(call, need);
|
||||
await PlayerFun.cutNeed(call, need);
|
||||
// 发送奖励
|
||||
await PlayerFun.sendPrize(call, prize);
|
||||
// 记录兑换次数
|
||||
await HQJGFun.setMyData(call.uid, hd.hdid, { duihuan: mydata.duihuan });
|
||||
|
||||
call.succ({ prize: prize, data: mydata })
|
||||
}
|
42
src/api_s2c/event/huangqijiuguan/ApiFight.ts
Normal file
42
src/api_s2c/event/huangqijiuguan/ApiFight.ts
Normal file
@ -0,0 +1,42 @@
|
||||
import { ApiCall } from "tsrpc";
|
||||
import { ReqFight, ResFight } from "../../../shared/protocols/event/huangqijiuguan/PtlFight";
|
||||
import { HuoDongFun } from "../../../public/huodongfun";
|
||||
import HQJGFun from "./fun";
|
||||
import { fightResult } from "../../../shared/fightControl/fightType";
|
||||
import { FightFun } from "../../../public/fight";
|
||||
|
||||
export default async function (call: ApiCall<ReqFight, ResFight>) {
|
||||
let hd = await HQJGFun.HdInfo(call, call.req.hdid);
|
||||
|
||||
if (!hd) {
|
||||
// 无此活动
|
||||
return call.error('', { code: -1, message: globalThis.lng.huodong_open_1 })
|
||||
}
|
||||
|
||||
// 个人活动信息
|
||||
let mydata = await HQJGFun.getMydata(call, hd);
|
||||
|
||||
// 开始战斗
|
||||
let result: fightResult = await FightFun.fightNpc(call, hd.data.boss.npcId, 'hqjg');
|
||||
|
||||
let up = false;
|
||||
let today = HQJGFun.today(hd);
|
||||
// 历史最大伤害
|
||||
if (result.totalDamage[0] > mydata.bossres.maxdps) {
|
||||
up = true;
|
||||
mydata.bossres.maxdps = result.totalDamage[0];
|
||||
}
|
||||
|
||||
// 今日最大伤害
|
||||
if (result.totalDamage[0] > (mydata.bossres.todaydps[today] || 0)) {
|
||||
up = true;
|
||||
mydata.bossres.todaydps[today] = result.totalDamage[0];
|
||||
}
|
||||
|
||||
// 更新伤害数据
|
||||
up && await HQJGFun.setMyData(call.uid, call.req.hdid, { bossres: mydata.bossres });
|
||||
|
||||
call.succ({ data: mydata, result: result });
|
||||
|
||||
G.server.sendMsgByUid(call.uid, "msg_s2c/HongDianChange", ["huodonghd"])
|
||||
}
|
45
src/api_s2c/event/huangqijiuguan/ApiGiftRec.ts
Normal file
45
src/api_s2c/event/huangqijiuguan/ApiGiftRec.ts
Normal file
@ -0,0 +1,45 @@
|
||||
import { ApiCall } from "tsrpc";
|
||||
import { ReqGiftRec, ResGiftRec } from "../../../shared/protocols/event/huangqijiuguan/PtlGiftRec";
|
||||
import HQJGFun from "./fun";
|
||||
import { PlayerFun } from "../../../public/player";
|
||||
|
||||
export default async function (call: ApiCall<ReqGiftRec, ResGiftRec>) {
|
||||
let hd = await HQJGFun.HdInfo(call, call.req.hdid);
|
||||
if (!hd || Object.keys(hd).length <= 0) {
|
||||
// 无此活动
|
||||
return call.error('', { code: -1, message: globalThis.lng.huodong_open_1 })
|
||||
}
|
||||
|
||||
let gift = hd.data.gift.filter(i => i.id == call.req.giftid)[0];
|
||||
if (!gift || !gift.free) {
|
||||
return call.error('', { code: -1, message: globalThis.lng.huodong_open_1 })
|
||||
}
|
||||
|
||||
let mydata = await HQJGFun.getMydata(call, hd);
|
||||
if ((mydata.giftbuy[call.req.giftid] || { num: 0 }).num + 1 > gift.buynum) {
|
||||
return call.error("", { code: -2, message: globalThis.lng.hqjgtips_28 })
|
||||
}
|
||||
|
||||
let prize: atn[] = [].concat(gift.prize);
|
||||
if (!mydata.giftbuy[call.req.giftid]) {
|
||||
mydata.giftbuy[call.req.giftid] = { num: 0, select: [] };
|
||||
}
|
||||
|
||||
if (gift.dlz) {
|
||||
for (let i = 0; i < gift.dlz.length; i++) {
|
||||
if (!mydata.giftbuy[call.req.giftid].select[i]) {
|
||||
let ids = Object.keys(gift.dlz[i])
|
||||
prize.push(gift.dlz[i][ids[0]]);
|
||||
mydata.giftbuy[call.req.giftid].select[i] = Number(ids[0]);
|
||||
} else {
|
||||
prize.push(gift.dlz[i][mydata.giftbuy[call.req.giftid].select[i]]);
|
||||
}
|
||||
}
|
||||
}
|
||||
mydata.giftbuy[call.req.giftid].num++;
|
||||
await HQJGFun.setMyData(call.uid, call.req.hdid, { giftbuy: mydata.giftbuy });
|
||||
|
||||
await PlayerFun.sendPrize(call, prize);
|
||||
call.succ({ data: mydata, prize: prize })
|
||||
G.server.sendMsgByUid(call.uid, "msg_s2c/HongDianChange", ["huodonghd"])
|
||||
}
|
35
src/api_s2c/event/huangqijiuguan/ApiGiftSelect.ts
Normal file
35
src/api_s2c/event/huangqijiuguan/ApiGiftSelect.ts
Normal file
@ -0,0 +1,35 @@
|
||||
import { ApiCall } from "tsrpc";
|
||||
import { ReqGiftSelect, ResGiftSelect } from "../../../shared/protocols/event/huangqijiuguan/PtlGiftSelect";
|
||||
import HQJGFun from "./fun";
|
||||
|
||||
export default async function (call: ApiCall<ReqGiftSelect, ResGiftSelect>) {
|
||||
let hd = await HQJGFun.HdInfo(call, call.req.hdid);
|
||||
if (!hd || Object.keys(hd).length <= 0) {
|
||||
// 无此活动
|
||||
return call.error('', { code: -1, message: globalThis.lng.huodong_open_1 })
|
||||
}
|
||||
|
||||
let gift = hd.data.gift.filter(i => i.id == call.req.giftid)[0];
|
||||
if (!gift || !gift.dlz) {
|
||||
return call.error('', { code: -1, message: globalThis.lng.huodong_open_1 })
|
||||
}
|
||||
|
||||
for (let i = 0; i < call.req.seletc.length; i++) {
|
||||
if (!gift.dlz[i] || !gift.dlz[i][call.req.seletc[i]]) {
|
||||
return call.error('', { code: -1, message: globalThis.lng.huodong_open_1 })
|
||||
}
|
||||
}
|
||||
|
||||
let mydata = await HQJGFun.getMydata(call, hd);
|
||||
if (!mydata.giftbuy[call.req.giftid]) {
|
||||
mydata.giftbuy[call.req.giftid] = {
|
||||
num: 0, select: call.req.seletc
|
||||
}
|
||||
} else {
|
||||
mydata.giftbuy[call.req.giftid].select = call.req.seletc;
|
||||
}
|
||||
|
||||
await HQJGFun.setMyData(call.uid, call.req.hdid, { giftbuy: mydata.giftbuy });
|
||||
|
||||
call.succ({ data: mydata });
|
||||
}
|
15
src/api_s2c/event/huangqijiuguan/ApiOpen.ts
Normal file
15
src/api_s2c/event/huangqijiuguan/ApiOpen.ts
Normal file
@ -0,0 +1,15 @@
|
||||
import HQJGFun from "./fun";
|
||||
import { ApiCall } from "tsrpc";
|
||||
import { ReqOpen, ResOpen } from "../../../shared/protocols/event/huangqijiuguan/PtlOpen";
|
||||
|
||||
export default async (call: ApiCall<ReqOpen, ResOpen>) => {
|
||||
let hd = await HQJGFun.HdInfo(call, call.req.hdid);
|
||||
if (!hd || Object.keys(hd).length <= 0) {
|
||||
// 无此活动
|
||||
return call.error('', { code: -1, message: globalThis.lng.huodong_open_1 })
|
||||
}
|
||||
|
||||
let mydata = await HQJGFun.getMydata(call, hd);
|
||||
|
||||
call.succ({ data: mydata })
|
||||
}
|
7
src/api_s2c/event/huangqijiuguan/ApiRankList.ts
Normal file
7
src/api_s2c/event/huangqijiuguan/ApiRankList.ts
Normal file
@ -0,0 +1,7 @@
|
||||
import { ApiCall } from "tsrpc";
|
||||
import { ReqRankList, ResRankList } from "../../../shared/protocols/event/huangqijiuguan/PtlRankList";
|
||||
import HQJGFun from "./fun";
|
||||
|
||||
export default async function (call: ApiCall<ReqRankList, ResRankList>) {
|
||||
HQJGFun.getRankList(call.req.hdid).then(data => call.succ({ rankList: data }));
|
||||
}
|
48
src/api_s2c/event/huangqijiuguan/ApiRecDpsPrize.ts
Normal file
48
src/api_s2c/event/huangqijiuguan/ApiRecDpsPrize.ts
Normal file
@ -0,0 +1,48 @@
|
||||
import { ApiCall } from "tsrpc";
|
||||
import HQJGFun, { Data } from "./fun";
|
||||
import { ReqRecDpsPrize, ResRecDpsPrize } from "../../../shared/protocols/event/huangqijiuguan/PtlRecDpsPrize";
|
||||
import { PlayerFun } from "../../../public/player";
|
||||
|
||||
export default async function (call: ApiCall<ReqRecDpsPrize, ResRecDpsPrize>) {
|
||||
let hd = await HQJGFun.HdInfo(call, call.req.hdid);
|
||||
|
||||
if (!hd) {
|
||||
// 无此活动
|
||||
return call.error('', { code: -1, message: globalThis.lng.huodong_open_1 })
|
||||
}
|
||||
|
||||
let data = hd.data as Data
|
||||
|
||||
// 个人活动信息
|
||||
let mydata = await HQJGFun.getMydata(call, hd);
|
||||
|
||||
// 领取伤害奖励
|
||||
let prize = [];
|
||||
for (let rec of call.req.recid) {
|
||||
let con = data.bossTask.filter(x => x.id == rec)[0];
|
||||
|
||||
if (mydata.bossres.recdpstask.includes(con.id)) {
|
||||
continue
|
||||
}
|
||||
|
||||
if (con.need > (mydata.bossres.maxdps || 0)) {
|
||||
continue
|
||||
}
|
||||
|
||||
mydata.bossres.recdpstask.push(con.id);
|
||||
prize = prize.concat(con.prize);
|
||||
}
|
||||
|
||||
if (prize.length <= 0) {
|
||||
call.error("", { code: -2, message: lng.hqjgtips_27 });
|
||||
} else {
|
||||
// 发送奖励
|
||||
await PlayerFun.sendPrize(call, prize);
|
||||
// 设置领奖记录
|
||||
await HQJGFun.setMyData(call.uid, call.req.hdid, { bossres: mydata.bossres });
|
||||
}
|
||||
|
||||
call.succ({ data: mydata, prize: prize })
|
||||
|
||||
G.server.sendMsgByUid(call.uid, "msg_s2c/HongDianChange", ["huodonghd"])
|
||||
}
|
54
src/api_s2c/event/huangqijiuguan/ApiTaskRec.ts
Normal file
54
src/api_s2c/event/huangqijiuguan/ApiTaskRec.ts
Normal file
@ -0,0 +1,54 @@
|
||||
import HQJGFun from "./fun";
|
||||
import { ApiCall } from "tsrpc";
|
||||
import { ReqTaskRec, ResTaskRec } from "../../../shared/protocols/event/huangqijiuguan/PtlTaskRec";
|
||||
import { PlayerFun } from "../../../public/player";
|
||||
|
||||
export default async function (call: ApiCall<ReqTaskRec, ResTaskRec>) {
|
||||
let hd = await HQJGFun.HdInfo(call, call.req.hdid);
|
||||
if (!hd || Object.keys(hd).length <= 0) {
|
||||
// 无此活动
|
||||
return call.error('', { code: -1, message: globalThis.lng.huodong_open_1 })
|
||||
}
|
||||
|
||||
let today = HQJGFun.today(hd);
|
||||
if (today < call.req.day) {
|
||||
// 未到领取时间
|
||||
return call.error('', { code: -1, message: globalThis.lng.hqjgtips_29 })
|
||||
}
|
||||
|
||||
let prize = [];
|
||||
let taskday = `day${call.req.day}`
|
||||
let mydata = await HQJGFun.getMydata(call, hd);
|
||||
|
||||
for (let id of call.req.taskid) {
|
||||
let con = hd.data.task[taskday][id];
|
||||
|
||||
if (!con) {
|
||||
continue
|
||||
}
|
||||
|
||||
if (mydata.task.rec[taskday] && mydata.task.rec[taskday].includes(id)) {
|
||||
continue
|
||||
}
|
||||
|
||||
if (!mydata.task.val[taskday] || (mydata.task.val[taskday][id] || 0) < con.pval) {
|
||||
continue
|
||||
}
|
||||
|
||||
prize = prize.concat(con.prize);
|
||||
mydata.task.rec[taskday] = (mydata.task.rec[taskday] || []).concat(id);
|
||||
}
|
||||
|
||||
if (prize.length <= 0) {
|
||||
return call.error('', { code: -3, message: lng.hqjgtips_28 });
|
||||
}
|
||||
|
||||
// 发送奖励
|
||||
await PlayerFun.sendPrize(call, prize);
|
||||
// 设置领取记录
|
||||
await HQJGFun.setMyData(call.uid, call.req.hdid, {task: mydata.task});
|
||||
|
||||
call.succ({ data: mydata, prize: prize });
|
||||
|
||||
G.server.sendMsgByUid(call.uid, "msg_s2c/HongDianChange", ["huodonghd"])
|
||||
}
|
54
src/api_s2c/event/huangqijiuguan/ApiZhaoMu.ts
Normal file
54
src/api_s2c/event/huangqijiuguan/ApiZhaoMu.ts
Normal file
@ -0,0 +1,54 @@
|
||||
import { ApiCall } from "tsrpc";
|
||||
import { ReqZhaoMu, ResZhaoMu } from "../../../shared/protocols/event/huangqijiuguan/PtlZhaoMu";
|
||||
import HQJGFun from "./fun";
|
||||
import { PlayerFun } from "../../../public/player";
|
||||
import { PublicShared } from "../../../shared/public/public";
|
||||
import { ActionLog } from "../../../public/actionLog/actionLog";
|
||||
|
||||
export default async function (call: ApiCall<ReqZhaoMu, ResZhaoMu>) {
|
||||
let hd = await HQJGFun.HdInfo(call, call.req.hdid);
|
||||
if (!hd || Object.keys(hd).length <= 0) {
|
||||
// 无此活动
|
||||
return call.error('', { code: -1, message: globalThis.lng.huodong_open_1 })
|
||||
}
|
||||
|
||||
let need = [{ a: hd.data.huobi.a, t: hd.data.huobi.t, n: hd.data.huobi.n * call.req.num }];
|
||||
|
||||
// 检测消耗
|
||||
await PlayerFun.checkNeedIsMeet(call, need);
|
||||
|
||||
let prize = [];
|
||||
let mydata = await HQJGFun.getMydata(call, hd);
|
||||
|
||||
for (let n = 1; n <= call.req.num; n++) {
|
||||
let num = mydata.zhaomu.num + n;
|
||||
let baodi = hd.data.baodi.filter(x => x.num == num);
|
||||
if (baodi.length > 0) {
|
||||
// 触发保底
|
||||
prize = prize.concat(baodi[0].prize);
|
||||
} else {
|
||||
// 常规掉落
|
||||
let temp = PublicShared.randomDropAny<{
|
||||
a: string, t: string, n: number, p: number
|
||||
}>(
|
||||
hd.data.chouka.filter(x => x.cishu <= num)
|
||||
);
|
||||
prize.push({ a: temp.a, t: temp.t, n: temp.n });
|
||||
}
|
||||
}
|
||||
|
||||
mydata.zhaomu.num += call.req.num;
|
||||
|
||||
// 扣除消耗
|
||||
await PlayerFun.cutNeed(call, need);
|
||||
// 发送奖励
|
||||
await PlayerFun.sendPrize(call, prize);
|
||||
// 设置抽卡数据
|
||||
await HQJGFun.setMyData(call.uid, call.req.hdid, { zhaomu: mydata.zhaomu });
|
||||
|
||||
call.succ({ data: mydata, prize: prize })
|
||||
|
||||
G.emit("Class_task_159", 'Class_task_159', call, 1, 0);
|
||||
|
||||
ActionLog.addDayLog(call.uid, { key: "huangqijiuguan/ZhaoMu", val: call.req.num });
|
||||
}
|
44
src/api_s2c/event/huangqijiuguan/ApiZhaoMuPrizeRec.ts
Normal file
44
src/api_s2c/event/huangqijiuguan/ApiZhaoMuPrizeRec.ts
Normal file
@ -0,0 +1,44 @@
|
||||
import { ApiCall } from "tsrpc";
|
||||
import { ReqZhaoMuPrizeRec, ResZhaoMuPrizeRec } from "../../../shared/protocols/event/huangqijiuguan/PtlZhaoMuPrizeRec";
|
||||
import HQJGFun from "./fun";
|
||||
import { PlayerFun } from "../../../public/player";
|
||||
|
||||
export default async function (call: ApiCall<ReqZhaoMuPrizeRec, ResZhaoMuPrizeRec>) {
|
||||
let hd = await HQJGFun.HdInfo(call, call.req.hdid);
|
||||
if (!hd || Object.keys(hd).length <= 0) {
|
||||
// 无此活动
|
||||
return call.error('', { code: -1, message: globalThis.lng.huodong_open_1 })
|
||||
}
|
||||
|
||||
let prize = [];
|
||||
let mydata = await HQJGFun.getMydata(call, hd);
|
||||
|
||||
for (let rec of call.req.recid) {
|
||||
let con = hd.data.choukajiangli[rec.idx];
|
||||
|
||||
if (con.num > mydata.zhaomu.num || mydata.zhaomu.prize.includes(rec.idx)) {
|
||||
continue
|
||||
}
|
||||
|
||||
if (con.dlz) {
|
||||
prize.push(con.dlz[0][rec.sec]);
|
||||
} else {
|
||||
prize = prize.concat(con.prize);
|
||||
}
|
||||
|
||||
mydata.zhaomu.prize.push(rec.idx);
|
||||
}
|
||||
|
||||
if (prize.length <= 0) {
|
||||
return call.error('', { code: -2, message: globalThis.lng.hqjgtips_28 })
|
||||
}
|
||||
|
||||
// 发送奖励
|
||||
await PlayerFun.sendPrize(call, prize);
|
||||
// 设置领取数据
|
||||
await HQJGFun.setMyData(call.uid, call.req.hdid, { zhaomu: mydata.zhaomu });
|
||||
|
||||
call.succ({ prize: prize, data: mydata })
|
||||
|
||||
G.server.sendMsgByUid(call.uid, "msg_s2c/HongDianChange", ["huodonghd"])
|
||||
}
|
510
src/api_s2c/event/huangqijiuguan/fun.ts
Normal file
510
src/api_s2c/event/huangqijiuguan/fun.ts
Normal file
@ -0,0 +1,510 @@
|
||||
import { ApiCall } from "tsrpc"
|
||||
import { ReqAddHuoDong } from "../../../monopoly/protocols/PtlAddHuoDong"
|
||||
import { HuoDongFun } from "../../../public/huodongfun"
|
||||
import { PublicShared } from "../../../shared/public/public"
|
||||
import { EmailFun } from "../../../public/email"
|
||||
import { playerInfo } from "../../../shared/protocols/user/PtlLogin"
|
||||
import { PlayerFun } from "../../../public/player"
|
||||
import { TaskFun } from "../../../public/task"
|
||||
|
||||
// hddata.data
|
||||
export interface Data {
|
||||
show: 1
|
||||
task: {
|
||||
[k: `day${number}`]: {
|
||||
[k: string]: { pval: number, stype: number, cond: string[], tiaozhuan: number, prize: atn[], des: string }
|
||||
}
|
||||
}
|
||||
|
||||
huobi: atn // 抽卡货币
|
||||
boss: {
|
||||
img: string
|
||||
npcId: number
|
||||
}
|
||||
|
||||
// boss排行邮件
|
||||
bossRank_des: string
|
||||
bossRank_title: string
|
||||
|
||||
// boss挑战等级奖励邮
|
||||
bossLvReward_des: string
|
||||
bossLvReward_title: string
|
||||
|
||||
chouka: { a: string, t: string, n: number, p: number, gailv: number, cishu: number }[]
|
||||
|
||||
choukajiangli: { num: number, prize?: any[], dlz: { [k: string]: atn } }[]
|
||||
|
||||
baodi: { num: number, prize: any[] }[]
|
||||
|
||||
gift: { id: number, free: boolean, payId: string, buynum: number, prize: atn[], dlz?: { [k: string]: atn }[] }[]
|
||||
|
||||
duihuan: { id: number, need: atn[], prize: atn[], buyNum: number }[]
|
||||
|
||||
bossLvReward: { lv: number, need: number, prize: atn[] }[]
|
||||
|
||||
bossTask: { id: number, need: number, prize: atn[] }[]
|
||||
|
||||
bossRank: { id: string, rank: [number, number], prize: atn[] }
|
||||
|
||||
zhuanhuan: { start: atn, end: atn }[]
|
||||
end_mail_title: string
|
||||
end_mail_des: string
|
||||
}
|
||||
|
||||
export interface PlayerData {
|
||||
// 招募数据
|
||||
zhaomu: {
|
||||
// 招募次数
|
||||
num: number
|
||||
// 次数奖励领取记录
|
||||
prize: number[]
|
||||
};
|
||||
|
||||
// 任务计数
|
||||
task: {
|
||||
rec: { [k: `day${number}`]: number[] }
|
||||
val: { [k: `day${number}`]: { [id: string]: number } }
|
||||
},
|
||||
|
||||
// 礼包购买记录
|
||||
giftbuy: { [id: string]: { num: number, select: number[] } }
|
||||
|
||||
// 兑换次数记录
|
||||
duihuan: { [id: string]: number }
|
||||
|
||||
// boss挑战数据
|
||||
bossres: {
|
||||
// 历史最大伤害
|
||||
maxdps: number
|
||||
// 今日最大伤害
|
||||
todaydps: {
|
||||
[k: string]: number
|
||||
}
|
||||
// 今日奖励领取记录
|
||||
recdpstask: number[]
|
||||
}
|
||||
}
|
||||
|
||||
export default class HQJGFun {
|
||||
static get htype() {
|
||||
return 15
|
||||
};
|
||||
|
||||
static rankkey(hdid: number) {
|
||||
return `rank:huangqijiuguan_${hdid}`
|
||||
}
|
||||
|
||||
/** 默认数据 */
|
||||
static get defaultData() {
|
||||
return {
|
||||
zhaomu: {
|
||||
num: 0,
|
||||
prize: []
|
||||
},
|
||||
task: {
|
||||
val: {},
|
||||
rec: {}
|
||||
},
|
||||
giftbuy: {},
|
||||
duihuan: {},
|
||||
bossres: {
|
||||
maxdps: 0,
|
||||
zhanli: 0,
|
||||
todaydps: {},
|
||||
recdpstask: []
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
static today(hdinfo: ReqAddHuoDong) {
|
||||
/**
|
||||
* 获取活动开启到第几天 从1开始
|
||||
*/
|
||||
return PublicShared.getDiff(hdinfo.stime, G.time)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取排行榜
|
||||
*/
|
||||
static async getRankList(hdid: number) {
|
||||
let uids = await G.mongodb.collection("event").find(
|
||||
{ type: this.dataType(hdid), "bossres.maxdps": { $gt: 0 } },
|
||||
{
|
||||
sort: { "bossres.maxdps": -1, "bossres.zhanli": -1 },
|
||||
projection: { uid: 1, bossres: 1 }
|
||||
}
|
||||
).limit(50).toArray();
|
||||
|
||||
let userinfo = await G.mongodb.collection('user').find(
|
||||
{ uid: { $in: uids.map(v => v.uid) } },
|
||||
).toArray();
|
||||
|
||||
let res = [];
|
||||
for (let rank = 1; rank <= uids.length; rank++) {
|
||||
let uid = uids[rank - 1].uid;
|
||||
let user = userinfo.find(v => v.uid == uid);
|
||||
if (user) {
|
||||
res.push({ rank, ...user, valArr: [uids[rank - 1].bossres.maxdps] });
|
||||
}
|
||||
}
|
||||
|
||||
return res
|
||||
}
|
||||
|
||||
/** 数据类型 */
|
||||
static dataType(hdid: number) {
|
||||
return `huangqijiuguan_${hdid}` as `huangqijiuguan_${number}`
|
||||
}
|
||||
|
||||
/** 获取活动数据 */
|
||||
static async HdInfo(call: ApiCall, hdid?: number): Promise<ReqAddHuoDong & { data: Data }> {
|
||||
if (!hdid) {
|
||||
let hdlist = await HuoDongFun.gethdList(
|
||||
call, this.htype
|
||||
);
|
||||
return hdlist.length > 0 ? hdlist[0] : null
|
||||
} else {
|
||||
return await HuoDongFun.getHdidInfo(call, hdid) as any as ReqAddHuoDong & { data: Data }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/** 获取我的数据 */
|
||||
static async getMydata(call: ApiCall, hd?: ReqAddHuoDong) {
|
||||
if (!hd) {
|
||||
hd = await HQJGFun.HdInfo(call);
|
||||
}
|
||||
let data = await G.mongodb.cEvent(this.dataType(hd.hdid)).findOne({
|
||||
uid: call.uid, type: this.dataType(hd.hdid)
|
||||
}, { projection: { _id: 0 } });
|
||||
|
||||
if (!data) {
|
||||
data = (await G.mongodb.cEvent(this.dataType(hd.hdid)).findOneAndUpdate({
|
||||
uid: call.uid, type: this.dataType(hd.hdid)
|
||||
}, {
|
||||
$set: this.defaultData
|
||||
}, { upsert: true, returnDocument: 'after', projection: { _id: 0 } })).value;
|
||||
}
|
||||
|
||||
let today = this.today(hd);
|
||||
if (!data.task.val[`day${today}`]) {
|
||||
data.task.val[`day${today}`] = {};
|
||||
let tasks = hd.data.task[`day${today}`];
|
||||
for (let taskid in tasks) {
|
||||
let taskcon = tasks[taskid];
|
||||
data.task.val[`day${today}`][taskid] = await TaskFun.getTaskNval(call, taskcon);
|
||||
}
|
||||
await G.mongodb.collection('event').updateOne(
|
||||
{ uid: call.uid, type: this.dataType(hd.hdid) },
|
||||
{ $set: { [`task.val.day${today}`]: data.task.val[`day${today}`] } }
|
||||
);
|
||||
}
|
||||
|
||||
return data
|
||||
}
|
||||
|
||||
/** 设置我的数据 */
|
||||
static async setMyData(uid: string, hdid: number, update: { [k in keyof Partial<PlayerData>]: PlayerData[k] }) {
|
||||
let res = await G.mongodb.cEvent(this.dataType(hdid)).updateOne(
|
||||
{ uid: uid, type: this.dataType(hdid) }, { $set: update }, { upsert: true }
|
||||
);
|
||||
|
||||
if (res.upsertedCount == 1) {
|
||||
console.log("===>", uid, hdid, update);
|
||||
await G.mongodb.cEvent(this.dataType(hdid)).updateOne(
|
||||
{ uid: uid, type: this.dataType(hdid) }, { $set: Object.assign(this.defaultData, update) }
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 每日伤害等级奖励结算
|
||||
*/
|
||||
static async dayDpsLvPrize(time: number) {
|
||||
console.log(
|
||||
"黄旗酒馆 每日伤害等级奖励结算 开始执行。。。"
|
||||
)
|
||||
// 取stime小于当前时间的最后一条数据
|
||||
let hdinfo = await G.mongodb.collection("hdinfo").find({
|
||||
htype: this.htype, stime: { $lte: time }
|
||||
}, { sort: { stime: -1 } }).limit(1).toArray();
|
||||
|
||||
// 没有活动数
|
||||
if (hdinfo.length <= 0) {
|
||||
return
|
||||
}
|
||||
|
||||
let hd = hdinfo[0];
|
||||
let hdid = hdinfo[0].hdid;
|
||||
// 活动结束
|
||||
if (hd.etime < G.time - 300) {
|
||||
return
|
||||
}
|
||||
|
||||
let today = PublicShared.getDiff(hd.stime, G.time - 300);
|
||||
G.mongodb.collection("event").find({ type: `huangqijiuguan_${hdid}` }).toArray().then(datas => {
|
||||
let hddata = hd.data as Data;
|
||||
for (let i = 0; i < datas.length; i++) {
|
||||
let data = datas[i];
|
||||
|
||||
let lvprize: { lv: number; need?: number; prize?: atn[] };
|
||||
let dps = data.bossres.todaydps[today] || 0;
|
||||
for (let lvinfo of hddata.bossLvReward) {
|
||||
if (dps < lvinfo.need) {
|
||||
continue;
|
||||
}
|
||||
if (!lvprize || lvprize.lv < lvinfo.lv) {
|
||||
lvprize = lvinfo;
|
||||
}
|
||||
}
|
||||
|
||||
if (!lvprize) continue
|
||||
let title = hddata.bossLvReward_title;
|
||||
let content = hddata.bossLvReward_des;
|
||||
EmailFun.addEmail({
|
||||
uid: data.uid,
|
||||
title: title,
|
||||
type: "system",
|
||||
content: content,
|
||||
prize: lvprize.prize,
|
||||
contentInsertArr: [lvprize.lv],
|
||||
})
|
||||
}
|
||||
console.log(
|
||||
"黄旗酒馆 每日伤害等级奖励结算 执行完成!!!"
|
||||
)
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 最大伤害排行奖励结算
|
||||
*/
|
||||
static async endDpsRankPrize(time: number) {
|
||||
console.log(
|
||||
"黄旗酒馆 最大伤害排行奖励结算 开始执行。。。"
|
||||
)
|
||||
let today = PublicShared.getToDayZeroTime(time + 300);
|
||||
let yesterday = PublicShared.getToDayZeroTime(time - 300);
|
||||
|
||||
// 查询昨天23:59:00或者今天00:00:00结束的活动
|
||||
let hdinfo = await G.mongodb.collection("hdinfo").find({
|
||||
htype: this.htype, rtime: { $gt: yesterday, $lte: today }
|
||||
}).toArray();
|
||||
|
||||
// 没有活动数 或者发奖标识已设置
|
||||
if (hdinfo.length <= 0 || hdinfo[0].data.sendrank) {
|
||||
return
|
||||
}
|
||||
|
||||
let hd = hdinfo[0];
|
||||
let hdid = hdinfo[0].hdid;
|
||||
let hddata = hdinfo[0].data as Data;
|
||||
if (hd.data.sendrank) {
|
||||
return
|
||||
}
|
||||
|
||||
let uids = await G.mongodb.collection("event").find(
|
||||
{ type: this.dataType(hdid) },
|
||||
{
|
||||
sort: { "bossres.maxdps": -1, "bossres.zhanli": -1 },
|
||||
projection: { uid: 1, bossres: 1 }
|
||||
}
|
||||
).toArray();
|
||||
|
||||
for (let rank = 1; rank <= uids.length; rank++) {
|
||||
let con = hd.data.bossRank.filter(
|
||||
(x: { rank: number[] }) => rank >= x.rank[0] && rank <= x.rank[1]
|
||||
)[0];
|
||||
if (!con) continue;
|
||||
// 发送排名奖励
|
||||
await EmailFun.addEmail({
|
||||
uid: uids[rank - 1].uid,
|
||||
title: hd.data.bossRank_title,
|
||||
type: "system",
|
||||
content: hd.data.bossRank_des,
|
||||
prize: con.prize,
|
||||
contentInsertArr: [rank],
|
||||
})
|
||||
}
|
||||
// 标记已发送
|
||||
await G.mongodb.collection("hdinfo").updateOne(
|
||||
{ hdid: hdid }, { $set: { "data.sendrank": true } }
|
||||
);
|
||||
// 货币兑换
|
||||
G.mongodb.collection("user").find().toArray().then(async (users) => {
|
||||
for (let i = 0; i < users.length; i++) {
|
||||
let prize = [];
|
||||
let change = {};
|
||||
let user = users[i];
|
||||
for (let con of hddata.zhuanhuan) {
|
||||
let num = user[con.start.t];
|
||||
if (num < con.start.n) {
|
||||
continue
|
||||
}
|
||||
change[con.start.t] = 0;
|
||||
prize.push({
|
||||
a: con.end.a, t: con.end.t, n: con.end.n * (num / con.start.n),
|
||||
})
|
||||
}
|
||||
if (prize.length <= 0) continue
|
||||
// 扣除消耗
|
||||
await PlayerFun.changeAttr(user.uid, change);
|
||||
G.server?.sendMsgByUid(user.uid, "msg_s2c/PlayerChange", change);
|
||||
// 发送奖励邮件
|
||||
await EmailFun.addEmail({
|
||||
uid: user.uid,
|
||||
type: "system",
|
||||
prize: prize,
|
||||
title: hddata.end_mail_title,
|
||||
content: hddata.end_mail_des,
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
console.log(
|
||||
"黄旗酒馆 最大伤害排行奖励结算 执行结束!!!"
|
||||
)
|
||||
}
|
||||
|
||||
/**设置任务 */
|
||||
static async setTaskVal(call: ApiCall, stype: number, val: number, chkCall: Function, chkval: number = 0, isinc: number = 0, alchangeVal: Function, arg) {
|
||||
// 活动过期,不计数
|
||||
let hd = await this.HdInfo(call)
|
||||
if (!hd) return
|
||||
|
||||
let today = this.today(hd);
|
||||
let tasks = hd.data.task[`day${today}`];
|
||||
|
||||
if (!tasks) return
|
||||
|
||||
let mydata = await this.getMydata(call, hd);
|
||||
|
||||
let isset = 0;
|
||||
if (!mydata.task.val[`day${today}`]) {
|
||||
isset = 1;
|
||||
mydata.task.val[`day${today}`] = {}
|
||||
for (let taskid in tasks) {
|
||||
let taskcon = tasks[taskid];
|
||||
mydata.task.val[`day${today}`][taskid] = await TaskFun.getTaskNval(call, taskcon);
|
||||
}
|
||||
}
|
||||
|
||||
for (let taskid of Object.keys(tasks)) {
|
||||
let taskCon = tasks[taskid];
|
||||
if (taskCon.stype != stype) continue
|
||||
|
||||
// 不符合任务要求
|
||||
if (!(await chkCall(taskCon["cond"], chkval, arg))) continue
|
||||
|
||||
// 根据需求改写
|
||||
val = await alchangeVal(call, taskCon, val, arg)
|
||||
|
||||
isset = 1
|
||||
if (isinc != 1) { // 累加
|
||||
mydata.task.val[`day${today}`][taskid] = val;
|
||||
} else {
|
||||
mydata.task.val[`day${today}`][taskid] = (mydata.task.val[`day${today}`][taskid] || 0) + val;
|
||||
}
|
||||
}
|
||||
|
||||
// 设置任务
|
||||
if (isset == 1) {
|
||||
await G.mongodb.collection('event').updateOne({ uid: call.uid, type: this.dataType(hd.hdid) }, {
|
||||
$set: {
|
||||
[`task.val.day${today}`]: mydata.task.val[`day${today}`]
|
||||
}
|
||||
})
|
||||
|
||||
if ((await this.getHongDian(call, hd, mydata)).show) {
|
||||
G.server.sendMsgByUid(call.uid, "msg_s2c/HongDianChange", ["huodonghd"])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static async buy(player: playerInfo, payId: string, payArgs: any, call: ApiCall) {
|
||||
let hd = await this.HdInfo(call);
|
||||
|
||||
if (!hd) { // 活动不存在
|
||||
return
|
||||
}
|
||||
|
||||
// 判断购买次数
|
||||
let gift = hd.data.gift.filter(x => x.payId == payId)[0];
|
||||
if (!gift) {
|
||||
return
|
||||
}
|
||||
|
||||
let mydata = await this.getMydata(call, hd);
|
||||
if (!mydata.giftbuy[gift.id]) {
|
||||
mydata.giftbuy[gift.id] = { num: 0, select: [] };
|
||||
}
|
||||
|
||||
let prize: atn[] = [];
|
||||
if (mydata.giftbuy[gift.id].num + 1 > gift.buynum) {
|
||||
let pay = G.gc.pay[payId];
|
||||
prize.push({ a: "attr", t: "rmbmoney", n: pay.payExp[0].n })
|
||||
} else {
|
||||
prize = gift.prize;
|
||||
for (let i = 0; i < gift.dlz.length; i++) {
|
||||
if (!mydata.giftbuy[gift.id].select[i]) {
|
||||
let ids = Object.keys(gift.dlz[i])
|
||||
prize.push(gift.dlz[i][ids[0]]);
|
||||
mydata.giftbuy[gift.id].select[i] = Number(ids[0]);
|
||||
} else {
|
||||
prize.push(gift.dlz[i][mydata.giftbuy[gift.id].select[i]]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mydata.giftbuy[gift.id].num++;
|
||||
// 发送奖励
|
||||
await PlayerFun.sendPrize(call, prize, true);
|
||||
await this.setMyData(call.uid, hd.hdid, { giftbuy: mydata.giftbuy });
|
||||
}
|
||||
|
||||
static async getHongDian(call: ApiCall, hd: ReqAddHuoDong, mydata?: PlayerData) {
|
||||
let hdid = hd.hdid;
|
||||
let hddata = hd.data as Data;
|
||||
|
||||
mydata = mydata || await this.getMydata(call, hd);
|
||||
// 当黄旗招募存在可领取的可选奖励时
|
||||
for (let i = 0; i < hddata.choukajiangli.length; i++) {
|
||||
let ele = hddata.choukajiangli[i];
|
||||
if (mydata.zhaomu.num >= ele.num && !mydata.zhaomu.prize.includes(i)) {
|
||||
return { show: true }
|
||||
}
|
||||
}
|
||||
|
||||
let today = this.today(hd);
|
||||
// 当今日没有进行boss挑战时
|
||||
if (!mydata.bossres.todaydps[today]) {
|
||||
return { show: true }
|
||||
}
|
||||
|
||||
// 当每日任务界面存在可领取的任务奖励时
|
||||
for (let day = 1; day <= today; day++) {
|
||||
for (let taskid in hddata.task[`day${day}`]) {
|
||||
let task = hddata.task[`day${day}`][taskid];
|
||||
if (mydata.task.val[`day${day}`]?.[taskid] >= task.pval && !(mydata.task.rec?.[`day${day}`] || []).includes(Number(taskid))) {
|
||||
return { show: true }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 当干部挑战界面存在可领取的挑战任务奖励时
|
||||
for (let mb of hddata.bossTask) {
|
||||
if (mb.need <= mydata.bossres.maxdps && !mydata.bossres.recdpstask.includes(mb.id)) {
|
||||
return { show: true }
|
||||
}
|
||||
}
|
||||
|
||||
// 当存在可以领取的免费礼包时
|
||||
for (let gift of hddata.gift) {
|
||||
if (gift.free && (mydata.giftbuy[gift.id]?.num || 0) < gift.buynum) {
|
||||
return { show: true }
|
||||
}
|
||||
}
|
||||
|
||||
return { show: false }
|
||||
}
|
||||
}
|
@ -6,7 +6,6 @@ import {PublicShared} from "../../../shared/public/public";
|
||||
|
||||
|
||||
export default async function (call: ApiCall<ReqOpen, ResOpen>) {
|
||||
let data = await G.mongodb.cEvent('pobinglibao').findOne({uid: call.uid, type: 'pobinglibao'})
|
||||
|
||||
let _hd = (await HuoDongFun.gethdList(call, 10))[0]
|
||||
if (!_hd) return call.errorCode(-1)
|
||||
@ -16,9 +15,11 @@ export default async function (call: ApiCall<ReqOpen, ResOpen>) {
|
||||
let payLog: any = await PayFun.getPayLogs(call.uid, payIds)
|
||||
|
||||
for (let key in payLog) {
|
||||
payLog[key]?.filter(i => i.time > _hd.stime && i.time < _hd.etime)
|
||||
payLog[key] = payLog[key]?.filter(i => i.time > _hd.stime && i.time < _hd.etime)
|
||||
}
|
||||
|
||||
let data = await G.mongodb.cEvent(`pobinglibao${_hd.hdid}`).findOne({uid: call.uid, type: `pobinglibao${_hd.hdid}`})
|
||||
|
||||
call.succ({
|
||||
record: data?.record || {},
|
||||
buyLog: payLog
|
||||
|
@ -1,33 +1,89 @@
|
||||
import {ApiCall} from "tsrpc";
|
||||
import {ReqReceive, ResReceive} from "../../../shared/protocols/event/pobinglibao/PtlReceive";
|
||||
import {HuoDongFun} from "../../../public/huodongfun";
|
||||
import {PlayerFun} from "../../../public/player";
|
||||
import {HongDianChange} from "../../hongdian/fun";
|
||||
import {PayFun} from "../../../public/pay";
|
||||
import { ApiCall } from "tsrpc";
|
||||
import { ReqReceive, ResReceive } from "../../../shared/protocols/event/pobinglibao/PtlReceive";
|
||||
import { HuoDongFun } from "../../../public/huodongfun";
|
||||
import { PlayerFun } from "../../../public/player";
|
||||
import { HongDianChange } from "../../hongdian/fun";
|
||||
import { PayFun } from "../../../public/pay";
|
||||
import { PublicShared } from "../../../shared/public/public";
|
||||
|
||||
export default async function (call: ApiCall<ReqReceive, ResReceive>) {
|
||||
// 查询活动是否有当前领奖的免费选项
|
||||
|
||||
// 查询活动是否是可领取状态
|
||||
let _hd = (await HuoDongFun.gethdList(call, 10))[0]
|
||||
let gift = _hd?.data?.gift?.find(i => i.id == call.req.id)
|
||||
if (!gift) return call.errorCode(-1)
|
||||
|
||||
let payLog = await PayFun.getPayLog(call.uid, gift.payId)
|
||||
payLog = payLog?.filter(i => i.time >= _hd.stime && i.time <= _hd.etime) || []
|
||||
if (!payLog || !payLog.length) return call.errorCode(-2)
|
||||
let prize = [];
|
||||
let update = {};
|
||||
// 判断活动是否是最后一天
|
||||
if (PublicShared.chkSameDate(G.time, _hd.etime)) {
|
||||
let data = await G.mongodb.cEvent(`pobinglibao${_hd.hdid}`).findOne(
|
||||
{ uid: call.uid, type: `pobinglibao${_hd.hdid}` }
|
||||
);
|
||||
|
||||
for (let gift of _hd.data.gift) {
|
||||
// 查询购买状态
|
||||
let push = [];
|
||||
let payLog = await PayFun.getPayLog(call.uid, gift.payId)
|
||||
payLog = payLog?.filter(i => i.time >= _hd.stime && i.time <= _hd.etime) || []
|
||||
if (!payLog || !payLog.length) continue;
|
||||
|
||||
// 取奖励列表,判断是否有可领取奖励
|
||||
let data = await G.mongodb.cEvent('pobinglibao').findOne({uid: call.uid, type: 'pobinglibao'})
|
||||
let rec = data?.record?.[call.req.id]?.length
|
||||
if (rec && (rec >= 3 || data?.record?.[gift.id] == call.req.recId)) return call.errorCode(-3)
|
||||
for (let key of ["prize", "recPrize1", "recPrize2"]) {
|
||||
if (!data || !data?.record[gift.id] || !data.record[gift.id].includes(key)) {
|
||||
push.push(key);
|
||||
prize.push(...gift[key]);
|
||||
}
|
||||
}
|
||||
|
||||
await PlayerFun.sendPrize(call, gift[call.req.recId]);
|
||||
if (push.length > 0) {
|
||||
if (update["$push"]) {
|
||||
update["$push"]["record." + gift.id] = { $each: push }
|
||||
} else {
|
||||
update["$push"] = { ["record." + gift.id]: { $each: push } }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
await G.mongodb.cEvent('pobinglibao').updateOne({uid: call.uid, type: 'pobinglibao'}, {
|
||||
$push: {[`record.${gift.id}`]: call.req.recId},
|
||||
}, {upsert: true})
|
||||
if (!prize.length) {
|
||||
return call.errorCode(-3)
|
||||
}
|
||||
} else {
|
||||
let gift = _hd?.data?.gift?.find(i => i.id == call.req.id);
|
||||
if (!gift || !call.req.recId) return call.errorCode(-1);
|
||||
|
||||
call.succ({})
|
||||
// 查询购买状态
|
||||
let payLog = await PayFun.getPayLog(call.uid, gift.payId)
|
||||
payLog = payLog?.filter(i => i.time >= _hd.stime && i.time <= _hd.etime) || []
|
||||
|
||||
if (!payLog || !payLog.length) return call.errorCode(-2);
|
||||
|
||||
/**
|
||||
* 取奖励列表,判断是否有可领取奖励
|
||||
* 购买日起,每种礼包每天可领一次礼包,每种类型独立
|
||||
* 活动结束前的最后一天,可领取所有奖励
|
||||
*/
|
||||
let data = await G.mongodb.cEvent(`pobinglibao${_hd.hdid}`).findOne(
|
||||
{ uid: call.uid, type: `pobinglibao${_hd.hdid}` }
|
||||
)
|
||||
|
||||
let rec = data?.record?.[call.req.id]?.length
|
||||
|
||||
let _payDiff = PublicShared.getDiff(payLog[0].time)
|
||||
_payDiff = _payDiff > 3 ? 3 : _payDiff
|
||||
|
||||
if (rec >= _payDiff || data?.record?.[gift.id] == call.req.recId) return call.errorCode(-3)
|
||||
|
||||
prize.push(...gift[call.req.recId]);
|
||||
update = {
|
||||
$push: { [`record.${gift.id}`]: call.req.recId },
|
||||
}
|
||||
}
|
||||
|
||||
await PlayerFun.sendPrize(call, prize);
|
||||
|
||||
await G.mongodb.cEvent(`pobinglibao${_hd.hdid}`).updateOne(
|
||||
{ uid: call.uid, type: `pobinglibao${_hd.hdid}` }, update, { upsert: true }
|
||||
);
|
||||
|
||||
call.succ({ prize: prize });
|
||||
|
||||
HongDianChange.sendChangeKey(call.uid, ['huodonghd']);
|
||||
}
|
||||
|
@ -2,6 +2,8 @@ import { ApiCall } from "tsrpc";
|
||||
import { HuoDongFun } from "../../../public/huodongfun";
|
||||
import { ReqOpen, ResOpen } from "../../../shared/protocols/event/yangchengmubiao/PtlOpen";
|
||||
import { YangChengMuBiaofun } from "./fun";
|
||||
import { PayFun } from "../../../public/pay";
|
||||
import { payLog } from "../../../shared/protocols/pay/PtlGetList";
|
||||
|
||||
export default async function (call: ApiCall<ReqOpen, ResOpen>) {
|
||||
let _hdinfo = await HuoDongFun.getHdidInfo(call, call.req.hdid)
|
||||
@ -9,6 +11,23 @@ export default async function (call: ApiCall<ReqOpen, ResOpen>) {
|
||||
// 无此活动
|
||||
return call.error('', { code: -1, message: globalThis.lng.huodong_open_1 })
|
||||
}
|
||||
|
||||
let delPay: { payId: string, val: payLog[] }[] = [];
|
||||
let payIds = _hdinfo.data.gift.map(v => v.payId);
|
||||
let payLogs = await PayFun.getPayLogs(call.uid, payIds);
|
||||
|
||||
for (let payid in payLogs) {
|
||||
if (payLogs[payid].length > 0) {
|
||||
if (payLogs[payid].slice(-1)[0].time < _hdinfo.stime) {
|
||||
delPay.push({ payId: payid, val: [] });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (delPay.length > 0) {
|
||||
await PayFun.delPayLog(call.uid, ...delPay);
|
||||
}
|
||||
|
||||
let _mydata = await YangChengMuBiaofun.getMyData(call, call.req.hdid)
|
||||
let changedata = { mydata: _mydata, hdinfo: _hdinfo }
|
||||
call.succ(changedata);
|
||||
|
@ -35,6 +35,7 @@ export default async function (call: ApiCall<ReqRec, ResRec>) {
|
||||
_mydata.lunci += 1
|
||||
_setData["taskval"] = _mydata.taskval
|
||||
_setData["lunci"] = _mydata.lunci
|
||||
_setData["finishid"] = _mydata.finishid
|
||||
}
|
||||
|
||||
// 设置任务改变数据
|
||||
|
@ -16,8 +16,8 @@ export default async function (call: ApiCall<ReqRec, ResRec>) {
|
||||
if (call.req.index > day) return call.errorCode(-3);
|
||||
if (rec.includes(call.req.index)) return call.errorCode(-4);
|
||||
|
||||
|
||||
G.mongodb.cEvent(type).updateOne({uid: call.uid, type: type}, {$push: {rec: call.req.index}}, {upsert: true});
|
||||
// 从异步改成同步
|
||||
await G.mongodb.cEvent(type).updateOne({uid: call.uid, type: type}, {$push: {rec: call.req.index}}, {upsert: true});
|
||||
|
||||
|
||||
await PlayerFun.sendPrize(call, [].concat(conf.prize[call.req.index]));
|
||||
|
@ -1,14 +1,15 @@
|
||||
import {ApiCall} from "tsrpc";
|
||||
import {ZhanLingTasks} from '../../../public/zhanling';
|
||||
import {ReqOpen, ResOpen} from "../../../shared/protocols/event/zhanling/PtlOpen";
|
||||
import {player} from '../../../shared/protocols/user/type';
|
||||
import {PublicShared} from '../../../shared/public/public';
|
||||
import { ApiCall } from "tsrpc";
|
||||
import { ZhanLingTasks } from '../../../public/zhanling';
|
||||
import { ReqOpen, ResOpen } from "../../../shared/protocols/event/zhanling/PtlOpen";
|
||||
import { player } from '../../../shared/protocols/user/type';
|
||||
import { PublicShared } from '../../../shared/public/public';
|
||||
import { PayFun } from "../../../public/pay";
|
||||
|
||||
export default async function (call: ApiCall<ReqOpen, ResOpen>) {
|
||||
let zls = await G.mongodb.collection('scheduler').findOne({type: 'zhanling'});
|
||||
let data = await G.mongodb.cEvent('zhanling').findOne({uid: call.uid, type: 'zhanling'});
|
||||
let zls = await G.mongodb.collection('scheduler').findOne({ type: 'zhanling' });
|
||||
let data = await G.mongodb.cEvent('zhanling').findOne({ uid: call.uid, type: 'zhanling' });
|
||||
|
||||
if (!data || data.round != (zls?.round | 0)) {
|
||||
if (!data || data.round != (zls?.round || 0)) {
|
||||
let set = {
|
||||
lv: 1,
|
||||
exp: 0,
|
||||
@ -16,18 +17,25 @@ export default async function (call: ApiCall<ReqOpen, ResOpen>) {
|
||||
isPay: false,
|
||||
taskRec: [],
|
||||
round: zls?.round || 0,
|
||||
reWeekTime:G.time,
|
||||
reWeekTime: G.time,
|
||||
refreshTime: G.time,
|
||||
}
|
||||
|
||||
await PayFun.delPayLog(
|
||||
call.uid, { payId: G.gc.zhanling.payId, val: [] }
|
||||
);
|
||||
// 战令重置的时候需要删除所有的任务进度,但是每天的任务进度不做处理,因为每天会自然重置,怕玩家会刷
|
||||
// ZhanLingTasks.clearLog(call.uid, 'day');
|
||||
ZhanLingTasks.clearLog(call.uid, 'week');
|
||||
ZhanLingTasks.clearLog(call.uid, 'round');
|
||||
data = (await G.mongodb.cEvent('zhanling').findOneAndUpdate({
|
||||
uid: call.uid,
|
||||
type: 'zhanling'
|
||||
}, {$set: set}, {upsert: true, returnDocument: 'after'})).value;
|
||||
}, { $set: set }, { upsert: true, returnDocument: 'after' })).value;
|
||||
}
|
||||
|
||||
if (PublicShared.getToWeekMondayZeroTime() > data.reWeekTime || PublicShared.getToDayZeroTime() > data.refreshTime) {
|
||||
let set: any = {taskRec: []};
|
||||
let set: any = { taskRec: [] };
|
||||
|
||||
let reType = [];
|
||||
if (PublicShared.getToWeekMondayZeroTime() > data.reWeekTime) {
|
||||
@ -49,11 +57,11 @@ export default async function (call: ApiCall<ReqOpen, ResOpen>) {
|
||||
data = (await G.mongodb.cEvent('zhanling').findOneAndUpdate({
|
||||
uid: call.uid,
|
||||
type: 'zhanling'
|
||||
}, {$set: set}, {upsert: true, returnDocument: 'after'})).value;
|
||||
}, { $set: set }, { upsert: true, returnDocument: 'after' })).value;
|
||||
}
|
||||
|
||||
let tasks = G.gc.zhanling.task.map(t => {
|
||||
return {type: t.type as 'day' | 'week' | 'round', key: t.taskId};
|
||||
return { type: t.type as 'day' | 'week' | 'round', key: t.taskId };
|
||||
});
|
||||
let taskFinished = await ZhanLingTasks.getLog(call.uid, tasks);
|
||||
|
||||
@ -68,14 +76,14 @@ export default async function (call: ApiCall<ReqOpen, ResOpen>) {
|
||||
}
|
||||
|
||||
export async function payZhanLing(player: player) {
|
||||
let zlData = await G.mongodb.cEvent('zhanling').findOne({uid: player.uid, type: 'zhanling'});
|
||||
let zlData = await G.mongodb.cEvent('zhanling').findOne({ uid: player.uid, type: 'zhanling' });
|
||||
let curLv = zlData?.lv || 1;
|
||||
let maxLv = Number(Object.keys(G.gc.zhanling.lv).slice(-1)[0]);
|
||||
let addLv = maxLv - curLv >= G.gc.zhanling.payAddLv ? G.gc.zhanling.payAddLv : maxLv - curLv;
|
||||
|
||||
await G.mongodb.cEvent('zhanling').updateOne(
|
||||
{uid: player.uid, type: 'zhanling'},
|
||||
{$set: {isPay: true, exp: G.gc.zhanling.lv[curLv + addLv], lv: curLv + addLv}},
|
||||
{upsert: true}
|
||||
{ uid: player.uid, type: 'zhanling' },
|
||||
{ $set: { isPay: true, exp: G.gc.zhanling.lv[curLv + addLv], lv: curLv + addLv } },
|
||||
{ upsert: true }
|
||||
);
|
||||
}
|
@ -51,16 +51,24 @@ export default async function (call: ApiCall<ReqGetList, ResGetList>) {
|
||||
async function checkDataAndFix(call: ApiCall, list: ResGetList['list']) {
|
||||
try {
|
||||
// 修复配件数据
|
||||
let peijianids = [];
|
||||
Object.values(list).map(hero => {
|
||||
hero.peijian && Object.values(hero.peijian).map(
|
||||
i => peijianids.push(G.mongodb.conversionId(PeijianShared.fmt(i)._id))
|
||||
)
|
||||
});
|
||||
//hero数据里,所有英雄穿戴中的配件的 _id(objectId)
|
||||
// let peijianids = [];
|
||||
// Object.values(list).map(hero => {
|
||||
// hero.peijian && Object.values(hero.peijian).map(
|
||||
// i => peijianids.push(G.mongodb.conversionId(PeijianShared.fmt(i)._id))
|
||||
// )
|
||||
// });
|
||||
|
||||
let peijians = (await G.mongodb.collection("peijian").find(
|
||||
{uid: call.uid, _id: {$in: peijianids}}, {projection: {_id: 1}}
|
||||
).toArray()).map(temp => G.mongodb.conversionId(temp._id));
|
||||
//通过上述的_id,去配件表查询所有配件
|
||||
// let wearedPeiJian = (await G.mongodb.collection("peijian").find(
|
||||
// {uid: call.uid, _id: {$in: peijianids}}, {projection: {_id: 1, wearId:1}}
|
||||
// ).toArray());
|
||||
|
||||
// //peijians = 所有从db里查到的peijian的 _id字符串数据集合
|
||||
// let peijians = wearedPeiJian.map(temp => {
|
||||
// let idstr = G.mongodb.conversionId(temp._id)
|
||||
// return idstr;
|
||||
// });
|
||||
|
||||
let shiwuIds = R.flatten(R.values(list).map(hero => R.values(hero.shiwu).map(i => G.mongodb.conversionId(i._id))))
|
||||
|
||||
@ -68,15 +76,19 @@ async function checkDataAndFix(call: ApiCall, list: ResGetList['list']) {
|
||||
{uid: call.uid, _id: {$in: shiwuIds}}, {projection: {_id: 1}}
|
||||
).toArray()).map(i => G.mongodb.conversionId(i._id));
|
||||
|
||||
let peijianChanges = {};
|
||||
//let peijianChanges = {};
|
||||
let shiwuChanges = {};
|
||||
Object.values(list).map(hero => {
|
||||
for (let pos in hero.peijian) {
|
||||
if (!peijians.includes(PeijianShared.fmt(hero.peijian[pos])._id)) {
|
||||
hero.peijian[pos] = "";
|
||||
peijianChanges[hero._id] = hero.peijian;
|
||||
}
|
||||
}
|
||||
// for (let pos in hero.peijian) {
|
||||
// //hero该位置记录的穿戴中的配件_id
|
||||
// let _pid = PeijianShared.fmt(hero.peijian[pos])._id;
|
||||
|
||||
// if (!peijians.includes(_pid) || peijianWearTo?.[_pid] != hero._id ) {
|
||||
// //这个配件,实际在peijian表里不存在 或 配件表里该配件并不是在这个英雄身上
|
||||
// hero.peijian[pos] = "";
|
||||
// peijianChanges[hero._id] = hero.peijian;
|
||||
// }
|
||||
// }
|
||||
for (let pos in hero.shiwu) {
|
||||
if (!shiwus.includes(hero.shiwu[pos]._id)) {
|
||||
hero.shiwu = R.omit([pos], hero.shiwu)
|
||||
@ -85,12 +97,12 @@ async function checkDataAndFix(call: ApiCall, list: ResGetList['list']) {
|
||||
}
|
||||
})
|
||||
|
||||
for (let oid in peijianChanges) {
|
||||
// 修复数据
|
||||
G.mongodb.collection("hero").updateOne(
|
||||
G.mongodb.conversionIdObj({_id: oid}), {$set: {peijian: peijianChanges[oid]}}
|
||||
)
|
||||
}
|
||||
// for (let oid in peijianChanges) {
|
||||
// // 修复数据
|
||||
// G.mongodb.collection("hero").updateOne(
|
||||
// G.mongodb.conversionIdObj({_id: oid}), {$set: {peijian: peijianChanges[oid]}}
|
||||
// )
|
||||
// }
|
||||
|
||||
for (let oid in shiwuChanges) {
|
||||
// 修复数据
|
||||
|
@ -21,6 +21,7 @@ import kfjsFun from "../../public/kaifujingsai";
|
||||
import {RankKfjs} from "../../public/rank/rank_kfjs";
|
||||
import {ShopFun} from "../../public/shop";
|
||||
import {Christmasfun} from '../event/christmas/fun';
|
||||
import HQJGFun from '../event/huangqijiuguan/fun';
|
||||
|
||||
export class HongDianFun {
|
||||
/**黑榜争霸红点 */
|
||||
@ -352,6 +353,10 @@ export class HuoDongHongDianFun {
|
||||
// 检测 htype 10 元旦活动红点
|
||||
ishd = await this.yuandan(call, element)
|
||||
}
|
||||
if (element.htype == 15) {
|
||||
// 检测 htype 15 黄芪酒馆活动红点
|
||||
ishd = await HQJGFun.getHongDian(call, element)
|
||||
}
|
||||
|
||||
// 此活动有红点
|
||||
if (ishd.show) {
|
||||
@ -366,22 +371,37 @@ export class HuoDongHongDianFun {
|
||||
|
||||
/**破冰礼包红点 */
|
||||
static async pobinglibao(call: ApiCall, _hd: ReqAddHuoDong): Promise<hongdianVal> {
|
||||
|
||||
let gift = _hd?.data?.gift?.find(i => i.free == true && !i.payId)
|
||||
if (gift) return {show: true}
|
||||
|
||||
let payIds = _hd?.data?.gift?.filter(i=>i.payId).map(i=>i.payId)
|
||||
|
||||
let payIds = _hd?.data?.gift?.filter(i => i.payId).map(i => i.payId)
|
||||
let payLogs = await PayFun.getPayLogs(call.uid, payIds)
|
||||
|
||||
// 取奖励列表,判断是否有可领取奖励
|
||||
let data = await G.mongodb.cEvent('pobinglibao').findOne({uid: call.uid, type: 'pobinglibao'})
|
||||
|
||||
for (let item of _hd?.data?.gift){
|
||||
let rec = data?.record?.[item.id]?.length
|
||||
if (item.free== true && !item.payId) return {show: true}
|
||||
if (payLogs[item.payId]?.length && (!rec || rec < PublicShared.getDiff(payLogs[item.payId][0].time))) return {show: true}
|
||||
for (let key in payLogs) {
|
||||
payLogs[key] = payLogs[key]?.filter(i => i.time > _hd.stime && i.time < _hd.etime) || []
|
||||
}
|
||||
|
||||
return {show:false}
|
||||
// 取奖励列表,判断是否有可领取奖励
|
||||
let data = await G.mongodb.cEvent(`pobinglibao${_hd.hdid}`).findOne({
|
||||
uid: call.uid,
|
||||
type: `pobinglibao${_hd.hdid}`
|
||||
})
|
||||
for (let item of _hd?.data?.gift) {
|
||||
if (item.free == true && !item.payId) return {show: true}
|
||||
|
||||
let payLog = payLogs[item.payId]
|
||||
if (!payLog.length) continue
|
||||
|
||||
let rec = data?.record?.[item.id]?.length
|
||||
let _payDiff = PublicShared.getDiff(payLog[0].time)
|
||||
_payDiff = _payDiff > 3 ? 3 : _payDiff
|
||||
let _endDiff = PublicShared.getDiff(_hd.etime)
|
||||
if ((rec < _payDiff)) return {show: true}
|
||||
if ((rec < 3 && _endDiff > 0)) return {show: true}
|
||||
}
|
||||
|
||||
return {show: false}
|
||||
}
|
||||
|
||||
/**元旦活动红点 */
|
||||
@ -641,6 +661,14 @@ export class HuoDongHongDianFun {
|
||||
if (_mydata?.rec.includes(index)) continue; // 已领取
|
||||
if (element.gudKey && call.conn.gud[element.gudKey] < element.total) continue; // 未达成
|
||||
if (!element.gudKey && (_mydata?.rec?.length || 0) < _con.length - 1) continue; // 大奖资格不够
|
||||
|
||||
if (element.gudKey == "zhizunyueka") {
|
||||
let logs = await PayFun.getPayLog(call.uid, "zhizunyueka");
|
||||
if (logs.length <= 0 || logs.slice(-1)[0].eTime < G.time) {
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
_res.show = true;
|
||||
break;
|
||||
}
|
||||
@ -656,7 +684,8 @@ export class HuoDongHongDianFun {
|
||||
let _con = hdCon.data.tasks;
|
||||
let db = await G.mongodb.cEvent(_dbType).findOne({uid: call.uid, type: _dbType});
|
||||
let _mydata = db || {sTime: PublicShared.getToDayZeroTime(G.time), recIndex: []};
|
||||
let payNum = await PayFun.getPayDaysAllPayNum(call.uid, hdCon.stime, hdCon.etime);
|
||||
let payNum = (await PayFun.getPayDaysAllPayNum(call.uid, hdCon.stime, hdCon.rtime)) * 10
|
||||
payNum = payNum - (db?.round || 0) * R.sort((a, b) => b.total - a.total)(hdCon.data.tasks)[0].total
|
||||
for (let index = 0; index < _con.length; index++) {
|
||||
const element = _con[index];
|
||||
if (_mydata.recIndex.includes(index)) continue;
|
||||
|
@ -30,6 +30,6 @@ export default async function (call: ApiCall<ReqOpen, ResOpen>) {
|
||||
});
|
||||
|
||||
UserFun.activeHeadFrame(call.uid, 'jjc_rank', data["rank"] + 1);
|
||||
JJCFun.checkUpdatePlayer()
|
||||
//JJCFun.checkUpdatePlayer()
|
||||
|
||||
}
|
@ -5,7 +5,7 @@ import {ReqYanShi, ResYanShi} from "../../shared/protocols/kuangdong/PtlYanShi";
|
||||
|
||||
export default async function (call: ApiCall<ReqYanShi, ResYanShi>) {
|
||||
|
||||
return call.errorCode(1)
|
||||
//return call.errorCode(1)
|
||||
|
||||
let hdid = call.req.hdid
|
||||
let con = await KuangDongfun.getCon(hdid)
|
||||
|
@ -37,7 +37,7 @@ export default async function (call: ApiCall<ReqPkBoss, ResPkBoss>) {
|
||||
let _bossMaxHp = _bossData.maxhp
|
||||
let _bossDelHp = _bossData.delhp
|
||||
/**格式化boss属性 */
|
||||
let hpjc = Number(((_bossMaxHp - _bossDelHp) / _bossMaxHp).toFixed(2)) || 0.01 // 继承血量比
|
||||
let hpjc = Number(((_bossMaxHp - _bossDelHp) / _bossMaxHp).toFixed(2)) || 0.01 // 继承血量比
|
||||
let _bossFightId = _con.army // boss 战斗id
|
||||
let _npcFightData = await LingZhuLaiXifun.getBossFightInof(_bossFightId, Number(hpjc))
|
||||
// let _npcFightData = await LingZhuLaiXifun.getBossFightInof(25, Number(hpjc)) // 测试数据
|
||||
@ -63,7 +63,6 @@ export default async function (call: ApiCall<ReqPkBoss, ResPkBoss>) {
|
||||
{ type: 'lingzhulaixi' },
|
||||
{ $set: G.mongodb.createTreeObj({ key: `maxdps.${call.req.bid}`, val: 0 }) }
|
||||
)
|
||||
|
||||
} else {
|
||||
// 超过回合,直接赋值输
|
||||
result.winSide = 1
|
||||
@ -92,12 +91,14 @@ export default async function (call: ApiCall<ReqPkBoss, ResPkBoss>) {
|
||||
}
|
||||
_mySetDat = {
|
||||
maxdps: _myData.maxdps,
|
||||
time: _myData.time,
|
||||
num: _myData.num + 1
|
||||
}
|
||||
_bossData.delhp += result.totalDamage[0]
|
||||
|
||||
}
|
||||
|
||||
// 无论挑战成功失败都扣除战斗次数
|
||||
_mySetDat["num"] = _myData.num + 1;
|
||||
_mySetDat["time"] = G.time;
|
||||
|
||||
// 设置boss数据
|
||||
await LingZhuLaiXifun.setBossData(_bossData.bid, _setData)
|
||||
await LingZhuLaiXifun.setMyData(call, { $set: _mySetDat })
|
||||
|
@ -1,32 +1,33 @@
|
||||
import { ApiCall } from "tsrpc";
|
||||
import { LingZhuLaiXifun } from "../../public/lingzhulaixi";
|
||||
import { PlayerFun } from "../../public/player";
|
||||
import { ReqSaoDang, ResSaoDang } from "../../shared/protocols/lingzhulaixi/PtlSaoDang";
|
||||
import { PublicShared } from "../../shared/public/public";
|
||||
import { HongDianChange } from "../hongdian/fun";
|
||||
import {ApiCall} from "tsrpc";
|
||||
import {LingZhuLaiXifun} from "../../public/lingzhulaixi";
|
||||
import {PlayerFun} from "../../public/player";
|
||||
import {ReqSaoDang, ResSaoDang} from "../../shared/protocols/lingzhulaixi/PtlSaoDang";
|
||||
import {PublicShared} from "../../shared/public/public";
|
||||
import {HongDianChange} from "../hongdian/fun";
|
||||
import {ActionLog} from "../../public/actionLog/actionLog";
|
||||
|
||||
export default async function (call: ApiCall<ReqSaoDang, ResSaoDang>) {
|
||||
let _con = await LingZhuLaiXifun.getCon(call.req.bid)
|
||||
if (!_con) {
|
||||
// 参数错误,无相关配置
|
||||
return call.error('', { code: -1, message: globalThis.lng.lingzhulaixi_1 })
|
||||
return call.error('', {code: -1, message: globalThis.lng.lingzhulaixi_1})
|
||||
}
|
||||
|
||||
if (call.conn.gud.lv < _con.lv) {
|
||||
// 等级不足
|
||||
return call.error('', { code: -2, message: globalThis.lng.lingzhulaixi_2 })
|
||||
return call.error('', {code: -2, message: globalThis.lng.lingzhulaixi_2})
|
||||
}
|
||||
|
||||
// boss信息
|
||||
let _bossData = await LingZhuLaiXifun.getBossData(call.req.bid)
|
||||
if (_bossData.passtime != 0) {
|
||||
// boss 未复活
|
||||
return call.error('', { code: -3, message: globalThis.lng.lingzhulaixi_4 })
|
||||
return call.error('', {code: -3, message: globalThis.lng.lingzhulaixi_4})
|
||||
}
|
||||
|
||||
if (!_bossData.pkuser[call.uid]) {
|
||||
// 未挑战过,请先去挑战
|
||||
return call.error('', { code: -4, message: globalThis.lng.lingzhulaixi_5 })
|
||||
return call.error('', {code: -4, message: globalThis.lng.lingzhulaixi_5})
|
||||
}
|
||||
|
||||
let _myData = await LingZhuLaiXifun.getUsePKNum(call)
|
||||
@ -53,7 +54,7 @@ export default async function (call: ApiCall<ReqSaoDang, ResSaoDang>) {
|
||||
|
||||
if (!prize[0]) {
|
||||
// 无奖励,没有挑战次数
|
||||
return call.error('', { code: -5, message: globalThis.lng.lingzhulaixi_6 })
|
||||
return call.error('', {code: -5, message: globalThis.lng.lingzhulaixi_6})
|
||||
}
|
||||
|
||||
let _setData // 设置数据
|
||||
@ -70,8 +71,8 @@ export default async function (call: ApiCall<ReqSaoDang, ResSaoDang>) {
|
||||
Object.assign(_bossData, _setData["$set"])
|
||||
// 清除玩家数据
|
||||
await G.mongodb.cPlayerInfo('lingzhulaixi').updateMany(
|
||||
{ type: 'lingzhulaixi' },
|
||||
{ $set: G.mongodb.createTreeObj({ key: `maxdps.${call.req.bid}`, val: 0 }) }
|
||||
{type: 'lingzhulaixi'},
|
||||
{$set: G.mongodb.createTreeObj({key: `maxdps.${call.req.bid}`, val: 0})}
|
||||
)
|
||||
} else {
|
||||
_setData = {
|
||||
@ -85,12 +86,14 @@ export default async function (call: ApiCall<ReqSaoDang, ResSaoDang>) {
|
||||
|
||||
// 设置boss数据
|
||||
await LingZhuLaiXifun.setBossData(_bossData.bid, _setData)
|
||||
await LingZhuLaiXifun.setMyData(call, { $inc: { num: _num } })
|
||||
await LingZhuLaiXifun.setMyData(call, {$inc: {num: _num}, $set: {time: G.time}})
|
||||
|
||||
// 发奖
|
||||
prize = PublicShared.mergePrize(prize)
|
||||
await PlayerFun.sendPrize(call, prize)
|
||||
|
||||
ActionLog.addDayLog(call.uid, {key: "lingzhulaixi/PkBoss", val: _num});
|
||||
|
||||
// 扣除挑战次数
|
||||
_myData.num += _num
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
import { ApiCall } from "tsrpc";
|
||||
import { PataFun } from "../../public/pata";
|
||||
import { PlayerFun } from "../../public/player";
|
||||
import { ReqSaoDang, ResSaoDang } from "../../shared/protocols/pata/PtlSaoDang";
|
||||
import { PlayerShared } from '../../shared/public/player';
|
||||
import { PublicShared } from "../../shared/public/public";
|
||||
import { HongDianChange } from "../hongdian/fun";
|
||||
import {ApiCall} from "tsrpc";
|
||||
import {PataFun} from "../../public/pata";
|
||||
import {PlayerFun} from "../../public/player";
|
||||
import {ReqSaoDang, ResSaoDang} from "../../shared/protocols/pata/PtlSaoDang";
|
||||
import {PlayerShared} from '../../shared/public/player';
|
||||
import {PublicShared} from "../../shared/public/public";
|
||||
import {HongDianChange} from "../hongdian/fun";
|
||||
|
||||
export default async function (call: ApiCall<ReqSaoDang, ResSaoDang>) {
|
||||
let changeInfo = await PataFun.getInfo(call.uid);
|
||||
@ -25,11 +25,11 @@ export default async function (call: ApiCall<ReqSaoDang, ResSaoDang>) {
|
||||
|
||||
changeInfo.saodangNum = call.req.num + (changeInfo?.saodangNum || 0);
|
||||
// 改变的数据
|
||||
let setData = {
|
||||
saodangNum: changeInfo.saodangNum
|
||||
};
|
||||
// let setData = {
|
||||
// saodangNum: changeInfo.saodangNum
|
||||
// };
|
||||
// 设置数据
|
||||
await PataFun.changeInfo(call.uid, changeInfo.sid, { $set: setData });
|
||||
await PataFun.changeInfo(call.uid, changeInfo.sid, {"$inc": {saodangNum: call.req.num}});
|
||||
_prize = await PlayerFun.sendPrize(call, _prize);
|
||||
|
||||
let data = {
|
||||
|
@ -1,12 +1,38 @@
|
||||
import {ApiCall} from "tsrpc";
|
||||
import {ReqGetList, ResGetList} from "../../shared/protocols/peijian/PtlGetList";
|
||||
import { connGameLogDB } from "../../gameLog";
|
||||
import {PeiJian, ReqGetList, ResGetList} from "../../shared/protocols/peijian/PtlGetList";
|
||||
import { PeijianShared } from "../../shared/public/peijian";
|
||||
|
||||
export default async function (call: ApiCall<ReqGetList, ResGetList>) {
|
||||
let _maxLv = 0
|
||||
let color = {}
|
||||
let peijianCon = G.gc.peijian
|
||||
|
||||
//所有上阵的英雄_id
|
||||
let heroIds = R.values(call.conn.gud.heroPos)
|
||||
//将所有未上阵的英雄的配件卸下
|
||||
if(heroIds.length>0){
|
||||
let _ids = heroIds.map(_id => G.mongodb.conversionId(_id));
|
||||
await G.mongodb.collection("hero").updateMany({uid: call.conn.uid},{
|
||||
$set:{
|
||||
peijian:{}
|
||||
}
|
||||
});
|
||||
}
|
||||
//如果配件穿戴在了未上阵的hero身上,则执行卸下操作
|
||||
await G.mongodb.collection('peijian').updateMany({uid: call.conn.uid, wearId: {$nin: heroIds}}, {$set: {wearId: ''}})
|
||||
|
||||
|
||||
let heroPeiJian = {};
|
||||
let dbList = (await G.mongodb.collection('peijian').find({uid: call.uid}).toArray()).map(p => {
|
||||
|
||||
if(p.wearId){
|
||||
if(!heroPeiJian[ p.wearId ]){
|
||||
heroPeiJian[ p.wearId ] = {};
|
||||
}
|
||||
heroPeiJian[ p.wearId ][ Object.keys(heroPeiJian[ p.wearId ]).length + 1 ] = PeijianShared.fmt( p as any )
|
||||
}
|
||||
|
||||
let np = G.mongodb.conversionIdObj(p);
|
||||
let {uid, ...ops} = np;
|
||||
|
||||
@ -16,17 +42,25 @@ export default async function (call: ApiCall<ReqGetList, ResGetList>) {
|
||||
return ops;
|
||||
});
|
||||
|
||||
// 修复配件穿戴在不存在的英雄身上
|
||||
let heroIds = R.values(call.conn.gud.heroPos)
|
||||
let fixIds = dbList.filter(i => i.wearId && !heroIds.includes(i.wearId)).map(i => G.mongodb.conversionId(i._id))
|
||||
if (fixIds.length) {
|
||||
await G.mongodb.collection('peijian').updateMany({_id: {$in: fixIds}}, {$set: {wearId: ''}})
|
||||
//对hero的peijian字段进行修正
|
||||
if(Object.keys(heroPeiJian).length > 0){
|
||||
for(let heroid in heroPeiJian){
|
||||
await G.mongodb.collection("hero").updateOne({
|
||||
uid : call.conn.uid,
|
||||
_id : G.mongodb.conversionId(heroid)
|
||||
},{
|
||||
$set:{
|
||||
peijian : heroPeiJian[heroid]
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// 记录玩家最大等级,颜色相关数据 注册任务用
|
||||
await G.mongodb.collection('playerInfo', 'usertasklog').updateOne({uid: call.conn.uid, type: 'usertasklog'},
|
||||
{$set: {maxpeijianlv: _maxLv, peijiancolor: color}}, {upsert: true})
|
||||
|
||||
|
||||
let list = Object.fromEntries(dbList.map(p => [G.formatRedisKey(p._id), p]));
|
||||
G.redis.set('peijian', call.uid, list);
|
||||
|
||||
|
@ -41,13 +41,16 @@ export default async function (call: ApiCall<ReqOpen, ResOpen>) {
|
||||
},
|
||||
{ upsert: true }
|
||||
);
|
||||
} else if (data.fightNum < G.gc.slzd.maxFightNum && G.time - data.replyCd > G.gc.slzd.replyCd) {
|
||||
let addNum = Math.floor((G.time - data.replyCd) / G.gc.slzd.replyCd);
|
||||
let maxAddNum = G.gc.slzd.maxFightNum - data.fightNum;
|
||||
data.fightNum += addNum > maxAddNum ? maxAddNum : addNum;
|
||||
data.replyCd = G.time;
|
||||
G.mongodb.collection('slzdUser').updateOne({ uid: call.uid }, { $set: { 'data.fightNum': data.fightNum, 'data.replyCd': data.replyCd } });
|
||||
}
|
||||
|
||||
//不需要回复次数
|
||||
// else if (data.fightNum < G.gc.slzd.maxFightNum && G.time - data.replyCd > G.gc.slzd.replyCd) {
|
||||
// let addNum = Math.floor((G.time - data.replyCd) / G.gc.slzd.replyCd);
|
||||
// let maxAddNum = G.gc.slzd.maxFightNum - data.fightNum;
|
||||
// data.fightNum += addNum > maxAddNum ? maxAddNum : addNum;
|
||||
// data.replyCd = G.time;
|
||||
// G.mongodb.collection('slzdUser').updateOne({ uid: call.uid }, { $set: { 'data.fightNum': data.fightNum, 'data.replyCd': data.replyCd } });
|
||||
// }
|
||||
|
||||
let { refreshTime, ...ops } = data;
|
||||
call.succ({
|
||||
|
@ -1,12 +1,12 @@
|
||||
import { ApiCall } from "tsrpc";
|
||||
import { PlayerFun } from '../../public/player';
|
||||
import { TanXianFun } from '../../public/tanxian';
|
||||
import { TeQuanFun } from "../../public/tequan";
|
||||
import { ReqFastGuaJi, ResFastGuaJi } from "../../shared/protocols/tanxian/PtlFastGuaJi";
|
||||
import { TanXianShared } from '../../shared/public/tanxian';
|
||||
import { event_dldh_addPrize } from '../event/diaoluoduihuan/ApiOpen';
|
||||
import { HongDianChange } from "../hongdian/fun";
|
||||
import { getEventPrize } from './ApiEvent';
|
||||
import {ApiCall} from "tsrpc";
|
||||
import {PlayerFun} from '../../public/player';
|
||||
import {TanXianFun} from '../../public/tanxian';
|
||||
import {TeQuanFun} from "../../public/tequan";
|
||||
import {ReqFastGuaJi, ResFastGuaJi} from "../../shared/protocols/tanxian/PtlFastGuaJi";
|
||||
import {TanXianShared} from '../../shared/public/tanxian';
|
||||
import {event_dldh_addPrize} from '../event/diaoluoduihuan/ApiOpen';
|
||||
import {HongDianChange} from "../hongdian/fun";
|
||||
import {getEventPrize} from './ApiEvent';
|
||||
|
||||
export default async function (call: ApiCall<ReqFastGuaJi, ResFastGuaJi>) {
|
||||
|
||||
@ -18,10 +18,14 @@ export default async function (call: ApiCall<ReqFastGuaJi, ResFastGuaJi>) {
|
||||
let freeNum = G.gc.tanxian_com.fastGuaJiFreeNum + tqFree
|
||||
|
||||
// let notFree = data.useFastGuaJiNum >= freeNum && ((data?.zztqfreeNum || 0) >= tqFree && tqFree) && (data?.useFreeGuaJiNum || 0) <= freeNum
|
||||
let notFree = (data?.useFreeGuaJiNum || 0) >= freeNum
|
||||
let notFree = (data?.useFreeGuaJiNum || 0) >= freeNum
|
||||
if (notFree) {
|
||||
let num = G.gc.tanxian_com.fastGuaJiNeed[data.useFastGuaJiNum - freeNum ] || 0;
|
||||
let need = [{ a: 'attr', t: 'rmbmoney', n: num ? num : G.gc.tanxian_com.fastGuaJiNeed[G.gc.tanxian_com.fastGuaJiNeed.length - 1] }];
|
||||
let num = G.gc.tanxian_com.fastGuaJiNeed[data.useFastGuaJiNum - freeNum] || 0;
|
||||
let need = [{
|
||||
a: 'attr',
|
||||
t: 'rmbmoney',
|
||||
n: num ? num : G.gc.tanxian_com.fastGuaJiNeed[G.gc.tanxian_com.fastGuaJiNeed.length - 1]
|
||||
}];
|
||||
await PlayerFun.checkNeedIsMeet(call, need);
|
||||
await PlayerFun.cutNeed(call, need);
|
||||
}
|
||||
@ -32,15 +36,15 @@ export default async function (call: ApiCall<ReqFastGuaJi, ResFastGuaJi>) {
|
||||
let eventPrize = getEventPrize(call.conn.gud.lv, G.gc.tanxian_com.fastGuaJiTime, call.conn.gud.mapId, call.conn.gud.wxcLv?.lv);
|
||||
let _p = [].concat(prize.prize, prize.dlz, eventPrize.prize);
|
||||
// 过滤物品数量为0的道具。
|
||||
_p = _p.filter(x => x.n > 0)
|
||||
_p = _p.filter(x => x.n > 0)
|
||||
// await event_dldh_addPrize(_p, call, G.gc.tanxian_com.fastGuaJiTime);
|
||||
await PlayerFun.sendPrize(call, _p);
|
||||
|
||||
let setData = { useFastGuaJiNum: data.useFastGuaJiNum + 1, useFreeGuaJiNum: (data?.useFreeGuaJiNum || 0) + (notFree ? 0 : 1)}
|
||||
if ((data?.zztqfreeNum || 0) < tqFree && tqFree) setData["zztqfreeNum"] = tqFree
|
||||
TanXianFun.changeData(call, setData);
|
||||
|
||||
// (await call.conn.gonghui)?.addExp(20, call.uid);
|
||||
// let setData = { useFastGuaJiNum: data.useFastGuaJiNum + 1, useFreeGuaJiNum: (data?.useFreeGuaJiNum || 0) + (notFree ? 0 : 1)}
|
||||
let setData = {$inc: {useFastGuaJiNum: 1, useFreeGuaJiNum: (notFree ? 0 : 1)}}
|
||||
// if ((data?.zztqfreeNum || 0) < tqFree && tqFree) setData["zztqfreeNum"] = tqFree
|
||||
if ((data?.zztqfreeNum || 0) < tqFree && tqFree) setData["$set"] = {zztqfreeNum: tqFree}
|
||||
await TanXianFun.changeDataNew(call, setData);
|
||||
|
||||
HongDianChange.sendChangeKey(call.uid, ['taskhd', 'huodonghd']);
|
||||
|
||||
|
17
src/api_s2c/weiwang/ApiOpen.ts
Normal file
17
src/api_s2c/weiwang/ApiOpen.ts
Normal file
@ -0,0 +1,17 @@
|
||||
import { ApiCall } from "tsrpc";
|
||||
import { ReqOpen, ResOpen } from "../../shared/protocols/weiwang/PtlOpen";
|
||||
|
||||
export default async function (call: ApiCall<ReqOpen, ResOpen>) {
|
||||
let data = await G.mongodb.collection("weiwang").findOne({ uid: call.uid });
|
||||
|
||||
if (!data) {
|
||||
// 初始化威望数据
|
||||
data = (await G.mongodb.collection("weiwang").findOneAndUpdate(
|
||||
{ uid: call.uid },
|
||||
{ $set: { hp: 0, atk: 0, def: 0 } },
|
||||
{ upsert: true, returnDocument: "after" }
|
||||
)).value;
|
||||
}
|
||||
|
||||
call.succ({ lv: { hp: data.hp, atk: data.atk, def: data.def } });
|
||||
}
|
94
src/api_s2c/weiwang/ApiUpLv.ts
Normal file
94
src/api_s2c/weiwang/ApiUpLv.ts
Normal file
@ -0,0 +1,94 @@
|
||||
import { ApiCall } from "tsrpc";
|
||||
import { ReqUpLv, ResUpLv } from "../../shared/protocols/weiwang/PtlUpLv";
|
||||
import { PlayerFun } from "../../public/player";
|
||||
|
||||
|
||||
export default async function (call: ApiCall<ReqUpLv, ResUpLv>) {
|
||||
let data = await G.mongodb.collection("weiwang").findOne({ uid: call.uid });
|
||||
|
||||
if (!data) {
|
||||
// 初始化威望数据
|
||||
data = (await G.mongodb.collection("weiwang").findOneAndUpdate(
|
||||
{ uid: call.uid },
|
||||
{ $set: { hp: 0, atk: 0, def: 0 } },
|
||||
{ upsert: true, returnDocument: "after" }
|
||||
)).value;
|
||||
}
|
||||
|
||||
let cur_lv = data[call.req.type];
|
||||
let min_lv = Math.min(data.atk, data.def, data.hp);
|
||||
|
||||
let ids = Object.keys(G.gc.renown_level).sort(
|
||||
(a, b) => Number(a) - Number(b)
|
||||
);
|
||||
|
||||
let config;
|
||||
for (let id of ids) {
|
||||
config = G.gc.renown_level[id];
|
||||
if (min_lv < config.maxlevel) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 超过档期威望的最大等级
|
||||
if (cur_lv + call.req.lv > config.maxlevel) {
|
||||
return call.error("", { code: -1, message: lng.weiwang_12 });
|
||||
}
|
||||
|
||||
let need = [{ a: config.cost[0].a, t: config.cost[0].t, n: config.cost[0].n * call.req.lv }];
|
||||
|
||||
// 检测消耗是否足够
|
||||
await PlayerFun.checkNeedIsMeet(call, need);
|
||||
|
||||
// 扣除消耗
|
||||
await PlayerFun.cutNeed(call, need);
|
||||
|
||||
data[call.req.type] += call.req.lv;
|
||||
|
||||
// 重新计算buff
|
||||
let buff = calc_weiwang_buff(data.atk, data.def, data.hp);
|
||||
G.mongodb.collection("weiwang").updateOne({ uid: call.uid }, {
|
||||
$set: { buff: buff },
|
||||
$inc: { [call.req.type]: call.req.lv },
|
||||
});
|
||||
|
||||
call.succ({ lv: { hp: data.hp, atk: data.atk, def: data.def } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算当前威望buff
|
||||
*/
|
||||
function calc_weiwang_buff(atk: number, def: number, hp: number) {
|
||||
let buff: k_v<number> = {
|
||||
"hp": 0, "def": 0, "atk": 0
|
||||
};
|
||||
|
||||
let ids = Object.keys(G.gc.renown_level).sort(
|
||||
(a, b) => Number(a) - Number(b)
|
||||
);
|
||||
|
||||
for (let i = 0; i < ids.length; i++) {
|
||||
let curr = G.gc.renown_level[ids[i]];
|
||||
if (i == 0) {
|
||||
buff["hp"] += curr.hp * Math.min(curr.maxlevel, hp);
|
||||
buff["atk"] += curr.atk * Math.min(curr.maxlevel, atk);
|
||||
buff["def"] += curr.def * Math.min(curr.maxlevel, def);
|
||||
} else {
|
||||
let prev = G.gc.renown_level[ids[i - 1]];
|
||||
|
||||
if (hp > prev.maxlevel) {
|
||||
buff["hp"] += curr.hp * Math.min(hp - prev.maxlevel, curr.maxlevel - prev.maxlevel);
|
||||
}
|
||||
|
||||
if (atk > prev.maxlevel) {
|
||||
buff["atk"] += curr.atk * Math.min(atk - prev.maxlevel, curr.maxlevel - prev.maxlevel);
|
||||
}
|
||||
|
||||
if (def > prev.maxlevel) {
|
||||
buff["def"] += curr.def * Math.min(def - prev.maxlevel, curr.maxlevel - prev.maxlevel);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return buff;
|
||||
}
|
@ -1,9 +1,10 @@
|
||||
import { ApiCall } from "tsrpc";
|
||||
import { HeroFun } from '../../public/hero';
|
||||
import { XstaskFun } from '../../public/xstask';
|
||||
import { ReqOnekeyReceive, ResOnekeyReceive } from "../../shared/protocols/xstask/PtlOnekeyReceive";
|
||||
import { HeroShared } from '../../shared/public/hero';
|
||||
import { HongDianChange } from "../hongdian/fun";
|
||||
import {ApiCall} from "tsrpc";
|
||||
import { addGameLog } from "../../gameLog";
|
||||
import {HeroFun} from '../../public/hero';
|
||||
import {XstaskFun} from '../../public/xstask';
|
||||
import {ReqOnekeyReceive, ResOnekeyReceive} from "../../shared/protocols/xstask/PtlOnekeyReceive";
|
||||
import {HeroShared} from '../../shared/public/hero';
|
||||
import {HongDianChange} from "../hongdian/fun";
|
||||
|
||||
export default async function (call: ApiCall<ReqOnekeyReceive, ResOnekeyReceive>) {
|
||||
|
||||
@ -33,7 +34,9 @@ export default async function (call: ApiCall<ReqOnekeyReceive, ResOnekeyReceive>
|
||||
if (heroList.length != heroIds.length) return call.error(globalThis.lng.xstask_6);
|
||||
|
||||
let change: ResOnekeyReceive = {};
|
||||
let lockNum = event?.receiveNum || 0
|
||||
for (let receive of args) {
|
||||
if (lockNum >= 8) continue
|
||||
let task = taskList.find(task => task._id == receive._id);
|
||||
let taskConf = G.gc.xstask[task.taskId];
|
||||
|
||||
@ -43,8 +46,9 @@ export default async function (call: ApiCall<ReqOnekeyReceive, ResOnekeyReceive>
|
||||
let star = heros.map(h => G.gc.hero[h.heroId].star).reduce((a, b) => a + b);
|
||||
if (star < taskConf.needStar) return call.error(globalThis.lng.xstask_8);
|
||||
|
||||
change[receive._id] = { time: G.time, heros: receive.heroIds };
|
||||
change[receive._id] = {time: G.time, heros: receive.heroIds};
|
||||
XstaskFun.receiveNum(call.uid)
|
||||
lockNum += 1
|
||||
}
|
||||
|
||||
Object.entries(change).forEach(([k, v]) => {
|
||||
@ -53,4 +57,6 @@ export default async function (call: ApiCall<ReqOnekeyReceive, ResOnekeyReceive>
|
||||
HongDianChange.sendChangeKey(call.uid, ['xstaskhd', 'huodonghd']);
|
||||
|
||||
call.succ(change);
|
||||
|
||||
addGameLog(call.uid, "_onekeyReceive", {}, change)
|
||||
}
|
@ -13,7 +13,7 @@ import { ResLogin } from './shared/protocols/user/PtlLogin';
|
||||
import { HeroShared, otherBuff } from './shared/public/hero';
|
||||
import { PlayerShared } from './shared/public/player';
|
||||
import { PublicShared } from './shared/public/public';
|
||||
import {RankKfjs} from "./public/rank/rank_kfjs";
|
||||
import { RankKfjs } from "./public/rank/rank_kfjs";
|
||||
import { setGud } from './public/gud';
|
||||
|
||||
export function extendType() {
|
||||
@ -51,7 +51,7 @@ declare module 'tsrpc' {
|
||||
/**API 锁 */
|
||||
apiLock: k_v<number>;
|
||||
/**获取默认上阵战斗数据 */
|
||||
getDefaultFightData(def?: k_v<string>): Promise<joinFightData>;
|
||||
getDefaultFightData(def?: k_v<string>, ext_buff?: { [type: string]: k_v<number> }): Promise<joinFightData>;
|
||||
/**刷新上阵英雄战力 */
|
||||
refreshPower(): Promise<any>;
|
||||
/**玩家计算在线时长时间戳 */
|
||||
@ -124,7 +124,7 @@ Object.defineProperties(BaseConnection.prototype, {
|
||||
},
|
||||
});
|
||||
|
||||
BaseConnection.prototype.getDefaultFightData = async function (this: BaseConnection, def?: k_v<string>) {
|
||||
BaseConnection.prototype.getDefaultFightData = async function (this: BaseConnection, def?: k_v<string>, ext_buff?: { [type: string]: k_v<number> }) {
|
||||
let posObj = def || this.heroPos;
|
||||
let roles: k_v<roleDataType> = {};
|
||||
|
||||
@ -143,7 +143,11 @@ BaseConnection.prototype.getDefaultFightData = async function (this: BaseConnect
|
||||
roles[pos] = {
|
||||
...hero,
|
||||
attr: {
|
||||
...HeroShared.getHeroBasicAttr(hero, { ...this.otherBuff, allBuff: HeroShared.getAllBuff(heros) }, Number(pos))
|
||||
...HeroShared.getHeroBasicAttr(hero, {
|
||||
...ext_buff,
|
||||
...this.otherBuff,
|
||||
allBuff: HeroShared.getAllBuff(heros)
|
||||
}, Number(pos))
|
||||
}
|
||||
};
|
||||
}
|
||||
@ -188,40 +192,40 @@ BaseConnection.prototype.refreshPower = async function (this: BaseConnection<Ser
|
||||
zj_zhishi: 0
|
||||
}
|
||||
// 主角等级属性获取
|
||||
|
||||
|
||||
zjBuff.zj_atk += PublicShared.eval(G.gc.com.zjcz_atk.value as any as string, { lv: this.gud.lv })
|
||||
zjBuff.zj_def += PublicShared.eval(G.gc.com.zjcz_def.value as any as string, { lv: this.gud.lv })
|
||||
zjBuff.zj_liliang += PublicShared.eval(G.gc.com.zjcz_liliang.value as any as string, { lv: this.gud.lv })
|
||||
zjBuff.zj_zhishi += PublicShared.eval(G.gc.com.zjcz_zhishi.value as any as string, { lv: this.gud.lv })
|
||||
// 图鉴属性获取
|
||||
for(let i = 1; i <= this.gud.tujianLv; i++) {
|
||||
for (let i = 1; i <= this.gud.tujianLv; i++) {
|
||||
let item = G.gc.tujian_jc[i]
|
||||
if(item) {
|
||||
if (item) {
|
||||
// 各等级累加
|
||||
for(let k in item.buff) {
|
||||
for (let k in item.buff) {
|
||||
zjBuff[k] += item.buff[k]
|
||||
}
|
||||
}
|
||||
}
|
||||
// 名望属性加成
|
||||
if(this.gud.renown > 0) {
|
||||
if (this.gud.renown > 0) {
|
||||
let mwConf = G.gc.mw_dj
|
||||
// 各等级累加
|
||||
for(let i = 1; i <= this.gud.renown; i++) {
|
||||
for (let i = 1; i <= this.gud.renown; i++) {
|
||||
let mwData = mwConf[i]
|
||||
for(let k in mwData.buff) {
|
||||
for (let k in mwData.buff) {
|
||||
zjBuff[k] += mwData.buff[k]
|
||||
}
|
||||
}
|
||||
}
|
||||
// 训练计划加成
|
||||
let skillConf = G.gc.xunlianjihua
|
||||
if(this.gud.skills) {
|
||||
for(let i in this.gud.skills) {
|
||||
if (this.gud.skills) {
|
||||
for (let i in this.gud.skills) {
|
||||
let item = skillConf[i]
|
||||
for(let j in zjBuff) {
|
||||
if((j + 'pro') == item.skill) {
|
||||
zjBuff[j] += Math.floor(zjBuff[j] * PublicShared.eval(item.v, { slv: this.gud.skills[i]}))
|
||||
for (let j in zjBuff) {
|
||||
if ((j + 'pro') == item.skill) {
|
||||
zjBuff[j] += Math.floor(zjBuff[j] * PublicShared.eval(item.v, { slv: this.gud.skills[i] }))
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -238,15 +242,15 @@ BaseConnection.prototype.refreshPower = async function (this: BaseConnection<Ser
|
||||
// console.log(zjBuff)
|
||||
if (power != this.gud.power) {
|
||||
let dbUpdate = { power: power };
|
||||
if(power > this.gud?.maxpower){
|
||||
if (power > this.gud?.maxpower) {
|
||||
//记录历史最大战力
|
||||
//this.gud.maxpower = power;
|
||||
dbUpdate['maxpower'] = power;
|
||||
}
|
||||
|
||||
//this.gud.power = power;
|
||||
setGud(this.uid,dbUpdate);
|
||||
|
||||
setGud(this.uid, dbUpdate);
|
||||
|
||||
G.mongodb.collection('user').updateOne({ uid: this.uid }, { $set: dbUpdate });
|
||||
this.sendMsg('msg_s2c/PlayerChange', dbUpdate);
|
||||
|
||||
@ -310,9 +314,9 @@ ApiCall.prototype.addEventMsg = function (this: ApiCall) {
|
||||
if (!this.eventMsg[msgName][msgKey]) this.eventMsg[msgName][msgKey] = {};
|
||||
PublicShared.mergeProperty(this.eventMsg[msgName][msgKey], msg);
|
||||
} else {
|
||||
if(doubleApi.includes(this.service?.name) && this.service?.type=='api'&& Object.keys(this.eventMsg[msgName])[0]==Object.keys(msgKey)[0]){
|
||||
if (doubleApi.includes(this.service?.name) && this.service?.type == 'api' && Object.keys(this.eventMsg[msgName])[0] == Object.keys(msgKey)[0]) {
|
||||
this.eventMsg[msgName] = msgKey
|
||||
}else {
|
||||
} else {
|
||||
PublicShared.mergeProperty(this.eventMsg[msgName], msgKey);
|
||||
}
|
||||
}
|
||||
|
679
src/fix_patch/patch_2024.1.4.ts
Normal file
679
src/fix_patch/patch_2024.1.4.ts
Normal file
@ -0,0 +1,679 @@
|
||||
import {patchInit} from "../patch";
|
||||
// import {addGameLog, connGameLogDB} from "../gameLog";
|
||||
import {MongoClient} from "mongodb";
|
||||
|
||||
class Path {
|
||||
|
||||
async fun1(a: any) {
|
||||
|
||||
hdlist.map(i => {
|
||||
// @ts-ignore
|
||||
G.mongodb.collection('hdinfo').updateOne({hdid: i.hdid}, {$set: i}, {upsert: true})
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
|
||||
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();
|
||||
|
||||
|
||||
let hdlist = [
|
||||
{
|
||||
"hdid": 102, // 唯一活动id 人才计划
|
||||
"htype": 1, // 后端唯一识别标识(1:养成目标)
|
||||
"stype": 101, // 前端唯一识别标识(看前端需要是否修改)
|
||||
"ttype": 0, // 0 按照开服时间计算,1 玩家注册时间计算 4 屏蔽此活动
|
||||
"stime": 28, // 活动开始天数
|
||||
"rtime": 35, // 活动显示结束天数
|
||||
"etime": 35, // 活动实际结束
|
||||
"name": "intr_ychd_title_3",
|
||||
"icon": "dfry_rcjh",
|
||||
"showtime": "仅供参考,会复写正确值",
|
||||
"data": {
|
||||
//轮数抽卡 mfmid 168318
|
||||
//活动文本描述 0-每日登录 1-每日任务 2-活动任务 3-一次性任务 4-活动商店
|
||||
intr2: 'intr_yczm_tips_3',
|
||||
intr4: 'intr_yczm_tips_4',
|
||||
//活动名称
|
||||
name: 'intr_ychd_title_3',
|
||||
//活动icon
|
||||
icon: 'icon_ydlb',
|
||||
//页签名称 0-每日登录 1-每日任务 2-活动任务 3-一次性任务 4-活动商店
|
||||
tab2: 'intr_ychd_tab_name_4',
|
||||
tab4: 'intr_ychd_tab_name_5',
|
||||
//界面跳转 0-每日登录 1-每日任务 2-活动任务 3-一次性任务 4-活动商店
|
||||
'2': '9',
|
||||
//礼包
|
||||
gift: [
|
||||
{
|
||||
index: 0,
|
||||
need: [{'a': 'attr', t: 'rmbmoney', 'n': 0}],
|
||||
free: true,
|
||||
payId: '',
|
||||
buyNum: 1,
|
||||
prize: [{'a': 'item', 't': '4', 'n': 5}]
|
||||
},
|
||||
{
|
||||
index: 1,
|
||||
need: [],
|
||||
free: false,
|
||||
payId: 'ycmb_2_1',
|
||||
buyNum: 1,
|
||||
prize: [{'a': 'attr', 't': 'rmbmoney', 'n': 300}, {
|
||||
'a': 'attr',
|
||||
't': 'rmbmoney',
|
||||
'n': 300
|
||||
}, {'a': 'item', 't': '4', 'n': 5}, {'a': 'item', 't': '4', 'n': 5}]
|
||||
},
|
||||
{
|
||||
index: 2,
|
||||
need: [],
|
||||
free: false,
|
||||
payId: 'ycmb_2_2',
|
||||
buyNum: 1,
|
||||
prize: [{'a': 'attr', 't': 'rmbmoney', 'n': 680}, {
|
||||
'a': 'attr',
|
||||
't': 'rmbmoney',
|
||||
'n': 680
|
||||
}, {'a': 'item', 't': '4', 'n': 10}, {'a': 'item', 't': '4', 'n': 10}]
|
||||
},
|
||||
{
|
||||
index: 3,
|
||||
need: [],
|
||||
free: false,
|
||||
payId: 'ycmb_2_3',
|
||||
buyNum: 1,
|
||||
prize: [{'a': 'attr', 't': 'rmbmoney', 'n': 1280}, {
|
||||
'a': 'attr',
|
||||
't': 'rmbmoney',
|
||||
'n': 1280
|
||||
}, {'a': 'item', 't': '4', 'n': 25}, {'a': 'item', 't': '4', 'n': 25}]
|
||||
},
|
||||
{
|
||||
index: 4,
|
||||
need: [],
|
||||
free: false,
|
||||
payId: 'ycmb_2_4',
|
||||
buyNum: 3,
|
||||
prize: [{'a': 'attr', 't': 'rmbmoney', 'n': 3280}, {
|
||||
'a': 'attr',
|
||||
't': 'rmbmoney',
|
||||
'n': 3280
|
||||
}, {'a': 'item', 't': '4', 'n': 50}, {'a': 'item', 't': '4', 'n': 50}]
|
||||
},
|
||||
{
|
||||
index: 4,
|
||||
need: [],
|
||||
free: false,
|
||||
payId: 'ycmb_2_5',
|
||||
buyNum: 10,
|
||||
prize: [{'a': 'attr', 't': 'rmbmoney', 'n': 6480}, {
|
||||
'a': 'attr',
|
||||
't': 'rmbmoney',
|
||||
'n': 6480
|
||||
}, {'a': 'item', 't': '4', 'n': 100}, {'a': 'item', 't': '4', 'n': 100}]
|
||||
}
|
||||
],
|
||||
//任务相关 type 1 每日任务(每天刷新) 2 活动任务(轮数) 3 每日登录 4-一次性任务 任务hdid一定要唯一
|
||||
maxlun: [[2], 5],
|
||||
tasklist: {
|
||||
'2': {
|
||||
'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': '600', '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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"hdid": 103, // 唯一活动id 人才计划
|
||||
"htype": 1, // 后端唯一识别标识(1:养成目标)
|
||||
"stype": 101, // 前端唯一识别标识(看前端需要是否修改)
|
||||
"ttype": 0, // 0 按照开服时间计算,1 玩家注册时间计算 4 屏蔽此活动
|
||||
"stime": 42, // 活动开始天数
|
||||
"rtime": 49, // 活动显示结束天数
|
||||
"etime": 49, // 活动实际结束
|
||||
"name": "intr_ychd_title_3",
|
||||
"icon": "dfry_rcjh",
|
||||
"showtime": "仅供参考,会复写正确值",
|
||||
"data": {
|
||||
//轮数抽卡 mfmid 168318
|
||||
//活动文本描述 0-每日登录 1-每日任务 2-活动任务 3-一次性任务 4-活动商店
|
||||
intr2: 'intr_yczm_tips_3',
|
||||
intr4: 'intr_yczm_tips_4',
|
||||
//活动名称
|
||||
name: 'intr_ychd_title_3',
|
||||
//活动icon
|
||||
icon: 'icon_ydlb',
|
||||
//页签名称 0-每日登录 1-每日任务 2-活动任务 3-一次性任务 4-活动商店
|
||||
tab2: 'intr_ychd_tab_name_4',
|
||||
tab4: 'intr_ychd_tab_name_5',
|
||||
//界面跳转 0-每日登录 1-每日任务 2-活动任务 3-一次性任务 4-活动商店
|
||||
'2': '9',
|
||||
//礼包
|
||||
gift: [
|
||||
{
|
||||
index: 0,
|
||||
need: [{'a': 'attr', t: 'rmbmoney', 'n': 0}],
|
||||
free: true,
|
||||
payId: '',
|
||||
buyNum: 1,
|
||||
prize: [{'a': 'item', 't': '4', 'n': 5}]
|
||||
},
|
||||
{
|
||||
index: 1,
|
||||
need: [],
|
||||
free: false,
|
||||
payId: 'ycmb_2_1',
|
||||
buyNum: 1,
|
||||
prize: [{'a': 'attr', 't': 'rmbmoney', 'n': 300}, {
|
||||
'a': 'attr',
|
||||
't': 'rmbmoney',
|
||||
'n': 300
|
||||
}, {'a': 'item', 't': '4', 'n': 5}, {'a': 'item', 't': '4', 'n': 5}]
|
||||
},
|
||||
{
|
||||
index: 2,
|
||||
need: [],
|
||||
free: false,
|
||||
payId: 'ycmb_2_2',
|
||||
buyNum: 1,
|
||||
prize: [{'a': 'attr', 't': 'rmbmoney', 'n': 680}, {
|
||||
'a': 'attr',
|
||||
't': 'rmbmoney',
|
||||
'n': 680
|
||||
}, {'a': 'item', 't': '4', 'n': 10}, {'a': 'item', 't': '4', 'n': 10}]
|
||||
},
|
||||
{
|
||||
index: 3,
|
||||
need: [],
|
||||
free: false,
|
||||
payId: 'ycmb_2_3',
|
||||
buyNum: 1,
|
||||
prize: [{'a': 'attr', 't': 'rmbmoney', 'n': 1280}, {
|
||||
'a': 'attr',
|
||||
't': 'rmbmoney',
|
||||
'n': 1280
|
||||
}, {'a': 'item', 't': '4', 'n': 25}, {'a': 'item', 't': '4', 'n': 25}]
|
||||
},
|
||||
{
|
||||
index: 4,
|
||||
need: [],
|
||||
free: false,
|
||||
payId: 'ycmb_2_4',
|
||||
buyNum: 3,
|
||||
prize: [{'a': 'attr', 't': 'rmbmoney', 'n': 3280}, {
|
||||
'a': 'attr',
|
||||
't': 'rmbmoney',
|
||||
'n': 3280
|
||||
}, {'a': 'item', 't': '4', 'n': 50}, {'a': 'item', 't': '4', 'n': 50}]
|
||||
},
|
||||
{
|
||||
index: 4,
|
||||
need: [],
|
||||
free: false,
|
||||
payId: 'ycmb_2_5',
|
||||
buyNum: 10,
|
||||
prize: [{'a': 'attr', 't': 'rmbmoney', 'n': 6480}, {
|
||||
'a': 'attr',
|
||||
't': 'rmbmoney',
|
||||
'n': 6480
|
||||
}, {'a': 'item', 't': '4', 'n': 100}, {'a': 'item', 't': '4', 'n': 100}]
|
||||
}
|
||||
],
|
||||
//任务相关 type 1 每日任务(每天刷新) 2 活动任务(轮数) 3 每日登录 4-一次性任务 任务hdid一定要唯一
|
||||
maxlun: [[2], 5],
|
||||
tasklist: {
|
||||
'2': {
|
||||
'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': '600', '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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"hdid": 2002, // 唯一活动id 掉落兑换活动
|
||||
"htype": 2, // 后端唯一识别标识
|
||||
"stype": 200, // 前端唯一识别标识(看前端需要是否修改)
|
||||
"ttype": 1, // 0 按照开服时间计算,1 玩家注册时间计算 4 屏蔽此活动
|
||||
"stime": 35, // 活动开始天数
|
||||
"rtime": 42, // 活动显示结束天数
|
||||
"etime": 42, // 活动实际结束
|
||||
"name": "diaoluoduihuan",
|
||||
"icon": "icon_ywtx",
|
||||
"showtime": "仅供参考,会复写正确值",
|
||||
"data": {
|
||||
//对应mfm 14701
|
||||
diaoluo: [
|
||||
//掉落的物品
|
||||
{
|
||||
a: 'item',
|
||||
t: '50',
|
||||
n: 4,
|
||||
p: 10,
|
||||
s: 3600
|
||||
}
|
||||
|
||||
],
|
||||
tiaozhuan: 3,
|
||||
event: {
|
||||
itemId: '50',
|
||||
duihuan: [
|
||||
{need: [{a: 'item', t: '50', n: 6000}], prize: [{a: 'item', t: '610', n: 1}], num: 2},
|
||||
{
|
||||
need: [{a: 'item', t: '50', n: 3500}],
|
||||
prize: [{a: 'item', t: '600', n: 80}, {a: 'item', t: '12', n: 20000}],
|
||||
num: 4
|
||||
},
|
||||
{
|
||||
need: [{a: 'item', t: '50', n: 1200}],
|
||||
prize: [{a: 'item', t: '600', n: 20}, {a: 'item', t: '609', n: 1}, {a: 'item', t: '4', n: 20}],
|
||||
num: 1
|
||||
},
|
||||
{
|
||||
need: [{a: 'item', t: '50', n: 1500}],
|
||||
prize: [{a: 'item', t: '611', n: 1}, {a: 'item', t: '624', n: 50}],
|
||||
num: 1
|
||||
},
|
||||
{need: [{a: 'item', t: '50', n: 350}], prize: [{a: 'item', t: '607', n: 20}], num: 1},
|
||||
{need: [{a: 'item', t: '50', n: 350}], prize: [{a: 'item', t: '600', n: 5}], num: 1},
|
||||
{need: [{a: 'item', t: '50', n: 100}], prize: [{a: 'item', t: '4', n: 1}], num: 99},
|
||||
{need: [{a: 'item', t: '50', n: 10}], prize: [{a: 'item', t: '12', n: 25}], num: 99},
|
||||
{need: [{a: 'item', t: '50', n: 2}], prize: [{a: 'item', t: '2', n: 10}], num: 99},
|
||||
],
|
||||
shop: [
|
||||
{
|
||||
need: [{a: 'attr', t: 'rmbmoney', n: 0}],
|
||||
prize: [{a: 'attr', t: 'rmbmoney', n: 500}],
|
||||
num: 1,
|
||||
free: true
|
||||
},
|
||||
{
|
||||
need: [{a: 'attr', t: 'rmbmoney', n: 800}],
|
||||
prize: [{a: 'item', t: '4', n: 5}, {a: 'item', t: '2', n: 1000}],
|
||||
num: 1,
|
||||
free: false
|
||||
},
|
||||
{
|
||||
need: [{a: 'attr', t: 'rmbmoney', n: 2250}],
|
||||
prize: [{a: 'item', t: '4', n: 10}, {a: 'item', t: '12', n: 2000}],
|
||||
num: 1,
|
||||
free: false
|
||||
},
|
||||
{
|
||||
need: [{a: 'attr', t: 'rmbmoney', n: 3000}],
|
||||
prize: [{a: 'item', t: '12', n: 6000}],
|
||||
num: 1,
|
||||
free: false
|
||||
},
|
||||
{
|
||||
need: [{a: 'attr', t: 'rmbmoney', n: 3000}],
|
||||
prize: [{a: 'item', t: '2', n: 12000}],
|
||||
num: 3,
|
||||
free: false
|
||||
},
|
||||
{
|
||||
need: [{a: 'attr', t: 'rmbmoney', n: 3000}],
|
||||
prize: [{a: 'item', t: '9', n: 6000}],
|
||||
num: 3,
|
||||
free: false
|
||||
},
|
||||
{
|
||||
need: [{a: 'attr', t: 'rmbmoney', n: 3000}],
|
||||
prize: [{a: 'item', t: '10', n: 300}],
|
||||
num: 3,
|
||||
free: false
|
||||
},
|
||||
{
|
||||
need: [{a: 'attr', t: 'rmbmoney', n: 3000}],
|
||||
prize: [{a: 'item', t: '612', n: 20}],
|
||||
num: 3,
|
||||
free: false
|
||||
},
|
||||
{
|
||||
need: [{a: 'attr', t: 'rmbmoney', n: 20000}],
|
||||
prize: [{a: 'item', t: '607', n: 40}, {a: 'item', t: '600', n: 40}],
|
||||
num: 4,
|
||||
free: false
|
||||
},
|
||||
{
|
||||
need: [{a: 'attr', t: 'rmbmoney', n: 3000}],
|
||||
prize: [{a: 'item', t: '624', n: 20}],
|
||||
num: 3,
|
||||
free: false
|
||||
},
|
||||
{
|
||||
need: [{a: 'attr', t: 'rmbmoney', n: 3000}],
|
||||
prize: [{a: 'item', t: '629', n: 20}],
|
||||
num: 3,
|
||||
free: false
|
||||
},
|
||||
],
|
||||
gift: [
|
||||
{
|
||||
payId: '',
|
||||
num: 1,
|
||||
prize: [{a: 'item', t: '50', n: 20}, {a: 'attr', t: 'rmbmoney', n: 200}],
|
||||
free: true
|
||||
},
|
||||
{
|
||||
payId: 'duihuan_1_1',
|
||||
prize: [{a: 'item', t: '50', n: 50}, {a: 'attr', t: 'rmbmoney', n: 600}],
|
||||
free: false
|
||||
},
|
||||
{
|
||||
payId: 'duihuan_1_2',
|
||||
prize: [{a: 'item', t: '50', n: 100}, {a: 'attr', t: 'rmbmoney', n: 1360}],
|
||||
free: false
|
||||
},
|
||||
{
|
||||
payId: 'duihuan_1_3',
|
||||
prize: [{a: 'item', t: '50', n: 200}, {a: 'attr', t: 'rmbmoney', n: 2560}],
|
||||
free: false
|
||||
},
|
||||
{
|
||||
payId: 'duihuan_1_4',
|
||||
prize: [{a: 'item', t: '50', n: 600}, {a: 'attr', t: 'rmbmoney', n: 6560}],
|
||||
free: false
|
||||
},
|
||||
{
|
||||
payId: 'duihuan_1_5',
|
||||
prize: [{a: 'item', t: '50', n: 1200}, {a: 'attr', t: 'rmbmoney', n: 12960}],
|
||||
free: false
|
||||
},
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"hdid": 2003, // 唯一活动id 掉落兑换活动
|
||||
"htype": 2, // 后端唯一识别标识
|
||||
"stype": 200, // 前端唯一识别标识(看前端需要是否修改)
|
||||
"ttype": 1, // 0 按照开服时间计算,1 玩家注册时间计算 4 屏蔽此活动
|
||||
"stime": 49, // 活动开始天数
|
||||
"rtime": 56, // 活动显示结束天数
|
||||
"etime": 56, // 活动实际结束
|
||||
"name": "diaoluoduihuan",
|
||||
"icon": "icon_ywtx",
|
||||
"showtime": "仅供参考,会复写正确值",
|
||||
"data": {
|
||||
//对应mfm 14701
|
||||
diaoluo: [
|
||||
//掉落的物品
|
||||
{
|
||||
a: 'item',
|
||||
t: '50',
|
||||
n: 4,
|
||||
p: 10,
|
||||
s: 3600
|
||||
}
|
||||
|
||||
],
|
||||
tiaozhuan: 3,
|
||||
event: {
|
||||
itemId: '50',
|
||||
duihuan: [
|
||||
{need: [{a: 'item', t: '50', n: 6000}], prize: [{a: 'item', t: '610', n: 1}], num: 2},
|
||||
{
|
||||
need: [{a: 'item', t: '50', n: 3500}],
|
||||
prize: [{a: 'item', t: '600', n: 80}, {a: 'item', t: '12', n: 20000}],
|
||||
num: 4
|
||||
},
|
||||
{
|
||||
need: [{a: 'item', t: '50', n: 1200}],
|
||||
prize: [{a: 'item', t: '600', n: 20}, {a: 'item', t: '609', n: 1}, {a: 'item', t: '4', n: 20}],
|
||||
num: 1
|
||||
},
|
||||
{
|
||||
need: [{a: 'item', t: '50', n: 1500}],
|
||||
prize: [{a: 'item', t: '611', n: 1}, {a: 'item', t: '624', n: 50}],
|
||||
num: 1
|
||||
},
|
||||
{need: [{a: 'item', t: '50', n: 350}], prize: [{a: 'item', t: '607', n: 20}], num: 1},
|
||||
{need: [{a: 'item', t: '50', n: 350}], prize: [{a: 'item', t: '600', n: 5}], num: 1},
|
||||
{need: [{a: 'item', t: '50', n: 100}], prize: [{a: 'item', t: '4', n: 1}], num: 99},
|
||||
{need: [{a: 'item', t: '50', n: 10}], prize: [{a: 'item', t: '12', n: 25}], num: 99},
|
||||
{need: [{a: 'item', t: '50', n: 2}], prize: [{a: 'item', t: '2', n: 10}], num: 99},
|
||||
],
|
||||
shop: [
|
||||
{
|
||||
need: [{a: 'attr', t: 'rmbmoney', n: 0}],
|
||||
prize: [{a: 'attr', t: 'rmbmoney', n: 500}],
|
||||
num: 1,
|
||||
free: true
|
||||
},
|
||||
{
|
||||
need: [{a: 'attr', t: 'rmbmoney', n: 800}],
|
||||
prize: [{a: 'item', t: '4', n: 5}, {a: 'item', t: '2', n: 1000}],
|
||||
num: 1,
|
||||
free: false
|
||||
},
|
||||
{
|
||||
need: [{a: 'attr', t: 'rmbmoney', n: 2250}],
|
||||
prize: [{a: 'item', t: '4', n: 10}, {a: 'item', t: '12', n: 2000}],
|
||||
num: 1,
|
||||
free: false
|
||||
},
|
||||
{
|
||||
need: [{a: 'attr', t: 'rmbmoney', n: 3000}],
|
||||
prize: [{a: 'item', t: '12', n: 6000}],
|
||||
num: 1,
|
||||
free: false
|
||||
},
|
||||
{
|
||||
need: [{a: 'attr', t: 'rmbmoney', n: 3000}],
|
||||
prize: [{a: 'item', t: '2', n: 12000}],
|
||||
num: 3,
|
||||
free: false
|
||||
},
|
||||
{
|
||||
need: [{a: 'attr', t: 'rmbmoney', n: 3000}],
|
||||
prize: [{a: 'item', t: '9', n: 6000}],
|
||||
num: 3,
|
||||
free: false
|
||||
},
|
||||
{
|
||||
need: [{a: 'attr', t: 'rmbmoney', n: 3000}],
|
||||
prize: [{a: 'item', t: '10', n: 300}],
|
||||
num: 3,
|
||||
free: false
|
||||
},
|
||||
{
|
||||
need: [{a: 'attr', t: 'rmbmoney', n: 3000}],
|
||||
prize: [{a: 'item', t: '612', n: 20}],
|
||||
num: 3,
|
||||
free: false
|
||||
},
|
||||
{
|
||||
need: [{a: 'attr', t: 'rmbmoney', n: 20000}],
|
||||
prize: [{a: 'item', t: '607', n: 40}, {a: 'item', t: '600', n: 40}],
|
||||
num: 4,
|
||||
free: false
|
||||
},
|
||||
{
|
||||
need: [{a: 'attr', t: 'rmbmoney', n: 3000}],
|
||||
prize: [{a: 'item', t: '624', n: 20}],
|
||||
num: 3,
|
||||
free: false
|
||||
},
|
||||
{
|
||||
need: [{a: 'attr', t: 'rmbmoney', n: 3000}],
|
||||
prize: [{a: 'item', t: '629', n: 20}],
|
||||
num: 3,
|
||||
free: false
|
||||
},
|
||||
],
|
||||
gift: [
|
||||
{
|
||||
payId: '',
|
||||
num: 1,
|
||||
prize: [{a: 'item', t: '50', n: 20}, {a: 'attr', t: 'rmbmoney', n: 200}],
|
||||
free: true
|
||||
},
|
||||
{
|
||||
payId: 'duihuan_1_1',
|
||||
prize: [{a: 'item', t: '50', n: 50}, {a: 'attr', t: 'rmbmoney', n: 600}],
|
||||
free: false
|
||||
},
|
||||
{
|
||||
payId: 'duihuan_1_2',
|
||||
prize: [{a: 'item', t: '50', n: 100}, {a: 'attr', t: 'rmbmoney', n: 1360}],
|
||||
free: false
|
||||
},
|
||||
{
|
||||
payId: 'duihuan_1_3',
|
||||
prize: [{a: 'item', t: '50', n: 200}, {a: 'attr', t: 'rmbmoney', n: 2560}],
|
||||
free: false
|
||||
},
|
||||
{
|
||||
payId: 'duihuan_1_4',
|
||||
prize: [{a: 'item', t: '50', n: 600}, {a: 'attr', t: 'rmbmoney', n: 6560}],
|
||||
free: false
|
||||
},
|
||||
{
|
||||
payId: 'duihuan_1_5',
|
||||
prize: [{a: 'item', t: '50', n: 1200}, {a: 'attr', t: 'rmbmoney', n: 12960}],
|
||||
free: false
|
||||
},
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
]
|
98
src/fix_patch/patch_20240106.ts
Normal file
98
src/fix_patch/patch_20240106.ts
Normal file
@ -0,0 +1,98 @@
|
||||
import { log } from "console";
|
||||
import { patchFun, patchInit } from "../patch";
|
||||
import { TanXianFun } from "../public/tanxian";
|
||||
import { PublicShared } from "../shared/public/public";
|
||||
|
||||
class Path {
|
||||
|
||||
async fun1(a: any) {
|
||||
let hd = [{
|
||||
"hdid": 3001, // 唯一活动id 传说之路
|
||||
"htype": 3, // 后端唯一识别标识
|
||||
"stype": 300, // 前端唯一识别标识(看前端需要是否修改)
|
||||
"ttype": 1, // 0 按照开服时间计算,1 玩家注册时间计算 4 屏蔽此活动
|
||||
"stime": 30, // 活动开始天数
|
||||
"rtime": 60, // 活动显示结束天数
|
||||
"etime": 60, // 活动实际结束
|
||||
"name": "xinfupeiyang",
|
||||
"icon": "icon_qiridenglu",
|
||||
"showtime": "仅供参考,会复写正确值",
|
||||
"data": {
|
||||
//干部id
|
||||
hid: '5002',
|
||||
//任务
|
||||
task: [
|
||||
{ idx: 0, total: 80, type: 'lv', prize: [{ a: 'item', t: '1', n: 500000 }], des: 'intr_cszl_des_2' },
|
||||
{ idx: 1, total: 4, type: 'jieji', prize: [{ a: 'item', t: '12', n: 500 }], des: 'intr_cszl_des_1' },
|
||||
{ idx: 2, total: 120, type: 'lv', prize: [{ a: 'item', t: '1', n: 500000 }], des: 'intr_cszl_des_2' },
|
||||
{ idx: 3, total: 5, type: 'jieji', prize: [{ a: 'item', t: '12', n: 1000 }], des: 'intr_cszl_des_1' },
|
||||
{ idx: 4, total: 160, type: 'lv', prize: [{ a: 'item', t: '1', n: 800000 }], des: 'intr_cszl_des_2' },
|
||||
{ idx: 5, total: 6, type: 'jieji', prize: [{ a: 'item', t: '12', n: 1500 }], des: 'intr_cszl_des_1' },
|
||||
{ idx: 6, total: 200, type: 'lv', prize: [{ a: 'item', t: '1', n: 1200000 }], des: 'intr_cszl_des_2' },
|
||||
{ idx: 7, total: 7, type: 'jieji', prize: [{ a: 'item', t: '12', n: 2000 }], des: 'intr_cszl_des_1' },
|
||||
{ idx: 8, total: 240, type: 'lv', prize: [{ a: 'item', t: '1', n: 2000000 }], des: 'intr_cszl_des_2' },
|
||||
{ idx: 9, total: 8, type: 'jieji', prize: [{ a: 'item', t: '5002', n: 20 }], des: 'intr_cszl_des_1' }
|
||||
],
|
||||
//宝箱
|
||||
box: { total: 10, prize: [{ a: 'item', t: '610', n: 1 }] }
|
||||
}
|
||||
},
|
||||
{
|
||||
"hdid": 3002, // 唯一活动id 传说之路 心腹培养
|
||||
"htype": 3, // 后端唯一识别标识
|
||||
"stype": 300, // 前端唯一识别标识(看前端需要是否修改)
|
||||
"ttype": 1, // 0 按照开服时间计算,1 玩家注册时间计算 4 屏蔽此活动
|
||||
"stime": 60, // 活动开始天数
|
||||
"rtime": 90, // 活动显示结束天数
|
||||
"etime": 90, // 活动实际结束
|
||||
"name": "xinfupeiyang",
|
||||
"icon": "icon_xfdj",
|
||||
"showtime": "仅供参考,会复写正确值",
|
||||
"data": {
|
||||
//干部id
|
||||
hid: '5004',
|
||||
//任务
|
||||
task: [
|
||||
{ idx: 0, total: 100, type: 'lv', prize: [{ a: 'item', t: '1', n: 500000 }], des: 'intr_cszl_des_2' },
|
||||
{ idx: 1, total: 5, type: 'jieji', prize: [{ a: 'item', t: '12', n: 500 }], des: 'intr_cszl_des_1' },
|
||||
{ idx: 2, total: 140, type: 'lv', prize: [{ a: 'item', t: '1', n: 500000 }], des: 'intr_cszl_des_2' },
|
||||
{ idx: 3, total: 6, type: 'jieji', prize: [{ a: 'item', t: '12', n: 1000 }], des: 'intr_cszl_des_1' },
|
||||
{ idx: 4, total: 180, type: 'lv', prize: [{ a: 'item', t: '1', n: 800000 }], des: 'intr_cszl_des_2' },
|
||||
{ idx: 5, total: 7, type: 'jieji', prize: [{ a: 'item', t: '12', n: 1500 }], des: 'intr_cszl_des_1' },
|
||||
{ idx: 6, total: 220, type: 'lv', prize: [{ a: 'item', t: '1', n: 1200000 }], des: 'intr_cszl_des_2' },
|
||||
{ idx: 7, total: 8, type: 'jieji', prize: [{ a: 'item', t: '12', n: 2000 }], des: 'intr_cszl_des_1' },
|
||||
{ idx: 8, total: 260, type: 'lv', prize: [{ a: 'item', t: '1', n: 2000000 }], des: 'intr_cszl_des_2' },
|
||||
{ idx: 9, total: 9, type: 'jieji', prize: [{ a: 'item', t: '5004', n: 20 }], des: 'intr_cszl_des_1' }
|
||||
],
|
||||
//宝箱
|
||||
box: { total: 10, prize: [{ a: 'item', t: '610', n: 1 }] }
|
||||
}
|
||||
}]
|
||||
|
||||
for (let i = 0; i < hd.length; i++) {
|
||||
G.mongodb.collection('hdinfo').updateOne(
|
||||
{ hdid: hd[i].hdid }, { $set: { ["data.task"]: hd[i].data.task } }, { upsert: true }
|
||||
)
|
||||
}
|
||||
|
||||
return "sucess!!!"
|
||||
}
|
||||
|
||||
|
||||
|
||||
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();
|
119
src/fix_patch/patch_20240109-1.ts
Normal file
119
src/fix_patch/patch_20240109-1.ts
Normal file
@ -0,0 +1,119 @@
|
||||
import { patchFun, patchInit } from "../patch";
|
||||
import { PublicShared } from "../shared/public/public";
|
||||
import { JJCFun } from "../public/jjc";
|
||||
|
||||
function getRankPrize(rank: number, conf?: typeof G.gc.jjc_ph['']) {
|
||||
if (!conf) {
|
||||
conf = Object.values(G.gc.jjc_ph).filter(v => rank >= v.ph[0] && rank <= v.ph[1])[0];
|
||||
}
|
||||
if (conf) {
|
||||
return [...conf.prize, { a: 'item', t: '11', n: typeof conf.rongyuprize == 'number' ? conf.rongyuprize : PublicShared.eval(conf.rongyuprize, { a: rank }) }];
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
class Path {
|
||||
|
||||
async addEmail(email, isCross = false) {
|
||||
let { prize, uid, ...e } = email;
|
||||
let lng = await G.redis.rawGet(`user:lng:${uid}`);
|
||||
let sendEmail = {
|
||||
_id: null,
|
||||
uid: uid,
|
||||
type: e.type,
|
||||
title: e.lngTitle ? (e.lngTitle[lng] || e.lngTitle['ja']) : e.title,
|
||||
content: e.lngContent ? (e.lngContent[lng] || e.lngContent['ja']) : e.content,
|
||||
createTime: e.createTime || G.time,
|
||||
contentInsertArr: e.contentInsertArr || []
|
||||
} as any;
|
||||
|
||||
/**跨服邮件给sid标识*/
|
||||
// if (isCross) {
|
||||
// sendEmail.sid = uid.split('_')[0];
|
||||
// }
|
||||
if ((prize === null || prize === void 0 ? void 0 : prize.length) > 0) {
|
||||
sendEmail.prizeData = {
|
||||
prize: email.prize,
|
||||
isGet: false
|
||||
};
|
||||
}
|
||||
if (email.g123log && Object.keys(email.g123log).length > 0)
|
||||
sendEmail.g123log = email.g123log;
|
||||
|
||||
if (email.lngTitle) {
|
||||
sendEmail.lngTitle = email.lngTitle;
|
||||
sendEmail.lngContent = email.lngContent;
|
||||
}
|
||||
//太亏了!换其他清理机制,getAllEmail是性能消耗大户
|
||||
//todo.. 换其他清理机制
|
||||
// if (!isCross) {
|
||||
// let emailList = await this.getAllEmail(uid);
|
||||
// if (emailList.length >= 50) {
|
||||
// emailList.sort((a, b) => {
|
||||
// let noPrizeA = a.prizeData == undefined ? 0 : 1;
|
||||
// let noPrizeB = b.prizeData == undefined ? 0 : 1;
|
||||
// let getA = a.prizeData?.isGet == true ? 0 : 1;
|
||||
// let getB = b.prizeData?.isGet == true ? 0 : 1;
|
||||
// if (noPrizeA != noPrizeB) {
|
||||
// return noPrizeA - noPrizeB;
|
||||
// } else if (getA != getB) {
|
||||
// return getA - getB;
|
||||
// }
|
||||
// return a.createTime - b.createTime;
|
||||
// });
|
||||
// this.removeEmail(uid, emailList[0]._id);
|
||||
// G.server.sendMsgByUid(uid, 'msg_s2c/EmailDel', emailList[0]._id);
|
||||
// }
|
||||
// }
|
||||
//@ts-ignore
|
||||
await G.mongodb.collection('email').insertOne({
|
||||
ttl: new Date(), ...G.mongodb.conversionIdObj(sendEmail)
|
||||
})
|
||||
}
|
||||
|
||||
async sendEmail(uid: string, rank: number, prize: atn[]) {
|
||||
|
||||
if (uid.indexOf('npc_') != -1) return;
|
||||
|
||||
await this.addEmail({
|
||||
uid: uid,
|
||||
type: 'system',
|
||||
title: G.gc.jjc_com.email.titel,
|
||||
content: G.gc.jjc_com.email.content,
|
||||
prize: prize,
|
||||
contentInsertArr: [rank]
|
||||
});
|
||||
}
|
||||
async fun1(a: any) {
|
||||
for (let conf of Object.values(G.gc.jjc_ph)) {
|
||||
let players = await JJCFun.getRankListUid(conf.ph[0] - 1, conf.ph[1]);
|
||||
|
||||
for (let index = 0; index < players.length; index++) {
|
||||
let uid = players[index];
|
||||
await this.sendEmail(uid, conf.ph[0] + index, getRankPrize(conf.ph[0] + index, conf));
|
||||
console.log("sendEmail", uid, conf.ph[0] + index)
|
||||
}
|
||||
}
|
||||
|
||||
return "sucess!!!"
|
||||
}
|
||||
|
||||
|
||||
|
||||
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();
|
684
src/fix_patch/patch_20240109.ts
Normal file
684
src/fix_patch/patch_20240109.ts
Normal file
@ -0,0 +1,684 @@
|
||||
import { patchFun, patchInit } from "../patch";
|
||||
|
||||
class Path {
|
||||
|
||||
async fun1(a: any) {
|
||||
const con = {
|
||||
"16_6575db20f6ef8b7da5c8f1fd": {
|
||||
"item": {
|
||||
"1": 55400000,
|
||||
"12": 10600,
|
||||
"2": 223000,
|
||||
"6": 690
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 30500,
|
||||
"jinbi": 2850000000
|
||||
}
|
||||
},
|
||||
"15_6575a14b2f930bd5e51ccde9": {
|
||||
"item": {
|
||||
"1": 137200000,
|
||||
"12": 16600,
|
||||
"2": 273700,
|
||||
"6": 1735
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 35200,
|
||||
"jinbi": 3420000000
|
||||
}
|
||||
},
|
||||
"10_6573c51480a92f081d78e1d9": {
|
||||
"item": {
|
||||
"1": 35600000,
|
||||
"12": 13000,
|
||||
"2": 67800,
|
||||
"6": 1180
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 12400,
|
||||
"jinbi": 630000000
|
||||
}
|
||||
},
|
||||
"10_6573ecd9a884822d24482a1a": {
|
||||
"item": {
|
||||
"1": 103200000,
|
||||
"18": 9490,
|
||||
"12": 28000,
|
||||
"2": 421600,
|
||||
"6": 1300
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 53400,
|
||||
"jinbi": 5210000000
|
||||
}
|
||||
},
|
||||
"11_657412487fe3541fe7241a60": {
|
||||
"item": {
|
||||
"1": 35000000,
|
||||
"12": 99300,
|
||||
"2": 110900,
|
||||
"6": 460
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 19200,
|
||||
"jinbi": 1830000000
|
||||
}
|
||||
},
|
||||
"11_657436eb3bc021c4e335f356": {
|
||||
"item": {
|
||||
"1": 197200000,
|
||||
"12": 243700,
|
||||
"2": 597200,
|
||||
"6": 2475
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 97400,
|
||||
"jinbi": 9930000000
|
||||
}
|
||||
},
|
||||
"11_657428e87fe3541fe7245b75": {
|
||||
"item": {
|
||||
"1": 71200000,
|
||||
"12": 64300,
|
||||
"2": 219300,
|
||||
"6": 910
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 37300,
|
||||
"jinbi": 3630000000
|
||||
}
|
||||
},
|
||||
"10_6573aeb2602e0a72e8279b54": {
|
||||
"item": {
|
||||
"1": 17800000,
|
||||
"12": 22300,
|
||||
"2": 58100,
|
||||
"6": 240
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 10500,
|
||||
"jinbi": 940000000
|
||||
}
|
||||
},
|
||||
"11_657447453bc021c4e3362403": {
|
||||
"item": {
|
||||
"1": 322000000,
|
||||
"18": 31290,
|
||||
"12": 134800,
|
||||
"2": 1297200,
|
||||
"6": 4035
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 162900,
|
||||
"jinbi": 16160000000
|
||||
}
|
||||
},
|
||||
"11_657405957b27be6c2f4cac11": {
|
||||
"item": {
|
||||
"1": 18600000,
|
||||
"18": 1050,
|
||||
"12": 74500,
|
||||
"2": 79900,
|
||||
"6": 245
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 12000,
|
||||
"jinbi": 980000000
|
||||
}
|
||||
},
|
||||
"14_6575004f7aecd430eb86fbb5": {
|
||||
"item": {
|
||||
"1": 44000000,
|
||||
"18": 3440,
|
||||
"12": 104800,
|
||||
"2": 182600,
|
||||
"6": 545
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 25300,
|
||||
"jinbi": 2270000000
|
||||
}
|
||||
},
|
||||
"16_6575d6ac2e4ba33a00a04cbc": {
|
||||
"item": {
|
||||
"1": 36600000,
|
||||
"12": 13000,
|
||||
"2": 108200,
|
||||
"6": 470
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 19100,
|
||||
"jinbi": 1870000000
|
||||
}
|
||||
},
|
||||
"12_6574823b27bd4264da470583": {
|
||||
"item": {
|
||||
"1": 8800000,
|
||||
"12": 123000,
|
||||
"2": 37500,
|
||||
"6": 115
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 7300,
|
||||
"jinbi": 530000000
|
||||
}
|
||||
},
|
||||
"16_6575b61caff1b610d8bc6c96": {
|
||||
"item": {
|
||||
"24": 6,
|
||||
"10": 200,
|
||||
"12": 55000,
|
||||
"600": 20,
|
||||
"18": 1400,
|
||||
"1": 16200000,
|
||||
"2": 64900,
|
||||
"6": 180,
|
||||
"9": 3500
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 14400,
|
||||
"jinbi": 840000000
|
||||
}
|
||||
},
|
||||
"14_6574f2e66c7af0fe3713b718": {
|
||||
"item": {
|
||||
"1": 48800000,
|
||||
"12": 12700,
|
||||
"2": 90900,
|
||||
"6": 655
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 12400,
|
||||
"jinbi": 1100000000
|
||||
}
|
||||
},
|
||||
"11_65740da4deb68620911e96ef": {
|
||||
"item": {
|
||||
"1": 64200000,
|
||||
"18": 5580,
|
||||
"12": 28300,
|
||||
"2": 265400,
|
||||
"6": 820
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 33800,
|
||||
"jinbi": 3270000000
|
||||
}
|
||||
},
|
||||
"15_657594c3a7981612a8ea7e0e": {
|
||||
"item": {
|
||||
"1": 96800000,
|
||||
"18": 8870,
|
||||
"12": 3700,
|
||||
"2": 397200,
|
||||
"6": 1230
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 50400,
|
||||
"jinbi": 4920000000
|
||||
}
|
||||
},
|
||||
"11_657434f8290f4393568f16fe": {
|
||||
"item": {
|
||||
"1": 129000000,
|
||||
"12": 198300,
|
||||
"2": 392100,
|
||||
"6": 1630
|
||||
},
|
||||
"attr": {
|
||||
"jinbi": 6500000000
|
||||
}
|
||||
},
|
||||
"14_657512ee7aecd430eb872b5d": {
|
||||
"item": {
|
||||
"1": 121800000,
|
||||
"12": 36400,
|
||||
"2": 363400,
|
||||
"6": 1530
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 31500,
|
||||
"jinbi": 6150000000
|
||||
}
|
||||
},
|
||||
"11_657454089beef4c060edab88": {
|
||||
"item": {
|
||||
"1": 96600000,
|
||||
"18": 8660,
|
||||
"12": 149200,
|
||||
"2": 392900,
|
||||
"6": 1215
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 49800,
|
||||
"jinbi": 4890000000
|
||||
}
|
||||
},
|
||||
"10_6573e8aa80a92f081d7930b4": {
|
||||
"item": {
|
||||
"1": 242400000,
|
||||
"18": 16210,
|
||||
"12": 84100,
|
||||
"2": 978800,
|
||||
"6": 3040
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 123100,
|
||||
"jinbi": 12180000000
|
||||
}
|
||||
},
|
||||
"11_6573fd7a08e89e5a6859446e": {
|
||||
"item": {
|
||||
"1": 178200000,
|
||||
"18": 16230,
|
||||
"12": 10900,
|
||||
"2": 717000,
|
||||
"6": 2225
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 92000,
|
||||
"jinbi": 8990000000
|
||||
}
|
||||
},
|
||||
"11_65744fe2d0256beb85eed193": {
|
||||
"item": {
|
||||
"1": 262800000,
|
||||
"18": 25540,
|
||||
"12": 55800,
|
||||
"2": 1057600,
|
||||
"6": 3275
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 134000,
|
||||
"jinbi": 13190000000
|
||||
}
|
||||
},
|
||||
"11_657440e7ee44bd9935bbbd7c": {
|
||||
"item": {
|
||||
"1": 83000000,
|
||||
"18": 7160,
|
||||
"12": 250900,
|
||||
"2": 341800,
|
||||
"6": 1055
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 43300,
|
||||
"jinbi": 4220000000
|
||||
}
|
||||
},
|
||||
"11_657420932dd070117eb15e92": {
|
||||
"item": {
|
||||
"1": 307400000,
|
||||
"18": 29210,
|
||||
"12": 50200,
|
||||
"2": 1239200,
|
||||
"6": 3880
|
||||
},
|
||||
"attr": {
|
||||
"jinbi": 15470000000
|
||||
}
|
||||
},
|
||||
"14_65750da36439ef15582d6e6d": {
|
||||
"item": {
|
||||
"1": 105000000,
|
||||
"12": 93900,
|
||||
"2": 361000,
|
||||
"6": 1335
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 54100,
|
||||
"jinbi": 5310000000
|
||||
}
|
||||
},
|
||||
"12_6574762427bd4264da46ce63": {
|
||||
"item": {
|
||||
"1": 44400000,
|
||||
"18": 3390,
|
||||
"12": 15900,
|
||||
"2": 185000,
|
||||
"6": 555
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 25000,
|
||||
"jinbi": 2290000000
|
||||
}
|
||||
},
|
||||
"16_6575e1625685671e63fe001f": {
|
||||
"item": {
|
||||
"1": 12600000,
|
||||
"2": 51400,
|
||||
"6": 155
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 9200,
|
||||
"jinbi": 710000000
|
||||
}
|
||||
},
|
||||
"10_6573e236a884822d244816a0": {
|
||||
"item": {
|
||||
"1": 76200000,
|
||||
"18": 6760,
|
||||
"12": 79600,
|
||||
"2": 310200,
|
||||
"6": 945
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 40700,
|
||||
"jinbi": 3870000000
|
||||
}
|
||||
},
|
||||
"10_6573a17268053554fe606611": {
|
||||
"item": {
|
||||
"1": 109200000,
|
||||
"18": 9410,
|
||||
"12": 58000,
|
||||
"2": 428000,
|
||||
"6": 2365
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 55000,
|
||||
"jinbi": 5240000000
|
||||
}
|
||||
},
|
||||
"15_657595a3a7981612a8ea8009": {
|
||||
"item": {
|
||||
"1": 19200000,
|
||||
"18": 830,
|
||||
"12": 74800,
|
||||
"2": 84100,
|
||||
"6": 1115
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 11300,
|
||||
"jinbi": 990000000
|
||||
}
|
||||
},
|
||||
"11_657438a83bc021c4e335f86e": {
|
||||
"item": {
|
||||
"1": 71200000,
|
||||
"18": 6300,
|
||||
"12": 55600,
|
||||
"2": 292500,
|
||||
"6": 905
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 37200,
|
||||
"jinbi": 3600000000
|
||||
}
|
||||
},
|
||||
"10_6573e0395fe4caaf29a9b83c": {
|
||||
"item": {
|
||||
"1": 9000000,
|
||||
"12": 184000,
|
||||
"2": 45800,
|
||||
"6": 135
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 6400,
|
||||
"jinbi": 530000000
|
||||
}
|
||||
},
|
||||
"10_6573e596dc05fa03150d7db1": {
|
||||
"item": {
|
||||
"1": 12800000,
|
||||
"18": 410,
|
||||
"12": 15400,
|
||||
"2": 60000,
|
||||
"6": 175
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 8200,
|
||||
"jinbi": 690000000
|
||||
}
|
||||
},
|
||||
"14_65752c79c85dd4cf1a874893": {
|
||||
"item": {
|
||||
"1": 14200000,
|
||||
"12": 33700,
|
||||
"2": 64500,
|
||||
"6": 185
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 8900,
|
||||
"jinbi": 790000000
|
||||
}
|
||||
},
|
||||
"12_657455ed6b804f4a6d4b53a2": {
|
||||
"item": {
|
||||
"1": 160800000,
|
||||
"18": 14900,
|
||||
"12": 4800,
|
||||
"2": 650900,
|
||||
"6": 2025
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 82000,
|
||||
"jinbi": 8080000000
|
||||
}
|
||||
},
|
||||
"12_657481316ad7b8861da8a914": {
|
||||
"item": {
|
||||
"1": 5600000,
|
||||
"18": 450,
|
||||
"12": 34600,
|
||||
"2": 25500,
|
||||
"6": 65
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 7800,
|
||||
"jinbi": 300000000
|
||||
}
|
||||
},
|
||||
"4_6571c11bb0b5337a4d3a63a0": {
|
||||
"item": {
|
||||
"24": 7,
|
||||
"10": 400,
|
||||
"12": 15600,
|
||||
"600": 50,
|
||||
"18": 190,
|
||||
"1": 5200000,
|
||||
"2": 16300,
|
||||
"6": 10,
|
||||
"9": 8500
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 8800,
|
||||
"jinbi": 310000000
|
||||
}
|
||||
},
|
||||
"10_6573714bc7069a58e96ba077": {
|
||||
"item": {
|
||||
"1": 14400000,
|
||||
"18": 610,
|
||||
"12": 11800,
|
||||
"2": 66400,
|
||||
"6": 190
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 9000,
|
||||
"jinbi": 770000000
|
||||
}
|
||||
},
|
||||
"11_65744ba29beef4c060ed803c": {
|
||||
"item": {
|
||||
"1": 331800000,
|
||||
"12": 14800,
|
||||
"2": 1001400,
|
||||
"6": 4155
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 167500,
|
||||
"jinbi": 16670000000
|
||||
}
|
||||
},
|
||||
"16_6575d57c5685671e63fdb6ee": {
|
||||
"item": {
|
||||
"1": 13600000,
|
||||
"12": 42700,
|
||||
"2": 44500,
|
||||
"6": 420
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 7000,
|
||||
"jinbi": 430000000
|
||||
}
|
||||
},
|
||||
"11_65743bb09beef4c060ed46e7": {
|
||||
"item": {
|
||||
"10": 300,
|
||||
"12": 8100,
|
||||
"600": 30,
|
||||
"18": 920,
|
||||
"1": 18400000,
|
||||
"2": 69600,
|
||||
"6": 170,
|
||||
"9": 4500
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 13700,
|
||||
"jinbi": 950000000
|
||||
}
|
||||
},
|
||||
"10_6573bb4b68053554fe60940c": {
|
||||
"item": {
|
||||
"1": 19400000,
|
||||
"18": 1080,
|
||||
"12": 63000,
|
||||
"2": 83100,
|
||||
"6": 235
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 12300,
|
||||
"jinbi": 1010000000
|
||||
}
|
||||
},
|
||||
"16_6575d97df2211cd2ff29ba12": {
|
||||
"item": {
|
||||
"1": 3400000,
|
||||
"12": 11100,
|
||||
"2": 16700,
|
||||
"6": 50
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 5000,
|
||||
"jinbi": 250000000
|
||||
}
|
||||
},
|
||||
"11_657434c6d0256beb85ee6fae": {
|
||||
"item": {
|
||||
"1": 80600000,
|
||||
"18": 7360,
|
||||
"12": 232000,
|
||||
"2": 332200,
|
||||
"6": 1025
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 42100,
|
||||
"jinbi": 4090000000
|
||||
}
|
||||
},
|
||||
"16_6575b6d0f6ef8b7da5c84bf0": {
|
||||
"item": {
|
||||
"1": 70600000,
|
||||
"12": 29700,
|
||||
"2": 218200,
|
||||
"6": 900
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 36000,
|
||||
"jinbi": 3610000000
|
||||
}
|
||||
},
|
||||
"10_6587fbf00c11d852663c5bbb": {
|
||||
"item": {
|
||||
"1": 26800000,
|
||||
"18": 1940,
|
||||
"12": 168000,
|
||||
"2": 118300,
|
||||
"6": 350
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 15300,
|
||||
"jinbi": 1410000000
|
||||
}
|
||||
},
|
||||
"10_657397c2f31ed0c046ef3730": {
|
||||
"item": {
|
||||
"1": 220800000,
|
||||
"18": 1900,
|
||||
"12": 8800,
|
||||
"2": 701400,
|
||||
"6": 2780
|
||||
},
|
||||
"attr": {
|
||||
"rmbmoney": 112100,
|
||||
"jinbi": 11100000000
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const uids = Object.keys(con);
|
||||
let _users = await G.mongodb.find('user', { uid: { $in: uids } })
|
||||
for (let i = 0; i < _users.length; i++) {
|
||||
let user = _users[i]
|
||||
const uid = user.uid
|
||||
const _delattr = con[uid]["attr"]
|
||||
const _delitem = con[uid]["item"]
|
||||
let _setUserData = {}
|
||||
let _dellog = { "attr": {}, "item": {} }
|
||||
for (let t in _delattr) {
|
||||
if (t == "rmbmoney") {
|
||||
let v = user.rmbmoney - _delattr[t]
|
||||
if (v < 0) { v = 0 }
|
||||
_setUserData[t] = v
|
||||
_dellog["attr"][t] = { "old": user.rmbmoney, "new": v }
|
||||
}
|
||||
else if (t == "jinbi") {
|
||||
let v = user.jinbi - _delattr[t]
|
||||
if (v < 0) { v = 0 }
|
||||
_setUserData[t] = v
|
||||
_dellog["attr"][t] = { "old": user.jinbi, "new": v }
|
||||
}
|
||||
}
|
||||
|
||||
const itemIds = Object.keys(_delitem);
|
||||
// 删除item
|
||||
let _itemlist = await G.mongodb.collection('item').find({ "uid": uid, "itemId": { "$in": itemIds } }).toArray();
|
||||
for (let i = 0; i < _itemlist.length; i++) {
|
||||
const _item = _itemlist[i]
|
||||
const _itemid = _item.itemId
|
||||
const del = _delitem[_itemid] || 0
|
||||
let v = _item.num - del
|
||||
if (v < 0) { v = 0 }
|
||||
let _setItemData = {}
|
||||
_setItemData["num"] = v
|
||||
_dellog["item"][_itemid] = { "old": _item.num, "new": v }
|
||||
await G.mongodb.collection('item').updateOne({ "uid": uid, "itemId": _itemid }, { "$set": _setItemData });
|
||||
}
|
||||
await G.mongodb.collection('user').updateOne({ "uid": uid }, { "$set": _setUserData });
|
||||
// 输出日志
|
||||
console.log(uid, ":", _dellog);
|
||||
}
|
||||
|
||||
return "sucess!!!"
|
||||
}
|
||||
|
||||
|
||||
|
||||
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();
|
117
src/fix_patch/patch_20240110.ts
Normal file
117
src/fix_patch/patch_20240110.ts
Normal file
@ -0,0 +1,117 @@
|
||||
import { ReqEmail } from "../monopoly/protocols/PtlEmail";
|
||||
import { patchInit } from "../patch";
|
||||
import { MsgEmail } from "../shared/protocols/msg_s2c/MsgEmail";
|
||||
import { PublicShared } from "../shared/public/public";
|
||||
|
||||
|
||||
class Path {
|
||||
|
||||
async addEmail(email: ReqEmail & { createTime?: number; }) {
|
||||
let { prize, uid, ...e } = email;
|
||||
let lng = await G.redis.rawGet(`user:lng:${uid}`)
|
||||
|
||||
let sendEmail: MsgEmail = {
|
||||
_id: null,
|
||||
uid: uid,
|
||||
type: e.type,
|
||||
title: e.lngTitle ? (e.lngTitle[lng] || e.lngTitle['ja']) : e.title,
|
||||
content: e.lngContent ? (e.lngContent[lng] || e.lngContent['ja']) : e.content,
|
||||
createTime: e.createTime || G.time,
|
||||
contentInsertArr: e.contentInsertArr || []
|
||||
};
|
||||
|
||||
if (prize?.length > 0) {
|
||||
sendEmail.prizeData = {
|
||||
prize: email.prize,
|
||||
isGet: false
|
||||
};
|
||||
}
|
||||
|
||||
if (email.g123log && Object.keys(email.g123log).length > 0) sendEmail.g123log = email.g123log;
|
||||
|
||||
if (email.lngTitle) {
|
||||
sendEmail.lngTitle = email.lngTitle
|
||||
sendEmail.lngContent = email.lngContent
|
||||
}
|
||||
|
||||
await G.mongodb.collection('email').insertOne({
|
||||
ttl: new Date(), ...G.mongodb.conversionIdObj(sendEmail)
|
||||
});
|
||||
}
|
||||
|
||||
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) {
|
||||
let deltask = unFinishTask.sort().slice(1);
|
||||
await G.mongodb.collection("task").deleteOne({
|
||||
uid: user.uid, taskid: { $in: deltask }
|
||||
});
|
||||
console.log(`删除玩家${user.uid}任务:${deltask}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 补发玩家终身卡奖励
|
||||
*/
|
||||
async fun2(a: any) {
|
||||
let logs = await G.mongodb.collection("payLogNew").find(
|
||||
{ key: "zhongshenka", del_time: { $exists: false } }, { projection: { _id: 0, } }
|
||||
).toArray();
|
||||
|
||||
if (logs.length == 0) {
|
||||
console.log("没有终身卡数据,不发放终身卡");
|
||||
return
|
||||
}
|
||||
|
||||
let wzt = PublicShared.getToWeekMondayZeroTime();
|
||||
let con = G.gc.payEmail.zhongshenka.filter(e => e.day == 7)[0];
|
||||
for (let i = 0; i < logs.length; i++) {
|
||||
|
||||
// 查询玩家邮件
|
||||
let emails = await G.mongodb.collection('email').find({
|
||||
uid: logs[i].uid, title: con.title, createTime: { $gte: wzt }
|
||||
}).toArray();
|
||||
|
||||
|
||||
if (emails.length == 0) {
|
||||
// 发送邮件
|
||||
this.addEmail({
|
||||
uid: logs[i].uid,
|
||||
type: "system",
|
||||
title: con.title,
|
||||
content: con.content,
|
||||
contentInsertArr: [],
|
||||
createTime: G.time,
|
||||
prize: con.prize,
|
||||
})
|
||||
console.log("发放终身卡", logs[i].uid);
|
||||
} else {
|
||||
console.log("本周已发送过 不发放终身卡", logs[i].uid);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async run() {
|
||||
await this.fun1(1);
|
||||
await this.fun2(1);
|
||||
}
|
||||
}
|
||||
|
||||
async function main() {
|
||||
await patchInit()
|
||||
let patch = new Path();
|
||||
await patch.run();
|
||||
console.log("逻辑执行完成,等待退出");
|
||||
setTimeout(function () {
|
||||
console.log('结束程序');
|
||||
process.exit();
|
||||
}, 3000);
|
||||
}
|
||||
main();
|
61
src/fix_patch/patch_20240111.ts
Normal file
61
src/fix_patch/patch_20240111.ts
Normal file
@ -0,0 +1,61 @@
|
||||
import {ReqEmail} from "../monopoly/protocols/PtlEmail";
|
||||
import {patchInit} from "../patch";
|
||||
import {MsgEmail} from "../shared/protocols/msg_s2c/MsgEmail";
|
||||
import {PublicShared} from "../shared/public/public";
|
||||
|
||||
|
||||
class Path {
|
||||
async fun1(a: any) {
|
||||
let taskType = 2;
|
||||
let users = await G.mongodb.collection('user').find({}, {
|
||||
projection: {uid: 1}
|
||||
}).toArray();
|
||||
// let users = await G.mongodb.collection('user').find({ loginTime: { $gte: 1704643200 } }).toArray();
|
||||
for (let i = 0; i < users.length; i++) {
|
||||
let user = users[i];
|
||||
|
||||
console.log(`处理玩家${user.uid}数据`);
|
||||
let task = Object.assign({}, ...(await G.mongodb.collection('task').find({
|
||||
uid: user.uid, type: taskType
|
||||
}, {projection: {taskid: 1, finish: 1}}).toArray()).map(i => {
|
||||
return {[i.taskid]: i.finish}
|
||||
}))
|
||||
|
||||
let deltask = [];
|
||||
let sortTask = Object.keys(task).sort();
|
||||
|
||||
for (let taskid of sortTask) {
|
||||
if (task[taskid] == 1) continue;
|
||||
let con = G.gc.task[taskType][taskid];
|
||||
if (task[con.followtask]) {
|
||||
let i = sortTask.indexOf(taskid);
|
||||
deltask.push(...sortTask.slice(i + 1).map(i => Number(i)));
|
||||
}
|
||||
}
|
||||
|
||||
if (deltask.length > 0) {
|
||||
await G.mongodb.collection("task").deleteMany(
|
||||
{uid: user.uid, taskid: {$in: deltask}}
|
||||
)
|
||||
console.log(`删除玩家${user.uid}任务:${deltask}`)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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();
|
68
src/fix_patch/patch_20240112-1.ts
Normal file
68
src/fix_patch/patch_20240112-1.ts
Normal file
@ -0,0 +1,68 @@
|
||||
import { ReqEmail } from "../monopoly/protocols/PtlEmail";
|
||||
import { patchInit } from "../patch";
|
||||
import { MsgEmail } from "../shared/protocols/msg_s2c/MsgEmail";
|
||||
import { PublicShared } from "../shared/public/public";
|
||||
|
||||
|
||||
class Path {
|
||||
async fun1(a: any) {
|
||||
let uids = [
|
||||
"4_6571ab682b3f80154e724f2a",
|
||||
"16_6575e1625685671e63fe001f",
|
||||
"13_6574ad08e7cc32b4bd1334e8",
|
||||
"13_65749bc319cab1affec349fb",
|
||||
];
|
||||
|
||||
// 删除玩家背包中的头像框
|
||||
let items = await G.mongodb.collection("item").find({ uid: { $nin: uids }, itemId: { $in: ["47", "48"] } }).toArray();
|
||||
for (let item of items) {
|
||||
console.log(`删除玩家${item.uid}的头像框道具${item.itemId}`);
|
||||
await G.mongodb.collection("item").updateOne({ _id: item._id }, { $set: { uid: `patch_del_${item.uid}` } });
|
||||
}
|
||||
|
||||
// 删除玩家存在的头像框
|
||||
let users = await G.mongodb.collection("user").find({
|
||||
uid: { $nin: uids }, $or: [
|
||||
{ ["headFrame.id"]: "8" },
|
||||
{ ["headFrame.id"]: "14" },
|
||||
{ ["headFrames.8"]: { $exists: true } },
|
||||
{ ["headFrames.14"]: { $exists: true } },
|
||||
]
|
||||
}).toArray();
|
||||
for (let user of users) {
|
||||
let change = { $set: {}, $unset: {} };
|
||||
if (user.headFrame?.id == "8" || user.headFrame?.id == "14") {
|
||||
change.$set = { headFrame: { id: "1", time: -1 } };
|
||||
}
|
||||
|
||||
if (user.headFrames["8"] != undefined) {
|
||||
change.$unset["headFrames.8"] = 1;
|
||||
}
|
||||
|
||||
if (user.headFrames["14"] != undefined) {
|
||||
change.$unset["headFrames.14"] = 1;
|
||||
}
|
||||
if (Object.keys(change.$set).length > 0 || Object.keys(change.$unset).length > 0) {
|
||||
console.log(`处理玩家${user.uid}数据:${JSON.stringify(change)}`);
|
||||
await G.mongodb.collection("user").updateOne({ _id: user._id }, change);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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();
|
80
src/fix_patch/patch_20240112.ts
Normal file
80
src/fix_patch/patch_20240112.ts
Normal file
@ -0,0 +1,80 @@
|
||||
import { patchFun, patchInit } from "../patch";
|
||||
|
||||
class Path {
|
||||
|
||||
async huodong2(a: any) {
|
||||
const con ={
|
||||
2000:[
|
||||
{ payId: '', num: 1, prize: [{a: 'item', t: '49', n: 20}, {a: 'attr', t: 'rmbmoney', n: 200}], free: true },
|
||||
{ payId: 'duihuan_1_1', prize: [{a: 'item', t: '49', n: 50}, {a: 'attr', t: 'rmbmoney', n: 600}], free: false },
|
||||
{ payId: 'duihuan_1_2', prize: [{a: 'item', t: '49', n: 100}, {a: 'attr', t: 'rmbmoney', n: 1360}], free: false },
|
||||
{ payId: 'duihuan_1_3', prize: [{a: 'item', t: '49', n: 200}, {a: 'attr', t: 'rmbmoney', n: 2560}], free: false },
|
||||
{ payId: 'duihuan_1_4', prize: [{a: 'item', t: '49', n: 600}, {a: 'attr', t: 'rmbmoney', n: 6560}], free: false },
|
||||
{ payId: 'duihuan_1_5', prize: [{a: 'item', t: '49', n: 1200}, {a: 'attr', t: 'rmbmoney', n: 12960}], free: false },
|
||||
],
|
||||
2001: [
|
||||
{ payId: '', num: 1, prize: [{a: 'item', t: '49', n: 20}, {a: 'attr', t: 'rmbmoney', n: 200}], free: true },
|
||||
{ payId: 'duihuan_3_1', prize: [{a: 'item', t: '49', n: 50}, {a: 'attr', t: 'rmbmoney', n: 600}], free: false },
|
||||
{ payId: 'duihuan_3_2', prize: [{a: 'item', t: '49', n: 100}, {a: 'attr', t: 'rmbmoney', n: 1360}], free: false },
|
||||
{ payId: 'duihuan_3_3', prize: [{a: 'item', t: '49', n: 200}, {a: 'attr', t: 'rmbmoney', n: 2560}], free: false },
|
||||
{ payId: 'duihuan_3_4', prize: [{a: 'item', t: '49', n: 600}, {a: 'attr', t: 'rmbmoney', n: 6560}], free: false },
|
||||
{ payId: 'duihuan_3_5', prize: [{a: 'item', t: '49', n: 1200}, {a: 'attr', t: 'rmbmoney', n: 12960}], free: false },
|
||||
],
|
||||
2002: [
|
||||
{ payId: '', num: 1, prize: [{a: 'item', t: '50', n: 20}, {a: 'attr', t: 'rmbmoney', n: 200}], free: true },
|
||||
{ payId: 'duihuan_2_1', prize: [{a: 'item', t: '50', n: 50}, {a: 'attr', t: 'rmbmoney', n: 600}], free: false },
|
||||
{ payId: 'duihuan_2_2', prize: [{a: 'item', t: '50', n: 100}, {a: 'attr', t: 'rmbmoney', n: 1360}], free: false },
|
||||
{ payId: 'duihuan_2_3', prize: [{a: 'item', t: '50', n: 200}, {a: 'attr', t: 'rmbmoney', n: 2560}], free: false },
|
||||
{ payId: 'duihuan_2_4', prize: [{a: 'item', t: '50', n: 600}, {a: 'attr', t: 'rmbmoney', n: 6560}], free: false },
|
||||
{ payId: 'duihuan_2_5', prize: [{a: 'item', t: '50', n: 1200}, {a: 'attr', t: 'rmbmoney', n: 12960}], free: false },
|
||||
],
|
||||
2003: [
|
||||
{ payId: '', num: 1, prize: [{a: 'item', t: '50', n: 20}, {a: 'attr', t: 'rmbmoney', n: 200}], free: true },
|
||||
{ payId: 'duihuan_4_1', prize: [{a: 'item', t: '50', n: 50}, {a: 'attr', t: 'rmbmoney', n: 600}], free: false },
|
||||
{ payId: 'duihuan_4_2', prize: [{a: 'item', t: '50', n: 100}, {a: 'attr', t: 'rmbmoney', n: 1360}], free: false },
|
||||
{ payId: 'duihuan_4_3', prize: [{a: 'item', t: '50', n: 200}, {a: 'attr', t: 'rmbmoney', n: 2560}], free: false },
|
||||
{ payId: 'duihuan_4_4', prize: [{a: 'item', t: '50', n: 600}, {a: 'attr', t: 'rmbmoney', n: 6560}], free: false },
|
||||
{ payId: 'duihuan_4_5', prize: [{a: 'item', t: '50', n: 1200}, {a: 'attr', t: 'rmbmoney', n: 12960}], free: false },
|
||||
],
|
||||
}
|
||||
|
||||
const hdids = [2000,2001,2002,2003]
|
||||
const hdinfos = await G.mongodb.find('hdinfo', { hdid: { $in: hdids } })
|
||||
for (let i = 0; i < hdinfos.length; i++) {
|
||||
let hdinfo = hdinfos[i]
|
||||
hdinfo.data.event.gift = con[hdinfo.hdid]
|
||||
console.log(hdinfo.hdid,hdinfo.data.event.gift)
|
||||
await G.mongodb.collection('hdinfo').updateOne({ "hdid": hdinfo.hdid}, { "$set": {"data": hdinfo.data}});
|
||||
console.log(hdinfo.hdid,"finish")
|
||||
}
|
||||
return "sucess!!!"
|
||||
}
|
||||
|
||||
async headFrame(a: any) {
|
||||
const users = await G.mongodb.find('user', {"headFrames.25": {"$exists": 1}})
|
||||
for (let i = 0; i < users.length; i++) {
|
||||
let user = users[i]
|
||||
user.headFrames["25"] = -1
|
||||
await G.mongodb.collection('user').updateOne({ "uid": user.uid}, { "$set": {"headFrames": user.headFrames} });
|
||||
console.log(user.uid, user.headFrames)
|
||||
}
|
||||
return "sucess!!!"
|
||||
}
|
||||
|
||||
async run() {
|
||||
await this.huodong2(1);
|
||||
await this.headFrame(1);
|
||||
}
|
||||
}
|
||||
|
||||
async function main() {
|
||||
await patchInit()
|
||||
let patch = new Path();
|
||||
await patch.run();
|
||||
console.log("逻辑执行完成,等待退出");
|
||||
setTimeout(function () {
|
||||
console.log('结束程序');
|
||||
process.exit();
|
||||
}, 3000);
|
||||
}
|
||||
main();
|
@ -15,12 +15,15 @@ import { ZhanLingTasks } from './public/zhanling';
|
||||
import { player } from './shared/protocols/user/type';
|
||||
import { PublicShared } from './shared/public/public';
|
||||
import { setGud } from './public/gud';
|
||||
import {checkResetBuyLog} from "./api_s2c/event/zhoumolibao/ApiOpen";
|
||||
import {Christmasfun} from "./api_s2c/event/christmas/fun";
|
||||
import {PushGiftFun} from "./public/pushgift";
|
||||
import {LeiChongLiBaoBuyGift} from "./api_s2c/event/leichonglibao/ApiReceive";
|
||||
import { checkResetBuyLog } from "./api_s2c/event/zhoumolibao/ApiOpen";
|
||||
import { PushGiftFun } from "./public/pushgift";
|
||||
import { LeiChongLiBaoBuyGift } from "./api_s2c/event/leichonglibao/ApiReceive";
|
||||
import { HongDianChange } from './api_s2c/hongdian/fun';
|
||||
import HQJGFun from './api_s2c/event/huangqijiuguan/fun';
|
||||
|
||||
export type gEventType = {
|
||||
/**新的一天 */
|
||||
NEW_DAY: (time: number) => void;
|
||||
/**玩家断开连接 */
|
||||
PLAYER_DISCONNECT: (uid: string) => void;
|
||||
/**玩家修改名字 */
|
||||
@ -151,6 +154,8 @@ export type gEventType = {
|
||||
Class_task_157: (eventname, call, val, chkVal) => void;
|
||||
/**今日参与{1}次抓娃娃小游戏 */
|
||||
Class_task_158: (eventname, call, val, chkVal) => void;
|
||||
/**黄旗酒馆累计抽卡X次*/
|
||||
Class_task_159: (eventname, call, val, chkVal) => void;
|
||||
};
|
||||
|
||||
export function addListener() {
|
||||
@ -164,7 +169,7 @@ export function addListener() {
|
||||
XstaskFun.uidTask[uid] = null;
|
||||
delete XstaskFun.uidTask[uid];
|
||||
}
|
||||
setGud(uid,{ logoutTime: G.time });
|
||||
setGud(uid, { logoutTime: G.time });
|
||||
G.mongodb.collection('user').updateOne({ uid: uid }, { $set: { logoutTime: G.time } });
|
||||
});
|
||||
|
||||
@ -176,7 +181,7 @@ export function addListener() {
|
||||
}
|
||||
});
|
||||
|
||||
G.on('PLAYER_PAY', async (player, payId, payArgs,call) => {
|
||||
G.on('PLAYER_PAY', async (player, payId, payArgs, call) => {
|
||||
let conf: any = await PayFun.getConf(payId, payArgs);
|
||||
ActionLog.addDayLog(player.uid, { key: 'pay', val: conf.payExp[0].n });
|
||||
ActionLog.addRetainLog(player.uid, { key: 'pay', val: conf.payExp[0].n });
|
||||
@ -203,13 +208,15 @@ export function addListener() {
|
||||
);
|
||||
await PushGiftFun.buy(player.uid, payId) // 推送礼包
|
||||
await LeiChongLiBaoBuyGift(call, payId) // 累充礼包
|
||||
HongDianChange.sendChangeKey(call.uid, ['huodonghd']);
|
||||
});
|
||||
|
||||
G.on("FIRST_LOGIN_EVERY_DAY", (gud, lastTime, curTime) => {
|
||||
|
||||
// 签到增加天数
|
||||
SignFun.updateLogin(gud.uid);
|
||||
ActionLog.initDayLog(gud.uid);
|
||||
//移到定时器里统一执行
|
||||
//ActionLog.initDayLog(gud.uid);
|
||||
ActionLog.addRetainLog(gud.uid, { key: 'login_day', val: 1 });
|
||||
ZhanLingTasks.clearLog(gud.uid, 'day');
|
||||
PayFun.checkGiftDayEmail(gud, lastTime, curTime);
|
||||
@ -258,4 +265,9 @@ export function addListener() {
|
||||
let call = PayFun.getCall(gud);
|
||||
G.emit("Class_task_134", 'Class_task_134', call, 1, 0, items);
|
||||
});
|
||||
|
||||
// 黄旗酒馆
|
||||
G.on("NEW_DAY", HQJGFun.dayDpsLvPrize.bind(HQJGFun));
|
||||
G.on("NEW_DAY", HQJGFun.endDpsRankPrize.bind(HQJGFun));
|
||||
G.on("PLAYER_PAY", HQJGFun.buy.bind(HQJGFun));
|
||||
}
|
@ -1,18 +1,11 @@
|
||||
{
|
||||
//赛区划分
|
||||
divide: [
|
||||
{ day: [1, 30], group: 0 },
|
||||
{ day: [31, 60], group: 1 },
|
||||
{ day: [61, 120], group: 2 },
|
||||
{ day: [121, 210], group: 3 },
|
||||
{ day: [211, 99999999], group: 4 },
|
||||
],
|
||||
//赛区划分时间
|
||||
divideTime: 0,
|
||||
//挑战时间
|
||||
//赛区划分按照周三23:50的时候王者玩家100个一组
|
||||
//赛区划分时间周三23:50
|
||||
divideTime: 258600,
|
||||
//挑战时间周一08:00——周六22:00
|
||||
fightTime: [28800, 511200],
|
||||
//发奖时间
|
||||
prizeTime: 598200,
|
||||
//发奖时间周六22:05
|
||||
prizeTime: 511500,
|
||||
//胜场奖励
|
||||
fightWinPrize: [
|
||||
{ total: 5, prize: [{ a: 'attr', t: 'clsl_sd', n: 1 },{ a: 'item', t: '37', n: 1 }], star: 1 },
|
||||
@ -39,13 +32,13 @@
|
||||
],
|
||||
//段位奖励
|
||||
danPrize: [
|
||||
{ star: 49, prize: [{ a: 'item', t: '605', n:3 },{ a: 'item', t: '29', n:10 },{ a: 'item', t: '631', n:3 },{ a: 'item', t: '40', n:1 }] },
|
||||
{ star: 39, prize: [{ a: 'item', t: '605', n:2 },{ a: 'item', t: '29', n:5 },{ a: 'item', t: '631', n:2 }] },
|
||||
{ star: 29, prize: [{ a: 'item', t: '606', n:3 },{ a: 'item', t: '29', n:5 },{ a: 'item', t: '631', n:1 }] },
|
||||
{ star: 21, prize: [{ a: 'item', t: '606', n:2 },{ a: 'item', t: '29', n:5 },{ a: 'item', t: '39', n:1000 }] },
|
||||
{ star: 13, prize: [{ a: 'item', t: '606', n:1 },{ a: 'item', t: '29', n:5 },{ a: 'item', t: '39', n:800 }] },
|
||||
{ star: 7, prize: [{ a: 'item', t: '29', n:10 },{ a: 'item', t: '29', n:5 },{ a: 'item', t: '39', n:600 }] },
|
||||
{ star: 0, prize: [{ a: 'item', t: '29', n:5 },{ a: 'item', t: '29', n:5 },{ a: 'item', t: '39', n:400 }] }
|
||||
{ star: 49, title: "clsl_7", prize: [{ a: 'item', t: '605', n:3 },{ a: 'item', t: '29', n:10 },{ a: 'item', t: '631', n:3 },{ a: 'item', t: '40', n:1 }] },
|
||||
{ star: 39, title: "clsl_6", prize: [{ a: 'item', t: '605', n:2 },{ a: 'item', t: '29', n:5 },{ a: 'item', t: '631', n:2 }] },
|
||||
{ star: 29, title: "clsl_5", prize: [{ a: 'item', t: '606', n:3 },{ a: 'item', t: '29', n:5 },{ a: 'item', t: '631', n:1 }] },
|
||||
{ star: 21, title: "clsl_4", prize: [{ a: 'item', t: '606', n:2 },{ a: 'item', t: '29', n:5 },{ a: 'item', t: '39', n:1000 }] },
|
||||
{ star: 13, title: "clsl_3", prize: [{ a: 'item', t: '606', n:1 },{ a: 'item', t: '29', n:5 },{ a: 'item', t: '39', n:800 }] },
|
||||
{ star: 7, title: "clsl_2", prize: [{ a: 'item', t: '29', n:10 },{ a: 'item', t: '29', n:5 },{ a: 'item', t: '39', n:600 }] },
|
||||
{ star: 0, title: "clsl_1", prize: [{ a: 'item', t: '29', n:5 },{ a: 'item', t: '29', n:5 },{ a: 'item', t: '39', n:400 }] }
|
||||
],
|
||||
//王者排名邮件信息
|
||||
email_rank: {
|
||||
|
@ -8498,6 +8498,22 @@
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"50062": [
|
||||
{
|
||||
"id": 50062,
|
||||
"a": "item",
|
||||
"t": 5002,
|
||||
"n": 10,
|
||||
"p": 1
|
||||
},
|
||||
{
|
||||
"id": 50062,
|
||||
"a": "item",
|
||||
"t": 5004,
|
||||
"n": 10,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"60001": [
|
||||
{
|
||||
"id": 60001,
|
||||
@ -32645,6 +32661,906 @@
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271081": [
|
||||
{
|
||||
"id": 271081,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 249674,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271082": [
|
||||
{
|
||||
"id": 271082,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 249905,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271083": [
|
||||
{
|
||||
"id": 271083,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 250136,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271084": [
|
||||
{
|
||||
"id": 271084,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 250367,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271085": [
|
||||
{
|
||||
"id": 271085,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 250598,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271086": [
|
||||
{
|
||||
"id": 271086,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 250829,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271087": [
|
||||
{
|
||||
"id": 271087,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 251060,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271088": [
|
||||
{
|
||||
"id": 271088,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 251291,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271089": [
|
||||
{
|
||||
"id": 271089,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 251522,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271090": [
|
||||
{
|
||||
"id": 271090,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 251753,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271091": [
|
||||
{
|
||||
"id": 271091,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 251984,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271092": [
|
||||
{
|
||||
"id": 271092,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 252215,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271093": [
|
||||
{
|
||||
"id": 271093,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 252446,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271094": [
|
||||
{
|
||||
"id": 271094,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 252677,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271095": [
|
||||
{
|
||||
"id": 271095,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 252908,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271096": [
|
||||
{
|
||||
"id": 271096,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 253139,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271097": [
|
||||
{
|
||||
"id": 271097,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 253370,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271098": [
|
||||
{
|
||||
"id": 271098,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 253601,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271099": [
|
||||
{
|
||||
"id": 271099,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 253832,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271100": [
|
||||
{
|
||||
"id": 271100,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 254063,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271101": [
|
||||
{
|
||||
"id": 271101,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 254294,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271102": [
|
||||
{
|
||||
"id": 271102,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 254525,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271103": [
|
||||
{
|
||||
"id": 271103,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 254756,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271104": [
|
||||
{
|
||||
"id": 271104,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 254987,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271105": [
|
||||
{
|
||||
"id": 271105,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 255218,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271106": [
|
||||
{
|
||||
"id": 271106,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 255449,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271107": [
|
||||
{
|
||||
"id": 271107,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 255680,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271108": [
|
||||
{
|
||||
"id": 271108,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 255911,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271109": [
|
||||
{
|
||||
"id": 271109,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 256142,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271110": [
|
||||
{
|
||||
"id": 271110,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 256373,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271111": [
|
||||
{
|
||||
"id": 271111,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 256604,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271112": [
|
||||
{
|
||||
"id": 271112,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 256835,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271113": [
|
||||
{
|
||||
"id": 271113,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 257066,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271114": [
|
||||
{
|
||||
"id": 271114,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 257297,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271115": [
|
||||
{
|
||||
"id": 271115,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 257528,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271116": [
|
||||
{
|
||||
"id": 271116,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 257759,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271117": [
|
||||
{
|
||||
"id": 271117,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 257990,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271118": [
|
||||
{
|
||||
"id": 271118,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 258221,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271119": [
|
||||
{
|
||||
"id": 271119,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 258452,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271120": [
|
||||
{
|
||||
"id": 271120,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 258683,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271121": [
|
||||
{
|
||||
"id": 271121,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 258914,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271122": [
|
||||
{
|
||||
"id": 271122,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 259145,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271123": [
|
||||
{
|
||||
"id": 271123,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 259376,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271124": [
|
||||
{
|
||||
"id": 271124,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 259607,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271125": [
|
||||
{
|
||||
"id": 271125,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 259838,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271126": [
|
||||
{
|
||||
"id": 271126,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 260069,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271127": [
|
||||
{
|
||||
"id": 271127,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 260300,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271128": [
|
||||
{
|
||||
"id": 271128,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 260531,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271129": [
|
||||
{
|
||||
"id": 271129,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 260762,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271130": [
|
||||
{
|
||||
"id": 271130,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 260993,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271131": [
|
||||
{
|
||||
"id": 271131,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 261224,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271132": [
|
||||
{
|
||||
"id": 271132,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 261455,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271133": [
|
||||
{
|
||||
"id": 271133,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 261686,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271134": [
|
||||
{
|
||||
"id": 271134,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 261917,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271135": [
|
||||
{
|
||||
"id": 271135,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 262148,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271136": [
|
||||
{
|
||||
"id": 271136,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 262379,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271137": [
|
||||
{
|
||||
"id": 271137,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 262610,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271138": [
|
||||
{
|
||||
"id": 271138,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 262841,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271139": [
|
||||
{
|
||||
"id": 271139,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 263072,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271140": [
|
||||
{
|
||||
"id": 271140,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 263303,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271141": [
|
||||
{
|
||||
"id": 271141,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 263534,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271142": [
|
||||
{
|
||||
"id": 271142,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 263765,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271143": [
|
||||
{
|
||||
"id": 271143,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 263996,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271144": [
|
||||
{
|
||||
"id": 271144,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 264227,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271145": [
|
||||
{
|
||||
"id": 271145,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 264458,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271146": [
|
||||
{
|
||||
"id": 271146,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 264689,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271147": [
|
||||
{
|
||||
"id": 271147,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 264920,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271148": [
|
||||
{
|
||||
"id": 271148,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 265151,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271149": [
|
||||
{
|
||||
"id": 271149,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 265382,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271150": [
|
||||
{
|
||||
"id": 271150,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 265613,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271151": [
|
||||
{
|
||||
"id": 271151,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 265844,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271152": [
|
||||
{
|
||||
"id": 271152,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 266075,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271153": [
|
||||
{
|
||||
"id": 271153,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 266306,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271154": [
|
||||
{
|
||||
"id": 271154,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 266537,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271155": [
|
||||
{
|
||||
"id": 271155,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 266768,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271156": [
|
||||
{
|
||||
"id": 271156,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 266999,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271157": [
|
||||
{
|
||||
"id": 271157,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 267230,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271158": [
|
||||
{
|
||||
"id": 271158,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 267461,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271159": [
|
||||
{
|
||||
"id": 271159,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 267692,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271160": [
|
||||
{
|
||||
"id": 271160,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 267923,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271161": [
|
||||
{
|
||||
"id": 271161,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 268154,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271162": [
|
||||
{
|
||||
"id": 271162,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 268385,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271163": [
|
||||
{
|
||||
"id": 271163,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 268616,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271164": [
|
||||
{
|
||||
"id": 271164,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 268847,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271165": [
|
||||
{
|
||||
"id": 271165,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 269078,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271166": [
|
||||
{
|
||||
"id": 271166,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 269309,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271167": [
|
||||
{
|
||||
"id": 271167,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 269540,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271168": [
|
||||
{
|
||||
"id": 271168,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 269771,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271169": [
|
||||
{
|
||||
"id": 271169,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 270002,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271170": [
|
||||
{
|
||||
"id": 271170,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 270233,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271171": [
|
||||
{
|
||||
"id": 271171,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 270464,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271172": [
|
||||
{
|
||||
"id": 271172,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 270695,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271173": [
|
||||
{
|
||||
"id": 271173,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 270926,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271174": [
|
||||
{
|
||||
"id": 271174,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 271157,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271175": [
|
||||
{
|
||||
"id": 271175,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 271388,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271176": [
|
||||
{
|
||||
"id": 271176,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 271619,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271177": [
|
||||
{
|
||||
"id": 271177,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 271850,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271178": [
|
||||
{
|
||||
"id": 271178,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 272081,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271179": [
|
||||
{
|
||||
"id": 271179,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 272312,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"271180": [
|
||||
{
|
||||
"id": 271180,
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 272543,
|
||||
"p": 1
|
||||
}
|
||||
],
|
||||
"280001": [
|
||||
{
|
||||
"id": 280001,
|
||||
|
@ -10,6 +10,7 @@
|
||||
//累计x个密宝可领取一次奖励
|
||||
getPrizeByMiBaoNum: 6,
|
||||
//每天重置后回退的层数
|
||||
//这个值没用刺鸟那边写了公式不用这个值了
|
||||
dayResetBackLayer: 6,
|
||||
//每周重置后回退的层数
|
||||
weekResetBackLayer: 0,
|
||||
|
@ -2666,6 +2666,27 @@
|
||||
"rarity": 6
|
||||
}
|
||||
},
|
||||
"item^638": {
|
||||
"itemId": "item^638",
|
||||
"name": "扭蛋机超级干部随机箱",
|
||||
"i18nKey": "intr_item_name_638",
|
||||
"detailI18nKey": "intr_item_describe_638",
|
||||
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
|
||||
"value": 30000,
|
||||
"typeId": "item",
|
||||
"typeName": "道具",
|
||||
"isStoreSupported": true,
|
||||
"isAiSupported": true,
|
||||
"attributes": {
|
||||
"storeDisplayPrice": null,
|
||||
"storeCategory": "",
|
||||
"setQuantity": 1,
|
||||
"purchaseLimit": 0,
|
||||
"sellMinCp": 100,
|
||||
"sellMaxCp": 500,
|
||||
"rarity": 6
|
||||
}
|
||||
},
|
||||
"item^5001": {
|
||||
"itemId": "item^5001",
|
||||
"name": "莱薇碎片",
|
||||
@ -7160,6 +7181,27 @@
|
||||
"rarity": 4
|
||||
}
|
||||
},
|
||||
"item^50012": {
|
||||
"itemId": "item^50012",
|
||||
"name": "花漫大地",
|
||||
"i18nKey": "playerheadFrame_name_26",
|
||||
"detailI18nKey": "intr_item_describe_50012",
|
||||
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
|
||||
"value": 0,
|
||||
"typeId": "item",
|
||||
"typeName": "道具",
|
||||
"isStoreSupported": true,
|
||||
"isAiSupported": true,
|
||||
"attributes": {
|
||||
"storeDisplayPrice": null,
|
||||
"storeCategory": "",
|
||||
"setQuantity": 1,
|
||||
"purchaseLimit": 0,
|
||||
"sellMinCp": 100,
|
||||
"sellMaxCp": 500,
|
||||
"rarity": 5
|
||||
}
|
||||
},
|
||||
"item^50101": {
|
||||
"itemId": "item^50101",
|
||||
"name": "冰天雪地",
|
||||
@ -7454,6 +7496,69 @@
|
||||
"rarity": 5
|
||||
}
|
||||
},
|
||||
"item^80001": {
|
||||
"itemId": "item^80001",
|
||||
"name": "白色朗姆酒",
|
||||
"i18nKey": "intr_item_name_80001",
|
||||
"detailI18nKey": "intr_item_describe_80001",
|
||||
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
|
||||
"value": 0,
|
||||
"typeId": "item",
|
||||
"typeName": "道具",
|
||||
"isStoreSupported": true,
|
||||
"isAiSupported": true,
|
||||
"attributes": {
|
||||
"storeDisplayPrice": null,
|
||||
"storeCategory": "",
|
||||
"setQuantity": 1,
|
||||
"purchaseLimit": 0,
|
||||
"sellMinCp": 100,
|
||||
"sellMaxCp": 500,
|
||||
"rarity": 4
|
||||
}
|
||||
},
|
||||
"item^80002": {
|
||||
"itemId": "item^80002",
|
||||
"name": "金色朗姆酒",
|
||||
"i18nKey": "intr_item_name_80002",
|
||||
"detailI18nKey": "intr_item_describe_80002",
|
||||
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
|
||||
"value": 0,
|
||||
"typeId": "item",
|
||||
"typeName": "道具",
|
||||
"isStoreSupported": true,
|
||||
"isAiSupported": true,
|
||||
"attributes": {
|
||||
"storeDisplayPrice": null,
|
||||
"storeCategory": "",
|
||||
"setQuantity": 1,
|
||||
"purchaseLimit": 0,
|
||||
"sellMinCp": 100,
|
||||
"sellMaxCp": 500,
|
||||
"rarity": 5
|
||||
}
|
||||
},
|
||||
"item^80003": {
|
||||
"itemId": "item^80003",
|
||||
"name": "黑色朗姆酒",
|
||||
"i18nKey": "intr_item_name_80003",
|
||||
"detailI18nKey": "intr_item_describe_80003",
|
||||
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
|
||||
"value": 0,
|
||||
"typeId": "item",
|
||||
"typeName": "道具",
|
||||
"isStoreSupported": true,
|
||||
"isAiSupported": true,
|
||||
"attributes": {
|
||||
"storeDisplayPrice": null,
|
||||
"storeCategory": "",
|
||||
"setQuantity": 1,
|
||||
"purchaseLimit": 0,
|
||||
"sellMinCp": 100,
|
||||
"sellMaxCp": 500,
|
||||
"rarity": 6
|
||||
}
|
||||
},
|
||||
"equip^1001": {
|
||||
"itemId": "equip^1001",
|
||||
"name": "棉布头盔",
|
||||
@ -10813,5 +10918,67 @@
|
||||
"sellMaxCp": 500,
|
||||
"rarity": 5
|
||||
}
|
||||
},
|
||||
"attr^huangqijinbi": {
|
||||
"itemId": "attr^huangqijinbi",
|
||||
"name": "黄旗金币",
|
||||
"i18nKey": "intr_attr_name_18",
|
||||
"detailI18nKey": "intr_attr_describe_18",
|
||||
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
|
||||
"value": 240,
|
||||
"typeId": "attr",
|
||||
"typeName": "货币",
|
||||
"isStoreSupported": true,
|
||||
"isAiSupported": true,
|
||||
"attributes": {
|
||||
"storeDisplayPrice": null,
|
||||
"storeCategory": "",
|
||||
"setQuantity": 1,
|
||||
"purchaseLimit": 0,
|
||||
"sellMinCp": 100,
|
||||
"sellMaxCp": 500,
|
||||
"rarity": 5
|
||||
}
|
||||
},
|
||||
"attr^huangqiduihuan": {
|
||||
"itemId": "attr^huangqiduihuan",
|
||||
"name": "黄旗票券",
|
||||
"i18nKey": "intr_attr_name_19",
|
||||
"detailI18nKey": "intr_attr_describe_19",
|
||||
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
|
||||
"value": 20,
|
||||
"typeId": "attr",
|
||||
"typeName": "货币",
|
||||
"isStoreSupported": true,
|
||||
"isAiSupported": true,
|
||||
"attributes": {
|
||||
"storeDisplayPrice": null,
|
||||
"storeCategory": "",
|
||||
"setQuantity": 1,
|
||||
"purchaseLimit": 0,
|
||||
"sellMinCp": 100,
|
||||
"sellMaxCp": 500,
|
||||
"rarity": 5
|
||||
}
|
||||
},
|
||||
"heroskin^50011": {
|
||||
"itemId": "heroskin^50011",
|
||||
"name": "兔女郎",
|
||||
"i18nKey": "heroSkin_name_1",
|
||||
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
|
||||
"value": 20000,
|
||||
"typeId": "heroskin",
|
||||
"typeName": "干部皮肤",
|
||||
"isStoreSupported": true,
|
||||
"isAiSupported": true,
|
||||
"attributes": {
|
||||
"storeDisplayPrice": null,
|
||||
"storeCategory": "",
|
||||
"setQuantity": 1,
|
||||
"purchaseLimit": 0,
|
||||
"sellMinCp": 100,
|
||||
"sellMaxCp": 500,
|
||||
"rarity": 5
|
||||
}
|
||||
}
|
||||
}
|
@ -1925,6 +1925,37 @@
|
||||
"initiative": 1,
|
||||
"location": 1
|
||||
},
|
||||
"186": {
|
||||
"id": 186,
|
||||
"triggerType": "openCond",
|
||||
"typeId": "weiwang",
|
||||
"Type": "finger",
|
||||
"path": "Canvas/draw/uiRoot/uiView_mainMenu/mainMenu/btnLayout/zd",
|
||||
"undefined": "点探险",
|
||||
"initiative": 1,
|
||||
"location": 2
|
||||
},
|
||||
"187": {
|
||||
"id": 187,
|
||||
"triggerType": "openCond",
|
||||
"typeId": "weiwang",
|
||||
"Type": "finger",
|
||||
"path": "Canvas/draw/uiRoot/uiView_tanxian/tanxian/tx_map1/btn_ww",
|
||||
"undefined": "点影响力按钮",
|
||||
"initiative": 1,
|
||||
"location": 1
|
||||
},
|
||||
"188": {
|
||||
"id": 188,
|
||||
"triggerType": "openCond",
|
||||
"typeId": "weiwang",
|
||||
"Type": "finger",
|
||||
"path": "Canvas/draw/uiRoot/uiView_weiwang/weiwang/xia/shengji/btn_sj",
|
||||
"undefined": "点升级按钮",
|
||||
"initiative": 1,
|
||||
"location": 1,
|
||||
"filter": "loop_openConfGuideEnd"
|
||||
},
|
||||
"20001": {
|
||||
"id": 20001,
|
||||
"triggerType": "lose",
|
||||
|
@ -12,7 +12,7 @@
|
||||
//积分赛vip等级对应的可购买挑战次数
|
||||
jfsBuyFightNum: [3, 5, 7, 9, 12, 15, 18, 21, 24, 27, 30, 33, 35, 36, 38, 40, 42, 50],
|
||||
//积分赛每日免费刷新次数
|
||||
jfsRefreshNum: 0,
|
||||
jfsRefreshNum: 15,
|
||||
//积分赛每日免费刷新次数使用完后的刷新消耗
|
||||
jfsRefreshNeed: [{a: 'attr', t: 'rmbmoney', n: 20}],
|
||||
//积分赛购买挑战次数对应的消耗
|
||||
|
178
src/json/heroSkin.json
Normal file
178
src/json/heroSkin.json
Normal file
@ -0,0 +1,178 @@
|
||||
{
|
||||
"40021": {
|
||||
"id": 40021,
|
||||
"heroId": 4002,
|
||||
"name": "heroSkin_name_6",
|
||||
"des": "heroSkin_des_6",
|
||||
"undefined": "龙行天下",
|
||||
"model": 40021,
|
||||
"card": 40021,
|
||||
"head": 40021,
|
||||
"battle": 40021,
|
||||
"colour": 5,
|
||||
"icon": 40021,
|
||||
"zhuanhuan": [
|
||||
{
|
||||
"a": "item",
|
||||
"t": "80002",
|
||||
"n": 200
|
||||
}
|
||||
],
|
||||
"display": 0,
|
||||
"advancedEffects": "ani_xiangzikuang"
|
||||
},
|
||||
"40061": {
|
||||
"id": 40061,
|
||||
"heroId": 4006,
|
||||
"name": "heroSkin_name_7",
|
||||
"des": "heroSkin_des_7",
|
||||
"undefined": "假面魅姬",
|
||||
"model": 40061,
|
||||
"card": 40061,
|
||||
"head": 40061,
|
||||
"battle": 40061,
|
||||
"colour": 5,
|
||||
"icon": 40061,
|
||||
"zhuanhuan": [
|
||||
{
|
||||
"a": "item",
|
||||
"t": "80002",
|
||||
"n": 200
|
||||
}
|
||||
],
|
||||
"display": 0,
|
||||
"advancedEffects": "ani_xiangzikuang"
|
||||
},
|
||||
"40071": {
|
||||
"id": 40071,
|
||||
"heroId": 4007,
|
||||
"name": "heroSkin_name_8",
|
||||
"des": "heroSkin_des_8",
|
||||
"undefined": "樱花之舞",
|
||||
"model": 40071,
|
||||
"card": 40071,
|
||||
"head": 40071,
|
||||
"battle": 40071,
|
||||
"colour": 5,
|
||||
"icon": 40071,
|
||||
"zhuanhuan": [
|
||||
{
|
||||
"a": "item",
|
||||
"t": "80002",
|
||||
"n": 200
|
||||
}
|
||||
],
|
||||
"display": 0,
|
||||
"advancedEffects": "ani_xiangzikuang"
|
||||
},
|
||||
"50011": {
|
||||
"id": 50011,
|
||||
"heroId": 5001,
|
||||
"name": "heroSkin_name_1",
|
||||
"des": "heroSkin_des_1",
|
||||
"undefined": "兔女郎",
|
||||
"model": 50011,
|
||||
"card": 50011,
|
||||
"head": 50011,
|
||||
"battle": 50011,
|
||||
"colour": 6,
|
||||
"icon": 50011,
|
||||
"zhuanhuan": [
|
||||
{
|
||||
"a": "item",
|
||||
"t": "80003",
|
||||
"n": 200
|
||||
}
|
||||
],
|
||||
"display": 1,
|
||||
"advancedEffects": "ani_xiangzihong"
|
||||
},
|
||||
"50021": {
|
||||
"id": 50021,
|
||||
"heroId": 5002,
|
||||
"name": "heroSkin_name_2",
|
||||
"des": "heroSkin_des_2",
|
||||
"undefined": "大尉之风",
|
||||
"model": 50021,
|
||||
"card": 50021,
|
||||
"head": 50021,
|
||||
"battle": 50021,
|
||||
"colour": 6,
|
||||
"icon": 50021,
|
||||
"zhuanhuan": [
|
||||
{
|
||||
"a": "item",
|
||||
"t": "80003",
|
||||
"n": 200
|
||||
}
|
||||
],
|
||||
"display": 0,
|
||||
"advancedEffects": "ani_xiangzihong"
|
||||
},
|
||||
"50031": {
|
||||
"id": 50031,
|
||||
"heroId": 5003,
|
||||
"name": "heroSkin_name_3",
|
||||
"des": "heroSkin_des_3",
|
||||
"undefined": "西装暴徒",
|
||||
"model": 50031,
|
||||
"card": 50031,
|
||||
"head": 50031,
|
||||
"battle": 50031,
|
||||
"colour": 6,
|
||||
"icon": 50031,
|
||||
"zhuanhuan": [
|
||||
{
|
||||
"a": "item",
|
||||
"t": "80003",
|
||||
"n": 200
|
||||
}
|
||||
],
|
||||
"display": 0,
|
||||
"advancedEffects": "ani_xiangzihong"
|
||||
},
|
||||
"50041": {
|
||||
"id": 50041,
|
||||
"heroId": 5004,
|
||||
"name": "heroSkin_name_4",
|
||||
"des": "heroSkin_des_4",
|
||||
"undefined": "浪客剑心",
|
||||
"model": 50041,
|
||||
"card": 50041,
|
||||
"head": 50041,
|
||||
"battle": 50041,
|
||||
"colour": 6,
|
||||
"icon": 50041,
|
||||
"zhuanhuan": [
|
||||
{
|
||||
"a": "item",
|
||||
"t": "80003",
|
||||
"n": 200
|
||||
}
|
||||
],
|
||||
"display": 0,
|
||||
"advancedEffects": "ani_xiangzihong"
|
||||
},
|
||||
"50051": {
|
||||
"id": 50051,
|
||||
"heroId": 5005,
|
||||
"name": "heroSkin_name_5",
|
||||
"des": "heroSkin_des_5",
|
||||
"undefined": "猎犬出动",
|
||||
"model": 50051,
|
||||
"card": 50051,
|
||||
"head": 50051,
|
||||
"battle": 50051,
|
||||
"colour": 6,
|
||||
"icon": 50051,
|
||||
"zhuanhuan": [
|
||||
{
|
||||
"a": "item",
|
||||
"t": "80003",
|
||||
"n": 200
|
||||
}
|
||||
],
|
||||
"display": 0,
|
||||
"advancedEffects": "ani_xiangzihong"
|
||||
}
|
||||
}
|
1031
src/json/heroSkinLv.json
Normal file
1031
src/json/heroSkinLv.json
Normal file
File diff suppressed because it is too large
Load Diff
@ -9811,7 +9811,7 @@
|
||||
"undpspro": 0.06,
|
||||
"speed": 20,
|
||||
"hp": 33800,
|
||||
"pvpdpspro": 0.3,
|
||||
"pvpdpsdrop": 0.3,
|
||||
"atkpro": 1.4,
|
||||
"defpro": 1.4,
|
||||
"hppro": 1.4,
|
||||
@ -9848,7 +9848,7 @@
|
||||
"undpspro": 0.06,
|
||||
"speed": 20,
|
||||
"hp": 33800,
|
||||
"pvpdpspro": 0.3,
|
||||
"pvpdpsdrop": 0.3,
|
||||
"atkpro": 1.8,
|
||||
"defpro": 1.8,
|
||||
"hppro": 1.8,
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -2111,6 +2111,25 @@
|
||||
"payId": "",
|
||||
"advancedEffects": "ani_xiangzihong"
|
||||
},
|
||||
"638": {
|
||||
"id": 638,
|
||||
"name": "intr_item_name_638",
|
||||
"undefined": "使用后可随机获得以下碎片",
|
||||
"type": 2,
|
||||
"sort": 1,
|
||||
"colour": 5,
|
||||
"way": [],
|
||||
"go": "",
|
||||
"icon": "icon_equipBox_8",
|
||||
"sicon": "icon_equipBox_8",
|
||||
"describe": "intr_item_describe_638",
|
||||
"diaoluo": 50062,
|
||||
"useNeed": [],
|
||||
"usePrize": [],
|
||||
"selecPrize": [],
|
||||
"payId": "",
|
||||
"advancedEffects": "ani_xiangzikuang"
|
||||
},
|
||||
"1001": {
|
||||
"id": 1001,
|
||||
"name": "intr_item_name_1001",
|
||||
@ -3842,7 +3861,7 @@
|
||||
"50001": {
|
||||
"id": 50001,
|
||||
"name": "playerheadFrame_name_3",
|
||||
"undefined": "使用后解锁头像框“火力覆盖”",
|
||||
"undefined": "使用后解锁头像框“火力覆盖”,解锁后防御加成+1%",
|
||||
"type": 7,
|
||||
"sort": 1,
|
||||
"colour": 4,
|
||||
@ -3861,7 +3880,7 @@
|
||||
"50002": {
|
||||
"id": 50002,
|
||||
"name": "playerheadFrame_name_4",
|
||||
"undefined": "使用后解锁头像框“双枪”",
|
||||
"undefined": "使用后解锁头像框“双枪”,解锁后攻击加成+1%",
|
||||
"type": 7,
|
||||
"sort": 1,
|
||||
"colour": 4,
|
||||
@ -3880,7 +3899,7 @@
|
||||
"50003": {
|
||||
"id": 50003,
|
||||
"name": "playerheadFrame_name_6",
|
||||
"undefined": "使用后解锁头像框“武装炫耀”",
|
||||
"undefined": "使用后解锁头像框“武装炫耀”,解锁后攻击加成+1%、生命加成+1%(限时7天)",
|
||||
"type": 7,
|
||||
"sort": 1,
|
||||
"colour": 4,
|
||||
@ -3899,7 +3918,7 @@
|
||||
"50004": {
|
||||
"id": 50004,
|
||||
"name": "playerheadFrame_name_7",
|
||||
"undefined": "使用后解锁头像框“血海”",
|
||||
"undefined": "使用后解锁头像框“血海”,解锁后攻击加成+1%、生命加成+1%(限时7天)",
|
||||
"type": 7,
|
||||
"sort": 1,
|
||||
"colour": 4,
|
||||
@ -3918,7 +3937,7 @@
|
||||
"50005": {
|
||||
"id": 50005,
|
||||
"name": "playerheadFrame_name_8",
|
||||
"undefined": "使用后解锁头像框“边界感”",
|
||||
"undefined": "使用后解锁头像框“破笼而出”,解锁后伤害加成+2%(限时7天)",
|
||||
"type": 7,
|
||||
"sort": 1,
|
||||
"colour": 4,
|
||||
@ -3937,7 +3956,7 @@
|
||||
"50006": {
|
||||
"id": 50006,
|
||||
"name": "playerheadFrame_name_9",
|
||||
"undefined": "使用后解锁头像框“破笼而出”",
|
||||
"undefined": "使用后解锁头像框“擂台”,解锁后防御加成+1%",
|
||||
"type": 7,
|
||||
"sort": 1,
|
||||
"colour": 4,
|
||||
@ -3956,7 +3975,7 @@
|
||||
"50007": {
|
||||
"id": 50007,
|
||||
"name": "playerheadFrame_name_10",
|
||||
"undefined": "使用后解锁头像框“破土而出”",
|
||||
"undefined": "使用后解锁头像框“破土而出”,解锁后攻击加成+1%、生命加成+1%(限时7天)",
|
||||
"type": 7,
|
||||
"sort": 1,
|
||||
"colour": 4,
|
||||
@ -3975,7 +3994,7 @@
|
||||
"50008": {
|
||||
"id": 50008,
|
||||
"name": "playerheadFrame_name_11",
|
||||
"undefined": "使用后解锁头像框“赠礼”",
|
||||
"undefined": "使用后解锁头像框“赠礼”,解锁后攻击加成+1%、生命加成+1%",
|
||||
"type": 7,
|
||||
"sort": 1,
|
||||
"colour": 4,
|
||||
@ -3994,10 +4013,10 @@
|
||||
"50009": {
|
||||
"id": 50009,
|
||||
"name": "playerheadFrame_name_23",
|
||||
"undefined": "使用后解锁头像框“圣诞氛围”",
|
||||
"undefined": "使用后解锁头像框“圣诞氛围”,解锁后防御加成+1%,解锁后生命加成+1%",
|
||||
"type": 7,
|
||||
"sort": 1,
|
||||
"colour": 4,
|
||||
"colour": 5,
|
||||
"way": [],
|
||||
"go": "",
|
||||
"icon": "txk_028",
|
||||
@ -4008,15 +4027,15 @@
|
||||
"usePrize": [],
|
||||
"selecPrize": [],
|
||||
"payId": "",
|
||||
"advancedEffects": ""
|
||||
"advancedEffects": "ani_xiangzikuang"
|
||||
},
|
||||
"50010": {
|
||||
"id": 50010,
|
||||
"name": "playerheadFrame_name_24",
|
||||
"undefined": "使用后解锁头像框“披星戴月”",
|
||||
"undefined": "使用后解锁头像框“披星戴月”,解锁后伤害加成+1%(限时7天)",
|
||||
"type": 7,
|
||||
"sort": 1,
|
||||
"colour": 4,
|
||||
"colour": 5,
|
||||
"way": [],
|
||||
"go": "",
|
||||
"icon": "txk_025",
|
||||
@ -4027,15 +4046,15 @@
|
||||
"usePrize": [],
|
||||
"selecPrize": [],
|
||||
"payId": "",
|
||||
"advancedEffects": ""
|
||||
"advancedEffects": "ani_xiangzikuang"
|
||||
},
|
||||
"50011": {
|
||||
"id": 50011,
|
||||
"name": "playerheadFrame_name_25",
|
||||
"undefined": "使用后解锁头像框“新春安宁”",
|
||||
"undefined": "使用后解锁头像框“新春安宁”,解锁后生命加成+1%",
|
||||
"type": 7,
|
||||
"sort": 1,
|
||||
"colour": 4,
|
||||
"colour": 5,
|
||||
"way": [],
|
||||
"go": "",
|
||||
"icon": "txk_029",
|
||||
@ -4046,12 +4065,31 @@
|
||||
"usePrize": [],
|
||||
"selecPrize": [],
|
||||
"payId": "",
|
||||
"advancedEffects": ""
|
||||
"advancedEffects": "ani_xiangzikuang"
|
||||
},
|
||||
"50012": {
|
||||
"id": 50012,
|
||||
"name": "playerheadFrame_name_26",
|
||||
"undefined": "使用后解锁头像框“花漫大地”,解锁后生命加成+1%",
|
||||
"type": 7,
|
||||
"sort": 1,
|
||||
"colour": 5,
|
||||
"way": [],
|
||||
"go": "",
|
||||
"icon": "txk_007",
|
||||
"sicon": "txk_007",
|
||||
"describe": "intr_item_describe_50012",
|
||||
"diaoluo": 26,
|
||||
"useNeed": [],
|
||||
"usePrize": [],
|
||||
"selecPrize": [],
|
||||
"payId": "",
|
||||
"advancedEffects": "ani_xiangzikuang"
|
||||
},
|
||||
"50101": {
|
||||
"id": 50101,
|
||||
"name": "playerChatFrame_name_6",
|
||||
"undefined": "使用后解锁聊天框“冰天雪地”",
|
||||
"undefined": "使用后解锁聊天框“冰天雪地”,解锁后攻击加成+1%、生命加成+1%(限时7天)",
|
||||
"type": 8,
|
||||
"sort": 1,
|
||||
"colour": 4,
|
||||
@ -4070,7 +4108,7 @@
|
||||
"50102": {
|
||||
"id": 50102,
|
||||
"name": "playerChatFrame_name_7",
|
||||
"undefined": "使用后解锁聊天框“海浪奔涌”",
|
||||
"undefined": "使用后解锁聊天框“海浪奔涌”,解锁后防御加成+1%",
|
||||
"type": 8,
|
||||
"sort": 1,
|
||||
"colour": 4,
|
||||
@ -4089,7 +4127,7 @@
|
||||
"50103": {
|
||||
"id": 50103,
|
||||
"name": "playerheadFrame_name_15",
|
||||
"undefined": "使用后解锁头像框“名扬四海”",
|
||||
"undefined": "使用后解锁头像框“名扬四海”,解锁后伤害加成+1%",
|
||||
"type": 7,
|
||||
"sort": 1,
|
||||
"colour": 4,
|
||||
@ -4108,7 +4146,7 @@
|
||||
"50104": {
|
||||
"id": 50104,
|
||||
"name": "playerChatFrame_name_8",
|
||||
"undefined": "使用后解锁聊天框“圣诞快乐”",
|
||||
"undefined": "使用后解锁聊天框“圣诞快乐”,解锁后防御加成+1%",
|
||||
"type": 8,
|
||||
"sort": 1,
|
||||
"colour": 4,
|
||||
@ -4127,7 +4165,7 @@
|
||||
"50105": {
|
||||
"id": 50105,
|
||||
"name": "playerChatFrame_name_9",
|
||||
"undefined": "使用后解锁聊天框“新年快乐”",
|
||||
"undefined": "使用后解锁聊天框“新年快乐”,解锁后防御加成+1%",
|
||||
"type": 8,
|
||||
"sort": 1,
|
||||
"colour": 4,
|
||||
@ -4146,7 +4184,7 @@
|
||||
"50201": {
|
||||
"id": 50201,
|
||||
"name": "playerheadFrame_name_16",
|
||||
"undefined": "使用后解锁头像框“招贤纳士”",
|
||||
"undefined": "使用后解锁头像框“招贤纳士”,解锁后攻击加成+1%",
|
||||
"type": 7,
|
||||
"sort": 1,
|
||||
"colour": 4,
|
||||
@ -4165,7 +4203,7 @@
|
||||
"50202": {
|
||||
"id": 50202,
|
||||
"name": "playerheadFrame_name_17",
|
||||
"undefined": "使用后解锁头像框“势如破竹”",
|
||||
"undefined": "使用后解锁头像框“势如破竹”,解锁后防御加成+1%",
|
||||
"type": 7,
|
||||
"sort": 1,
|
||||
"colour": 4,
|
||||
@ -4184,7 +4222,7 @@
|
||||
"50203": {
|
||||
"id": 50203,
|
||||
"name": "playerheadFrame_name_18",
|
||||
"undefined": "使用后解锁头像框“被甲执兵”",
|
||||
"undefined": "使用后解锁头像框“被甲执兵”,解锁后生命加成+1%",
|
||||
"type": 7,
|
||||
"sort": 1,
|
||||
"colour": 4,
|
||||
@ -4203,7 +4241,7 @@
|
||||
"50204": {
|
||||
"id": 50204,
|
||||
"name": "playerheadFrame_name_19",
|
||||
"undefined": "使用后解锁头像框“锋芒毕露”",
|
||||
"undefined": "使用后解锁头像框“锋芒毕露”,解锁后攻击加成+1%",
|
||||
"type": 7,
|
||||
"sort": 1,
|
||||
"colour": 4,
|
||||
@ -4222,7 +4260,7 @@
|
||||
"50205": {
|
||||
"id": 50205,
|
||||
"name": "playerheadFrame_name_20",
|
||||
"undefined": "使用后解锁头像框“所向披靡”",
|
||||
"undefined": "使用后解锁头像框“所向披靡”,解锁后防御加成+1%",
|
||||
"type": 7,
|
||||
"sort": 1,
|
||||
"colour": 4,
|
||||
@ -4241,7 +4279,7 @@
|
||||
"50206": {
|
||||
"id": 50206,
|
||||
"name": "playerheadFrame_name_21",
|
||||
"undefined": "使用后解锁头像框“传世藏品”",
|
||||
"undefined": "使用后解锁头像框“传世藏品”,解锁后生命加成+1%",
|
||||
"type": 7,
|
||||
"sort": 1,
|
||||
"colour": 4,
|
||||
@ -4260,7 +4298,7 @@
|
||||
"50207": {
|
||||
"id": 50207,
|
||||
"name": "playerheadFrame_name_22",
|
||||
"undefined": "使用后解锁头像框“金戈铁马”",
|
||||
"undefined": "使用后解锁头像框“金戈铁马”,解锁后伤害加成+1%",
|
||||
"type": 7,
|
||||
"sort": 1,
|
||||
"colour": 4,
|
||||
@ -4279,7 +4317,7 @@
|
||||
"50301": {
|
||||
"id": 50301,
|
||||
"name": "playerModel_name_3",
|
||||
"undefined": "使用后解锁主角造型“圣诞庆典:男”",
|
||||
"undefined": "使用后解锁主角造型“圣诞庆典:男”,解锁后防御加成+1%",
|
||||
"type": 6,
|
||||
"sort": 1,
|
||||
"colour": 5,
|
||||
@ -4298,7 +4336,7 @@
|
||||
"50302": {
|
||||
"id": 50302,
|
||||
"name": "playerModel_name_4",
|
||||
"undefined": "使用后解锁主角造型“圣诞庆典:女”",
|
||||
"undefined": "使用后解锁主角造型“圣诞庆典:女”,解锁后防御加成+1%",
|
||||
"type": 6,
|
||||
"sort": 1,
|
||||
"colour": 5,
|
||||
@ -7721,5 +7759,59 @@
|
||||
"selecPrize": [],
|
||||
"payId": "",
|
||||
"advancedEffects": ""
|
||||
},
|
||||
"80001": {
|
||||
"id": 80001,
|
||||
"name": "intr_item_name_80001",
|
||||
"undefined": "味道清淡、简单纯净的的白色朗姆酒,可以在干部外观递交给裁缝提升外观等级。",
|
||||
"type": 1,
|
||||
"sort": 1,
|
||||
"colour": 4,
|
||||
"way": [],
|
||||
"go": "",
|
||||
"icon": "icon_pifucailiao_zi",
|
||||
"sicon": "icon_pifucailiao_zi",
|
||||
"describe": "intr_item_describe_80001",
|
||||
"useNeed": [],
|
||||
"usePrize": [],
|
||||
"selecPrize": [],
|
||||
"payId": "",
|
||||
"advancedEffects": ""
|
||||
},
|
||||
"80002": {
|
||||
"id": 80002,
|
||||
"name": "intr_item_name_80002",
|
||||
"undefined": "至少陈酿3年且更甜、更丰富的风味的金色朗姆酒,可以在干部外观递交给裁缝提升外观等级。",
|
||||
"type": 1,
|
||||
"sort": 1,
|
||||
"colour": 5,
|
||||
"way": [],
|
||||
"go": "",
|
||||
"icon": "icon_pifucailiao_cheng",
|
||||
"sicon": "icon_pifucailiao_cheng",
|
||||
"describe": "intr_item_describe_80002",
|
||||
"useNeed": [],
|
||||
"usePrize": [],
|
||||
"selecPrize": [],
|
||||
"payId": "",
|
||||
"advancedEffects": "ani_xiangzikuang"
|
||||
},
|
||||
"80003": {
|
||||
"id": 80003,
|
||||
"name": "intr_item_name_80003",
|
||||
"undefined": "酒味芳醇,味道复杂的陈年黑色朗姆酒,可以在干部外观递交给裁缝提升外观等级。",
|
||||
"type": 1,
|
||||
"sort": 1,
|
||||
"colour": 6,
|
||||
"way": [],
|
||||
"go": "",
|
||||
"icon": "icon_pifucailiao_hong",
|
||||
"sicon": "icon_pifucailiao_hong",
|
||||
"describe": "intr_item_describe_80003",
|
||||
"useNeed": [],
|
||||
"usePrize": [],
|
||||
"selecPrize": [],
|
||||
"payId": "",
|
||||
"advancedEffects": "ani_xiangzihong"
|
||||
}
|
||||
}
|
@ -2,6 +2,8 @@
|
||||
"1": {
|
||||
"id": 1,
|
||||
"dao": 1001,
|
||||
"name": "mingDao_name_1",
|
||||
"undefined": "正宗",
|
||||
"condition": [
|
||||
[
|
||||
"loginDays",
|
||||
@ -41,13 +43,14 @@
|
||||
"zjgy_xld": 10
|
||||
},
|
||||
"img": 1001,
|
||||
"name": "mingDao_name_1",
|
||||
"des": "mingDao_des_1",
|
||||
"privilege_des": "mingDao_tequan_1"
|
||||
},
|
||||
"2": {
|
||||
"id": 2,
|
||||
"dao": 1002,
|
||||
"name": "mingDao_name_2",
|
||||
"undefined": "妖刀村正",
|
||||
"condition": [
|
||||
[
|
||||
"power",
|
||||
@ -97,13 +100,14 @@
|
||||
"wzsj_free": 1
|
||||
},
|
||||
"img": 1002,
|
||||
"name": "mingDao_name_2",
|
||||
"des": "mingDao_des_2",
|
||||
"privilege_des": "mingDao_tequan_2"
|
||||
},
|
||||
"3": {
|
||||
"id": 3,
|
||||
"dao": 1003,
|
||||
"name": "mingDao_name_3",
|
||||
"undefined": "村雨",
|
||||
"condition": [
|
||||
[
|
||||
"zccg",
|
||||
@ -158,13 +162,14 @@
|
||||
"zjgy_xld": 20
|
||||
},
|
||||
"img": 1003,
|
||||
"name": "mingDao_name_3",
|
||||
"des": "mingDao_des_3",
|
||||
"privilege_des": "mingDao_tequan_3"
|
||||
},
|
||||
"4": {
|
||||
"id": 4,
|
||||
"dao": 1004,
|
||||
"name": "mingDao_name_4",
|
||||
"undefined": "大典太",
|
||||
"condition": [
|
||||
[
|
||||
"use_attr_rmbmoney",
|
||||
@ -224,13 +229,14 @@
|
||||
"dpzd_zl": 1
|
||||
},
|
||||
"img": 1004,
|
||||
"name": "mingDao_name_4",
|
||||
"des": "mingDao_des_4",
|
||||
"privilege_des": "mingDao_tequan_4"
|
||||
},
|
||||
"5": {
|
||||
"id": 5,
|
||||
"dao": 1005,
|
||||
"name": "mingDao_name_5",
|
||||
"undefined": "菊一文字",
|
||||
"condition": [
|
||||
[
|
||||
"equip_star_5",
|
||||
@ -295,13 +301,14 @@
|
||||
"zccg_sd": 1
|
||||
},
|
||||
"img": 2001,
|
||||
"name": "mingDao_name_5",
|
||||
"des": "mingDao_des_5",
|
||||
"privilege_des": "mingDao_tequan_5"
|
||||
},
|
||||
"6": {
|
||||
"id": 6,
|
||||
"dao": 1006,
|
||||
"name": "mingDao_name_6",
|
||||
"undefined": "长曾弥虎彻",
|
||||
"condition": [
|
||||
[
|
||||
"zccg",
|
||||
@ -366,13 +373,14 @@
|
||||
"pjbb_rl": 100
|
||||
},
|
||||
"img": 2002,
|
||||
"name": "mingDao_name_6",
|
||||
"des": "mingDao_des_6",
|
||||
"privilege_des": "mingDao_tequan_6"
|
||||
},
|
||||
"7": {
|
||||
"id": 7,
|
||||
"dao": 1007,
|
||||
"name": "mingDao_name_7",
|
||||
"undefined": "和泉守兼定",
|
||||
"condition": [
|
||||
[
|
||||
"peijian_colour_5",
|
||||
@ -434,18 +442,17 @@
|
||||
"hp": 108
|
||||
},
|
||||
"privilege": {
|
||||
"hero_buff": {
|
||||
"xixuepro": 0.05
|
||||
}
|
||||
"pjbb_rl": 100
|
||||
},
|
||||
"img": 2003,
|
||||
"name": "mingDao_name_7",
|
||||
"des": "mingDao_des_7",
|
||||
"privilege_des": "mingDao_tequan_7"
|
||||
},
|
||||
"8": {
|
||||
"id": 8,
|
||||
"dao": 1008,
|
||||
"name": "mingDao_name_8",
|
||||
"undefined": "肥前国忠吉",
|
||||
"condition": [
|
||||
[
|
||||
"equip_star_5",
|
||||
@ -508,17 +515,18 @@
|
||||
},
|
||||
"privilege": {
|
||||
"hero_buff": {
|
||||
"dpspro": 0.06
|
||||
"xixuepro": 0.05
|
||||
}
|
||||
},
|
||||
"img": 3001,
|
||||
"name": "mingDao_name_8",
|
||||
"des": "mingDao_des_8",
|
||||
"privilege_des": "mingDao_tequan_8"
|
||||
},
|
||||
"9": {
|
||||
"id": 9,
|
||||
"dao": 1009,
|
||||
"name": "mingDao_name_9",
|
||||
"undefined": "长船",
|
||||
"condition": [
|
||||
[
|
||||
"power",
|
||||
@ -585,16 +593,19 @@
|
||||
"hp": 112
|
||||
},
|
||||
"privilege": {
|
||||
"pjbb_rl": 100
|
||||
"hero_buff": {
|
||||
"dpspro": 0.06
|
||||
}
|
||||
},
|
||||
"img": 3002,
|
||||
"name": "mingDao_name_9",
|
||||
"des": "mingDao_des_9",
|
||||
"privilege_des": "mingDao_tequan_9"
|
||||
},
|
||||
"10": {
|
||||
"id": 10,
|
||||
"dao": 1010,
|
||||
"name": "mingDao_name_10",
|
||||
"undefined": "童子切安纲",
|
||||
"condition": [
|
||||
[
|
||||
"peijian_colour_5",
|
||||
@ -666,8 +677,321 @@
|
||||
}
|
||||
},
|
||||
"img": 3003,
|
||||
"name": "mingDao_name_10",
|
||||
"des": "mingDao_des_10",
|
||||
"privilege_des": "mingDao_tequan_10"
|
||||
},
|
||||
"11": {
|
||||
"id": 11,
|
||||
"dao": 1011,
|
||||
"name": "mingDao_name_11",
|
||||
"undefined": "乌兹冲锋枪",
|
||||
"condition": [
|
||||
[
|
||||
"power",
|
||||
4000000
|
||||
]
|
||||
],
|
||||
"level": 250,
|
||||
"need": {
|
||||
"a": "item",
|
||||
"t": "21",
|
||||
"n": 1
|
||||
},
|
||||
"needExp": 2250,
|
||||
"reward": {
|
||||
"10": {
|
||||
"a": "attr",
|
||||
"t": "jinbi",
|
||||
"n": 3000000
|
||||
},
|
||||
"20": {
|
||||
"a": "item",
|
||||
"t": "24",
|
||||
"n": 20
|
||||
},
|
||||
"30": {
|
||||
"a": "item",
|
||||
"t": "18",
|
||||
"n": 200
|
||||
},
|
||||
"50": {
|
||||
"a": "item",
|
||||
"t": "10",
|
||||
"n": 150
|
||||
},
|
||||
"80": {
|
||||
"a": "item",
|
||||
"t": "611",
|
||||
"n": 1
|
||||
},
|
||||
"120": {
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 1500000
|
||||
},
|
||||
"160": {
|
||||
"a": "item",
|
||||
"t": "10",
|
||||
"n": 150
|
||||
},
|
||||
"200": {
|
||||
"a": "hero",
|
||||
"t": "5005",
|
||||
"n": 1
|
||||
}
|
||||
},
|
||||
"buff": {
|
||||
"atk": 93,
|
||||
"def": 36,
|
||||
"hp": 718
|
||||
},
|
||||
"upBuff": {
|
||||
"atk": 16,
|
||||
"def": 7,
|
||||
"hp": 130
|
||||
},
|
||||
"privilege": {
|
||||
"pjbb_rl": 100
|
||||
},
|
||||
"img": 3004,
|
||||
"des": "mingDao_des_11",
|
||||
"privilege_des": "mingDao_tequan_11"
|
||||
},
|
||||
"12": {
|
||||
"id": 12,
|
||||
"dao": 1012,
|
||||
"name": "mingDao_name_12",
|
||||
"undefined": "雷明顿M31霰弹枪",
|
||||
"condition": [
|
||||
[
|
||||
"equip_star_5",
|
||||
10
|
||||
]
|
||||
],
|
||||
"level": 300,
|
||||
"need": {
|
||||
"a": "item",
|
||||
"t": "21",
|
||||
"n": 1
|
||||
},
|
||||
"needExp": 2250,
|
||||
"reward": {
|
||||
"20": {
|
||||
"a": "attr",
|
||||
"t": "jinbi",
|
||||
"n": 3000000
|
||||
},
|
||||
"40": {
|
||||
"a": "item",
|
||||
"t": "24",
|
||||
"n": 22
|
||||
},
|
||||
"60": {
|
||||
"a": "item",
|
||||
"t": "18",
|
||||
"n": 250
|
||||
},
|
||||
"80": {
|
||||
"a": "item",
|
||||
"t": "10",
|
||||
"n": 150
|
||||
},
|
||||
"100": {
|
||||
"a": "item",
|
||||
"t": "611",
|
||||
"n": 1
|
||||
},
|
||||
"150": {
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 2000000
|
||||
},
|
||||
"200": {
|
||||
"a": "item",
|
||||
"t": "10",
|
||||
"n": 150
|
||||
},
|
||||
"250": {
|
||||
"a": "hero",
|
||||
"t": "5003",
|
||||
"n": 1
|
||||
}
|
||||
},
|
||||
"buff": {
|
||||
"atk": 99,
|
||||
"def": 40,
|
||||
"hp": 783
|
||||
},
|
||||
"upBuff": {
|
||||
"atk": 16,
|
||||
"def": 7,
|
||||
"hp": 136
|
||||
},
|
||||
"privilege": {
|
||||
"hero_buff": {
|
||||
"mingzhongpro": 0.03
|
||||
}
|
||||
},
|
||||
"img": 3005,
|
||||
"des": "mingDao_des_12",
|
||||
"privilege_des": "mingDao_tequan_12"
|
||||
},
|
||||
"13": {
|
||||
"id": 13,
|
||||
"dao": 1013,
|
||||
"name": "mingDao_name_13",
|
||||
"undefined": "栓动式步枪",
|
||||
"condition": [
|
||||
[
|
||||
"power",
|
||||
8000000
|
||||
]
|
||||
],
|
||||
"level": 350,
|
||||
"need": {
|
||||
"a": "item",
|
||||
"t": "21",
|
||||
"n": 1
|
||||
},
|
||||
"needExp": 2950,
|
||||
"reward": {
|
||||
"30": {
|
||||
"a": "attr",
|
||||
"t": "jinbi",
|
||||
"n": 5000000
|
||||
},
|
||||
"60": {
|
||||
"a": "item",
|
||||
"t": "24",
|
||||
"n": 24
|
||||
},
|
||||
"90": {
|
||||
"a": "item",
|
||||
"t": "18",
|
||||
"n": 300
|
||||
},
|
||||
"120": {
|
||||
"a": "item",
|
||||
"t": "10",
|
||||
"n": 150
|
||||
},
|
||||
"150": {
|
||||
"a": "item",
|
||||
"t": "611",
|
||||
"n": 1
|
||||
},
|
||||
"200": {
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 2000000
|
||||
},
|
||||
"250": {
|
||||
"a": "item",
|
||||
"t": "10",
|
||||
"n": 150
|
||||
},
|
||||
"300": {
|
||||
"a": "hero",
|
||||
"t": "5001",
|
||||
"n": 1
|
||||
}
|
||||
},
|
||||
"buff": {
|
||||
"atk": 108,
|
||||
"def": 44,
|
||||
"hp": 848
|
||||
},
|
||||
"upBuff": {
|
||||
"atk": 16,
|
||||
"def": 7,
|
||||
"hp": 142
|
||||
},
|
||||
"privilege": {
|
||||
"hero_buff": {
|
||||
"shanbipro": 0.03
|
||||
}
|
||||
},
|
||||
"img": 3007,
|
||||
"des": "mingDao_des_13",
|
||||
"privilege_des": "mingDao_tequan_13"
|
||||
},
|
||||
"14": {
|
||||
"id": 14,
|
||||
"dao": 1014,
|
||||
"name": "mingDao_name_14",
|
||||
"undefined": "M16自动步枪",
|
||||
"condition": [
|
||||
[
|
||||
"zccg",
|
||||
400
|
||||
]
|
||||
],
|
||||
"level": 400,
|
||||
"need": {
|
||||
"a": "item",
|
||||
"t": "21",
|
||||
"n": 1
|
||||
},
|
||||
"needExp": 2950,
|
||||
"reward": {
|
||||
"30": {
|
||||
"a": "attr",
|
||||
"t": "jinbi",
|
||||
"n": 5000000
|
||||
},
|
||||
"60": {
|
||||
"a": "item",
|
||||
"t": "24",
|
||||
"n": 26
|
||||
},
|
||||
"100": {
|
||||
"a": "item",
|
||||
"t": "18",
|
||||
"n": 400
|
||||
},
|
||||
"150": {
|
||||
"a": "item",
|
||||
"t": "10",
|
||||
"n": 150
|
||||
},
|
||||
"200": {
|
||||
"a": "item",
|
||||
"t": "611",
|
||||
"n": 1
|
||||
},
|
||||
"250": {
|
||||
"a": "attr",
|
||||
"t": "nexp",
|
||||
"n": 2000000
|
||||
},
|
||||
"300": {
|
||||
"a": "item",
|
||||
"t": "10",
|
||||
"n": 150
|
||||
},
|
||||
"350": {
|
||||
"a": "hero",
|
||||
"t": "5005",
|
||||
"n": 1
|
||||
}
|
||||
},
|
||||
"buff": {
|
||||
"atk": 117,
|
||||
"def": 48,
|
||||
"hp": 913
|
||||
},
|
||||
"upBuff": {
|
||||
"atk": 17,
|
||||
"def": 8,
|
||||
"hp": 148
|
||||
},
|
||||
"privilege": {
|
||||
"hero_buff": {
|
||||
"hppro": 0.06
|
||||
}
|
||||
},
|
||||
"img": 3006,
|
||||
"des": "mingDao_des_14",
|
||||
"privilege_des": "mingDao_tequan_14"
|
||||
}
|
||||
}
|
@ -14,13 +14,18 @@
|
||||
p: 2,
|
||||
pmd: true,
|
||||
prize: [{a: 'item', t: '5001', n: 20}, {a: 'item', t: '5003', n: 20}, {a: 'item', t: '5005', n: 20}]
|
||||
},
|
||||
{
|
||||
p: 1,
|
||||
pmd: false,
|
||||
prize: [{a: 'item', t: '638', n: 1}]
|
||||
},
|
||||
{
|
||||
p: 5,
|
||||
pmd: false,
|
||||
prize: [{a: 'item', t: '18', n:300},{a: 'item', t: '20', n: 350}]
|
||||
},
|
||||
{
|
||||
{
|
||||
p: 6,
|
||||
pmd: true,
|
||||
prize: [{a: 'item', t: '609', n:1}]
|
||||
|
1630
src/json/npc.json
1630
src/json/npc.json
File diff suppressed because it is too large
Load Diff
@ -835,13 +835,13 @@
|
||||
"name": "zc_btn_hs",
|
||||
"undefined": "黑市",
|
||||
"and": {
|
||||
"lv": 15
|
||||
"lv": 7
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_96",
|
||||
"display": {
|
||||
"lv": 15
|
||||
"lv": 7
|
||||
}
|
||||
},
|
||||
"zc_btn_jg": {
|
||||
@ -887,78 +887,78 @@
|
||||
"name": "shouchong",
|
||||
"undefined": "首充",
|
||||
"and": {
|
||||
"mapId": 8
|
||||
"lv": 7
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_64",
|
||||
"display": {
|
||||
"mapId": 8
|
||||
"lv": 7
|
||||
}
|
||||
},
|
||||
"kaifukuanghuan": {
|
||||
"name": "kaifukuanghuan",
|
||||
"undefined": "开服狂欢",
|
||||
"and": {
|
||||
"lv": 15
|
||||
"lv": 10
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_96",
|
||||
"display": {
|
||||
"lv": 15
|
||||
"lv": 10
|
||||
}
|
||||
},
|
||||
"cz_jijin": {
|
||||
"name": "cz_jijin",
|
||||
"undefined": "基金入口",
|
||||
"and": {
|
||||
"mapId": 20
|
||||
"lv": 7
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_64",
|
||||
"display": {
|
||||
"mapId": 20
|
||||
"lv": 7
|
||||
}
|
||||
},
|
||||
"jijin": {
|
||||
"name": "jijin",
|
||||
"undefined": "基金",
|
||||
"and": {
|
||||
"mapId": 20
|
||||
"lv": 7
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_64",
|
||||
"display": {
|
||||
"mapId": 20
|
||||
"lv": 7
|
||||
}
|
||||
},
|
||||
"jijin_gkjj": {
|
||||
"name": "jijin_gkjj",
|
||||
"undefined": "关卡基金",
|
||||
"and": {
|
||||
"mapId": 20
|
||||
"lv": 7
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_64",
|
||||
"display": {
|
||||
"mapId": 20
|
||||
"lv": 7
|
||||
}
|
||||
},
|
||||
"jijin_tbtxz": {
|
||||
"name": "jijin_tbtxz",
|
||||
"undefined": "特别通行证",
|
||||
"and": {
|
||||
"mapId": 20
|
||||
"lv": 7
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_64",
|
||||
"display": {
|
||||
"mapId": 20
|
||||
"lv": 7
|
||||
}
|
||||
},
|
||||
"jijin_tszl": {
|
||||
@ -980,13 +980,13 @@
|
||||
"name": "yuedujijin",
|
||||
"undefined": "月度基金",
|
||||
"and": {
|
||||
"lv": 15
|
||||
"lv": 7
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_71",
|
||||
"display": {
|
||||
"lv": 15
|
||||
"lv": 7
|
||||
}
|
||||
},
|
||||
"zhanling": {
|
||||
@ -1006,130 +1006,130 @@
|
||||
"name": "dengludali",
|
||||
"undefined": "登录大礼(7日)",
|
||||
"and": {
|
||||
"lv": 13
|
||||
"lv": 10
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_73",
|
||||
"display": {
|
||||
"lv": 13
|
||||
"lv": 10
|
||||
}
|
||||
},
|
||||
"yibaichou": {
|
||||
"name": "yibaichou",
|
||||
"undefined": "百抽活动",
|
||||
"and": {
|
||||
"lv": 7
|
||||
"lv": 10
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_74",
|
||||
"display": {
|
||||
"lv": 7
|
||||
"lv": 10
|
||||
}
|
||||
},
|
||||
"xinfupeiyang": {
|
||||
"name": "xinfupeiyang",
|
||||
"undefined": "心腹培养",
|
||||
"and": {
|
||||
"mapId": 20
|
||||
"lv": 10
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_75",
|
||||
"display": {
|
||||
"mapId": 20
|
||||
"lv": 10
|
||||
}
|
||||
},
|
||||
"huobanzhaomu": {
|
||||
"name": "huobanzhaomu",
|
||||
"undefined": "伙伴招募",
|
||||
"and": {
|
||||
"mapId": 50
|
||||
"lv": 10
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_76",
|
||||
"display": {
|
||||
"mapId": 50
|
||||
"lv": 10
|
||||
}
|
||||
},
|
||||
"xinshoulibao": {
|
||||
"name": "xinshoulibao",
|
||||
"undefined": "冲刺礼包",
|
||||
"and": {
|
||||
"lv": 21
|
||||
"lv": 7
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_77",
|
||||
"display": {
|
||||
"lv": 21
|
||||
"lv": 7
|
||||
}
|
||||
},
|
||||
"leijichongzhi": {
|
||||
"name": "leijichongzhi",
|
||||
"undefined": "累计充值",
|
||||
"and": {
|
||||
"mapId": 20
|
||||
"lv": 10
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_78",
|
||||
"tips": "openCond_tips_96",
|
||||
"display": {
|
||||
"mapId": 20
|
||||
"lv": 10
|
||||
}
|
||||
},
|
||||
"diaoluoduihuan": {
|
||||
"name": "diaoluoduihuan",
|
||||
"undefined": "掉落兑换",
|
||||
"and": {
|
||||
"openTime": 8
|
||||
"lv": 10
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_79",
|
||||
"display": {
|
||||
"openTime": 8
|
||||
"lv": 10
|
||||
}
|
||||
},
|
||||
"rencaijihua": {
|
||||
"name": "rencaijihua",
|
||||
"undefined": "人才计划",
|
||||
"and": {
|
||||
"lv": 13
|
||||
"lv": 10
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_80",
|
||||
"tips": "openCond_tips_96",
|
||||
"display": {
|
||||
"lv": 13
|
||||
"lv": 10
|
||||
}
|
||||
},
|
||||
"zc_img6": {
|
||||
"name": "zc_img6",
|
||||
"undefined": "每日签到",
|
||||
"and": {
|
||||
"lv": 13
|
||||
"lv": 7
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_81",
|
||||
"display": {
|
||||
"lv": 13
|
||||
"lv": 7
|
||||
}
|
||||
},
|
||||
"dianfengrongyao": {
|
||||
"name": "dianfengrongyao",
|
||||
"undefined": "巅峰荣耀",
|
||||
"and": {
|
||||
"lv": 20
|
||||
"lv": 10
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_82",
|
||||
"display": {
|
||||
"lv": 20
|
||||
"lv": 10
|
||||
}
|
||||
},
|
||||
"tuisonglibao": {
|
||||
@ -1149,130 +1149,130 @@
|
||||
"name": "hs_btn_tqlb",
|
||||
"undefined": "特权礼包",
|
||||
"and": {
|
||||
"lv": 15
|
||||
"lv": 7
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_84",
|
||||
"display": {
|
||||
"lv": 15
|
||||
"lv": 7
|
||||
}
|
||||
},
|
||||
"hs_btn_ndj": {
|
||||
"name": "hs_btn_ndj",
|
||||
"undefined": "扭蛋机",
|
||||
"and": {
|
||||
"lv": 15
|
||||
"lv": 7
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_85",
|
||||
"display": {
|
||||
"lv": 15
|
||||
"lv": 7
|
||||
}
|
||||
},
|
||||
"hs_btn_yk": {
|
||||
"name": "hs_btn_yk",
|
||||
"undefined": "月卡",
|
||||
"and": {
|
||||
"lv": 15
|
||||
"lv": 7
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_86",
|
||||
"display": {
|
||||
"lv": 15
|
||||
"lv": 7
|
||||
}
|
||||
},
|
||||
"hs_btn_zsk": {
|
||||
"name": "hs_btn_zsk",
|
||||
"undefined": "终身卡",
|
||||
"and": {
|
||||
"lv": 15
|
||||
"lv": 7
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_87",
|
||||
"display": {
|
||||
"lv": 15
|
||||
"lv": 7
|
||||
}
|
||||
},
|
||||
"hs_btn_mrjx": {
|
||||
"name": "hs_btn_mrjx",
|
||||
"undefined": "每日精选",
|
||||
"and": {
|
||||
"lv": 15
|
||||
"lv": 7
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_88",
|
||||
"display": {
|
||||
"lv": 15
|
||||
"lv": 7
|
||||
}
|
||||
},
|
||||
"hs_btn_jthl": {
|
||||
"name": "hs_btn_jthl",
|
||||
"undefined": "积天豪礼",
|
||||
"and": {
|
||||
"lv": 15
|
||||
"lv": 7
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_89",
|
||||
"display": {
|
||||
"lv": 15
|
||||
"lv": 7
|
||||
}
|
||||
},
|
||||
"hs_btn_zlb": {
|
||||
"name": "hs_btn_zlb",
|
||||
"undefined": "周礼包",
|
||||
"and": {
|
||||
"lv": 15
|
||||
"lv": 7
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_90",
|
||||
"display": {
|
||||
"lv": 15
|
||||
"lv": 7
|
||||
}
|
||||
},
|
||||
"shangcheng": {
|
||||
"name": "shangcheng",
|
||||
"undefined": "商城",
|
||||
"and": {
|
||||
"mapId": 20
|
||||
"lv": 7
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_64",
|
||||
"display": {
|
||||
"mapId": 20
|
||||
"lv": 7
|
||||
}
|
||||
},
|
||||
"fuli": {
|
||||
"name": "fuli",
|
||||
"undefined": "福利",
|
||||
"and": {
|
||||
"lv": 13
|
||||
"lv": 7
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_92",
|
||||
"display": {
|
||||
"lv": 13
|
||||
"lv": 7
|
||||
}
|
||||
},
|
||||
"xianshihuodong": {
|
||||
"name": "xianshihuodong",
|
||||
"undefined": "限时活动",
|
||||
"and": {
|
||||
"lv": 15
|
||||
"lv": 10
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_93",
|
||||
"display": {
|
||||
"lv": 15
|
||||
"lv": 10
|
||||
}
|
||||
},
|
||||
"hb_btn_yjtz": {
|
||||
@ -1285,111 +1285,124 @@
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_94",
|
||||
"display": {
|
||||
"lv": 7
|
||||
"lv": 30
|
||||
}
|
||||
},
|
||||
"kaifujingsai": {
|
||||
"name": "kaifujingsai",
|
||||
"undefined": "开服竞赛",
|
||||
"and": {
|
||||
"lv": 20
|
||||
"lv": 10
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_95",
|
||||
"tips": "openCond_tips_96",
|
||||
"display": {
|
||||
"lv": 20
|
||||
"lv": 10
|
||||
}
|
||||
},
|
||||
"zhoumolibao": {
|
||||
"name": "zhoumolibao",
|
||||
"undefined": "周末礼包",
|
||||
"and": {
|
||||
"lv": 15
|
||||
"lv": 10
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_96",
|
||||
"display": {
|
||||
"lv": 15
|
||||
"lv": 10
|
||||
}
|
||||
},
|
||||
"shengdanhuodong": {
|
||||
"name": "shengdanhuodong",
|
||||
"undefined": "圣诞活动",
|
||||
"and": {
|
||||
"lv": 15
|
||||
"lv": 10
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_96",
|
||||
"display": {
|
||||
"lv": 15
|
||||
"lv": 10
|
||||
}
|
||||
},
|
||||
"yuandanhuodong": {
|
||||
"name": "yuandanhuodong",
|
||||
"undefined": "元旦活动",
|
||||
"and": {
|
||||
"lv": 15
|
||||
"lv": 10
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_96",
|
||||
"display": {
|
||||
"lv": 15
|
||||
"lv": 10
|
||||
}
|
||||
},
|
||||
"czlibao": {
|
||||
"name": "czlibao",
|
||||
"undefined": "超值礼包破冰",
|
||||
"and": {
|
||||
"lv": 15
|
||||
"lv": 10
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_96",
|
||||
"display": {
|
||||
"lv": 15
|
||||
"lv": 10
|
||||
}
|
||||
},
|
||||
"xiaofeijingsai": {
|
||||
"name": "xiaofeijingsai",
|
||||
"undefined": "钻石消费竞赛",
|
||||
"and": {
|
||||
"lv": 15
|
||||
"lv": 10
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_96",
|
||||
"display": {
|
||||
"lv": 15
|
||||
"lv": 10
|
||||
}
|
||||
},
|
||||
"leigoulibao": {
|
||||
"name": "leigoulibao",
|
||||
"undefined": "累购礼包",
|
||||
"and": {
|
||||
"lv": 15
|
||||
"lv": 10
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_96",
|
||||
"display": {
|
||||
"lv": 15
|
||||
"lv": 10
|
||||
}
|
||||
},
|
||||
"weiwang": {
|
||||
"name": "weiwang",
|
||||
"undefined": "威望",
|
||||
"and": {
|
||||
"lv": 15
|
||||
"lv": 12
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_96",
|
||||
"display": {
|
||||
"lv": 15
|
||||
"lv": 12
|
||||
}
|
||||
},
|
||||
"huangqijiuiguan": {
|
||||
"name": "huangqijiuiguan",
|
||||
"undefined": "黄旗酒馆",
|
||||
"and": {
|
||||
"lv": 10
|
||||
},
|
||||
"or": {},
|
||||
"time": 0,
|
||||
"tips": "openCond_tips_96",
|
||||
"display": {
|
||||
"lv": 10
|
||||
}
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -3470,7 +3470,7 @@
|
||||
"conversion": [],
|
||||
"buff": [
|
||||
"baoshangpro",
|
||||
3
|
||||
0.03
|
||||
],
|
||||
"suit": 8,
|
||||
"rmPrize": [
|
||||
|
@ -69,7 +69,7 @@
|
||||
1001
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_1001",
|
||||
"sort": 42,
|
||||
"sort": 43,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -84,7 +84,7 @@
|
||||
1002
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_1002",
|
||||
"sort": 43,
|
||||
"sort": 44,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -99,7 +99,7 @@
|
||||
2001
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_2001",
|
||||
"sort": 40,
|
||||
"sort": 41,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -114,7 +114,7 @@
|
||||
2002
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_2002",
|
||||
"sort": 41,
|
||||
"sort": 42,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -129,7 +129,7 @@
|
||||
3001
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_3001",
|
||||
"sort": 25,
|
||||
"sort": 26,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -144,7 +144,7 @@
|
||||
3002
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_3002",
|
||||
"sort": 26,
|
||||
"sort": 27,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -159,7 +159,7 @@
|
||||
3003
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_3003",
|
||||
"sort": 27,
|
||||
"sort": 28,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -174,7 +174,7 @@
|
||||
3004
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_3004",
|
||||
"sort": 28,
|
||||
"sort": 29,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -189,7 +189,7 @@
|
||||
3005
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_3005",
|
||||
"sort": 29,
|
||||
"sort": 30,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -204,7 +204,7 @@
|
||||
3006
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_3006",
|
||||
"sort": 30,
|
||||
"sort": 31,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -219,7 +219,7 @@
|
||||
3007
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_3007",
|
||||
"sort": 31,
|
||||
"sort": 32,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -234,7 +234,7 @@
|
||||
3008
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_3008",
|
||||
"sort": 32,
|
||||
"sort": 33,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -249,7 +249,7 @@
|
||||
3009
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_3009",
|
||||
"sort": 33,
|
||||
"sort": 34,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -264,7 +264,7 @@
|
||||
3010
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_3010",
|
||||
"sort": 34,
|
||||
"sort": 35,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -279,7 +279,7 @@
|
||||
3011
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_3011",
|
||||
"sort": 35,
|
||||
"sort": 36,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -294,7 +294,7 @@
|
||||
3012
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_3012",
|
||||
"sort": 36,
|
||||
"sort": 37,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -309,7 +309,7 @@
|
||||
3013
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_3013",
|
||||
"sort": 37,
|
||||
"sort": 38,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -324,7 +324,7 @@
|
||||
3014
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_3014",
|
||||
"sort": 38,
|
||||
"sort": 39,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -339,7 +339,7 @@
|
||||
3015
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_3015",
|
||||
"sort": 39,
|
||||
"sort": 40,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -354,7 +354,7 @@
|
||||
4001
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_4001",
|
||||
"sort": 10,
|
||||
"sort": 11,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -369,7 +369,7 @@
|
||||
4002
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_4002",
|
||||
"sort": 11,
|
||||
"sort": 12,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -384,7 +384,7 @@
|
||||
4003
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_4003",
|
||||
"sort": 12,
|
||||
"sort": 13,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -399,7 +399,7 @@
|
||||
4004
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_4004",
|
||||
"sort": 13,
|
||||
"sort": 14,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -414,7 +414,7 @@
|
||||
4005
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_4005",
|
||||
"sort": 14,
|
||||
"sort": 15,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -429,7 +429,7 @@
|
||||
4006
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_4006",
|
||||
"sort": 15,
|
||||
"sort": 16,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -444,7 +444,7 @@
|
||||
4007
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_4007",
|
||||
"sort": 16,
|
||||
"sort": 17,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -459,7 +459,7 @@
|
||||
4008
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_4008",
|
||||
"sort": 17,
|
||||
"sort": 18,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -474,7 +474,7 @@
|
||||
4009
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_4009",
|
||||
"sort": 18,
|
||||
"sort": 19,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -489,7 +489,7 @@
|
||||
4010
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_4010",
|
||||
"sort": 19,
|
||||
"sort": 20,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -504,7 +504,7 @@
|
||||
4011
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_4011",
|
||||
"sort": 20,
|
||||
"sort": 21,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -519,7 +519,7 @@
|
||||
4012
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_4012",
|
||||
"sort": 21,
|
||||
"sort": 22,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -527,14 +527,14 @@
|
||||
"4013": {
|
||||
"id": 4013,
|
||||
"name": "intr_playerinfo_name_4013",
|
||||
"undefined": "获得干部格里达尔后解锁",
|
||||
"undefined": "获得干部葛丽特后解锁",
|
||||
"img": 4013,
|
||||
"cond": [
|
||||
"hero",
|
||||
4013
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_4013",
|
||||
"sort": 22,
|
||||
"sort": 23,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -549,7 +549,7 @@
|
||||
4014
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_4014",
|
||||
"sort": 23,
|
||||
"sort": 24,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -564,7 +564,7 @@
|
||||
4015
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_4015",
|
||||
"sort": 24,
|
||||
"sort": 25,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -579,7 +579,7 @@
|
||||
5001
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_5001",
|
||||
"sort": 5,
|
||||
"sort": 6,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -594,7 +594,7 @@
|
||||
5002
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_5002",
|
||||
"sort": 6,
|
||||
"sort": 7,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -609,7 +609,7 @@
|
||||
5003
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_5003",
|
||||
"sort": 7,
|
||||
"sort": 8,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -624,7 +624,7 @@
|
||||
5004
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_5004",
|
||||
"sort": 8,
|
||||
"sort": 9,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
@ -639,7 +639,22 @@
|
||||
5005
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_5005",
|
||||
"sort": 9,
|
||||
"sort": 10,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
},
|
||||
"50011": {
|
||||
"id": 50011,
|
||||
"name": "intr_playerinfo_name_50011",
|
||||
"undefined": "获得干部莱薇外观【兔女郎】后解锁",
|
||||
"img": 50011,
|
||||
"cond": [
|
||||
"heroskin",
|
||||
50011
|
||||
],
|
||||
"intr": "intr_playerinfo_intr_50011",
|
||||
"sort": 5,
|
||||
"buff": {},
|
||||
"colour": 1,
|
||||
"ani": ""
|
||||
|
@ -139,7 +139,7 @@
|
||||
"id": 9,
|
||||
"name": "playerheadFrame_name_9",
|
||||
"undefined": "名望等级达到五阶获得,解锁后防御加成+1%",
|
||||
"img": "txk_005",
|
||||
"img": "txk_012",
|
||||
"cond": [
|
||||
"renown",
|
||||
41
|
||||
@ -311,7 +311,7 @@
|
||||
"id": 19,
|
||||
"name": "playerheadFrame_name_19",
|
||||
"undefined": "开服冲榜活动获得,解锁后攻击加成+1%",
|
||||
"img": "txk_004",
|
||||
"img": "txk_006",
|
||||
"cond": [
|
||||
"time",
|
||||
-1
|
||||
@ -395,8 +395,8 @@
|
||||
"24": {
|
||||
"id": 24,
|
||||
"name": "playerheadFrame_name_24",
|
||||
"undefined": "消费竞赛活动前三名获得,解锁后伤害加成+1%(限时7天)",
|
||||
"img": "txk_025",
|
||||
"undefined": "消费竞赛活动获得,解锁后伤害加成+1%(限时7天)",
|
||||
"img": "txk_015",
|
||||
"cond": [
|
||||
"time",
|
||||
604800
|
||||
@ -425,5 +425,22 @@
|
||||
},
|
||||
"colour": 4,
|
||||
"ani": ""
|
||||
},
|
||||
"26": {
|
||||
"id": 26,
|
||||
"name": "playerheadFrame_name_26",
|
||||
"undefined": "黄旗酒馆活动获得,解锁后生命加成+1%",
|
||||
"img": "txk_007",
|
||||
"cond": [
|
||||
"time",
|
||||
-1
|
||||
],
|
||||
"intr": "playerheadFrame_des_26",
|
||||
"sort": 26,
|
||||
"buff": {
|
||||
"hppro": 0.01
|
||||
},
|
||||
"colour": 5,
|
||||
"ani": ""
|
||||
}
|
||||
}
|
@ -122,7 +122,7 @@
|
||||
"9": {
|
||||
"id": 9,
|
||||
"renownlevel": 9,
|
||||
"maxlevel": 11500,
|
||||
"maxlevel": 11250,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
@ -137,7 +137,7 @@
|
||||
"10": {
|
||||
"id": 10,
|
||||
"renownlevel": 10,
|
||||
"maxlevel": 14500,
|
||||
"maxlevel": 13750,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
@ -152,7 +152,7 @@
|
||||
"11": {
|
||||
"id": 11,
|
||||
"renownlevel": 11,
|
||||
"maxlevel": 18000,
|
||||
"maxlevel": 16500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
@ -167,7 +167,7 @@
|
||||
"12": {
|
||||
"id": 12,
|
||||
"renownlevel": 12,
|
||||
"maxlevel": 22000,
|
||||
"maxlevel": 19500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
@ -182,7 +182,7 @@
|
||||
"13": {
|
||||
"id": 13,
|
||||
"renownlevel": 13,
|
||||
"maxlevel": 26500,
|
||||
"maxlevel": 22750,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
@ -197,7 +197,7 @@
|
||||
"14": {
|
||||
"id": 14,
|
||||
"renownlevel": 14,
|
||||
"maxlevel": 31500,
|
||||
"maxlevel": 26250,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
@ -212,7 +212,7 @@
|
||||
"15": {
|
||||
"id": 15,
|
||||
"renownlevel": 15,
|
||||
"maxlevel": 36500,
|
||||
"maxlevel": 30000,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
@ -227,7 +227,7 @@
|
||||
"16": {
|
||||
"id": 16,
|
||||
"renownlevel": 16,
|
||||
"maxlevel": 41500,
|
||||
"maxlevel": 34000,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
@ -242,7 +242,7 @@
|
||||
"17": {
|
||||
"id": 17,
|
||||
"renownlevel": 17,
|
||||
"maxlevel": 46500,
|
||||
"maxlevel": 38250,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
@ -257,7 +257,7 @@
|
||||
"18": {
|
||||
"id": 18,
|
||||
"renownlevel": 18,
|
||||
"maxlevel": 51500,
|
||||
"maxlevel": 42750,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
@ -272,7 +272,7 @@
|
||||
"19": {
|
||||
"id": 19,
|
||||
"renownlevel": 19,
|
||||
"maxlevel": 56500,
|
||||
"maxlevel": 47500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
@ -287,7 +287,7 @@
|
||||
"20": {
|
||||
"id": 20,
|
||||
"renownlevel": 20,
|
||||
"maxlevel": 61500,
|
||||
"maxlevel": 52500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
@ -302,7 +302,7 @@
|
||||
"21": {
|
||||
"id": 21,
|
||||
"renownlevel": 21,
|
||||
"maxlevel": 66500,
|
||||
"maxlevel": 57500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
@ -317,7 +317,7 @@
|
||||
"22": {
|
||||
"id": 22,
|
||||
"renownlevel": 22,
|
||||
"maxlevel": 71500,
|
||||
"maxlevel": 62500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
@ -332,37 +332,7 @@
|
||||
"23": {
|
||||
"id": 23,
|
||||
"renownlevel": 23,
|
||||
"maxlevel": 76500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "weiwang",
|
||||
"n": 27
|
||||
}
|
||||
],
|
||||
"atk": 1.4,
|
||||
"def": 1.2,
|
||||
"hp": 7
|
||||
},
|
||||
"24": {
|
||||
"id": 24,
|
||||
"renownlevel": 24,
|
||||
"maxlevel": 81500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "weiwang",
|
||||
"n": 29
|
||||
}
|
||||
],
|
||||
"atk": 1.4,
|
||||
"def": 1.2,
|
||||
"hp": 7
|
||||
},
|
||||
"25": {
|
||||
"id": 25,
|
||||
"renownlevel": 25,
|
||||
"maxlevel": 86500,
|
||||
"maxlevel": 67500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
@ -374,70 +344,25 @@
|
||||
"def": 1.2,
|
||||
"hp": 7
|
||||
},
|
||||
"26": {
|
||||
"id": 26,
|
||||
"renownlevel": 26,
|
||||
"maxlevel": 91500,
|
||||
"24": {
|
||||
"id": 24,
|
||||
"renownlevel": 24,
|
||||
"maxlevel": 72500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "weiwang",
|
||||
"n": 32
|
||||
"n": 35
|
||||
}
|
||||
],
|
||||
"atk": 1.4,
|
||||
"def": 1.2,
|
||||
"hp": 8
|
||||
"hp": 7
|
||||
},
|
||||
"27": {
|
||||
"id": 27,
|
||||
"renownlevel": 27,
|
||||
"maxlevel": 96500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "weiwang",
|
||||
"n": 34
|
||||
}
|
||||
],
|
||||
"atk": 1.4,
|
||||
"def": 1.2,
|
||||
"hp": 8
|
||||
},
|
||||
"28": {
|
||||
"id": 28,
|
||||
"renownlevel": 28,
|
||||
"maxlevel": 101500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "weiwang",
|
||||
"n": 36
|
||||
}
|
||||
],
|
||||
"atk": 1.4,
|
||||
"def": 1.2,
|
||||
"hp": 8
|
||||
},
|
||||
"29": {
|
||||
"id": 29,
|
||||
"renownlevel": 29,
|
||||
"maxlevel": 106500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "weiwang",
|
||||
"n": 38
|
||||
}
|
||||
],
|
||||
"atk": 1.4,
|
||||
"def": 1.2,
|
||||
"hp": 8
|
||||
},
|
||||
"30": {
|
||||
"id": 30,
|
||||
"renownlevel": 30,
|
||||
"maxlevel": 111500,
|
||||
"25": {
|
||||
"id": 25,
|
||||
"renownlevel": 25,
|
||||
"maxlevel": 77500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
@ -447,72 +372,27 @@
|
||||
],
|
||||
"atk": 1.4,
|
||||
"def": 1.2,
|
||||
"hp": 8
|
||||
"hp": 7
|
||||
},
|
||||
"31": {
|
||||
"id": 31,
|
||||
"renownlevel": 31,
|
||||
"maxlevel": 116500,
|
||||
"26": {
|
||||
"id": 26,
|
||||
"renownlevel": 26,
|
||||
"maxlevel": 82500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "weiwang",
|
||||
"n": 42
|
||||
"n": 45
|
||||
}
|
||||
],
|
||||
"atk": 1.4,
|
||||
"def": 1.2,
|
||||
"hp": 8
|
||||
},
|
||||
"32": {
|
||||
"id": 32,
|
||||
"renownlevel": 32,
|
||||
"maxlevel": 121500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "weiwang",
|
||||
"n": 44
|
||||
}
|
||||
],
|
||||
"atk": 1.4,
|
||||
"def": 1.2,
|
||||
"hp": 8
|
||||
},
|
||||
"33": {
|
||||
"id": 33,
|
||||
"renownlevel": 33,
|
||||
"maxlevel": 126500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "weiwang",
|
||||
"n": 46
|
||||
}
|
||||
],
|
||||
"atk": 1.4,
|
||||
"def": 1.2,
|
||||
"hp": 8
|
||||
},
|
||||
"34": {
|
||||
"id": 34,
|
||||
"renownlevel": 34,
|
||||
"maxlevel": 131500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "weiwang",
|
||||
"n": 48
|
||||
}
|
||||
],
|
||||
"atk": 1.4,
|
||||
"def": 1.2,
|
||||
"hp": 8
|
||||
},
|
||||
"35": {
|
||||
"id": 35,
|
||||
"renownlevel": 35,
|
||||
"maxlevel": 136500,
|
||||
"27": {
|
||||
"id": 27,
|
||||
"renownlevel": 27,
|
||||
"maxlevel": 87500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
@ -524,70 +404,10 @@
|
||||
"def": 1.2,
|
||||
"hp": 8
|
||||
},
|
||||
"36": {
|
||||
"id": 36,
|
||||
"renownlevel": 36,
|
||||
"maxlevel": 141500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "weiwang",
|
||||
"n": 52
|
||||
}
|
||||
],
|
||||
"atk": 1.4,
|
||||
"def": 1.2,
|
||||
"hp": 8
|
||||
},
|
||||
"37": {
|
||||
"id": 37,
|
||||
"renownlevel": 37,
|
||||
"maxlevel": 146500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "weiwang",
|
||||
"n": 54
|
||||
}
|
||||
],
|
||||
"atk": 1.4,
|
||||
"def": 1.2,
|
||||
"hp": 8
|
||||
},
|
||||
"38": {
|
||||
"id": 38,
|
||||
"renownlevel": 38,
|
||||
"maxlevel": 151500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "weiwang",
|
||||
"n": 56
|
||||
}
|
||||
],
|
||||
"atk": 1.4,
|
||||
"def": 1.2,
|
||||
"hp": 8
|
||||
},
|
||||
"39": {
|
||||
"id": 39,
|
||||
"renownlevel": 39,
|
||||
"maxlevel": 156500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "weiwang",
|
||||
"n": 58
|
||||
}
|
||||
],
|
||||
"atk": 1.4,
|
||||
"def": 1.2,
|
||||
"hp": 8
|
||||
},
|
||||
"40": {
|
||||
"id": 40,
|
||||
"renownlevel": 40,
|
||||
"maxlevel": 161500,
|
||||
"28": {
|
||||
"id": 28,
|
||||
"renownlevel": 28,
|
||||
"maxlevel": 92500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
@ -598,5 +418,185 @@
|
||||
"atk": 1.4,
|
||||
"def": 1.2,
|
||||
"hp": 8
|
||||
},
|
||||
"29": {
|
||||
"id": 29,
|
||||
"renownlevel": 29,
|
||||
"maxlevel": 97500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "weiwang",
|
||||
"n": 80
|
||||
}
|
||||
],
|
||||
"atk": 1.4,
|
||||
"def": 1.2,
|
||||
"hp": 8
|
||||
},
|
||||
"30": {
|
||||
"id": 30,
|
||||
"renownlevel": 30,
|
||||
"maxlevel": 102500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "weiwang",
|
||||
"n": 100
|
||||
}
|
||||
],
|
||||
"atk": 1.4,
|
||||
"def": 1.2,
|
||||
"hp": 8
|
||||
},
|
||||
"31": {
|
||||
"id": 31,
|
||||
"renownlevel": 31,
|
||||
"maxlevel": 107500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "weiwang",
|
||||
"n": 120
|
||||
}
|
||||
],
|
||||
"atk": 1.4,
|
||||
"def": 1.2,
|
||||
"hp": 8
|
||||
},
|
||||
"32": {
|
||||
"id": 32,
|
||||
"renownlevel": 32,
|
||||
"maxlevel": 112500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "weiwang",
|
||||
"n": 140
|
||||
}
|
||||
],
|
||||
"atk": 1.4,
|
||||
"def": 1.2,
|
||||
"hp": 8
|
||||
},
|
||||
"33": {
|
||||
"id": 33,
|
||||
"renownlevel": 33,
|
||||
"maxlevel": 117500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "weiwang",
|
||||
"n": 180
|
||||
}
|
||||
],
|
||||
"atk": 1.4,
|
||||
"def": 1.2,
|
||||
"hp": 8
|
||||
},
|
||||
"34": {
|
||||
"id": 34,
|
||||
"renownlevel": 34,
|
||||
"maxlevel": 122500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "weiwang",
|
||||
"n": 220
|
||||
}
|
||||
],
|
||||
"atk": 1.4,
|
||||
"def": 1.2,
|
||||
"hp": 8
|
||||
},
|
||||
"35": {
|
||||
"id": 35,
|
||||
"renownlevel": 35,
|
||||
"maxlevel": 127500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "weiwang",
|
||||
"n": 260
|
||||
}
|
||||
],
|
||||
"atk": 1.4,
|
||||
"def": 1.2,
|
||||
"hp": 8
|
||||
},
|
||||
"36": {
|
||||
"id": 36,
|
||||
"renownlevel": 36,
|
||||
"maxlevel": 132500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "weiwang",
|
||||
"n": 300
|
||||
}
|
||||
],
|
||||
"atk": 1.4,
|
||||
"def": 1.2,
|
||||
"hp": 8
|
||||
},
|
||||
"37": {
|
||||
"id": 37,
|
||||
"renownlevel": 37,
|
||||
"maxlevel": 137500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "weiwang",
|
||||
"n": 350
|
||||
}
|
||||
],
|
||||
"atk": 1.4,
|
||||
"def": 1.2,
|
||||
"hp": 8
|
||||
},
|
||||
"38": {
|
||||
"id": 38,
|
||||
"renownlevel": 38,
|
||||
"maxlevel": 142500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "weiwang",
|
||||
"n": 400
|
||||
}
|
||||
],
|
||||
"atk": 1.4,
|
||||
"def": 1.2,
|
||||
"hp": 8
|
||||
},
|
||||
"39": {
|
||||
"id": 39,
|
||||
"renownlevel": 39,
|
||||
"maxlevel": 147500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "weiwang",
|
||||
"n": 450
|
||||
}
|
||||
],
|
||||
"atk": 1.4,
|
||||
"def": 1.2,
|
||||
"hp": 8
|
||||
},
|
||||
"40": {
|
||||
"id": 40,
|
||||
"renownlevel": 40,
|
||||
"maxlevel": 152500,
|
||||
"cost": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "weiwang",
|
||||
"n": 500
|
||||
}
|
||||
],
|
||||
"atk": 1.4,
|
||||
"def": 1.2,
|
||||
"hp": 8
|
||||
}
|
||||
}
|
@ -20,7 +20,7 @@
|
||||
{ need: [{a: 'attr', t: 'rmbmoney', n: 200}], prize: [{a: 'item', t: '15', n: 300}], maxNum: 3, addExp: 100, vipAddNum: [1,1,1,1,1,1,1,1,3,3,3,5,5,7,9,13,15,21] },
|
||||
],
|
||||
//弹劾时间
|
||||
tanheTime: 86400,
|
||||
tanheTime: 259200,
|
||||
//公会任务
|
||||
ghTask: [
|
||||
{ total: 30, prize: [{a: 'item', t: '19', n: 1},{a: 'item', t: '9', n: 10},{a: 'attr', t: 'jinbi', n: 50000}]},
|
||||
|
@ -100,7 +100,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"addhp": [
|
||||
"addmaxhp": [
|
||||
0.004,
|
||||
0.008
|
||||
]
|
||||
@ -162,7 +162,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"addhp": [
|
||||
"addmaxhp": [
|
||||
0.006,
|
||||
0.01
|
||||
]
|
||||
@ -224,7 +224,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"addhp": [
|
||||
"addmaxhp": [
|
||||
0.09,
|
||||
0.013
|
||||
]
|
||||
@ -286,7 +286,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"addhp": [
|
||||
"addmaxhp": [
|
||||
0.011,
|
||||
0.016
|
||||
]
|
||||
@ -348,7 +348,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"addhp": [
|
||||
"addmaxhp": [
|
||||
0.012,
|
||||
0.02
|
||||
]
|
||||
@ -360,27 +360,27 @@
|
||||
{
|
||||
"range": [
|
||||
0,
|
||||
0.33
|
||||
0.333
|
||||
],
|
||||
"color": 2
|
||||
},
|
||||
{
|
||||
"range": [
|
||||
0.33,
|
||||
0.66
|
||||
0.334,
|
||||
0.666
|
||||
],
|
||||
"color": 3
|
||||
},
|
||||
{
|
||||
"range": [
|
||||
0.66,
|
||||
0.99
|
||||
0.667,
|
||||
0.999
|
||||
],
|
||||
"color": 4
|
||||
},
|
||||
{
|
||||
"range": [
|
||||
0.99,
|
||||
0.999,
|
||||
1
|
||||
],
|
||||
"color": 5
|
||||
|
@ -1705,13 +1705,13 @@
|
||||
"sxleixing": "attr",
|
||||
"buff_type": 1,
|
||||
"xiaoguocanshu": {
|
||||
"dpspro": 2
|
||||
"dpspro": 1
|
||||
},
|
||||
"round": 2,
|
||||
"round": 3,
|
||||
"group": "tx01300",
|
||||
"jiejiaxiaoguo": "retime",
|
||||
"diejiacengshu": 1,
|
||||
"describe": "进入战斗后的前2回合进入致命状态,攻击敌人时有0.01的几率造成双倍伤害"
|
||||
"describe": "进入战斗后的前2回合进入致命状态,攻击敌人时有1%的几率造成双倍伤害"
|
||||
},
|
||||
"tx01301": {
|
||||
"skillid": "tx01301",
|
||||
@ -1724,13 +1724,13 @@
|
||||
"sxleixing": "attr",
|
||||
"buff_type": 1,
|
||||
"xiaoguocanshu": {
|
||||
"dpspro": 2
|
||||
"dpspro": 1
|
||||
},
|
||||
"round": 2,
|
||||
"round": 3,
|
||||
"group": "tx01300",
|
||||
"jiejiaxiaoguo": "retime",
|
||||
"diejiacengshu": 1,
|
||||
"describe": "进入战斗后的前2回合进入致命状态,攻击敌人时有0.02的几率造成双倍伤害"
|
||||
"describe": "进入战斗后的前2回合进入致命状态,攻击敌人时有2%的几率造成双倍伤害"
|
||||
},
|
||||
"tx01302": {
|
||||
"skillid": "tx01302",
|
||||
@ -1743,13 +1743,13 @@
|
||||
"sxleixing": "attr",
|
||||
"buff_type": 1,
|
||||
"xiaoguocanshu": {
|
||||
"dpspro": 2
|
||||
"dpspro": 1
|
||||
},
|
||||
"round": 2,
|
||||
"round": 3,
|
||||
"group": "tx01300",
|
||||
"jiejiaxiaoguo": "retime",
|
||||
"diejiacengshu": 1,
|
||||
"describe": "进入战斗后的前2回合进入致命状态,攻击敌人时有0.03的几率造成双倍伤害"
|
||||
"describe": "进入战斗后的前2回合进入致命状态,攻击敌人时有3%的几率造成双倍伤害"
|
||||
},
|
||||
"tx01303": {
|
||||
"skillid": "tx01303",
|
||||
@ -1762,13 +1762,13 @@
|
||||
"sxleixing": "attr",
|
||||
"buff_type": 1,
|
||||
"xiaoguocanshu": {
|
||||
"dpspro": 2
|
||||
"dpspro": 1
|
||||
},
|
||||
"round": 2,
|
||||
"round": 3,
|
||||
"group": "tx01300",
|
||||
"jiejiaxiaoguo": "retime",
|
||||
"diejiacengshu": 1,
|
||||
"describe": "进入战斗后的前2回合进入致命状态,攻击敌人时有0.04的几率造成双倍伤害"
|
||||
"describe": "进入战斗后的前2回合进入致命状态,攻击敌人时有4%的几率造成双倍伤害"
|
||||
},
|
||||
"tx01304": {
|
||||
"skillid": "tx01304",
|
||||
@ -1781,13 +1781,13 @@
|
||||
"sxleixing": "attr",
|
||||
"buff_type": 1,
|
||||
"xiaoguocanshu": {
|
||||
"dpspro": 2
|
||||
"dpspro": 1
|
||||
},
|
||||
"round": 2,
|
||||
"round": 3,
|
||||
"group": "tx01300",
|
||||
"jiejiaxiaoguo": "retime",
|
||||
"diejiacengshu": 1,
|
||||
"describe": "进入战斗后的前2回合进入致命状态,攻击敌人时有0.05的几率造成双倍伤害"
|
||||
"describe": "进入战斗后的前2回合进入致命状态,攻击敌人时有5%的几率造成双倍伤害"
|
||||
},
|
||||
"tx01305": {
|
||||
"skillid": "tx01305",
|
||||
@ -1800,13 +1800,13 @@
|
||||
"sxleixing": "attr",
|
||||
"buff_type": 1,
|
||||
"xiaoguocanshu": {
|
||||
"dpspro": 2
|
||||
"dpspro": 1
|
||||
},
|
||||
"round": 2,
|
||||
"round": 3,
|
||||
"group": "tx01300",
|
||||
"jiejiaxiaoguo": "retime",
|
||||
"diejiacengshu": 1,
|
||||
"describe": "进入战斗后的前2回合进入致命状态,攻击敌人时有0.06的几率造成双倍伤害"
|
||||
"describe": "进入战斗后的前2回合进入致命状态,攻击敌人时有6%的几率造成双倍伤害"
|
||||
},
|
||||
"tx01306": {
|
||||
"skillid": "tx01306",
|
||||
@ -1819,13 +1819,13 @@
|
||||
"sxleixing": "attr",
|
||||
"buff_type": 1,
|
||||
"xiaoguocanshu": {
|
||||
"dpspro": 2
|
||||
"dpspro": 1
|
||||
},
|
||||
"round": 2,
|
||||
"round": 3,
|
||||
"group": "tx01300",
|
||||
"jiejiaxiaoguo": "retime",
|
||||
"diejiacengshu": 1,
|
||||
"describe": "进入战斗后的前2回合进入致命状态,攻击敌人时有0.07的几率造成双倍伤害"
|
||||
"describe": "进入战斗后的前2回合进入致命状态,攻击敌人时有7%的几率造成双倍伤害"
|
||||
},
|
||||
"tx01307": {
|
||||
"skillid": "tx01307",
|
||||
@ -1838,13 +1838,13 @@
|
||||
"sxleixing": "attr",
|
||||
"buff_type": 1,
|
||||
"xiaoguocanshu": {
|
||||
"dpspro": 2
|
||||
"dpspro": 1
|
||||
},
|
||||
"round": 2,
|
||||
"round": 3,
|
||||
"group": "tx01300",
|
||||
"jiejiaxiaoguo": "retime",
|
||||
"diejiacengshu": 1,
|
||||
"describe": "进入战斗后的前2回合进入致命状态,攻击敌人时有0.08的几率造成双倍伤害"
|
||||
"describe": "进入战斗后的前2回合进入致命状态,攻击敌人时有8%的几率造成双倍伤害"
|
||||
},
|
||||
"tx01308": {
|
||||
"skillid": "tx01308",
|
||||
@ -1857,13 +1857,13 @@
|
||||
"sxleixing": "attr",
|
||||
"buff_type": 1,
|
||||
"xiaoguocanshu": {
|
||||
"dpspro": 2
|
||||
"dpspro": 1
|
||||
},
|
||||
"round": 2,
|
||||
"round": 3,
|
||||
"group": "tx01300",
|
||||
"jiejiaxiaoguo": "retime",
|
||||
"diejiacengshu": 1,
|
||||
"describe": "进入战斗后的前2回合进入致命状态,攻击敌人时有0.09的几率造成双倍伤害"
|
||||
"describe": "进入战斗后的前2回合进入致命状态,攻击敌人时有9%的几率造成双倍伤害"
|
||||
},
|
||||
"tx01309": {
|
||||
"skillid": "tx01309",
|
||||
@ -1876,13 +1876,13 @@
|
||||
"sxleixing": "attr",
|
||||
"buff_type": 1,
|
||||
"xiaoguocanshu": {
|
||||
"dpspro": 2
|
||||
"dpspro": 1
|
||||
},
|
||||
"round": 2,
|
||||
"round": 3,
|
||||
"group": "tx01300",
|
||||
"jiejiaxiaoguo": "retime",
|
||||
"diejiacengshu": 1,
|
||||
"describe": "进入战斗后的前2回合进入致命状态,攻击敌人时有0.10的几率造成双倍伤害"
|
||||
"describe": "进入战斗后的前2回合进入致命状态,攻击敌人时有10%的几率造成双倍伤害"
|
||||
},
|
||||
"tx02300": {
|
||||
"skillid": "tx02300",
|
||||
|
@ -4,7 +4,7 @@
|
||||
//开放时间
|
||||
openTime: [0, 514800],
|
||||
//结算定时器时间
|
||||
schedulerPrize: 597600,
|
||||
schedulerPrize: 515100,
|
||||
//分组定时器时间
|
||||
schedulerGroup: 0,
|
||||
//据点
|
||||
|
11880
src/json/tanxian.json
11880
src/json/tanxian.json
File diff suppressed because it is too large
Load Diff
@ -1402,5 +1402,135 @@
|
||||
],
|
||||
"chapter": 14,
|
||||
"des": "intr_guanqia_des_1"
|
||||
},
|
||||
"109": {
|
||||
"id": 109,
|
||||
"mapId": 1090,
|
||||
"prize": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "rmbmoney",
|
||||
"n": 100
|
||||
}
|
||||
],
|
||||
"chapter": 14,
|
||||
"des": "intr_guanqia_des_1"
|
||||
},
|
||||
"110": {
|
||||
"id": 110,
|
||||
"mapId": 1100,
|
||||
"prize": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "rmbmoney",
|
||||
"n": 100
|
||||
}
|
||||
],
|
||||
"chapter": 14,
|
||||
"des": "intr_guanqia_des_1"
|
||||
},
|
||||
"111": {
|
||||
"id": 111,
|
||||
"mapId": 1110,
|
||||
"prize": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "rmbmoney",
|
||||
"n": 100
|
||||
}
|
||||
],
|
||||
"chapter": 14,
|
||||
"des": "intr_guanqia_des_1"
|
||||
},
|
||||
"112": {
|
||||
"id": 112,
|
||||
"mapId": 1120,
|
||||
"prize": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "rmbmoney",
|
||||
"n": 100
|
||||
}
|
||||
],
|
||||
"chapter": 14,
|
||||
"des": "intr_guanqia_des_1"
|
||||
},
|
||||
"113": {
|
||||
"id": 113,
|
||||
"mapId": 1130,
|
||||
"prize": [
|
||||
{
|
||||
"a": "item",
|
||||
"t": "4",
|
||||
"n": 5
|
||||
}
|
||||
],
|
||||
"chapter": 14,
|
||||
"des": "intr_guanqia_des_1"
|
||||
},
|
||||
"114": {
|
||||
"id": 114,
|
||||
"mapId": 1140,
|
||||
"prize": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "rmbmoney",
|
||||
"n": 100
|
||||
}
|
||||
],
|
||||
"chapter": 14,
|
||||
"des": "intr_guanqia_des_1"
|
||||
},
|
||||
"115": {
|
||||
"id": 115,
|
||||
"mapId": 1150,
|
||||
"prize": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "rmbmoney",
|
||||
"n": 100
|
||||
}
|
||||
],
|
||||
"chapter": 14,
|
||||
"des": "intr_guanqia_des_1"
|
||||
},
|
||||
"116": {
|
||||
"id": 116,
|
||||
"mapId": 1160,
|
||||
"prize": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "rmbmoney",
|
||||
"n": 100
|
||||
}
|
||||
],
|
||||
"chapter": 14,
|
||||
"des": "intr_guanqia_des_1"
|
||||
},
|
||||
"117": {
|
||||
"id": 117,
|
||||
"mapId": 1170,
|
||||
"prize": [
|
||||
{
|
||||
"a": "attr",
|
||||
"t": "rmbmoney",
|
||||
"n": 100
|
||||
}
|
||||
],
|
||||
"chapter": 14,
|
||||
"des": "intr_guanqia_des_1"
|
||||
},
|
||||
"118": {
|
||||
"id": 118,
|
||||
"mapId": 1180,
|
||||
"prize": [
|
||||
{
|
||||
"a": "item",
|
||||
"t": "4",
|
||||
"n": 5
|
||||
}
|
||||
],
|
||||
"chapter": 14,
|
||||
"des": "intr_guanqia_des_1"
|
||||
}
|
||||
}
|
3102
src/json/task.json
3102
src/json/task.json
File diff suppressed because it is too large
Load Diff
@ -588,5 +588,155 @@
|
||||
"displayCD": 3600,
|
||||
"scale": 3000,
|
||||
"icon": "djlb"
|
||||
},
|
||||
"501": {
|
||||
"id": 501,
|
||||
"type": 6,
|
||||
"typeName": "tuisonglibao_name_6",
|
||||
"num": [
|
||||
250
|
||||
],
|
||||
"payId": [
|
||||
"yxl_libao_1,yxl_libao_2"
|
||||
],
|
||||
"time": 10800,
|
||||
"displayCD": 10800,
|
||||
"scale": 3000,
|
||||
"icon": "gkts"
|
||||
},
|
||||
"502": {
|
||||
"id": 502,
|
||||
"type": 6,
|
||||
"typeName": "tuisonglibao_name_6",
|
||||
"num": [
|
||||
250
|
||||
],
|
||||
"payId": [
|
||||
"yxl_libao_1,yxl_libao_2"
|
||||
],
|
||||
"time": 10800,
|
||||
"displayCD": 10800,
|
||||
"scale": 3000,
|
||||
"icon": "gkts"
|
||||
},
|
||||
"503": {
|
||||
"id": 503,
|
||||
"type": 6,
|
||||
"typeName": "tuisonglibao_name_6",
|
||||
"num": [
|
||||
19500
|
||||
],
|
||||
"payId": [
|
||||
"yxl_libao_1,yxl_libao_2"
|
||||
],
|
||||
"time": 10800,
|
||||
"displayCD": 10800,
|
||||
"scale": 3000,
|
||||
"icon": "gkts"
|
||||
},
|
||||
"504": {
|
||||
"id": 504,
|
||||
"type": 6,
|
||||
"typeName": "tuisonglibao_name_6",
|
||||
"num": [
|
||||
19500
|
||||
],
|
||||
"payId": [
|
||||
"yxl_libao_1,yxl_libao_2"
|
||||
],
|
||||
"time": 10800,
|
||||
"displayCD": 10800,
|
||||
"scale": 3000,
|
||||
"icon": "gkts"
|
||||
},
|
||||
"505": {
|
||||
"id": 505,
|
||||
"type": 6,
|
||||
"typeName": "tuisonglibao_name_6",
|
||||
"num": [
|
||||
30000
|
||||
],
|
||||
"payId": [
|
||||
"yxl_libao_1,yxl_libao_2"
|
||||
],
|
||||
"time": 10800,
|
||||
"displayCD": 10800,
|
||||
"scale": 3000,
|
||||
"icon": "gkts"
|
||||
},
|
||||
"506": {
|
||||
"id": 506,
|
||||
"type": 6,
|
||||
"typeName": "tuisonglibao_name_6",
|
||||
"num": [
|
||||
30000
|
||||
],
|
||||
"payId": [
|
||||
"yxl_libao_1,yxl_libao_2"
|
||||
],
|
||||
"time": 10800,
|
||||
"displayCD": 10800,
|
||||
"scale": 3000,
|
||||
"icon": "gkts"
|
||||
},
|
||||
"507": {
|
||||
"id": 507,
|
||||
"type": 6,
|
||||
"typeName": "tuisonglibao_name_6",
|
||||
"num": [
|
||||
42750
|
||||
],
|
||||
"payId": [
|
||||
"yxl_libao_2,yxl_libao_3"
|
||||
],
|
||||
"time": 10800,
|
||||
"displayCD": 10800,
|
||||
"scale": 3000,
|
||||
"icon": "gkts"
|
||||
},
|
||||
"508": {
|
||||
"id": 508,
|
||||
"type": 6,
|
||||
"typeName": "tuisonglibao_name_6",
|
||||
"num": [
|
||||
42750
|
||||
],
|
||||
"payId": [
|
||||
"yxl_libao_2,yxl_libao_3"
|
||||
],
|
||||
"time": 10800,
|
||||
"displayCD": 10800,
|
||||
"scale": 3000,
|
||||
"icon": "gkts"
|
||||
},
|
||||
"509": {
|
||||
"id": 509,
|
||||
"type": 6,
|
||||
"typeName": "tuisonglibao_name_6",
|
||||
"num": [
|
||||
62500
|
||||
],
|
||||
"payId": [
|
||||
"yxl_libao_2,yxl_libao_3"
|
||||
],
|
||||
"time": 10800,
|
||||
"displayCD": 10800,
|
||||
"scale": 3000,
|
||||
"icon": "gkts"
|
||||
},
|
||||
"510": {
|
||||
"id": 510,
|
||||
"type": 6,
|
||||
"typeName": "tuisonglibao_name_6",
|
||||
"num": [
|
||||
62500
|
||||
],
|
||||
"payId": [
|
||||
"yxl_libao_2,yxl_libao_3"
|
||||
],
|
||||
"time": 10800,
|
||||
"displayCD": 10800,
|
||||
"scale": 3000,
|
||||
"icon": "gkts"
|
||||
}
|
||||
}
|
@ -17,7 +17,7 @@
|
||||
"p": 5,
|
||||
"intr": "intr_xuanshangrenwu_intr_1",
|
||||
"img": "icon_jinbi",
|
||||
"appearNum": 0
|
||||
"jiequNum": 0
|
||||
},
|
||||
"2": {
|
||||
"id": 2,
|
||||
@ -37,7 +37,7 @@
|
||||
"p": 3,
|
||||
"intr": "intr_xuanshangrenwu_intr_2",
|
||||
"img": "icon_jinbi",
|
||||
"appearNum": 0
|
||||
"jiequNum": 0
|
||||
},
|
||||
"3": {
|
||||
"id": 3,
|
||||
@ -57,7 +57,7 @@
|
||||
"p": 5,
|
||||
"intr": "intr_xuanshangrenwu_intr_3",
|
||||
"img": "icon_jinbi",
|
||||
"appearNum": 0
|
||||
"jiequNum": 0
|
||||
},
|
||||
"4": {
|
||||
"id": 4,
|
||||
@ -77,7 +77,7 @@
|
||||
"p": 1,
|
||||
"intr": "intr_xuanshangrenwu_intr_4",
|
||||
"img": "icon_jinbi",
|
||||
"appearNum": 3
|
||||
"jiequNum": 3
|
||||
},
|
||||
"5": {
|
||||
"id": 5,
|
||||
@ -97,7 +97,7 @@
|
||||
"p": 3,
|
||||
"intr": "intr_xuanshangrenwu_intr_5",
|
||||
"img": "icon_jinbi",
|
||||
"appearNum": 0
|
||||
"jiequNum": 0
|
||||
},
|
||||
"6": {
|
||||
"id": 6,
|
||||
@ -117,7 +117,7 @@
|
||||
"p": 5,
|
||||
"intr": "intr_xuanshangrenwu_intr_4",
|
||||
"img": "icon_jinbi",
|
||||
"appearNum": 3
|
||||
"jiequNum": 3
|
||||
},
|
||||
"7": {
|
||||
"id": 7,
|
||||
@ -137,7 +137,7 @@
|
||||
"p": 3,
|
||||
"intr": "intr_xuanshangrenwu_intr_5",
|
||||
"img": "icon_jinbi",
|
||||
"appearNum": 0
|
||||
"jiequNum": 0
|
||||
},
|
||||
"8": {
|
||||
"id": 8,
|
||||
@ -157,7 +157,7 @@
|
||||
"p": 5,
|
||||
"intr": "intr_xuanshangrenwu_intr_6",
|
||||
"img": "icon_jinbi",
|
||||
"appearNum": 0
|
||||
"jiequNum": 0
|
||||
},
|
||||
"9": {
|
||||
"id": 9,
|
||||
@ -177,7 +177,7 @@
|
||||
"p": 1,
|
||||
"intr": "intr_xuanshangrenwu_intr_7",
|
||||
"img": "icon_jinbi",
|
||||
"appearNum": 0
|
||||
"jiequNum": 0
|
||||
},
|
||||
"10": {
|
||||
"id": 10,
|
||||
@ -197,7 +197,7 @@
|
||||
"p": 3,
|
||||
"intr": "intr_xuanshangrenwu_intr_8",
|
||||
"img": "icon_jinbi",
|
||||
"appearNum": 0
|
||||
"jiequNum": 0
|
||||
},
|
||||
"11": {
|
||||
"id": 11,
|
||||
@ -217,7 +217,7 @@
|
||||
"p": 5,
|
||||
"intr": "intr_xuanshangrenwu_intr_6",
|
||||
"img": "icon_jinbi",
|
||||
"appearNum": 0
|
||||
"jiequNum": 0
|
||||
},
|
||||
"12": {
|
||||
"id": 12,
|
||||
@ -237,7 +237,7 @@
|
||||
"p": 3,
|
||||
"intr": "intr_xuanshangrenwu_intr_7",
|
||||
"img": "icon_jinbi",
|
||||
"appearNum": 0
|
||||
"jiequNum": 0
|
||||
},
|
||||
"13": {
|
||||
"id": 13,
|
||||
@ -257,7 +257,7 @@
|
||||
"p": 3,
|
||||
"intr": "intr_xuanshangrenwu_intr_8",
|
||||
"img": "icon_jinbi",
|
||||
"appearNum": 0
|
||||
"jiequNum": 0
|
||||
},
|
||||
"14": {
|
||||
"id": 14,
|
||||
@ -277,7 +277,7 @@
|
||||
"p": 5,
|
||||
"intr": "intr_xuanshangrenwu_intr_9",
|
||||
"img": "icon_jinbi",
|
||||
"appearNum": 0
|
||||
"jiequNum": 0
|
||||
},
|
||||
"15": {
|
||||
"id": 15,
|
||||
@ -297,7 +297,7 @@
|
||||
"p": 2,
|
||||
"intr": "intr_xuanshangrenwu_intr_10",
|
||||
"img": "icon_jinbi",
|
||||
"appearNum": 3
|
||||
"jiequNum": 3
|
||||
},
|
||||
"16": {
|
||||
"id": 16,
|
||||
@ -317,7 +317,7 @@
|
||||
"p": 4,
|
||||
"intr": "intr_xuanshangrenwu_intr_8",
|
||||
"img": "icon_jinbi",
|
||||
"appearNum": 0
|
||||
"jiequNum": 0
|
||||
},
|
||||
"17": {
|
||||
"id": 17,
|
||||
@ -337,7 +337,7 @@
|
||||
"p": 5,
|
||||
"intr": "intr_xuanshangrenwu_intr_9",
|
||||
"img": "icon_jinbi",
|
||||
"appearNum": 0
|
||||
"jiequNum": 0
|
||||
},
|
||||
"18": {
|
||||
"id": 18,
|
||||
@ -357,7 +357,7 @@
|
||||
"p": 1,
|
||||
"intr": "intr_xuanshangrenwu_intr_10",
|
||||
"img": "icon_jinbi",
|
||||
"appearNum": 3
|
||||
"jiequNum": 3
|
||||
},
|
||||
"19": {
|
||||
"id": 19,
|
||||
@ -377,7 +377,7 @@
|
||||
"p": 4,
|
||||
"intr": "intr_xuanshangrenwu_intr_11",
|
||||
"img": "icon_jinbi",
|
||||
"appearNum": 0
|
||||
"jiequNum": 0
|
||||
},
|
||||
"20": {
|
||||
"id": 20,
|
||||
@ -397,7 +397,7 @@
|
||||
"p": 4,
|
||||
"intr": "intr_xuanshangrenwu_intr_12",
|
||||
"img": "icon_jinbi",
|
||||
"appearNum": 0
|
||||
"jiequNum": 0
|
||||
},
|
||||
"21": {
|
||||
"id": 21,
|
||||
@ -417,7 +417,7 @@
|
||||
"p": 3,
|
||||
"intr": "intr_xuanshangrenwu_intr_11",
|
||||
"img": "icon_jinbi",
|
||||
"appearNum": 0
|
||||
"jiequNum": 0
|
||||
},
|
||||
"22": {
|
||||
"id": 22,
|
||||
@ -437,7 +437,7 @@
|
||||
"p": 2,
|
||||
"intr": "intr_xuanshangrenwu_intr_12",
|
||||
"img": "icon_jinbi",
|
||||
"appearNum": 0
|
||||
"jiequNum": 0
|
||||
},
|
||||
"23": {
|
||||
"id": 23,
|
||||
@ -457,7 +457,7 @@
|
||||
"p": 1,
|
||||
"intr": "intr_xuanshangrenwu_intr_13",
|
||||
"img": "icon_jinbi",
|
||||
"appearNum": 3
|
||||
"jiequNum": 3
|
||||
},
|
||||
"24": {
|
||||
"id": 24,
|
||||
@ -477,7 +477,7 @@
|
||||
"p": 5,
|
||||
"intr": "intr_xuanshangrenwu_intr_14",
|
||||
"img": "icon_jinbi",
|
||||
"appearNum": 0
|
||||
"jiequNum": 0
|
||||
},
|
||||
"25": {
|
||||
"id": 25,
|
||||
@ -497,7 +497,7 @@
|
||||
"p": 2,
|
||||
"intr": "intr_xuanshangrenwu_intr_15",
|
||||
"img": "icon_jinbi",
|
||||
"appearNum": 0
|
||||
"jiequNum": 0
|
||||
},
|
||||
"26": {
|
||||
"id": 26,
|
||||
@ -517,7 +517,7 @@
|
||||
"p": 5,
|
||||
"intr": "intr_xuanshangrenwu_intr_14",
|
||||
"img": "icon_jinbi",
|
||||
"appearNum": 0
|
||||
"jiequNum": 0
|
||||
},
|
||||
"27": {
|
||||
"id": 27,
|
||||
@ -537,7 +537,7 @@
|
||||
"p": 5,
|
||||
"intr": "intr_xuanshangrenwu_intr_15",
|
||||
"img": "icon_jinbi",
|
||||
"appearNum": 0
|
||||
"jiequNum": 0
|
||||
},
|
||||
"28": {
|
||||
"id": 28,
|
||||
@ -557,7 +557,7 @@
|
||||
"p": 1,
|
||||
"intr": "intr_xuanshangrenwu_intr_16",
|
||||
"img": "icon_jinbi",
|
||||
"appearNum": 3
|
||||
"jiequNum": 3
|
||||
},
|
||||
"29": {
|
||||
"id": 29,
|
||||
@ -577,7 +577,7 @@
|
||||
"p": 2,
|
||||
"intr": "intr_xuanshangrenwu_intr_17",
|
||||
"img": "icon_jinbi",
|
||||
"appearNum": 0
|
||||
"jiequNum": 0
|
||||
},
|
||||
"30": {
|
||||
"id": 30,
|
||||
@ -597,6 +597,6 @@
|
||||
"p": 4,
|
||||
"intr": "intr_xuanshangrenwu_intr_18",
|
||||
"img": "icon_jinbi",
|
||||
"appearNum": 0
|
||||
"jiequNum": 0
|
||||
}
|
||||
}
|
@ -106,6 +106,18 @@ type gc_clsl_com = {
|
||||
"divide": { "day": [number, number], "group": number, [x: string]: any }[], "divideTime": number, "fightTime": [number, number], "prizeTime": number, "fightWinPrize": { "total": number, "prize": { "a": string, "t": string, "n": number, [x: string]: any }[], "star": number, [x: string]: any }[], "fightNum": number, "vipBuyFightNum": [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number], "buyFightNumNeed": { "a": string, "t": string, "n": number, [x: string]: any }[], "rankPrize": { "rank": [number, number], "prize": { "a": string, "t": string, "n": number, [x: string]: any }[], "title": string, [x: string]: any }[], "danPrize": { "star": number, "prize": { "a": string, "t": string, "n": number, [x: string]: any }[], [x: string]: any }[], "email_rank": { "title": string, "content": string, [x: string]: any }, "email_dan": { "title": string, "content": string, [x: string]: any }, [x: string]: any
|
||||
}
|
||||
|
||||
type gc_renown_level = {
|
||||
[id: string]: {
|
||||
id: number,
|
||||
renownlevel: number,
|
||||
maxlevel: number,
|
||||
cost: { "a": string, "t": string, "n": number, [x: string]: any }[],
|
||||
atk: number,
|
||||
def: number,
|
||||
hp: number,
|
||||
}
|
||||
}
|
||||
|
||||
type gc_clsl_dan = k_v<{
|
||||
/** 总星级 */
|
||||
'allStar': number
|
||||
@ -788,6 +800,8 @@ type gc_npc = k_v<{
|
||||
'ghname': string
|
||||
/**npc名称 */
|
||||
'npcname': string
|
||||
/**怪物皮肤*/
|
||||
'skin': number[]
|
||||
}>;
|
||||
|
||||
type gc_openCond = k_v<{
|
||||
@ -1797,29 +1811,6 @@ type gc_push_gift = {
|
||||
}
|
||||
}
|
||||
|
||||
type gc_hero_skin = {
|
||||
[k: string]: {
|
||||
/**皮肤id*/
|
||||
id: number
|
||||
/**干部id*/
|
||||
heroId: number
|
||||
/**皮肤品质*/
|
||||
colour: number
|
||||
/**摸到重复时转换*/
|
||||
zhuanhuan: atn[]
|
||||
}
|
||||
}
|
||||
|
||||
type gc_hero_skin_lv = {
|
||||
[colour: string]: {
|
||||
[lv: string]: {
|
||||
suipian: number
|
||||
buff: { [k: string]: number }
|
||||
need: { a: string, t: string, n: number }[];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
type gcType = {
|
||||
[key: string]: any
|
||||
armyattr: gc_armyattr
|
||||
@ -1969,8 +1960,7 @@ type gcType = {
|
||||
kfcb_prize: gc_kfcb_prize
|
||||
yuyuemail: gc_yuyuemail
|
||||
tuisonglibao: gc_push_gift
|
||||
heroSkin: gc_hero_skin
|
||||
heroSkinLv: gc_hero_skin_lv
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -1981,3 +1971,4 @@ declare global {
|
||||
export function initGcType() {
|
||||
|
||||
}
|
||||
|
18
src/lng.ts
18
src/lng.ts
@ -350,12 +350,18 @@ class Lng {
|
||||
event_kfkh_12 = "event_kfkh_12";
|
||||
event_kfkh_13 = "event_kfkh_13";
|
||||
|
||||
qingxiandenglu: "qingxiandenglu";
|
||||
wuciwanjia: "wuciwanjia";
|
||||
huoqupaihang: "huoqupaihang";
|
||||
wucigonghui: "wucigonghui";
|
||||
nameyicunzai: "nameyicunzai";
|
||||
ljlibaotips_8:"ljlibaotips_8";
|
||||
qingxiandenglu = "qingxiandenglu";
|
||||
wuciwanjia = "wuciwanjia";
|
||||
huoqupaihang = "huoqupaihang";
|
||||
wucigonghui = "wucigonghui";
|
||||
nameyicunzai = "nameyicunzai";
|
||||
ljlibaotips_8 = "ljlibaotips_8";
|
||||
|
||||
weiwang_12 = "weiwang_12";
|
||||
|
||||
hqjgtips_27 = "hqjgtips_27";
|
||||
hqjgtips_28 = "hqjgtips_28";
|
||||
hqjgtips_29 = "hqjgtips_29";
|
||||
|
||||
"11111" = "globalThis.lng.chat_1"
|
||||
// return call.error('', { code: -3, message: globalThis.lng.chat_2 });
|
||||
|
@ -24,6 +24,7 @@ import {ResOpen as ResOpenZhoumolibao} from '../shared/protocols/event/zhoumolib
|
||||
import {ResOpen as ResOpenPobinglibao} from '../shared/protocols/event/pobinglibao/PtlOpen';
|
||||
import {ResOpen as ResOpenLeiChongLiBao} from '../shared/protocols/event/leichonglibao/PtlOpen';
|
||||
import {event as ResOpenYuandan} from '../shared/protocols/event/yuandan/PtlOpen';
|
||||
import {PlayerData} from "../api_s2c/event/huangqijiuguan/fun";
|
||||
|
||||
export type eventType = {
|
||||
shouchong: {
|
||||
@ -54,7 +55,6 @@ export type eventType = {
|
||||
jierihuodong: Omit<ResOpenJierihuodong, 'taskFinish'> & { refreshTime: number; };
|
||||
kaifujingsai: ResOpenKaifujingsai;
|
||||
zhoumolibao: ResOpenZhoumolibao & { refreshTime: number; };
|
||||
pobinglibao: ResOpenPobinglibao
|
||||
payForDiamond: {
|
||||
[time: number]: number
|
||||
}
|
||||
@ -74,6 +74,8 @@ export type eventType = {
|
||||
[k: `qiridenglu${number}`]: Pick<ResOpenQiridenglu, 'recPrize'>;
|
||||
[k: `leichonglibao${number}`]: ResOpenLeiChongLiBao & { opentime: number };
|
||||
[k: `yuandan${number}`]: ResOpenYuandan;
|
||||
[k: `pobinglibao${number}`]: ResOpenPobinglibao;
|
||||
[k: `huangqijiuguan_${number}`]: PlayerData;
|
||||
};
|
||||
|
||||
export type CollectionEvent<T extends keyof eventType> = {
|
||||
|
@ -1,4 +1,4 @@
|
||||
import {fightResult} from '../shared/fightControl/fightType';
|
||||
|
||||
|
||||
export type CollectionFightLog = fightResult & { uid: string, type: string };
|
||||
export type CollectionFightLog = fightResult & { uid: string, type: string, ttl: Date};
|
9
src/module/collection_weiwang.ts
Normal file
9
src/module/collection_weiwang.ts
Normal file
@ -0,0 +1,9 @@
|
||||
export type CollectionWeiwang = {
|
||||
uid: string;
|
||||
|
||||
hp: number;
|
||||
atk: number;
|
||||
def: number;
|
||||
|
||||
buff: k_v<number>;
|
||||
}
|
@ -60,6 +60,7 @@ import { CollectionRmbuse } from "./collection_rmbuse";
|
||||
import { CollectionFightLog } from "./collection_fightLog";
|
||||
import { CollectionShop } from "./collection_shop";
|
||||
import { CollectionPushGift } from "./collection_pushgift";
|
||||
import { CollectionWeiwang } from './collection_weiwang';
|
||||
|
||||
export type MongodbCollections = {
|
||||
user: CollectionUser;
|
||||
@ -136,4 +137,5 @@ export type MongodbCollections = {
|
||||
pushgift: CollectionPushGift
|
||||
|
||||
huodong_user: CollectionUser;
|
||||
weiwang: CollectionWeiwang;
|
||||
};
|
3
src/oss/blackapi.json
Normal file
3
src/oss/blackapi.json
Normal file
@ -0,0 +1,3 @@
|
||||
[
|
||||
|
||||
]
|
@ -6,23 +6,38 @@
|
||||
},
|
||||
{
|
||||
"key":"got_jinbi",
|
||||
"limit":200000000,
|
||||
"limit":2000000000,
|
||||
"tips":"jinbi获取达到20亿"
|
||||
},
|
||||
{
|
||||
"key":"got_rmbmoney",
|
||||
"limit":30000,
|
||||
"tips":"钻石获取达到3万"
|
||||
"limit":100000,
|
||||
"tips":"钻石获取达到10万"
|
||||
},
|
||||
{
|
||||
"key":"use_attr_rmbmoney",
|
||||
"limit":100000,
|
||||
"tips":"钻石消耗达到10万"
|
||||
},
|
||||
{
|
||||
"key":"got_huangqijinbi",
|
||||
"limit":5000,
|
||||
"tips":"单日获取黄旗金币达到5000"
|
||||
},
|
||||
{
|
||||
"key":"got_huangqiduihuan",
|
||||
"limit":10000,
|
||||
"tips":"单日获取黄旗兑换达到10000"
|
||||
},
|
||||
{
|
||||
"key": "huangqijiuguan/ZhaoMu",
|
||||
"limit": 1000,
|
||||
"tips": "单日获取黄旗招募超过1000抽"
|
||||
},
|
||||
{
|
||||
"key":"tanxian/FastGuaJi",
|
||||
"limit":40,
|
||||
"tips":"快速探险达到40次"
|
||||
"limit":30,
|
||||
"tips":"快速探险达到30次"
|
||||
},
|
||||
{
|
||||
"key":"xstask/Receive/Num",
|
||||
@ -34,16 +49,6 @@
|
||||
"limit":500,
|
||||
"tips":"地下钱庄使用次数超过500次"
|
||||
},
|
||||
{
|
||||
"key":"shop/Buy/2",
|
||||
"limit":50,
|
||||
"tips":"势力商店购买某一商品超过50次"
|
||||
},
|
||||
{
|
||||
"key":"shop/Buy/1",
|
||||
"limit":10,
|
||||
"tips":"杂货商店购买某一商品超过10次"
|
||||
},
|
||||
{
|
||||
"key":"peijiancangku/Jump",
|
||||
"limit":500,
|
||||
@ -56,17 +61,48 @@
|
||||
},
|
||||
{
|
||||
"key":"pata/SaoDang",
|
||||
"limit":5,
|
||||
"tips":"黑暗塔扫荡次数超过5次"
|
||||
"limit":6,
|
||||
"tips":"黑暗塔扫荡次数超过6次"
|
||||
},
|
||||
{
|
||||
"key":"lingzhulaixi/PkBoss",
|
||||
"limit":15,
|
||||
"tips":"讨伐海盗挑战次数超过15次"
|
||||
"limit":16,
|
||||
"tips":"讨伐海盗挑战次数超过16次"
|
||||
},
|
||||
{
|
||||
"key":"gonghui/FbFight",
|
||||
"limit":5,
|
||||
"tips":"势力战斗boss超过5次"
|
||||
},
|
||||
|
||||
{
|
||||
"key":"shop/Buy/2",
|
||||
"limit":50,
|
||||
"tips":"势力商店购买超过50次"
|
||||
},
|
||||
{
|
||||
"key":"shop/Buy/1",
|
||||
"limit":20,
|
||||
"tips":"杂货商店购买超过20次"
|
||||
},
|
||||
{
|
||||
"key":"shop/Buy/10",
|
||||
"limit":20,
|
||||
"tips":"荣誉商店购买超过20次"
|
||||
},
|
||||
{
|
||||
"key":"shop/Buy/4",
|
||||
"limit":10,
|
||||
"tips":"饰品商店购买超过10次"
|
||||
},
|
||||
{
|
||||
"key":"shop/Buy/11",
|
||||
"limit":5,
|
||||
"tips":"功绩商店购买超过5次"
|
||||
},
|
||||
{
|
||||
"key":"shop/Buy/3",
|
||||
"limit":5,
|
||||
"tips":"战争商店购买超过5次"
|
||||
}
|
||||
]
|
@ -1,9 +1,33 @@
|
||||
import { PublicShared } from "../../shared/public/public";
|
||||
|
||||
|
||||
export class ActionLog {
|
||||
static async initDayLog(uid: string) {
|
||||
G.mongodb.cActionLog('day').updateOne({ uid: uid, type: 'day' }, { $set: { log: {} } }, { upsert: true });
|
||||
/**
|
||||
* 每天0点的时候,重置所有的统计数据
|
||||
*/
|
||||
static async initAllDayLog() {
|
||||
await G.mongodb.cActionLog('day').updateMany({type: 'day' }, {
|
||||
$set: {
|
||||
log: {},
|
||||
//增加刷新时间
|
||||
lastTime: PublicShared.getToDayZeroTime(G.time)
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 重置某个玩家的统计信息
|
||||
* @param uid
|
||||
*/
|
||||
// static async initDayLog(uid: string) {
|
||||
// G.mongodb.cActionLog('day').updateOne({ uid: uid, type: 'day' }, {
|
||||
// $set: {
|
||||
// log: {},
|
||||
// //增加刷新时间
|
||||
// lastTime: PublicShared.getToDayZeroTime(G.time)
|
||||
// }
|
||||
// }, { upsert: true });
|
||||
// }
|
||||
static async addDayLog(uid: string, ...args: { key: string, val: number; }[]) {
|
||||
const addObj = G.mongodb.createTreeObj(...args.map(a => { return { key: 'log', k: a.key, val: a.val }; }));
|
||||
G.mongodb.cActionLog('day').updateOne({ uid: uid, type: 'day' }, { $inc: addObj });
|
||||
|
@ -3,6 +3,8 @@ import { ApiCall } from 'tsrpc';
|
||||
import { MsgChat } from '../shared/protocols/msg_s2c/MsgChat';
|
||||
import { player } from '../shared/protocols/user/type';
|
||||
import { chatLog, chatMsgLog } from '../shared/protocols/type'
|
||||
import { PublicShared } from '../shared/public/public';
|
||||
import { clusterRunOnce } from '../clusterUtils';
|
||||
|
||||
const msgListLen = {
|
||||
'cross': 30,
|
||||
@ -10,22 +12,54 @@ const msgListLen = {
|
||||
'guild': 20
|
||||
};
|
||||
|
||||
/**
|
||||
* 通过开服天数,获取跨服聊天分组
|
||||
*/
|
||||
export function getCrossChatGroupByOpenDay(){
|
||||
let openday = PublicShared.getOpenServerDay();
|
||||
if(openday<=7){
|
||||
return 1;
|
||||
}else if(openday <= 30){
|
||||
return 2;
|
||||
}else{
|
||||
return 3;
|
||||
}
|
||||
}
|
||||
|
||||
export class ChatFun {
|
||||
/**新增消息 */
|
||||
static async newMsg(sendData: MsgChat) {
|
||||
G.mongodb.collection('chat').updateOne(
|
||||
{ type: `${sendData.type}${sendData.type == 'guild' ? (sendData.sender as player)?.ghId : ''}` },
|
||||
{ $push: { list: { $each: [sendData], $slice: -msgListLen[sendData.type] } } },
|
||||
{ upsert: true }
|
||||
);
|
||||
|
||||
let addToDB = 0;
|
||||
if (sendData.type == 'guild') {
|
||||
addToDB = 1;
|
||||
G.server.broadcastClusterMsg('msg_s2c/Chat', sendData,{ghId:(sendData.sender as player)?.ghId});
|
||||
}else if(sendData.type == 'cross'){
|
||||
//所有的子进程都会收到,不需要集群内分别广播
|
||||
G.server.broadcastMsg('msg_s2c/Chat', sendData);
|
||||
if(sendData?.otherData?.group == getCrossChatGroupByOpenDay()){
|
||||
//如果时候同一个分组的
|
||||
delete sendData?.otherData?.group;
|
||||
G.server.broadcastMsg('msg_s2c/Chat', sendData);
|
||||
addToDB = 2;
|
||||
}
|
||||
}else{
|
||||
G.server.broadcastClusterMsg('msg_s2c/Chat', sendData);
|
||||
addToDB = 1;
|
||||
}
|
||||
|
||||
if(addToDB == 1){
|
||||
G.mongodb.collection('chat').updateOne(
|
||||
{ type: `${sendData.type}${sendData.type == 'guild' ? (sendData.sender as player)?.ghId : ''}` },
|
||||
{ $push: { list: { $each: [sendData], $slice: -msgListLen[sendData.type] } } },
|
||||
{ upsert: true }
|
||||
);
|
||||
}else if(addToDB == 2){
|
||||
clusterRunOnce(()=>{
|
||||
G.mongodb.collection('chat').updateOne(
|
||||
{ type: `${sendData.type}${sendData.type == 'guild' ? (sendData.sender as player)?.ghId : ''}` },
|
||||
{ $push: { list: { $each: [sendData], $slice: -msgListLen[sendData.type] } } },
|
||||
{ upsert: true }
|
||||
);
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -19,7 +19,8 @@ export class DxltFun {
|
||||
}
|
||||
/**回退层数 */
|
||||
static backLayer(data: ResOpen) {
|
||||
let num = data.curLayer - G.gc.dxlt_com.dayResetBackLayer;
|
||||
//let num = data.curLayer - G.gc.dxlt_com.dayResetBackLayer;
|
||||
let num = (data.curLayer-30) - (data.curLayer-30)%5+1
|
||||
data.curLayer = num < 1 ? 1 : num;
|
||||
data.over = G.gc.dxlt_layer[data.curLayer].type == 2;
|
||||
}
|
||||
|
@ -11,33 +11,33 @@ import {re, string} from "mathjs";
|
||||
import {getGud} from './gud';
|
||||
import {PushGiftFun} from "./pushgift";
|
||||
|
||||
type fightType = 'tanxian' | 'pata' | 'jjc' | 'gbtx' | 'qjzzd' | 'meirishilian' | 'wzrycross';
|
||||
type fightType = 'tanxian' | 'pata' | 'jjc' | 'gbtx' | 'qjzzd' | 'meirishilian' | 'wzrycross' | 'hqjg';
|
||||
|
||||
|
||||
let fights:{[key:string]:FightControl} = {
|
||||
|
||||
let fights: { [key: string]: FightControl } = {
|
||||
|
||||
};
|
||||
function clearFights (){
|
||||
function clearFights() {
|
||||
//定时清理战斗
|
||||
setInterval(()=>{
|
||||
setInterval(() => {
|
||||
let now = Date.now();
|
||||
for (let key in fights){
|
||||
if (now - fights[key].startTime > 30000){
|
||||
console.log("清理战斗",key);
|
||||
try{
|
||||
for (let key in fights) {
|
||||
if (now - fights[key].startTime > 30000) {
|
||||
console.log("清理战斗", key);
|
||||
try {
|
||||
fights[key].release();
|
||||
}catch(e){
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
delete fights[key];
|
||||
}
|
||||
}
|
||||
},5000);
|
||||
}, 5000);
|
||||
}
|
||||
clearFights();
|
||||
|
||||
export class FightFun {
|
||||
static fightIndex:number = 0;
|
||||
static fightIndex: number = 0;
|
||||
|
||||
static fight(data: joinFightData[], maxRoundNums = 30, fightType: "pvp" | "pve" = 'pvp') {
|
||||
this.fightIndex++;
|
||||
@ -80,16 +80,20 @@ export class FightFun {
|
||||
});
|
||||
|
||||
return {
|
||||
player: {...player, buff: PlayerShared.getBuff(player)},
|
||||
player: { ...player, buff: PlayerShared.getBuff(player) },
|
||||
roles: roles
|
||||
};
|
||||
}
|
||||
|
||||
/**挑战竞技场 */
|
||||
static async fightJJc(call: ApiCall, rankInfo: rankInfo) {
|
||||
if (rankInfo.player.uid.indexOf('npc_') != -1) return await this.fightNpc(call, G.gc.jjc_npc[rankInfo.player.uid].npcId, 'jjc', await this.getPlayerFightData(call.conn.uid));
|
||||
let result;
|
||||
|
||||
let result = this.fight([await this.getPlayerFightData(call.conn.uid), await this.getPlayerFightData(rankInfo.player.uid)]);
|
||||
if (rankInfo.player.uid.indexOf('npc_') != -1) {
|
||||
result = await this.fightNpc(call, G.gc.jjc_npc[rankInfo.player.uid].npcId, 'jjc', await this.getPlayerFightData(call.conn.uid));
|
||||
} else {
|
||||
result = this.fight([await this.getPlayerFightData(call.conn.uid), await this.getPlayerFightData(rankInfo.player.uid)]);
|
||||
}
|
||||
|
||||
// 竞技场 战败触发推送礼包
|
||||
if (result.winSide != 0) {
|
||||
@ -101,8 +105,15 @@ export class FightFun {
|
||||
|
||||
/**挑战npc */
|
||||
static async fightNpc(call: ApiCall, npcId: string | number, type: fightType, data?: joinFightData) {
|
||||
let ext_buff = {};
|
||||
|
||||
let my = data || await call.conn.getDefaultFightData();
|
||||
if (["tanxian"].indexOf(type) != -1) {
|
||||
// 威望buff
|
||||
let weiwang = await G.mongodb.collection("weiwang").findOne({ uid: call.uid });
|
||||
ext_buff["weiwangbuff"] = weiwang?.buff ? weiwang.buff : { "atk": 0, "def": 0, "hp": 0 };
|
||||
}
|
||||
|
||||
let my = data || await call.conn.getDefaultFightData(undefined, ext_buff);
|
||||
|
||||
if (Object.keys(my.roles).length < 1) {
|
||||
throw new TsrpcError('至少需要上阵一个英雄');
|
||||
@ -130,14 +141,14 @@ export class FightFun {
|
||||
* @param result
|
||||
*/
|
||||
static async saveLog(uid: string, type: string, result: fightResult) {
|
||||
let writeList = ['ganhai', 'jjc', 'hbzbJfs', 'hbzbZbs', 'slzd', 'clsl']
|
||||
let writeList = ['ganhai', 'jjc', 'hbzbJfs', 'hbzbZbs', 'slzd', 'clsl']
|
||||
if (uid.indexOf('npc') != -1 || !writeList.includes(type)) return;
|
||||
|
||||
G.mongodb.collection('fightLog').insertOne({uid, type, ...result})
|
||||
G.mongodb.collection('fightLog').insertOne({ uid, type, ...result, ttl: new Date() })
|
||||
|
||||
}
|
||||
|
||||
static async readLog(uid: string, type: string, len = 20) {
|
||||
return await G.mongodb.collection('fightLog').find({uid, type}).limit(len).toArray() || []
|
||||
return await G.mongodb.collection('fightLog').find({ uid, type }).limit(len).sort({ _id: -1 }).toArray() || []
|
||||
}
|
||||
}
|
@ -94,37 +94,37 @@ export class JJCFun {
|
||||
* @param uTimeOffset
|
||||
* @param isUpdate 是否更新数据
|
||||
*/
|
||||
static async checkUpdatePlayer(min: number = 0, max: number = 1000, uTimeOffset: number = 600, isUpdate: boolean = true) {
|
||||
// 获取指定排名用户uid
|
||||
let sortInfo = await this.getRankListUid(min, max)
|
||||
if (!sortInfo.length) return []
|
||||
let updateArr = []
|
||||
// static async checkUpdatePlayer(min: number = 0, max: number = 1000, uTimeOffset: number = 600, isUpdate: boolean = true) {
|
||||
// // 获取指定排名用户uid
|
||||
// let sortInfo = await this.getRankListUid(min, max)
|
||||
// if (!sortInfo.length) return []
|
||||
// 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++) {
|
||||
let uid = sortInfo[i]
|
||||
let rankInfo = users[uid]
|
||||
if (!rankInfo?.player) continue
|
||||
// 比对utime,判断是否更新数据
|
||||
if (!rankInfo.player.isNpc) {
|
||||
if (!rankInfo.utime || (rankInfo.utime && rankInfo.utime < (G.time - uTimeOffset))) {
|
||||
updateArr.push(rankInfo)
|
||||
}
|
||||
}
|
||||
}
|
||||
// 更新数据
|
||||
if (isUpdate && updateArr.length > 0) {
|
||||
let playerArrInfo = await G.mongodb.collection("user").find({uid: {$in: updateArr.map(i => i.uid)}}).toArray()
|
||||
for (let i = 0; i < playerArrInfo.length; i++) {
|
||||
let playerInfo = playerArrInfo[i]
|
||||
let index = updateArr.findIndex(x => x.player.uid == playerInfo.uid)
|
||||
updateArr[index].player = playerInfo
|
||||
updateArr[index].utime = G.time
|
||||
this.updatePlayerData(playerInfo.uid, updateArr[index]);
|
||||
}
|
||||
}
|
||||
}
|
||||
// for (let i = 0; i < sortInfo.length; i++) {
|
||||
// let uid = sortInfo[i]
|
||||
// let rankInfo = users[uid]
|
||||
// if (!rankInfo?.player) continue
|
||||
// // 比对utime,判断是否更新数据
|
||||
// if (!rankInfo.player.isNpc) {
|
||||
// if (!rankInfo.utime || (rankInfo.utime && rankInfo.utime < (G.time - uTimeOffset))) {
|
||||
// updateArr.push(rankInfo)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// // 更新数据
|
||||
// if (isUpdate && updateArr.length > 0) {
|
||||
// let playerArrInfo = await G.mongodb.collection("user").find({uid: {$in: updateArr.map(i => i.uid)}}).toArray()
|
||||
// for (let i = 0; i < playerArrInfo.length; i++) {
|
||||
// let playerInfo = playerArrInfo[i]
|
||||
// let index = updateArr.findIndex(x => x.player.uid == playerInfo.uid)
|
||||
// updateArr[index].player = playerInfo
|
||||
// updateArr[index].utime = G.time
|
||||
// this.updatePlayerData(playerInfo.uid, updateArr[index]);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
/**
|
||||
* 获取指定范围排名的用户,仅返回uid[]
|
||||
|
@ -179,14 +179,14 @@ export class KuangDongfun {
|
||||
}
|
||||
if (!kdInfo) return []
|
||||
let _con = await this.getCon(hdid)
|
||||
let _kcTime = G.time + kdInfo.yanshi - kdInfo.ctime
|
||||
let _kcTime = G.time - kdInfo.ctime
|
||||
//let _gud = await G.mongodb.collection('user').findOne({uid: kdInfo.uid})
|
||||
let _gud = await getGud(kdInfo.uid)
|
||||
let gamer_lv = _gud.lv
|
||||
// @ts-ignore
|
||||
let prize: prizeType[] = _con.reward
|
||||
// let prize: prizeType[] = [{ a: 'attr', t: 'rmbmoney', n: 50 }] // todo 待接入配置
|
||||
if (_kcTime > 8 * 3600) _kcTime = 8 * 3600 + kdInfo.yanshi // 设置最大时长
|
||||
if (_kcTime > 8 * 3600 + kdInfo.yanshi) _kcTime = 8 * 3600 + kdInfo.yanshi // 设置最大时长
|
||||
prize[0]["n"] = Math.floor(eval(_con.formula) * _kcTime)
|
||||
|
||||
if (_con.public_map == 1){
|
||||
|
@ -1,12 +1,12 @@
|
||||
import { UpdateFilter } from 'mongodb';
|
||||
import { paTaType } from '../shared/protocols/pata/type';
|
||||
import { PublicShared } from '../shared/public/public';
|
||||
import {UpdateFilter} from 'mongodb';
|
||||
import {paTaType} from '../shared/protocols/pata/type';
|
||||
import {PublicShared} from '../shared/public/public';
|
||||
|
||||
|
||||
export class PataFun {
|
||||
/**获取爬塔信息 */
|
||||
static async getInfo(uid: string, sid: number = 0) {
|
||||
let info: paTaType = await G.mongodb.collection('pata').findOne({ uid: uid, sid: sid });
|
||||
let info: paTaType = await G.mongodb.collection('pata').findOne({uid: uid, sid: sid});
|
||||
let nt = G.time;
|
||||
if (!info) {
|
||||
info = {
|
||||
@ -17,7 +17,7 @@ export class PataFun {
|
||||
sid: sid,
|
||||
saodangNum: 0
|
||||
};
|
||||
this.changeInfo(uid, info.sid, { $set: info });
|
||||
this.changeInfo(uid, info.sid, {$set: info});
|
||||
}
|
||||
|
||||
/** 第二天 */
|
||||
@ -27,7 +27,7 @@ export class PataFun {
|
||||
useNum: 0,
|
||||
saodangNum: 0
|
||||
};
|
||||
this.changeInfo(uid, info.sid, { $set: setData });
|
||||
this.changeInfo(uid, info.sid, {$set: setData});
|
||||
}
|
||||
|
||||
if (info['_id']) {
|
||||
@ -38,20 +38,19 @@ export class PataFun {
|
||||
}
|
||||
|
||||
/**修改爬塔信息 */
|
||||
static async changeInfo(uid: string, sid: number, change: Pick<UpdateFilter<paTaType>, '$set'>) {
|
||||
|
||||
G.mongodb.collection('pata').updateOne(
|
||||
{ uid: uid, sid: sid },
|
||||
static async changeInfo(uid: string, sid: number, change: Pick<UpdateFilter<paTaType>, string>) {
|
||||
await G.mongodb.collection('pata').updateOne(
|
||||
{uid: uid, sid: sid},
|
||||
change,
|
||||
{ upsert: true }
|
||||
{upsert: true}
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**获取爬塔红点 */
|
||||
static async getHongDian(uid: string) {
|
||||
let mydata = await this.getInfo(uid);
|
||||
let con = Object.keys(G.gc.patacom);
|
||||
con.sort((a, b) => { return parseInt(a) - parseInt(b); });
|
||||
con.sort((a, b) => parseInt(a) - parseInt(b));
|
||||
for (let idx in con) {
|
||||
idx = con[idx];
|
||||
if (mydata.lv <= parseInt(idx)) {
|
||||
|
@ -13,7 +13,7 @@ import {getConf as zmlbGetConf} from '../api_s2c/event/zhoumolibao/ApiOpen';
|
||||
import {Christmasfun} from "../api_s2c/event/christmas/fun";
|
||||
|
||||
async function checkPayIsActive(payId: string, logs: payLog[], payArgs) {
|
||||
let conf: any = await this.getConf(payId, payArgs);
|
||||
let conf: any = await PayFun.getConf(payId, payArgs);
|
||||
if (!conf) return false;
|
||||
|
||||
let lastLog = logs.last();
|
||||
@ -66,7 +66,8 @@ export class PayFun {
|
||||
);
|
||||
})
|
||||
|
||||
G.mongodb.collection('payLogNew').insertMany(args.map(i => ({key: i.payId, uid: uid, values: i.val})));
|
||||
let colls = args.map(i => ({key: i.payId, uid: uid, values: i.val}))
|
||||
if(colls.length>0)G.mongodb.collection('payLogNew').insertMany(colls);
|
||||
|
||||
G.server.sendMsgByUid(uid, 'msg_s2c/PayChange', Object.fromEntries(args.map(a => [a.payId, a.val])));
|
||||
}
|
||||
@ -260,7 +261,10 @@ export class PayFun {
|
||||
let selectPrize = await G.ioredis.get(`pay:${payId}:${player.uid}`);
|
||||
if (selectPrize) {
|
||||
prize.push(...JSON.parse(selectPrize))
|
||||
G.ioredis.del(`pay:${payId}:${player.uid}`)
|
||||
//支付A check -> 玩家支付 -> 网络延迟
|
||||
//支付B check -> 玩家支付 -> pay -> del
|
||||
//支付A -> pay 时,这里可能被清了,导致给玩家发放了空的奖励,因此,这里不清除
|
||||
//G.ioredis.del(`pay:${payId}:${player.uid}`)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -20,6 +20,9 @@ import { addGameLog } from "../gameLog";
|
||||
import { PushGiftFun } from "./pushgift";
|
||||
import { ActionLog } from './actionLog/actionLog';
|
||||
import HeroSkinFun from './heroskin';
|
||||
import { roleDataType } from '../shared/fightControl/fightType';
|
||||
import { PlayerShared } from '../shared/public/player';
|
||||
|
||||
|
||||
export type call = {
|
||||
get otherBuff(): otherBuff;
|
||||
@ -41,6 +44,41 @@ export type call = {
|
||||
};
|
||||
|
||||
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数量
|
||||
*/
|
||||
@ -117,7 +155,7 @@ export class PlayerFun {
|
||||
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);
|
||||
G.emit('USE_ITEM', call.conn.gud, needArr.map(need => {
|
||||
return { ...need, n: Math.abs(need.n) };
|
||||
@ -127,7 +165,7 @@ export class PlayerFun {
|
||||
/**
|
||||
* 发送奖励
|
||||
*/
|
||||
static async sendPrize(call: call, prizeList: atn[]) {
|
||||
static async sendPrize(call: call, prizeList: atn[], pushToClient=false) {
|
||||
prizeList = PublicShared.mergePrize(prizeList);
|
||||
|
||||
let attr = prizeList.filter(atn => atn.a == 'attr' && atn.n != 0);
|
||||
@ -150,6 +188,14 @@ export class PlayerFun {
|
||||
heroskin.length > 0 && this.addHeroskin(call, heroskin),
|
||||
]);
|
||||
|
||||
if(pushToClient){
|
||||
G.server.sendMsgByUid(call.uid, 'msg_s2c/Collection', {
|
||||
fromApi: `PlayerFun_sendPrize`,
|
||||
msg: call.eventMsg
|
||||
});
|
||||
call.eventMsg = {};
|
||||
}
|
||||
|
||||
return prizeList;
|
||||
};
|
||||
|
||||
@ -187,6 +233,11 @@ export class PlayerFun {
|
||||
ActionLog.addDayLog(call.conn.uid, { key: 'got_' + atn.t, val: atn.n });
|
||||
}
|
||||
|
||||
if (["huangqijinbi", "huangqiduihuan"].includes(atn.t) && atn.n > 0) {
|
||||
//统计今日获取的黄旗金币和黄旗对换币
|
||||
ActionLog.addDayLog(call.conn.uid, { key: 'got_' + atn.t, val: atn.n });
|
||||
}
|
||||
|
||||
// 增加vip经验的任务监听
|
||||
if (atn.t == "payExp" && atn.n > 0) {
|
||||
G.emit("Class_task_157", 'Class_task_157', call, atn.n, 0);
|
||||
|
@ -1,7 +1,7 @@
|
||||
import {PublicShared} from '../../shared/public/public';
|
||||
import {EmailFun} from '../email';
|
||||
import {RankClslCross} from '../rank/rank_clsl';
|
||||
import {Scheduler, schedulerType} from './scheduler';
|
||||
import { PublicShared } from '../../shared/public/public';
|
||||
import { EmailFun } from '../email';
|
||||
import { RankClslCross } from '../rank/rank_clsl';
|
||||
import { Scheduler, schedulerType } from './scheduler';
|
||||
|
||||
/**
|
||||
* 丛林猎手赛季重置
|
||||
@ -26,12 +26,12 @@ export class SchedulerClslLocalCtor extends Scheduler {
|
||||
// 修改clslCrossUser表中的uid为del_uid_week 并且 设置ttltime为当前时间
|
||||
await G.mongodb.collection('clslCrossUser').updateMany(
|
||||
{
|
||||
ttltime: {$exists: false}
|
||||
}, {$rename: {"uid": `del_uid_${week}`}, $set: {"ttltime": new Date()}}
|
||||
ttltime: { $exists: false }
|
||||
}, { $rename: { "uid": `del_uid_${week}` }, $set: { "ttltime": new Date() } }
|
||||
);
|
||||
|
||||
// 获取分组信息 重置排行榜
|
||||
let groups = await G.mongodb.collection('clslCrossGroup').findOne({week});
|
||||
let groups = await G.mongodb.collection('clslCrossGroup').findOne({ week });
|
||||
Object.keys(groups.groups).forEach((group) => {
|
||||
// 清理排行数据
|
||||
new RankClslCross(group).clear();
|
||||
@ -64,7 +64,7 @@ export class SchedulerClslCrossCtor extends Scheduler {
|
||||
async start() {
|
||||
let week = PublicShared.getToWeek();
|
||||
let users = await G.mongodb.collection('clslCrossUser').find({
|
||||
ttltime: {$exists: false}
|
||||
ttltime: { $exists: false }
|
||||
}, {
|
||||
projection: {
|
||||
"uid": 1,
|
||||
@ -118,15 +118,15 @@ export class SchedulerClslCrossCtor extends Scheduler {
|
||||
|
||||
// 更新玩家分组id
|
||||
for (let group in groups) {
|
||||
await G.mongodb.collection('clslCrossUser').updateMany({uid: {$in: groups[group].users}}, {$set: {group: group}});
|
||||
await G.mongodb.collection('clslCrossUser').updateMany({ uid: { $in: groups[group].users } }, { $set: { group: group } });
|
||||
}
|
||||
|
||||
// 记录分组
|
||||
await G.mongodb.collection("clslCrossGroup").updateOne({week: week}, {$set: {groups: groups}}, {upsert: true});
|
||||
await G.mongodb.collection("clslCrossGroup").updateOne({ week: week }, { $set: { groups: groups } }, { upsert: true });
|
||||
|
||||
// 初始化丛林猎手排行榜
|
||||
G.mongodb.collection('clslCrossUser').find({
|
||||
allStar: {$gte: this.star}, ttltime: {$exists: false}
|
||||
allStar: { $gte: this.star }, ttltime: { $exists: false }
|
||||
}).toArray().then(users => {
|
||||
users.forEach(u => {
|
||||
new RankClslCross(u.group).addNew({
|
||||
@ -161,7 +161,13 @@ export class SchedulerClslPrize extends Scheduler {
|
||||
async start() {
|
||||
// 排名奖励
|
||||
let group2users: { [group: string]: string[] } = {};
|
||||
(await G.mongodb.collection('clslCrossUser').find({allStar: {$gte: this.star}}).toArray()).forEach(u => {
|
||||
(await G.mongodb.collection('clslCrossUser').find(
|
||||
{
|
||||
uid: { $exists: true },
|
||||
allStar: { $gte: this.star }
|
||||
},
|
||||
{ sort: { allStar: -1 } }
|
||||
).limit(10).toArray()).forEach(u => {
|
||||
if (u.group in group2users) {
|
||||
group2users[u.group].push(u.uid);
|
||||
} else {
|
||||
|
@ -4,11 +4,14 @@ import { Wjjl } from "../../module/collection_wjjl";
|
||||
import { ZhanLingTasks } from "../zhanling";
|
||||
import { setGud } from '../gud';
|
||||
import { EmailFun } from '../email';
|
||||
import { ActionLog } from '../actionLog/actionLog';
|
||||
import { clusterFun } from '../../clusterFunction';
|
||||
import { clusterRunOnce } from '../../clusterUtils';
|
||||
|
||||
|
||||
export class SchedulerNewDayLocalCtor extends Scheduler {
|
||||
id: schedulerType = 'newDay_local_ctor';
|
||||
time = 0;
|
||||
time = 1;
|
||||
name = '定时推送跨天通知';
|
||||
type: 'day' | 'week' = 'day';
|
||||
|
||||
@ -23,6 +26,44 @@ export class SchedulerNewDayLocalCtor extends Scheduler {
|
||||
}
|
||||
|
||||
async start() {
|
||||
|
||||
clusterRunOnce(async () => {
|
||||
//这个定时器会被每个进程都启动,这是这部分逻辑,应该只执行1次
|
||||
|
||||
//重置所有的ActionLog
|
||||
await ActionLog.initAllDayLog();
|
||||
|
||||
// 每周一,发放终身卡
|
||||
(async () => {
|
||||
if (PublicShared.getWeek(G.time) == 1) {
|
||||
let logs = await G.mongodb.collection("payLogNew").find(
|
||||
{ key: "zhongshenka", del_time: { $exists: false } }, { projection: { _id: 0, } }
|
||||
).toArray();
|
||||
|
||||
if (logs.length == 0) {
|
||||
console.log("没有终身卡数据,不发放终身卡");
|
||||
}
|
||||
let con = G.gc.payEmail.zhongshenka.filter(e => e.day == 7)[0];
|
||||
for (let i = 0; i < logs.length; i++) {
|
||||
console.log("发放终身卡", logs[i].uid);
|
||||
// 发送邮件
|
||||
EmailFun.addEmail({
|
||||
uid: logs[i].uid,
|
||||
type: "system",
|
||||
title: con.title,
|
||||
content: con.content,
|
||||
contentInsertArr: [],
|
||||
createTime: G.time,
|
||||
prize: con.prize,
|
||||
})
|
||||
}
|
||||
}
|
||||
})()
|
||||
|
||||
// 转点刷新事件
|
||||
G.emit('NEW_DAY', G.time);
|
||||
})
|
||||
|
||||
let users = Object.values(G.server.uid_connections)
|
||||
if (users.length) {
|
||||
for (let item of users) {
|
||||
@ -56,34 +97,6 @@ export class SchedulerNewDayLocalCtor extends Scheduler {
|
||||
G.server.broadcastClusterMsg('msg_s2c/NewDay', { time: this.zeroTime });
|
||||
}
|
||||
|
||||
(async () => {
|
||||
// 每周一,发放终身卡
|
||||
if (PublicShared.getWeek(G.time) != 1) {
|
||||
console.log("不是周一,不发放终身卡", PublicShared.getWeek(G.time));
|
||||
return
|
||||
};
|
||||
|
||||
let logs = await G.mongodb.collection("payLogNew").find(
|
||||
{ key: "zhongshenka", del_time: { $exists: false } }, { projection: { _id: 0, } }
|
||||
).toArray();
|
||||
|
||||
if (logs.length == 0) {
|
||||
console.log("没有终身卡数据,不发放终身卡");
|
||||
}
|
||||
let con = G.gc.payEmail.zhongshenka.filter(e => e.day == 7)[0];
|
||||
for (let i = 0; i < logs.length; i++) {
|
||||
console.log("发放终身卡", logs[i].uid);
|
||||
// 发送邮件
|
||||
EmailFun.addEmail({
|
||||
uid: logs[i].uid,
|
||||
type: "system",
|
||||
title: con.title,
|
||||
content: con.content,
|
||||
contentInsertArr: [],
|
||||
createTime: G.time,
|
||||
prize:con.prize,
|
||||
})
|
||||
}
|
||||
})()
|
||||
await this.record();
|
||||
}
|
||||
}
|
||||
|
@ -34,7 +34,7 @@ export class WatchDog extends Scheduler {
|
||||
//获取今天0点之后在线的玩家
|
||||
let users = await G.mongodb.collection("user").find({
|
||||
lv: {$gt: 10},
|
||||
newonlinetime: {$gte: G.time - 3600, $lte: G.time + 30}
|
||||
newonlinetime: {$gte: G.time - 1800, $lte: G.time + 30}
|
||||
}, {
|
||||
projection: {
|
||||
uid: 1,
|
||||
|
@ -299,7 +299,7 @@ export class SchedulerWzryZuanshiSendPrize extends SchedulerWzryAutoBaoMing {
|
||||
await this.record()
|
||||
return
|
||||
}
|
||||
let _prizeCon = this.typeprzie=='zhuanshi'?G.gc.wangzherongyao.wangzhe.jiangli.zuanshi:G.gc.wangzherongyao.wangzhe.jiangli.wangzhe;
|
||||
let _prizeCon = this.typeprzie=='zuanshi'?G.gc.wangzherongyao.wangzhe.jiangli.zuanshi:G.gc.wangzherongyao.wangzhe.jiangli.wangzhe;
|
||||
let _u = []
|
||||
for (let index = 0; index < _user.length; index++) {
|
||||
const element = _user[index];
|
||||
|
@ -1,5 +1,5 @@
|
||||
import {PublicShared} from '../../shared/public/public';
|
||||
import {Scheduler, schedulerType} from './scheduler';
|
||||
import { PublicShared } from '../../shared/public/public';
|
||||
import { Scheduler, schedulerType } from './scheduler';
|
||||
|
||||
|
||||
export class SchedulerZhanLing extends Scheduler {
|
||||
@ -12,12 +12,12 @@ export class SchedulerZhanLing extends Scheduler {
|
||||
this.isReady = false;
|
||||
return
|
||||
}
|
||||
let data = await this.db.findOne({type: this.id});
|
||||
let data = await this.db.findOne({ type: this.id });
|
||||
if (!data) {
|
||||
// 开服时间整除战令周期
|
||||
let round = Math.floor(PublicShared.getOpenServerDay() / G.gc.zhanling.eventOpen.day)
|
||||
let round = Math.floor((PublicShared.getOpenServerDay() - 1) / G.gc.zhanling.eventOpen.day)
|
||||
let prev_run_time = PublicShared.getToDayZeroTime(G.openTime) + round * G.gc.zhanling.eventOpen.day * 86400
|
||||
this.db.updateOne({type: this.id}, {$set: {lastRunTime: prev_run_time, round: round}}, {upsert: true});
|
||||
this.db.updateOne({ type: this.id }, { $set: { lastRunTime: prev_run_time, round: round } }, { upsert: true });
|
||||
}
|
||||
|
||||
if (!data || G.time > PublicShared.getToDayZeroTime(data.lastRunTime) + 24 * 3600 * G.gc.zhanling.eventOpen.day) {
|
||||
@ -33,11 +33,11 @@ export class SchedulerZhanLing extends Scheduler {
|
||||
// 开服时间整除战令周期
|
||||
let round = Math.floor(PublicShared.getOpenServerDay() / G.gc.zhanling.eventOpen.day)
|
||||
// lastRunTime仅储存最大值,问题记录: 本地多人启动服务时,有调用此定时器的情况下,时间会混乱。
|
||||
await this.db.updateOne({type: this.id}, {$set: {round: round}, $max: {lastRunTime: G.time}}, {upsert: true});
|
||||
await this.db.updateOne({ type: this.id }, { $set: { round: round }, $max: { lastRunTime: G.time } }, { upsert: true });
|
||||
|
||||
this.startTime = PublicShared.getToDayZeroTime() + 24 * 3600 * G.gc.zhanling.eventOpen.day;
|
||||
this.isStart = false;
|
||||
|
||||
G.mongodb.collection('zhanling').updateMany({type: 'round'}, {$set: {data: {}}});
|
||||
G.mongodb.collection('zhanling').updateMany({ type: 'round' }, { $set: { data: {} } });
|
||||
}
|
||||
}
|
@ -1,16 +1,31 @@
|
||||
import {ApiCall} from 'tsrpc';
|
||||
import {ResOpen} from '../shared/protocols/tanxian/PtlOpen';
|
||||
import {TeQuanFun} from './tequan';
|
||||
import {addGameLog} from "../gameLog";
|
||||
|
||||
type dataChange = Partial<ResOpen>;
|
||||
|
||||
export class TanXianFun {
|
||||
/**修改探险数据 */
|
||||
/**
|
||||
* 修改探险数据
|
||||
* 此改动是为了不影响旧的数据结构
|
||||
* 下面changeDataNew和此方法一样
|
||||
*/
|
||||
static async changeData(call: ApiCall, change: dataChange) {
|
||||
G.mongodb.collection('tanxian').updateOne({uid: call.uid}, {$set: {...change}});
|
||||
let data = await this.getData(call);
|
||||
Object.assign(data, change);
|
||||
G.ioredis.setex(`tanxian:${call.uid}`, 600, JSON.stringify(data));
|
||||
let {_id, uid, ...data} = (await G.mongodb.collection('tanxian').findOneAndUpdate({uid: call.uid}, {$set: {...change}}, {returnDocument: 'after'})).value;
|
||||
G.ioredis.setex(`tanxian:${uid}`, 600, JSON.stringify(data));
|
||||
}
|
||||
|
||||
/**
|
||||
* 此方法是为了不影响旧的数据结构
|
||||
* 用inc去叠加用户限制的次数
|
||||
* @param call
|
||||
* @param change
|
||||
*/
|
||||
static async changeDataNew(call: ApiCall, change) {
|
||||
let {_id, uid, ...data} = (await G.mongodb.collection('tanxian').findOneAndUpdate({uid: call.uid}, change, {returnDocument: 'after'})).value;
|
||||
G.ioredis.setex(`tanxian:${uid}`, 600, JSON.stringify(data));
|
||||
addGameLog(call.uid, "_fastguajiChange", {}, data)
|
||||
}
|
||||
|
||||
/**获取探险数据 */
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user