相信很多程序猿都玩遊戲,比如LOL :有時候想打人機對戰(玩家對戰小心別人舉報你!),純屬爲了拿經驗和金幣,而本身不想玩,但如果玩家不操作,那麼很快就會被系統認爲是掛機,從而得不到經驗和金幣。所以,本文用java實現簡單的程序,幫你實現僞掛機,可以自動吃經驗、放技能、升級技能。。。你只需要開啓程序,然後進入遊戲畫面即可。。。。
其實很簡單,主要利用java的robot類來模擬玩家的鼠標點擊(移動)和按鍵輸入(升級或者智能施法),稍微學過java的人都可以很快搞定。。。這裏不是那種高級外掛,那個是需要或許系統的句柄,然後對玩家操作和遊戲系統的信息協議進行攔截、修改等動作,小心騰訊找你。。。
貼上代碼:
package com.lol.game;
import java.awt.AWTException;
import java.awt.Dimension;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
/**
*
* LOL僞掛機
* LOL進入遊戲後的代打小程序,模擬鼠標點擊 、技能升級和施放
* 需要設置全部爲智能施法,小地圖在右下角
*
* @author Administrator
*/
public class LOL_Mouse {
static int size=40;///lol右下角的小地圖標誌性size,不同屏幕大小不同
public static void main(String[] args) throws AWTException {
Robot robot = new Robot();
//獲取屏幕大小
Dimension screenSize =Toolkit.getDefaultToolkit().getScreenSize();
double height=screenSize.height/2;
double width=screenSize.width/2;
double theta=Math.atan(height/width);
///得到屏幕中心偏右上方的座標,便於智能施放技能
int jinengy=(int) (height-50*Math.sin(theta));
int jinengx=(int) (width+50*Math.cos(theta));
///點擊右下角的地圖上的座標,不同屏幕大小需要修改140爲其它適應的值
int x=(int)width*2-140-size;
int y=(int) height*2-140+size;
int i=1;
///無限循環來執行操作
while(true){
robot.mouseMove(x,y);
robot.mousePress(InputEvent.BUTTON3_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK);
robot.delay(5000);
/////以下是砸技能!!!是砸不是放
robot.keyPress(KeyEvent.VK_Q);
robot.keyRelease(KeyEvent.VK_Q);
robot.delay(500);
robot.keyPress(KeyEvent.VK_W);
robot.keyRelease(KeyEvent.VK_W);
robot.delay(500);
robot.keyPress(KeyEvent.VK_E);
robot.keyRelease(KeyEvent.VK_E);
robot.delay(500);
robot.keyPress(KeyEvent.VK_R);
robot.keyRelease(KeyEvent.VK_R);
robot.delay(500);
///每次選擇一個技能升級,減少電腦響應按鍵輸出的負擔
if(1==i){
////升級技能!!!
////ctrl+q
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_Q);
robot.keyRelease(KeyEvent.VK_Q);
robot.keyRelease(KeyEvent.VK_CONTROL);
i++;
}else if(2==i){
////ctrl+w
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_W);
robot.keyRelease(KeyEvent.VK_W);
robot.keyRelease(KeyEvent.VK_CONTROL);
i++;
}else if(3==i){
////ctrl+e
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_E);
robot.keyRelease(KeyEvent.VK_E);
robot.keyRelease(KeyEvent.VK_CONTROL);
i++;
}else if(4==i){
////ctrl+r
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_R);
robot.keyRelease(KeyEvent.VK_R);
robot.keyRelease(KeyEvent.VK_CONTROL);
i=1;
}
}
}
}