Word() public method

public Word ( object data ) : void
data object
return void
コード例 #1
0
ファイル: AlchemyPackets.cs プロジェクト: CarlosX/DarkEmu
        public static byte[] AlchemyResponse(bool isSuccess, Global.slotItem sItem, byte type, byte totalblue)
        {
            PacketWriter Writer = new PacketWriter();
            Writer.Create(Systems.SERVER_ALCHEMY);
            Writer.Byte(1);
            Writer.Byte(2);
            Writer.Bool(isSuccess);
            Writer.Byte(sItem.Slot);
            if (!isSuccess) { Writer.Byte(0); }
            Writer.DWord(0);
            Writer.DWord(sItem.ID);
            Writer.Byte(sItem.PlusValue);
            Writer.LWord(0);
            Writer.DWord(sItem.Durability);
            Writer.Byte(Data.ItemBlue[sItem.dbID].totalblue);
            for (int i = 0; i <= Data.ItemBlue[sItem.dbID].totalblue - 1; i++)
            {
                Writer.DWord(Data.MagicOptions.Find(mg => (mg.Name == Convert.ToString(Data.ItemBlue[sItem.dbID].blue[i]))).ID);
                Writer.DWord(Data.ItemBlue[sItem.dbID].blueamount[i]);
            }
            Writer.Word(1);
            Writer.Word(2);
            Writer.Word(3);

            return Writer.GetBytes();
        }
コード例 #2
0
ファイル: LoginPackets.cs プロジェクト: CarlosX/DarkEmu
 public static byte[] LoadGame_3()
 {
     PacketWriter Writer = new PacketWriter();
     Writer.Create(Systems.SERVER_PATCH);
     Writer.Word(0x0101);
     Writer.Word(0x0500);
     Writer.Byte(0x60);
     return Writer.GetBytes();
 }
コード例 #3
0
ファイル: FriendsPackets.cs プロジェクト: CarlosX/DarkEmu
 public static byte[] FriendDecline(string name)
 {
     PacketWriter Writer = new PacketWriter();
     Writer.Create(Systems.SERVER_FRIEND_INVITE);
     Writer.Byte(2);
     Writer.Word(0x640B);
     Writer.Byte(0);
     Writer.Word(0x000B);
     Writer.Text(name);
     return Writer.GetBytes();
 }
コード例 #4
0
ファイル: LoginPackets.cs プロジェクト: CarlosX/DarkEmu
 public static byte[] LoadGame_2()
 {
     PacketWriter Writer = new PacketWriter();
     Writer.Create(Systems.SERVER_PATCH);
     Writer.Word(0x0100);
     Writer.Word(0x0100);
     Writer.Byte(0x69);
     Writer.Byte(0x0C);
     Writer.DWord(0x00000005);
     Writer.Byte(0x02);
     return Writer.GetBytes();
 }
コード例 #5
0
ファイル: JoinPackets.cs プロジェクト: CarlosX/DarkEmu
 public static byte[] JoinFormedRequest(character requesting, character owner)
 {
     //Create new packet writer
     PacketWriter Writer = new PacketWriter();
     //Add opcode for packet
     Writer.Create(Systems.SERVER_PARTY_JOIN_FORMED);
     //Character model information (Req).
     Writer.DWord(requesting.Information.Model);
     //Leader id
     Writer.DWord(requesting.Information.UniqueID);
     //Party id
     Writer.DWord(owner.Network.Party.ptid);
     //Static
     Writer.DWord(0);
     Writer.DWord(0);
     Writer.Byte(0);
     Writer.Byte(0xFF);
     //Write character unique id
     Writer.DWord(requesting.Information.UniqueID);
     //Write character name
     Writer.Text(requesting.Information.Name);
     //Write model information
     Writer.DWord(requesting.Information.Model);
     //Write level information
     Writer.Byte(requesting.Information.Level);
     //Static
     Writer.Byte(0xAA);
     //X and Y Sector
     Writer.Byte(requesting.Position.xSec);
     Writer.Byte(requesting.Position.ySec);
     //Static
     Writer.Word(0);
     Writer.Word(0);
     Writer.Word(0);
     Writer.Word(1);
     Writer.Word(1);
     //If character is in a guild
     if (requesting.Network.Guild != null)
         //Write guild name
         Writer.Text(requesting.Network.Guild.Name);
     //If character is not in a guild
     else
         //Write word value 0
         Writer.Word(0);
     //Static
     Writer.Byte(0);
     Writer.DWord(0);
     Writer.DWord(0);
     //Return all bytes to send
     return Writer.GetBytes();
 }
コード例 #6
0
ファイル: PrivateMessages.cs プロジェクト: CarlosX/DarkEmu
 //Packet for response of message sending
 public static byte[] PrivateMessageRespond(byte type)
 {
     //Create new packet writer
     PacketWriter Writer = new PacketWriter();
     //Add the opcode to the packet
     Writer.Create(Systems.SERVER_PM_SEND);
     //Switch on type sended by our function
     switch (type)
     {
         case 1:
             //Failed
             Writer.Byte(0x02);
             Writer.Byte(0x0D);
             Writer.Byte(0x64);
             break;
         case 2:
             //Success
             Writer.Byte(0x01);
             break;
         case 3:
             //Inbox full
             Writer.Byte(2);
             Writer.Word(0x6414);
             break;
     }
     //Return all bytes to the void
     return Writer.GetBytes();
 }
コード例 #7
0
ファイル: FriendsPackets.cs プロジェクト: CarlosX/DarkEmu
 public static byte[] FriendGroupManage(string type,string groupname, short groupid, int targetid)
 {
     PacketWriter Writer = new PacketWriter();
     switch (type)
     {
         case "ADD":
             Writer.Create(Systems.SERVER_FRIEND_GROUP);
             Writer.Byte(1);
             Writer.Text(groupname);
             Writer.Word(groupid);
             break;
         case "REMOVE":
             Writer.Create(Systems.SERVER_FRIEND_GROUP_REMOVE);
             Writer.Byte(1);
             Writer.Word(groupid);
             break;
         case "MOVE":
             Writer.Create(Systems.SERVER_FRIEND_GROUP_MANAGE_FRIEND);
             Writer.Byte(1);
             Writer.DWord(targetid);
             Writer.Word(groupid);
             break;
     }
     return Writer.GetBytes();
 }
コード例 #8
0
ファイル: ItemActionPackets.cs プロジェクト: CarlosX/DarkEmu
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////
 // Update arrow amount
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////
 public static byte[] Arrow(short amount)
 {
     PacketWriter Writer = new PacketWriter();
     Writer.Create(Systems.SERVER_ARROW_UPDATE);
     Writer.Word(amount);
     return Writer.GetBytes();
 }
