From 1ba97eabe0cf0c3f702b17555670611b905adb46 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 3 Apr 2023 10:08:51 +0800 Subject: [PATCH] 1 --- server/gameserver/obstacle.cc | 1 + server/gameserver/obstacle.h | 1 + server/gameserver/pbutils.cc | 1 + server/tools/protobuild/cs_proto.proto | 1 + 4 files changed, 4 insertions(+) diff --git a/server/gameserver/obstacle.cc b/server/gameserver/obstacle.cc index 1ae17e89..0feeb255 100644 --- a/server/gameserver/obstacle.cc +++ b/server/gameserver/obstacle.cc @@ -294,6 +294,7 @@ bool Obstacle::DoInteraction(Human* sender) default: { if (!IsDead(sender->room) && IsOpenInteraction()) { + dead_reason = 1; Die(sender->room); sender->DropItems(this); BroadcastFullState(sender->room); diff --git a/server/gameserver/obstacle.h b/server/gameserver/obstacle.h index 13e0ab9f..41b6aeb4 100644 --- a/server/gameserver/obstacle.h +++ b/server/gameserver/obstacle.h @@ -15,6 +15,7 @@ class Obstacle : public Entity MapService* permanent_map_service = nullptr; bool is_permanent = false; float scale = 1.0f; + int dead_reason = 0; virtual ~Obstacle() override; virtual void Initialize() override; diff --git a/server/gameserver/pbutils.cc b/server/gameserver/pbutils.cc index 19b5e07f..ecdc05e3 100644 --- a/server/gameserver/pbutils.cc +++ b/server/gameserver/pbutils.cc @@ -451,6 +451,7 @@ void Obstacle::FillMFObjectFull(Room* room, Human* hum, cs::MFObjectFull* full_d p->set_health(GetHealth(room)); p->set_dead(IsDead(room)); p->set_dead_at_thisframe(IsDead(room) ? GetDeadFrameNo(room) <= room->GetFrameNo() : false); + p->set_dead_reason(dead_reason); if (!IsPermanent()) { RoomObstacle* ob = (RoomObstacle*)this; diff --git a/server/tools/protobuild/cs_proto.proto b/server/tools/protobuild/cs_proto.proto index 9a053f19..9a750ec0 100755 --- a/server/tools/protobuild/cs_proto.proto +++ b/server/tools/protobuild/cs_proto.proto @@ -359,6 +359,7 @@ message MFObstacleFull optional float health = 7; //血量 optional bool dead = 8; //是否已死亡 optional bool dead_at_thisframe = 9; //是否当前帧死亡(播放死亡特效) + optional int32 dead_reason = 42 [default = 0]; //死亡原因 0:被打 1:被开 optional bool is_door = 20; //是否门 //只有当is_door==ture时以下字段才有意义