皮肤系统
This commit is contained in:
xichaoyin 2024-01-04 17:42:14 +08:00
parent 20f0f41c22
commit 83485d0fd0
28 changed files with 9464 additions and 719 deletions

View File

@ -0,0 +1,20 @@
import { ApiCall } from "tsrpc";
import { ReqTakeOff, ResTakeOff } from "../../shared/protocols/heroskin/PtlTakeOff";
import { HeroFun } from "../../public/hero";
export default async function (call: ApiCall<ReqTakeOff, ResTakeOff>) {
let hero = await HeroFun.getHero(call, call.req.heroOid);
if (!hero) { // 英雄不存在
call.error(lng.hero_1);
return;
}
if (!hero.skin) { // 没有穿戴皮肤
call.error(lng.hero_22);
return;
}
HeroFun.changeHeroAttr(call, hero, { skin: "" });
call.succ({});
}

View File

@ -0,0 +1,36 @@
import { ApiCall } from "tsrpc";
import HeroSkinFun from "../../public/heroskin";
import { PlayerFun } from "../../public/player";
import { ReqUplv, ResUplv } from "../../shared/protocols/heroskin/PtlUplv";
export default async function (call: ApiCall<ReqUplv, ResUplv>) {
let skin = HeroSkinFun.getHeroSkin(call);
if (!skin[call.req.skid]) {// 皮肤未获得
call.error(lng.hero_20);
}
let cur_lv = skin[call.req.skid];
let skinconf = G.gc.heroSkin[skin.skid];
let need = [];
for (let i = 0; i < call.req.lv; i++) {
need.concat(
G.gc.heroSkinLv[skinconf.colour][cur_lv + i].need
)
}
// 检测消耗
await PlayerFun.checkNeedIsMeet(call, need);
// 扣除消耗
await PlayerFun.cutNeed(call, need);
// 更新等级
skin[call.req.skid] = cur_lv + call.req.lv;
// 更新skinlv
HeroSkinFun.updateHeroSkinLv(call, { [call.req.skid]: cur_lv + call.req.lv });
call.succ({});
}

View File

@ -0,0 +1,28 @@
import { ApiCall } from "tsrpc";
import { HeroFun } from "../../public/hero";
import HeroSkinFun from "../../public/heroskin";
import { ReqWear, ResWear } from "../../shared/protocols/heroskin/PtlWear";
export default async function (call: ApiCall<ReqWear, ResWear>) {
let hero = await HeroFun.getHero(call, call.req.heroOid);
if (!hero) { // 英雄不存在
call.error(lng.hero_1);
return;
}
let skin = HeroSkinFun.getHeroSkin(call);
if (!skin || !skin[call.req.skid]) { // 皮肤不存在
call.error(lng.hero_20);
return;
}
let skinconf = G.gc.heroSkin[skin.skid];
if (skinconf.heroid != hero.heroId) { // 皮肤不属于该英雄
call.error(lng.hero_21);
return;
}
HeroFun.changeHeroAttr(call, hero, { skin: call.req.skid });
call.succ({});
}

View File

@ -1316,6 +1316,20 @@ export const serviceProto: ServiceProto<ServiceType> = {
} }
}, },
"optional": true "optional": true
},
{
"id": 38,
"name": "heroskin",
"type": {
"type": "Interface",
"indexSignature": {
"keyType": "String",
"type": {
"type": "Number"
}
}
},
"optional": true
} }
] ]
}, },
@ -1707,6 +1721,13 @@ export const serviceProto: ServiceProto<ServiceType> = {
} }
} }
} }
},
{
"id": 8,
"name": "skin",
"type": {
"type": "String"
}
} }
] ]
}, },

View File

