A101 opcode

02/16/2013 12:06 ^AquaFresh^#1
Hello,
I have many troubles with that opcode in vsro.
So i request for a little help.
Code:
 Writer.Create(0xA101);
            Writer.Word(0x1401);
           
            Writer.Text("SRO_Vietnam_TestLocal [F]");
            Writer.Word(0x3020);
            Writer.Byte(0);
            
            
            MySQL ms = new MySQL("SELECT * FROM server");
            using (MySql.Data.MySqlClient.MySqlDataReader reader = ms.Read())
            {
                while (reader.Read())
                {
                    Writer.Bool(true);

                    Writer.Word(reader.GetInt16(1)); //server id
                    Writer.Text(reader.GetString(2)); //name
                    Writer.Word(reader.GetString(3)); //curent players
                    Writer.Word(reader.GetString(4)); //maxplayers
                    Writer.Byte(1); // Server Status
                }
            }
            ms.Close();

            Writer.Word(0x1401);
            Writer.Byte(0);
And I couldn't notice any server. Server list is empty. I think that packet structure is wrong.
Anyone can help?
02/16/2013 13:26 lesderid#2
Might be a bit outdated, but you could compare it with this: [Only registered and activated users can see links. Click Here To Register...] (search for 'A101')
02/16/2013 23:03 ^AquaFresh^#3
Quote:
Originally Posted by lesderid View Post
Might be a bit outdated, but you could compare it with this: [Only registered and activated users can see links. Click Here To Register...] (search for 'A101')
Thanks anyways but it's a bit outdated.
Anyone has the A101 packet structure for vsro 188?
02/16/2013 23:11 lesderid#4
Quote:
Originally Posted by ^AquaFresh^ View Post
Thanks anyways but it's a bit outdated.
Anyone has the A101 packet structure for vsro 188?
Actually, now that I think about it, it should still be the same. The GatewayServer hasn't been changed since open beta afaik. (well, iSRO got an update in which the absolute player count got changed to a float, but that's about it)
02/17/2013 01:36 qkuh#5
Just sniff the packet :)
02/17/2013 10:30 M4n1ak#6
Code:
namespace Silkroad
{
    class Servers_Auto
    {
        public static void Analyze(Packet packet)
        {
            
            byte[] ar = packet.ToByteArray();
            string text = null;
            for (int i = 6; i < packet.data.len + 6; i++)
            {
                text += ar[i].ToString("X2");
            }
            Globals.UpdateLogs(text);
            try
            {
                string name = null;;
                if (packet.data.ReadBYTE() == 0x01)
                {
                    packet.data.ReadBYTE();
                    packet.data.ReadSTRING(enumStringType.ASCII);
                    packet.data.ReadBYTE();
                    byte server = packet.data.ReadBYTE();
                    BotData.Server_Name.Clear();
                    BotData.Server_ID.Clear();
                    while (server == 0x01)
                    {
                        ushort server_id = packet.data.ReadWORD(); //Server ID
                        name = packet.data.ReadSTRING(enumStringType.ASCII); //Server Name
                        packet.data.ReadWORD(); //Curr Users
                        packet.data.ReadWORD(); //Max Users
                        packet.data.ReadBYTE(); //State
                        server = packet.data.ReadBYTE();
                        BotData.Server_Name.Add(name);
                        BotData.Server_ID.Add(server_id);
                        if (Globals.MainWindow.in_game_server_name.Items.IndexOf(name) == -1)
                        {
                            Globals.MainWindow.in_game_server_name.Items.Add(name);
                        }
                    }
                }
                Globals.MainWindow.in_game_server_name.Enabled = true;
                if (Globals.MainWindow.in_game_server_name.Items.Count == 1)
                {
                    Globals.MainWindow.in_game_server_name.SelectedIndex = 0;
                }
                if (BotData.use_al == true)
                {
                    packet = new Packet((ushort)LoginServerOpcodes.CLIENT_OPCODES.LOGIN, false, enumDestination.Server);
                    packet.data.AddBYTE(BotData.LoginServer.locale);
                    packet.data.AddSTRING(Globals.MainWindow.username.Text, enumStringType.ASCII);
                    packet.data.AddSTRING(Globals.MainWindow.password.Text, enumStringType.ASCII);
                    packet.data.AddWORD(BotData.Server_ID[BotData.Server_Name.IndexOf(Globals.MainWindow.in_game_server_name.Text)]);
                    System.Threading.Thread.Sleep(300);
                    Globals.ServerPC.SendPacket(packet);
                }
                else
                {
                    if (!BotData.use_client)
                    {
                        Globals.MainWindow.in_game_server_name.Enabled = true;
                        Globals.MainWindow.username.Enabled = true;
                        Globals.MainWindow.password.Enabled = true;
                        Globals.MainWindow.login.Enabled = true;
                    }
                }
            }
            catch (Exception ex)
            {
               // Globals.Debug("ServerList", ex.Message, packet);
            }
        }
    }
}
Part of [servers.cs] class from zeteris vsro bot..
02/17/2013 13:18 LastThief*#7
I've this thing stored somewhere in my pc I'll find it and send it to you soon it contains server list request count etc

Here it is

[Only registered and activated users can see links. Click Here To Register...]
02/18/2013 23:00 cyberninjah#8
Code:
                packet.SkipBytes(2);
                string str = packet.ReadString(Encoding.ASCII);
                packet.SkipBytes(1);
                byte num = packet.Read<byte>();
                Data.ServerList.Clear();
                while (Convert.ToBoolean(num))
                {
                    ushort num2 = packet.Read<ushort>();
                    string str2 = packet.ReadString(Encoding.ASCII);
                    ushort num3 = packet.Read<ushort>();
                    ushort num4 = packet.Read<ushort>();
                    bool flag = Convert.ToBoolean(packet.Read<byte>());
                    Server server2 = new Server {
                        ID = num2,
                        Name = str2,
                        ConnectedUsers = num3,
                        MaximumUsers = num4,
                        Online = flag
                    };
                    Server item = server2;
                    Data.ServerList.Add(item);
                    packet.SkipBytes(1);
                    num = packet.Read<byte>();
02/24/2013 18:19 [GM]Obvlision#9
Just sniff the packet