diff --git a/server/gameserver/obstacle.cc b/server/gameserver/obstacle.cc index d1fe53f..d3cdf2c 100644 --- a/server/gameserver/obstacle.cc +++ b/server/gameserver/obstacle.cc @@ -94,6 +94,7 @@ void Obstacle::FillMFObjectFull(cs::MFObjectFull* full_data) p->set_is_door(is_door); if (is_door) { p->set_door_id(door_id); + p->set_door_open_times(door_open_times); p->set_door_old_state((int)door_state); p->set_door_new_state((int)door_state); p->set_door_house_uniid(door_house_uniid); diff --git a/server/gameserver/obstacle.h b/server/gameserver/obstacle.h index befc090..13f4a7b 100644 --- a/server/gameserver/obstacle.h +++ b/server/gameserver/obstacle.h @@ -30,6 +30,7 @@ class Obstacle : public Entity bool is_door = false; int door_id = 0; + int door_open_times = 0; DoorState_e door_state = DoorStateClose; Building* building = nullptr; int door_house_uniid = 0; diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index c03f2de..4f82b81 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -586,6 +586,7 @@ void Player::ObstacleInteraction(Obstacle* entity) entity->pos = Vector2D(entity->building->pos.x + entity->door_state0->x() - entity->building->meta->i->tilewidth() / 2.0, entity->building->pos.y + entity->door_state0->y() - entity->building->meta->i->tileheight() / 2.0); } + ++entity->door_open_times; entity->RecalcSelfCollider(); room->TouchHumanList(a8::XParams(), [entity] (Human* hum, a8::XParams& param) -> bool