Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

j.mendes24

[Resolvido] bot para o secondlife

Mensagens Recomendadas

j.mendes24    0
j.mendes24

alguem me poderia ajudar a fazer um bot em vb.net para fazer login no secondlife?

ja fiz muita pesquisa mas nao sei onde aplicar o codigo  :hmm:

agradecia ajuda

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
José Lopes    1
José Lopes

Então, se tens o codigo, é só criar o programa para pores a correr o codigo...

explica lá melhor qual é a tua dúvida.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
j.mendes24    0
j.mendes24

este e o codigo que eu tenho:

Imports System
Imports System.Text
Imports System.Collections.Generic
Imports System.Threading
Imports OpenMetaverse
Imports OpenMetaverse.Packets
Imports libsecondlife
Imports libsecondlife.NetworkManager

Public Class Form1
    Dim LoginSuccess As Boolean = False
    Dim LoginEvent As AutoResetEvent = New AutoResetEvent(False)
    Dim args As Integer


    Public Shared Sub Main(string() args))
        Dim client As GridClient
        If args.Length <> 4 Then
            Console.WriteLine("Usage: PacketDump [firstname] [lastname] [password] [seconds (0 for infinite)]")
            Return
        End If

        client = New GridClient()
        ' Turn off some unnecessary things
        client.Settings.MULTIPLE_SIMS = False
        ' Throttle packets that we don't want all the way down
        client.Throttle.Land = 0
        client.Throttle.Wind = 0
        client.Throttle.Cloud = 0


        ' Setup a packet callback that is called for every packet (PacketType.Default)
        client.Network.RegisterCallback(PacketType.Default, New NetworkManager.PacketCallback(DefaultHandler))

        ' Register handlers for when we login, and when we are disconnected
        client.Network.OnLogin += New NetworkManager.LoginCallback(LoginHandler)
        client.Network.OnDisconnected += New NetworkManager.DisconnectedCallback(DisconnectHandler)

        ' Start the login process
        client.Network.BeginLogin(client.Network.DefaultLoginParams(args(0), args(1), args(2), "PacketDump", "1.0.0")) New NetworkManager.DisconnectedCallback(DisconnectHandler)

        ' Wait until LoginEvent is set in the LoginHandler callback, or we time out
        If LoginEvent.WaitOne(1000 * 20, False) Then
            If LoginSuccess Then
                ' Network.LoginMessage is set after a successful login
                Logger.Log("Message of the day: " + client.Network.LoginMessage, Helpers.LogLevel.Info)

                ' Determine how long to run for
                Dim start As Integer = Environment.TickCount
                Dim milliseconds As Integer = Int32.Parse(args(3)) * 1000
                Dim forever As Boolean = (milliseconds > 0) ? False : True 


                ' Packet handling is done with asynchronous callbacks. Run a sleeping loop in the main
                ' thread until we run out of time or the program is closed
                While (True)

                    System.Threading.Thread.Sleep(100)

                    If Not forever And Environment.TickCount - start > milliseconds Then
                        break()
                    End If
                End While

                ' Finished running, log out
                client.Network.Logout()
            Else
                Logger.Log("Login failed: " + client.Network.LoginMessage, Helpers.LogLevel.Error)
            End If
        Else
            Logger.Log("Login timed out", Helpers.LogLevel.Error)
        End If
    End Sub


    Public Shared Sub LoginHandler(ByVal login As LoginStatus, ByVal message As String)
        Logger.Log(String.Format("Login: {0} ({1})", login, message), Helpers.LogLevel.Info)

        Select Case login
            Case LoginStatus.Failed
                LoginEvent.Set()
                Exit Sub
            Case LoginStatus.Success
                LoginSuccess = True
                LoginEvent.Set()
                Exit Sub
        End Select
    End Sub

    Public Shared Sub DisconnectHandler(ByVal type As NetworkManager.DisconnectType, ByVal message As String)
        If type = NetworkManager.DisconnectType.NetworkTimeout Then
            Console.WriteLine("Network connection timed out, disconnected")
        ElseIf type = NetworkManager.DisconnectType.ServerInitiated Then
            Console.WriteLine("Server disconnected us: " + message)
        End If
    End Sub

    Public Shared Sub DefaultHandler(ByVal packet As Packet, ByVal simulator As Simulator)
        Logger.Log(packet.ToString(), Helpers.LogLevel.Info)
    End Sub

    Private Sub bt_login_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_login.Click
        first_name = txt_first_name.Text
        last_name = txt_last_name.Text
        password = txt_password.Text

    End Sub
