2012-08-31 3 views
4

안녕하세요, java.atw.Robot을 사용하여 Java에서 봇을 만들고 있습니다. 봇은 브라우저에서 잘 작동하지만 (마이크로 소프트 단어를 사용하여 테스트 한 적이 있습니다!) 게임에서 실행할 때 mouseMove 만 작동하는 유일한 함수입니다. 나는 나를 위해 단순히 키보드 버튼을 누르는 봇을 만들고 싶다. 마우스 오른쪽 클릭을 이동 z를 눌러 눌러 1 :온라인 게임을위한 Java 봇

은 내가

Robot r = new Robot(); 

가 그럼 난 몇 가지 간단한 물건을 할 로봇 클래스를 인스턴스화합니다.

 r.keyPress(KeyEvent.VK_Z); 
     r.keyRelease(KeyEvent.VK_Z); 

     r.keyPress(KeyEvent.VK_1); 
     System.out.println("Press 1 button"); 
     r.keyRelease(KeyEvent.VK_1); 
     System.out.println("Release 1 button"); 
     r.delay(1000); 

     System.out.println("Move mouse"); 
     r.mouseMove(110, 690); 

     System.out.println("Press"); 
     r.mousePress(InputEvent.BUTTON3_MASK); 
     System.out.println("Release"); 
     r.mouseRelease(InputEvent.BUTTON3_MASK); 

왜 이런 일이 발생합니까? 이 로봇 클래스가 백그라운드에서 실행되는 경우 게임 내에서 이러한 종류의 동작을 수행 할 수 있습니까?

는 당신에게 감사

업데이트 : 나는 예를 들어 2012 PES 내 로봇을 실행하면 잘 작동하지만 난 음모와 같은 온라인 게임에서 실행하는 경우, 그것은 작동하지 않는 이유는 무엇입니까? 게임의 보호 시스템은 아무것도 감지하지 못합니다.

+3

게임에는 종종 봇에 대한 '방어'기능이 있습니다. –

+4

'keyPress'와'keyRelease' 이벤트 사이에 몇 밀리 초의 지연을 추가하십시오. 이것이 일반적인 아케이드 스타일의 게임이라면, 게임은 각 틱을 폴링하여 키가 현재 눌려져 있는지 아닌지 확인하고, "눌린 키"와 "키를 놓은 키"와 같은 순간 이벤트를 포착하지 않을 것입니다. – Quuxplusone

+0

그것과 그 작동하지 시도 ... –

답변

2

우선, 대부분의 게임에는 봇 보호 기능이 있으므로 봇에 지연을 추가하고 '쿨 다운'을 추가하십시오. 그진술 전에, 봇은 두 개의 즉각적인 행동을했습니다.

나는 키 스트로크가 너무 빠르기 때문에 거의 작동하지 않는다고 확신한다 : 즉각적으로 키를 눌렀다 놓는다. Robot 클래스를 인스턴스화 한 직후에 bot.delay(500) (또는 그 이상, 게임에 따라 다름)을 추가하십시오. 모든 키를 누르기 전에. 그러면 로봇이 수행 한 모든 작업 사이에 500ms 지연이 추가됩니다.

public static void doStuff() { 

    Robot r = new Robot(); 

     r.delay(500); //Or more - depends on the game 

     r.keyPress(KeyEvent.VK_Z); 
     r.keyRelease(KeyEvent.VK_Z); 

     r.keyPress(KeyEvent.VK_1); 
     System.out.println("Press 1 button"); 
     r.keyRelease(KeyEvent.VK_1); 
     System.out.println("Release 1 button"); 
     r.delay(1000); 

     System.out.println("Move mouse"); 
     r.mouseMove(110, 690); 

     System.out.println("Press"); 
     r.mousePress(InputEvent.BUTTON3_MASK); 
     System.out.println("Release"); 
     r.mouseRelease(InputEvent.BUTTON3_MASK); 
} 

Z와 1 키가 작동하지 않는 유일한 이유는 모든 것이 완료된 속도라고 생각합니다. 이 게임에는 반 봇 시스템이있을 것입니다.

0

게임의 유형에 따라 크게 달라집니다. 코드가 단순히 키보드 동작과 같은 시스템 입력을 에뮬레이트하는 경우. 그것은 보통 사람처럼 보일 것입니다.

그러나 어떻게 생겼는지. 당신의보기에서. 그 번개 속도로 실행하므로 전혀 입력을 감지하지 못합니다. 그리고/또는 당신이 봇에 가려고하는 소위 말하는 게임에서 안티 봇을 측정합니다. 입력을 차단하고 있습니까? 믹스에 지연을 넣으십시오. 도움이되는지 확인하십시오. 더 많은 도움을 얻기 위해 아플 수 있습니다. 나는 이것에 대해 전문적이지 않다. 하지만 내 최고의 추측.

편집 :

나는 지연이 키까지 ..이 키를 처리하는 데 시간이 그 방법을 발사하는 이벤트가 전에 지연을 넣어 의미한다.

+0

nop. 작동하지 않음 키 업 이벤트 트리거간에 약간의 지연이 추가되었습니다. –