コード例 #9
0
ファイル: MovementPackets.cs プロジェクト: CarlosX/DarkEmu
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////
 // Movement Angle
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////
 public static byte[] Angle(int id, ushort angle)
 {
     PacketWriter Writer = new PacketWriter();
     Writer.Create(Systems.SERVER_ANGLE);    //Select opcode
     Writer.DWord(id);                       //Character ID
     Writer.Word(angle);                     //Angle
     return Writer.GetBytes();
 }
コード例 #10
0
ファイル: TeleportPackets.cs プロジェクト: CarlosX/DarkEmu
 public static byte[] TeleportStart()
 {
     PacketWriter Writer = new PacketWriter();
     Writer.Create(Systems.SERVER_TELEPORTSTART);
     Writer.Byte(2);
     Writer.Word(1);
     return Writer.GetBytes();
 }
コード例 #11
0
ファイル: TeleportPackets.cs プロジェクト: CarlosX/DarkEmu
 public static byte[] IngameMessages(ushort opcode,ushort id)
 {
     PacketWriter Writer = new PacketWriter();
     Writer.Create(opcode);
     Writer.Byte(2);
     Writer.Word(id);
     return Writer.GetBytes();
 }
コード例 #12
0
ファイル: JobSystemPackets.cs プロジェクト: CarlosX/DarkEmu
 public static byte[] MakeAliasError(string name, byte switchinfo)
 {
     PacketWriter Writer = new PacketWriter();
     Writer.Create(Systems.SERVER_MAKE_ALIAS);
     Writer.Byte(2);
     Writer.Word(0);
     Writer.Byte(0);
     Writer.Text(name);
     return Writer.GetBytes();
 }
コード例 #13
0
ファイル: GuildSystemPackets.cs プロジェクト: CarlosX/DarkEmu
 public static byte[] GuildSetTitle2(int guildid, int charid, string title)
 {
     PacketWriter Writer = new PacketWriter();
     Writer.Create(Systems.SERVER_GUILD_SET_TITLE2);
     Writer.Byte(1);
     Writer.DWord(guildid);
     Writer.DWord(charid);
     Writer.Word(title.Length);
     Writer.String(title);
     return Writer.GetBytes();
 }
コード例 #14
0
ファイル: StallSystemPackets.cs プロジェクト: CarlosX/DarkEmu
        public static byte[] StallBuyItem2(string charname, byte stallslot, List<stall.stallItem> ItemList)
        {
            PacketWriter Writer = new PacketWriter();
            Writer.Create(Systems.SERVER_STALL_PLAYERUPDATE);
            Writer.Byte(3);
            Writer.Byte(stallslot);
            Writer.Word(charname.Length);
            Writer.String(charname);
            StallItemPacket(ItemList, Writer);

            return Writer.GetBytes();
        }
コード例 #15
0
ファイル: AttackpetPackets.cs プロジェクト: CarlosX/DarkEmu
        public static byte[] AttackPetStats(pet_obj c,byte slot)
        {
            PacketWriter writer = new PacketWriter();
            writer.Create(Systems.SERVER_PET_INFORMATION);
            writer.DWord(c.UniqueID);
            writer.DWord(c.Model);
            writer.DWord(0x00000168);//stats
            writer.DWord(0x00000168);//stats
            writer.LWord(c.exp);//Experience
            writer.Byte(c.Level);//Level
            writer.Word(0);//Angle
            writer.DWord(0x00000001);//1 = Attack icon enabled, 2 = disabled
            if (c.Petname != "No name") writer.Text(c.Petname);//Petname
            else
                writer.Word(0);//No name

            writer.Byte(0);//Static perhaps
            writer.DWord(c.OwnerID);//Owner
            writer.Byte(slot);
            return writer.GetBytes();
        }
コード例 #16
0
ファイル: PartyDataPackets.cs プロジェクト: CarlosX/DarkEmu
 public static byte[] JoinResponseMessage(short type)
 {
     //Create new packet writer
     PacketWriter Writer = new PacketWriter();
     //Add opcode
     Writer.Create(Systems.SERVER_PARTY_MESSAGES);
     //Add static byte
     Writer.Byte(1);
     //Add type short (1 = joined , 2 = no reponse)
     Writer.Word(type);
     //Return bytes to client
     return Writer.GetBytes();
 }
コード例 #17
0
ファイル: RequestPackets.cs プロジェクト: CarlosX/DarkEmu
        public static byte[] PartyRequest(byte Type, int id, byte type)
        {
            //Create new packet writer
            PacketWriter Writer = new PacketWriter();
            //Add opcode
            Writer.Create(Systems.SERVER_PARTY_REQUEST);
            //Write type byte
            Writer.Byte(Type);
            //Create switch on type
            switch (Type)
            {
                case 6:
                    //Union invite
                    Writer.DWord(id);
                    break;
                case 5:
                    //Guild invitation
                    Writer.DWord(id);
                    Systems InvitedPlayer = Systems.GetPlayer(id);
                    Writer.Word(InvitedPlayer.Character.Information.Name.Length);
                    Writer.String(InvitedPlayer.Character.Information.Name);
                    Writer.Word(InvitedPlayer.Character.Network.Guild.Name.Length);
                    Writer.String(InvitedPlayer.Character.Network.Guild.Name);
                    break;
                case 2:
                    //Party invite
                    Writer.DWord(id);
                    Writer.Byte(type);
                    break;
                case 1:
                    //Exchange invite
                    Writer.DWord(id);
                    break;
            }

            return Writer.GetBytes();
        }
コード例 #18
0
ファイル: GuildSystemPackets.cs プロジェクト: CarlosX/DarkEmu
 public static byte[] GuildSetOnline(guild c, int memberid)
 {
     PacketWriter Writer = new PacketWriter();
     Writer.Create(Systems.SERVER_GUILD_ONLINE);
     Writer.DWord(memberid);
     Writer.DWord(c.Guildid);
     Writer.Text(c.Name);
     Writer.Word(0);
     Writer.DWord(0);
     Writer.DWord(0);
     Writer.DWord(0);
     Writer.Byte(0);
     Writer.Byte(1);
     return Writer.GetBytes();
 }
コード例 #19
0
ファイル: ItemActionPackets.cs プロジェクト: CarlosX/DarkEmu
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////
 // Buy Item From Item Mall
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////
 public static byte[] BuyItemFromMall(byte type1, byte type2, byte type3, byte type4, byte type5, byte slot)
 {
     PacketWriter Writer = new PacketWriter();
     Writer.Create(Systems.SERVER_ITEM_MOVE);    //Select opcode
     Writer.Byte(1);                             //Static Byte 1
     Writer.Byte(0x18);                          //Static Byte 0x18 /switch possible perhaps
     Writer.Byte(type1);                         // Recheck
     Writer.Byte(type2);                         // Recheck
     Writer.Byte(type3);                         // Recheck
     Writer.Byte(type4);                         // Recheck
     Writer.Byte(type5);                         // Recheck
     Writer.Byte(1);                             //Static Byte 1
     Writer.Byte(slot);                          //Select To Slot
     Writer.Word(1);                             //Static
     Writer.DWord(0);                            //Static
     return Writer.GetBytes();
 }