End Class

--------------------------------------------------------------------------------------

agora gostava de saber como apluicalo

pk isso so da erros atras de erros nao percebo nada :S

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
José Lopes    1
José Lopes

então e que tipo de erros esta a dar?

Esse código esta feito para um form que tem que ter os elementos que esse tem..começa poor aí. desenha um form com os controlos que este tem.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
j.mendes24    0
j.mendes24

aqui vou por o codigo que utilizei num modulo, onde comentei o codigo onde achei necessario. alguns coments estao em brasileiro pk o codigo tirei da net, mas tentem adaptar o mais possivel:

aqui vai:

Imports libsecondlife

Module funcoes_variaveis

    'criação de variaveis
   
    Public var_startlocation As String = slclient.Network.StartLocation("simname", 0, 0, 0) 'create startlocation 


    'Slclient e a variavel que controla o utilizador
    Public slclient As New SecondLife()

    'esta função e para realizar o login
    Public Sub login()
        AddHandler slclient.Network.OnConnected, AddressOf Network_OnConnected 'adicionar um manipulador / chamada para lidar com eventos onconnected
        If slclient.Network.Login(form_login.txt_first_name.Text, form_login.txt_last_name.Text, form_login.txt_password.Text, "my_first_bot", var_startlocation, "Jorge") Then 'verifica se os dados estão correctos e conecta o utilizador
            MsgBox("Login bem sucedido") 'mostra uma mensagem a dizer que o loggin foi bem sucedido
            form_login.bt_login.Enabled = False
            form_login.bt_logout.Enabled = True
            form_login.txt_first_name.Enabled = False
            form_login.txt_last_name.Enabled = False
            form_login.txt_password.Enabled = False
        Else 'se nao for bem sucedido
            MsgBox("O login não foi bem sucedido! " + slclient.Network.LoginMessage, MsgBoxStyle.DefaultButton1, "Erro no login") 'mostra uma mensagem a dizer que o login não foi bem sucedido
        End If
    End Sub

    Sub Network_OnConnected(ByVal sender As Object)   'aqui é o identificador de chamada se só onconnected conexão é bem sucedida
        MsgBox("Eu estou conectado, vou comprimentar todo o pessoal") 'mostra uma mensagem a confirmar que o utilizador está conectado
        slclient.Self.Chat("Olá Mundo!!!", 0, ChatType.Normal) 'o utilizador diz ola word!
    End Sub

    'esta fnção serve para fazer o logout
    Public Sub logout()
        MsgBox("Agora vou sair do SecondLife... Adeus!!!") 'informa que o utilizador vai fazer logout
        slclient.Network.Logout() 'faz o logout
        form_login.bt_login.Enabled = True
        form_login.bt_logout.Enabled = False
        form_login.txt_first_name.Enabled = True
        form_login.txt_last_name.Enabled = True
        form_login.txt_password.Enabled = True
        form_login.txt_first_name.Text = ""
        form_login.txt_last_name.Text = ""
        form_login.txt_password.Text = ""
        form_login.txt_first_name.Focus()
    End Sub

End Module

----------------------------------------------------------------------

agora vou por ocodigo que pus no form:

Imports libsecondlife
Imports System
Imports libsecondlife.NetworkManager
Imports System.Collections.Generic
Imports System.Text

Public Class form_login

    Private Sub bt_login_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_login.Click

        login() 'executa a função login


    End Sub

    Private Sub bt_logout_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_logout.Click

        logout() 'executa a função logout

    End Sub

    Private Sub form_login_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        bt_logout.Enabled = False

    End Sub

    Private Sub bt_exit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_exit.Click
        Me.Close()
    End Sub
End Class

------------------------------------------------------------

atençao isto ainda so faz o login. nao sei e se ta vem. pk ele faz o login mas depois abro o jogo e tenho que fazer outra vez e nao devia nao e?

se alguem me poder explicar essa parte agradecia.

EDIT: Adicionado GeShi

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade