Merge branch 'ce'
# Conflicts: # game-server/app.ts
This commit is contained in:
@@ -25,7 +25,6 @@ import * as redLockService from './app/services/redLockService';
|
||||
// TODO 需要整理。
|
||||
import _pinus = require('pinus');
|
||||
import { updateTeamStatus } from './app/services/comBattleService';
|
||||
import { init } from './app/pubUtils/gmData/gmDataUtil';
|
||||
import { resResult, genCode } from './app/pubUtils/util';
|
||||
import { errlogger, infologger } from './app/util/logger';
|
||||
|
||||
@@ -118,10 +117,6 @@ app.configure(ALL_ENVS, 'gate', function () {
|
||||
});
|
||||
});
|
||||
|
||||
app.configure(ALL_ENVS, 'gm', function () {
|
||||
init();//将gm后台数据加载到gate服
|
||||
});
|
||||
|
||||
app.configure(ALL_ENVS, 'guild', function () {
|
||||
app.filter(guildAuthFilter(app));
|
||||
})
|
||||
|
||||
@@ -87,7 +87,7 @@ export class GachaHandler {
|
||||
if (!costResult) return resResult(STATUS.GACHA_COST_NOT_ENOUGH);
|
||||
}
|
||||
// 给东西
|
||||
console.log('****', heroInfo)
|
||||
// console.log('****', heroInfo)
|
||||
let { heroes } = await createHeroes(roleId, roleName, sid, serverId, funcs, heroInfo);
|
||||
await addItems(roleId, roleName, sid, items);
|
||||
// 更新数据
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { STATUS } from '../../../consts/statusCode';
|
||||
import { RoleModel } from './../../../db/Role';
|
||||
import { HeroModel } from '../../../db/Hero';
|
||||
import { RoleModel, RoleUpdate } from './../../../db/Role';
|
||||
import { HeroModel, HeroUpdate } from '../../../db/Hero';
|
||||
import { resResult, decodeIdCntArrayStr, parseGoodStr } from '../../../pubUtils/util';
|
||||
import { Application, BackendSession, pinus, HandlerService, } from 'pinus';
|
||||
import { handleCost, addItems, createHeroes } from '../../../services/rewardService';
|
||||
@@ -20,7 +20,9 @@ import { checkTaskWithHero, checkTask, checkTaskWithArgs, checkActivityTask } fr
|
||||
import { getGoldObject, getCoinObject } from '../../../pubUtils/itemUtils';
|
||||
import { RScriptRecordModel } from '../../../db/RScriptRecord';
|
||||
import { checkPvp } from '../../../services/pvpService';
|
||||
import { pushData } from '../../../services/connectorService';
|
||||
import { SkinModel, SkinUpdate } from '../../../db/Skin';
|
||||
import { CreateHeroes } from '../../../pubUtils/roleUtil';
|
||||
import { Figure } from '../../../domain/dbGeneral';
|
||||
|
||||
export default function (app: Application) {
|
||||
new HandlerService(app, {});
|
||||
@@ -45,15 +47,16 @@ export class RoleHandler {
|
||||
let checkName = await RoleModel.checkName(roleName, serverId);
|
||||
if (checkName) return resResult(STATUS.NAME_HAS_USED);
|
||||
|
||||
let heroInfos = [];
|
||||
for (let hid of DEFAULT_HEROES) {
|
||||
heroInfos.push({
|
||||
hid, lv: DEFAULT_HERO_LV, exp: getHeroExpByLv(DEFAULT_HERO_LV - 1) || 0
|
||||
});
|
||||
}
|
||||
|
||||
console.log('****** createHeroes before', Date.now())
|
||||
await createHeroes(roleId, roleName, sid, serverId, funcs, heroInfos);
|
||||
let initInfos: { role: RoleUpdate, heroes: HeroUpdate[], skins: SkinUpdate[], figureInfo: { heads: Figure[], frames: Figure[], spines: Figure[] }}
|
||||
= await this.app.rpc.role.roleRemote.getInitRoleInfos.toServer(this.app.getServerId());
|
||||
role = await RoleModel.updateRoleInfo(roleId, {...initInfos.role, roleName, hasInit: true});
|
||||
let createHero = new CreateHeroes(roleId, roleName, serverId, funcs);
|
||||
await createHero.createWithInitInfo(initInfos.heroes, initInfos.skins, initInfos.figureInfo);
|
||||
await createHero.pushMessage(pinus, sid);
|
||||
await createHero.updateRedisRank(Rank);
|
||||
let heroes = createHero.getResultHeroes();
|
||||
|
||||
console.log('****** createHeroes after', Date.now())
|
||||
session.set('roleName', roleName);
|
||||
session.push('roleName', () => { });
|
||||
@@ -61,19 +64,15 @@ export class RoleHandler {
|
||||
let items = [].concat(DEFAULT_ITEMS, DEFAULT_EQUIPS, [getGoldObject(DEFAULT_GOLD)], [getCoinObject(DEFAULT_COIN)]);
|
||||
await addItems(roleId, roleName, sid, items);
|
||||
|
||||
console.log('****** calAllHeroCe before', Date.now())
|
||||
let calResult = await calAllHeroCe(HERO_SYSTEM_TYPE.INIT, sid, roleId, { hasInit: true, roleName });
|
||||
console.log('****** calAllHeroCe after', Date.now())
|
||||
|
||||
let battleId = SCRIPT.SCRIPT_BATTLE_ID;
|
||||
let warInfo = gameData.war.get(battleId);
|
||||
await RScriptRecordModel.setScript(roleId, battleId, warInfo.warType, 2, SCRIPT.SCRIPT_NAME);
|
||||
|
||||
await checkPvp(calResult.role);
|
||||
await checkPvp(role);
|
||||
|
||||
console.log('******** initRole end', Date.now());
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
roleId, roleName, heroes: calResult.heros
|
||||
roleId, roleName, heroes
|
||||
})
|
||||
}
|
||||
|
||||
@@ -523,4 +522,13 @@ export class RoleHandler {
|
||||
return resResult(STATUS.SUCCESS, { roleName: role.roleName });
|
||||
}
|
||||
|
||||
async setInitRole() {
|
||||
this.app.rpc.role.roleRemote.setInitRole.toServer(this.app.getServerId());
|
||||
return resResult(STATUS.SUCCESS);
|
||||
}
|
||||
async getInitRole() {
|
||||
let initRoleInfo = await this.app.rpc.role.roleRemote.getInitRoleInfos.toServer(this.app.getServerId());
|
||||
|
||||
return resResult(STATUS.SUCCESS, initRoleInfo)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
import { Application, ChannelService, FrontendSession, RemoterClass, HandlerService, } from 'pinus';
|
||||
import { STATUS } from '../../../consts/statusCode';
|
||||
import { resResult } from '../../../pubUtils/util';
|
||||
import { Application, ChannelService, HandlerService, } from 'pinus';
|
||||
// import { sendRolesMails } from '../../../services/mailService';
|
||||
import { reloadResources } from '../../../pubUtils/data';
|
||||
import { HeroUpdate } from '../../../db/Hero';
|
||||
import { RoleUpdate } from '../../../db/Role';
|
||||
import { SkinUpdate } from '../../../db/Skin';
|
||||
import { getInitRoleInfo } from '../../../pubUtils/roleUtil';
|
||||
import { DEFAULT_HEROES } from '../../../consts';
|
||||
import { Figure } from '../../../domain/dbGeneral';
|
||||
export default function (app: Application) {
|
||||
new HandlerService(app, {});
|
||||
return new RoleRemote(app);
|
||||
@@ -13,13 +17,59 @@ export class RoleRemote {
|
||||
constructor(private app: Application) {
|
||||
this.app = app;
|
||||
this.channelService = app.get('channelService');
|
||||
this.setInitRole();
|
||||
}
|
||||
private channelService: ChannelService;
|
||||
private initHeroes: Map<number, HeroUpdate> = new Map(); // hid => hero
|
||||
private initRole: RoleUpdate = {};
|
||||
private initSkins: Map<number, SkinUpdate> = new Map(); // hid => skin
|
||||
private figureInfo: {heads: Figure[], frames: Figure[], spines: Figure[]};
|
||||
|
||||
public setInitRole() {
|
||||
let result = getInitRoleInfo();
|
||||
let { role, heroes, skins, figureInfo } = result;
|
||||
for(let hero of heroes) {
|
||||
this.initHeroes.set(hero.hid, hero);
|
||||
}
|
||||
for(let skin of skins) {
|
||||
this.initSkins.set(skin.hid, skin);
|
||||
}
|
||||
this.initRole = role;
|
||||
this.figureInfo = figureInfo;
|
||||
}
|
||||
|
||||
public getInitRoleInfos() {
|
||||
return {
|
||||
heroes: this.getInitHeroes(),
|
||||
skins: this.getInitSkins(),
|
||||
role: this.initRole,
|
||||
figureInfo: this.figureInfo
|
||||
};
|
||||
}
|
||||
|
||||
public getInitHeroes() {
|
||||
let result: HeroUpdate[] = [];
|
||||
for(let hid of DEFAULT_HEROES) {
|
||||
result.push(this.initHeroes.get(hid));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public getInitSkins() {
|
||||
let result: SkinUpdate[] = [];
|
||||
for(let hid of DEFAULT_HEROES) {
|
||||
result.push(this.initSkins.get(hid));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public getInitHeroById(hid: number) {
|
||||
return {
|
||||
heroInfo: this.initHeroes.get(hid),
|
||||
skinInfo: this.initSkins.get(hid)
|
||||
}
|
||||
}
|
||||
|
||||
// sendGmMailsToRoles(mails) {
|
||||
// sendRolesMails(mails)
|
||||
// }
|
||||
|
||||
/**
|
||||
* 重载json资源
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
|
||||
import { PvpDefenseModel, Heroes, OppPlayers, PvpDefenseType, HeroScores, pvpUpdateInter } from '../db/PvpDefense';
|
||||
import { RoleType } from '../db/Role';
|
||||
import { RoleType, CeAttrDataRole } from '../db/Role';
|
||||
import { PVP_HERO_POS, REDIS_KEY, PVP_CONST, COUNTER } from '../consts';
|
||||
import { setPvpDefResult } from '../services/timeTaskService';
|
||||
import { dicPvpOpponent, DicPvpOpponent } from "../pubUtils/dictionary/DicPvpOpponent";
|
||||
@@ -11,8 +11,8 @@ import { PVP } from '../pubUtils/dicParam';
|
||||
import { PVPConfigModel } from '../db/SystemConfig'
|
||||
import { nowSeconds, getTimeFun } from '../pubUtils/timeUtil';
|
||||
import { HeroesRecord } from '../db/PvpRecord';
|
||||
import { HeroModel } from '../db/Hero';
|
||||
import { CeAttrData, CeAttrDataRole, AttributeCal } from '../domain/roleField/attribute';
|
||||
import { HeroModel, CeAttrData } from '../db/Hero';
|
||||
import { AttributeCal } from '../domain/roleField/attribute';
|
||||
import { PvpEnemies, PvpHeroInfo, PvpOtherHeroes } from '../domain/dbGeneral';
|
||||
import { DicWarJson } from '../pubUtils/dictionary/DicWarJson';
|
||||
import { findWhere, findIndex } from 'underscore';
|
||||
|
||||
@@ -773,7 +773,6 @@ export class Rank {
|
||||
* @param serverId 分服
|
||||
*/
|
||||
export async function setRankRedisFromDb(type: string, args?: { serverId?: number }) {
|
||||
|
||||
if (type == REDIS_KEY.TOWER_RANK) {
|
||||
let serverId = args.serverId;
|
||||
let ranks = await RoleModel.getRank('tower', serverId, ROLE_SELECT.RANK);
|
||||
|
||||
@@ -7,11 +7,11 @@ import { pushCalPlayerCe, pushCalAllHeroCe, calPlayerCeAndSave } from './playerC
|
||||
import { ItemModel, ItemType } from '../db/Item';
|
||||
import { STATUS } from '../consts/statusCode';
|
||||
import { pinus } from 'pinus';
|
||||
import { addEquips, addBags, addSkin, addFigure, unlockFigure as pubUnlockFigure, createHeroes as pubCreateHeroes, transPiece, getGoldObject, getCoinObject, getApObject } from '../pubUtils/itemUtils';
|
||||
import { addEquips, addBags, addSkin, addFigure, unlockFigure as pubUnlockFigure, transPiece, getGoldObject, getCoinObject, getApObject } from '../pubUtils/itemUtils';
|
||||
import { ItemInter, RewardInter, } from '../pubUtils/interface';
|
||||
import { gameData } from '../pubUtils/data';
|
||||
import { uniq } from 'underscore';
|
||||
import { HeroModel, HeroType } from '../db/Hero';
|
||||
import { HeroModel, HeroType, HeroUpdate } from '../db/Hero';
|
||||
import { Figure } from '../domain/dbGeneral';
|
||||
import { Rank } from './rankService';
|
||||
import { checkActivityTask, checkTaskWithHero, pushActivityUpdate, pushTaskUpdate } from './taskService';
|
||||
@@ -21,6 +21,8 @@ import { errlogger } from '../util/logger';
|
||||
import { BAG } from '../pubUtils/dicParam';
|
||||
import { sendMailByContent } from './mailService';
|
||||
import { calEquipSeids } from '../pubUtils/playerCe';
|
||||
import { CreateHeroes } from '../pubUtils/roleUtil';
|
||||
import { SkinUpdate } from '../db/Skin';
|
||||
|
||||
export class CheckMeterial {
|
||||
private roleId: string;
|
||||
@@ -439,15 +441,15 @@ export async function createHeroes(roleId: string, roleName: string, sid: string
|
||||
let hids = heroInfo.map(cur => cur.hid);
|
||||
let userHeroesMap = await HeroModel.findMapByHidRange(hids, roleId);
|
||||
|
||||
|
||||
let newHeroInfo: CreateHeroParam[] = [], pieces: ItemInter[] = [];
|
||||
let infos: Map<number, { heroInfo: HeroUpdate, skinInfo: SkinUpdate }> = new Map(), pieces: ItemInter[] = [];
|
||||
for (let h of heroInfo) {
|
||||
let heroCount = h.count || 1;
|
||||
if (userHeroesMap.has(h.hid)) {
|
||||
let { pieceId, count } = transPiece(h.hid);
|
||||
pieces.push({ id: pieceId, count: count * heroCount });
|
||||
} else {
|
||||
newHeroInfo.push(h)
|
||||
let initInfo = await pinus.app.rpc.role.roleRemote.getInitHeroById.toServer(pinus.app.getServerId(), h.hid);
|
||||
infos.set(h.hid, initInfo);
|
||||
userHeroesMap.set(h.hid, null);
|
||||
if (heroCount > 1) {
|
||||
let { pieceId, count } = transPiece(h.hid);
|
||||
@@ -457,25 +459,12 @@ export async function createHeroes(roleId: string, roleName: string, sid: string
|
||||
}
|
||||
|
||||
let resultHeroes: HeroType[] = [], resultItems: RewardInter[] = [];
|
||||
if (newHeroInfo.length > 0) {
|
||||
|
||||
console.log('****** pubCreateHeroes before', Date.now())
|
||||
let { heroes, role, figureInfo, calHeroResults, calAllHeroResult, taskPushMessage, activityTaskPushMessage } = await pubCreateHeroes(roleId, roleName, serverId, newHeroInfo, funcs);
|
||||
|
||||
console.log('****** pubCreateHeroes after', Date.now())
|
||||
let r = new Rank(REDIS_KEY.HERO_NUM_RANK, { serverId });
|
||||
await r.setRankWithRoleInfo(roleId, role.heroNum, role.heroNumUpdatedAt, role);
|
||||
|
||||
await pushFigureUpdate(roleId, sid, figureInfo);
|
||||
|
||||
// await pushCalAllHeroCe(roleId, sid, calAllHeroResult);
|
||||
for (let calHeroResult of calHeroResults) {
|
||||
await pushCalPlayerCe(roleId, sid, calHeroResult);
|
||||
}
|
||||
|
||||
pushTaskUpdate(roleId, sid, null, taskPushMessage);
|
||||
pushActivityUpdate(roleId, sid, null, activityTaskPushMessage);
|
||||
resultHeroes = heroes;
|
||||
if (infos.size > 0) {
|
||||
let createHero = new CreateHeroes(roleId, roleName, serverId, funcs);
|
||||
await createHero.createWithHeroInfo(infos);
|
||||
await createHero.pushMessage(pinus, sid);
|
||||
await createHero.updateRedisRank(Rank);
|
||||
resultHeroes = createHero.getResultHeroes();
|
||||
}
|
||||
|
||||
if (pieces.length > 0) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { ChannelUser } from './../domain/ChannelUser';
|
||||
import { Channel } from 'pinus';
|
||||
import { Channel, pinus } from 'pinus';
|
||||
import { getRandValueByMinMax, getRandEelm, decodeIdCntArrayStr } from '../pubUtils/util';
|
||||
import { TERAPH_RANDOM } from "../consts";
|
||||
import { DicTeraph } from '../pubUtils/dictionary/DicTeraph';
|
||||
|
||||
Reference in New Issue
Block a user