コード例 #1
0
ファイル: WorldMgr.cs プロジェクト: Necrosummon/WarEmu
        public static void SendVendorPage(Player Plr, ref List<Creature_vendor> Vendors, byte Count,byte Page)
        {
            Count = (byte)Math.Min(Count, Vendors.Count);

            Log.Success("SendVendorPage", "Count=" + Count + ",Page=" + Page + ",ItmC=" + Vendors.Count);

            PacketOut Out = new PacketOut((byte)Opcodes.F_INIT_STORE);
            Out.WriteByte(3);
            Out.WriteByte(0);
            Out.WriteByte(Page);
            Out.WriteByte(Count);
            Out.WriteByte((byte)(Page > 0 ? 0 : 1));
            Out.WriteByte(1);
            Out.WriteUInt16(0);

            for (byte i = 0; i < Count; ++i)
            {
                Out.WriteByte(i);
                Out.WriteByte(3); // sometimes 1
                Out.WriteUInt32(Vendors[i].Price);
                Item.BuildItem(ref Out, null, Vendors[i].Info, 0, 1);

                Out.WriteByte((byte)Vendors[i].ItemsReqInfo.Count); // ReqItemSize
                foreach (KeyValuePair<UInt16, Item_Info> Kp in Vendors[i].ItemsReqInfo)
                {
                    Out.WriteUInt32(Kp.Value.Entry);
                    Out.WriteUInt16((UInt16)Kp.Value.ModelId);
                    Out.WritePascalString(Kp.Value.Name);
                    Out.WriteUInt16(Kp.Key);
                    Out.Fill(0, 18);
                }
            }

            Out.WriteByte(0);
            Plr.SendPacket(Out);

            Vendors.RemoveRange(0, Count);
        }
コード例 #2
0
ファイル: MessageXcvr.cs プロジェクト: branchjoshua/cse3461
        private void Execute()
        {
            List<byte> rxBuff = new List<byte>();

            while(true)
            {
                byte[] read = new byte[1];

                try
                {
                    // Read
                    int rxed = _socket.Receive(read, read.Length, SocketFlags.None);

                    // Add data to buffer
                    rxBuff.AddRange(read.Take(rxed));

                    // process data if it contains a terminating character
                    if (rxBuff.Contains(0x02))
                    {
                        // retreive the string
                        string rxStr = Encoding.UTF8.GetString(rxBuff.Take(rxBuff.IndexOf(0x02)).ToArray());
                        // remove the data that was just converted into a string (plus the 0x02 terminator)
                        rxBuff.RemoveRange(0, rxBuff.IndexOf(0x02) + 1);

                        // Deserialize to the message structure
                        Message msg = JsonConvert.DeserializeObject<Message>(rxStr);

                        // Notify all listeners
                        if (msg != null)
                        {
                            OnMessageRxed(msg);
                        }
                    }
                }
                catch
                {
                    OnDisconnected();
                }
            }
        }