diff --git a/server/gameserver/mapinstance.cc b/server/gameserver/mapinstance.cc index 5b2d4362..15eebcec 100644 --- a/server/gameserver/mapinstance.cc +++ b/server/gameserver/mapinstance.cc @@ -611,15 +611,15 @@ void MapInstance::MarkMapAreaPolys() } for (int i = 0; i < tile->header->polyCount; ++i) { dtPoly* poly = &tile->polys[i]; - const mt::MapArea* last_area_meta = nullptr; if ((poly->flags & SAMPLE_POLYFLAGS_SWIM) == SAMPLE_POLYFLAGS_SWIM) { + const mt::MapArea* last_area_meta = nullptr; for (int ii = 0; ii < poly->vertCount; ++ii) { const float* vc = &tile->verts[poly->verts[ii]*3]; const mt::MapArea* area_meta = mt::MapArea::GetAreaByPoint (map_meta_->map_id(), - vc[0] * GetMapMeta()->scale(), + vc[0] / GetMapMeta()->scale(), vc[1], - vc[2] * GetMapMeta()->scale()); + vc[2] / GetMapMeta()->scale()); if (!area_meta) { abort(); } @@ -628,6 +628,9 @@ void MapInstance::MarkMapAreaPolys() } last_area_meta = area_meta; } + if (!last_area_meta) { + abort(); + } } } } diff --git a/server/gameserver/mapmgr.cc b/server/gameserver/mapmgr.cc index e50f66c1..c10c144d 100644 --- a/server/gameserver/mapmgr.cc +++ b/server/gameserver/mapmgr.cc @@ -16,6 +16,9 @@ void MapMgr::Init() ( [this] (const mt::Map* map_meta, bool& stop) { + if (map_meta->map_id() != 2001) { + return; + } auto map_instance = std::make_shared(); map_instance->map_id = map_meta->map_id(); map_instance->Init(); diff --git a/server/gameserver/mt/Hero.cc b/server/gameserver/mt/Hero.cc index 3d5451e3..6e855782 100644 --- a/server/gameserver/mt/Hero.cc +++ b/server/gameserver/mt/Hero.cc @@ -220,6 +220,7 @@ anim.l_y = l_y; ((mt::Hero*)hero_meta)->shot_animations[id] = anim; } } + #if 0 f8::UdpLog::Instance()->Info ("shot animation hero_id:%d anim_id:%d t:%f r_x:%f r_y:%f r_z:%f l_x:%f l_y:%f l_z:%f", { @@ -233,6 +234,7 @@ anim.l_y = l_y; l_y, l_z }); + #endif } } } diff --git a/server/gameserver/mt/MapArea.cc b/server/gameserver/mt/MapArea.cc index bc8d7e6e..0c55e8f1 100644 --- a/server/gameserver/mt/MapArea.cc +++ b/server/gameserver/mt/MapArea.cc @@ -31,16 +31,16 @@ namespace mt if (itr != map_areas.end()) { for (auto area_meta : itr->second) { if (x < area_meta->center_.x - area_meta->area_width() / 2) { - break; + continue; } if (x > area_meta->center_.x + area_meta->area_width() / 2) { - break; + continue; } - if (y < area_meta->center_.y - area_meta->area_height() / 2) { - break; + if (z < area_meta->center_.y - area_meta->area_height() / 2) { + continue; } - if (y > area_meta->center_.y + area_meta->area_height() / 2) { - break; + if (z > area_meta->center_.y + area_meta->area_height() / 2) { + continue; } return area_meta; }