public void SetLevel(byte level, bool effect)
        {
            PlayerData.Level = level;
            UpdateClient();

            byte[] packet = Util.PacketWithId(8, 192);
            packet[8] = 26;
            packet[9] = PlayerData.Level;
            WorldPacketHandler.SendPacket(Owner, packet);

            if (!effect)
            {
                return;
            }

            packet    = Util.PacketWithId(11, 181);
            packet[8] = 7;
            packet[9] = (byte)Type;
            BitConverter.GetBytes(Id).CopyTo(packet, 10);
            packet[12] = PlayerData.Level;

            WorldPacketHandler.SendPacketToAllOnMap(World.MapList[MapId], Owner, packet);
            BitConverter.GetBytes((short)0).CopyTo(packet, 10);
            WorldPacketHandler.SendPacket(Owner, packet);
        }
 public void AddItem(Item item)
 {
     byte[] packet = Util.PacketWithId(15, 192);
     packet[8] = 52;
     item.ToBytes().CopyTo(packet, 9);
     WorldPacketHandler.SendPacket(Owner, packet);
 }
Example #3
0
        public void SetPosition(short x, short y)
        {
            if (LastMovePos != null)
            {
                Vector2f oldPos = LastMovePos.GetEstimatedPos(20); // TODO: change this to actual move speed
                //Console.WriteLine(oldPos);
                LastMovePos = new MovePos(x, y, (short)oldPos.x, (short)oldPos.y);
            }
            else
            {
                LastMovePos = new MovePos(x, y, PosX, PosY);
            }

            PosX = x;
            PosY = y;
            UpdateClient();
            byte[] packet = Util.PacketWithId(13, 179);
            packet[8] = (byte)Type;
            BitConverter.GetBytes(Id).CopyTo(packet, 9);
            BitConverter.GetBytes(PosX).CopyTo(packet, 11);
            BitConverter.GetBytes(PosY).CopyTo(packet, 13);

            WorldPacketHandler.SendPacketToAllOnMap(World.MapList[MapId], Owner, packet, false);
            if (Owner != null)
            {
                packet[9] = packet[10] = 0;
                WorldPacketHandler.SendPacket(Owner, packet, false);
            }
        }
        public static void ReceiveCallback(IAsyncResult ar)
        {
            // Retrieve the state object and the handler socket from the asynchronous state object
            ClientState state = (ClientState)ar.AsyncState;

            state.ResetEvent.Set();
            Socket socket = state.ClientSocket;

            int totalBytes = socket.EndReceive(ar);

            if (totalBytes < 2)
            {
                return;
            }

            int bytesRead = 0;

            while (bytesRead < totalBytes)
            {
                short  length = BitConverter.ToInt16(state.Buffer, bytesRead);
                byte[] packet = new byte[length + 2];
                Array.Copy(state.Buffer, bytesRead, packet, 0, length + 2);
                WorldPacketHandler.RecievePacket(state, packet);
                bytesRead += length + 2;
            }

            byte[] data = new byte[bytesRead];
            Array.Copy(state.Buffer, data, data.Length);

            short packetLength = BitConverter.ToInt16(data, 0);
        }
 public void SetKron(int kron)
 {
     PlayerData.Kron = kron;
     UpdateClient();
     byte[] packet = Util.PacketWithId(15, 192);
     packet[8] = 1;
     BitConverter.GetBytes((Int64)kron).CopyTo(packet, 9);
     WorldPacketHandler.SendPacket(Owner, packet);
 }
        public void ShowEmoticon(byte emoteId)
        {
            byte[] packet = Util.PacketWithId(11, 181);
            packet[8] = 22;
            packet[9] = (byte)Type;
            BitConverter.GetBytes(Id).CopyTo(packet, 10);
            packet[12] = emoteId;

            WorldPacketHandler.SendPacketToAllOnMap(World.MapList[MapId], Owner, packet);
            BitConverter.GetBytes((short)0).CopyTo(packet, 10);
            WorldPacketHandler.SendPacket(Owner, packet);
        }
 public static void SendSystemMessage(ClientState client, string msg)
 {
     if (msg.Length > 255)
     {
         msg = msg.Substring(0, 255);                  // Limit string length to 1 byte
     }
     byte[] packet = Util.PacketWithId((short)(8 + msg.Length), 186);
     packet[8] = 160;
     packet[9] = (byte)msg.Length;
     Encoding.ASCII.GetBytes(msg).CopyTo(packet, 10);
     WorldPacketHandler.SendPacket(client, packet);
 }
        public void SetDirection(byte dir)
        {
            Direction = dir;
            UpdateClient();
            byte[] packet = Util.PacketWithId(11, 181);
            packet[8] = 18;
            packet[9] = (byte)Type;
            BitConverter.GetBytes(Id).CopyTo(packet, 10);
            packet[12] = dir;

            WorldPacketHandler.SendPacketToAllOnMap(World.MapList[MapId], Owner, packet);
            BitConverter.GetBytes((short)0).CopyTo(packet, 10);
            WorldPacketHandler.SendPacket(Owner, packet);
        }
 public static void SendUserMessage(ClientState client, string user, string msg)
 {
     if (msg.Length > 255)
     {
         msg = msg.Substring(0, 255);                   // Limit string length to 1 byte
     }
     byte[] packet = Util.PacketWithId((short)(9 + msg.Length + user.Length), 186);
     packet[8]  = 31;
     packet[9]  = (byte)user.Length;
     packet[10] = (byte)msg.Length;
     Encoding.ASCII.GetBytes(user).CopyTo(packet, 11);
     Encoding.ASCII.GetBytes(msg).CopyTo(packet, 11 + user.Length);
     WorldPacketHandler.SendPacketToAllOnMap(World.MapList[client.PlayerObject.MapId], null, packet);
 }
