diff --git a/server/gameserver/android.cc b/server/gameserver/android.cc index 3624ecb..bacaf36 100644 --- a/server/gameserver/android.cc +++ b/server/gameserver/android.cc @@ -36,9 +36,6 @@ void Android::Update(int delta_time) pos = room->plane.curr_pos; room->grid_service.MoveHuman(this); } - if (action_type != AT_None) { - UpdateAction(); - } ai->Update(delta_time); } diff --git a/server/gameserver/frameevent.cc b/server/gameserver/frameevent.cc index 80a63e1..57e0fd2 100644 --- a/server/gameserver/frameevent.cc +++ b/server/gameserver/frameevent.cc @@ -84,42 +84,6 @@ void FrameEvent::AddBullet(Human* hum, a8::Vec2 born_pos, a8::Vec2 dir, float fl } p.set_fly_distance(fly_distance); } - { - int bullet_idx = bullets_.size() - 1; - for (auto& cell : hum->grid_list) { - for (auto& hum : cell->human_list) { - hum->bullets_.push_back(bullet_idx); - } - } - } -} - -void FrameEvent::AddBulletNumChg(Human* hum) -{ - chged_bullet_nums_.push_back(hum); - int idx = chged_bullet_nums_.size() - 1; - hum->chged_bullet_nums_.push_back(idx); -} - -void FrameEvent::AddTankBulletNumChg(Human* hum) -{ - chged_tank_bullet_nums_.push_back(hum); - int idx = chged_tank_bullet_nums_.size() - 1; - hum->chged_tank_bullet_nums_.push_back(idx); -} - -void FrameEvent::AddTankOilValueChg(Human* hum) -{ - chged_tank_oil_value_.push_back(hum); - int idx = chged_tank_oil_value_.size() - 1; - hum->chged_tank_oil_value_.push_back(idx); -} - -void FrameEvent::AddTankOilMaxChg(Human* hum) -{ - chged_tank_oil_max_.push_back(hum); - int idx = chged_tank_oil_max_.size() - 1; - hum->chged_tank_oil_max_.push_back(idx); } void FrameEvent::AddHpChg(Human* hum) diff --git a/server/gameserver/framemaker.cc b/server/gameserver/framemaker.cc index 9b3a1c9..f23c611 100644 --- a/server/gameserver/framemaker.cc +++ b/server/gameserver/framemaker.cc @@ -51,80 +51,6 @@ cs::SMUpdate* FrameMaker::MakeUpdateMsg(const Human* hum) } } } - for (size_t idx : hum->bullets_) { - if (idx < room->frame_event.bullets_.size()) { - auto& tuple = room->frame_event.bullets_[idx]; - if (hum->CanSee(std::get<0>(tuple))) { - *msg->add_bullets() = std::get<1>(tuple); - } - } - } - for (size_t idx : hum->explosions_) { - if (idx < room->frame_event.explosions_.size()) { - auto& tuple = room->frame_event.explosions_[idx]; - if (hum->CanSee(std::get<0>(tuple))) { - *msg->add_explosions() = std::get<1>(tuple); - } - } - } - for (size_t idx : hum->smokes_) { - if (idx < room->frame_event.smokes_.size()) { - auto& tuple = room->frame_event.smokes_[idx]; - if (hum->CanSee(std::get<0>(tuple))) { - *msg->add_smokes() = std::get<1>(tuple); - } - } - } - for (size_t idx : hum->emotes_) { - if (idx < room->frame_event.emotes_.size()) { - auto& tuple = room->frame_event.emotes_[idx]; - if (hum->CanSee(std::get<0>(tuple))) { - *msg->add_emotes() = std::get<1>(tuple); - } - } - } - for (size_t idx : hum->chged_bullet_nums_) { - if (idx < room->frame_event.chged_bullet_nums_.size()) { - Human* target = room->frame_event.chged_bullet_nums_[idx]; - if (target->curr_weapon) { - auto p = msg->add_chged_property_list(); - p->set_obj_id(target->entity_uniid); - p->set_property_type(kPropBulletNum); - p->set_value(target->curr_weapon->ammo); - } - } - } - for (size_t idx : hum->chged_tank_bullet_nums_) { - if (idx < room->frame_event.chged_tank_bullet_nums_.size()) { - Human* target = room->frame_event.chged_tank_bullet_nums_[idx]; - if (target->curr_weapon) { - auto p = msg->add_chged_property_list(); - p->set_obj_id(target->entity_uniid); - p->set_property_type(kPropTankBulletNum); - p->set_value(target->tank_weapon.ammo); - } - } - } - for (size_t idx : hum->chged_tank_oil_max_) { - if (idx < room->frame_event.chged_tank_oil_max_.size()) { - Human* target = room->frame_event.chged_tank_oil_max_[idx]; - auto p = msg->add_chged_property_list(); - p->set_obj_id(target->entity_uniid); - p->set_property_type(kPropTankOil); - p->set_property_subtype(1); - p->set_value(target->tank_oil_max); - } - } - for (size_t idx : hum->chged_tank_oil_value_) { - if (idx < room->frame_event.chged_tank_oil_value_.size()) { - Human* target = room->frame_event.chged_tank_oil_value_[idx]; - auto p = msg->add_chged_property_list(); - p->set_obj_id(target->entity_uniid); - p->set_property_type(kPropTankOil); - p->set_property_subtype(0); - p->set_value(target->tank_oil_value); - } - } for (size_t idx : hum->chged_hps_) { if (idx < room->frame_event.chged_hps_.size()) { Human* target = room->frame_event.chged_hps_[idx]; diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 4a46caa..20de76c 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -76,9 +76,7 @@ float Human::GetSpeed() if (shot_hold) { if (curr_weapon->weapon_idx == GUN_SLOT1 || curr_weapon->weapon_idx == GUN_SLOT2) { - if (action_type != AT_Reload) { - return meta->i->shot_speed(); - } + return meta->i->shot_speed(); } } return meta->i->move_speed() + buff.speed; @@ -465,70 +463,6 @@ void Human::SyncAroundPlayers(const char* file, int line, const char* func) } } -void Human::AutoLoadingBullet(bool manual) -{ - if (curr_weapon->weapon_idx != 0 && - (curr_weapon->ammo <= 0 || - (manual && curr_weapon->ammo < curr_weapon->GetClipVolume())) - ) { - MetaData::Equip* bullet_meta = MetaMgr::Instance()->GetEquip(curr_weapon->meta->i->use_bullet()); - if (bullet_meta && - bullet_meta->i->_inventory_slot() >= 0 && - bullet_meta->i->_inventory_slot() < (int)inventory_.size() - ) { - if (GetInventory(bullet_meta->i->_inventory_slot()) > 0) { - StartAction(AT_Reload, - curr_weapon->meta->i->reload_time(), - curr_weapon->weapon_id, - curr_weapon->weapon_idx); - } - } - return; - } -} - -void Human::StartAction(ActionType_e action_type, - int action_duration, - int item_id, - int target_id) -{ - if (this->action_type == action_type && - this->action_item_id == item_id && - this->action_target_id == target_id) { - return; - } - this->action_type = action_type; - this->action_frameno = room->frame_no; - this->action_duration = action_duration; - this->action_item_id = item_id; - this->action_target_id = target_id; - need_sync_active_player = true; -} - -void Human::CancelAction() -{ - if (action_type == AT_Relive) { - Entity* entity = room->GetEntityByUniId(action_target_id); - if (entity->entity_type != ET_Player) { - Human* hum = (Human*)entity; - if (hum->action_type == AT_Rescue) { - hum->CancelAction(); - } - } - } - ResetAction(); -} - -void Human::ResetAction() -{ - action_type = AT_None; - action_duration = 0; - action_frameno = 0; - action_item_id = 0; - action_target_id = 0; - need_sync_active_player = true; -} - void Human::FillSMGameOver(cs::SMGameOver& msg) { if (stats.rank <= 0) { @@ -1154,18 +1088,6 @@ void Human::OnGridListChange(std::set& old_grid_list, void Human::FillMFActivePlayerData(cs::MFActivePlayerData* player_data) { - { - player_data->set_action_type(action_type); - if (action_type != AT_None) { - int duration = std::max(0, - action_duration - - (int)((room->frame_no - action_frameno) * 1.0f / SERVER_FRAME_RATE) * 1000 - ); - player_data->set_action_item_id(action_item_id); - player_data->set_action_duration(duration); - player_data->set_action_target_id(action_target_id); - } - } skin.ToPB(player_data->mutable_skin()); player_data->set_backpack(backpack); player_data->set_helmet(helmet); @@ -1557,142 +1479,6 @@ void Human::SendRollMsg(const std::string& roll_msg) ); } -void Human::UpdateAction() -{ - int duration = std::max(0, - action_duration - - (int)((room->frame_no - action_frameno) * 1.0f / SERVER_FRAME_RATE) * 1000 - ); - if (duration <= 0) { - switch (action_type) { - case AT_Reload: - { - if (curr_weapon->weapon_idx == action_target_id && - curr_weapon->weapon_id == action_item_id && - curr_weapon->weapon_idx != 0) { - MetaData::Equip* bullet_meta = MetaMgr::Instance()->GetEquip(curr_weapon->meta->i->use_bullet()); - if (bullet_meta) { - int ammo = curr_weapon->ammo; - if (ammo < curr_weapon->GetClipVolume()) { - if (bullet_meta->i->_inventory_slot() >= 0 && - bullet_meta->i->_inventory_slot() < IS_END) { - if (GetInventory(bullet_meta->i->_inventory_slot()) > 0) { - int add_num = 0; - if (GetInventory(bullet_meta->i->_inventory_slot()) <= - curr_weapon->GetClipVolume() - ammo) { - add_num = GetInventory(bullet_meta->i->_inventory_slot()); - DecInventory(bullet_meta->i->_inventory_slot(), add_num); - } else { - add_num = curr_weapon->GetClipVolume() - ammo; - DecInventory(bullet_meta->i->_inventory_slot(), add_num); - } - curr_weapon->ammo += add_num; - need_sync_active_player = true;; - } - } - } - } - } - } - break; - case AT_UseItem: - { - switch (action_item_id) { - case IS_HEALTHKIT: - { - MetaData::Equip* item_meta = MetaMgr::Instance()->GetEquipBySlotId(action_item_id); - if (item_meta){ - if (GetInventory(item_meta->i->_inventory_slot()) > 0) { - float old_health = health; - health += item_meta->i->heal(); - health = std::min(health, GetMaxHP()); - stats.heal_amount += health - old_health; - DecInventory(item_meta->i->_inventory_slot(), 1); - need_sync_active_player = true; - SyncAroundPlayers(__FILE__, __LINE__, __func__); - } - } - } - break; - case IS_PAIN_KILLER: - { - MetaData::Equip* item_meta = MetaMgr::Instance()->GetEquipBySlotId(action_item_id); - if (item_meta){ - if (GetInventory(item_meta->i->_inventory_slot()) > 0) { - if (pain_killer_timer) { - int passed_time = (room->frame_no - pain_killer_frameno) * FRAME_RATE_MS; - int left_time = std::max(0, pain_killer_lastingtime * 1000 - passed_time); - int anodyne_max_time = MetaMgr::Instance()->GetSysParamAsInt("anodyne_max_time"); - left_time = std::min(left_time, anodyne_max_time * 1000); - pain_killer_lastingtime += std::min(item_meta->i->time() * 1000, anodyne_max_time * 1000 - left_time) / 1000; - need_sync_active_player = true; - } else { - pain_killer_frameno = room->frame_no; - pain_killer_lastingtime = item_meta->i->time(); - pain_killer_timer = room->xtimer.AddRepeatTimerAndAttach( - SERVER_FRAME_RATE, - a8::XParams() - .SetSender(this) - .SetParam1(item_meta->i->heal()), - [] (const a8::XParams& param) - { - Human* hum = (Human*)param.sender.GetUserData(); - float old_health = hum->health; - hum->health += param.param1.GetDouble(); - hum->health = std::min(hum->health, hum->GetMaxHP()); - hum->stats.heal_amount += hum->health - old_health; - hum->SyncAroundPlayers(__FILE__, __LINE__, __func__); - if (hum->room->frame_no - hum->pain_killer_frameno > hum->pain_killer_lastingtime * SERVER_FRAME_RATE) { - hum->room->xtimer.DeleteTimer(hum->pain_killer_timer); - hum->pain_killer_timer = nullptr; - } - }, - &xtimer_attacher.timer_list_ - ); - } - DecInventory(item_meta->i->_inventory_slot(), 1); - need_sync_active_player = true; - } - } - } - break; - default: - { - } - break; - } - } - break; - case AT_Relive: - { - Entity* entity = room->GetEntityByUniId(action_target_id); - if (entity->entity_type != ET_Player) { - return; - } - Human* hum = (Human*)entity; - if (hum->action_type == AT_Rescue) { - hum->CancelAction(); - return; - } - if (!hum->dead && hum->downed) { - hum->health = MetaMgr::Instance()->GetSysParamAsInt("downed_relive_recover_hp"); - hum->downed = false; - if (hum->downed_timer) { - room->xtimer.DeleteTimer(hum->downed_timer); - hum->downed_timer = nullptr; - } - ++hum->stats.rescue_member; - } - hum->SyncAroundPlayers(__FILE__, __LINE__, __func__); - } - break; - default: - break; - } - ResetAction(); - } -} - void Human::SendUIUpdate() { cs::SMUiUpdate notifymsg; @@ -1872,30 +1658,9 @@ void Human::ClearFrameData() if (!shots_.empty()) { shots_.clear(); } - if (!bullets_.empty()) { - bullets_.clear(); - } - if (!explosions_.empty()) { - explosions_.clear(); - } - if (!smokes_.empty()) { - smokes_.clear(); - } if (!emotes_.empty()) { emotes_.clear(); } - if (!chged_bullet_nums_.empty()) { - chged_bullet_nums_.clear(); - } - if (!chged_tank_bullet_nums_.empty()) { - chged_tank_bullet_nums_.clear(); - } - if (!chged_tank_oil_value_.empty()){ - chged_tank_oil_value_.clear(); - } - if (!chged_tank_oil_max_.empty()){ - chged_tank_oil_max_.clear(); - } if (!chged_hps_.empty()) { chged_hps_.clear(); } @@ -2095,7 +1860,6 @@ void Human::ProcLootSkin(Loot* entity, MetaData::Equip* item_meta) } a8::XParams* mutable_param = hum->room->xtimer.MutableParams(hum->room->xtimer.GetRunningTimer()); if (std::abs(mutable_param->param2.GetDouble() - (double)hum->tank_oil_value) > 0.1f) { - hum->room->frame_event.AddTankOilValueChg(hum); mutable_param->param2 = hum->tank_oil_value; } }; @@ -2132,9 +1896,6 @@ void Human::ProcLootSkin(Loot* entity, MetaData::Equip* item_meta) SyncAroundPlayers(__FILE__, __LINE__, __func__); room->TakeOnCarObject(skin_tank.tank_uniid); room->NotifyUiUpdate(); - room->frame_event.AddTankBulletNumChg(this); - room->frame_event.AddTankOilMaxChg(this); - room->frame_event.AddTankOilValueChg(this); room->xtimer.AddRepeatTimerAndAttach( SERVER_FRAME_RATE, a8::XParams() @@ -2229,14 +1990,6 @@ void Human::OnDie() { room->OnHumanDie(this); SyncAroundPlayers(__FILE__, __LINE__, __func__); - if (team_members) { - for (auto& hum : *team_members) { - if (hum != this && hum->action_type == AT_Relive && - hum->action_target_id == entity_uniid) { - hum->CancelAction(); - } - } - } { std::set over_humans; if (!leave_) { diff --git a/server/gameserver/human.h b/server/gameserver/human.h index 6c6ecc1..47ca750 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -65,11 +65,6 @@ class Human : public Entity bool disconnected = false; int anim_type = 0; int anim_seq = 0; - ActionType_e action_type = AT_None; - long long action_frameno = 0; - int action_duration = 0; - int action_item_id = 0; - int action_target_id = 0; Skin skin_jlf; Skin skin_tank; int backpack = 0; @@ -151,13 +146,6 @@ class Human : public Entity float GetMaxHP(); void UpdatePoisoning(); void SyncAroundPlayers(const char* file, int line, const char* func); - void AutoLoadingBullet(bool manual = false); - void StartAction(ActionType_e action_type, - int action_duration, - int item_id, - int target_id); - void CancelAction(); - void ResetAction(); void BeKill(int killer_id, const std::string& killer_name, int weapon_id); void DecHP(float dec_hp, int killer_id, const std::string& killer_name, int weapon_id); void AddToNewObjects(Entity* entity); @@ -203,7 +191,6 @@ class Human : public Entity void FollowTarget(Human* target); void SendDebugMsg(const std::string& debug_msg); void SendRollMsg(const std::string& roll_msg); - void UpdateAction(); void SendUIUpdate(); void SendWxVoip(); int GetWeaponConfigLv(int weapon_id); @@ -252,12 +239,9 @@ protected: std::set out_objects; std::vector shots_; std::vector emotes_; - std::vector bullets_; std::vector smokes_; std::vector explosions_; std::set observers_; - std::vector chged_bullet_nums_; - std::vector chged_tank_bullet_nums_; std::vector chged_tank_oil_value_; std::vector chged_tank_oil_max_; std::vector chged_hps_; diff --git a/server/gameserver/obstacle.cc b/server/gameserver/obstacle.cc index 7ec5c8e..08bd055 100644 --- a/server/gameserver/obstacle.cc +++ b/server/gameserver/obstacle.cc @@ -155,7 +155,6 @@ void Obstacle::Explosion(Bullet* bullet) } }//end for } - a8::Vec2 bomb_pos = pos; for (auto& target : objects) { switch (target->entity_type) { case ET_Player: diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index b389fbc..dbf44a7 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -63,9 +63,6 @@ void Player::Update(int delta_time) void Player::UpdateMove() { - if (action_type == AT_Relive) { - CancelAction(); - } if (dead || a8::HasBitFlag(status, HS_Fly)) { moving = false; moved_frames = 0; @@ -152,12 +149,6 @@ void Player::_CMMove(f8::MsgHdr& hdr, const cs::CMMove& msg) if (moving) { moved_frames = 0; } - shot_start = msg.shot_start(); - shot_hold = msg.shot_hold(); - fly_distance = std::min(200.0f, msg.fly_distance()); - if (!shot_hold) { - series_shot_frames = 0; - } last_seq_id = msg.seq(); if (msg.has_spectate()) { spectate = true; diff --git a/server/tools/protobuild/cs_proto.proto b/server/tools/protobuild/cs_proto.proto index 690bf29..6f313d4 100755 --- a/server/tools/protobuild/cs_proto.proto +++ b/server/tools/protobuild/cs_proto.proto @@ -181,8 +181,6 @@ message MFPlayerFull optional bool disconnected = 9; //是否断网 optional int32 anim_type = 10; // optional int32 anim_seq = 11; // - //optional int32 action_type = 12; //0: none 1:reload 2:useitem 3:relive 4: rescue - //optional int32 action_duration = 22; //持续时间毫秒 optional MFSkin skin = 13; //皮肤id optional int32 backpack = 14; //背包 optional int32 helmet = 16; //头盔 @@ -418,11 +416,6 @@ message MFObjectFull //活跃玩家数据(当前) message MFActivePlayerData { - optional int32 action_type = 3; //0: none 1:reload 2:useitem 3:relive 4: rescue - optional int32 action_duration = 5; //持续时间毫秒 - optional int32 action_item_id = 6; - optional int32 action_target_id = 7; - optional MFSkin skin = 30; //皮肤id optional int32 backpack = 31; //背包 optional int32 helmet = 32; //头盔 @@ -666,30 +659,8 @@ message CMMove optional MFVector2D move_dir = 24; //移动-方向 optional MFVector2D attack_dir = 20; //攻击方向(朝向) - - optional bool shot_start = 6; //射击-单发 - optional bool shot_hold = 7; //射击-连发 - optional bool reload = 8; //装弹 - optional float fly_distance = 12; //子弹飞行距离(只有手雷和烟雾弹时这个字段才有意义) - - optional int32 select_weapon = 10; //切换武器(没切换是不用发) - optional int32 drop_weapon = 11; //丢弃武器 - - optional bool cancel_action = 26; //取消当前操作(比如取消使用道具装弹等) - optional int32 use_item_idx = 22; //使用道具(对应库存索引0-16) - optional int32 use_scope = 25; //使用倍镜 0-4 - - optional bool interaction = 9; //是否有交互 - repeated int32 interaction_objids = 23; //交互的对象id列表 - - optional bool use_skill = 29; //使用技能 - optional bool spectate = 30; //自杀 - optional int32 emote = 31; //表情id - - optional bool jump = 32; //跳伞 - optional bool get_down = 33; //下车 } //丢弃道具