diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index bb2ad5a3..47fe2bfb 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -4401,11 +4401,7 @@ void Human::DropWeapon(int weapon_idx, int num) break; } if (drop_ok) { - { - a8::Vec2 dir = a8::Vec2::UP; - dir.Rotate(a8::RandAngle()); - room->CreateLoot(weapon_id, GetPos() + dir * (40 + rand() % 50), 1, 1); - } + bool create_loot = true; if (weapon_ammo > 0) { MetaData::Equip* bullet_meta = MetaMgr::Instance()->GetEquip(weapon_meta->i->use_bullet()); if (bullet_meta && bullet_meta->i->_inventory_slot() > 0) { @@ -4425,14 +4421,27 @@ void Human::DropWeapon(int weapon_idx, int num) a8::Vec2 drop_dir = a8::Vec2::UP; drop_dir.Rotate(a8::RandAngle()); a8::Vec2 drop_pos = GetPos() + drop_dir * (25 + rand() % 50); +#if 1 + { + room->DropItem(drop_pos, bullet_meta->i->id(), drop_num, 1); + create_loot = false; + } +#else if (bullet_meta->i->_inventory_slot() == IS_FRAG || bullet_meta->i->_inventory_slot() == IS_SMOKE) { //只有手雷和烟雾弹会掉落 room->DropItem(drop_pos, bullet_meta->i->id(), drop_num, 1); + create_loot = false; } +#endif } } } + if (create_loot) { + a8::Vec2 dir = a8::Vec2::UP; + dir.Rotate(a8::RandAngle()); + room->CreateLoot(weapon_id, GetPos() + dir * (40 + rand() % 50), 1, 1); + } MarkSyncActivePlayer(__FILE__, __LINE__, __func__); SyncAroundPlayers(__FILE__, __LINE__, __func__); }