吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 18736|回复: 43
收起左侧

[Windows] 教你制作一个简单的脚本

[复制链接]
cmc5410 发表于 2012-8-13 10:07
本帖最后由 cmc5410 于 2012-8-13 13:21 编辑

第2章见8楼
第3章见10楼
第4章  游戏像素的搜索(自动补血补蓝)http://www.52pojie.cn/thread-160546-2-1.html

第1章

  GUI(图形用户界面)
  介绍
这仅仅是基本的AutoIt。 通过本教程结束时,你将能够写出自己的一点简单的脚本,可以自定义定时按键。

下载AutoIt  下载地址 下载后,运行它,安装它... 你知道该怎么做  你懂的 。
  第1节
  创建一个新文件夹
创建一个新的文件夹,并命名为“脚本”。

  创建AU3文件。
好吧,现在你AutoIt的安装,你应该能够创建一个新的.AU3(AutoIt脚本)文件。 只需任何文件夹右键点击,然后点击建按钮,然后单击AutoIt v3 脚本
1.png
重命名该文件
例如我命名“epoxgonewild”,。

  打开文件
打开AutoIt v3的脚本文件,右键单击,然后按下“编辑AU3脚本”。
2.png

第2节
     
  添加代码的开头
我们做任何事情之前,你应该总是正确的开头   写代码也是这样
#cs ----------------------------------------------------------------------------
        AutoIt Version: 3.3.0.0
        Author: Forsaken 
#ce ----------------------------------------------------------------------------
CS  表示注释的开始,并表示注释的开始
  
  导入的图形用户界面功能
如果你想使用GUI(图形用户界面),你必须添加这一行
#cs ----------------------------------------------------------------------------
        AutoIt Version: 3.3.0.0
        Author: Forsaken 
#ce ----------------------------------------------------------------------------
#include <GUIConstantsEx.au3>

GUISetState(@SW_SHOW)
GUISetState  声明是告诉程序一旦运行,就会显示GUI界面,。 务必始终(@SW_SHOW) 因为程序运行是读取从上到下的代码



  制作一个界面框架

  在AutoIt里  你必须做的是添加GUICreate,并定义窗口的标题和尺寸。 很容易,对不对?
#cs ----------------------------------------------------------------------------
        AutoIt Version: 3.3.0.0
        Author: Forsaken 
#ce ----------------------------------------------------------------------------
#include <GUIConstantsEx.au3>

GUICreate("DNF自动刷材料脚本", 335, 100)

GUISetState(@SW_SHOW)
("DNF自动刷材料脚本", 335, 100)
("x", y, z)

X =窗口的标题,它出现在窗口栏,关闭和最小化程序。
  Y =窗户的宽度,决定程序有多宽。
  Z =窗户的高度,决定程序的高度。

如果一切正确完成,一旦运&#8203;&#8203;行,您的框架看起来应该像这样。
3.png

###注意:如果你现在运行了  就会关闭  只要我们添加了一些实际的代码  就行了 ###

脚本的末尾添加下面的代码,我们就可以让他不关闭

<font size="2">While 1
        sleep(1)
WEnd</font>
第3节

  添加标签

标签,我们也可以叫它文本(text)。 为此,我们使用GUICtrlCreateLabel。
#cs ----------------------------------------------------------------------------
        AutoIt Version: 3.3.0.0
        Author: Forsaken 
#ce ----------------------------------------------------------------------------
#include <GUIConstantsEx.au3>

GUICreate("DNF自动刷材料脚本", 335, 100)

GUICtrlCreateLabel("text", 8, 10)

GUISetState(@SW_SHOW)
4.png
###注意:如果你现在运行了  就会关闭  只要我们添加了一些实际的代码  就行了 ###

脚本的末尾添加下面的代码,我们就可以让他不关闭
  
<font size="2">While 1

        sleep(1)

WEnd</font>
添加输入框

输入用户提交的数据(如文本,数字和符号),并将它们保存起来。 我们使用GUICtrlCreateLabel。
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

GUICreate("DNF自动刷材料脚本", 302, 143, 192, 124)

GUICtrlCreateLabel("text", 8, 10)

$key1 = GUICtrlCreateInput("", 35, 8, 120)

GUISetState(@SW_SHOW)

While 1
        
sleep(1)