コード例 #20
0
        public static byte[] HonorRank(character c)
        {
            Systems.MsSQL ms = new Systems.MsSQL("SELECT * FROM rank_honor");
            PacketWriter Writer = new PacketWriter();
            int countinfo = ms.Count();

            Writer.Create(Systems.SERVER_HONOR_RANK);
            Writer.Byte(1);
            int i = 0;
            Writer.Byte(Convert.ToByte(countinfo));
            using (SqlDataReader reader = ms.Read())
            {
                while (reader.Read())
                {
                    byte rankicon = reader.GetByte(1);
                    string rankname = reader.GetString(2);
                    byte ranklevel = reader.GetByte(3);
                    byte ranklevelc = reader.GetByte(4);
                    int graduatesc = reader.GetInt32(5);
                    int rankposc = reader.GetInt32(6);

                    Writer.DWord(i + 1);
                    Writer.Byte(rankicon);
                    Writer.Text(rankname);
                    Writer.Byte(ranklevel);
                    Writer.Byte(ranklevelc);
                    Writer.DWord(graduatesc);
                    //If player has no guild, we write a 0 word value
                    if (c.Network.Guild.Name == null)
                    {
                        Writer.Word(0);
                    }
                    //If player has a guild we write the guild name.
                    else
                    {
                        Writer.Text(c.Network.Guild.Name);
                    }
                    i++;
                }
                ms.Close();
            }
            return Writer.GetBytes();
        }
コード例 #21
0
ファイル: MovementPackets.cs プロジェクト: CarlosX/DarkEmu
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////
        // Movement Packet
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////
        public static byte[] Movement(DarkEmu_GameServer.Global.vektor p)
        {
            PacketWriter Writer = new PacketWriter();
                Writer.Create(Systems.SERVER_MOVEMENT);     //Select opcode
                Writer.DWord(p.ID);                         //Player ID
                Writer.Bool(true);                          //Bool 1
                Writer.Byte(p.xSec);                        //Player X Sector
                Writer.Byte(p.ySec);                        //Player Y Sector
                if (!File.FileLoad.CheckCave(p.xSec, p.ySec))
                {
                Writer.Word(p.x);                    //Player X Location
                Writer.Word(p.z);                    //Player Z Location
                Writer.Word(p.y);                    //Player Y Location
                }
                else
                {
                    if (p.x < 0)
                    {
                        Writer.Word(p.x);
                        Writer.Word(0xFFFF);
                    }
                    else
                    {
                        Writer.DWord(p.x);
                    }
                    Writer.DWord(p.z);

                    if (p.y < 0)
                    {
                        Writer.Word(p.y);
                        Writer.Word(0xFFFF);
                    }
                    else
                    {
                        Writer.DWord(p.y);
                    }
                }
                Writer.Bool(false);
                return Writer.GetBytes();
        }
コード例 #22
0
ファイル: Chat.cs プロジェクト: CarlosX/DarkEmu
 public byte[] sendnoticecon(int type, int id, string text, string name)
 {
     //Create new packet writer
     PacketWriter Writer = new PacketWriter();
     //Add opcode for chat
     Writer.Create(Systems.SERVER_CHAT);
     //Write byte chat type 7 = notice
     Writer.Byte(7);
     //Set message to message long from string text given
     string Message = MessageToMessagelong(text);
     //Write textlenght value
     Writer.Textlen(Message);
     //Repeat for message lenght
     for (int g = 0; g < Message.Length; )
     {
         //Writer word value per letter
         Writer.Word(int.Parse(Message.Substring(g, 2), System.Globalization.NumberStyles.HexNumber, null));
         //Set g + 2
         g = g + 2;
     }
     //Return all bytes
     return Writer.GetBytes();
 }
コード例 #23
0
ファイル: Npcs.cs プロジェクト: CarlosX/DarkEmu
            /////////////////////////////////////////////////////////////////////////////////
            // Talk to npc
            /////////////////////////////////////////////////////////////////////////////////
            public static void Chat(int model, PacketWriter Writer)
            {
                #region Talk to npc
                string[] name = Data.ObjectBase[model].Name.Split('_');
                Console.WriteLine("NPC NAME: {0}  FULL NAME {1}", name[2], Data.ObjectBase[model].Name);

                switch (name[2])
                {
                    case "GUILD":
                        Writer.Byte(0);
                        Writer.Byte(2);
                        Writer.Byte(1);
                        Writer.Byte(0x0F);
                        Writer.Byte(0);
                        break;
                    case "THIEF":
                        if (name.Contains("GATE"))
                        {
                            // Thief Gate
                            Writer.Byte(1);
                            Writer.Word(0xA640);
                            Writer.Byte(0);
                            Writer.Byte(2);
                            Writer.Byte(8);
                            Writer.Byte(8);
                        }
                        else
                        {
                            //Thief npc
                            Writer.Byte(0);
                            Writer.Byte(2);
                            Writer.Byte(1);
                            Writer.Byte(0x15);
                            Writer.Byte(0);
                            if (Info(Data.ObjectBase[model].Name)) Writer.Word(0x00);
                        }
                        break;
                    case "GENARAL":
                        //Jangan Npc Guild
                        if (name.Contains("SP"))
                        {
                            Writer.Byte(0);
                            Writer.Byte(3);
                            Writer.Byte(1);
                            Writer.Byte(2);
                            Writer.Byte(0x0F);
                            Writer.Byte(0);
                            if (Info(Data.ObjectBase[model].Name)) Writer.Word(0);
                        }
                        else
                        {
                            Writer.Byte(0);
                            Writer.Byte(2);
                            Writer.Byte(1);
                            Writer.Byte(0x16);
                            Writer.Byte(0);
                            if (Info(Data.ObjectBase[model].Name)) Writer.Word(0);
                        }
                        break;
                    case "DESIGNER":
                        Writer.Byte(0);
                        Writer.Byte(2);
                        Writer.Byte(1);
                        Writer.Byte(0);
                        Writer.Byte(0);
                        if (Info(Data.ObjectBase[model].Name)) Writer.Word(0);
                        break;
                    case "DOCTOR":
                        Writer.Byte(0);
                        Writer.Byte(2);
                        Writer.Byte(1);
                        Writer.Byte(0x14);
                        Writer.Byte(0);
                        if (Info(Data.ObjectBase[model].Name)) Writer.Word(0);
                        break;
                    case "ISLAM":
                        Writer.Byte(0);
                        Writer.Byte(2);
                        Writer.Byte(1);
                        Writer.Byte(0);
                        Writer.Byte(0);
                        if (Info(Data.ObjectBase[model].Name)) Writer.Word(0);
                        break;
                    case "MERCHANT":
                        if (name.Contains("GATE"))
                        {
                            Writer.Byte(1);
                            Writer.Word(0xA640);
                            Writer.Byte(0);
                            Writer.Byte(2);
                            Writer.Byte(8);
                            Writer.Byte(8);
                        }
                        else
                        {
                            Writer.Byte(0);
                            Writer.Byte(2);
                            Writer.Byte(1);
                            Writer.Byte(0);
                            Writer.Byte(0);
                            if (Info(Data.ObjectBase[model].Name)) Writer.Word(0);
                        }
                        break;
                    case "EVENT":
                        Writer.Byte(0);
                        Writer.Byte(1);
                        Writer.Byte(2);
                        Writer.Byte(1);
                        if (Info(Data.ObjectBase[model].Name)) Writer.Word(0);
                        break;
                    case "MARKET":
                    case "ARENA":
                    case "TICKET":
                    case "LOTTERY":
                    case "BIGMAN":
                    case "CHEF":
                    case "MOONSHADOW":
                    case "INDIA":
                    case "PRIEST":
                    case "KISAENG1":
                    case "KISAENG2":
                    case "KISAENG3":
                    case "KISAENG4":
                    case "KISAENG5":
                    case "ADVENTURER":
                    case "UNION1":
                    case "UNION2":
                    case "CHINABOY":
                    case "M":
                    case "WITCH":
                    case "ADVICE":
                    case "ADVICE3":
                    case "CONSUL":
                    case "HUNTER":
                    case "COMMERCE1":
                    case "GENERAL":
                    case "FORTRESS":
                    case "BEGGARBOY":
                    case "GACHA":
                        /*
                        Writer.Byte(0);
                        Writer.Byte(2);
                        Writer.Byte(1);
                        Writer.Byte(0x11);
                        Writer.Byte(0);
                        if (Info(Data.ObjectBase[model].Name)) Writer.Word(0);
                        break;
                        */
                    case "KISAENG6":
                        Writer.Byte(0);
                        Writer.Byte(2);
                        Writer.Byte(1);
                        Writer.Byte(0);
                        Writer.Byte(0);
                        if (Info(Data.ObjectBase[model].Name)) Writer.Word(0);
                        /*
                        Writer.Byte(0);
                        Writer.Byte(2);
                        Writer.Byte(1);
                        Writer.Byte(0x08);
                        Writer.Byte(0);
                        if (Info(Data.ObjectBase[model].Name)) Writer.Word(0);
                        */
                        break;
                    case "EUROPE":
                        Writer.Byte(0);
                        Writer.Byte(2);
                        Writer.Byte(1);
                        Writer.Byte(0x02);
                        Writer.Byte(0);
                        if (Info(Data.ObjectBase[model].Name)) Writer.Word(0);
                        break;
                    case "SMITH":
                        //00 < Byte 04 < amount of 01020420 < types 00 < end byte 1400 < tax like jangan
                        Writer.Byte(0);
                        Writer.Byte(4);
                        Writer.Byte(1);
                        Writer.Byte(2);
                        Writer.Byte(4);
                        Writer.Byte(0x20);
                        Writer.Byte(0);
                        if (Info(Data.ObjectBase[model].Name)) Writer.Word(0);
                        break;
                    case "HORSE":
                        Writer.Byte(0);
                        Writer.Byte(2);
                        Writer.Byte(1);
                        Writer.Byte(0xB);
                        Writer.Byte(0);
                        if (Info(Data.ObjectBase[model].Name)) Writer.Word(0);
                        break;
                    case "ARMOR":
                        Writer.Byte(0);
                        Writer.Byte(2);
                        Writer.Byte(1);
                        Writer.Byte(4);
                        Writer.Byte(0);
                        if (Info(Data.ObjectBase[model].Name)) Writer.Word(0);
                        break;
                    case "POTION":
                        Writer.Byte(0);
                        Writer.Byte(1);
                        Writer.Byte(1);
                        Writer.Byte(0);
                        if (Info(Data.ObjectBase[model].Name)) Writer.Word(0);
                        break;
                    case "SPECIAL":
                        if (name.Contains("CH"))
                        {
                            Writer.Byte(0);
                            Writer.Byte(1);
                            Writer.Byte(2);
                            Writer.Byte(0);
                            Writer.Word(0x14);
                        }
                        else if (name.Contains("KT"))
                        {
                            Writer.Byte(0);
                            Writer.Byte(1);
                            Writer.Byte(2);
                            Writer.Byte(0);
                            Writer.Word(0x14);
                        }
                        else
                        {
                            Writer.Byte(0);
                            Writer.Byte(2);
                            Writer.Byte(1);
                            Writer.Byte(0x0C);
                            Writer.Byte(0);
                            if (Info(Data.ObjectBase[model].Name))
                                Writer.Word(0);
                        }
                        break;
                    case "SPECIAL2":
                        if (name.Contains("CH"))
                        {
                            Writer.Byte(0);
                            Writer.Byte(1);
                            Writer.Byte(2);
                            Writer.Byte(0);
                            Writer.Word(0x14);
                        }
                        else
                        {
                            Writer.Byte(0);
                            Writer.Byte(2);
                            Writer.Byte(1);
                            Writer.Byte(0x0C);
                            Writer.Byte(0);
                            if (Info(Data.ObjectBase[model].Name))
                                Writer.Word(0);
                        }
                        break;
                    case "ACCESSORY":
                        Writer.Byte(0);
                        Writer.Byte(1);
                        Writer.Byte(1);
                        Writer.Byte(0);
                        if (Info(Data.ObjectBase[model].Name))
                            Writer.Word(0x14);
                        break;
                    case "WAREHOUSE":
                        Writer.Byte(0);
                        Writer.Byte(2);
                        Writer.Byte(1);
                        Writer.Byte(3);
                        Writer.Byte(0);
                        break;
                    case "TO":
                    case "FIELD":
                    case "FORT":
                    case "CHARGE":
                    case "GLORY":
                    case "REVIVAL":
                    case "A0":
                    case "GATE":
                    case "GATE1":
                    case "GATE2":
                        Writer.Byte(2);
                        Writer.Byte(7);
                        Writer.Byte(8);
                        if (Info(Data.ObjectBase[model].Name)) Writer.Word(0);
                        break;
                    case "FERRY":
                    case "FERRY1":
                    case "FERRY2":
                    case "FERRY3":
                    case "FLYSHIP":
                    case "FLYSHIP1":
                    case "FLYSHIP2":
                    case "TUNNEL":
                        Writer.Byte(0);
                        Writer.Byte(1);
                        Writer.Byte(8);
                        Writer.Byte(0);
                        if (Info(Data.ObjectBase[model].Name)) Writer.Word(0);
                        break;
                    case "INVESTIGATION":
                        Writer.Byte(0);
                        Writer.Byte(2);
                        Writer.Byte(1);
                        Writer.Byte(0);
                        Writer.Byte(0);
                        if (Info(Data.ObjectBase[model].Name)) Writer.Word(0);
                        break;
                    case "SOLDIER":
                        Writer.Byte(0);
                        Writer.Byte(2);
                        Writer.Byte(1);
                        Writer.Byte(0);
                        Writer.Byte(0);
                        if (Info(Data.ObjectBase[model].Name)) Writer.Word(0);
                        /*
                        Writer.Byte(0);
                        Writer.Byte(2);
                        Writer.Byte(2);
                        Writer.Byte(8);
                        Writer.Byte(0);
                        if (Info(Data.ObjectBase[model].Name)) Writer.Word(0);
                        */
                        break;
                    case "PRIEST3":
                        Writer.Byte(0);
                        Writer.Byte(1);
                        Writer.Byte(2);
                        Writer.Byte(0);
                        if (Info(Data.ObjectBase[model].Name))
                            Writer.Word(0);
                        break;
                    case "TAHOMET":
                         Writer.DWord(0x50);
                         Writer.DWord(0x60);
                         Writer.Byte(0);//Probably level indicator enable / disable
                        break;
                    default:
                        Writer.Byte(0);
                        Writer.Byte(2);
                        Writer.Byte(1);
                        Writer.Byte(0);
                        Writer.Byte(0);
                        if (Info(Data.ObjectBase[model].Name)) Writer.Word(0);
                        Console.WriteLine("Npc name non coded case: " + name[2]);
                        break;
                }
                #endregion
            }
コード例 #24
0
ファイル: SpawnPackets.cs プロジェクト: CarlosX/DarkEmu
        //Monster spawns
        public static byte[] ObjectSpawn(obj o)
        {
            //Create new packet writer
            PacketWriter Writer = new PacketWriter();
            //Add opcode
            Writer.Create(Systems.SERVER_SOLO_SPAWN);
            //Add dword object id
            Writer.DWord(o.ID);
            //Add dword object world id
            Writer.DWord(o.UniqueID);
            //Add x and y sector for object
            Writer.Byte(o.xSec);
            Writer.Byte(o.ySec);
            //Add float x y z for object
            Writer.Float(Formule.packetx((float)o.x, o.xSec));
            Writer.Float(o.z);
            Writer.Float(Formule.packety((float)o.y, o.ySec));
            //Switch on spawn type
            switch (Data.ObjectBase[o.ID].Object_type)
            {
                //Normal monsters
                case Global.objectdata.NamdedType.MONSTER:

                    Writer.Word(0);
                    Writer.Word(1);
                    Writer.Byte(o.xSec);
                    Writer.Byte(o.ySec);

                    if (!File.FileLoad.CheckCave(o.xSec, o.ySec))
                    {
                        Writer.Word(Formule.packetx((float)(o.x + o.wx), o.xSec));
                        Writer.Word(o.z);
                        Writer.Word(Formule.packety((float)(o.y + o.wy), o.ySec));
                    }
                    else
                    {
                        if (o.x < 0)
                        {
                            Writer.Word(Formule.cavepacketx((float)(o.x + o.wx)));
                            Writer.Word(0xFFFF);
                        }
                        else
                        {
                            Writer.DWord(Formule.cavepacketx((float)(o.x + o.wx)));
                        }

                        Writer.DWord(o.z);

                        if (o.y < 0)
                        {
                            Writer.Word(Formule.cavepackety((float)(o.y + o.wy)));
                            Writer.Word(0xFFFF);
                        }
                        else
                        {
                            Writer.DWord(Formule.cavepackety((float)(o.y + o.wy)));
                        }
                    }

                    Writer.Byte(0);
                    Writer.Byte(o.Walking == true ? 2 : 0);
                    Writer.Byte(0);
                    Writer.Byte(0);
                    Writer.Byte(0);
                    Writer.Float(o.SpeedWalk);// Walk speed
                    Writer.Float(o.SpeedRun);// Run speed
                    Writer.Float(o.SpeedZerk);// Berserk speed
                    Writer.Byte(0);
                    Writer.Byte(2);
                    Writer.Byte(1);
                    Writer.Byte(5);
                    Writer.Byte(o.Type);
                    Writer.Byte(4);
                    break;

                case Global.objectdata.NamdedType.NPC:
                    Writer.Word(o.rotation);
                    Writer.Byte(0);
                    Writer.Byte(1);
                    Writer.Byte(0);
                    Writer.Word(o.rotation);
                    Writer.Byte(1);//Non static
                    Writer.Byte(0);//Non static
                    Writer.Byte(0);//Non static
                    Writer.Byte(0);
                    Writer.Byte(0);
                    Writer.DWord(0);
                    Writer.DWord(0);
                    Writer.Float(100);
                    Writer.Byte(0);
                    Writer.Byte(2);
                    Writer.Byte(0);//Static
                    Writer.Byte(1);//Non static
                    break;

                case Global.objectdata.NamdedType.TELEPORT:
                    Writer.Word(0);
                    Writer.Byte(1);
                    Writer.Byte(0);
                    Writer.Byte(0);
                    Writer.Byte(1);
                    Writer.DWord(0);
                    Writer.DWord(0);
                    Writer.Byte(0);
                    break;
                case Global.objectdata.NamdedType.JOBMONSTER:
                    // Thiefs and trader spawns
                    Writer.Word(0);
                    Writer.Word(1);
                    Writer.Byte(o.xSec);
                    Writer.Byte(o.ySec);

                    if (!File.FileLoad.CheckCave(o.xSec, o.ySec))
                    {
                        Writer.Word(Formule.packetx((float)(o.x + o.wx), o.xSec));
                        Writer.Word(o.z);
                        Writer.Word(Formule.packety((float)(o.y + o.wy), o.ySec));
                    }
                    else
                    {
                        if (o.x < 0)
                        {
                            Writer.Word(Formule.packetx((float)(o.x + o.wx), o.xSec));
                            Writer.Word(0xFFFF);
                        }
                        else
                        {
                            Writer.DWord(Formule.packetx((float)(o.x + o.wx), o.xSec));
                        }

                        Writer.DWord(o.z);

                        if (o.y < 0)
                        {
                            Writer.Word(Formule.packety((float)(o.y + o.wy), o.ySec));
                            Writer.Word(0xFFFF);
                        }
                        else
                        {
                            Writer.DWord(Formule.packety((float)(o.y + o.wy), o.ySec));
                        }
                    }

                    Writer.Byte(1);
                    Writer.Byte(o.Walking == true ? 2 : 0);
                    Writer.Byte(0);
                    Writer.Byte(0);
                    Writer.Byte(0);
                    Writer.Float(o.SpeedWalk);// Walk speed
                    Writer.Float(o.SpeedRun);// Run speed
                    Writer.Float(o.SpeedZerk);// Berserk speed
                    Writer.Byte(0);
                    Writer.Byte(2);
                    Writer.Byte(1);
                    Writer.Byte(5);
                    Writer.Byte(0);
                    Writer.Byte(0xE3); // Need to check what this is...
                    Writer.Byte(1);
                    break;
            }
            return Writer.GetBytes();
        }
