void c_ClientPickItemInfo(object sender, ClientPickItemEventArgs e) { Client c = (Client)sender; PickItemInfo p = e.Info; //MapItem m = mapEngine.GetMapItemById(p.MapItemID); // NEED BETTER LOAD FOR LIKE ALL ITEM DATA, NOT JUST MAPITEM STUFF KPLXTHX //Equipment item = (Equipment)channelManager.GetItemByItemID(p.ItemID); BaseItem item = null; Client[] nearbyClients = GetNearByClients(c); try { item = mapEngine.PickupItem(p.MapItemID, c.MyCharacter); } catch (BagIsFullException) { byte[] bufferBagIsFull = PacketManager.SendBagIsFull(); c.Send(bufferBagIsFull); //send bag is full } //.MyCharacter.Bags[0].AddItem(item); if (item == null) { //send item not exist return; } byte[] SendPickUp = PacketManager.SendAddItem(item); c.Send(SendPickUp); byte[] SendPickUpText = PacketManager.SendPickUpText(item.ReferenceID, item.Amount); c.Send(SendPickUpText); byte[] SendRemoveMapItem = PacketManager.SendRemoveMapItem(p.MapItemID); SendSpecific(nearbyClients, SendRemoveMapItem); }
void c_ClientPickItemInfo(object sender, ClientPickItemEventArgs e) { Client c = (Client)sender; PickItemInfo p = e.Info; //Equipment item = (Equipment)channelManager.GetItemByItemID(p.ItemID); BaseItem item = null; MapEngine mapEngine = GetMapEngine(c.MyCharacter.MapId); Client[] clients = GetClientsForChars(mapEngine.GetCharactersInRange(c.MyCharacter.Position, 150).ToArray()); try { item = mapEngine.PickupItem(p.MapItemID, c, p.Amount); } catch (BagIsFullException) { byte[] bufferBagIsFull = PacketManager.SendBagIsFull(); c.Send(bufferBagIsFull); //send bag is full } //.MyCharacter.Bags[0].AddItem(item); if (item == null) { //send item not exist return; } if (item is Jeon) { c.MyCharacter.Money += item.Amount; characterManager.UpdateCharacter(c.MyCharacter); byte[] SendMoneyLeft = PacketManager.SendMoneyLeft(c.MyCharacter.Money); c.Send(SendMoneyLeft); } else { // will crash if this is send when you pick up money so better do it like this.. byte[] SendPickUp = PacketManager.SendAddItem(item); c.Send(SendPickUp); } byte[] SendPickUpText = PacketManager.SendPickUpText(item.ReferenceID, item.Amount, 1); c.Send(SendPickUpText); byte[] SendRemoveMapItem = PacketManager.SendRemoveMapItem(p.MapItemID); SendToClients(SendRemoveMapItem, clients); }