添加初始物品
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { COUNTER, HERO_SYSTEM_TYPE } from '@consts';
|
||||
import { COUNTER, HERO_SYSTEM_TYPE, DEFAULT_LV, DEFAULT_ITEMS, ITID, DEFAULT_GOLD, DEFAULT_HERO_LV, DEFAULT_EQUIPS, DEFAULT_COIN } from '@consts';
|
||||
import { DEFAULT_HEROES } from '@consts';
|
||||
import { HeroModel } from '@db/Hero';
|
||||
import { RoleModel } from '@db/Role';
|
||||
@@ -9,6 +9,7 @@ import { Service } from 'egg';
|
||||
import Counter from '@db/Counter';
|
||||
import { getHeroInfoById } from 'app/pubUtils/gamedata';
|
||||
import { calPlayerCeAndSave } from 'app/pubUtils/playerCe';
|
||||
import { getExpByLv, getHeroExpByLv, gameData } from 'app/pubUtils/data';
|
||||
const _ = require('underscore');
|
||||
|
||||
/**
|
||||
@@ -131,7 +132,7 @@ export default class Auth extends Service {
|
||||
const roleId = ctx.service.utils.genCode(10);
|
||||
const code = ctx.service.utils.genCode(6);
|
||||
const seqId = await Counter.getNewCounter(COUNTER.ROLE) || -1;
|
||||
const role = await RoleModel.createRole(uid, serverId, { roleId, code, roleName, seqId });
|
||||
const role = await RoleModel.createRole(uid, serverId, { roleId, code, roleName, seqId, lv: DEFAULT_LV, exp: (getExpByLv(DEFAULT_LV - 1)||{sum:0}).sum||0 });
|
||||
if (role) {
|
||||
for (let hid of DEFAULT_HEROES) {
|
||||
let hero = await HeroModel.findByHidAndRole(hid, roleId);
|
||||
@@ -147,10 +148,31 @@ export default class Auth extends Service {
|
||||
|
||||
hero = await HeroModel.createHero({
|
||||
roleId, roleName: role.roleName, hid, hName, star, quality, job, serverId: role.serverId,
|
||||
skins:[{id: initialSkin, enable: true}]
|
||||
skins:[{id: initialSkin, enable: true}], lv: DEFAULT_HERO_LV, exp: getHeroExpByLv(DEFAULT_HERO_LV - 1)||0
|
||||
});
|
||||
await calPlayerCeAndSave(roleId, [hero], HERO_SYSTEM_TYPE.INIT);
|
||||
|
||||
}
|
||||
|
||||
for(let {id, count} of DEFAULT_ITEMS) {
|
||||
let dicGoods = gameData.goods.get(id);
|
||||
if(!dicGoods) continue;
|
||||
let itidObj = ITID.get(dicGoods.itid);
|
||||
if(!itidObj) continue;
|
||||
await ctx.service.utils.addBags(roleId, role.roleName, {id, itemName: dicGoods.name, count, type: itidObj.type, hid: 0});
|
||||
}
|
||||
|
||||
for(let {id, count} of DEFAULT_EQUIPS) {
|
||||
for(let j = 0; j < count; j++) {
|
||||
let dicGoods = gameData.goods.get(id);
|
||||
if(!dicGoods) continue;
|
||||
|
||||
await ctx.service.utils.addEquips(roleId, role.roleName, {id, ...dicGoods, hid: 0});
|
||||
}
|
||||
}
|
||||
await RoleModel.addGoldFree(roleId, DEFAULT_GOLD);
|
||||
await RoleModel.addCoin(roleId, DEFAULT_COIN);
|
||||
|
||||
return ctx.service.utils.resResult(STATUS.SUCCESS, { roleId: role.roleId });
|
||||
}
|
||||
return ctx.service.utils.resResult(STATUS.ROLE_NOT_FOUND);
|
||||
|
||||
@@ -2,6 +2,8 @@ import { Service } from 'egg';
|
||||
import { resResult as pubResult } from '../pubUtils/util';
|
||||
import { calPlayerCeAndSave } from 'app/pubUtils/playerCe';
|
||||
import { HeroType } from '@db/Hero';
|
||||
import { addSkins, addBags, addEquips } from 'app/pubUtils/itemUtils';
|
||||
import { BagInter, EquipInter } from 'app/pubUtils/interface';
|
||||
const csprng = require('csprng');
|
||||
/**
|
||||
* Utils Service
|
||||
@@ -46,4 +48,15 @@ export default class Utils extends Service {
|
||||
return calPlayerCeAndSave(roleId, heros, type, args)
|
||||
}
|
||||
|
||||
public addSkins(roleId: string, id: number) {
|
||||
return addSkins(roleId, id);
|
||||
}
|
||||
|
||||
public addBags(roleId: string, roleName: string, data: BagInter) {
|
||||
return addBags(roleId, roleName, data);
|
||||
}
|
||||
|
||||
public addEquips(roleId: string, roleName: string, weapon: EquipInter) {
|
||||
return addEquips(roleId, roleName, weapon);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user