WEnd
KEY1 这是一个变量也可以叫做字符串。  这个变量就相当于易语言的变量  可以自己设置变量名(例如,输入$ 52pojie   $1 )

  (“”,35,8,120)
  (“X”,Y,Z,S)

  X =留空,如果你想显示默认的文本  你就可以在这里输入   想让用户输入  就留空
  Y =水平位置。
  Z =垂直位置。
  S =输入框的宽度。

一切完成了就向这样

1.png


第4节
   
  
这是一个很长的教程(我们只走了一半),如何添加更多的标签和输入框,可以按照上面完全同样的方法
需要做的是改变变量/字符串名称。
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

GUICreate("DNF自动刷材料脚本", 302, 143, 192, 124)

GUICtrlCreateLabel("Text", 8, 10)
$key1 = GUICtrlCreateInput("", 35, 8, 120)
GUICtrlCreateLabel("Text", 8, 44)
$time1 = GUICtrlCreateInput("", 35, 40, 120)

GUISetState(@SW_SHOW)

While 1
        
sleep(1)

WEnd
这里我就多弄了一个标签   $time1.

重命名标签名
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

GUICreate("DNF自动刷材料脚本", 302, 143, 192, 124)

GUICtrlCreateLabel("Key", 8, 10)
$key1 = GUICtrlCreateInput("", 35, 8, 120)
GUICtrlCreateLabel("Time", 8, 44)
$time1 = GUICtrlCreateInput("", 35, 40, 120)

GUISetState(@SW_SHOW)

While 1
        
sleep(1)

WEnd
12.png




第5节

  添加一个按钮

按钮是来开启脚本的。 我们来用GUICtrlCreateButton函数来创建按钮。
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

GUICreate("DNF自动刷材料脚本", 302, 143, 192, 124)

GUICtrlCreateLabel("Key", 8, 10)
$key1 = GUICtrlCreateInput("", 35, 8, 120)
GUICtrlCreateLabel("Time", 8, 44)
$time1 = GUICtrlCreateInput("", 35, 40, 120)
<font color="Green">$startbutton</font> = GUICtrlCreateButton("开始", 190, 8, 60)
GUISetState(@SW_SHOW)

While 1
        
sleep(1)

WEnd
$ startbutton是我们分配到的按钮,所以我们可以refrence一次我们需要它的变量。

  (“开始”,190,8,60)
  (“X”,Y,Z,S)

  X =按钮的名称。
  Y =水平位置。
  Z =垂直位置。
  S =按钮的宽度。

1212.png
  







   

免费评分

参与人数 2热心值 +2 收起 理由
疯灬鸦 + 1 非常详尽!支持一下!!~
\CPU\ + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| cmc5410 发表于 2012-8-13 10:46
本帖最后由 cmc5410 于 2012-8-13 10:49 编辑

第2章

  
  介绍

我们增加了图形用户界面,让我们开始添加实际的编码。

  第1节

  添加一个while循环

一个while循环,使代码可以重复执行一个固定的条件。
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

GUICreate("DNF自动刷材料脚本", 302, 143, 192, 124)

GUICtrlCreateLabel("Key", 8, 10)
$key1 = GUICtrlCreateInput("", 35, 8, 120)
GUICtrlCreateLabel("Time", 8, 44)
$time1 = GUICtrlCreateInput("", 35, 40, 120)
$startbutton = GUICtrlCreateButton("开始", 190, 8, 60)
GUISetState(@SW_SHOW)

While 1
        $msg = GUIGetMsg()

WEnd     
While 1表示一个while循环
WEND表示while循环语句的结束。
如果你现在运行你的代码
GUI界面不会关闭,可以用托盘的退出按钮关闭。


这个GUIGetMsg$msg = GUIGetMsg()   

添加一个Case语句
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

GUICreate("DNF自动刷材料脚本", 302, 143, 192, 124)

GUICtrlCreateLabel("Key", 8, 10)
$key1 = GUICtrlCreateInput("", 35, 8, 120)
GUICtrlCreateLabel("Time", 8, 44)
$time1 = GUICtrlCreateInput("", 35, 40, 120)
$startbutton = GUICtrlCreateButton("开始", 190, 8, 60)
GUISetState(@SW_SHOW)

While 1
        $msg = GUIGetMsg()

                Case $msg = $startbutton

                Case $msg = $GUI_EVENT_CLOSE

        EndSelect                   
        
