diff --git a/game-server/app/services/connectorService.ts b/game-server/app/services/connectorService.ts index e9a20fc6c..0f560d068 100644 --- a/game-server/app/services/connectorService.ts +++ b/game-server/app/services/connectorService.ts @@ -31,7 +31,7 @@ import { getBattleListOfMain, getMainChapter } from './normalBattleService'; import { GuildModel, GuildType } from '../db/Guild'; import UserGuild, { UserGuildType } from '../db/UserGuild'; import { getAllGuildActivityStatus } from './guildActivity/guildActivityService'; -import { getAllOnlineRoles, getAllServers } from './redisService'; +import { getAllOnlineRoles, getAllServers, incConnectorNum } from './redisService'; import Item, { ItemModel } from '../db/Item'; import { PvpDefenseModel } from '../db/PvpDefense'; import { getDonation } from './donateService'; @@ -363,17 +363,14 @@ function _assignServer(roleId: string, serverType: string) { let servers = pinus.app.getServersByType(serverType)||[]; let sum = servers.reduce((pre, cur) => pre + (cur['num']||0), 0); let id = ''; - if(sum <= 0) { - id = dispatch(roleId, servers, serverType)?.id; - } else { + if(sum > 0) { let serversWithWeight = servers.map(cur => ({...cur, weight: sum - (cur['num']||0)})); let { dic: server } = getRandEelmWithWeight(serversWithWeight); id = server?.id; } - - // if(id) { - // pinus.app.rpc.connector.connectorRemote.incServerNum.broadcast(id, 1); - // } + if(!id) { + id = dispatch(roleId, servers, serverType)?.id; + } return id } @@ -404,4 +401,5 @@ export async function leaveServer(session: FrontendOrBackendSession) { pinus.app.rpc.connector.connectorRemote.incServerNum.broadcast(order, -1); incServerNum(sid, -1); + incConnectorNum(sid, -1); } \ No newline at end of file diff --git a/game-server/app/services/redisService.ts b/game-server/app/services/redisService.ts index ae26dea94..48f1359c3 100644 --- a/game-server/app/services/redisService.ts +++ b/game-server/app/services/redisService.ts @@ -581,7 +581,7 @@ export async function incConnectorNum(sid: string, inc: number) { let { id, serverType, clientHost, clientPort, num = 0 } = json; let newNum = num + inc; if(newNum < 0) newNum = 0; - await redisClient().hsetAsync(REDIS_KEY.SYS_SERVER, id, JSON.stringify({ serverType, clientHost, clientPort, id, num: num + inc })); + await redisClient().hsetAsync(REDIS_KEY.SYS_SERVER, id, JSON.stringify({ serverType, clientHost, clientPort, id, num: newNum })); } /*************** 将connector服插入redis *******/ diff --git a/game-server/app/services/roleService.ts b/game-server/app/services/roleService.ts index 3e10af022..1d56325ff 100644 --- a/game-server/app/services/roleService.ts +++ b/game-server/app/services/roleService.ts @@ -32,8 +32,8 @@ export async function getTeraphStrengthenResult(role: RoleType, count: number, d if(!isEnough) break; // 消耗不足 - let num = getRandValueByMinMax(TERAPH_RANDOM.MIN, TERAPH_RANDOM.MAX); // 强化时随机增加 2-4 属性 - let arr = getRandEelm(attrs, num); // 随机出的属性id + // let num = getRandValueByMinMax(TERAPH_RANDOM.MIN, TERAPH_RANDOM.MAX); // 强化时随机增加 2-4 属性 + let arr = getRandEelm(attrs, 1); // 随机出的属性id let critical = getRandValueByMinMax(0, 100);//属性暴击率 if(teraph.criCount == undefined || teraph.count == undefined) { teraph.criCount = 0; diff --git a/web-server/app/controller/game.ts b/web-server/app/controller/game.ts index ecb16e203..ecaf50ed3 100644 --- a/web-server/app/controller/game.ts +++ b/web-server/app/controller/game.ts @@ -160,13 +160,14 @@ export default class GameController extends Controller { // select connector let sum = connectors.reduce((pre, cur) => pre + (cur['num']||0), 0); let res; - if(sum == 0) { - res = dispatch(userCode, connectors, 'connector'); - } else { + if(sum > 0) { let serversWithWeight = connectors.map(cur => ({...cur, weight: sum - (cur['num']||0)})); let randResult = getRandEelmWithWeight(serversWithWeight); res = randResult.dic; } + if(!res) { + res = dispatch(userCode, connectors, 'connector'); + } let { id, serverType, clientHost, clientPort, num = 0 } = res; await redisClient.hsetAsync(REDIS_KEY.SYS_SERVER, id, JSON.stringify({ serverType, clientHost, clientPort, id, num: num + 1 }));