@ -2,7 +2,7 @@
"jinbi": { "jinbi": {
"id": "jinbi", "id": "jinbi",
"name": "intr_attr_name_1", "name": "intr_attr_name_1",
"undefined": "美金", "undefined": "通用货币,能购买大多数商品",
"colour": 3, "colour": 3,
"icon": "icon_jinbi", "icon": "icon_jinbi",
"sicon": "icon_jinbi", "sicon": "icon_jinbi",
@ -12,7 +12,7 @@
"rmbmoney": { "rmbmoney": {
"id": "rmbmoney", "id": "rmbmoney",
"name": "intr_attr_name_2", "name": "intr_attr_name_2",
"undefined": "钻石", "undefined": "稀有货币,没有人可以抗拒它",
"colour": 5, "colour": 5,
"icon": "icon_zuanshi", "icon": "icon_zuanshi",
"sicon": "icon_zuanshi", "sicon": "icon_zuanshi",
@ -22,7 +22,7 @@
"nexp": { "nexp": {
"id": "nexp", "id": "nexp",
"name": "intr_attr_name_3", "name": "intr_attr_name_3",
"undefined": "主角经验", "undefined": "用于提升主角等级",
"colour": 4, "colour": 4,
"icon": "icon_zjjy", "icon": "icon_zjjy",
"sicon": "icon_zjjy", "sicon": "icon_zjjy",
@ -32,7 +32,7 @@
"rongyu": { "rongyu": {
"id": "rongyu", "id": "rongyu",
"name": "intr_attr_name_4", "name": "intr_attr_name_4",
"undefined": "荣誉勋章", "undefined": "荣誉的象征,可以在荣誉商店兑换道具",
"colour": 4, "colour": 4,
"icon": "icon_rongyu", "icon": "icon_rongyu",
"sicon": "icon_rongyu", "sicon": "icon_rongyu",
@ -42,7 +42,7 @@
"payExp": { "payExp": {
"id": "payExp", "id": "payExp",
"name": "intr_attr_name_5", "name": "intr_attr_name_5",
"undefined": "VIP经验", "undefined": "稀有货币,没有人可以抗拒它",
"colour": 5, "colour": 5,
"icon": "icon_gzjy", "icon": "icon_gzjy",
"sicon": "icon_gzjy", "sicon": "icon_gzjy",
@ -52,7 +52,7 @@
"guijinshu": { "guijinshu": {
"id": "guijinshu", "id": "guijinshu",
"name": "intr_attr_name_6", "name": "intr_attr_name_6",
"undefined": "贵金属", "undefined": "通过精炼饰品获得的稀有贵金属,可以在饰品商店兑换饰品",
"colour": 3, "colour": 3,
"icon": "icon_xyjsh", "icon": "icon_xyjsh",
"sicon": "icon_xyjsh", "sicon": "icon_xyjsh",
@ -62,7 +62,7 @@
"shilifrd": { "shilifrd": {
"id": "shilifrd", "id": "shilifrd",
"name": "intr_attr_name_11", "name": "intr_attr_name_11",
"undefined": "势力繁荣度", "undefined": "势力繁荣度越高,势力等级越高",
"colour": 4, "colour": 4,
"icon": "icon_slfrd", "icon": "icon_slfrd",
"sicon": "icon_slfrd", "sicon": "icon_slfrd",
@ -72,7 +72,7 @@
"clsl_sd": { "clsl_sd": {
"id": "clsl_sd", "id": "clsl_sd",
"name": "intr_attr_name_12", "name": "intr_attr_name_12",
"undefined": "丛林狩猎胜点", "undefined": "丛林狩猎的段位胜点,胜点数量足够后可进阶",
"colour": 5, "colour": 5,
"icon": "icon_clsl_xx", "icon": "icon_clsl_xx",
"sicon": "icon_clsl_xx", "sicon": "icon_clsl_xx",
@ -82,7 +82,7 @@
"nahanzhuwei": { "nahanzhuwei": {
"id": "nahanzhuwei", "id": "nahanzhuwei",
"name": "tlsd_guess_name_1", "name": "tlsd_guess_name_1",
"undefined": "呐喊助威", "undefined": "参与竞猜后获得莱微碎片*1和美金*500000",
"colour": 5, "colour": 5,
"icon": "icon_heroBox_11", "icon": "icon_heroBox_11",
"sicon": "icon_heroBox_11", "sicon": "icon_heroBox_11",
@ -92,7 +92,7 @@
"aidebaobao": { "aidebaobao": {
"id": "aidebaobao", "id": "aidebaobao",
"name": "tlsd_guess_name_2", "name": "tlsd_guess_name_2",
"undefined": "爱的抱抱", "undefined": "参与竞猜后获得莱微碎片*1,配件蓝图*1和美金*800000",
"colour": 5, "colour": 5,
"icon": "icon_heroBox_11", "icon": "icon_heroBox_11",
"sicon": "icon_heroBox_11", "sicon": "icon_heroBox_11",
@ -102,7 +102,7 @@
"woweishenkuang": { "woweishenkuang": {
"id": "woweishenkuang", "id": "woweishenkuang",
"name": "tlsd_guess_name_3", "name": "tlsd_guess_name_3",
"undefined": "我为神狂", "undefined": "参与竞猜后获得莱微碎片*1,配件蓝图*3和美金*1000000",
"colour": 5, "colour": 5,
"icon": "icon_heroBox_11", "icon": "icon_heroBox_11",
"sicon": "icon_heroBox_11", "sicon": "icon_heroBox_11",
@ -112,7 +112,7 @@
"shengdanExp": { "shengdanExp": {
"id": "shengdanExp", "id": "shengdanExp",
"name": "intr_attr_name_13", "name": "intr_attr_name_13",
"undefined": "圣诞战令经验", "undefined": "一年一度的圣诞庆典获得的圣诞欢乐值,可以提升庆典圣诞树奖励进度",
"colour": 5, "colour": 5,
"icon": "icon_sdhd_item_1", "icon": "icon_sdhd_item_1",
"sicon": "icon_sdhd_item_1", "sicon": "icon_sdhd_item_1",
@ -122,7 +122,7 @@
"shengdanBullet": { "shengdanBullet": {
"id": "shengdanBullet", "id": "shengdanBullet",
"name": "intr_attr_name_14", "name": "intr_attr_name_14",
"undefined": "圣诞打靶币", "undefined": "圣诞活动获得的庆典喷漆,可以在“百发百中”兑换射击次数",
"colour": 5, "colour": 5,
"icon": "icon_chegaipq", "icon": "icon_chegaipq",
"sicon": "icon_chegaipq", "sicon": "icon_chegaipq",
@ -132,7 +132,7 @@
"jingxuanbi": { "jingxuanbi": {
"id": "jingxuanbi", "id": "jingxuanbi",
"name": "intr_attr_name_15", "name": "intr_attr_name_15",
"undefined": "每日精选兑换币", "undefined": "只能在黑市使用的票券,可以在黑市里的每日精选兑换商店购买稀有道具",
"colour": 4, "colour": 4,
"icon": "icon_hspj", "icon": "icon_hspj",
"sicon": "icon_hspj", "sicon": "icon_hspj",
@ -142,7 +142,7 @@
"weiwang": { "weiwang": {
"id": "weiwang", "id": "weiwang",
"name": "intr_attr_name_16", "name": "intr_attr_name_16",
"undefined": "影响力", "undefined": "影响力提升了周围同伴的信任,可以在影响力系统中提升属性值",
"colour": 4, "colour": 4,
"icon": "icon_weiwang", "icon": "icon_weiwang",
"sicon": "icon_weiwang", "sicon": "icon_weiwang",
@ -152,11 +152,31 @@
"yuandanyouxi": { "yuandanyouxi": {
"id": "yuandanyouxi", "id": "yuandanyouxi",
"name": "intr_attr_name_17", "name": "intr_attr_name_17",
"undefined": "元旦游戏币", "undefined": "在新年活动中获得的庆典币,可以在机遇礼盒兑换游玩次数",
"colour": 5, "colour": 5,
"icon": "icon_xnjb", "icon": "icon_xnjb",
"sicon": "icon_xnjb", "sicon": "icon_xnjb",
"describe": "intr_attr_describe_17", "describe": "intr_attr_describe_17",
"advancedEffects": "ani_xiangzikuang" "advancedEffects": "ani_xiangzikuang"
},
"huangqijinbi": {
"id": "huangqijinbi",
"name": "intr_attr_name_18",
"undefined": "在黄旗酒馆活动中获得的庆典币,可以在黄旗招募中兑换招募次数",
"colour": 5,
"icon": "icon_hqjb",
"sicon": "icon_hqjb",
"describe": "intr_attr_describe_18",
"advancedEffects": "ani_xiangzikuang"
},
"huangqiduihuan": {
"id": "huangqiduihuan",
"name": "intr_attr_name_19",
"undefined": "在黄旗酒馆活动中获得的兑换票券,可以在神秘兑换中购买商品",
"colour": 5,
"icon": "icon_hqdhq",
"sicon": "icon_hqdhq",
"describe": "intr_attr_describe_19",
"advancedEffects": "ani_xiangzikuang"
} }
} }

View File

@ -1,11 +1,18 @@
{ {
//赛区划分按照周三23:50的时候王者玩家100个一组 //赛区划分
//赛区划分时间周三23:50 divide: [
divideTime: 258600, { day: [1, 30], group: 0 },
//挑战时间周一08:00——周六22:00 { day: [31, 60], group: 1 },
{ day: [61, 120], group: 2 },
{ day: [121, 210], group: 3 },
{ day: [211, 99999999], group: 4 },
],
//赛区划分时间
divideTime: 0,
//挑战时间
fightTime: [28800, 511200], fightTime: [28800, 511200],
//发奖时间周六22:05 //发奖时间
prizeTime: 511500, prizeTime: 598200,
//胜场奖励 //胜场奖励
fightWinPrize: [ fightWinPrize: [
{ total: 5, prize: [{ a: 'attr', t: 'clsl_sd', n: 1 },{ a: 'item', t: '37', n: 1 }], star: 1 }, { total: 5, prize: [{ a: 'attr', t: 'clsl_sd', n: 1 },{ a: 'item', t: '37', n: 1 }], star: 1 },
@ -32,13 +39,13 @@
], ],
//段位奖励 //段位奖励
danPrize: [ danPrize: [
{ 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: 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, title: "clsl_6", prize: [{ a: 'item', t: '605', n:2 },{ a: 'item', t: '29', n:5 },{ a: 'item', t: '631', n:2 }] }, { star: 39, 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: 29, 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: 21, 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: 13, 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: 7, 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 }] } { star: 0, prize: [{ a: 'item', t: '29', n:5 },{ a: 'item', t: '29', n:5 },{ a: 'item', t: '39', n:400 }] }
], ],
//王者排名邮件信息 //王者排名邮件信息
email_rank: { email_rank: {

View File

@ -2774,7 +2774,7 @@
"id": 4003, "id": 4003,
"a": "item", "a": "item",
"t": 28, "t": 28,
"n": 1, "n": 100,
"p": 6 "p": 6
}, },
{ {
@ -4505,82 +4505,12 @@
} }
], ],
"10021": [ "10021": [
{
"id": 10021,
"a": "hero",
"t": 4001,
"n": 1,
"p": 20
},
{
"id": 10021,
"a": "hero",
"t": 4002,
"n": 1,
"p": 20
},
{
"id": 10021,
"a": "hero",
"t": 4003,
"n": 1,
"p": 20
},
{
"id": 10021,
"a": "hero",
"t": 4004,
"n": 1,
"p": 20
},
{
"id": 10021,
"a": "hero",
"t": 4005,
"n": 1,
"p": 20
},
{
"id": 10021,
"a": "hero",
"t": 4007,
"n": 1,
"p": 20
},
{
"id": 10021,
"a": "hero",
"t": 4009,
"n": 1,
"p": 20
},
{
"id": 10021,
"a": "hero",
"t": 4011,
"n": 1,
"p": 20
},
{ {
"id": 10021, "id": 10021,
"a": "hero", "a": "hero",
"t": 4012, "t": 4012,
"n": 1, "n": 1,
"p": 20 "p": 20
},
{
"id": 10021,
"a": "hero",
"t": 4014,
"n": 1,
"p": 20
},
{
"id": 10021,
"a": "hero",
"t": 4015,
"n": 1,
"p": 20
} }
], ],
"20001": [ "20001": [

File diff suppressed because it is too large Load Diff

View File

@ -915,6 +915,37 @@
"front": {}, "front": {},
"currency": "CNY" "currency": "CNY"
}, },
"lv10": {
"id": "lv10",
"money": 0.5,
"payExp": [
{
"a": "attr",
"t": "payExp",
"n": 5
}
],
"prize": [
{
"a": "attr",
"t": "rmbmoney",
"n": 100
},
{
"a": "hero",
"t": "4012",
"n": 1
}
],
"firstPayPrize": [],
"name": "pay_name_lv10",
"undefined": "等级豪礼等级10",
"time": -1,
"buys": 1,
"needVip": 0,
"front": {},
"currency": "CNY"
},
"lv15": { "lv15": {
"id": "lv15", "id": "lv15",
"money": 0.5, "money": 0.5,
@ -6673,5 +6704,205 @@
"needVip": 0, "needVip": 0,
"front": {}, "front": {},
"currency": "CNY" "currency": "CNY"
},
"hqjg_libao_1": {
"id": "hqjg_libao_1",
"money": 0.5,
"payExp": [
{
"a": "attr",
"t": "payExp",
"n": 5
}
],
"prize": [],
"firstPayPrize": [],
"name": "pay_name_hqjg_libao_1",
"undefined": "黄旗酒馆_1",
"time": -1,
"buys": 0,
"needVip": 0,
"front": {},
"currency": "CNY"
},
"hqjg_libao_2": {
"id": "hqjg_libao_2",
"money": 1,
"payExp": [
{
"a": "attr",
"t": "payExp",
"n": 10
}
],
"prize": [],
"firstPayPrize": [],
"name": "pay_name_hqjg_libao_2",
"undefined": "黄旗酒馆_2",
"time": -1,
"buys": 0,
"needVip": 0,
"front": {},
"currency": "CNY"
},
"hqjg_libao_3": {
"id": "hqjg_libao_3",
"money": 6,
"payExp": [
{
"a": "attr",
"t": "payExp",
"n": 60
}
],
"prize": [],
"firstPayPrize": [],
"name": "pay_name_hqjg_libao_3",
"undefined": "黄旗酒馆_3",
"time": -1,
"buys": 0,
"needVip": 0,
"front": {},
"currency": "CNY"
},
"hqjg_libao_4": {
"id": "hqjg_libao_4",
"money": 18,
"payExp": [
{
"a": "attr",
"t": "payExp",
"n": 180
}
],
"prize": [],
"firstPayPrize": [],
"name": "pay_name_hqjg_libao_4",
"undefined": "黄旗酒馆_4",
"time": -1,
"buys": 0,
"needVip": 0,
"front": {},
"currency": "CNY"
},
"hqjg_libao_5": {
"id": "hqjg_libao_5",
"money": 30,
"payExp": [
{
"a": "attr",
"t": "payExp",
"n": 300
}
],
"prize": [],
"firstPayPrize": [],
"name": "pay_name_hqjg_libao_5",
"undefined": "黄旗酒馆_5",
"time": -1,
"buys": 0,
"needVip": 0,
"front": {},
"currency": "CNY"
},
"hqjg_libao_6": {
"id": "hqjg_libao_6",
"money": 68,
"payExp": [
{
"a": "attr",
"t": "payExp",
"n": 680
}
],
"prize": [],
"firstPayPrize": [],
"name": "pay_name_hqjg_libao_6",
"undefined": "黄旗酒馆_6",
"time": -1,
"buys": 0,
"needVip": 0,
"front": {},
"currency": "CNY"
},
"hqjg_libao_7": {
"id": "hqjg_libao_7",
"money": 128,
"payExp": [
{
"a": "attr",
"t": "payExp",
"n": 1280
}
],
"prize": [],
"firstPayPrize": [],
"name": "pay_name_hqjg_libao_7",
"undefined": "黄旗酒馆_7",
"time": -1,
"buys": 0,
"needVip": 0,
"front": {},
"currency": "CNY"
},
"hqjg_libao_8": {
"id": "hqjg_libao_8",
"money": 198,
"payExp": [
{
"a": "attr",
"t": "payExp",
"n": 1980
}
],
"prize": [],
"firstPayPrize": [],
"name": "pay_name_hqjg_libao_8",
"undefined": "黄旗酒馆_8",
"time": -1,
"buys": 0,
"needVip": 0,
"front": {},
"currency": "CNY"
},
"hqjg_libao_9": {
"id": "hqjg_libao_9",
"money": 328,
"payExp": [
{
"a": "attr",
"t": "payExp",
"n": 3280
}
],
"prize": [],
"firstPayPrize": [],
"name": "pay_name_hqjg_libao_9",
"undefined": "黄旗酒馆_9",
"time": -1,
"buys": 0,
"needVip": 0,
"front": {},
"currency": "CNY"
},
"hqjg_libao_10": {
"id": "hqjg_libao_10",
"money": 648,
"payExp": [
{
"a": "attr",
"t": "payExp",
"n": 6480
}
],
"prize": [],
"firstPayPrize": [],
"name": "pay_name_hqjg_libao_10",
"undefined": "黄旗酒馆_10",
"time": -1,
"buys": 0,
"needVip": 0,
"front": {},
"currency": "CNY"
} }
} }

View File

@ -2,12 +2,12 @@
"1": { "1": {
"id": 1, "id": 1,
"name": "playerChatFrame_name_1", "name": "playerChatFrame_name_1",
"undefined": "玩家初始默认聊天框",
"img": "lt_dhk1", "img": "lt_dhk1",
"cond": [ "cond": [
"lv", "lv",
1 1
], ],
"undefined": "进入游戏默认获得",
"intr": "playerChatFrame_des_1", "intr": "playerChatFrame_des_1",
"sort": 1, "sort": 1,
"buff": { "buff": {
@ -19,12 +19,12 @@
"2": { "2": {
"id": 2, "id": 2,
"name": "playerChatFrame_name_2", "name": "playerChatFrame_name_2",
"undefined": "主角等级达到30级获得解锁后防御加成+1%",
"img": "lt_dhk3", "img": "lt_dhk3",
"cond": [ "cond": [
"lv", "lv",
30 30
], ],
"undefined": "角色等级达到30级获得",
"intr": "playerChatFrame_des_2", "intr": "playerChatFrame_des_2",
"sort": 2, "sort": 2,
"buff": { "buff": {
@ -36,12 +36,12 @@
"3": { "3": {
"id": 3, "id": 3,
"name": "playerChatFrame_name_3", "name": "playerChatFrame_name_3",
"undefined": "主角等级达到50级获得解锁后防御加成+1%",
"img": "lt_dhk4", "img": "lt_dhk4",
"cond": [ "cond": [
"lv", "lv",
50 50
], ],
"undefined": "角色等级达到50级获得",
"intr": "playerChatFrame_des_3", "intr": "playerChatFrame_des_3",
"sort": 3, "sort": 3,
"buff": { "buff": {
@ -53,12 +53,12 @@
"4": { "4": {
"id": 4, "id": 4,
"name": "playerChatFrame_name_4", "name": "playerChatFrame_name_4",
"undefined": "图鉴数量达到30个获得解锁后防御加成+1%",
"img": "lt_dhk5", "img": "lt_dhk5",
"cond": [ "cond": [
"tujianLv", "tujianLv",
7 7
], ],
"undefined": "图鉴数量达到30个获得",
"intr": "playerChatFrame_des_4", "intr": "playerChatFrame_des_4",
"sort": 5, "sort": 5,
"buff": { "buff": {
@ -70,12 +70,12 @@
"5": { "5": {
"id": 5, "id": 5,
"name": "playerChatFrame_name_5", "name": "playerChatFrame_name_5",
"undefined": "VIP5获得解锁后攻击加成+1%",
"img": "lt_dhk7", "img": "lt_dhk7",
"cond": [ "cond": [
"vip", "vip",
5 5
], ],
"undefined": "VIP5获得",
"intr": "playerChatFrame_des_5", "intr": "playerChatFrame_des_5",
"sort": 4, "sort": 4,
"buff": { "buff": {
@ -87,12 +87,12 @@
"6": { "6": {
"id": 6, "id": 6,
"name": "playerChatFrame_name_6", "name": "playerChatFrame_name_6",
"undefined": "跨服势力战最高品质据点第一势力成员,解锁后攻击加成+1%、生命加成+1%限时7天",
"img": "lt_dhk11", "img": "lt_dhk11",
"cond": [ "cond": [
"time", "time",
604800 604800
], ],
"undefined": "跨服势力战最高品质据点第一势力成员",
"intr": "playerChatFrame_des_6", "intr": "playerChatFrame_des_6",
"sort": 6, "sort": 6,
"buff": { "buff": {
@ -105,12 +105,12 @@
"7": { "7": {
"id": 7, "id": 7,
"name": "playerChatFrame_name_7", "name": "playerChatFrame_name_7",
"undefined": "名望等级达到七阶获得,解锁后防御加成+1%",
"img": "lt_dhk13", "img": "lt_dhk13",
"cond": [ "cond": [
"renown", "renown",
61 61
], ],
"undefined": "名望等级达到七阶获得",
"intr": "playerChatFrame_des_7", "intr": "playerChatFrame_des_7",
"sort": 7, "sort": 7,
"buff": { "buff": {
@ -122,12 +122,12 @@
"8": { "8": {
"id": 8, "id": 8,
"name": "playerChatFrame_name_8", "name": "playerChatFrame_name_8",
"undefined": "圣诞庆典活动获得,解锁后防御加成+1%",
"img": "lt_dhk14", "img": "lt_dhk14",
"cond": [ "cond": [
"time", "time",
-1 -1
], ],
"undefined": "圣诞庆典获得",
"intr": "playerChatFrame_des_8", "intr": "playerChatFrame_des_8",
"sort": 8, "sort": 8,
"buff": { "buff": {
@ -139,12 +139,12 @@
"9": { "9": {
"id": 9, "id": 9,
"name": "playerChatFrame_name_9", "name": "playerChatFrame_name_9",
"undefined": "新年庆典活动获得,解锁后防御加成+1%",
"img": "lt_dhk15", "img": "lt_dhk15",
"cond": [ "cond": [
"time", "time",
-1 -1
], ],
"undefined": "新年庆典获得",
"intr": "playerChatFrame_des_9", "intr": "playerChatFrame_des_9",
"sort": 9, "sort": 9,
"buff": { "buff": {

View File

@ -3,6 +3,7 @@
"id": 1, "id": 1,
"type": 1, "type": 1,
"name": "playerModel_name_1", "name": "playerModel_name_1",
"undefined": "主角初始默认的男形象",
"head": 10001, "head": 10001,
"img": "zhu_10001", "img": "zhu_10001",
"cond": [ "cond": [
@ -20,6 +21,7 @@
"id": 2, "id": 2,
"type": 1, "type": 1,
"name": "playerModel_name_2", "name": "playerModel_name_2",
"undefined": "主角初始默认的女形象",
"head": 10002, "head": 10002,
"img": "zhu_10002", "img": "zhu_10002",
"cond": [ "cond": [
@ -37,6 +39,7 @@
"id": 3, "id": 3,
"type": 1, "type": 1,
"name": "playerModel_name_3", "name": "playerModel_name_3",
"undefined": "圣诞庆典活动获得,解锁后防御加成+2%",
"head": 100011, "head": 100011,
"img": 100011, "img": 100011,
"cond": [ "cond": [
@ -56,6 +59,7 @@
"id": 4, "id": 4,
"type": 1, "type": 1,
"name": "playerModel_name_4", "name": "playerModel_name_4",
"undefined": "圣诞庆典活动获得,解锁后攻击加成+2%",
"head": 100021, "head": 100021,
"img": 100021, "img": 100021,
"cond": [ "cond": [

View File

@ -3,360 +3,600 @@
"id": 1, "id": 1,
"renownlevel": 1, "renownlevel": 1,
"maxlevel": 250, "maxlevel": 250,
"cost": 5, "cost": [
"atk": 2, {
"a": "attr",
"t": "weiwang",
"n": 2
}
],
"atk": 1.2,
"def": 1, "def": 1,
"hp": 8 "hp": 4
}, },
"2": { "2": {
"id": 2, "id": 2,
"renownlevel": 2, "renownlevel": 2,
"maxlevel": 500, "maxlevel": 750,
"cost": 6, "cost": [
"atk": 2, {
"a": "attr",
"t": "weiwang",
"n": 2
}
],
"atk": 1.2,
"def": 1, "def": 1,
"hp": 9 "hp": 4
}, },
"3": { "3": {
"id": 3, "id": 3,
"renownlevel": 3, "renownlevel": 3,
"maxlevel": 750, "maxlevel": 1500,
"cost": 7, "cost": [
"atk": 2, {
"a": "attr",
"t": "weiwang",
"n": 2
}
],
"atk": 1.2,
"def": 1, "def": 1,
"hp": 10 "hp": 4
}, },
"4": { "4": {
"id": 4, "id": 4,
"renownlevel": 4, "renownlevel": 4,
"maxlevel": 1000, "maxlevel": 2500,
"cost": 9, "cost": [
"atk": 4, {
"def": 2, "a": "attr",
"hp": 11 "t": "weiwang",
"n": 2
}
],
"atk": 1.2,
"def": 1,
"hp": 4
}, },
"5": { "5": {
"id": 5, "id": 5,
"renownlevel": 5, "renownlevel": 5,
"maxlevel": 1250, "maxlevel": 3750,
"cost": 11, "cost": [
"atk": 4, {
"def": 2, "a": "attr",
"hp": 12 "t": "weiwang",
"n": 2
}
],
"atk": 1.2,
"def": 1,
"hp": 4
}, },
"6": { "6": {
"id": 6, "id": 6,
"renownlevel": 6, "renownlevel": 6,
"maxlevel": 1500, "maxlevel": 5250,
"cost": 13, "cost": [
"atk": 4, {
"def": 2, "a": "attr",
"hp": 13 "t": "weiwang",
"n": 2
}
],
"atk": 1.2,
"def": 1,
"hp": 4
}, },
"7": { "7": {
"id": 7, "id": 7,
"renownlevel": 7, "renownlevel": 7,
"maxlevel": 1750, "maxlevel": 7000,
"cost": 15, "cost": [
"atk": 6, {
"def": 3, "a": "attr",
"hp": 14 "t": "weiwang",
"n": 2
}
],
"atk": 1.2,
"def": 1,
"hp": 4
}, },
"8": { "8": {
"id": 8, "id": 8,
"renownlevel": 8, "renownlevel": 8,
"maxlevel": 2000, "maxlevel": 9000,
"cost": 17, "cost": [
"atk": 6, {
"def": 3, "a": "attr",
"hp": 15 "t": "weiwang",
"n": 2
}
],
"atk": 1.2,
"def": 1,
"hp": 4
}, },
"9": { "9": {
"id": 9, "id": 9,
"renownlevel": 9, "renownlevel": 9,
"maxlevel": 2500, "maxlevel": 11500,
"cost": 19, "cost": [
"atk": 6, {
"def": 3, "a": "attr",
"hp": 16 "t": "weiwang",
"n": 2
}
],
"atk": 1.2,
"def": 1,
"hp": 4
}, },
"10": { "10": {
"id": 10, "id": 10,
"renownlevel": 10, "renownlevel": 10,
"maxlevel": 3000, "maxlevel": 14500,
"cost": 21, "cost": [
"atk": 8, {
"def": 4, "a": "attr",
"hp": 17 "t": "weiwang",
"n": 2
}
],
"atk": 1.2,
"def": 1,
"hp": 4
}, },
"11": { "11": {
"id": 11, "id": 11,
"renownlevel": 11, "renownlevel": 11,
"maxlevel": 3500, "maxlevel": 18000,
"cost": 23, "cost": [
"atk": 8, {
"def": 4, "a": "attr",
"hp": 18 "t": "weiwang",
"n": 2
}
],
"atk": 1.2,
"def": 1,
"hp": 5
}, },
"12": { "12": {
"id": 12, "id": 12,
"renownlevel": 12, "renownlevel": 12,
"maxlevel": 4000, "maxlevel": 22000,
"cost": 25, "cost": [
"atk": 8, {
"def": 4, "a": "attr",
"hp": 19 "t": "weiwang",
"n": 2
}
],
"atk": 1.2,
"def": 1,
"hp": 5
}, },
"13": { "13": {
"id": 13, "id": 13,
"renownlevel": 13, "renownlevel": 13,
"maxlevel": 4500, "maxlevel": 26500,
"cost": 27, "cost": [
"atk": 10, {
"def": 5, "a": "attr",
"hp": 20 "t": "weiwang",
"n": 2
}
],
"atk": 1.2,
"def": 1,
"hp": 5
}, },
"14": { "14": {
"id": 14, "id": 14,
"renownlevel": 14, "renownlevel": 14,
"maxlevel": 5000, "maxlevel": 31500,
"cost": 30, "cost": [
"atk": 10, {
"def": 5, "a": "attr",
"hp": 21 "t": "weiwang",
"n": 2
}
],
"atk": 1.2,
"def": 1,
"hp": 5
}, },
"15": { "15": {
"id": 15, "id": 15,
"renownlevel": 15, "renownlevel": 15,
"maxlevel": 5000, "maxlevel": 36500,
"cost": 33, "cost": [
"atk": 10, {
"def": 5, "a": "attr",
"hp": 21 "t": "weiwang",
"n": 2
}
],
"atk": 1.2,
"def": 1,
"hp": 5
}, },
"16": { "16": {
"id": 16, "id": 16,
"renownlevel": 16, "renownlevel": 16,
"maxlevel": 5000, "maxlevel": 41500,
"cost": 36, "cost": [
"atk": 12, {
"def": 6, "a": "attr",
"hp": 22 "t": "weiwang",
"n": 5
}
],
"atk": 1.4,
"def": 1.2,
"hp": 6
}, },
"17": { "17": {
"id": 17, "id": 17,
"renownlevel": 17, "renownlevel": 17,
"maxlevel": 5000, "maxlevel": 46500,
"cost": 39, "cost": [
"atk": 12, {
"def": 6, "a": "attr",
"hp": 22 "t": "weiwang",
"n": 9
}
],
"atk": 1.4,
"def": 1.2,
"hp": 6
}, },
"18": { "18": {
"id": 18, "id": 18,
"renownlevel": 18, "renownlevel": 18,
"maxlevel": 5000, "maxlevel": 51500,
"cost": 42, "cost": [
"atk": 12, {
"def": 6, "a": "attr",
"hp": 22 "t": "weiwang",
"n": 13
}
],
"atk": 1.4,
"def": 1.2,
"hp": 6
}, },
"19": { "19": {
"id": 19, "id": 19,
"renownlevel": 19, "renownlevel": 19,
"maxlevel": 5000, "maxlevel": 56500,
"cost": 45, "cost": [
"atk": 14, {
"def": 7, "a": "attr",
"hp": 23 "t": "weiwang",
"n": 17
}
],
"atk": 1.4,
"def": 1.2,
"hp": 6
}, },
"20": { "20": {
"id": 20, "id": 20,
"renownlevel": 20, "renownlevel": 20,
"maxlevel": 5000, "maxlevel": 61500,
"cost": 48, "cost": [
"atk": 14, {
"def": 7, "a": "attr",
"hp": 23 "t": "weiwang",
"n": 21
}
],
"atk": 1.4,
"def": 1.2,
"hp": 6
}, },
"21": { "21": {
"id": 21, "id": 21,
"renownlevel": 21, "renownlevel": 21,
"maxlevel": 5000, "maxlevel": 66500,
"cost": 51, "cost": [
"atk": 14, {
"def": 7, "a": "attr",
"hp": 23 "t": "weiwang",
"n": 23
}
],
"atk": 1.4,
"def": 1.2,
"hp": 7
}, },
"22": { "22": {
"id": 22, "id": 22,
"renownlevel": 22, "renownlevel": 22,
"maxlevel": 5000, "maxlevel": 71500,
"cost": 54, "cost": [
"atk": 14, {
"def": 7, "a": "attr",
"hp": 23 "t": "weiwang",
"n": 25
}
],
"atk": 1.4,
"def": 1.2,
"hp": 7
}, },
"23": { "23": {
"id": 23, "id": 23,
"renownlevel": 23, "renownlevel": 23,
"maxlevel": 5000, "maxlevel": 76500,
"cost": 57, "cost": [
"atk": 16, {
"def": 8, "a": "attr",
"hp": 24 "t": "weiwang",
"n": 27
}
],
"atk": 1.4,
"def": 1.2,
"hp": 7
}, },
"24": { "24": {
"id": 24, "id": 24,
"renownlevel": 24, "renownlevel": 24,
"maxlevel": 5000, "maxlevel": 81500,
"cost": 60, "cost": [
"atk": 16, {
"def": 8, "a": "attr",
"hp": 24 "t": "weiwang",
"n": 29
}
],
"atk": 1.4,
"def": 1.2,
"hp": 7
}, },
"25": { "25": {
"id": 25, "id": 25,
"renownlevel": 25, "renownlevel": 25,
"maxlevel": 5000, "maxlevel": 86500,
"cost": 63, "cost": [
"atk": 16, {
"def": 8, "a": "attr",
"hp": 24 "t": "weiwang",
"n": 30
}
],
"atk": 1.4,
"def": 1.2,
"hp": 7
}, },
"26": { "26": {
"id": 26, "id": 26,
"renownlevel": 26, "renownlevel": 26,
"maxlevel": 5000, "maxlevel": 91500,
"cost": 66, "cost": [
"atk": 16, {
"def": 8, "a": "attr",
"hp": 24 "t": "weiwang",
"n": 32
}
],
"atk": 1.4,
"def": 1.2,
"hp": 8
}, },
"27": { "27": {
"id": 27, "id": 27,
"renownlevel": 27, "renownlevel": 27,
"maxlevel": 5000, "maxlevel": 96500,
"cost": 69, "cost": [
"atk": 16, {
"def": 8, "a": "attr",
"hp": 24 "t": "weiwang",
"n": 34
}
],
"atk": 1.4,
"def": 1.2,
"hp": 8
}, },
"28": { "28": {
"id": 28, "id": 28,
"renownlevel": 28, "renownlevel": 28,
"maxlevel": 5000, "maxlevel": 101500,
"cost": 72, "cost": [
"atk": 18, {
"def": 9, "a": "attr",
"hp": 25 "t": "weiwang",
"n": 36
}
],
"atk": 1.4,
"def": 1.2,
"hp": 8
}, },
"29": { "29": {
"id": 29, "id": 29,
"renownlevel": 29, "renownlevel": 29,
"maxlevel": 5000, "maxlevel": 106500,
"cost": 75, "cost": [
"atk": 18, {
"def": 9, "a": "attr",
"hp": 25 "t": "weiwang",
"n": 38
}
],
"atk": 1.4,
"def": 1.2,
"hp": 8
}, },
"30": { "30": {
"id": 30, "id": 30,
"renownlevel": 30, "renownlevel": 30,
"maxlevel": 5000, "maxlevel": 111500,
"cost": 78, "cost": [
"atk": 18, {
"def": 9, "a": "attr",
"hp": 25 "t": "weiwang",
"n": 40
}
],
"atk": 1.4,
"def": 1.2,
"hp": 8
}, },
"31": { "31": {
"id": 31, "id": 31,
"renownlevel": 31, "renownlevel": 31,
"maxlevel": 5000, "maxlevel": 116500,
"cost": 81, "cost": [
"atk": 18, {
"def": 9, "a": "attr",
"hp": 25 "t": "weiwang",
"n": 42
}
],
"atk": 1.4,
"def": 1.2,
"hp": 8
}, },
"32": { "32": {
"id": 32, "id": 32,
"renownlevel": 32, "renownlevel": 32,
"maxlevel": 5000, "maxlevel": 121500,
"cost": 84, "cost": [
"atk": 18, {
"def": 9, "a": "attr",
"hp": 25 "t": "weiwang",
"n": 44
}
],
"atk": 1.4,
"def": 1.2,
"hp": 8
}, },
"33": { "33": {
"id": 33, "id": 33,
"renownlevel": 33, "renownlevel": 33,
"maxlevel": 5000, "maxlevel": 126500,
"cost": 87, "cost": [
"atk": 18, {
"def": 10, "a": "attr",
"hp": 25 "t": "weiwang",
"n": 46
}
],
"atk": 1.4,
"def": 1.2,
"hp": 8
}, },
"34": { "34": {
"id": 34, "id": 34,
"renownlevel": 34, "renownlevel": 34,
"maxlevel": 5000, "maxlevel": 131500,
"cost": 90, "cost": [
"atk": 18, {
"def": 10, "a": "attr",
"hp": 25 "t": "weiwang",
"n": 48
}
],
"atk": 1.4,
"def": 1.2,
"hp": 8
}, },
"35": { "35": {
"id": 35, "id": 35,
"renownlevel": 35, "renownlevel": 35,
"maxlevel": 5000, "maxlevel": 136500,
"cost": 93, "cost": [
"atk": 18, {
"def": 10, "a": "attr",
"hp": 25 "t": "weiwang",
"n": 50
}
],
"atk": 1.4,
"def": 1.2,
"hp": 8
}, },
"36": { "36": {
"id": 36, "id": 36,
"renownlevel": 36, "renownlevel": 36,
"maxlevel": 5000, "maxlevel": 141500,
"cost": 97, "cost": [
"atk": 18, {
"def": 10, "a": "attr",
"hp": 25 "t": "weiwang",
"n": 52
}
],
"atk": 1.4,
"def": 1.2,
"hp": 8
}, },
"37": { "37": {
"id": 37, "id": 37,
"renownlevel": 37, "renownlevel": 37,
"maxlevel": 5000, "maxlevel": 146500,
"cost": 101, "cost": [
"atk": 18, {
"def": 10, "a": "attr",
"hp": 25 "t": "weiwang",
"n": 54
}
],
"atk": 1.4,
"def": 1.2,
"hp": 8
}, },
"38": { "38": {
"id": 38, "id": 38,
"renownlevel": 38, "renownlevel": 38,
"maxlevel": 5000, "maxlevel": 151500,
"cost": 105, "cost": [
"atk": 18, {
"def": 10, "a": "attr",
"hp": 25 "t": "weiwang",
"n": 56
}
],
"atk": 1.4,
"def": 1.2,
"hp": 8
}, },
"39": { "39": {
"id": 39, "id": 39,
"renownlevel": 39, "renownlevel": 39,
"maxlevel": 5000, "maxlevel": 156500,
"cost": 109, "cost": [
"atk": 18, {
"def": 10, "a": "attr",
"hp": 25 "t": "weiwang",
"n": 58
}
],
"atk": 1.4,
"def": 1.2,
"hp": 8
}, },
"40": { "40": {
"id": 40, "id": 40,
"renownlevel": 40, "renownlevel": 40,
"maxlevel": 5000, "maxlevel": 161500,
"cost": 113, "cost": [
"atk": 18, {
"def": 10, "a": "attr",
"hp": 25 "t": "weiwang",
"n": 60
}
],
"atk": 1.4,
"def": 1.2,
"hp": 8
} }
} }

File diff suppressed because it is too large Load Diff

View File

@ -388,10 +388,10 @@
"type": 5, "type": 5,
"typeName": "tuisonglibao_name_1", "typeName": "tuisonglibao_name_1",
"num": [ "num": [
15 10
], ],
"payId": [ "payId": [
"lv15" "lv10"
], ],
"time": 10800, "time": 10800,
"displayCD": 10800, "displayCD": 10800,

View File

@ -14,9 +14,10 @@
"n": 10000 "n": 10000
} }
], ],
"p": 3, "p": 5,
"intr": "intr_xuanshangrenwu_intr_1", "intr": "intr_xuanshangrenwu_intr_1",
"img": "icon_jinbi" "img": "icon_jinbi",
"appearNum": 0
}, },
"2": { "2": {
"id": 2, "id": 2,
@ -33,9 +34,10 @@
"n": 80 "n": 80
} }
], ],
"p": 4, "p": 3,
"intr": "intr_xuanshangrenwu_intr_2", "intr": "intr_xuanshangrenwu_intr_2",
"img": "icon_jinbi" "img": "icon_jinbi",
"appearNum": 0
}, },
"3": { "3": {
"id": 3, "id": 3,
@ -54,7 +56,8 @@
], ],
"p": 5, "p": 5,
"intr": "intr_xuanshangrenwu_intr_3", "intr": "intr_xuanshangrenwu_intr_3",
"img": "icon_jinbi" "img": "icon_jinbi",
"appearNum": 0
}, },
"4": { "4": {
"id": 4, "id": 4,
@ -71,9 +74,10 @@
"n": 30 "n": 30
} }
], ],
"p": 6, "p": 1,
"intr": "intr_xuanshangrenwu_intr_4", "intr": "intr_xuanshangrenwu_intr_4",
"img": "icon_jinbi" "img": "icon_jinbi",
"appearNum": 3
}, },
"5": { "5": {
"id": 5, "id": 5,
@ -90,9 +94,10 @@
"n": 20000 "n": 20000
} }
], ],
"p": 7, "p": 3,
"intr": "intr_xuanshangrenwu_intr_5", "intr": "intr_xuanshangrenwu_intr_5",
"img": "icon_jinbi" "img": "icon_jinbi",
"appearNum": 0
}, },
"6": { "6": {
"id": 6, "id": 6,
@ -109,9 +114,10 @@
"n": 60 "n": 60
} }
], ],
"p": 8, "p": 5,
"intr": "intr_xuanshangrenwu_intr_4", "intr": "intr_xuanshangrenwu_intr_4",
"img": "icon_jinbi" "img": "icon_jinbi",
"appearNum": 3
}, },
"7": { "7": {
"id": 7, "id": 7,
@ -128,9 +134,10 @@
"n": 20000 "n": 20000
} }
], ],
"p": 9, "p": 3,
"intr": "intr_xuanshangrenwu_intr_5", "intr": "intr_xuanshangrenwu_intr_5",
"img": "icon_jinbi" "img": "icon_jinbi",
"appearNum": 0
}, },
"8": { "8": {
"id": 8, "id": 8,
@ -147,9 +154,10 @@
"n": 40000 "n": 40000
} }
], ],
"p": 10, "p": 5,
"intr": "intr_xuanshangrenwu_intr_6", "intr": "intr_xuanshangrenwu_intr_6",
"img": "icon_jinbi" "img": "icon_jinbi",
"appearNum": 0
}, },
"9": { "9": {
"id": 9, "id": 9,
@ -166,9 +174,10 @@
"n": 110 "n": 110
} }
], ],
"p": 11, "p": 1,
"intr": "intr_xuanshangrenwu_intr_7", "intr": "intr_xuanshangrenwu_intr_7",
"img": "icon_jinbi" "img": "icon_jinbi",
"appearNum": 0
}, },
"10": { "10": {
"id": 10, "id": 10,
@ -185,9 +194,10 @@
"n": 30000 "n": 30000
} }
], ],
"p": 12, "p": 3,
"intr": "intr_xuanshangrenwu_intr_8", "intr": "intr_xuanshangrenwu_intr_8",
"img": "icon_jinbi" "img": "icon_jinbi",
"appearNum": 0
}, },
"11": { "11": {
"id": 11, "id": 11,
@ -204,9 +214,10 @@
"n": 30000 "n": 30000
} }
], ],
"p": 13, "p": 5,
"intr": "intr_xuanshangrenwu_intr_6", "intr": "intr_xuanshangrenwu_intr_6",
"img": "icon_jinbi" "img": "icon_jinbi",
"appearNum": 0
}, },
"12": { "12": {
"id": 12, "id": 12,
@ -223,9 +234,10 @@
"n": 140 "n": 140
} }
], ],
"p": 14, "p": 3,
"intr": "intr_xuanshangrenwu_intr_7", "intr": "intr_xuanshangrenwu_intr_7",
"img": "icon_jinbi" "img": "icon_jinbi",
"appearNum": 0
}, },
"13": { "13": {
"id": 13, "id": 13,
@ -242,9 +254,10 @@
"n": 60000 "n": 60000
} }
], ],
"p": 15, "p": 3,
"intr": "intr_xuanshangrenwu_intr_8", "intr": "intr_xuanshangrenwu_intr_8",
"img": "icon_jinbi" "img": "icon_jinbi",
"appearNum": 0
}, },
"14": { "14": {
"id": 14, "id": 14,
@ -261,9 +274,10 @@
"n": 40000 "n": 40000
} }
], ],
"p": 16, "p": 5,
"intr": "intr_xuanshangrenwu_intr_9", "intr": "intr_xuanshangrenwu_intr_9",
"img": "icon_jinbi" "img": "icon_jinbi",
"appearNum": 0
}, },
"15": { "15": {
"id": 15, "id": 15,
@ -280,9 +294,10 @@
"n": 90 "n": 90
} }
], ],
"p": 17, "p": 2,
"intr": "intr_xuanshangrenwu_intr_10", "intr": "intr_xuanshangrenwu_intr_10",
"img": "icon_jinbi" "img": "icon_jinbi",
"appearNum": 3
}, },
"16": { "16": {
"id": 16, "id": 16,
@ -299,9 +314,10 @@
"n": 40000 "n": 40000
} }
], ],
"p": 18, "p": 4,
"intr": "intr_xuanshangrenwu_intr_8", "intr": "intr_xuanshangrenwu_intr_8",
"img": "icon_jinbi" "img": "icon_jinbi",
"appearNum": 0
}, },
"17": { "17": {
"id": 17, "id": 17,
@ -318,9 +334,10 @@
"n": 50000 "n": 50000
} }
], ],
"p": 19, "p": 5,
"intr": "intr_xuanshangrenwu_intr_9", "intr": "intr_xuanshangrenwu_intr_9",
"img": "icon_jinbi" "img": "icon_jinbi",
"appearNum": 0
}, },
"18": { "18": {
"id": 18, "id": 18,
@ -337,9 +354,10 @@
"n": 120 "n": 120
} }
], ],
"p": 20, "p": 1,
"intr": "intr_xuanshangrenwu_intr_10", "intr": "intr_xuanshangrenwu_intr_10",
"img": "icon_jinbi" "img": "icon_jinbi",
"appearNum": 3
}, },
"19": { "19": {
"id": 19, "id": 19,
@ -356,9 +374,10 @@
"n": 80000 "n": 80000
} }
], ],
"p": 21, "p": 4,
"intr": "intr_xuanshangrenwu_intr_11", "intr": "intr_xuanshangrenwu_intr_11",
"img": "icon_jinbi" "img": "icon_jinbi",
"appearNum": 0
}, },
"20": { "20": {
"id": 20, "id": 20,
@ -375,9 +394,10 @@
"n": 170 "n": 170
} }
], ],
"p": 22, "p": 4,
"intr": "intr_xuanshangrenwu_intr_12", "intr": "intr_xuanshangrenwu_intr_12",
"img": "icon_jinbi" "img": "icon_jinbi",
"appearNum": 0
}, },
"21": { "21": {
"id": 21, "id": 21,
@ -394,9 +414,10 @@
"n": 100000 "n": 100000
} }
], ],
"p": 23, "p": 3,
"intr": "intr_xuanshangrenwu_intr_11", "intr": "intr_xuanshangrenwu_intr_11",
"img": "icon_jinbi" "img": "icon_jinbi",
"appearNum": 0
}, },
"22": { "22": {
"id": 22, "id": 22,
@ -413,9 +434,10 @@
"n": 200 "n": 200
} }
], ],
"p": 24, "p": 2,
"intr": "intr_xuanshangrenwu_intr_12", "intr": "intr_xuanshangrenwu_intr_12",
"img": "icon_jinbi" "img": "icon_jinbi",
"appearNum": 0
}, },
"23": { "23": {
"id": 23, "id": 23,
@ -432,9 +454,10 @@
"n": 150 "n": 150
} }
], ],
"p": 25, "p": 1,
"intr": "intr_xuanshangrenwu_intr_13", "intr": "intr_xuanshangrenwu_intr_13",
"img": "icon_jinbi" "img": "icon_jinbi",
"appearNum": 3
}, },
"24": { "24": {
"id": 24, "id": 24,
@ -451,9 +474,10 @@
"n": 50000 "n": 50000
} }
], ],
"p": 26, "p": 5,
"intr": "intr_xuanshangrenwu_intr_14", "intr": "intr_xuanshangrenwu_intr_14",
"img": "icon_jinbi" "img": "icon_jinbi",
"appearNum": 0
}, },
"25": { "25": {
"id": 25, "id": 25,
@ -470,9 +494,10 @@
"n": 60000 "n": 60000
} }
], ],
"p": 27, "p": 2,
"intr": "intr_xuanshangrenwu_intr_15", "intr": "intr_xuanshangrenwu_intr_15",
"img": "icon_jinbi" "img": "icon_jinbi",
"appearNum": 0
}, },
"26": { "26": {
"id": 26, "id": 26,
@ -489,9 +514,10 @@
"n": 60000 "n": 60000
} }
], ],
"p": 28, "p": 5,
"intr": "intr_xuanshangrenwu_intr_14", "intr": "intr_xuanshangrenwu_intr_14",
"img": "icon_jinbi" "img": "icon_jinbi",
"appearNum": 0
}, },
"27": { "27": {
"id": 27, "id": 27,
@ -508,9 +534,10 @@
"n": 75000 "n": 75000
} }
], ],
"p": 29, "p": 5,
"intr": "intr_xuanshangrenwu_intr_15", "intr": "intr_xuanshangrenwu_intr_15",
"img": "icon_jinbi" "img": "icon_jinbi",
"appearNum": 0
}, },
"28": { "28": {
"id": 28, "id": 28,
@ -527,9 +554,10 @@
"n": 180 "n": 180
} }
], ],
"p": 30, "p": 1,
"intr": "intr_xuanshangrenwu_intr_16", "intr": "intr_xuanshangrenwu_intr_16",
"img": "icon_jinbi" "img": "icon_jinbi",
"appearNum": 3
}, },
"29": { "29": {
"id": 29, "id": 29,
@ -546,9 +574,10 @@
"n": 230 "n": 230
} }
], ],
"p": 31, "p": 2,
"intr": "intr_xuanshangrenwu_intr_17", "intr": "intr_xuanshangrenwu_intr_17",
"img": "icon_jinbi" "img": "icon_jinbi",
"appearNum": 0
}, },
"30": { "30": {
"id": 30, "id": 30,
@ -565,8 +594,9 @@
"n": 120000 "n": 120000
} }
], ],
"p": 32, "p": 4,
"intr": "intr_xuanshangrenwu_intr_18", "intr": "intr_xuanshangrenwu_intr_18",
"img": "icon_jinbi" "img": "icon_jinbi",
"appearNum": 0
} }
} }

