public static void LootItem(PacketReader packet, PacketBuilder builder, ClientHandler client, EventHandler events) { //byte[] b; var uid = packet.ReadInt(); var unk = packet.ReadShort(); var itemID = packet.ReadShort(); var slot = packet.ReadShort(); var database = client.Metadata["database"] as IDatabaseContracts; var server = (int)client.Metadata["server"]; var id = (uint)client.Metadata["id"]; var map = client.Metadata["map"] as IMap; var item = map.LootItem(client, (uint)uid); var ditem = (DItem)item.ToStructure <DItem>(); CItem citem = ditem.ToClient(slot); database.AddItem(server, (int)id, (int)slot, item, 0); builder.New(0x99); { builder += (byte)96; // ? builder += citem.ToByteArray(); //b = builder.Data; } client.Send(builder, "ItemLooting"); }
public static void SubPasswordDelRequest(PacketReader packet, PacketBuilder builder, ClientHandler client, EventHandler events) { packet.Skip(4); var pass = packet.ReadString(10).Trim('\0'); var syncServer = client.Metadata["syncServer"] as SyncReceiver; var checksub = SubpassManagement.CheckSubPw(syncServer, client.AccountID, pass); var tries = 0; builder.New(0x410); { if (checksub) { client.Metadata["subTries"] = 0; builder += 1; // success builder += (byte)0x00; // failed times } else { client.Metadata["subTries"] = (int)client.Metadata["subTries"] + 1; tries = (int)client.Metadata["subTries"]; builder += 0; // failed builder += (byte)tries; // failed times } builder += 1; } client.Send(builder, "SubPasswordDelRequest"); if ((int)client.Metadata["subTries"] > 3) { client.Disconnect(); } }
public static void PetInfo(PacketReader packet, PacketBuilder builder, ClientHandler client, EventHandler events) { builder.New(0x0389); { builder += (int)1; builder += (int)1; //petserial builder += (int)0; builder += (byte)0; builder += (int)34; builder += (int)1; //petserial builder += (int)1; //PetID builder += (int)8; //PetOwner builder += (int)11241; //PetIdx builder += (byte)10; //PetLevel builder += (int)0; //PetExp builder += (byte)0; builder += (byte)11; builder += (int)0; builder += (int)0; builder += (int)0; builder += (int)0; builder += (byte)0; builder += new byte[40]; } client.Send(builder, "PetInfo"); }
public static void VerifyLinks(PacketReader packet, PacketBuilder builder, ClientHandler client, EventHandler events) { //byte[] b; var timestamp = packet.ReadInt(); var count = packet.ReadShort(); var key = ((ulong)count << 32) + (ulong)timestamp; var proxy = client.Metadata["proxy"] as ILoginContracts; proxy.AddUser(key, client.AccountID); builder.New(0x66); { builder += (byte)1; // server builder += (byte)1; // channel //b = builder.Data; } client.Send(builder, "VerifyLinks"); (client.Metadata["timer"] as System.Timers.Timer).Stop(); }
public static void ChangeChannel(PacketReader packet, PacketBuilder builder, ClientHandler client, EventHandler events) { var newServer = packet.ReadByte(); var newChannel = packet.ReadByte(); builder.New(0x085D); { builder += (int)1; } /* * client.Metadata["server"] = newServer; * client.Metadata["channel"] = newChannel; * * var clients = client.Metadata["clients"] as Dictionary<ulong, ClientHandler>; * foreach (var c in clients.Values) * { * if(c.AccountID == client.AccountID) * { * var key = (ulong)c.Metadata["magic"]; * clients.Remove(key); * } * } * * client.Metadata["clients"] = clients; * var port = Global.Config.getChannelPort(newServer,newChannel);*/ client.Send(builder, "ChangeChannel"); }
static void NFY_MobList(PacketBuilder builder, ClientHandler client, List <MobEntity> mobs, int start, int end, int count) { var map = client.Metadata["map"] as IMap; builder.New(0xCA); { builder += (byte)(count); // count for (int i = start; i < end; i++) { var m = mobs[i]; builder += (ushort)m.Id; // uniq id? builder += (byte)0x02; // builder += (byte)map.ID; // Map id builder += m.CurrentPosX; // start x builder += m.CurrentPosY; // start y builder += m.EndPosX; // end x builder += m.EndPosY; // end y builder += m.SId; // mob species id builder += m.MaxHP; // max hp builder += m.CurrentHP; // current hp builder += (byte)0; // moving speed multiplier? builder += m.Level; // level builder += new byte[7]; } } client.Send(builder, "NFY_NewMobsList"); }
public static void CharacterDeleteCheckSubPassword(PacketReader packet, PacketBuilder builder, ClientHandler client, EventHandler events) { var subpw = packet.ReadString(10).Trim('\0'); var syncServer = client.Metadata["syncServer"] as SyncReceiver; var verify = SubpassManagement.CheckSubPw(syncServer, client.AccountID, subpw); var tries = 0; builder.New(0x870); { if (verify) { client.Metadata["subTries"] = 0; builder += 1; // success builder += (byte)0; // failed times } else { client.Metadata["subTries"] = (int)client.Metadata["subTries"] + 1; tries = (int)client.Metadata["subTries"]; builder += 0; // failed builder += (byte)tries; // failed times } } client.Send(builder, "CharacterDeleteCheckSubPassword"); if ((int)client.Metadata["subTries"] > 3) { client.Disconnect(); } }
public static void MeritSystem(PacketReader packet, PacketBuilder builder, ClientHandler client, EventHandler events) { var unk1 = packet.ReadByte(); var unk2 = packet.ReadByte(); var unk3 = packet.ReadByte(); var unk4 = packet.ReadByte(); var unk5 = packet.ReadByte(); var unk6 = packet.ReadByte(); var unk7 = packet.ReadByte(); var unk8 = packet.ReadByte();/* * var unk9 = packet.ReadByte(); * var unk10 = packet.ReadByte(); * var unk11 = packet.ReadByte(); * var unk12 = packet.ReadByte();*/ #if DEBUG Log.Notice("" + unk1 + " " + unk2 + " " + unk3 + " " + unk3 + " " + unk4 + " " + unk5 + " " + unk6 + " " + unk7 + " " + unk8 + ""); #endif builder.New(0x9F3); { builder += 1; builder += (ushort)0; } client.Send(builder, "MeritSystem"); }
public static void KeyMoveBegined(PacketReader packet, PacketBuilder builder, ClientHandler client, EventHandler events) { var unk1 = packet.ReadShort(); var unk2 = packet.ReadShort(); var unk3 = packet.ReadShort(); var unk4 = packet.ReadLong(); packet.Skip(8); var unk5 = packet.ReadShort(); //var unk6 = packet.ReadByte(); //var id = (int)client.Metadata["id"]; var timestamp = (uint)client.Metadata["timestamp"]; //var clients = (client.Metadata["map"] as IMap).GetSurroundingClients(client, 2); For Now builder.New(0x193); { builder += 0; builder += Environment.TickCount - (int)timestamp; builder += unk1; builder += unk2; builder += unk3; builder += unk4; builder += unk5; //builder += unk6; } /*foreach (var c in clients) * { * c.Send(builder, "NFY_KeyMoveBegined"); * }*/ client.Send(builder, "NFY_KeyMoveBegined"); }
public static void Unknown9D8(PacketReader packet, PacketBuilder builder, ClientHandler client, EventHandler events) { builder.New(0x09D8); { } client.Send(builder, "Unknown9D8"); }
public static void CashNPC(PacketReader packet, PacketBuilder builder, ClientHandler client, EventHandler events) { builder.New(0xA05); { builder += (ushort)0; builder += 1; builder += (ushort)0; //ID builder += (ulong)1; //itemidx builder += (uint)0; //tag builder += (uint)0; builder += (uint)0; //duration builder += (byte)0; builder += (byte)0; builder += (byte)0; builder += (uint)5357; builder += (uint)123; //price builder += (uint)0; builder += (ushort)0; builder += (ushort)2; builder += (ushort)0; } client.Send(builder, "CashNPC"); }
public static void QuestNextStep(PacketReader packet, PacketBuilder builder, ClientHandler client, EventHandler events) { var questid = packet.ReadUShort(); var questid1 = packet.ReadUShort(); packet.Skip(3); var previousstep = packet.ReadByte(); var nextstep = packet.ReadByte(); /* * builder.New(0x0140); * { * builder += (byte)1; * builder += (byte)1; * builder += (byte)1; * builder += (byte)1; * builder += (byte)1; * builder += (byte)1; * builder += (byte)1; * builder += (byte)1; * }*/ builder.New(0x0140); { builder += questid; builder += (ushort)(previousstep + nextstep); builder += questid1; builder += (ushort)0; } client.Send(builder, "QuestNextStep"); }
public static void AddStatPoints(PacketReader packet, PacketBuilder builder, ClientHandler client, EventHandler events) { var strength = packet.ReadInt(); var dexterity = packet.ReadInt(); var intellingence = packet.ReadInt(); var strtoadd = packet.ReadInt(); var dextoadd = packet.ReadInt(); var inttoadd = packet.ReadInt(); builder.New(0x0A58); { builder += 0; //add or remove? builder += strength + strtoadd; builder += dexterity + dextoadd; builder += intellingence + inttoadd; } Character character = client.Metadata["fullchar"] as Character; var id = character.id; var server = (int)client.Metadata["server"]; var sync = client.Metadata["syncServer"] as SyncReceiver; int pnt = -(strtoadd + dextoadd + inttoadd); CharacterManagement.UpdateStatPoints(sync, server, id, strength + strtoadd, intellingence + inttoadd, dexterity + dextoadd, pnt); client.Send(builder, "AddStatPoints"); }
public static void CheckUserPrivacyData(PacketReader packet, PacketBuilder builder, ClientHandler client, EventHandler events) { //byte[] b; packet.Skip(4); var pass = packet.ReadString(32).Trim('\0'); pass = GenerateHash(pass); var database = client.Metadata["database"] as IDatabaseContracts; var server = (int)client.Metadata["server"]; bool?auth = database.VerifyPassword(server, client.AccountID, pass); builder.New(0x320); { if (auth != null) { builder += (bool)(auth) ? (byte)1 : (byte)0; } else { events.Error("world.700.CheckUserPrivacyData", "CheckUserPrivacyData: Account ID not found!"); } //b = builder.Data; } client.Send(builder, "CheckUserPrivacyData"); }
public static void Ping(PacketReader packet, PacketBuilder builder, ClientHandler client, EventHandler events) { builder.New(0x09FE); client.Send(builder, "Ping"); NewMobsList(packet, builder, client, events); }
public static void Unknown9C8(PacketReader packet, PacketBuilder builder, ClientHandler client, EventHandler events) { builder.New(0x09C8); client.Send(builder, "Unknown9C8"); var clients = client.Metadata["clients"] as Dictionary <ulong, ClientHandler>; clients.Remove((ulong)client.Metadata["magic"]); Character character = client.Metadata["fullchar"] as Character; var id = character.id; if (id == -999999998) { builder.New(0xC9); { builder += id; builder += (byte)0x12; } character.id = 0; foreach (var c in clients.Values) { c.Send(builder, "DelUserList"); } } }
public static void SubPasswordSet(PacketReader packet, PacketBuilder builder, ClientHandler client, EventHandler events) { var pass = packet.ReadString(10).Trim('\0'); packet.Skip(5); var question = packet.ReadInt(); var answer = packet.ReadString(16).Trim('\0'); packet.Skip(112); var changeSub = packet.ReadInt(); var syncServer = client.Metadata["syncServer"] as SyncReceiver; if (changeSub == 0) { SubpassManagement.SetSubPass(syncServer, client.AccountID, pass, question, answer); } else { SubpassManagement.SetSubPass(syncServer, client.AccountID, pass, -1, string.Empty); } builder.New(0x406); { builder += 1; builder += 0; builder += 1; builder += 0; } SubpassManagement.SetSubPassTime(syncServer, client.AccountID, 0); client.Send(builder, "SubPasswordSet"); }
public static void Unknown9D6(PacketReader packet, PacketBuilder builder, ClientHandler client, EventHandler events) { builder.New(0x09D6); { builder += new byte[24]; } client.Send(builder, "Unknown9D6"); }
public static void Unknown8C8(PacketReader packet, PacketBuilder builder, ClientHandler client, EventHandler events) { builder.New(0x08C8); { builder += 0x03E8; } client.Send(builder, "Unknown8C8"); }
public static void Unknown193(PacketReader packet, PacketBuilder builder, ClientHandler client, EventHandler events) { builder.New(0x0193); { builder += (byte)0; } client.Send(builder, "Unknown193"); }
public static void CreateCharacter(PacketReader packet, PacketBuilder builder, ClientHandler client, EventHandler events) { var style = packet.ReadInt(); packet.Skip(2); var slot = packet.ReadByte(); var nameLength = packet.ReadByte(); var name = packet.ReadString(nameLength); var _class = (byte)(style & 0xFF ^ 8); style >>= 8; var colour = (byte)((style & 0xFF) >> 5); var face = (byte)(style & 0x1F); style >>= 8; var hair = (byte)((style & 0xFF) >> 1); style >>= 8; var gender = (style != 0); var server = (int)client.Metadata["server"]; var syncServer = client.Metadata["syncServer"] as SyncReceiver; var slotorder = (int)client.Metadata["slotorder"]; var slots = new int[8] { slotorder / 0x10000000 % 0x10, slotorder / 0x1000000 % 0x10, slotorder / 0x100000 % 0x10, slotorder / 0x10000 % 0x10, slotorder / 0x1000 % 0x10, slotorder / 0x100 % 0x10, slotorder / 0x10 % 0x10, slotorder % 0x10, }; for (int i = 0; i < 8; i++) { if (slots[i] == slot) { slot = (byte)i; break; } } slot = (byte)slots[slot]; var status = CharacterManagement.CreateCharacter(syncServer, server, client.AccountID, slot, name, _class, gender, face, hair, colour); builder.New(0x86); { builder += client.AccountID * 8 + slot; builder += (byte)status; } client.Send(builder, "NewMyChartr"); }
public static void Unknown9E0(PacketReader packet, PacketBuilder builder, ClientHandler client, EventHandler events) { builder.New(0x09E0); { builder += 0; } client.Send(builder, "Unknown9E0"); }
public static void QuestStart(PacketReader packet, PacketBuilder builder, ClientHandler client, EventHandler events) { builder.New(0x011A); { builder += 1; } client.Send(builder, "QuestStart"); }
public static void UnknownPacket1(PacketReader packet, PacketBuilder builder, ClientHandler client, EventHandler events) { var b = new byte[0x0A] { 0xE2, 0xB7, 0x0A, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00 }; client.Send(ref b, "UnknownPacket1"); }
public static void UnknownA0B(PacketReader packet, PacketBuilder builder, ClientHandler client, EventHandler events) { builder.New(0x0A0B); { builder += new byte[422]; } client.Send(builder, "UnknownA0B"); }
/* * UnknownCE9 Packet * ------------------------- * Server2Client Structure: * * UnknownCE9 -> E2 B7 0C 00 E9 0C 01 00 00 00 00 00 * * ushort : magic code * ushort : size * ushort : opcode * * uint : Unkn1 * ushort : Unkn2 */ public static void UnknownCE9(PacketReader packet, PacketBuilder builder, ClientHandler client, EventHandler events) { builder.New(0xCE9); { builder += 1; builder += (ushort)0; } client.Send(builder, "UnknownCE9"); }
public virtual void CheckVersion(ref byte[] message, ClientHandler client, EventHandler events) { var p = new Outgoing.CheckVersion(true); p.Version = BitConverter.ToUInt32(message, 0x0A); var b = p.ToByteArray(); client.Send(ref b, "CheckVersion"); }
public static void ReqCraft(PacketReader packet, PacketBuilder builder, ClientHandler client, EventHandler events) { builder.New(0x8CA); { builder += 1; builder += (ushort)0; } client.Send(builder, "ReqCraft"); }
/* * SystemMessg Packet * ------------------------- * Server2Client Structure: * * ushort : magic code * ushort : size * ushort : opcode * * byte : status # system message status * short : unk1 */ #endregion public static void SystemMessg(PacketReader packet, PacketBuilder builder, ClientHandler client, EventHandler events) { builder.New(0x78); { builder += (byte)SystemMsg.None; builder += (short)0; } client.Send(builder, "SystemMessg"); }
public static void RecvCashItem(PacketReader packet, PacketBuilder builder, ClientHandler client, EventHandler events) { builder.New(0x1A3); { var ID = packet.ReadUShort(); var unk1 = packet.ReadByte(); var unk2 = packet.ReadByte(); var SlotFree = packet.ReadByte(); var unk4 = packet.ReadByte(); Character character = client.Metadata["fullchar"] as Character; var cid = character.id; var server = (int)client.Metadata["server"]; var syncServer = client.Metadata["syncServer"] as SyncReceiver; var slot = character.slot; var CashItens = CharacterManagement.GetCashItem(syncServer, server, cid / 8); for (int i = 0; i < CashItens.Length; i++) { if (CashItens[i].ID == ID) { builder += (int)ID; builder += (int)CashItens[i].itemid; builder += CashItens[i].itemopt; builder += (int)CashItens[i].itemopt2; builder += (int)SlotFree; builder += (int)0; builder += (short)0; CharacterManagement.SetCashItem(syncServer, server, CashItens[i].ID); } } //Log.Message(string.Format("'{0}' '{1}' '{2}' '{3}' '{4}'", ID, unk1, unk2, SlotFree, unk4), ConsoleColor.White, "Recv: "); /* * builder += (int)unk0; //item cashid * builder += (int)163865; //item idx * builder += (int)244; //item opt extreme * builder += (int)536871167; //item opt old * builder += (int)0; //item opt * builder += (byte)unk3; //Slot Free * builder += (byte)0; * builder += (byte)0; * builder += (byte)0; * * builder += (int)0; * builder += (short)0;*/ } client.Send(builder, "RecvCashItem"); }