Example #1
0
        public void OnAddItem(Item nItem, SagaDB.Items.ITEM_UPDATE_REASON reason)
        {
            byte          index, amount;
            AddItemResult res = I.inv.AddItem(nItem, out index, out amount);

            if (res == AddItemResult.ERROR)
            {
                Logger.ShowWarning("pc event handler: cannot add item with ID " + nItem.id, null);
                return;
            }

            nItem.index = index;
            nItem.stack = amount;

            if (res == AddItemResult.NEW_INDEX)
            {
                Packets.Server.AddItem p1 = new SagaMap.Packets.Server.AddItem();
                p1.SetContainer(CONTAINER_TYPE.INVENTORY);
                p1.SetItem(nItem);
                C.netIO.SendPacket(p1, C.SessionID);
                MapServer.charDB.NewItem(this.C.Char, nItem);
            }

            Packets.Server.UpdateItem p2 = new SagaMap.Packets.Server.UpdateItem();
            p2.SetContainer(CONTAINER_TYPE.INVENTORY);
            p2.SetItemIndex(nItem.index);
            p2.SetAmount(nItem.stack);
            p2.SetUpdateType(SagaMap.Packets.Server.ITEM_UPDATE_TYPE.AMOUNT);
            p2.SetUpdateReason(reason);
            C.netIO.SendPacket(p2, C.SessionID);
            MapServer.charDB.UpdateItem(this.C.Char, nItem);
        }
Example #2
0
        public void ProcessItem( MapClient client, string args )
        {
            int itemID;
            Item nItem;
            try { itemID = int.Parse( args ); }
            catch( Exception ) { itemID = 1; }

            try
            {
                nItem = new Item(itemID);
            }
            catch(Exception)
            {
                client.SendMessage( _MasterName, "cannot create item with ID " + itemID );
                return;
            }
            byte index, amount;
            AddItemResult res = client.Char.inv.AddItem( nItem, out index, out amount );
            if( res == AddItemResult.ERROR )
            {
                client.SendMessage( _MasterName, "cannot add item with ID " + itemID );
                return;
            }

            nItem.index = index;
            nItem.stack = amount;

            if( res == AddItemResult.NEW_INDEX )
            {
                Packets.Server.AddItem p1 = new SagaMap.Packets.Server.AddItem();
                p1.SetContainer( CONTAINER_TYPE.INVENTORY );
                p1.SetItem( nItem );
                client.netIO.SendPacket(p1, client.SessionID);
                MapServer.charDB.NewItem(client.Char, nItem);
            }

            Packets.Server.UpdateItem p2 = new SagaMap.Packets.Server.UpdateItem();
            p2.SetContainer( CONTAINER_TYPE.INVENTORY );
            p2.SetItemIndex( nItem.index );
            p2.SetAmount( nItem.stack );
            p2.SetUpdateType( SagaMap.Packets.Server.ITEM_UPDATE_TYPE.AMOUNT );
            p2.SetUpdateReason(ITEM_UPDATE_REASON.FOUND);
            client.netIO.SendPacket(p2, client.SessionID);
            MapServer.charDB.UpdateItem(client.Char, nItem);
            client.SendMessage( _MasterName, "Created item with ID " + itemID );
        }
Example #3
0
        public void OnAddItem( Item nItem, SagaDB.Items.ITEM_UPDATE_REASON reason )
        {
            byte index, amount;
            AddItemResult res = I.inv.AddItem(nItem, out index, out amount);
            if (res == AddItemResult.ERROR)
            {
                Logger.ShowWarning("pc event handler: cannot add item with ID " + nItem.id,null);
                return;
            }

            nItem.index = index;
            nItem.stack = amount;

            if (res == AddItemResult.NEW_INDEX)
            {
                Packets.Server.AddItem p1 = new SagaMap.Packets.Server.AddItem();
                p1.SetContainer(CONTAINER_TYPE.INVENTORY);
                p1.SetItem(nItem);
                C.netIO.SendPacket(p1, C.SessionID);
                MapServer.charDB.NewItem(this.C.Char, nItem);
            }

            Packets.Server.UpdateItem p2 = new SagaMap.Packets.Server.UpdateItem();
            p2.SetContainer(CONTAINER_TYPE.INVENTORY);
            p2.SetItemIndex(nItem.index);
            p2.SetAmount(nItem.stack);
            p2.SetUpdateType(SagaMap.Packets.Server.ITEM_UPDATE_TYPE.AMOUNT);
            p2.SetUpdateReason(reason);
            C.netIO.SendPacket(p2, C.SessionID);
            MapServer.charDB.UpdateItem(this.C.Char, nItem);
        }