From 193073bf9dd58f82e30c19afa059ebb7397ade73 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 8 Mar 2021 20:00:44 +0800 Subject: [PATCH] 1 --- server/gameserver/human.cc | 8 ++------ server/gameserver/obstacle.h | 1 + server/gameserver/roomobstacle.cc | 5 +++++ server/gameserver/roomobstacle.h | 1 + server/tools/protobuild/metatable.proto | 1 + 5 files changed, 10 insertions(+), 6 deletions(-) diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index a1c706e..c345cb4 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -586,16 +586,12 @@ bool Human::IsCollisionInMapService() case ET_Obstacle: { Obstacle* obstacle = (Obstacle*)collider->owner; -#if 1 if (!obstacle->IsDead(room) && ( (collider->type == CT_Aabb && aabb_box.Intersect((ColliderComponent*)collider)) || (collider->type == CT_Circle && self_collider_->Intersect((ColliderComponent*)collider)) - ) - ) { -#else - if (!collider->owner->dead && TestCollision((ColliderComponent*)collider)) { -#endif + ) && + !obstacle->CanThroughable(this)) { if (last_collision_door_ != collider->owner) { if (!obstacle->IsDead(room) && obstacle->Attackable() && diff --git a/server/gameserver/obstacle.h b/server/gameserver/obstacle.h index cb55fd7..8427265 100644 --- a/server/gameserver/obstacle.h +++ b/server/gameserver/obstacle.h @@ -37,6 +37,7 @@ class Obstacle : public Entity virtual long long GetDeadFrameNo(Room* room) override; virtual void OnPreCollision(Room* room) override; virtual bool IsTerminatorAirDropBox(Room* room) { return false; } + virtual bool CanThroughable(Human* num) { return false; } void Explosion(Bullet* bullet); void SetDoorInfo(Building* building, int door_id_x); bool IsDoor(); diff --git a/server/gameserver/roomobstacle.cc b/server/gameserver/roomobstacle.cc index 0fcb50a..b0df082 100644 --- a/server/gameserver/roomobstacle.cc +++ b/server/gameserver/roomobstacle.cc @@ -82,3 +82,8 @@ void RoomObstacle::RecalcSelfCollider() #endif } } + +bool RoomObstacle::CanThroughable(Human* num) +{ + return true; +} diff --git a/server/gameserver/roomobstacle.h b/server/gameserver/roomobstacle.h index e4df4d3..96a4df8 100644 --- a/server/gameserver/roomobstacle.h +++ b/server/gameserver/roomobstacle.h @@ -14,6 +14,7 @@ class RoomObstacle : public Obstacle virtual void Initialize() override; virtual void RecalcSelfCollider() override; virtual bool IsTerminatorAirDropBox(Room* room) override { return is_terminator_airdrop_box; } + virtual bool CanThroughable(Human* num) override; protected: RoomObstacle(); diff --git a/server/tools/protobuild/metatable.proto b/server/tools/protobuild/metatable.proto index dd497ab..d06f46d 100755 --- a/server/tools/protobuild/metatable.proto +++ b/server/tools/protobuild/metatable.proto @@ -102,6 +102,7 @@ message Equip optional string param1 = 43; optional int32 reloadtype = 46; optional float Recoil_force = 47; + optional float missiles_time = 48; optional string inventory_slot = 31; //库存槽位 optional int32 _inventory_slot = 32; //库存槽位