WEnd
我们增加了两个选项Select语句
  选项 1:$ MSG = $ startbutton,这意味着如果开始按钮按下它会引发什么样的事件 (现在还没有添加代码)

  选项 2:$ MSG =的$ GUI_EVENT_CLOSE,这意味着,如果退出按钮(X按钮)按下它会引发什么样的事件(现在还没有添加代码)


startbutton事件

现在让我们来告诉程序一旦按下开始按钮做什么。
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

GUICreate("DNF自动刷材料脚本", 302, 143, 192, 124)

GUICtrlCreateLabel("Key", 8, 10)
$key1 = GUICtrlCreateInput("", 35, 8, 120)
GUICtrlCreateLabel("Time", 8, 44)
$time1 = GUICtrlCreateInput("", 35, 40, 120)
$startbutton = GUICtrlCreateButton("开始", 190, 8, 60)
GUISetState(@SW_SHOW)

While 1
                $msg = GUIGetMsg()
        
                Select
                
        Case $msg = $startbutton
                                $send1 = GUICtrlRead($key1)
                                $sleep1 = GUICtrlRead($time1)
                        
                Case $msg = $GUI_EVENT_CLOSE
                        
        EndSelect
        
WEnd
首先,它将声明所有的变量。 这意味着它会读取用户输入到我们的两个输入字段$ time1$KEY1 ,并使其在以下代码可用。

$KEY1 被赋予新的变量$ send1。

$ time1被分配了新的变量$ sleep1。


下一步我们将添加另一个while循环
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

GUICreate("DNF自动刷材料脚本", 302, 143, 192, 124)

GUICtrlCreateLabel("Key", 8, 10)
$key1 = GUICtrlCreateInput("", 35, 8, 120)
GUICtrlCreateLabel("Time", 8, 44)
$time1 = GUICtrlCreateInput("", 35, 40, 120)
$startbutton = GUICtrlCreateButton("开始", 190, 8, 60)
GUISetState(@SW_SHOW)

While 1
                  $msg = GUIGetMsg()
        
                Select
                
        Case $msg = $startbutton
                                  $send1 = GUICtrlRead($key1)
                                  $sleep1 = GUICtrlRead($time1)        
                              While 1        
                                  Send($send1)
                                   Sleep($sleep1)
                              WEnd
                        
                Case $msg = $GUI_EVENT_CLOSE
                        
        EndSelect
        
WEnd
退出按钮事件

$GUI_EVENT_CLOSE功能将退出循环,退出/关闭程序
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

GUICreate("DNF自动刷材料脚本", 302, 143, 192, 124)

GUICtrlCreateLabel("Key", 8, 10)
$key1 = GUICtrlCreateInput("", 35, 8, 120)
GUICtrlCreateLabel("Time", 8, 44)
$time1 = GUICtrlCreateInput("", 35, 40, 120)
$startbutton = GUICtrlCreateButton("开始", 190, 8, 60)
GUISetState(@SW_SHOW)

While 1
                 $msg = GUIGetMsg()
        
                Select
                
        Case $msg = $startbutton
                         $send1 = GUICtrlRead($key1)
                        $sleep1 = GUICtrlRead($time1)
                                        
                                         While 1        
                                                        Send($send1)
                                                        Sleep($sleep1)
                                          WEnd
                        
                Case $msg = $GUI_EVENT_CLOSE
                                    GUIDelete()
                                    ExitLoop
                        
        EndSelect
        
WEnd
GUIDelete()就是关闭界面    反之就必须用托盘的退出了  







 楼主| cmc5410 发表于 2012-8-13 11:06
第3章

  附加功能

  介绍

可以用于游戏。

  TimerInit和TimerDiff

使用TimerInit 暂停整个代码。 一旦在休眠模式下,就会暂停   另一种方法是使用TimerInit()TimerDiff()函数。 我们可以做一个if语句中使用这两个函数。 好吧,这里是代码...
$timer = TimerInit()

While 1
        $timed = TimerDiff($timer)
        If $timed > 3000 Then ; we use greater than (>) because sometimes it might get skipped
                MsgBox(1,"TimerDiff","TimerDiff : "&$timed)
                $timer = TimerInit()
        EndIf
WEnd
ControlSend

