public int HandlePacket(BaseClient client, PacketIn packet) { LobbyClient cclient = (LobbyClient)client; PacketOut Out = new PacketOut((uint)Opcodes.ANS_CHARACTER_CREATE); byte freeSlot = GetFreeSlot(cclient); if (freeSlot == 0) { Out.WriteInt32Reverse((int)ResponseCodes.RC_FAILED); } else { cclient.Pending.Slot = freeSlot; cclient.Pending.Faction = packet.GetUint8(); cclient.Pending.Gender = packet.GetUint8(); cclient.Pending.Version = (byte)packet.GetUint32Reversed(); packet.GetUint32Reversed(); packet.GetUint32Reversed(); byte[] Custom = new byte[packet.Length - packet.Position]; packet.Read(Custom, 0, Custom.Length); byte[] ActualCustom = new byte[Custom.Length + 4]; ActualCustom[0] = 0x36; ActualCustom[1] = 0x00; ActualCustom[2] = 0x00; ActualCustom[3] = 0x00; Buffer.BlockCopy(Custom, 0, ActualCustom, 4, Custom.Length); cclient.Pending.Appearance = BitConverter.ToString(ActualCustom); Databases.CharacterTable.Add(cclient.Pending); Out.WriteInt32Reverse((int)ResponseCodes.RC_SUCCESS); Out.WriteInt32Reverse(cclient.Pending.Slot); } cclient.Send(Out); return(0); }
public static void Send(LobbyClient client) { PacketOut Out = new PacketOut((UInt32)Opcodes.ANS_LOGIN_SUCCESS); Out.WriteParsedString("Welcome to rebornAPB", 48); Out.WriteUInt32Reverse(client.Account.IsAdmin); Out.WriteInt64Reverse(TCPManager.GetTimeStamp()); Out.WriteByte(0x13); Out.WriteByte(0x29); Out.WriteUInt16Reverse(0x12); Out.WriteByte(0x0E); Out.WriteByte(0x07); Out.WriteUInt16Reverse(9999); Out.WriteInt32Reverse(1450); Out.WriteUInt32Reverse((uint)client.Account.RTW_Points); for (int i = 1; i < 6; ++i) Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion((int)client.Account.Index, i, true, "", "")); Out.WriteInt32Reverse(0); Out.WriteUInt16(0x957D); Out.WriteUInt16(0x0400); Out.WriteUInt16(0x5052); Out.WriteUInt16(0x4F45); Out.WriteUInt16(0x552E); Out.WriteUInt16(0x3232); Out.WriteUInt16(0x3738); Out.WriteUInt16(0x3031); Out.WriteUInt16(0); Out.WriteUInt16(0x0067); Out.WriteUInt64(0x526C624331313256); Out.WriteUInt64(0x486E314100000000); Out.WriteUInt16(0); Out.WriteStringBytes(""); Out.WriteByte(0); client.Send(Out); }
public int HandlePacket(BaseClient client, PacketIn packet) { LobbyClient cclient = (LobbyClient)client; PacketOut Out = new PacketOut((uint)Opcodes.ANS_CHARACTER_CREATE); byte freeSlot = GetFreeSlot(cclient); if (freeSlot == 0) { Out.WriteInt32Reverse((int)ResponseCodes.RC_FAILED); } else { cclient.Pending.Slot = freeSlot; cclient.Pending.Faction = packet.GetUint8(); cclient.Pending.Gender = packet.GetUint8(); cclient.Pending.Version = (byte)packet.GetUint32Reversed(); packet.GetUint32Reversed(); byte[] Custom = new byte[packet.Length - packet.Position]; packet.Read(Custom, 0, Custom.Length); cclient.Pending.Appearance = BitConverter.ToString(Custom); Databases.CharacterTable.Add(cclient.Pending); Out.WriteInt32Reverse((int)ResponseCodes.RC_SUCCESS); Out.WriteInt32Reverse(cclient.Pending.Slot); } cclient.Send(Out); System.Threading.Thread.Sleep(500); cclient.Pending = default(CharacterEntry); System.Threading.Thread.Sleep(500); cclient.Disconnect(); return(0); }
static public void Send(LobbyClient client, int code) { PacketOut packet = new PacketOut((uint)Opcodes.ANS_LOGIN_FAILED); packet.WriteInt32Reverse(code); packet.WriteInt32Reverse(0); client.Send(packet); }
static public void Send(LobbyClient client) { PacketOut Out = new PacketOut((UInt32)Opcodes.ANS_CHARACTER_CREATE); if (client.Pending == null) Out.WriteInt32Reverse((int)ResponseCodes.RC_FAILED); else { Out.WriteInt32Reverse((int)ResponseCodes.RC_SUCCESS); Out.WriteInt32Reverse(client.Pending.Slot); } client.Pending = null; client.Send(Out); }
static public void Send(LobbyClient client) { PacketOut Out = new PacketOut((uint)Opcodes.LOGIN_PUZZLE); if (Program.version == GameVersion.RTW_LAST) { Out.WriteInt32Reverse(1); Out.WriteInt32Reverse(4); Out.WriteInt32Reverse(1); Out.WriteInt32Reverse(555239); } else if (Program.version == GameVersion.G1_LATEST) { Out.WriteInt32Reverse(1); Out.WriteInt32Reverse(19); Out.WriteInt32Reverse(4); Out.WriteInt32Reverse(775065); } Out.WriteByte(0x05); for (int i = 0; i < client.ECrypt.Key.Length; i++) { Out.WriteByte(client.ECrypt.Key[i]); } Out.WriteUInt32Reverse(0); Out.WriteUInt32Reverse(0); Out.WriteUInt32Reverse(0); client.SendTCP(Out); }
static public void Send(LobbyClient client) { PacketOut Out = new PacketOut((UInt32)Opcodes.LOGIN_PUZZLE); Out.WriteInt32Reverse(Program.Version[0]); Out.WriteInt32Reverse(Program.Version[1]); Out.WriteInt32Reverse(Program.Version[2]); Out.WriteInt32Reverse(Program.Build); Out.WriteByte(0x05); for (int i = 0; i < client.ECrypt.Key.Length; i++) Out.WriteByte(client.ECrypt.Key[i]); Out.WriteUInt32Reverse(0); Out.WriteUInt32Reverse(0); Out.WriteUInt32Reverse(0); client.SendTCP(Out); }
static public void Send(LobbyClient client) { PacketOut Out = new PacketOut((UInt32)Opcodes.ANS_CHARACTER_CREATE); if (client.Pending.Index < 1) Out.WriteInt32Reverse((int)ResponseCodes.RC_FAILED); else { Out.WriteInt32Reverse((int)ResponseCodes.RC_SUCCESS); Out.WriteInt32Reverse(client.Pending.Slot); } client.Pending = default(CharacterEntry); client.Send(Out); System.Threading.Thread.Sleep(200); client.Disconnect(); }
public static void Send(LobbyClient cclient) { PacketOut Out = new PacketOut((uint)Opcodes.WORLD_LIST); Out.WriteInt32Reverse((int)ResponseCodes.RC_SUCCESS); lock (Program.worldListener.Worlds) { Out.WriteUInt16Reverse((ushort)Program.worldListener.Worlds.Count); foreach (KeyValuePair <uint, World.World> info in Program.worldListener.Worlds) { Out.WriteUInt32Reverse(info.Key); Out.WriteParsedString(info.Value.Name, 32); Out.WriteByte((byte)info.Value.Id); Out.WriteByte(0); //m_nPopulation %d Out.WriteByte(0); //m_nEnfFaction %d Out.WriteByte(0); //m_nCrimFaction %d Out.WriteByte(0); //m_nPremiumOnly %d Out.WriteByte(info.Value.IP1); Out.WriteByte(info.Value.IP2); Out.WriteByte(info.Value.IP3); Out.WriteByte(info.Value.IP4); } } cclient.Send(Out); }
static public void Send(LobbyClient client) { PacketOut Out = new PacketOut((uint)Opcodes.LOGIN_PUZZLE); //05.05.2019 : version 1.19.7.806251 -> change the numbers below in order to change support for latest game version Out.WriteInt32Reverse(1); Out.WriteInt32Reverse(19); Out.WriteInt32Reverse(7); Out.WriteInt32Reverse(806251); Out.WriteByte(0x05); for (int i = 0; i < client.ECrypt.Key.Length; i++) { Out.WriteByte(client.ECrypt.Key[i]); } Out.WriteUInt32Reverse(0); Out.WriteUInt32Reverse(0); Out.WriteUInt32Reverse(0); client.SendTCP(Out); }
public int HandlePacket(BaseClient client, PacketIn packet) { LobbyClient cclient = (LobbyClient)client; byte FileId = packet.GetUint8(); PacketOut Out = new PacketOut((UInt32)Opcodes.ANS_CONFIGFILE_LOAD); Out.WriteInt32Reverse((int)ResponseCodes.RC_SUCCESS); Out.WriteByte(FileId); byte[] Result = ZlibMgr.Compress(Program.FileMgr.GetFileByte((int)cclient.Account.Id, FileId, true, "", "")); cclient.Send(Out); return 0; }
public int HandlePacket(BaseClient client, PacketIn packet) { LobbyClient cclient = (LobbyClient)client; byte FileId = packet.GetUint8(); PacketOut Out = new PacketOut((uint)Opcodes.ANS_CONFIGFILE_LOAD); Out.WriteInt32Reverse((int)ResponseCodes.RC_SUCCESS); Out.WriteByte(FileId); byte[] Result = ZlibMgr.Compress(Program.FileMgr.GetFileByte(cclient.Account.Index, FileId, true, "", "")); cclient.Send(Out); return(0); }
public int HandlePacket(BaseClient client, PacketIn packet) { WorldClient cclient = (WorldClient)client; uint accountId = packet.GetUint32Reversed(); Log.Debug("AskWorldEnter", "New client! Account = " + accountId); cclient.Account = Databases.AccountTable.SingleOrDefault(a => a.Index == accountId); cclient.Character = Databases.CharacterTable.SingleOrDefault(c => c.AccountIndex == accountId); lock (Program.expectingAccounts) { Program.expectingAccounts.TryGetValue(accountId, out cclient.account); } PacketOut Out = new PacketOut((uint)Opcodes.ANS_WORLD_ENTER); if (cclient.account == null) { Out.WriteInt32Reverse((int)ResponseCodes.RC_FAILED); } else { Out.WriteInt32Reverse((int)ResponseCodes.RC_SUCCESS); Out.WriteUInt32Reverse(cclient.account.Character); Out.WriteUInt32Reverse((uint)cclient.Account.RTW_Points); Out.WriteByte(cclient.Account.IsAdmin); Out.WriteInt64Reverse(TCPManager.GetTimeStamp()); Out.WriteFloat(5.00f); Out.WriteByte(0); Out.WriteByte(0); Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion((int)accountId, 1, false, Program.WorldName, cclient.account.Character.ToString())); Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion((int)accountId, 2, false, Program.WorldName, cclient.account.Character.ToString())); Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion((int)accountId, 3, false, Program.WorldName, cclient.account.Character.ToString())); Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion((int)accountId, 4, false, Program.WorldName, cclient.account.Character.ToString())); Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion((int)accountId, 5, false, Program.WorldName, cclient.account.Character.ToString())); Out.WriteByte(1); Out.WriteByte(cclient.Character.LFG); } cclient.Crypto = new Encryption(cclient.account.SessionId); cclient.Send(new DISTRICT_LIST()); cclient.Send(Out); lock (Program.expectingAccounts) { foreach (KeyValuePair <uint, Acc> a in Program.expectingAccounts) { if (a.Value == cclient.account) { Program.expectingAccounts.Remove(a.Key); break; } } } return(0); }
static public void Send(LobbyClient client) { PacketOut Out = new PacketOut((uint)Opcodes.ANS_LOGIN_SUCCESS); Out.WriteParsedString("Welcome to rebornAPB", 48); Out.WriteUInt32Reverse(client.Account.IsAdmin); Out.WriteInt64Reverse(TCPManager.GetTimeStamp()); Out.WriteByte(0x13); Out.WriteByte(0x29); Out.WriteUInt16Reverse(0x12); Out.WriteByte(0x0E); Out.WriteByte(0x07); Out.WriteUInt16Reverse(9999); Out.WriteInt32Reverse(1450); Out.WriteUInt32Reverse((uint)client.Account.RTW_Points); for (int i = 1; i < 6; ++i) { Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion(client.Account.Index, i, true, "", "")); } Out.WriteInt32Reverse(0); Out.WriteUInt16(0x957D); Out.WriteUInt16(0x0400); Out.WriteUInt16(0x5052); Out.WriteUInt16(0x4F45); Out.WriteUInt16(0x552E); Out.WriteUInt16(0x3232); Out.WriteUInt16(0x3738); Out.WriteUInt16(0x3031); Out.WriteUInt16(0); Out.WriteUInt16(0x0067); Out.WriteUInt64(0x526C624331313256); Out.WriteUInt64(0x486E314100000000); Out.WriteUInt16(0); Out.WriteStringBytes(""); Out.WriteByte(0); client.Send(Out); }
public static void Send(LobbyClient cclient, int MessageID, int QueryID, int ReturnCode, int Param1, int Param2, int Param3, int Param4) { PacketOut Out = new PacketOut((uint)Opcodes.ERROR); Out.WriteInt32Reverse(MessageID); Out.WriteInt32Reverse(QueryID); Out.WriteInt32Reverse(ReturnCode); Out.WriteInt32Reverse(Param1); Out.WriteInt32Reverse(Param2); Out.WriteInt32Reverse(Param3); Out.WriteInt32Reverse(Param4); cclient.Send(Out); }
public int HandlePacket(BaseClient client, PacketIn packet) { LobbyClient cclient = (LobbyClient)client; byte FileId = packet.GetUint8(); PacketOut Out = new PacketOut((uint)Opcodes.ANS_CONFIGFILE_LOAD); Out.WriteInt32Reverse((int)ResponseCodes.RC_SUCCESS); Out.WriteByte(FileId); if (FileId == 2) { byte[] Result = Encoding.ASCII.GetBytes("[AcceptDates]\nEULA = Hour = 1 Min = 57 Sec = 2 Day = 31 Month = 0 Year = 2017\nPatchNotes = Hour = 16 Min = 47 Sec = 22 Day = 23 Month = 2 Year = 2015\n\n[File]\nversion = 0"); Out.Write(Result, 0, Result.Length); } cclient.Send(Out); return(0); }
public int HandlePacket(BaseClient client, PacketIn packet) { WorldClient cclient = (WorldClient)client; UInt32 accountId = packet.GetUint32Reversed(); Log.Debug("AskWorldEnter", "New client! Account = " + accountId); cclient.Account = Databases.AccountTable.SingleOrDefault(a => a.Index == accountId); cclient.Character = Databases.CharacterTable.SingleOrDefault(c => c.AccountIndex == accountId); lock (Program.expectingAccounts) { Program.expectingAccounts.TryGetValue(accountId, out cclient.account); } PacketOut Out = new PacketOut((UInt32)Opcodes.ANS_WORLD_ENTER); if (cclient.account == null) Out.WriteInt32Reverse((int)ResponseCodes.RC_FAILED); else { Out.WriteInt32Reverse((int)ResponseCodes.RC_SUCCESS); Out.WriteUInt32Reverse(cclient.account.Character); Out.WriteUInt32Reverse((uint)cclient.Account.RTW_Points); Out.WriteByte(cclient.Account.IsAdmin); Out.WriteInt64Reverse(TCPManager.GetTimeStamp()); Out.WriteFloat(5.00f); Out.WriteByte(0); Out.WriteByte(0); Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion((int)accountId, 1, false, Program.WorldName, cclient.account.Character.ToString())); Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion((int)accountId, 2, false, Program.WorldName, cclient.account.Character.ToString())); Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion((int)accountId, 3, false, Program.WorldName, cclient.account.Character.ToString())); Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion((int)accountId, 4, false, Program.WorldName, cclient.account.Character.ToString())); Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion((int)accountId, 5, false, Program.WorldName, cclient.account.Character.ToString())); Out.WriteByte(1); Out.WriteByte(cclient.Character.LFG); } cclient.Crypto = new TCP.Encryption(cclient.account.SessionId); cclient.Send(new DISTRICT_LIST()); cclient.Send(Out); lock (Program.expectingAccounts) { foreach (KeyValuePair<uint, Acc> a in Program.expectingAccounts) { if (a.Value == cclient.account) { Program.expectingAccounts.Remove(a.Key); break; } } } return 0; }
static public void Send(LobbyClient client) { PacketOut Out = new PacketOut((UInt32)Opcodes.WORLD_LIST); Out.WriteInt32Reverse((int)ResponseCodes.RC_SUCCESS); lock (Program.worldListener.Worlds) { Out.WriteUInt16Reverse((UInt16)Program.worldListener.Worlds.Count); foreach (KeyValuePair<UInt32, World.World> info in Program.worldListener.Worlds) { Out.WriteUInt32Reverse((UInt32)info.Key); Out.WriteParsedString(info.Value.Name, 32); Out.WriteByte(1); Out.WriteByte(info.Value.Population); Out.WriteByte(info.Value.EnforcerRecommended ? (Byte)1 : (Byte)0); Out.WriteByte(info.Value.CriminalRecommended ? (Byte)1 : (Byte)0); } } client.Send(Out); }
static public void Send(LobbyClient client) { PacketOut Out = new PacketOut((uint)Opcodes.ANS_LOGIN_SUCCESS); Out.WriteParsedString("Welcome to rebornAPB", 48); Out.WriteUInt32Reverse(1); Out.WriteInt64Reverse(TCPManager.GetTimeStamp()); Out.WriteUInt32Reverse(client.Account.IsAdmin); Out.WriteInt32Reverse(0); Out.WriteInt32Reverse(0); Out.WriteInt32Reverse(0); Out.WriteInt32Reverse(0); Out.WriteInt32Reverse(0); Out.WriteString(""); Out.WriteInt32(0); Out.WriteInt32(0); Out.WriteInt32Reverse(0); Out.WriteString(""); Out.WriteInt32Reverse(0); client.Send(Out); }
public int HandlePacket(BaseClient client, PacketIn packet) { LobbyClient cclient = (LobbyClient)client; byte slotId = packet.GetUint8(); CharacterEntry character = Databases.CharacterTable.SingleOrDefault(c => c.AccountIndex == cclient.Account.Index && c.Slot == slotId); if (character.Index < 1) { Log.Error(cclient.Account.Username, "Wrong slot specified!"); } World.World info = null; lock (Program.worldListener.Worlds) { Program.worldListener.Worlds.TryGetValue((uint)character.World, out info); } PacketOut Out = new PacketOut((uint)Opcodes.ANS_WORLD_ENTER); if (info == null) { Out.WriteUInt32Reverse((uint)ResponseCodes.RC_FAILED); } else { info.Send(new AccountEnter((uint)cclient.Account.Index, (uint)character.Index, cclient.SessionId)); Out.WriteInt32Reverse((int)ResponseCodes.RC_SUCCESS); Out.WriteByte(info.IP1); Out.WriteByte(info.IP2); Out.WriteByte(info.IP3); Out.WriteByte(info.IP4); Out.WriteUInt16Reverse((ushort)info.Port); Out.WriteInt64Reverse(TCPManager.GetTimeStamp()); } cclient.Send(Out); return(0); }
static public void Send(LobbyClient client) { client.Characters = Databases.CharacterTable.Select(c => c.AccountIndex == client.Account.Index); PacketOut Out = new PacketOut((uint)Opcodes.CHARACTER_LIST); Out.WriteByte((byte)client.Characters.Count); Out.WriteInt32Reverse(8); Out.WriteByte(client.Account.Threat); lock (Program.worldListener.Worlds) { foreach (CharacterEntry chr in client.Characters) { Out.WriteByte(chr.Slot); Out.WriteByte(chr.Faction); Out.WriteByte(1); Out.WriteInt32Reverse(chr.World); World.World info = null; Program.worldListener.Worlds.TryGetValue((uint)chr.World, out info); if (info != null) { Out.WriteParsedString(info.Name, 32); } else { Out.WriteParsedString("(unavailable)", 32); } Out.WriteParsedString(chr.Name, 32); Out.WriteInt32Reverse(chr.Rank); Out.WriteInt32Reverse(0); Out.WriteByte(0); Out.WriteByte(0); Out.WriteByte(0); Out.WriteByte(0); Out.WriteInt32Reverse(0); Out.WriteInt32Reverse(0); } } client.Send(Out); if (client.Characters.Count <= 0) { WORLD_LIST.Send(client); } }
static public void Send(LobbyClient client, int code) { PacketOut packet = new PacketOut((UInt32)Opcodes.ANS_LOGIN_FAILED); packet.WriteInt32Reverse(code); client.Send(packet); }
public int HandlePacket(BaseClient client, PacketIn packet) { WorldClient cclient = (WorldClient)client; UInt32 accountId = packet.GetUint32Reversed(); cclient.AccountId = accountId; Log.Debug("AskWorldEnter", "New client! Account = " + accountId); Acc account = null; lock (Program.expectingAccounts) Program.expectingAccounts.TryGetValue(accountId, out account); #region Character stuff MySqlCommand cmd = new MySqlCommand("SELECT * FROM `characters` WHERE `id` = @id", WorldServer.Database.Connection.Instance); try { cmd.Prepare(); cmd.Parameters.AddWithValue("@id", account.Character.ToString()); cmd.ExecuteNonQuery(); MySqlDataReader reader = cmd.ExecuteReader(); try { while (reader.Read()) { cclient.CharacterId = getID(reader); cclient.Name = getName(reader); cclient.Faction = getFaction(reader); cclient.Gender = getGender(reader); cclient.Rank = getRank(reader); cclient.Money = getMoney(reader); cclient.Threat = getThreat(reader); cclient.Playtime = getPlayTime(reader); cclient.Clan = getClan(reader); cclient.districtID = 0; cclient.districtType = 0; cclient.groupInvite = 0; cclient.groupStatus = 0; cclient.groupPublic = 0; } } catch (MySqlException e) { Log.Error("MySQL", e.ToString()); } finally { reader.Dispose(); } } catch (MySqlException e) { Log.Error("MySQL", e.ToString()); } finally { cmd.Dispose(); } #endregion #region Account stuff MySqlCommand cmd2 = new MySqlCommand("SELECT * FROM `accounts` WHERE `id` = @id", WorldServer.Database.Connection.Instance); try { cmd2.Prepare(); cmd2.Parameters.AddWithValue("@id", accountId.ToString()); cmd2.ExecuteNonQuery(); MySqlDataReader reader2 = cmd2.ExecuteReader(); try { while (reader2.Read()) { cclient.Email = getEmail(reader2); cclient.isGM = getGm(reader2); cclient.isBanned = getBanned(reader2); cclient.Points = getPoints(reader2); } } catch (MySqlException e) { Log.Error("MySQL", e.ToString()); } finally { reader2.Dispose(); } } catch (MySqlException e) { Log.Error("MySQL", e.ToString()); } finally { cmd2.Dispose(); } #endregion #region Client status MySqlCommand cmd3 = new MySqlCommand("INSERT INTO `clientstatus` VALUES(@name, 0, 0, 1, 0, 0, 0, 0)", WorldServer.Database.Connection.Instance); try { cmd3.Prepare(); cmd3.Parameters.AddWithValue("@name", cclient.Name); cmd3.ExecuteNonQuery(); } catch (MySqlException e) { Log.Error("MySQL", e.ToString()); } finally { cmd3.Dispose(); } #endregion PacketOut Out = new PacketOut((UInt32)Opcodes.ANS_WORLD_ENTER); if (account == null) Out.WriteInt32Reverse((int)ResponseCodes.RC_FAILED); else { Out.WriteInt32Reverse((int)ResponseCodes.RC_SUCCESS); Out.WriteUInt32Reverse(account.Character); Out.WriteUInt32Reverse(cclient.Points); Out.WriteByte(cclient.isGM); Out.WriteInt64Reverse(TCPManager.GetTimeStamp()); Out.WriteFloat(5.00f); Out.WriteByte(0); Out.WriteByte(0); Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion((int)accountId, 1, false, Program.WorldName, account.Character.ToString())); Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion((int)accountId, 2, false, Program.WorldName, account.Character.ToString())); Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion((int)accountId, 3, false, Program.WorldName, account.Character.ToString())); Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion((int)accountId, 4, false, Program.WorldName, account.Character.ToString())); Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion((int)accountId, 5, false, Program.WorldName, account.Character.ToString())); Out.WriteByte(1); Out.WriteByte(cclient.LFG); } cclient.Crypto = new TCP.Encryption(account.SessionId); cclient.Send(new DISTRICT_LIST()); cclient.Send(Out); return 0; }
public static void Send(LobbyClient client) { PacketOut Out = new PacketOut((UInt32)Opcodes.LOGIN_PUZZLE); if(Program.version == GameVersion.RTW_CB) { Out.WriteInt32Reverse(0); Out.WriteInt32Reverse(6); Out.WriteInt32Reverse(0); Out.WriteInt32Reverse(509927); } else if(Program.version == GameVersion.RTW_DVD) { Out.WriteInt32Reverse(1); Out.WriteInt32Reverse(1); Out.WriteInt32Reverse(0); Out.WriteInt32Reverse(534979); } else if (Program.version == GameVersion.RTW_LAST) { Out.WriteInt32Reverse(1); Out.WriteInt32Reverse(4); Out.WriteInt32Reverse(1); Out.WriteInt32Reverse(555239); } else if (Program.version == GameVersion.G1_LATEST) { Out.WriteInt32Reverse(1); Out.WriteInt32Reverse(19); Out.WriteInt32Reverse(4); Out.WriteInt32Reverse(766569); } else if (Program.version == GameVersion.G1_ENGUPD) { Out.WriteInt32Reverse(2); Out.WriteInt32Reverse(0); Out.WriteInt32Reverse(0); Out.WriteInt32Reverse(750394); } Out.WriteByte(0x05); for (int i = 0; i < client.ECrypt.Key.Length; i++) Out.WriteByte(client.ECrypt.Key[i]); Out.WriteUInt32Reverse(0); Out.WriteUInt32Reverse(0); Out.WriteUInt32Reverse(0); client.SendTCP(Out); }