예제 #1
0
        public void SendMessage(UInt16 Oid, string NameSender, string Text, SystemData.ChatLogFilters Filter)
        {
            if (Text.IndexOf("<LINK") >= 0 && Text.IndexOf("ITEM:") > 0)
            {
                int       Pos     = Text.IndexOf("ITEM:") + 5;
                int       LastPos = Text.IndexOf(" ", Pos) - 1;
                string    Value   = Text.Substring(Pos, LastPos - Pos);
                uint      ItemId  = uint.Parse(Value);
                Item_Info Info    = WorldMgr.GetItem_Info(ItemId);
                if (Info != null)
                {
                }
            }

            PacketOut Out = new PacketOut((byte)Opcodes.F_CHAT);

            Out.WriteUInt16(Oid);
            Out.WriteByte((byte)Filter);
            Out.Fill(0, 4);
            Out.WritePascalString(NameSender);
            Out.WriteByte(0);
            Out.WritePascalString(Text);
            Out.WriteByte(0);
            SendPacket(Out);
        }
예제 #2
0
        public void SendMail(Character_mail Mail)
        {
            if (Mail == null)
            {
                return;
            }

            PacketOut Out = new PacketOut((byte)Opcodes.F_MAIL);

            Out.WriteByte(0x0D);
            Out.WriteByte(0);
            BuildPreMail(Out, Mail);

            Out.WriteUInt16((ushort)(Mail.Content.Length + 1));
            Out.WriteStringBytes(Mail.Content);
            Out.WriteByte(0);

            Out.WriteByte((byte)Mail.Items.Count);
            foreach (KeyValuePair <uint, ushort> item in Mail.Items)
            {
                Item_Info Req = WorldMgr.GetItem_Info(item.Key);
                Item.BuildItem(ref Out, null, Req, 0, item.Value);
            }
            GetPlayer().SendPacket(Out);
        }
예제 #3
0
파일: Item.cs 프로젝트: wardev1/WarEmu-1
        public Item_Info GetTalisman(byte SlotId)
        {
            if (CharItem == null)
            {
                return(null);
            }

            if (CharItem._Talismans.Count <= SlotId)
            {
                return(null);
            }

            return(WorldMgr.GetItem_Info(CharItem._Talismans[SlotId]));
        }
예제 #4
0
파일: Player.cs 프로젝트: uvbs/DoR
        public void SendMessage(UInt16 Oid, string NameSender, string Text, SystemData.ChatLogFilters Filter)
        {
            PacketOut Out = new PacketOut((byte)Opcodes.F_CHAT);

            Out.WriteUInt16(Oid);
            Out.WriteByte((byte)Filter);
            Out.Fill(0, 4);
            Out.WritePascalString(NameSender);
            Out.WriteUInt16((ushort)(Text.Length + 1));
            Out.WriteStringBytes(Text);
            Out.WriteByte(0);

            int a = Text.IndexOf("<LINK");
            int b = Text.IndexOf("ITEM:");

            if (a >= 0 && b > 0)
            {
                Out.WriteByte(1);
                long p = Out.Position;
                Out.WriteByte(0);

                int Count = 0;
                while (a >= 0 && b >= 0)
                {
                    int       Pos     = b + 5;
                    int       LastPos = Text.IndexOf(" ", Pos) - 1;
                    string    Value   = Text.Substring(Pos, LastPos - Pos);
                    uint      ItemId  = uint.Parse(Value);
                    Item_Info Info    = WorldMgr.GetItem_Info(ItemId);
                    if (Info != null)
                    {
                        ++Count;
                        Out.WriteByte(3);
                        Item.BuildItem(ref Out, null, Info, 0, 1);
                    }

                    a = Text.IndexOf("<LINK", Pos);
                    b = Text.IndexOf("ITEM:", Pos);
                }

                Out.Position = p;
                Out.WriteByte((byte)Count);
                Out.Position = Out.Length;
            }

            SendPacket(Out);
        }
예제 #5
0
파일: Item.cs 프로젝트: cooler-SAI/waremu-1
        public bool Load(Character_items Item)
        {
            if (Item == null)
            {
                return(false);
            }

            Info = WorldMgr.GetItem_Info(Item.Entry);
            if (Info == null)
            {
                Log.Error("ItemInterface", "Load : Info==null,Entry=" + Item.Entry);
                return(false);
            }

            CharItem = Item;
            return(true);
        }
예제 #6
0
        public void BuildPreMail(PacketOut Out, Character_mail Mail)
        {
            if (Mail == null)
            {
                return;
            }

            Out.WriteUInt32(0);
            Out.WriteUInt32((UInt32)Mail.Guid);
            Out.WriteUInt16((UInt16)(Mail.Opened ? 1 : 0));
            Out.WriteByte((byte)(Mail.AuctionType == 0 ? 100 : 0)); // Icon ID

            Out.WriteUInt32(Mail.SendDate);                         // Time
            Out.WriteUInt32(Mail.SendDate);                         // Sent time

            Out.WriteUInt32((UInt32)Mail.CharacterIdSender);        // Sender ID

            Out.WriteByte(0);                                       // 1 = localized name

            Out.WriteByte(0);
            Out.WriteStringToZero(Mail.SenderName);

            Out.WriteByte(0);
            Out.WriteStringToZero(Mail.ReceiverName);

            Out.WriteByte(0);
            Out.WriteStringToZero(Mail.Title);
            Out.WriteUInt32(0);

            Out.WriteUInt32(Mail.Money);
            Out.WriteUInt16((ushort)Mail.Items.Count);
            if (Mail.Items.Count > 0)
            {
                Out.WriteByte(0);
            }
            if (Mail.Items.Count > 8)
            {
                Out.WriteByte(0);
            }

            foreach (KeyValuePair <uint, ushort> item in Mail.Items)
            {
                Out.WriteUInt32(WorldMgr.GetItem_Info(item.Key).ModelId);
            }
        }
예제 #7
0
파일: Item.cs 프로젝트: cooler-SAI/waremu-1
        public bool Load(uint Entry, UInt16 SlotId, UInt16 Count)
        {
            Info = WorldMgr.GetItem_Info(Entry);
            if (Info == null)
            {
                return(false);
            }

            if (Count <= 0)
            {
                Count = 1;
            }

            _SlotId  = SlotId;
            _ModelId = Info.ModelId;
            _Count   = Count;
            return(true);
        }
예제 #8
0
        public ItemError CreateItem(UInt32 ItemId, UInt16 Count)
        {
            Item_Info Info = WorldMgr.GetItem_Info(ItemId);

            return(CreateItem(Info, Count));
        }