发送键(S),发送到任何窗口之上, 使用ControlSend我们可以到指定的窗口发送键(S)。 可以后台发送  
可以用于游戏  窗口可以最小化   最大化
ControlSend ( "title", "text", controlID, "string" [, flag] )
例如
ControlSend("地下城与勇士", "", "", "Hello !")
Sleep("100")
ControlSend("地下城与勇士", "", "", "{ENTER}"
Sleep("100")
ControlSend("地下城与勇士", "", "", "这里就是回车键按下出现的文字.")
更改按钮上的文字

使用GUICtrlSetData我们可以在界面上改变任何东西  我们要做的是增加一个开关,用到if,我们可以看到开始/停止按钮
#include <GUIConstantsEx.au3>

GUICreate("GUICtrlSetData", 200,100)
GUISetState(@SW_SHOW)

$button = GUICtrlCreateButton("开始",60, 30, 80, 20)
$count = 0

While 1
        Switch GUIGetMsg()
        Case $button
                If $count = 1 Then
                        GUICtrlSetData($button, "开始")
                        $count = 0
                ElseIf $count = 0 Then
                        GUICtrlSetData($button, "停止")
                        $count = 1
                EndIf
        Case $GUI_EVENT_CLOSE
                Exit
        EndSwitch
WEnd
11111.gif

GUICtrlSetData($button, "停止")

$button变量$button被分配到一个按钮,包含“开始”数据。 该函数的第二部分是我们正在改变的数据,我们将改变它的“停止”。




 楼主| cmc5410 发表于 2012-8-13 11:25
本帖最后由 cmc5410 于 2012-8-13 11:26 编辑

第四章

  像素搜索(自动补血  自动补蓝)

  介绍
在本教程的一部分,您将学习如何创建一个脚本,自动使用HP / MP的药水。
  HP / MP

首先让我们看看下面的HP MP


有颜色, 红色蓝色

现在看这个图片


从这张图片 我们看到血和魔都少了一部分  

  GetMousePos
获取当前鼠标光标位置。

我们需要做的第一件事是选择一个点

我拿起这个点在这里。  (见绿点)


我们需要找到X和Y坐标
While 1
        sleep("1")
WEnd

Func _getDefault()
        
EndFunc
然后,我们添加两个变量。 一个X坐标和Y坐标
$x = 0
$y = 0

While 1
        sleep("1")
WEnd

Func _getDefault()
        
EndFunc
现在使用MouseGetPos()函数的实际坐标,并设置新的$ x和$ y变量包含的位置。
$x = 0
$y = 0

While 1
        sleep("1")
WEnd

Func _getDefault()
        $coord = MouseGetPos()
        $x = $coord[0]
        $y = $coord[1]
EndFunc
像素搜索

下一步,我们要添加一些颜色的变化,不断地检查该位置。

我们这样做之前,我们必须在该位置的像素的颜色。 一些红色的阴影。

我打算把它添加到_getDefault()函数,因为它很容易,但也有不同的方式去做。
$x = 0
$y = 0
$color = 0

While 1
        sleep("1")
WEnd

Func _getDefault()
        $coord = MouseGetPos()
        $x = $coord[0]
        $y = $coord[1]
EndFunc
现在让我们使用的Hex()函数得到的十六进制颜色代码值。
$x = 0
$y = 0
$color = 0

While 1
        sleep("1")
WEnd

Func _getDefault()
        $coord = MouseGetPos()
        $x = $coord[0]
        $y = $coord[1]
        $color = Hex(PixelGetColor( $coord[0], $coord[1]), 6)
EndFunc
下一步,我们需要一个热键,来运行_getDefault()函数, 因为程序不会自动运行   我们将使用的HotKeySet()函数。
HotKeySet("{NUMPADSUB}", "_getPosition")

$x = 0
$y = 0
$color = 0
$status = "off"

While 1
        sleep("1")
WEnd

Func _getDefault()
        $coord = MouseGetPos()
        $x = $coord[0]
        $y = $coord[1]
        $color = Hex(PixelGetColor( $coord[0], $coord[1]), 6)
        $status = "on"
EndFunc
现在,当移动鼠标在屏幕上,按小键盘的减号 -  它会设置$X $Y $color

接下来,我们开始if语句。 首先我们要检查状态。 如果状态设置为OFF时,它会跳过此代码。 如果它被设置它来将执行里面的代码。


下一步,我们要添加一个if语句来检查看到$status已经改变,如果这一立场。 我们有一个变量名为$status和设置其默认值之外的“OFF”,使脚本无法启动循环。
HotKeySet("{NUMPADSUB}", "_getPosition")

$x = 0
$y = 0
$color = 0
$status = "off"

While 1
        sleep("1")
        If $status = "on" Then
                ;code here
        EndIf

WEnd

Func _getDefault()
        $coord = MouseGetPos()
        $x = $coord[0]
        $y = $coord[1]
        $color = Hex(PixelGetColor( $coord[0], $coord[1]), 6)
        $status = "on"
EndFunc
之前,我们做里面的if语句的代码,我们必须做出一个功能llike _setDefault()。 唯一的区别是,它不会得到一个新的鼠标坐标和十六进制的颜色,它会保存到一个新的变量。 我们将利用我们现有的$ x和$ y位置。 不要忘了$ newColor。
HotKeySet("{NUMPADSUB}", "_getDefault")

$x = 0
$y = 0
$color = 0
$newColor = 0
$status = "off"

While 1
        sleep("1")
        If $status = "on" Then
        EndIf

WEnd

Func _getDefault()
        $coord = MouseGetPos()
        $x = $coord[0]
        $y = $coord[1]
        $color = Hex(PixelGetColor( $coord[0], $coord[1]), 6)
        $status = "on"
EndFunc

Func _getCurrentColor($xDef, $yDef)
        $newColor = Hex(PixelGetColor( $xDef, $yDef), 6)
        Return ($newColor)
EndFunc
现在,我们将继续if语句。 现在我们添加一个if语句来检查,如果颜色已经改变的话。
HotKeySet("{NUMPADSUB}", "_getDefault")

$x = 0
$y = 0
$color = 0
$newColor = 0
$status = "off"

While 1
        If $status = "on" Then
                If _getCurrentColor($x, $y) <> $color Then
                        ;code here
                EndIf
        EndIf
WEnd

Func _getDefault()
        $coord = MouseGetPos()
        $x = $coord[0]
        $y = $coord[1]
        $color = Hex(PixelGetColor( $coord[0], $coord[1]), 6)
        $status = "on"
EndFunc

Func _getCurrentColor($xDef, $yDef)
        $newColor = Hex(PixelGetColor( $xDef, $yDef), 6)
        Return ($newColor)
EndFunc
现在如果新的颜色不等于旧的颜色,它会执行代码。 现在用到Send()函数   如果药水放在快捷栏1  快捷键1的话    我们将用数字“1”。
HotKeySet("{NUMPADSUB}", "_getDefault")

$x = 0
$y = 0
$color = 0
$newColor = 0
$status = "off"

While 1
        If $status = "on" Then
                If _getCurrentColor($x, $y) <> $color Then
                        Send("1")
                EndIf
        EndIf
WEnd

Func _getDefault()
        $coord = MouseGetPos()
        $x = $coord[0]
        $y = $coord[1]
        $color = Hex(PixelGetColor( $coord[0], $coord[1]), 6)
        $status = "on"
EndFunc

Func _getCurrentColor($xDef, $yDef)
        $newColor = Hex(PixelGetColor( $xDef, $yDef), 6)
        Return ($newColor)
EndFunc
直到血补满    他就会停止  



jun1104 发表于 2014-3-22 17:39
HotKeySet("{NUMPADSUB}", "_getDefault")

$x = 0
$y = 0
$color = 0
$newColor = 0
$status = "off"

While 1
        If $status = "on" Then
                If _getCurrentColor($x, $y) <> $color Then
                        ;code here
                EndIf
        EndIf
WEnd

Func _getDefault()
        $coord = MouseGetPos()
        $x = $coord[0]
        $y = $coord[1]
        $color = Hex(PixelGetColor( $coord[0], $coord[1]), 6)
        $status = "on"
EndFunc

Func _getCurrentColor($xDef, $yDef)
        $newColor = Hex(PixelGetColor( $xDef, $yDef), 6)
        Return ($newColor)
EndFunc
\CPU\ 发表于 2012-8-13 10:14
内容呢?……
dingzhou7758 发表于 2012-8-13 10:29
我没看懂。你们呢?
leisurely 发表于 2012-8-13 10:32
支持楼主开讲AUTOIT系列教程~~~~
944695425 发表于 2012-8-13 10:40
学习了!!!!
欲望沉睡时 发表于 2012-8-13 10:45
期待更多教程,想学但不知从何入手
lslinlu 发表于 2012-8-13 10:47
我看不懂哎。。

点评

玩过泡泡战士!  发表于 2012-8-13 11:16
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-28 07:26

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表