Ejemplo n.º 1
0
        static void OnItemVendor(int msgID, BinReader data)
        {
            uint charID = data.ReadUInt32();
            uint itemId = data.ReadUInt32();
            int  price  = data.ReadInt32();

            WorldClient client = WorldServer.GetClientByCharacterID(charID);

            if (client == null)
            {
                return;
            }
            if (client.Player.Money < price)
            {
                Chat.System(client, "You do not have the required funds for this item");
                return;
            }
            DBItem newitem = (DBItem)DBManager.GetDBObject(typeof(DBItem), itemId);

            if (newitem == null)
            {
                Chat.System(client, "Item not found");
                return;
            }

            newitem.Template = (DBItemTemplate)DBManager.GetDBObject(typeof(DBItemTemplate), newitem.TemplateID);
            if (newitem.Template == null)
            {
                Chat.System(client, "Item Template not found");
                return;
            }
            Console.WriteLine("Slot:" + newitem.OwnerSlot);
            if (newitem.OwnerSlot == 0)
            {
                newitem.OwnerSlot = client.Player.Inventory.GetOpenBackpackSlot();
            }
            DBManager.SaveDBObject(newitem);
            ItemObject NewObj = (ItemObject)client.Player.Inventory.CreateItem(newitem);

//			client.Player.MapTile.Map.Enter(NewObj);

            BinWriter w = new BinWriter();

            w.Write(1);
            w.Write((byte)0);
            NewObj.AddCreateObject(w, false, true);

            ServerPacket pkg = new ServerPacket(SMSG.COMPRESSED_UPDATE_OBJECT);

            byte[] compressed = ZLib.Compress(w.GetBuffer(), 0, (int)w.BaseStream.Length);
            pkg.Write((int)w.BaseStream.Length);
            pkg.Write(compressed);
            pkg.Finish();
            client.Player.MapTile.SendSurrounding(pkg);
            client.Player.Money = client.Player.Money - price;
            client.Player.UpdateData();

//			Chat.System (client, "Buy Item working on Worldserver side");
        }