View File

@ -124,9 +124,9 @@ type gc_clsl_dan = k_v<{
/** 机器人 */ /** 机器人 */
'npc': number, 'npc': number,
/** 随机机器人概率*/ /** 随机机器人概率*/
'pro':number 'pro': number
/** 对手范围 */ /** 对手范围 */
'fighter':number[] 'fighter': number[]
}>; }>;
type gc_com = k_v<{ type gc_com = k_v<{
@ -1797,6 +1797,28 @@ 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]: {
buff: { [k: string]: number }
need: { a: string, t: string, n: number }[];
}
}
}
type gcType = { type gcType = {
[key: string]: any [key: string]: any
armyattr: gc_armyattr armyattr: gc_armyattr
@ -1946,7 +1968,8 @@ type gcType = {
kfcb_prize: gc_kfcb_prize kfcb_prize: gc_kfcb_prize
yuyuemail: gc_yuyuemail yuyuemail: gc_yuyuemail
tuisonglibao: gc_push_gift tuisonglibao: gc_push_gift
heroSkin: gc_hero_skin
heroSkinLv: gc_hero_skin_lv
} }
@ -1957,4 +1980,3 @@ declare global {
export function initGcType() { export function initGcType() {
} }

View File

@ -239,6 +239,9 @@ class Lng {
hero_17 = "hero_17"; hero_17 = "hero_17";
hero_18 = "hero_18"; hero_18 = "hero_18";
hero_19 = "hero_19"; hero_19 = "hero_19";
hero_20 = "hero_20";
hero_21 = "hero_21";
hero_22 = "hero_22";
item_1 = "item_1"; item_1 = "item_1";
item_2 = "item_2"; item_2 = "item_2";

View File

@ -1,25 +1,25 @@
import {ResSyncBtn} from '../shared/protocols/PtlSyncBtn'; import { ResSyncBtn } from '../shared/protocols/PtlSyncBtn';
import {payLog} from '../shared/protocols/pay/PtlGetList'; import { payLog } from '../shared/protocols/pay/PtlGetList';
import {rankType} from '../shared/protocols/rank/PtlOpen'; import { rankType } from '../shared/protocols/rank/PtlOpen';
import {CollectionChatLog} from './collection_chatlog'; import { CollectionChatLog } from './collection_chatlog';
import {CollectionActionLog} from './collection_actionLog'; import { CollectionActionLog } from './collection_actionLog';
import {CollectionCardlog} from './collection_cardlog'; import { CollectionCardlog } from './collection_cardlog';
import {CollectionCllsCrossGroup, CollectionCllsCrossUser} from './collection_clsl'; import { CollectionCllsCrossGroup, CollectionCllsCrossUser } from './collection_clsl';
import {CollectionCrosskv} from './collection_crosskv'; import { CollectionCrosskv } from './collection_crosskv';
import {CollectionDayPay} from './collection_dayPay'; import { CollectionDayPay } from './collection_dayPay';
import {CollectionDxlt} from './collection_dxlt'; import { CollectionDxlt } from './collection_dxlt';
import {CollectionEmail} from './collection_email'; import { CollectionEmail } from './collection_email';
import {CollectionEquip} from './collection_equip'; import { CollectionEquip } from './collection_equip';
import {CollectionEvent} from './collection_event'; import { CollectionEvent } from './collection_event';
import {CollectionFriend} from './collection_friend'; import { CollectionFriend } from './collection_friend';
import {CollectionGanHai} from './collection_ganhai'; import { CollectionGanHai } from './collection_ganhai';
import {CollectionGBTX} from './collection_gbtx'; import { CollectionGBTX } from './collection_gbtx';
import {CollectionGongHui, CollectionGongHuiFb, CollectionGongHuiUser} from './collection_gonghui'; import { CollectionGongHui, CollectionGongHuiFb, CollectionGongHuiUser } from './collection_gonghui';
import {CollectionHbzbUserCross, CollectionHbzbUserZbs} from './collection_hbzb_user_cross'; import { CollectionHbzbUserCross, CollectionHbzbUserZbs } from './collection_hbzb_user_cross';
import {CollectionHero} from './collection_hero'; import { CollectionHero } from './collection_hero';
import {CollectionItem} from './collection_item'; import { CollectionItem } from './collection_item';
import {CollectionJJC} from './collection_jjc'; import { CollectionJJC } from './collection_jjc';
import {CollectionApiWeiXiuChang} from './collection_weixiuchang'; import { CollectionApiWeiXiuChang } from './collection_weixiuchang';
import { import {
CollectionKbzzApplyUser, CollectionKbzzApplyUser,
@ -27,39 +27,39 @@ import {
CollectionKbzzGroupTroop, CollectionKbzzGroupTroop,
CollectionKbzzGroupUser CollectionKbzzGroupUser
} from './collection_kbzz'; } from './collection_kbzz';
import {CollectionKuangDong} from './collection_kuangdong'; import { CollectionKuangDong } from './collection_kuangdong';
import {CollectionLingZhuLaiXi} from './collection_lingzhulaixi'; import { CollectionLingZhuLaiXi } from './collection_lingzhulaixi';
import {CollectionMingdao} from './collection_mingdao'; import { CollectionMingdao } from './collection_mingdao';
import {CollectionPlayerInfo} from './collection_palyerInfo'; import { CollectionPlayerInfo } from './collection_palyerInfo';
import {CollectionPata} from './collection_pata'; import { CollectionPata } from './collection_pata';
import {CollectionPeiJian} from './collection_peijian'; import { CollectionPeiJian } from './collection_peijian';
import {CollectionPlayAttr} from './collection_playattr'; import { CollectionPlayAttr } from './collection_playattr';
import {CollectionRank, CollectionRankList} from './collection_rank'; import { CollectionRank, CollectionRankList } from './collection_rank';
import {CollectionRecord} from './collection_record'; import { CollectionRecord } from './collection_record';
import {CollectionSchedler} from './collection_scheduler'; import { CollectionSchedler } from './collection_scheduler';
import {CollectionShiwu} from './collection_shiwu'; import { CollectionShiwu } from './collection_shiwu';
import {CollectionSlzdGh, CollectionSlzdUser, CollectionSlzdStash} from './collection_slzd'; import { CollectionSlzdGh, CollectionSlzdUser, CollectionSlzdStash } from './collection_slzd';
import {CollectionTanXian} from './collection_tanxian'; import { CollectionTanXian } from './collection_tanxian';
import {CollectionTask} from './collection_task'; import { CollectionTask } from './collection_task';
import {CollectionUser} from './collection_user'; import { CollectionUser } from './collection_user';
import {CollectionWanted} from './collection_wanted'; import { CollectionWanted } from './collection_wanted';
import {CollectionWjjl} from './collection_wjjl'; import { CollectionWjjl } from './collection_wjjl';
import {CollectionWzryCross} from './collection_wzry_user_cross'; import { CollectionWzryCross } from './collection_wzry_user_cross';
import {CollectionWzryCrossFight} from './collection_wzryfight'; import { CollectionWzryCrossFight } from './collection_wzryfight';
import {CollectionWzryCrossFightLOG} from './collection_wzryfightlOG'; import { CollectionWzryCrossFightLOG } from './collection_wzryfightlOG';
import {CollectionWzryCrossWiner} from './collection_wzrywiner'; import { CollectionWzryCrossWiner } from './collection_wzrywiner';
import {CollectionXstask} from './collection_xstask'; import { CollectionXstask } from './collection_xstask';
import {CollectionZhanLing} from './collection_zhanling'; import { CollectionZhanLing } from './collection_zhanling';
import {CollectionHdinfo} from './collection_hdinfo'; import { CollectionHdinfo } from './collection_hdinfo';
import {CollectionGiftLog} from "./collection_giftLog"; import { CollectionGiftLog } from "./collection_giftLog";
import {CollectionLoginLog} from "./collection_loginLog"; import { CollectionLoginLog } from "./collection_loginLog";
import {CollectionPayLogNew} from "./collection_payLogNew"; import { CollectionPayLogNew } from "./collection_payLogNew";
import {CollectionApiCount} from "./collection_apiCount"; import { CollectionApiCount } from "./collection_apiCount";
import {CollectionPlayerBehavior} from "./collection_player_behavior"; import { CollectionPlayerBehavior } from "./collection_player_behavior";
import {CollectionRmbuse} from "./collection_rmbuse"; import { CollectionRmbuse } from "./collection_rmbuse";
import {CollectionFightLog} from "./collection_fightLog"; import { CollectionFightLog } from "./collection_fightLog";
import {CollectionShop} from "./collection_shop"; import { CollectionShop } from "./collection_shop";
import {CollectionPushGift} from "./collection_pushgift"; import { CollectionPushGift } from "./collection_pushgift";
export type MongodbCollections = { export type MongodbCollections = {
user: CollectionUser; user: CollectionUser;
@ -133,7 +133,7 @@ export type MongodbCollections = {
rmbuse: CollectionRmbuse rmbuse: CollectionRmbuse
fightLog: CollectionFightLog fightLog: CollectionFightLog
shop: CollectionShop shop: CollectionShop
pushgift:CollectionPushGift pushgift: CollectionPushGift
huodong_user: CollectionUser; huodong_user: CollectionUser;
}; };

View File

@ -2637,6 +2637,20 @@ export const serviceProto: ServiceProto<ServiceType> = {
} }
}, },
"optional": true "optional": true
},
{
"id": 38,
"name": "heroskin",
"type": {
"type": "Interface",
"indexSignature": {
"keyType": "String",
"type": {
"type": "Number"
}
}
},
"optional": true
} }
] ]
}, },

