• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

j.mendes24

[Resolvido] bot para o secondlife

9 mensagens neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

...e fazendo um bocado o papel do diabo...como resolveste? a malta até pode estar interessada!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

...e fazendo um bocado o papel do diabo...como resolveste? a malta até pode estar interessada!

Sim por acaso ate estou :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

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