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(); }
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(); }
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(); }
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(); }
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(); }
//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(); }
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(); }
//////////////////////////////////////////////////////////////////////////////////////////////////////////// // 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(); }
//////////////////////////////////////////////////////////////////////////////////////////////////////////// // 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(); }
public static byte[] TeleportStart() { PacketWriter Writer = new PacketWriter(); Writer.Create(Systems.SERVER_TELEPORTSTART); Writer.Byte(2); Writer.Word(1); return Writer.GetBytes(); }
public static byte[] IngameMessages(ushort opcode,ushort id) { PacketWriter Writer = new PacketWriter(); Writer.Create(opcode); Writer.Byte(2); Writer.Word(id); return Writer.GetBytes(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
//////////////////////////////////////////////////////////////////////////////////////////////////////////// // 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(); }
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(); }
//////////////////////////////////////////////////////////////////////////////////////////////////////////// // 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(); }
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(); }
///////////////////////////////////////////////////////////////////////////////// // 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 }
//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(); }
/////////////////////////////////////////////////////////////////////////// // 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(); }
/////////////////////////////////////////////////////////////////////////// // 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(); }
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(); }
/////////////////////////////////////////////////////////////////////////// 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(); }
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(); }
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(); }