From cbc551ef399b0793ab42dc42534da0a62f4f6ae3 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 27 Mar 2023 16:49:12 +0800 Subject: [PATCH] 1 --- server/gameserver/car.cc | 4 +-- server/gameserver/creature.cc | 5 ++++ server/gameserver/creature.h | 1 + server/gameserver/hero.cc | 3 +- server/gameserver/human.cc | 8 ++---- server/gameserver/human.h | 1 - server/gameserver/moveableentity.h | 1 - server/gameserver/mt/Hero.cc | 29 ++++++++++++++------ server/gameserver/mtb/Hero.h | 44 +++++++++++++++--------------- server/gameserver/mtb/mtb.all.cc | 16 +++++------ server/tools/protobuild/mt.proto | 18 ++++++------ 11 files changed, 71 insertions(+), 59 deletions(-) diff --git a/server/gameserver/car.cc b/server/gameserver/car.cc index 45af0845..a01f22ae 100644 --- a/server/gameserver/car.cc +++ b/server/gameserver/car.cc @@ -277,9 +277,7 @@ float Car::GetRadius() float Car::GetSpeed() { - float speed = hero_meta_->move_speed(); - speed *= 1 + GetAbility()->GetAttrRate(kHAT_Speed); - return speed; + return Creature::GetSpeed(); } void Car::OnBulletHit(IBullet* bullet) diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index da92653b..a406d7fc 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -3056,3 +3056,8 @@ bool Creature::IsNearGas() float distance = GetPos().Distance2D2(p); return distance + GetRadius() * 2 + 20 > room->GetGasData().rad_new; } + +float Creature::GetSpeed() +{ + +} diff --git a/server/gameserver/creature.h b/server/gameserver/creature.h index fc67e039..6283df0b 100644 --- a/server/gameserver/creature.h +++ b/server/gameserver/creature.h @@ -135,6 +135,7 @@ class Creature : public MoveableEntity virtual const mt::Hero* GetHeroMeta() { return nullptr; }; virtual void FillMFObjectImage(Room* room, Human* hum, cs::MFCharacterImage* image_data) {}; virtual void SetPos(Position pos) override; + virtual float GetSpeed(); std::shared_ptr GetMovement() { return movement_; }; bool HasBuffEffect(int buff_effect_id); Buff* GetBuffByEffectId(int effect_id); diff --git a/server/gameserver/hero.cc b/server/gameserver/hero.cc index 47249578..d5664833 100644 --- a/server/gameserver/hero.cc +++ b/server/gameserver/hero.cc @@ -185,8 +185,7 @@ void Hero::OnBulletHit(IBullet* bullet) float Hero::GetSpeed() { - float speed = meta->move_speed(); - return speed; + return Creature::GetSpeed(); } void Hero::UpdateMove() diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 2353eb56..07645dc3 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -105,6 +105,8 @@ void Human::Initialize() float Human::GetSpeed() { + return Creature::GetSpeed(); + #if 0 { Buff* buff = GetBuffByEffectId(kBET_HoldShield); if (buff) { @@ -174,11 +176,7 @@ float Human::GetSpeed() speed *= mt::Param::s().water_move_coefficient; } return std::max(speed, 1.0f); -} - -float Human::GetSpeed4() -{ - return meta->move_speed4(); + #endif } bool Human::IsDead(Room * room) diff --git a/server/gameserver/human.h b/server/gameserver/human.h index dd22ba7a..e839acb3 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -142,7 +142,6 @@ class Human : public Creature virtual ~Human() override; virtual void Initialize() override; virtual float GetSpeed() override; - virtual float GetSpeed4(); virtual void FillMFObjectPart(Room* room, Human* hum, cs::MFObjectPart* part_data) override; void FillMFObjectLess(Room* room, Human* hum, cs::MFPlayerFull* full_data); virtual void FillMFObjectFull(Room* room, Human* hum, cs::MFObjectFull* full_data) override; diff --git a/server/gameserver/moveableentity.h b/server/gameserver/moveableentity.h index e3fff2fd..fe7cce5f 100644 --- a/server/gameserver/moveableentity.h +++ b/server/gameserver/moveableentity.h @@ -16,7 +16,6 @@ class MoveableEntity : public RoomEntity void TraverseAllLayerEntityList(std::function func); void TraverseAllLayerHumanList(std::function func); - virtual float GetSpeed() { return 1.0f;}; virtual void RefreshView(); virtual void OnGridListChange(std::set& old_grids, std::set& inc_grids, diff --git a/server/gameserver/mt/Hero.cc b/server/gameserver/mt/Hero.cc index 4e3ca271..4e2df365 100644 --- a/server/gameserver/mt/Hero.cc +++ b/server/gameserver/mt/Hero.cc @@ -87,15 +87,26 @@ namespace mt } } { - if (move_speed() >= 20) { - move_speed_ /= 20.0f; - jump_speed_ /= 20.0f; - move_speed3_ /= 20.0f; - shot_speed_ /= 20.0f; - aiming_speed_ /= 20.0f; - move_speed4_ /= 20.0f; - reload_speed_ /= 20.0f; - useitem_speed_ /= 20.0f; + if (jump_speed() < 0.0001f) { + jump_speed_ = 1.0f; + } + if (fall_speed() < 0.0001f) { + fall_speed_ = 1.0f; + } + if (aim_speed() < 0.0001f) { + aim_speed_ = 1.0f; + } + if (shoot_speed() < 0.0001f) { + shoot_speed_ = 1.0f; + } + if (reload_speed() < 0.0001f) { + reload_speed_ = 1.0f; + } + if (medicine_speed() < 0.0001f) { + medicine_speed_ = 1.0f; + } + if (swim_speed() < 0.0001f) { + swim_speed_ = 1.0f; } } } diff --git a/server/gameserver/mtb/Hero.h b/server/gameserver/mtb/Hero.h index 1ba5aaf0..72c2dde9 100644 --- a/server/gameserver/mtb/Hero.h +++ b/server/gameserver/mtb/Hero.h @@ -12,14 +12,14 @@ namespace mtb a8::reflect::Class* GetClass() const; int id() const { return id_; }; float radius() const { return radius_; }; - int move_speed() const { return move_speed_; }; - int jump_speed() const { return jump_speed_; }; - int move_speed3() const { return move_speed3_; }; - int shot_speed() const { return shot_speed_; }; - int aiming_speed() const { return aiming_speed_; }; - int move_speed4() const { return move_speed4_; }; - int reload_speed() const { return reload_speed_; }; - int useitem_speed() const { return useitem_speed_; }; + float move_speed() const { return move_speed_; }; + float jump_speed() const { return jump_speed_; }; + float fall_speed() const { return fall_speed_; }; + float aim_speed() const { return aim_speed_; }; + float shoot_speed() const { return shoot_speed_; }; + float reload_speed() const { return reload_speed_; }; + float medicine_speed() const { return medicine_speed_; }; + float swim_speed() const { return swim_speed_; }; const std::string volume() const { return volume_; }; int level() const { return level_; }; int race() const { return race_; }; @@ -56,12 +56,12 @@ namespace mtb bool has_radius() const { return __flags__.test(1);}; bool has_move_speed() const { return __flags__.test(2);}; bool has_jump_speed() const { return __flags__.test(3);}; - bool has_move_speed3() const { return __flags__.test(4);}; - bool has_shot_speed() const { return __flags__.test(5);}; - bool has_aiming_speed() const { return __flags__.test(6);}; - bool has_move_speed4() const { return __flags__.test(7);}; - bool has_reload_speed() const { return __flags__.test(8);}; - bool has_useitem_speed() const { return __flags__.test(9);}; + bool has_fall_speed() const { return __flags__.test(4);}; + bool has_aim_speed() const { return __flags__.test(5);}; + bool has_shoot_speed() const { return __flags__.test(6);}; + bool has_reload_speed() const { return __flags__.test(7);}; + bool has_medicine_speed() const { return __flags__.test(8);}; + bool has_swim_speed() const { return __flags__.test(9);}; bool has_volume() const { return __flags__.test(10);}; bool has_level() const { return __flags__.test(11);}; bool has_race() const { return __flags__.test(12);}; @@ -98,14 +98,14 @@ namespace mtb int id_ = 0; float radius_ = 0.0f; - int move_speed_ = 0; - int jump_speed_ = 0; - int move_speed3_ = 0; - int shot_speed_ = 0; - int aiming_speed_ = 0; - int move_speed4_ = 0; - int reload_speed_ = 0; - int useitem_speed_ = 0; + float move_speed_ = 0.0f; + float jump_speed_ = 0.0f; + float fall_speed_ = 0.0f; + float aim_speed_ = 0.0f; + float shoot_speed_ = 0.0f; + float reload_speed_ = 0.0f; + float medicine_speed_ = 0.0f; + float swim_speed_ = 0.0f; std::string volume_; int level_ = 0; int race_ = 0; diff --git a/server/gameserver/mtb/mtb.all.cc b/server/gameserver/mtb/mtb.all.cc index 73ca8dee..1cdc3600 100644 --- a/server/gameserver/mtb/mtb.all.cc +++ b/server/gameserver/mtb/mtb.all.cc @@ -300,14 +300,14 @@ namespace mtb meta_class = new a8::reflect::Class("Hero", 41, 0); meta_class->SetSimpleField(0, "id", a8::reflect::ET_INT32, my_offsetof2(Hero, id_)); meta_class->SetSimpleField(1, "radius", a8::reflect::ET_FLOAT, my_offsetof2(Hero, radius_)); - meta_class->SetSimpleField(2, "move_speed", a8::reflect::ET_INT32, my_offsetof2(Hero, move_speed_)); - meta_class->SetSimpleField(3, "jump_speed", a8::reflect::ET_INT32, my_offsetof2(Hero, jump_speed_)); - meta_class->SetSimpleField(4, "move_speed3", a8::reflect::ET_INT32, my_offsetof2(Hero, move_speed3_)); - meta_class->SetSimpleField(5, "shot_speed", a8::reflect::ET_INT32, my_offsetof2(Hero, shot_speed_)); - meta_class->SetSimpleField(6, "aiming_speed", a8::reflect::ET_INT32, my_offsetof2(Hero, aiming_speed_)); - meta_class->SetSimpleField(7, "move_speed4", a8::reflect::ET_INT32, my_offsetof2(Hero, move_speed4_)); - meta_class->SetSimpleField(8, "reload_speed", a8::reflect::ET_INT32, my_offsetof2(Hero, reload_speed_)); - meta_class->SetSimpleField(9, "useitem_speed", a8::reflect::ET_INT32, my_offsetof2(Hero, useitem_speed_)); + meta_class->SetSimpleField(2, "move_speed", a8::reflect::ET_FLOAT, my_offsetof2(Hero, move_speed_)); + meta_class->SetSimpleField(3, "jump_speed", a8::reflect::ET_FLOAT, my_offsetof2(Hero, jump_speed_)); + meta_class->SetSimpleField(4, "fall_speed", a8::reflect::ET_FLOAT, my_offsetof2(Hero, fall_speed_)); + meta_class->SetSimpleField(5, "aim_speed", a8::reflect::ET_FLOAT, my_offsetof2(Hero, aim_speed_)); + meta_class->SetSimpleField(6, "shoot_speed", a8::reflect::ET_FLOAT, my_offsetof2(Hero, shoot_speed_)); + meta_class->SetSimpleField(7, "reload_speed", a8::reflect::ET_FLOAT, my_offsetof2(Hero, reload_speed_)); + meta_class->SetSimpleField(8, "medicine_speed", a8::reflect::ET_FLOAT, my_offsetof2(Hero, medicine_speed_)); + meta_class->SetSimpleField(9, "swim_speed", a8::reflect::ET_FLOAT, my_offsetof2(Hero, swim_speed_)); meta_class->SetSimpleField(10, "volume", a8::reflect::ET_STRING, my_offsetof2(Hero, volume_)); meta_class->SetSimpleField(11, "level", a8::reflect::ET_INT32, my_offsetof2(Hero, level_)); meta_class->SetSimpleField(12, "race", a8::reflect::ET_INT32, my_offsetof2(Hero, race_)); diff --git a/server/tools/protobuild/mt.proto b/server/tools/protobuild/mt.proto index a2ddbcb3..45894357 100755 --- a/server/tools/protobuild/mt.proto +++ b/server/tools/protobuild/mt.proto @@ -217,14 +217,16 @@ message Hero { optional int32 id = 1; //唯一id optional float radius = 2; //半径 - optional int32 move_speed = 4; //移动速度 - optional int32 jump_speed = 5; //跳伞速度 - optional int32 move_speed3 = 6; - optional int32 shot_speed = 7; - optional int32 aiming_speed = 8; - optional int32 move_speed4 = 10; //移动速度4 - optional int32 reload_speed = 9; - optional int32 useitem_speed = 49; + + optional float move_speed = 4; //移动速度 + optional float jump_speed = 5; //跳伞速度 + optional float fall_speed = 6; + optional float aim_speed = 8; + optional float shoot_speed = 7; + optional float reload_speed = 9; + optional float medicine_speed = 10; //移动速度4 + optional float swim_speed = 49; + optional string volume = 12; //初始库存 optional int32 level = 13; optional int32 race = 14;