From eb46ffae0c7c8e7519782c17136144f5d37b9fe5 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 27 Jul 2020 17:37:27 +0800 Subject: [PATCH] 1 --- server/gameserver/human.cc | 3 +++ server/gameserver/human.h | 2 +- server/gameserver/player.cc | 4 ++++ server/gameserver/room.cc | 1 + 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 9c0cfea..77516b1 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -2308,6 +2308,9 @@ void Human::DeadDrop() room->DropItem(drop_pos, weapon.weapon_id, 1, weapon.weapon_lv); } } + { + curr_weapon = &weapons[0]; + } { Skin* old_skin = GetSkinByIdx(kSkinSlot_HAT); if (old_skin && old_skin->skin_id != 0) { diff --git a/server/gameserver/human.h b/server/gameserver/human.h index 1b7597f..b13eb0c 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -287,6 +287,7 @@ class Human : public MoveableEntity void ChangeToRaceAndNotify(RaceType_e race, int level); void WinExp(Human* sender, int exp); HumanCar& GetCar() { return car_; } + void DeadDrop(); protected: void _InternalUpdateMove(float speed); @@ -304,7 +305,6 @@ protected: private: void ClearFrameData(); void GenBattleReportData(a8::MutableXObject* params); - void DeadDrop(); void FillSMGameOver(cs::SMGameOver& msg); void SendBattleReport(); void FindLocationWithTarget(Entity* target); diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 06ea55d..bb642f9 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -483,6 +483,10 @@ void Player::ObstacleInteraction(Obstacle* entity) void Player::LootInteraction(Loot* entity) { + if (room->GetRoomMode() == kZombieMode && + GetRace() == kZombieRace) { + return; + } if (entity->pickuped || entity->count <= 0) { return; diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index bf1f9dd..3b1c9d7 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -569,6 +569,7 @@ void Room::OnHumanDie(Human* hum) if (GetRoomMode() == kZombieMode) { if (hum->GetRace() == kHumanRace) { RemoveRescue(hum); + hum->DeadDrop(); } else if (hum->GetRace() == kZombieRace) { } else { abort();