49
src/public/heroskin.ts Normal file
View File

@ -0,0 +1,49 @@
import { ApiCall } from "tsrpc";
import { call } from "../public/player";
import { PlayerFun } from "./player";
export default class HeroSkinFun {
/**
*
* @param uid
* @returns
*/
static getHeroSkin(call: call, oids: string | string[] = '') {
return call.conn.gud.heroskin || {};
}
/**
*
*
* addAttr msg_s2c/PlayerChange
* addEventMsg PlayerChange change的key在player中则触发重算战力操作
* heroskin数据不需要主动重算战力
* @param oid
* @param data
* @returns
* */
static async updateHeroSkinLv(call: ApiCall, change: k_v<number>) {
let skin = this.getHeroSkin(call);
skin = Object.assign(skin, change);
await PlayerFun.addAttr(call, { heroskin: skin });
}
/**
* buff
* @param skid
* @param lv
* @returns {[string]: number}
* */
static calcBuff(skid: string, lv: number): k_v<number> {
let buff = {};
let skin = G.gc.heroSkin[skid];
for (let i = 1; i <= lv; i++) {
for (let k in G.gc.heroSkinLv[skin.colour][i].buff) {
buff[k] = (buff[k] || 0) + G.gc.heroSkinLv[skin.colour][i].buff[k];
}
}
return buff;
}
}

