コード例 #1
0
ファイル: Packets.cs プロジェクト: acid1789/DecoServer2
        public static ToolbarItemSetRequest Read(PacketHeader header, BinaryReader br)
        {
            uint       id    = br.ReadUInt32();
            byte       extra = br.ReadByte();
            TargetType t     = TargetType.Unknown;

            switch (extra & 0x3)
            {
            case 2:
                t = TargetType.Item;
                break;

            case 3:
                t   = TargetType.Skill;
                id &= 0xFFFF;
                break;
            }

            ToolbarItemSetRequest tbr = new ToolbarItemSetRequest();

            tbr.TargetID = id;
            tbr.Type     = t;
            tbr.Slot     = extra >> 2;

            return(tbr);
        }
コード例 #2
0
ファイル: TaskProcessor.cs プロジェクト: acid1789/DecoServer2
        void ToolbarItemSet_Handler(Task t)
        {
            ToolbarItemSetRequest tbr = (ToolbarItemSetRequest)t.Args;

            string sql = t.Client.Character.Toolbar.SetItem(t.Client, tbr);

            AddDBQuery(sql, null, false);
        }
コード例 #3
0
ファイル: ServerBase.cs プロジェクト: acid1789/DecoServer2
 private void Client_OnToolbar(object sender, ToolbarItemSetRequest e)
 {
     TaskProcessor.AddTask(new Task(Task.TaskType.ToolbarItemSet, (Connection)sender, e));
 }
コード例 #4
0
ファイル: Packets.cs プロジェクト: acid1789/DecoServer2
        public static ToolbarItemSetRequest Read(PacketHeader header, BinaryReader br)
        {
            uint id = br.ReadUInt32();
            byte extra = br.ReadByte();
            TargetType t = TargetType.Unknown;
            switch (extra & 0x3)
            {
                case 2:
                    t = TargetType.Item;
                    break;
                case 3:
                    t = TargetType.Skill;
                    id &= 0xFFFF;
                    break;
            }

            ToolbarItemSetRequest tbr = new ToolbarItemSetRequest();
            tbr.TargetID = id;
            tbr.Type = t;
            tbr.Slot = extra >> 2;

            return tbr;
        }
コード例 #5
0
ファイル: Packets.cs プロジェクト: acid1789/DecoServer2
 public SetToolbarLink(uint id, ToolbarItemSetRequest.TargetType type, int slot, Item.ItemError err = Item.ItemError.None)
 {
     _id = id;
     int t = (type == ToolbarItemSetRequest.TargetType.Skill ? 3 : 2);
     int typeByte = (slot << 2) | t;
     _type = (byte)typeByte;
     _err = (byte)err;
 }
コード例 #6
0
        public string SetItem(Connection client, ToolbarItemSetRequest tbr)
        {
            // Change the data in memory
            _slots[tbr.Slot] = tbr.TargetID | (tbr.Type == ToolbarItemSetRequest.TargetType.Skill ? 0x80000000 : 0);

            // Tell the client we accept
            client.SendPacket(new SetToolbarLink(tbr.TargetID, tbr.Type, tbr.Slot));

            // Save it in the database
            string sql = string.Format("UPDATE characters_toolbar SET slot_{0}={1} WHERE character_id={2};", tbr.Slot, _slots[tbr.Slot], client.Character.ID);

            return sql;
        }
コード例 #7
0
 void Toolbar_Item_Set_Handler(PacketHeader header, BinaryReader br)
 {
     OnToolbarItemSet(this, ToolbarItemSetRequest.Read(header, br));
 }
コード例 #8
0
ファイル: ServerBase.cs プロジェクト: acid1789/DecoServer2
 private void Client_OnToolbar(object sender, ToolbarItemSetRequest e)
 {
     TaskProcessor.AddTask(new Task(Task.TaskType.ToolbarItemSet, (Connection)sender, e));
 }