From b0c385312a91452d9483101c46d6dac1e96d9172 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 5 Jan 2023 15:39:00 +0800 Subject: [PATCH] 1 --- server/gameserver/android.cc | 2 ++ server/gameserver/bullet.cc | 31 +++++++++++++++++++++++++++---- server/gameserver/room.cc | 18 +++++++++++++++--- 3 files changed, 44 insertions(+), 7 deletions(-) diff --git a/server/gameserver/android.cc b/server/gameserver/android.cc index 52c358eb..3e919d81 100644 --- a/server/gameserver/android.cc +++ b/server/gameserver/android.cc @@ -114,7 +114,9 @@ void Android::InternalUpdate(int delta_time) return; } } + #if 0 agent_->Exec(); + #endif } void Android::GiveEquip() diff --git a/server/gameserver/bullet.cc b/server/gameserver/bullet.cc index 2d61724c..dd787040 100644 --- a/server/gameserver/bullet.cc +++ b/server/gameserver/bullet.cc @@ -371,8 +371,28 @@ void Bullet::MapServiceUpdate() } } move_length -= step_len; + auto old_pos = GetPos(); GetMutablePos().AddGlmVec3(dir * step_len); float distance = GetPos().DistanceGlmVec3(born_pos.ToGlmVec3()); +#ifdef DEBUG1 + a8::XPrintf("step_len:%f born_pos:%f,%f,%f curr_pos:%f,%f,%f old_pos:%f,%f,%f distance:%f\n", + { + step_len, + born_pos.x, + born_pos.y, + born_pos.z, + + old_pos.x, + old_pos.y, + old_pos.z, + + GetPos().x, + GetPos().y, + GetPos().z, + + distance + }); +#endif if (room->OverBorder(GetPos(), gun_meta->bullet_rad())) { if (IsBomb()) { ProcBomb(); @@ -633,7 +653,6 @@ void Bullet::ClearBuffList() void Bullet::ProcFlyHook(Entity* target) { - return; ClearBuffList(); float distance = born_pos.Distance2D2(GetPos()); if (distance < 0.001f) { @@ -840,7 +859,9 @@ void Bullet::GetHitCreatures(BulletCheckResult& result) if (c != sender.Get() && !c->dead && Collision::CheckBullet(this, c)) { #ifdef DEBUG - a8::XPrintf("bullet hit\n", {}); + if (IsFlyHook()) { + a8::XPrintf("bullet hit\n", {}); + } #endif if (meta->_inventory_slot() == IS_C4) { if (!c->IsHuman()) { @@ -954,7 +975,7 @@ void Bullet::Raycast() { raycasted_ = true; glm::vec3 start = born_pos.ToGlmVec3(); - glm::vec3 end = born_pos.AddGlmVec3(born_dir * (float)gun_meta->range()).ToGlmVec3(); + glm::vec3 end = born_pos.ToGlmVec3() + born_dir * (float)gun_meta->range(); bool hit_result = false; glm::vec3 hit_point; @@ -966,8 +987,10 @@ void Bullet::Raycast() sender.Get()->room->map_instance->UnScale(hit_point); raycast_hit_point_ = hit_point; raycast_len_ = GlmHelper::Norm(hit_point - born_pos.ToGlmVec3()); + } else { + raycast_len_ = gun_meta->range(); } - #ifdef DEBUG + #ifdef DEBUG1 a8::XPrintf("bullet.raycast ret:%d hit_result:%d raycast_hit_point_:%f,%f,%f\n", { ret, diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 710a3ac4..ad28ca40 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -580,7 +580,7 @@ int Room::CreateBullet(Creature* sender, float shot_animi_time) { int bullet_uniid = 0; - if (grid_service->CanAdd(pos.x, pos.y)) { + if (grid_service->CanAdd(pos.x, pos.z)) { Bullet* bullet = EntityFactory::Instance()->MakeBullet(AllocUniid()); bullet->sender.Attach(sender); if (passenger) { @@ -601,6 +601,19 @@ int Room::CreateBullet(Creature* sender, bullet->keep_shot_animi_timer_ptr = keep_shot_animi_timer_ptr; bullet->shot_animi_time = shot_animi_time; bullet->Initialize(); +#ifdef DEBUG + a8::XPrintf("xxxxxxx born_pos:%f,%f,%f curr_pos:%f,%f,%f\n", + { + bullet->born_pos.x, + bullet->born_pos.y, + bullet->born_pos.z, + + bullet->GetPos().x, + bullet->GetPos().y, + bullet->GetPos().z, + + }); +#endif AddObjectLater(bullet); bullet_uniid = bullet->GetUniId(); } @@ -3179,8 +3192,7 @@ size_t Room::GetRoomMaxPlayerNum() { #ifdef MAP3D return 2; - return map_meta_->player(); - //return 2; + //return map_meta_->player(); #else if (pve_instance) { return pve_human_num;