From 90c398a3926f097e51955817e2829d831ae2bd2b Mon Sep 17 00:00:00 2001 From: "madmaxoft@gmail.com" Date: Sun, 19 May 2013 18:22:37 +0000 Subject: Inventory code cleanup, players can now see each other's armor git-svn-id: http://mc-server.googlecode.com/svn/trunk@1493 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/Player.cpp | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'source/Player.cpp') diff --git a/source/Player.cpp b/source/Player.cpp index 0fb9f5644..0076b2cff 100644 --- a/source/Player.cpp +++ b/source/Player.cpp @@ -149,6 +149,10 @@ void cPlayer::SpawnOn(cClientHandle & a_Client) a_Client.SendPlayerSpawn(*this); a_Client.SendEntHeadLook(*this); a_Client.SendEntityEquipment(*this, 0, m_Inventory.GetEquippedItem() ); + a_Client.SendEntityEquipment(*this, 1, m_Inventory.GetEquippedBoots() ); + a_Client.SendEntityEquipment(*this, 2, m_Inventory.GetEquippedLeggings() ); + a_Client.SendEntityEquipment(*this, 3, m_Inventory.GetEquippedChestplate() ); + a_Client.SendEntityEquipment(*this, 4, m_Inventory.GetEquippedHelmet() ); } } @@ -356,16 +360,16 @@ void cPlayer::KilledBy(cPawn * a_Killer) m_bVisible = false; // So new clients don't see the player // Puke out all the items - cItem * Items = m_Inventory.GetSlots(); + const cItem * Items = m_Inventory.GetSlots(); cItems Pickups; for (unsigned int i = 1; i < m_Inventory.c_NumSlots; ++i) { - if( !Items[i].IsEmpty() ) + if (!Items[i].IsEmpty()) { Pickups.push_back(Items[i]); } - Items[i].Empty(); } + m_Inventory.Clear(); m_World->SpawnItemPickups(Pickups, GetPosX(), GetPosY(), GetPosZ(), 10); SaveToDisk(); // Save it, yeah the world is a tough place ! } @@ -793,7 +797,7 @@ void cPlayer::TossItem( else { // Else drop equipped item - cItem DroppedItem = GetInventory().GetEquippedItem(); + cItem DroppedItem(GetInventory().GetEquippedItem()); if (!DroppedItem.IsEmpty()) { DroppedItem.m_ItemCount = 1; @@ -1026,14 +1030,12 @@ cPlayer::StringList cPlayer::GetResolvedPermissions() void cPlayer::UseEquippedItem() { - if(GetGameMode() != 1) //No damage in creative + if (GetGameMode() == gmCreative) // No damage in creative { - if (GetInventory().GetEquippedItem().DamageItem()) - { - LOG("Player %s Broke ID: %i", GetClientHandle()->GetUsername().c_str(), GetInventory().GetEquippedItem().m_ItemType); - GetInventory().RemoveItem( GetInventory().GetEquippedItem()); - } + return; } + + GetInventory().DamageEquippedItem(); } -- cgit v1.2.3