コード例 #25
0
ファイル: SpawnPackets.cs プロジェクト: CarlosX/DarkEmu
 ///////////////////////////////////////////////////////////////////////////
 // World spawning objects
 ///////////////////////////////////////////////////////////////////////////
 public static byte[] ObjectSpawn(spez_obj so)
 {
     PacketWriter Writer = new PacketWriter();
     Writer.Create(Systems.SERVER_SOLO_SPAWN);
     Writer.DWord(0xFFFFFFFF);                                           //Static
     Writer.DWord(so.spezType);                                           //Type
     Writer.DWord(so.ID);                                                //skillid
     Writer.DWord(so.UniqueID);                                          //UniqueID of spawn
     Writer.Byte(so.xSec);                                               //XSec
     Writer.Byte(so.ySec);                                               //Ysec
     Writer.Float(Formule.packetx((float)so.x, so.xSec));       //X
     Writer.Float(so.z);                                                 //Z
     Writer.Float(Formule.packety((float)so.y, so.ySec));       //Y
     Writer.Word(0);                                                     //Angle
     Writer.Byte(1);                                                     //Static
     return Writer.GetBytes();
 }
コード例 #26
0
ファイル: SpawnPackets.cs プロジェクト: CarlosX/DarkEmu
        ///////////////////////////////////////////////////////////////////////////
        // Spawn Pet Objects
        ///////////////////////////////////////////////////////////////////////////
        public static byte[] ObjectSpawn(pet_obj o)
        {
            PacketWriter Writer = new PacketWriter();

            Writer.Create(Systems.SERVER_SOLO_SPAWN);
            switch (o.Named)
            {
                ///////////////////////////////////////////////////////////////////////////
                // Job transports
                ///////////////////////////////////////////////////////////////////////////
                case 4:
                    Writer.DWord(o.Model);                                      //Pet Model id
                    Writer.DWord(o.UniqueID);                                   //Pet Unique id
                    Writer.Byte(o.xSec);                                        //X sector
                    Writer.Byte(o.ySec);                                        //Y sector
                    Writer.Float(Formule.packetx((float)o.x, o.xSec)); //X
                    Writer.Float(o.z);                                          //Z
                    Writer.Float(Formule.packety((float)o.y, o.ySec)); //Y

                    Writer.Word(0);                                             //Angle

                    Writer.Byte(1);                                             //Walking state
                    Writer.Byte(1);                                             //Static

                    Writer.Byte(o.xSec);                                        //X sector
                    Writer.Byte(o.ySec);                                        //Y sector

                    Writer.Word(0);                                             //Static
                    Writer.Word(0);                                             //
                    Writer.Word(0);                                             //

                    Writer.Word(1);
                    Writer.Word(3);

                    Writer.Byte(0);
                    Writer.Float(o.Walk);                                       //Object walking
                    Writer.Float(o.Run);                                        //Object running
                    Writer.Float(o.Zerk);                                       //Object zerk
                    Writer.Byte(0);//new ?
                    Writer.Word(0);                                             //

                    Writer.Text(o.OwnerName);

                    Writer.Word(2);                                             //
                    Writer.DWord(o.OwnerID);                                    //Owner unique id
                    Writer.Byte(4);                                             //Static byte 4
                    break;
                case 3:
                    ///////////////////////////////////////////////////////////////////////////
                    // Attack pet main packet
                    ///////////////////////////////////////////////////////////////////////////
                    Writer.DWord(o.Model);
                    Writer.DWord(o.UniqueID);
                    Writer.Byte(o.xSec);
                    Writer.Byte(o.ySec);
                    Writer.Float(Formule.packetx((float)o.x, o.xSec));
                    Writer.Float(o.z);
                    Writer.Float(Formule.packety((float)o.y, o.ySec));
                    Writer.Word(0);//angle
                    Writer.Byte(0);
                    Writer.Byte(o.Level);//level
                    Writer.Byte(0);
                    Writer.Word(0);//angle
                    Writer.Byte(1);
                    Writer.Byte(0);
                    Writer.Byte(0);
                    Writer.Byte(2);
                    Writer.Byte(0);
                    Writer.Float(o.Walk);                                       //Object walking
                    Writer.Float(o.Run);                                        //Object running
                    Writer.Float(o.Zerk);                                       //Object zerk
                    Writer.Byte(0);//new ?
                    Writer.Byte(0);
                    Writer.Byte(0);
                    if (o.Named == 1)
                        Writer.Text(o.Petname);
                    else
                        Writer.Word(0);
                    Writer.Text(o.OwnerName);
                    Writer.Byte(0);
                    Writer.Byte(0);
                    Writer.DWord(o.OwnerID);
                    Writer.Byte(1);
                    break;
                case 2:
                    ///////////////////////////////////////////////////////////////////////////
                    // Grab pet main packet
                    ///////////////////////////////////////////////////////////////////////////
                    Writer.DWord(o.Model);                                      //Pet Model id
                    Writer.DWord(o.UniqueID);                                   //Pet Unique id
                    Writer.Byte(o.xSec);                                        //X sector
                    Writer.Byte(o.ySec);                                        //Y sector
                    Writer.Float(Formule.packetx((float)o.x, o.xSec)); //X
                    Writer.Float(o.z);                                          //Z
                    Writer.Float(Formule.packety((float)o.y, o.ySec)); //Y

                    Writer.Word(0xDC72);                                        //Angle

                    Writer.Byte(0);                                             //Walking state
                    Writer.Byte(1);                                             //Static
                    Writer.Byte(0);                                             //Static
                    Writer.Word(0xDC72);                                        //Angle

                    Writer.Byte(1);                                             //Static
                    Writer.Word(0);                                             //
                    Writer.Byte(0);
                    Writer.Byte(0);
                    Writer.Float(o.Walk);                                       //Object walking
                    Writer.Float(o.Run);                                        //Object running
                    Writer.Float(o.Zerk);                                       //Object zerk
                    Writer.Byte(0);//new ?
                    Writer.Word(0);                                             //
                    if (o.Petname != "No name")
                        Writer.Text(o.Petname);
                    else
                        Writer.Word(0);
                    Writer.Text(o.OwnerName);                                   //Pet owner name
                    Writer.Byte(4);                                             //Static byte 4?
                    Writer.DWord(o.OwnerID);                                    //Owner unique id
                    Writer.Byte(1);                                             //Static byte 1

                    ///////////////////////////////////////////////////////////////////////////
                    break;
                default:
                    ///////////////////////////////////////////////////////////////////////////
                    // // Horse //
                    ///////////////////////////////////////////////////////////////////////////
                    Writer.DWord(o.Model);
                    Writer.DWord(o.UniqueID);
                    Writer.Byte(o.xSec);
                    Writer.Byte(o.ySec);
                    Writer.Float(Formule.packetx((float)o.x, o.xSec));
                    Writer.Float(o.z);
                    Writer.Float(Formule.packety((float)o.y, o.ySec));

                    Writer.Word(0);
                    Writer.Byte(0);
                    Writer.Byte(1);
                    Writer.Byte(0);
                    Writer.Word(0);
                    Writer.Byte(1);
                    Writer.Word(0);
                    Writer.Byte(0);

                    Writer.Float(o.Speed1);
                    Writer.Float(o.Speed2);
                    Writer.Float(o.Zerk);
                    Writer.Byte(0);//new ?
                    Writer.Word(0);
                    Writer.Byte(1);
                    ///////////////////////////////////////////////////////////////////////////
                    break;
            }
            return Writer.GetBytes();
        }
