none
Ajuda com verificações if e else RRS feed

  • Pergunta

  • Estou a fazer um anti-cheat simples para meu jogo, ele verifica se um determinado processo está aberto, se ele está ele add a ListBox um texto, depois o resto eu resolvo, a questão é, são muitos cheats, todos os dias sai novos, e a verificação vai FICAR ENORME

    Código:

     Dim s() As Process
            s = Process.GetProcessesByName("notepad++")
            If s.Length = 0 Then
                'Nada
            Else
                ListBox1.Items.Add("Cheat xxx encontrado")
            End If
        End Sub

    Teria como montar um banco de dados para verificar e ir add novos processos em ver de ficar criando 1001 IF

    terça-feira, 18 de fevereiro de 2014 03:34

Respostas

  • Pra isso existem os métodos,para deixar mais curto e fácil de usar.

    Private Sub BloquearProcesso(ByVal processo As String)
    	Dim p As Process() = Process.GetProcessesByName(processo)
    	
    	If p.Length > 0
    		ListBox.Items.Add(String.Format("Cheat {0} encontrado", processo))
    	End If
    End Sub

    Agora é só ir adicionando por linhas:

    BloquearProcesso("notepad")
    BloquearProcesso("skype")
    BloquearProcesso("iexplore")


    • Editado Guilherme L. Santos terça-feira, 18 de fevereiro de 2014 12:10
    • Sugerido como Resposta Herbert Lausmann terça-feira, 18 de fevereiro de 2014 12:22
    • Marcado como Resposta Giovani Cr sexta-feira, 21 de fevereiro de 2014 16:02
    terça-feira, 18 de fevereiro de 2014 12:09
  • Tiago, digamos que ao invés de um banco de dados você use um arquivo de texto OK?

    Implementar um banco de dados teria que fazer muita coisa para apenas ler uma lista de opções - sem contar que com um arquivo de texto vai ser muito fácil adicionar/remover itens da lista de acordo com que for saindo os novos processos.

    Primeiro:

    Public Sub GetPro(ByRef Name As String)
        Dim Pros() As Process = Process.GetProcessesByName(Name)
        If Pros.Length > 0 Then ListBox1.Items.Add("Cheat " + Name + " encontrado")
    End Sub

    Esse é procedimento que você escreveu, só diminui as linhas e adicionei uma variável. Agora o texto.

    Vamos dizer que o arquivo de texto vai se chamar "cheats.ini" e vai ficar na mesma pasta que o programa - só para facilitar, troque o nome, a extensão, o caminho, tudo de acordo com o que você precisar - e que vamos carregá-lo e rodar a Sub "GetPro" para cada elemento da lista.

    Public Sub ListPros(ByRef CheatFile As String)
        If System.IO.File.Exists(CheatFile) Then
            Dim ProsNames() As String = System.IO.File.ReadAllLines(CheatFile)
            For Each ProsName As String In ProNames
                GetPro(ProsName)
            Next ProsName
        End If
    End Sub

    Certo? Ai você chama só a Sub "ListPros" com agumento, por exemplo "ListPros("c:\meuprograma\cheats.ini")" ou então use a função para localizar o caminho do programa, mais "\cheats.ini". Assim:

    ListPros(System.Environment.CurrentDirectory + "cheats.ini")

    Espero ter ajudado.

    • Sugerido como Resposta SammuelMiranda quarta-feira, 19 de fevereiro de 2014 12:21
    • Marcado como Resposta Giovani Cr sexta-feira, 21 de fevereiro de 2014 16:02
    quarta-feira, 19 de fevereiro de 2014 12:20

Todas as Respostas

  • Pra isso existem os métodos,para deixar mais curto e fácil de usar.

    Private Sub BloquearProcesso(ByVal processo As String)
    	Dim p As Process() = Process.GetProcessesByName(processo)
    	
    	If p.Length > 0
    		ListBox.Items.Add(String.Format("Cheat {0} encontrado", processo))
    	End If
    End Sub

    Agora é só ir adicionando por linhas:

    BloquearProcesso("notepad")
    BloquearProcesso("skype")
    BloquearProcesso("iexplore")


    • Editado Guilherme L. Santos terça-feira, 18 de fevereiro de 2014 12:10
    • Sugerido como Resposta Herbert Lausmann terça-feira, 18 de fevereiro de 2014 12:22
    • Marcado como Resposta Giovani Cr sexta-feira, 21 de fevereiro de 2014 16:02
    terça-feira, 18 de fevereiro de 2014 12:09
  • Tiago, digamos que ao invés de um banco de dados você use um arquivo de texto OK?

    Implementar um banco de dados teria que fazer muita coisa para apenas ler uma lista de opções - sem contar que com um arquivo de texto vai ser muito fácil adicionar/remover itens da lista de acordo com que for saindo os novos processos.

    Primeiro:

    Public Sub GetPro(ByRef Name As String)
        Dim Pros() As Process = Process.GetProcessesByName(Name)
        If Pros.Length > 0 Then ListBox1.Items.Add("Cheat " + Name + " encontrado")
    End Sub

    Esse é procedimento que você escreveu, só diminui as linhas e adicionei uma variável. Agora o texto.

    Vamos dizer que o arquivo de texto vai se chamar "cheats.ini" e vai ficar na mesma pasta que o programa - só para facilitar, troque o nome, a extensão, o caminho, tudo de acordo com o que você precisar - e que vamos carregá-lo e rodar a Sub "GetPro" para cada elemento da lista.

    Public Sub ListPros(ByRef CheatFile As String)
        If System.IO.File.Exists(CheatFile) Then
            Dim ProsNames() As String = System.IO.File.ReadAllLines(CheatFile)
            For Each ProsName As String In ProNames
                GetPro(ProsName)
            Next ProsName
        End If
    End Sub

    Certo? Ai você chama só a Sub "ListPros" com agumento, por exemplo "ListPros("c:\meuprograma\cheats.ini")" ou então use a função para localizar o caminho do programa, mais "\cheats.ini". Assim:

    ListPros(System.Environment.CurrentDirectory + "cheats.ini")

    Espero ter ajudado.

    • Sugerido como Resposta SammuelMiranda quarta-feira, 19 de fevereiro de 2014 12:21
    • Marcado como Resposta Giovani Cr sexta-feira, 21 de fevereiro de 2014 16:02
    quarta-feira, 19 de fevereiro de 2014 12:20