View File

@ -1,24 +1,25 @@
import {ObjectId, OptionalId} from 'mongodb'; import { ObjectId, OptionalId } from 'mongodb';
import {ApiCall, BaseConnection, TsrpcError} from 'tsrpc'; import { ApiCall, BaseConnection, TsrpcError } from 'tsrpc';
import {checkPlayerGift} from '../api_s2c/event/xianshilibao/fun'; import { checkPlayerGift } from '../api_s2c/event/xianshilibao/fun';
import {md_redPoint_check} from '../api_s2c/gongyu/mingdao/ApiOpen'; import { md_redPoint_check } from '../api_s2c/gongyu/mingdao/ApiOpen';
import {CollectionPeiJian} from '../module/collection_peijian'; import { CollectionPeiJian } from '../module/collection_peijian';
import {Wjjl} from '../module/collection_wjjl'; import { Wjjl } from '../module/collection_wjjl';
import {MongodbCollections} from '../module/mongodb'; import { MongodbCollections } from '../module/mongodb';
import {G123} from '../sdk/G123'; import { G123 } from '../sdk/G123';
import {ResGetList} from '../shared/protocols/item/PtlGetList'; import { ResGetList } from '../shared/protocols/item/PtlGetList';
import {ResLogin} from '../shared/protocols/user/PtlLogin'; import { ResLogin } from '../shared/protocols/user/PtlLogin';
import {player} from '../shared/protocols/user/type'; import { player } from '../shared/protocols/user/type';
import {HeroShared, otherBuff} from '../shared/public/hero'; import { HeroShared, otherBuff } from '../shared/public/hero';
import {PublicShared} from '../shared/public/public'; import { PublicShared } from '../shared/public/public';
import {HeroFun} from './hero'; import { HeroFun } from './hero';
import {ShiwuFun} from './shiwu'; import { ShiwuFun } from './shiwu';
import {UserFun} from './user'; import { UserFun } from './user';
import {getItemByItemId, getItemNum} from './item'; import { getItemByItemId, getItemNum } from './item';
import {getGud, setGud} from './gud'; import { getGud, setGud } from './gud';
import {addGameLog} from "../gameLog"; import { addGameLog } from "../gameLog";
import {PushGiftFun} from "./pushgift"; import { PushGiftFun } from "./pushgift";
import { ActionLog } from './actionLog/actionLog'; import { ActionLog } from './actionLog/actionLog';
import HeroSkinFun from './heroskin';
export type call = { export type call = {
@ -70,13 +71,13 @@ export class PlayerFun {
if (err) { if (err) {
// 消耗不足 触发推送礼包 // 消耗不足 触发推送礼包
PushGiftFun.chkItemGift(call.uid, atn) PushGiftFun.chkItemGift(call.uid, atn)
throw new TsrpcError('', {code: -104, atn: atn}); throw new TsrpcError('', { code: -104, atn: atn });
} else { } else {
return {isOk: false, atn: atn}; return { isOk: false, atn: atn };
} }
} }
} }
return {isOk: true, atn: null}; return { isOk: true, atn: null };
} }
/** /**
@ -94,7 +95,7 @@ export class PlayerFun {
atn: need atn: need
}; };
if (args.length < 1) { if (args.length < 1) {
throw new TsrpcError('', {code: -104, atn: meet.atn}); throw new TsrpcError('', { code: -104, atn: meet.atn });
} }
return await this.checkNeedByArgs(call, ...args); return await this.checkNeedByArgs(call, ...args);
} }
@ -117,10 +118,10 @@ export class PlayerFun {
all.push(this.addItem(call, item)); all.push(this.addItem(call, item));
} }
// 记录消耗 // 记录消耗
addGameLog(call.uid, call.service.name, call.req, {need: val}) addGameLog(call.uid, call.service.name, call.req, { need: val })
await Promise.all(all); await Promise.all(all);
G.emit('USE_ITEM', call.conn.gud, needArr.map(need => { G.emit('USE_ITEM', call.conn.gud, needArr.map(need => {
return {...need, n: Math.abs(need.n)}; return { ...need, n: Math.abs(need.n) };
})); }));
} }
@ -136,16 +137,18 @@ export class PlayerFun {
let equip = prizeList.filter(atn => atn.a == 'equip' && atn.n != 0); let equip = prizeList.filter(atn => atn.a == 'equip' && atn.n != 0);
let shiwu = prizeList.filter(atn => atn.a == 'shiwu' && atn.n != 0); let shiwu = prizeList.filter(atn => atn.a == 'shiwu' && atn.n != 0);
let peijian = prizeList.filter(atn => atn.a == 'peijian' && atn.n != 0); let peijian = prizeList.filter(atn => atn.a == 'peijian' && atn.n != 0);
let heroskin = prizeList.filter(atn => atn.a == 'heroskin' && atn.n != 0);
// 记录获得 // 记录获得
addGameLog(call.uid, call.service.name, call.req, {prize: prizeList}) addGameLog(call.uid, call.service.name, call.req, { prize: prizeList })
await Promise.all([ await Promise.all([
attr.length > 0 && this.addAttr(call, attr), attr.length > 0 && this.addAttr(call, attr),
item.length > 0 && this.addItem(call, item), item.length > 0 && this.addItem(call, item),
hero.length > 0 && this.addHero(call, hero), hero.length > 0 && this.addHero(call, hero),
equip.length > 0 && this.addEquip(call, equip), equip.length > 0 && this.addEquip(call, equip),
shiwu.length > 0 && this.addShiwu(call, shiwu), shiwu.length > 0 && this.addShiwu(call, shiwu),
peijian.length > 0 && this.addPeijian(call, peijian) peijian.length > 0 && this.addPeijian(call, peijian),
heroskin.length > 0 && this.addHeroskin(call, heroskin),
]); ]);
return prizeList; return prizeList;
@ -180,9 +183,9 @@ export class PlayerFun {
} }
} }
if( (atn.t == 'rmbmoney' || atn.t == 'jinbi') && atn.n > 0 ){ if ((atn.t == 'rmbmoney' || atn.t == 'jinbi') && atn.n > 0) {
//统计今日获取的金币和钻石 //统计今日获取的金币和钻石
ActionLog.addDayLog(call.conn.uid, { key: 'got_'+atn.t, val: atn.n }); ActionLog.addDayLog(call.conn.uid, { key: 'got_' + atn.t, val: atn.n });
} }
// 增加vip经验的任务监听 // 增加vip经验的任务监听
@ -190,7 +193,7 @@ export class PlayerFun {
G.emit("Class_task_157", 'Class_task_157', call, atn.n, 0); G.emit("Class_task_157", 'Class_task_157', call, atn.n, 0);
} }
all.push(this.changeAttr(call.conn.uid, change)); all.push(this.changeAttr(call.conn.uid, change));
all.push(this.upAttr(call, {...atn, n: change[atn.t]})); all.push(this.upAttr(call, { ...atn, n: change[atn.t] }));
//await this.changeAttr(call.conn.uid, change); //await this.changeAttr(call.conn.uid, change);
//await this.upAttr(call, {...atn, n: change[atn.t]}); //await this.upAttr(call, {...atn, n: change[atn.t]});
} }
@ -233,17 +236,17 @@ export class PlayerFun {
G.mongodb.collection('rmbuse').insertOne(data); G.mongodb.collection('rmbuse').insertOne(data);
// 消费竞赛开启时写入跨服数据库 // 消费竞赛开启时写入跨服数据库
if (G.huodong.xfjs && !data.isAdd && typeof data.change == 'number') { if (G.huodong.xfjs && !data.isAdd && typeof data.change == 'number') {
G.crossmongodb.collection('rmbuse').updateOne({uid: data.uid, type: `xfjs_${G.huodong.xfjsId}`}, { G.crossmongodb.collection('rmbuse').updateOne({ uid: data.uid, type: `xfjs_${G.huodong.xfjsId}` }, {
$set: {time: G.time}, $set: { time: G.time },
$inc: {change: data.change} $inc: { change: data.change }
}, {upsert: true}); }, { upsert: true });
} }
} }
static async changeAttr(uid: string, change: Partial<player>) { static async changeAttr(uid: string, change: Partial<player>) {
setGud(uid, change); setGud(uid, change);
G.mongodb.collection('user').updateOne({uid: uid}, {$set: change}); G.mongodb.collection('user').updateOne({ uid: uid }, { $set: change });
if (G.server.uid_connections[uid]) { if (G.server.uid_connections[uid]) {
checkPlayerGift(G.server.uid_connections[uid].gud, change); checkPlayerGift(G.server.uid_connections[uid].gud, change);
@ -265,9 +268,9 @@ export class PlayerFun {
const curLv = call.conn.gud.lv; const curLv = call.conn.gud.lv;
while (conf[curLv + addLv + 1] && atn.n >= conf[curLv + addLv + 1].need) { while (conf[curLv + addLv + 1] && atn.n >= conf[curLv + addLv + 1].need) {
addLv++; addLv++;
G123.sendUserLevelUp({...call.conn.gud, lv: curLv + addLv, nexp: atn.n}); G123.sendUserLevelUp({ ...call.conn.gud, lv: curLv + addLv, nexp: atn.n });
} }
addLv && await this.addAttr(call, {lv: curLv + addLv}); addLv && await this.addAttr(call, { lv: curLv + addLv });
break; break;
case 'payExp': case 'payExp':
let addVip = 0; let addVip = 0;
@ -276,7 +279,7 @@ export class PlayerFun {
while (vipConf[curVip + addVip + 1] && atn.n >= vipConf[curVip + addVip + 1].exp) { while (vipConf[curVip + addVip + 1] && atn.n >= vipConf[curVip + addVip + 1].exp) {
addVip++; addVip++;
} }
addVip && await this.addAttr(call, {vip: curVip + addVip}); addVip && await this.addAttr(call, { vip: curVip + addVip });
break; break;
} }
} }
@ -287,7 +290,7 @@ export class PlayerFun {
static async addItem(call: call, val: atn[]) { static async addItem(call: call, val: atn[]) {
for (let atn of val) { for (let atn of val) {
let upObj = { let upObj = {
filter: {uid: call.uid, itemId: atn.t}, filter: { uid: call.uid, itemId: atn.t },
update: { update: {
$setOnInsert: { $setOnInsert: {
firstTime: G.time, firstTime: G.time,
@ -319,7 +322,7 @@ export class PlayerFun {
}; };
G.mongodb.collection('item').updateOne(upObj.filter, upObj.update, upObj.options); G.mongodb.collection('item').updateOne(upObj.filter, upObj.update, upObj.options);
call.addEventMsg('msg_s2c/ItemChange', atn.t, data); call.addEventMsg('msg_s2c/ItemChange', atn.t, data);
addGameLog(call.uid, "_itemChange", {"additem": 1}, { addGameLog(call.uid, "_itemChange", { "additem": 1 }, {
"filter": upObj.filter, "filter": upObj.filter,
"update": upObj.update, "update": upObj.update,
"options": upObj.options "options": upObj.options
@ -327,10 +330,10 @@ export class PlayerFun {
} else { } else {
if (item.num + atn.n <= 0) { if (item.num + atn.n <= 0) {
await Promise.all([ await Promise.all([
G.mongodb.collection('item').deleteOne({uid: call.uid, itemId: atn.t}) G.mongodb.collection('item').deleteOne({ uid: call.uid, itemId: atn.t })
]); ]);
call.addEventMsg('msg_s2c/ItemChange', atn.t, {num: 0}); call.addEventMsg('msg_s2c/ItemChange', atn.t, { num: 0 });
addGameLog(call.uid, "_itemChange", {"delitem": 1}, {"itemId": atn.t}) addGameLog(call.uid, "_itemChange", { "delitem": 1 }, { "itemId": atn.t })
} else { } else {
await Promise.all([ await Promise.all([
G.mongodb.collection('item').updateOne(upObj.filter, upObj.update, upObj.options) G.mongodb.collection('item').updateOne(upObj.filter, upObj.update, upObj.options)
@ -339,7 +342,7 @@ export class PlayerFun {
num: item.num + atn.n, num: item.num + atn.n,
lastTime: upObj.update.$set.lastTime lastTime: upObj.update.$set.lastTime
}); });
addGameLog(call.uid, "_itemChange", {"attritem": 1}, { addGameLog(call.uid, "_itemChange", { "attritem": 1 }, {
"filter": upObj.filter, "filter": upObj.filter,
"update": upObj.update, "update": upObj.update,
"options": upObj.options, "options": upObj.options,
@ -374,7 +377,7 @@ export class PlayerFun {
insertData.forEach((v, key) => { insertData.forEach((v, key) => {
let id = result.insertedIds[key].toHexString(); let id = result.insertedIds[key].toHexString();
let {_id, ...ops} = v; let { _id, ...ops } = v;
Wjjl.setVal(call.uid, `has_equip_color_${G.gc.equip[ops.equipId].colour}`, 1, false); Wjjl.setVal(call.uid, `has_equip_color_${G.gc.equip[ops.equipId].colour}`, 1, false);
@ -408,10 +411,10 @@ export class PlayerFun {
*/ */
static async cutEquip(call: call, _idArr: string[]) { static async cutEquip(call: call, _idArr: string[]) {
for (let _id of _idArr) { for (let _id of _idArr) {
G.mongodb.collection('equip').deleteOne({uid: call.uid, _id: new ObjectId(_id)}); G.mongodb.collection('equip').deleteOne({ uid: call.uid, _id: new ObjectId(_id) });
call.addEventMsg('msg_s2c/EquipChange', _id, {num: 0}); call.addEventMsg('msg_s2c/EquipChange', _id, { num: 0 });
addGameLog(call.uid, "_cutEquip", {}, {_id: _id}) addGameLog(call.uid, "_cutEquip", {}, { _id: _id })
} }
} }
@ -445,7 +448,7 @@ export class PlayerFun {
let v = insertData[key] let v = insertData[key]
let id = result.insertedIds[key].toHexString(); let id = result.insertedIds[key].toHexString();
let {_id, ...ops} = v; let { _id, ...ops } = v;
call.addEventMsg('msg_s2c/HeroChange', id, { call.addEventMsg('msg_s2c/HeroChange', id, {
_id: id, _id: id,
@ -478,9 +481,9 @@ export class PlayerFun {
static async cutHero(call: call, _idArr: string[]) { static async cutHero(call: call, _idArr: string[]) {
for (let _id of _idArr) { for (let _id of _idArr) {
await HeroFun.delHero(call, _id); await HeroFun.delHero(call, _id);
G.mongodb.collection('hero').deleteOne({uid: call.uid, _id: new ObjectId(_id)}); G.mongodb.collection('hero').deleteOne({ uid: call.uid, _id: new ObjectId(_id) });
call.addEventMsg('msg_s2c/HeroChange', _id, {num: 0}); call.addEventMsg('msg_s2c/HeroChange', _id, { num: 0 });
addGameLog(call.uid, "_cutHero", {}, {_id: _id}) addGameLog(call.uid, "_cutHero", {}, { _id: _id })
} }
} }
@ -495,7 +498,7 @@ export class PlayerFun {
colour: v.colour, colour: v.colour,
wearId: '', wearId: '',
shiwuId: v.t, shiwuId: v.t,
jichu: ShiwuFun.randomJichu({colour: v.colour, shiwuId: v.t}), jichu: ShiwuFun.randomJichu({ colour: v.colour, shiwuId: v.t }),
fujia: [] fujia: []
}; };
if (v.shiwuBuff) { if (v.shiwuBuff) {
@ -515,7 +518,7 @@ export class PlayerFun {
insertData.forEach((v, key) => { insertData.forEach((v, key) => {
let id = result.insertedIds[key].toHexString(); let id = result.insertedIds[key].toHexString();
let {_id, ...ops} = v; let { _id, ...ops } = v;
call.addEventMsg('msg_s2c/ShiwuChange', id, { call.addEventMsg('msg_s2c/ShiwuChange', id, {
_id: id, _id: id,
...ops ...ops
@ -534,9 +537,9 @@ export class PlayerFun {
*/ */
static async cutShiwu(call: call, _idArr: string[]) { static async cutShiwu(call: call, _idArr: string[]) {
for (let _id of _idArr) { for (let _id of _idArr) {
G.mongodb.collection('shiwu').deleteOne({uid: call.uid, _id: new ObjectId(_id)}); G.mongodb.collection('shiwu').deleteOne({ uid: call.uid, _id: new ObjectId(_id) });
call.addEventMsg('msg_s2c/ShiwuChange', _id, {num: 0}); call.addEventMsg('msg_s2c/ShiwuChange', _id, { num: 0 });
addGameLog(call.uid, "_cutShiwu", {}, {_id: _id}) addGameLog(call.uid, "_cutShiwu", {}, { _id: _id })
} }
} }
@ -561,7 +564,7 @@ export class PlayerFun {
addGameLog(call.uid, "_addPeiJian", {}, insertData) addGameLog(call.uid, "_addPeiJian", {}, insertData)
insertData.forEach((v, key) => { insertData.forEach((v, key) => {
let {_id, uid, ...ops} = v; let { _id, uid, ...ops } = v;
let id = _id.toHexString(); let id = _id.toHexString();
if (G.gc.peijian[v.peijianId].colour != 5) { if (G.gc.peijian[v.peijianId].colour != 5) {
@ -569,8 +572,8 @@ export class PlayerFun {
lshd[v.peijianId]++; lshd[v.peijianId]++;
} }
G.redis.set('peijian', call.uid, id, {_id: id, ...ops}); G.redis.set('peijian', call.uid, id, { _id: id, ...ops });
call.addEventMsg('msg_s2c/PeijianChange', id, {_id: id, ...ops}); call.addEventMsg('msg_s2c/PeijianChange', id, { _id: id, ...ops });
}); });
G.mongodb.collection('playerInfo', 'lshd_peijian').updateOne( G.mongodb.collection('playerInfo', 'lshd_peijian').updateOne(
@ -591,15 +594,39 @@ export class PlayerFun {
return Object.values(result.insertedIds).map(v => G.mongodb.conversionId(v)); return Object.values(result.insertedIds).map(v => G.mongodb.conversionId(v));
} }
/**
*
* */
static async addHeroskin(call: call, val: atn[]) {
let prize = [];
let upskin = {};
let heroskin = HeroSkinFun.getHeroSkin(call);
for (let p of val) {
if (!heroskin[p.t]) {
upskin[p.t] = 1;
} else {
prize.concat(G.gc.heroSkin[p.t].zhuanhuan);
}
}
if (Object.keys(upskin).length > 0) {
this.addAttr(call, Object.assign(heroskin, upskin));
}
// 皮肤存在转换为其他奖励
if (prize.length > 0) {
this.sendPrize(call, prize);
}
}
/** /**
* *
*/ */
static async cutPeijian(call: call, _idArr: string[]) { static async cutPeijian(call: call, _idArr: string[]) {
for (let _id of _idArr) { for (let _id of _idArr) {
G.redis.del('peijian', call.uid, _id); G.redis.del('peijian', call.uid, _id);
G.mongodb.collection('peijian').deleteOne({uid: call.uid, _id: new ObjectId(_id)}); G.mongodb.collection('peijian').deleteOne({ uid: call.uid, _id: new ObjectId(_id) });
call.addEventMsg('msg_s2c/PeijianChange', _id, {num: 0}); call.addEventMsg('msg_s2c/PeijianChange', _id, { num: 0 });
addGameLog(call.uid, "_cutPeijian", {}, {_id: _id}) addGameLog(call.uid, "_cutPeijian", {}, { _id: _id })
} }
} }
@ -608,7 +635,7 @@ export class PlayerFun {
*/ */
static async getAttr(uid: string, where: { ctype: string; }) { static async getAttr(uid: string, where: { ctype: string; }) {
let _w = where; let _w = where;
Object.assign(_w, {uid: uid}); Object.assign(_w, { uid: uid });
const _res = await G.mongodb.collection('playattr').find(_w).toArray(); const _res = await G.mongodb.collection('playattr').find(_w).toArray();
_res.forEach(v => { _res.forEach(v => {
if (v._id) { if (v._id) {
@ -623,7 +650,7 @@ export class PlayerFun {
*/ */
static async getAttrOne(uid: string, where: { ctype: string; }) { static async getAttrOne(uid: string, where: { ctype: string; }) {
let _w = where; let _w = where;
Object.assign(_w, {uid: uid}); Object.assign(_w, { uid: uid });
const _res = await G.mongodb.collection('playattr').findOne(_w); const _res = await G.mongodb.collection('playattr').findOne(_w);
if (_res) { if (_res) {
delete _res['_id']; delete _res['_id'];
@ -639,10 +666,10 @@ export class PlayerFun {
time = G.time; time = G.time;
} }
let _zeroTime = PublicShared.getToDayZeroTime(time); let _zeroTime = PublicShared.getToDayZeroTime(time);
let _tmp = {lasttime: {$gte: _zeroTime, $lte: _zeroTime + 24 * 60 * 60 - 1}}; let _tmp = { lasttime: { $gte: _zeroTime, $lte: _zeroTime + 24 * 60 * 60 - 1 } };
let _w = where; let _w = where;
Object.assign(_w, {uid: uid, ..._tmp}); Object.assign(_w, { uid: uid, ..._tmp });
const _res = await G.mongodb.collection('playattr').find(_w).toArray(); const _res = await G.mongodb.collection('playattr').find(_w).toArray();
_res.forEach(v => { _res.forEach(v => {
if (v._id) { if (v._id) {
@ -657,7 +684,7 @@ export class PlayerFun {
*/ */
static async setAttr(uid: string, where: { ctype: string; }, data: {}, islasttime = 1) { static async setAttr(uid: string, where: { ctype: string; }, data: {}, islasttime = 1) {
let _w = where; let _w = where;
Object.assign(_w, {uid: uid}); Object.assign(_w, { uid: uid });
if (islasttime == 1) { if (islasttime == 1) {
data["lasttime"] = G.time; data["lasttime"] = G.time;
@ -668,7 +695,7 @@ export class PlayerFun {
// 加入创建数据时间 // 加入创建数据时间
data["ctime"] = G.time; data["ctime"] = G.time;
} }
let _res = await G.mongodb.collection('playattr').updateMany(_w, {$set: data}, {upsert: true}); let _res = await G.mongodb.collection('playattr').updateMany(_w, { $set: data }, { upsert: true });
return _res; return _res;
} }
} }

View File

@ -71,4 +71,6 @@ type heroAddKey = {
peijian: { peijian: {
[pos: string]: string; [pos: string]: string;
}; };
/**皮肤*/
skin: string;
}; };

View File

@ -0,0 +1,7 @@
export interface ReqTakeOff {
heroOid: string
}
export interface ResTakeOff {
}

View File

@ -0,0 +1,6 @@
export interface ReqUplv {
lv: 1;
skid: string;
}
export interface ResUplv { }

View File

@ -0,0 +1,6 @@
export interface ReqWear {
skid: string,
heroOid: string,
}
export interface ResWear { }

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
import {gonghuiLevel} from '../gonghui/type'; import { gonghuiLevel } from '../gonghui/type';
/** /**
* *
@ -193,4 +193,9 @@ export type playerAppend = {
chatFrames?: { chatFrames?: {
[id: string]: number; [id: string]: number;
}; };
/**获得的皮肤*/
heroskin?: {
[skid: string]: number;
}
}; };

View File

@ -1,10 +1,11 @@
import {ResGetList} from '../protocols/hero/PtlGetList'; import HeroSkinFun from '../../public/heroskin';
import {player} from '../protocols/user/type'; import { ResGetList } from '../protocols/hero/PtlGetList';
import {EquipShared} from './equip'; import { player } from '../protocols/user/type';
import {PeijianShared} from './peijian'; import { EquipShared } from './equip';
import {PlayerShared} from './player'; import { PeijianShared } from './peijian';
import {PublicShared} from './public'; import { PlayerShared } from './player';
import {ShiwuShared} from './shiwu'; import { PublicShared } from './public';
import { ShiwuShared } from './shiwu';
export type otherBuff = Partial<player & { export type otherBuff = Partial<player & {
allBuff: k_v<number>; allBuff: k_v<number>;
@ -31,7 +32,7 @@ export class HeroShared {
*/ */
static getHeroBasicAttr(hero: heroDataType, otherBuff: otherBuff = G.otherBuff, pos = 0) { static getHeroBasicAttr(hero: heroDataType, otherBuff: otherBuff = G.otherBuff, pos = 0) {
let jiban = 0; let jiban = 0;
let buff: k_v<any> = {skillArr: []}; let buff: k_v<any> = { skillArr: [] };
let heroConf = G.gc.hero[hero.heroId]; let heroConf = G.gc.hero[hero.heroId];
let heroLv = G.gc.herolv[heroConf.lvup]; let heroLv = G.gc.herolv[heroConf.lvup];
let heroGrow = G.gc.herogrow[heroConf.jjup]?.[hero.jieji]; let heroGrow = G.gc.herogrow[heroConf.jjup]?.[hero.jieji];
@ -40,7 +41,7 @@ export class HeroShared {
for (let k in heroLv.buff) { for (let k in heroLv.buff) {
let val = heroLv.buff[k]; let val = heroLv.buff[k];
if (typeof val == 'number') buff[k] = val; if (typeof val == 'number') buff[k] = val;
else buff[k] = PublicShared.eval(val, {lv: hero.lv}); else buff[k] = PublicShared.eval(val, { lv: hero.lv });
// else buff[k] = Math.floor(new Function(`let lv=${hero.lv}; return ${val}`)()); // else buff[k] = Math.floor(new Function(`let lv=${hero.lv}; return ${val}`)());
} }
@ -135,7 +136,7 @@ export class HeroShared {
PublicShared.mergeProperty(buff, PeijianShared.getAttr(p)); PublicShared.mergeProperty(buff, PeijianShared.getAttr(p));
let conf = G.gc.peijian[p.peijianId]; let conf = G.gc.peijian[p.peijianId];
if (conf.suit) { if (conf.suit) {
if (!suitObj[conf.suit]) suitObj[conf.suit] = {num: 0, minLv: 0}; if (!suitObj[conf.suit]) suitObj[conf.suit] = { num: 0, minLv: 0 };
suitObj[conf.suit].num++; suitObj[conf.suit].num++;
if (!suitObj[conf.suit].minLv || p.lv < suitObj[conf.suit].minLv) suitObj[conf.suit].minLv = p.lv; if (!suitObj[conf.suit].minLv || p.lv < suitObj[conf.suit].minLv) suitObj[conf.suit].minLv = p.lv;
} }
@ -273,11 +274,22 @@ export class HeroShared {
if (otherBuff?.skills) { if (otherBuff?.skills) {
for (let [id, lv] of Object.entries(otherBuff.skills)) { for (let [id, lv] of Object.entries(otherBuff.skills)) {
if (lv && G.gc.xunlianjihua[id].use == 0) { if (lv && G.gc.xunlianjihua[id].use == 0) {
PublicShared.mergeProperty(buff, Object.fromEntries([G.gc.xunlianjihua[id].skill].map(k => [k, PublicShared.eval(G.gc.xunlianjihua[id].v[0], {slv: lv})]))); PublicShared.mergeProperty(buff, Object.fromEntries([G.gc.xunlianjihua[id].skill].map(k => [k, PublicShared.eval(G.gc.xunlianjihua[id].v[0], { slv: lv })])));
} }
} }
} }
// 计算皮肤buff
if (otherBuff?.heroskin) {
for (let skinId in otherBuff.heroskin) {
let skinConf = G.gc.heroSkin[skinId];
if (skinConf.heroid != hero.heroId) console;
PublicShared.mergeProperty(buff, HeroSkinFun.calcBuff(
skinId, otherBuff.heroskin[skinId]
));
}
}
//最后进行加成属性计算 //最后进行加成属性计算
for (let k in buff) { for (let k in buff) {
if (k.indexOf('pro') == -1) continue; if (k.indexOf('pro') == -1) continue;
@ -368,8 +380,8 @@ export class HeroShared {
static getHeroLvUpNeed(id: string | number, lv = 1): atn[] { static getHeroLvUpNeed(id: string | number, lv = 1): atn[] {
return [ return [
{a: 'item', t: '1', n: G.gc.herolvup[lv].expneed}, { a: 'item', t: '1', n: G.gc.herolvup[lv].expneed },
{a: 'attr', t: 'jinbi', n: G.gc.herolvup[lv].jinbineed} { a: 'attr', t: 'jinbi', n: G.gc.herolvup[lv].jinbineed }
]; ];
} }