【私服魔域】新开魔域sf下载地址在哪?畅享多种玩法,书写传奇快感
此处我们用4399的用J用按a语别踩白块举例子,先上效果:
请等待5秒产看效果,现别因为我设置了5秒的踩白私服魔域延迟
为什么用Java?
看到标题可能就有小伙伴要问了,我按键精灵不香吗,块效啪啪啪点几下就可以了;我lua语言专门写游戏外挂的键精不香吗,我干嘛得用Java?灵或 回答:大家伙应该都基本玩过腾讯的游戏吧,当我每次打开腾讯游戏的用J用按a语时候,屏幕右下角是现别不是都会弹出一个TENPROTECT(腾讯保护),这玩意拿来干嘛的踩白?但凡是检测到你的进程里有VBS语言的进程或者lua语言的进程,它不让你打开游戏的块效私服魔域,或者你打开了,键精被检测到VBS进程和lua在你打游戏的灵或时候它在读写游戏磁盘,或者进出栈。用J用按a语那你可能就要被封号了。现别按键精灵就是踩白典型的VBS语言进程,我们以前打LOL用的“大脚”就是典型的lua脚本。这两种东西可以说已经被游戏厂家禁用的差不多了,尤其是网易,腾讯,见状不对就给你封了。而我们之所以用Java,因为Java是运行在jvm(虚拟机)里的,腾讯网易的检测只能看到你的进程里有个jvm,它看不到jvm里面究竟是什么,而且我程序员写代码累了打下游戏怎么了,所以一般他是不会封的。
tenprotect
怎么实现
主角Robot类
此处我们使用Java的Robot类来进行外挂编写,当然可以用其他的比如操作系统的System类和Runtime类进行辅助。大型游戏脚本还需要对算法的熟练。
robot类的方法大家可以查阅api文档以获取更多信息,如果没有api文档的可以在本站资源仓库中获取。我这里就介绍几个常用方法。
delay方法
delay方法用作我们动作的延迟,比如你模拟按两个键,如果没有延迟,程序会飞快的帮你按下且你不管按多少键,每个键中间的延迟都很低且相等,这就是不是有点可疑,就像是机器人的操作,所以为了避免这种可以我们可以使用delay方法加上延迟,但键与键之间的延迟也不想等,所以我们可以用random(随机函数)生成一个随机延迟。
Roboto roboto = new Roboto();roboto.delay(5000);
//传入5000毫秒,表示5秒钟延迟
模拟按下键盘和弹起键盘
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
public class Test1 { public static void main(String args) throws AWTException {
//定义一个机器人对象
Robot robot1 = new Robot();
//设置延时为5000ms(5秒)
robot1.delay(5000);
while (true) { //一直循环
//按下键盘的3建
robot1.keyPress(KeyEvent.VK_3);
//等0.3秒
robot1.delay(300);
//松开键盘的3
robot1.keyRelease(KeyEvent.VK_3);
//等待3秒继续循环 robot1.delay(300); }
import java.awt.AWTException;
import java.awt.Color;
import java.awt.Robot;
public class Daa {
public static void main(String args) throws AWTException {
Robot robot = new Robot();
robot.delay(5000);
robot.mouseMove(460, 490); //传入屏幕上坐标点,此处表示把鼠标移动到X = 460,Y = 490 处。
桌面最左上角的那个顶点的坐标为(0,0),最右下角的顶点的坐标为你的电脑分辨率。注意:当你的电脑缩放比例为百分之125时,你得到的坐标为不准确坐标;可通过鼠标右键-->显示设置查看你的电脑缩放比例。
模拟鼠标按下
鼠标左键:InputEvent.BUTTON1_DOWN_MASK鼠标中键:InputEvent.BUTTON2_DOWN_MASK鼠标右键:InputEvent.BUTTON3_DOWN_MASK
鼠标左键:InputEvent.BUTTON1_DOWN_MASK鼠标中键:InputEvent.BUTTON2_DOWN_MASK鼠标右键:InputEvent.BUTTON3_DOWN_MASK
获取屏幕指定坐标处像素颜色
作用:比如打游戏的时候获取血条的颜色,当颜色由绿变红就自动吃药
获取指定区域图像(截图)
示例:
常用控制类方法
在处理完当前事件队列只的所有事件之前,一直等待robot.waitForIdle();
设置此robot在生成一个事件后是否自动调用waitForIdle(),设置为true,表示添加的事件逐个按顺序执行robot.setAutoWaitForIdle(boolean isOn);
设置此robot每在生成一个事件后自动睡眠的毫秒数robot.setAutoDelay(int ms);
实战
为了验证可行性,我们随便用一个游戏举例子这里使用4399的别踩白块举例子。附上游戏链接,大家可用来练习。http://www.4399.com/flash/135255_3.htm
游戏操作很简单大家可以看上图,对应的区域有黑块,我们就按对应的按键。
思路:游戏就两种颜色,我们可以依次抓取每一块中心点的颜色,因为每一块的横坐标都不一样,所以当横坐标等于该中心且颜色为黑色时,按下对应的键。
注意:Java中颜色用RGB表示,此时我们仅仅得到R的数值进行对比就行。
import java.awt.AWTException;
import java.awt.Color;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.io.IOException;
public class Teste2 {
public static void main(String args) throws AWTException, IOException {
Robot robot1 = new Robot();
//延迟5秒开始运行脚本
robot1.delay(5000);
//死循环
while (true) {
//460是第一个格中间的横坐标,每加100到第二个,第三个,第四个格。
for (int i = 460; i < 800; i += 100) {
Color color = robot1.getPixelColor(i, 485);//485是纵坐标保持不变
System.out.println(color);//打印颜色,此步骤可以省略
//当颜色的R值为51时,进行判断
if (color.getRed() == 51) {
//横坐标为460,按下D键
if (i == 460) {
robot1.keyPress(KeyEvent.VK_D);
robot1.keyRelease(KeyEvent.VK_D);
//横坐标为560,按下F
} else if (i == 560) {
robot1.keyPress(KeyEvent.VK_F);
robot1.keyRelease(KeyEvent.VK_F);
//横坐标为660,按下J
} else if (i == 660) {
robot1.keyPress(KeyEvent.VK_J);
robot1.keyRelease(KeyEvent.VK_J);
//横坐标为760,按下K
} else if (i == 760) {
robot1.keyPress(KeyEvent.VK_K);
robot1.keyRelease(KeyEvent.VK_K);
robot1.delay(1);//延迟1ms,开始下一轮循环(可省略)
注意:1.复制代码请将类名改为Teste22.color.getRed = 51 的原因如下
总结
大家也可以看到效果哈,这只是演示,能做的东西很多,大家可以加上自己的理解去开发自己的脚本或者挂机辅助程序。