diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 6b931ae..24a0d43 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -193,15 +193,42 @@ void Player::Shot() bullet->Initialize(); room->AddBullet(bullet); } - switch (curr_weapon->meta->i->_inventory_slot()) { + int slot_id = curr_weapon->meta->i->_inventory_slot(); + switch (slot_id) { case 5: { //手雷 + if (inventory[slot_id] > 0) { + --inventory[slot_id]; + } else { + int weapon_idx = curr_weapon->weapon_idx; + *curr_weapon = Weapon(); + curr_weapon->weapon_idx = weapon_idx; + if (weapons[SMOKE_SLOT].weapon_id != 0) { + curr_weapon = &weapons[SMOKE_SLOT]; + } else { + curr_weapon = &weapons[0]; + } + } + need_sync_active_player = true; } break; case 6: { //烟雾弹 + if (inventory[slot_id] > 0) { + --inventory[slot_id]; + } else { + int weapon_idx = curr_weapon->weapon_idx; + *curr_weapon = Weapon(); + curr_weapon->weapon_idx = weapon_idx; + if (weapons[FRAG_SLOT].weapon_id != 0) { + curr_weapon = &weapons[FRAG_SLOT]; + } else { + curr_weapon = &weapons[0]; + } + } + need_sync_active_player = true; } break; }