From 4c0aa66ca22bc368eb867a824cc600396e368026 Mon Sep 17 00:00:00 2001 From: zhl Date: Mon, 7 Dec 2020 13:21:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E7=A7=BB=E9=99=A4=E9=9A=8F?= =?UTF-8?q?=E4=BB=8E=E7=9A=84=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/global.d.ts | 3 ++- src/message/RemovePetMsg.ts | 21 +++++++++++++++++++++ src/rooms/MSender.ts | 17 +++++++++++++++-- 3 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 src/message/RemovePetMsg.ts diff --git a/src/global.d.ts b/src/global.d.ts index 2e72240..72bc077 100644 --- a/src/global.d.ts +++ b/src/global.d.ts @@ -17,6 +17,7 @@ import {PetInfoMsg} from "./message/PetInfo"; import {BattleHandler} from "./rooms/logic/Handler/BattleHandler"; import {SkillInfoData, SkillInfoMsg} from "./message/SkillInfo"; import {PartResultMsg} from "./message/PartResult"; +import {RemovePetMsg} from "./message/RemovePetMsg"; /** * GeneralRoom 扩展方法 */ @@ -102,7 +103,7 @@ declare module "colyseus" { * @param data * @param options */ - bRemovePet(data?: any, options?: any): void; + bRemovePet(data?: RemovePetMsg, options?: any): void; /** * 广播游戏进行中的决斗结果 diff --git a/src/message/RemovePetMsg.ts b/src/message/RemovePetMsg.ts new file mode 100644 index 0000000..a11ac61 --- /dev/null +++ b/src/message/RemovePetMsg.ts @@ -0,0 +1,21 @@ +import {IMsg} from "./IMsg"; + +/** + * 移除随从的消息 + */ +export class RemovePetMsg implements IMsg { + data: any; + errcode: number; + errmsg?: string; + type?: string; + + + constructor(data: { + id: number, + player: string, + pos: number, + }) { + this.errcode = 0; + this.data = data; + } +} diff --git a/src/rooms/MSender.ts b/src/rooms/MSender.ts index 96f8622..0eb8076 100644 --- a/src/rooms/MSender.ts +++ b/src/rooms/MSender.ts @@ -4,6 +4,7 @@ import {PetInfoMsg} from "../message/PetInfo"; import {SkillInfoMsg} from "../message/SkillInfo"; import {Pet} from "./schema/Pet"; import {PartResultMsg} from "../message/PartResult"; +import {RemovePetMsg} from "../message/RemovePetMsg"; /** * 一些封装了的下发消息的方法 @@ -161,8 +162,20 @@ Object.defineProperties(Room.prototype, { * @param options */ bRemovePet: { - value: function (data?: any, options?: any) { - + value: function (data?: RemovePetMsg, options?: any) { + let obj = data.data; + let pid = obj.player; + let player = this.state.players.get(pid); + if (!player) { + return; + } + let pet = player.pets.get(obj.pos); + if (!pet) { + return; + } + pet.ap = 0; + pet.state = 2; + player.pets.set(obj.pos + '', pet); this.broadcast('remove_pet_s2c', data, options); } },