コード例 #27
0
ファイル: SpawnPackets.cs プロジェクト: CarlosX/DarkEmu
 public byte[] StartGroup()
 {
     buff_start = new PacketWriter();
     buff_start.Create(Systems.SERVER_GROUPSPAWN_START);
     buff_start.Byte(1);
     if (added >= 10)
     {
         buff_start.Word(10);
         added -= 10;
     }
     else
     {
         buff_start.Word(added);
         added = 0;
     }
     return buff_start.GetBytes();
 }
コード例 #28
0
ファイル: SpawnPackets.cs プロジェクト: CarlosX/DarkEmu
 ///////////////////////////////////////////////////////////////////////////
 public static byte[] SpawnPortal(obj o, character c, int itemid)
 {
     PacketWriter Writer = new PacketWriter();
     Writer.Create(Systems.SERVER_SOLO_SPAWN);
     Writer.DWord(o.ID);
     Writer.DWord(o.UniqueID);
     Writer.Byte(o.xSec);
     Writer.Byte(o.ySec);
     Writer.Float(Formule.packetx((float)o.x, o.xSec));
     Writer.Float(o.z);
     Writer.Float(Formule.packety((float)o.y, o.ySec));
     Writer.Word(0);
     Writer.Byte(1);
     Writer.Byte(0);
     Writer.Byte(1);
     Writer.Byte(6);
     Writer.Text(c.Information.Name);
     Writer.DWord(itemid);
     Writer.Byte(1);
     return Writer.GetBytes();
 }
コード例 #29
0
ファイル: SpawnPackets.cs プロジェクト: CarlosX/DarkEmu
        public static byte[] ObjectSpawnJob(character c)
        {
            PacketWriter Writer = new PacketWriter();
            Writer.Create(Systems.SERVER_SOLO_SPAWN);

            /////////////////////////////////////////////////////// Character basic info
            #region Basic info
            Writer.DWord(c.Information.Model);
            Writer.Byte(c.Information.Volume);                      //Char Volume
            Writer.Byte(c.Information.Title);                       //Char Title
            Writer.Byte(c.Information.Pvpstate);                    //Pvp state
            if (c.Information.Pvpstate != 0) c.Information.PvP = true;
            Writer.Bool((c.Information.Level < 20 ? true : false)); //Beginners Icon

            Writer.Byte(c.Information.Slots);                       // Amount of items
            #endregion
            /////////////////////////////////////////////////////// Item info
            #region Item info
            Function.Items.PrivateItemPacket(Writer, c.Information.CharacterID, 8, 0,true);
            Writer.Byte(5);
            Function.Items.PrivateItemPacket(Writer, c.Information.CharacterID, 5, 1,true);
            Writer.Byte(0);
            #endregion
            /////////////////////////////////////////////////////// Character Location / id
            #region Location info / state
            Writer.DWord(c.Information.UniqueID);
            Writer.Byte(c.Position.xSec);
            Writer.Byte(c.Position.ySec);
            Writer.Float(Formule.packetx(c.Position.x, c.Position.xSec));
            Writer.Float(c.Position.z);
            Writer.Float(Formule.packety(c.Position.y, c.Position.ySec));
            Writer.Word(0);//angle
            Writer.Bool(c.Position.Walking);
            Writer.Byte(1); // walk:0 run:1 ;)

            if (c.Position.Walking)
            {
                Writer.Byte(c.Position.packetxSec);
                Writer.Byte(c.Position.packetySec);

                if (!DarkEmu_GameServer.File.FileLoad.CheckCave(c.Position.packetxSec, c.Position.packetySec))
                {
                    Writer.Word(c.Position.packetX);
                    Writer.Word(c.Position.packetZ);
                    Writer.Word(c.Position.packetY);
                }
                else
                {
                    if (c.Position.packetX < 0)
                    {
                        Writer.Word(c.Position.packetX);
                        Writer.Word(0xFFFF);
                    }
                    else
                    {
                        Writer.DWord(c.Position.packetX);
                    }

                    Writer.DWord(c.Position.packetZ);

                    if (c.Position.packetY < 0)
                    {
                        Writer.Word(c.Position.packetY);
                        Writer.Word(0xFFFF);
                    }
                    else
                    {
                        Writer.DWord(c.Position.packetY);
                    }
                }
            }
            else
            {
                Writer.Byte(1);
                Writer.Word(0);//angle
            }

            Writer.Byte((byte)(c.State.LastState == 128 ? 2 : 1));
            Writer.Byte(0);
            Writer.Byte(3);
            Writer.Byte((byte)(c.Information.Berserking ? 1 : 0));

            Writer.Float(c.Speed.WalkSpeed);
            Writer.Float(c.Speed.RunSpeed);
            Writer.Float(c.Speed.BerserkSpeed);

            Writer.Byte(c.Action.Buff.count);
            for (byte b = 0; b < c.Action.Buff.SkillID.Length; b++)
            {
                if (c.Action.Buff.SkillID[b] != 0)
                {
                    Writer.DWord(c.Action.Buff.SkillID[b]);
                    Writer.DWord(c.Action.Buff.OverID[b]);
                }
            }
            #endregion
            /////////////////////////////////////////////////////// Character Job information / name
            #region Job information & name
            Writer.Text(c.Job.Jobname);
            Writer.Byte(1);
            Writer.Byte(c.Job.level);//Level job
            Writer.Byte(c.Information.Level);//Level char
            Writer.Byte(0);

            if (c.Transport.Right)
            {
                Writer.Byte(1);
                Writer.Byte(0);
                Writer.DWord(c.Transport.Horse.UniqueID);
            }

            else
            {
                Writer.Byte(0);
                Writer.Byte(0);
            }

            Writer.Byte(0);
            Writer.Byte(0);

            if (c.Network.Guild.Guildid > 0)
            {
                Writer.Text(c.Network.Guild.Name);
            }
            else
            {
                Writer.Word(0);//No guild
            }

            Writer.Byte(0);
            Writer.Byte(0xFF);
            Writer.Byte(4);
            #endregion
            return Writer.GetBytes();
        }