Example #10
0
        public void DeleteObject(bool effect)
        {
            byte[] packet = Util.PacketWithId(10, 180);
            packet[8] = (byte)Type;
            packet[9] = BitConverter.GetBytes(effect)[0];
            BitConverter.GetBytes(Id).CopyTo(packet, 10);

            WorldPacketHandler.SendPacketToAllOnMap(World.MapList[MapId], Owner, packet, false);
            if (Owner != null)
            {
                packet[9] = packet[10] = 0;
                WorldPacketHandler.SendPacket(Owner, packet, false);
            }
        }
        public void SetStance(byte stance)
        {
            Stance = stance;
            UpdateClient();
            byte[] packet = Util.PacketWithId(12, 181);
            packet[8] = 176;
            packet[9] = (byte)Type;
            BitConverter.GetBytes(Owner.PlayerObject.Id).CopyTo(packet, 10);
            packet[12] = stance;
            packet[13] = Direction;

            WorldPacketHandler.SendPacketToAllOnMap(World.MapList[MapId], Owner, packet);
            BitConverter.GetBytes((short)0).CopyTo(packet, 10);
            WorldPacketHandler.SendPacket(Owner, packet);
        }
Example #12
0
        public void AddSkillPoint(ClientState client, Skill skill)
        {
            if (SkillPoints <= 0)
            {
                return;
            }
            byte[] packet1 = Util.PacketWithId(9, 192);
            switch (skill)
            {
            case Skill.POW:
                packet1[8] = 33;
                packet1[9] = ++Power;
                break;

            case Skill.INT:
                packet1[8] = 34;
                packet1[9] = ++Intelligence;
                break;

            case Skill.STA:
                packet1[8] = 35;
                packet1[9] = ++Stamina;
                break;

            case Skill.AGI:
                packet1[8] = 36;
                packet1[9] = ++Agility;
                break;

            case Skill.MEN:
                packet1[8] = 37;
                packet1[9] = ++Mentality;
                break;

            case Skill.WIS:
                packet1[8] = 38;
                packet1[9] = ++Wisdom;
                break;
            }
            byte[] packet2 = Util.PacketWithId(9, 192);
            packet2[8] = 47;
            packet2[9] = --SkillPoints;
            WorldPacketHandler.SendPacket(client, Util.CombinePackets(packet1, packet2));
        }
Example #13
0
        public void LoadMap(ClientState client)
        {
            if (client.PlayerObject != null)
            {
                DeleteMapObject(client.PlayerObject, true);
            }
            client.PlayerObject = new PlayerObject(client, (short)(1 + PlayerList.Count), client.PlayerData);  // id 0 is reserved
            PlayerList.Add(client.PlayerObject);
            byte[] packet = Util.CombinePackets(
                client.PlayerObject.SetPlayerIdPacket(),
                SetMapPacket(client.PlayerData.PosX, client.PlayerData.PosY),
                client.PlayerObject.SpawnPlayerPacket(true, true),
                BuildPacket(client),
                LoadMapPacket(),
                client.PlayerData.PlayerDataPacket()
                );
            WorldPacketHandler.SendPacket(client, packet);

            // Spawn player for all other players on the map
            WorldPacketHandler.SendPacketToAllOnMap(this, client,
                                                    Util.CombinePackets(client.PlayerObject.SpawnPlayerPacket(true, false), client.PlayerData.PlayerDataPacket())
                                                    );
        }