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 脚本 。

重命名该文件
例如我命名“epoxgonewild”,。

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


第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 =窗户的高度,决定程序的高度。

如果一切正确完成,一旦运​​行,您的框架看起来应该像这样。


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

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

<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)
###注意:如果你现在运行了就会关闭只要我们添加了一些实际的代码就行了 ###

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

<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 =输入框的宽度。

一切完成了就向这样




第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





第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 =按钮的宽度。










   

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
WEndControlSend

发送键(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


GUICtrlSetData($button, "停止")

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




cmc5410 发表于 2012-8-13 11:25

本帖最后由 cmc5410 于 2012-8-13 11:26 编辑

第四章

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

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

首先让我们看看下面的HP MP
http://i48.tinypic.com/51yixl.png

有颜色, 红色和蓝色

现在看这个图片
http://i48.tinypic.com/2mqrbjk.png

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

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

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

我拿起这个点在这里。(见绿点)
http://i49.tinypic.com/2a63twx.png

我们需要找到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
      $y = $coord
EndFunc像素搜索

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

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

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

While 1
      sleep("1")
WEnd

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

While 1
      sleep("1")
WEnd

Func _getDefault()
      $coord = MouseGetPos()
      $x = $coord
      $y = $coord
      $color = Hex(PixelGetColor( $coord, $coord), 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
      $y = $coord
      $color = Hex(PixelGetColor( $coord, $coord), 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
      $y = $coord
      $color = Hex(PixelGetColor( $coord, $coord), 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
      $y = $coord
      $color = Hex(PixelGetColor( $coord, $coord), 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
      $y = $coord
      $color = Hex(PixelGetColor( $coord, $coord), 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
      $y = $coord
      $color = Hex(PixelGetColor( $coord, $coord), 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
      $y = $coord
      $color = Hex(PixelGetColor( $coord, $coord), 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

我看不懂哎。。
页: [1] 2 3 4 5
查看完整版本: 教你制作一个简单的脚本