From 6dfb5b26ef08b3a39f6bf0e19eeb99b1d71a40c9 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 6 May 2021 19:52:23 +0800 Subject: [PATCH] 1 --- server/gameserver/car.cc | 6 ++++++ server/gameserver/car.h | 1 + server/gameserver/player.cc | 6 +++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/server/gameserver/car.cc b/server/gameserver/car.cc index fe905de..489753d 100644 --- a/server/gameserver/car.cc +++ b/server/gameserver/car.cc @@ -197,3 +197,9 @@ float Car::GetRadius() abort(); return 0; } + +float Car::GetSpeed() +{ + float speed = hero_meta_->i->move_speed(); + return speed; +} diff --git a/server/gameserver/car.h b/server/gameserver/car.h index 51872f5..fdd7fd5 100644 --- a/server/gameserver/car.h +++ b/server/gameserver/car.h @@ -30,6 +30,7 @@ class Car : public Creature void GetOn(Human* passenger); void SyncPos(); virtual float GetRadius() override; + virtual float GetSpeed() override; private: int AllocSeat(); diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index b4e5eb7..ef29baa 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -164,7 +164,11 @@ void Player::UpdateMove() moved_frames = 0; return; } - _UpdateMove(std::max(1, (int)GetSpeed())); + if (GetCar() && GetCar()->IsDriver(this)) { + _UpdateMove(std::max(1, (int)GetCar()->GetSpeed())); + } else { + _UpdateMove(std::max(1, (int)GetSpeed())); + } if (GetLastCollisionDoor() && !TestCollision(room, GetLastCollisionDoor())) { SetLastCollisionDoor(nullptr); }