コード例 #30
0
ファイル: SpawnPackets.cs プロジェクト: CarlosX/DarkEmu
        public static byte[] ObjectSpawn(character c)
        {
            PacketWriter Writer = new PacketWriter();
            Writer.Create(Systems.SERVER_SOLO_SPAWN);
            /////////////////////////////////////////////////////// Character basic info
            #region Basic info
            Writer.DWord(c.Information.Model);
            Writer.Byte(c.Information.Volume);                      //Char Volume
            Writer.Byte(c.Information.Title);                       //Char Title
            Writer.Byte(c.Information.Pvpstate);                    //Pvp state
            if (c.Information.Pvpstate != 0) c.Information.PvP = true;
            Writer.Bool((c.Information.Level < 20 ? true : false)); //Beginners Icon

            Writer.Byte(c.Information.Slots);                       // Amount of items
            #endregion
            /////////////////////////////////////////////////////// Item info
            #region Item info
            Function.Items.PrivateItemPacket(Writer, c.Information.CharacterID, 8, 0,true);
            Writer.Byte(5);
            Function.Items.PrivateItemPacket(Writer, c.Information.CharacterID, 5, 1,true);
            Writer.Byte(0);
            #endregion
            /////////////////////////////////////////////////////// Character Location / id
            #region Location info / state
            Writer.DWord(c.Information.UniqueID);
            Writer.Byte(c.Position.xSec);
            Writer.Byte(c.Position.ySec);
            Writer.Float(Formule.packetx(c.Position.x, c.Position.xSec));
            Writer.Float(c.Position.z);
            Writer.Float(Formule.packety(c.Position.y, c.Position.ySec));
            Writer.Word(0);//angle
            Writer.Bool(c.Position.Walking);
            Writer.Byte(1); // walk:0 run:1 ;)
            //This should send the location information while moving. and where we moving
            if (c.Position.Walking)
            {
                Writer.Byte(c.Position.packetxSec);
                Writer.Byte(c.Position.packetySec);

                if (!DarkEmu_GameServer.File.FileLoad.CheckCave(c.Position.packetxSec, c.Position.packetySec))
                {
                    Writer.Word(c.Position.packetX);
                    Writer.Word(c.Position.packetZ);
                    Writer.Word(c.Position.packetY);
                }
                else
                {
                    if(c.Position.packetX < 0)
                    {
                        Writer.Word(c.Position.packetX);
                        Writer.Word(0xFFFF);
                    }
                    else
                    {
                        Writer.DWord(c.Position.packetX);
                    }

                    Writer.DWord(c.Position.packetZ);

                    if(c.Position.packetY < 0)
                    {
                        Writer.Word(c.Position.packetY);
                        Writer.Word(0xFFFF);
                    }
                    else
                    {
                        Writer.DWord(c.Position.packetY);
                    }
                }
                /*byte[] x = BitConverter.GetBytes(c.Position.packetX);
                Array.Reverse(x);
                Writer.Buffer(x);

                Writer.Word(c.Position.packetZ);

                byte[] y = BitConverter.GetBytes(c.Position.packetY);
                Array.Reverse(y);
                Writer.Buffer(y);*/

            }
            else
            {
                Writer.Byte(1);
                Writer.Word(0);//angle
            }

            Writer.Byte((byte)(c.State.LastState == 128 ? 2 : 1));

            Writer.Byte(0);
            //Info : If a player spawns at your location and is walking it send byte 3, else 0 byte.
            if (c.Transport.Right)
                Writer.Byte(c.Transport.Horse.Walking == true ? 3 : 0);
            else
            Writer.Byte(c.Position.Walking == true ? 3 : 0);

            Writer.Byte((byte)(c.Information.Berserking ? 1 : 0));
            Writer.Byte(0);
            Writer.Float(c.Speed.WalkSpeed);
            Writer.Float(c.Speed.RunSpeed);
            Writer.Float(c.Speed.BerserkSpeed);

            Writer.Byte(c.Action.Buff.count);
            for (byte b = 0; b < c.Action.Buff.SkillID.Length; b++)
            {
                if (c.Action.Buff.SkillID[b] != 0)
                {
                    Writer.DWord(c.Action.Buff.SkillID[b]);
                    Writer.DWord(c.Action.Buff.OverID[b]);
                }
            }
            #endregion
            /////////////////////////////////////////////////////// Character Job information / name
            #region Job information & name
            Writer.Text(c.Information.Name);
            Writer.Byte(0);
            if (c.Transport.Right)
            {
                Writer.Byte(1);
                Writer.Byte(0);
                Writer.DWord(c.Transport.Horse.UniqueID);
            }

            else
            {
                Writer.Byte(0);
                Writer.Byte(0);
            }

            Writer.Byte(0);
            if (c.Network.Stall != null && c.Network.Stall.ownerID == c.Information.UniqueID)
                Writer.Byte(0x04);
            else
                Writer.Byte(0);
            //Writer.Byte(0);

            if (c.Network.Guild.Guildid > 0)
            {
                Writer.Text(c.Network.Guild.Name);
                if (c.Network.Guild.GrantName != "")
                {
                    Writer.DWord(0);//Icon ?
                    Writer.Text(c.Network.Guild.GrantName);
                }
                else
                {
                    Writer.DWord(0);//Icon
                    Writer.Word(0);//No grantname
                }
            }
            else
            {
                Writer.Word(0);//No guild
                Writer.DWord(0);//No icon
                Writer.Word(0);//No grantname
            }

            Writer.DWord(0);//need to check not static
            Writer.DWord(0);
            Writer.DWord(0);

            Writer.Byte(0);
            Writer.Byte(0);
            if (c.Network.Stall != null && c.Network.Stall.ownerID == c.Information.UniqueID)
            {
                Writer.Text3(c.Network.Stall.StallName);
                Writer.DWord(c.Information.StallModel);
            }
            Writer.Byte(0);

            #endregion
            /////////////////////////////////////////////////////// Pvp state
            #region pvpstate
            if (c.Information.Pvpstate > 0 || c.Information.Murderer)
            {
                Writer.Byte(0x22);
            }
            else
            {
                Writer.Byte(0xFF);
            }
            #endregion
            Writer.Byte(4);
            return Writer.GetBytes();
        }