Usuário com melhor resposta
Ajuda com verificações if e else

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
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
-
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
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
-
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