diff --git a/server/gameserver/android.cc b/server/gameserver/android.cc index 220c7fd..e7ad468 100644 --- a/server/gameserver/android.cc +++ b/server/gameserver/android.cc @@ -40,9 +40,6 @@ void Android::Update(int delta_time) } } InternalUpdate(delta_time); - if (room->GetFrameNo() % 2 == 0) { - SendUpdateMsg(); - } ++updated_times_; } diff --git a/server/gameserver/bullet.cc b/server/gameserver/bullet.cc index d3779af..9415b93 100644 --- a/server/gameserver/bullet.cc +++ b/server/gameserver/bullet.cc @@ -65,6 +65,7 @@ void Bullet::OnHit(std::set& objects) float def = hum->ability.def * (1 + hum->GetBuffAttrRate(kHAT_Def)) + hum->GetBuffAttrAbs(kHAT_Def); float finaly_dmg = dmg * (1 - def/MetaMgr::Instance()->K); + finaly_dmg = std::max(finaly_dmg, 0.0f); player->stats.damage_amount_out += finaly_dmg; hum->DecHP(finaly_dmg, player->GetEntityUniId(), player->name, gun_meta->i->id()); #ifdef DEBUG diff --git a/server/gameserver/entity.h b/server/gameserver/entity.h index 088de4b..4dcfab9 100644 --- a/server/gameserver/entity.h +++ b/server/gameserver/entity.h @@ -25,9 +25,9 @@ class Entity virtual bool IsDead(Room* room) { return false;}; virtual long long GetDeadFrameNo(Room* room) { return 0;}; virtual void OnPreCollision(Room* room) {}; - int GetEntityUniId() { return entity_uniid_; } - EntityType_e GetEntityType() { return entity_type_; } - EntitySubType_e GetEntitySubType() { return entity_subtype_; } + int GetEntityUniId() const { return entity_uniid_; } + EntityType_e GetEntityType() const { return entity_type_; } + EntitySubType_e GetEntitySubType() const { return entity_subtype_; } virtual bool IsEntityType(EntityType_e type) { return type == entity_type_;} virtual bool IsEntitySubType(EntitySubType_e subtype) { return subtype == entity_subtype_;} int GetGridId() const { return grid_id_; } diff --git a/server/gameserver/framemaker.cc b/server/gameserver/framemaker.cc index 6c63bee..0be3d2e 100644 --- a/server/gameserver/framemaker.cc +++ b/server/gameserver/framemaker.cc @@ -38,7 +38,15 @@ cs::SMUpdate* FrameMaker::MakeUpdateMsg(const Human* hum) auto& tuple = room->frame_event.shots_[idx]; if (hum->CanSee(std::get<0>(tuple))) { *msg->add_shots() = std::get<1>(tuple); + } else { +#ifdef DEBUG + abort(); +#endif } + } else { +#ifdef DEBUG + abort(); +#endif } } for (size_t idx : hum->bullets_) { diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 6f24ccc..a2f0919 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -46,9 +46,6 @@ void Player::Update(int delta_time) } } InternalUpdate(delta_time); - if (room->GetFrameNo() % 2 == 0) { - SendUpdateMsg(); - } ++updated_times_; } diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index d833b0b..f53e221 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -117,6 +117,9 @@ void Room::Update(int delta_time) pair.second->Update(50); } if (GetFrameNo() % 2 == 0) { + for (auto& pair : human_hash_) { + pair.second->SendUpdateMsg(); + } frame_event.Clear(); } ++frameno_;