Lua 语言 详解
从零开始学习Lua编程语言

从零开始学习Lua编程语言Lua是一种轻量级的编程语言,被广泛应用于游戏开发、嵌入式系统以及大规模的分布式应用程序中。
它的设计目标是提供简单、快速和可扩展的脚本语言。
对于初学者来说,学习Lua编程语言可能是一项具有挑战性的任务。
本文将从零开始介绍Lua编程语言,帮助读者快速入门。
第一章: Lua简介在本章中,我们将简要介绍Lua的历史、应用领域和特点。
Lua由巴西人Roberto Ierusalimschy、Waldemar Celes和Luiz Henrique de Figueiredo于1993年开发而成。
它的设计目标是提供一种简单、快速和可扩展的脚本语言,可以用于开发各种应用程序,并可以与其他编程语言轻松集成。
第二章: 环境搭建在本章中,我们将学习如何在不同操作系统上配置Lua编程环境。
我们将介绍如何安装和配置Lua解释器,以及如何设置编辑器和开发环境来编写和运行Lua程序。
第三章: 基本语法在本章中,我们将学习Lua的基本语法。
我们将介绍Lua的基本数据类型,如字符串、数字、布尔值、表等。
我们还将讨论Lua中的变量声明、运算符、控制流语句以及函数的定义和调用。
第四章: 高级特性在本章中,我们将深入探讨Lua的高级特性。
我们将介绍Lua 中的模块化编程,如何使用模块和库来扩展和重用代码。
我们还将讨论Lua中的面向对象编程,包括如何定义和使用类、对象和继承。
第五章: 文件操作在本章中,我们将学习如何在Lua中进行文件操作。
我们将介绍如何打开、读取和写入文件。
我们还将讨论如何在Lua中处理文件和目录的操作,如创建目录、删除文件等。
第六章: 错误处理和调试在本章中,我们将讨论如何在Lua中进行错误处理和调试。
我们将介绍Lua的错误处理机制,如何使用assert函数来检查错误,并可以使用debug库来进行调试和追踪程序的执行。
第七章: Lua与其他语言的集成在本章中,我们将介绍Lua与其他编程语言的集成。
lua语法表

lua语法表Lua语法表Lua是一种轻量级的脚本语言,通常用于嵌入式系统和游戏开发。
在Lua语法表中,我们将介绍Lua的基本语法和常用特性,帮助读者快速入门和理解Lua的使用。
1. 注释在Lua中,注释使用"--"符号。
可以在代码中添加注释来解释代码的功能和逻辑,提高代码的可读性和可维护性。
2. 变量和数据类型Lua是一种动态类型语言,变量的类型根据赋值的数据自动确定。
Lua支持的数据类型包括:nil(空)、boolean(布尔)、number (数值)、string(字符串)、table(表)等。
3. 控制结构Lua提供了if-else、for循环、while循环等控制结构,用于控制程序的流程和逻辑。
通过这些结构,可以实现条件判断和循环执行。
4. 函数Lua支持函数的定义和调用。
函数是一段封装了特定功能的代码,可以重复使用。
通过函数,可以将代码模块化,提高代码的复用性和可维护性。
5. 表(table)表是Lua中的一种数据结构,可以用来存储和操作多个值。
表可以存储不同类型的值,并且可以通过键值对的方式进行访问。
表是Lua中最基本也是最强大的数据结构之一。
6. 模块化和包管理Lua提供了模块化的支持,可以将代码按照功能和逻辑进行组织和管理。
通过模块化,可以方便地重用代码,并且提高代码的可维护性和可扩展性。
同时,Lua也支持包管理工具,可以方便地引入和管理第三方库。
7. 字符串操作Lua提供了丰富的字符串操作函数和方法,可以对字符串进行拼接、分割、替换等操作。
字符串是一种非常常用的数据类型,在Lua中有着重要的地位。
8. 文件操作Lua提供了文件操作的函数和方法,可以方便地对文件进行读写操作。
通过文件操作,可以实现数据的持久化和读取,以及与外部系统的数据交互。
9. 错误处理Lua提供了错误处理的机制,通过错误处理,可以捕获和处理程序中出现的错误。
合理的错误处理可以提高程序的健壮性和稳定性。
lua 汇编语言

lua 汇编语言本文将介绍一门有趣且实用的编程语言——Lua 汇编语言。
我们将探讨Lua 汇编语言的基本概念、应用领域以及如何更有效地学习这门语言。
1.Lua 简介Lua 是一种轻量级的、面向对象的脚本语言,广泛应用于游戏开发、嵌入式系统以及跨平台应用。
它具有易学、简洁、高效等特点,得到了广泛的关注和应用。
2.Lua 汇编语言概述Lua 汇编语言是指使用Lua 编写的一类汇编程序。
与传统的汇编语言不同,Lua 汇编语言具有更高的可读性和可维护性。
它允许程序员在保持高性能的同时,编写更加易于理解的代码。
Lua 汇编语言的应用领域非常广泛,包括计算机游戏、嵌入式系统、实时操作系统等。
3.Lua 汇编语言的应用Lua 汇编语言在以下几个方面具有显著优势:(1)性能优化:Lua 汇编语言可以针对特定硬件和操作系统进行性能优化,提高程序运行效率。
(2)跨平台:Lua 汇编语言可编译成多种目标平台的二进制代码,便于实现跨平台应用。
(3)易学易用:Lua 汇编语言保留了汇编语言的基本特性,同时融入了Lua 语言的简洁和易用性。
(4)丰富的库支持:Lua 汇编语言可以调用丰富的Lua 库,方便实现各种功能。
4.学习Lua 汇编语言的实用建议(1)熟悉Lua 语言基础:学习Lua 汇编语言前,首先要掌握Lua 语言的基本语法和用法。
(2)学习汇编基础知识:了解计算机体系结构、指令集、内存管理等汇编语言基本概念。
(3)阅读优秀示例代码:学习他人的经验,提高自己的编程水平。
(4)实践:动手编写实际的Lua 汇编程序,加深对理论知识的理解。
(5)关注相关社区和资源:跟踪最新的技术动态,拓展知识面。
5.总结Lua 汇编语言是一种具有高性能和易用性的编程语言,适用于多种应用场景。
通过掌握汇编基础知识、熟悉Lua 语言以及不断实践,您可以成为一名优秀的Lua 汇编程序员。
快速上手使用Lua编程语言进行脚本开发

快速上手使用Lua编程语言进行脚本开发第一章:Lua编程语言概述Lua是一种轻量级、高效率的脚本语言,由巴西圣何塞大学开发而成。
它的设计目标是与C语言相互补充,并且可以嵌入到其他语言中使用。
Lua具有简单易学、灵活性强、可扩展性好等特点,使其在游戏开发、嵌入式系统和Web应用等领域得到广泛应用。
第二章:安装和配置Lua环境在开始使用Lua进行脚本开发之前,我们首先需要安装和配置Lua的开发环境。
根据自己的操作系统选择相应的Lua版本,并下载安装包。
安装完成后,将Lua的可执行文件路径添加到系统的环境变量中,以便在任意位置能够使用Lua命令行工具。
第三章:Lua基本语法Lua的语法简洁易懂,为开发者提供了丰富的语法和功能。
本章将介绍Lua的基本语法,包括变量的声明与赋值、条件语句、循环语句、函数的定义与调用等内容。
同时,我们也会介绍Lua的数据类型、运算符、表达式和控制结构的使用方法,帮助读者快速掌握Lua的编程技巧。
第四章:Lua标准库和常用函数Lua提供了一系列的标准库和常用函数,这些函数和库能够帮助开发者更加高效地进行脚本开发。
本章将介绍Lua的标准库中常用模块的使用方法,包括字符串处理、文件操作、时间日期、数学计算等。
同时,我们还会介绍Lua的一些常用函数,如print()函数和assert()函数等,帮助读者轻松理解和应用这些函数。
第五章:Lua与其他语言的交互Lua可以很方便地嵌入到其他编程语言中使用,如C、C++、Python等。
本章将介绍Lua与其他语言的交互方式,包括通过Lua的C接口进行函数调用、在Lua脚本中调用其他语言的函数等。
同时,我们还会介绍Lua与其他语言之间数据的交互方式,帮助读者更好地进行多语言开发。
第六章:Lua的高级特性除了基本语法和常用函数外,Lua还具备许多高级特性,如协程、元表、闭包等。
本章将介绍Lua的这些高级特性,帮助读者在脚本开发中更加灵活地运用Lua的功能。
lua语言零基础教程

lua语言零基础教程Lua语言零基础教程:Lua是一种功能强大的脚本编程语言,主要用于扩展和嵌入其他应用程序中。
它具有简单易学、轻量级的特点,常被用于游戏开发、网络编程以及嵌入式设备上。
1. 安装Lua:首先,你需要下载并安装Lua解释器。
你可以在Lua官方网站上找到适合你操作系统的安装程序。
安装完成后,你可以在命令行中运行"lua"命令来启动Lua解释器。
2. 基本语法:Lua的语法非常简洁和易懂。
以下是一些基本的语法规则:- 注释:使用"--"来添加单行注释。
例如:-- 这是一个注释。
- 变量:Lua中的变量是全局的,并且无需事先声明类型。
你可以直接对变量赋值。
例如:x = 10。
- 数据类型:Lua支持多种数据类型,包括数字、字符串、布尔值、表、函数等。
例如:x = 10;str = "Hello World";flag = true。
- 循环和条件语句:Lua中的循环和条件语句与其他编程语言类似。
你可以使用"if"语句来进行条件判断,使用"for"和"while"语句来进行循环操作。
- 函数:Lua中的函数定义使用关键字"function",你可以定义自己的函数,并在程序中进行调用。
3. 基本操作:Lua提供了一些基本的操作符,包括算术运算符、比较运算符和逻辑运算符等。
你可以使用这些操作符对变量进行计算和比较。
4. 表(Table):Lua中的表相当于其他编程语言中的数组或字典。
你可以使用表来存储和操作数据。
表可以包含多个键值对,可以根据键来获取对应的值。
5. 文件操作:Lua提供了一些函数用于文件的读写操作。
你可以使用这些函数来读取文件内容、写入文件或者对文件进行其他操作。
这只是Lua语言的一些基础知识,希望能对你入门Lua编程有所帮助。
如果你对Lua感兴趣,可以进一步学习Lua的高级特性和应用。
快速入门使用Lua进行游戏脚本编程与开发

快速入门使用Lua进行游戏脚本编程与开发第一章:Lua语言简介Lua是一种轻量级的脚本语言,常用于游戏开发中的脚本编程。
它具有简洁、高效、易学易用的特点,成为了许多大型游戏引擎的首选脚本语言。
在本章中,我们将介绍Lua语言的基本概念和特点。
Lua最初由巴西里约热内卢天主教大学开发,并于1993年发布。
它是一种嵌入式语言,可以轻松集成到其他应用程序中。
Lua语言具有类似于C语言的语法,采用动态类型和自动内存管理的方式,允许开发者快速建立原型,高效地编写脚本代码。
与其他脚本语言相比,Lua的解释器非常小巧,通常只有几十KB大小,因此非常适合在资源受限的环境中使用。
同时,Lua还具备良好的跨平台性,支持各种操作系统和硬件平台。
第二章:Lua的基本语法在本章中,我们将介绍Lua语言的基本语法,包括变量、函数、控制流等。
1. 变量:Lua采用动态类型,无需显式声明变量类型。
你只需要直接给变量赋值,Lua会根据赋值的数据类型自动确定变量类型。
2. 函数:在Lua中,函数是一等公民。
你可以像操作变量一样操作函数,将其赋给变量、作为参数传递、作为返回值等。
3. 控制流:Lua支持常见的控制流语句,如条件语句(if-else)、循环语句(for、while)、跳转语句(break、return)等。
这些语句可以帮助开发者实现不同的逻辑和算法。
第三章:Lua与游戏开发在游戏开发中,Lua常常被用于编写游戏脚本和实现游戏逻辑。
在本章中,我们将介绍Lua在游戏开发中的应用场景和实践经验。
1. 游戏脚本编写:Lua可以作为一种独立的脚本语言,用于编写游戏逻辑、人工智能、关卡设计等,让游戏本身具备更高的灵活性和可扩展性。
2. 引擎扩展:许多游戏引擎都内置了Lua的解释器,开发者可以通过编写Lua脚本来扩展引擎的功能。
例如,可以使用Lua脚本编写自定义的游戏菜单、界面、特效等。
3. 快速迭代:由于Lua的语法简洁、易于学习,以及动态类型和自动内存管理的特性,使用Lua编写游戏脚本可以帮助开发者更快地进行迭代开发,快速测试和修复bug。
lua基本知识

lua基本知识
Lua是一种小巧的脚本语言,由巴西里约热内卢天主教大学的一个研究小组于1993年开发。
它的设计目的是为了灵活嵌入应用程序中,为应用程序提供灵活的扩展和定制功能。
Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译和运行。
Lua的特点包括:
1.轻量级:一个完整的Lua解释器不过200k,在所有脚本引擎中,Lua的速
度是最快的。
2.可嵌入性:Lua脚本可以很容易的被C/C++ 代码调用,也可以反过来调用
C/C++的函数,这使得Lua在应用程序中可以被广泛应用。
3.简洁性:Lua的代码简洁优美,易于理解和维护。
4.平台无关性:Lua可以在几乎所有操作系统和平台上编译和运行。
5.扩展性:Lua并没有提供强大的库,这是由它的定位决定的。
所以Lua不
适合作为开发独立应用程序的语言。
Lua的数据类型包括:
1.nil:表示一个无效值(在条件表达式中相当于false)。
2.boolean:包含两个值:false和true。
3.number:表示双精度类型的实浮点数。
4.string:字符串由一对双引号或单引号来表示。
5.function:由 C 或 Lua 编写的函数。
erdata:表示任意存储在变量中的C数据结构。
7.thread:表示执行的独立线路,用于执行协同程序。
8.table:Lua中的表(table)其实是一个"关联数组"(associative
arrays),数组的索引可以是数字、字符串或表类型。
学会使用Lua进行游戏脚本编写

学会使用Lua进行游戏脚本编写Lua是一种轻量级的脚本语言,它被广泛用于游戏开发中。
学会使用Lua进行游戏脚本编写可以帮助开发者更加高效地创建游戏。
本文将详细介绍Lua的基本语法和常用功能,并分点列出以下内容:一、Lua的基础语法1. 变量与数据类型:Lua是一种动态类型语言,变量可以存储不同类型的数据,如数字、字符串等。
2. 注释:通过使用"--"来添加单行注释,或使用"[[]]"来添加多行注释。
3. 控制语句:包括条件判断语句(if-elseif-else)以及循环语句(for、while、repeat-until)。
4. 函数:Lua中的函数使用关键字"function"定义,可以有多个参数和返回值。
二、Lua的常用功能1. 字符串操作:Lua提供了丰富的字符串处理函数,如连接字符串、截取子串、查找子串等。
2. 数学运算:可以进行加、减、乘、除等基本的数学运算,还可以通过导入数学库来进行高级数学计算。
3. 表操作:表是一种非常重要的数据结构,在Lua中使用键值对保存数据,可以进行增删改查等操作。
4. 文件操作:可以通过Lua的文件操作函数来读取和写入文件,对于游戏中的存档和配置文件非常有用。
5. 异常处理:Lua提供了try-catch语句来处理异常情况,可以在代码执行出错时进行相应的处理。
6. 模块化:Lua支持模块化开发,可以将代码按照功能模块划分,并通过require函数进行导入和调用。
三、Lua在游戏开发中的应用1. 游戏逻辑控制:Lua可以用于编写游戏的逻辑控制部分,包括玩家操作响应、游戏进程控制等。
2. AI编写:通过使用Lua脚本编写游戏中的人工智能算法,可以让NPC、敌人等游戏角色更具智能。
3. 游戏界面设计:Lua可以与图形界面库相结合,进行游戏界面的设计和渲染,使其更加美观和交互性。
4. 游戏工具开发:Lua具有简单易学的特点,非常适合用于开发游戏中的工具,如地图编辑器、关卡设计等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
脚本制作实例讲解: 脚本制作实例讲解:助手的Lua脚本制作需要你对编程有一定基础,特别是脚本编程;需要你熟悉Lua 基本的语法结构、程序结构、使用习惯及约定、注意事项等。
只要你有一定的编程基础, 并基于以上知识的了解和学习,脚本制作将不难进行。
助手的Lua脚本制作中关于模拟操 作的脚本你还需要清楚你实现模拟操作的每一个细节,要能分解每一个细节到程序实现 上,这样你才能更好的完成脚本。
下面我们举出一个具体的魔兽操作实例脚本给大家一个 脚本制作实现思路和方式。
我们来看一个魔兽内吃药脚本的实现。
脚本实例: 脚本实例:魔兽吃药脚本 思路准备: 1. 思路准备:魔兽吃药是玩魔兽的一个关键项,然而有些地图药品繁多更显吃药之特点。
吃药虽然是一个简单的事情,但是当我们玩一个单机或挂机升级的图时,能自动 吃药挂机那将是有用的了,我们就此来进行实现魔兽自动吃药挂机的脚本,其中 吃药最常见的就是一点即用型药品了,还有一种使用后需要指定目标的麻烦点, 但是新版本的智能改键指令加上执行改键序列函数实现起来也是很简单的事。
而 且最好能挂机吃药魔兽可以不再前端,那我们就可以挂机干其他事了^_^。
实现思想: 2. 实现思想:要进行自动吃药监视我们要先想如何自动法?自动的前提当然是要定时检测 当前英雄血蓝量,这就需要用到定时器和延时;检查血量又需要用到查询单位属 性getunitattribute函数,此外还需要用到键鼠模拟操作函数等。
下面我们以一 个具体地图实例来讲解脚本制作。
地图就选择风霜的《遗失的记忆》吧开始编写测试修改代码: 3. 开始编写测试修改代码:基于以上的准备那我们先新建一个脚本,暂时命名为“runAutoPress.txt”吧, 下面就逐步开始代码吧: 1) 先定义几个可能用到的变量和初始值,并将血瓶放到包裹7位置,魔瓶放到 包裹8位置。
hppt=0.75 --血量值监视限度保户值,即血量值的 75% mppt=0.15 --魔法值监视限度保户值,即魔法值的 15% msPress=200 --监视间隔时间,暂停200ms 2) 设置对应血魔监视的定时器函数,并加入基本代码: function runAutoPressFunc() if 1==isplaying() then --当游戏正在进行时才执行 unitid,unithandle=getselunitex() --获取当前英雄单位ID和句柄信息 hpmax,hp,mpmax,mp= getunitattribute(unithandle, 1, 2, 3, 4) --获取该单位的血魔的最大值和实际值 if hp/hpmax<hppt then --判断当前的血量值比率是否小于设定 值 keypress(103) --小于则执行小键盘7按键加血 end if mp/mpmax<mppt then --判断当前魔法值是比率否小于设定值 keypress(104) --小于则执行小键盘8按键加魔end end end tmAutoPress=settimer(msPress, 'runAutoPressFunc') keypress(103)可用runkeys(“使用物品dpsp”)代替,keypress(104)可用 runkeys(“使用物品lclp”),其中dpsp为中型生命药水ID,lclp为中型魔法药水 ID,2者效果相同,只是参数及使用不同,keypress需要指定物品位置,而 runkeys需要指定使用物品ID。
这样基本就可以实现了自动吃药。
但实际中我们 会发现血量达到保户值时,使用药品没能立即补上时,药水将在监视时间间隔内 达到程序条件时一直使用!这就无异于浪费药水。
这当然不是我们想要的!那如 何解决呢?有的人会说那把监视时间调大吧!调大是可以降低浪费吃药的程度! 但是随之会产生不能及时吃药的问题!因为监视时间间隔过大,在这监视时间间 隔里英雄很有可能会死掉,也显然不好。
不能增加监视时间那这个定时器工作模 式如何改进呢?我们可以利用关闭定时器的方法,关闭掉定时器加入延时,延时 过后然后我们再打开它就OK,既然想明白了那我们改程序: hppt=0.75 --血量值监视限度保户值,即血量值的 75% mppt=0.15 --魔法值监视限度保户值,即魔法值的 15% msPress=200 --监视间隔时间,暂停200ms msHPPressWait=7000 --吃红间隔时间,7秒 msMPPressWait=9000 --吃蓝间隔时间,9秒 function runAutoPressFunc() if 1==isplaying() then --当游戏正在进行时才执行 unitid,unithandle=getselunitex() --获取当前英雄单位ID和句柄信息 hpmax,hp,mpmax,mp= getunitattribute(unithandle, 1, 2, 3, 4) --获取该单位的血魔的最大值和实际值 if hp/hpmax<hppt then --判断当前的血量值比率是否小于设定 值 keypress(103) --小于则执行小键盘7按键加血 killtimer(tmAutoHPPress) --关闭定时器 sleep(msHPPressWait) --延时加血操作 tmAutoHPPress=settimer(msPress, 'runAutoHPPressFunc') --打开定时器 end if mp/mpmax<mppt then --判断当前魔法值是比率否小于设定值 keypress(104) --小于则执行小键盘8按键加魔 killtimer(tmAutoHPPress) --关闭定时器 sleep(msMPPressWait) --延时加血操作 tmAutoHPPress=settimer(msPress, 'runAutoHPPressFunc') --打开定时器 endend end tmAutoPress=settimer(msPress, 'runAutoPressFunc') 这样能自动吃药且不浪费药了,是不是好了呢?在实际中你还会发现 有时候血补上,而蓝没补上,有时候蓝补上而血没补上,是什么原因呢?因为我 们把血魔监视放在离一个定时器函数,理论上看似这并没有问题,达到判断条件 就应该加血加蓝的,但因为我们设置了吃药间隔时间,因而吃红后必然影响吃蓝 的监视,吃蓝时必然会影响吃红的监视!那怎么办呢? 有想法的人会说分开2个定时器监视不就好了?说的好,是这样的, 下面我们就把它改成2个定时器的模式来看看,便于名称命名的区别,我们将部 分名称改变一下如下: hppt=0.75 --血量值监视限度保户值,即血量值的 75% mppt=0.15 --魔法值监视限度保户值,即魔法值的 15% msPress=200 --监视间隔时间,暂停200ms msHPPressWait=7000 --吃红间隔时间,7秒 msMPPressWait=9000 --吃蓝间隔时间,9秒 function runAutoHPPressFunc () if 1==isplaying() then --当游戏正在进行时才执行 unitid,unithandle=getselunitex() --获取当前英雄单位ID和句柄信息 hpmax,hp,mpmax,mp= getunitattribute(unithandle, 1, 2, 3, 4) --获取该单位的血魔的最大值和实际值 if hp/hpmax<hppt then --判断当前的血量值比率是否小于设定 值 keypress(103) --小于则执行小键盘7按键加血 killtimer(tmAutoHPPress) --关闭定时器 sleep(msHPPressWait) --延时加血操作 tmAutoHPPress=settimer(msPress, 'runAutoHPPressFunc') --打开定时器 end end end function runAutoMPPressFunc () if 1==isplaying() then --当游戏正在进行时才执行 unitid,unithandle=getselunitex() --获取当前英雄单位ID和句柄信息 hpmax,hp,mpmax,mp= getunitattribute(unithandle, 1, 2, 3, 4) --获取该单位的血魔的最大值和实际值 if mp/mpmax<mppt then --判断当前魔法值是比率否小于设定值 keypress(104) --小于则执行小键盘8按键加魔 killtimer(tmAutoHPPress) --关闭定时器 sleep(msMPPressWait) --延时加血操作tmAutoHPPress=settimer(msPress, 'runAutoHPPressFunc') --打开定时器 end end end tmAutoHPPress=settimer(msPress, 'runAutoHPPressFunc') tmAutoMPPress=settimer(msPress, 'runAutoMPPressFunc') 到此功能和使用已完全实现,但我们会发现这样的方式必须要魔兽处 于前端才能自动吃药!而我们想要把魔兽最小化后还能自动吃药就不行了!那我 们要实现魔兽不在前端或最小化时如何自吃药呢?熟悉windows程序设计或原理 的朋友就会想到用消息机制吧?是的,就要用到消息机制,来实现吃药吧!我们 为程序增加一个keypressEx函数来实现消息机制按键,更改脚本为如下代码: hppt=0.75 --血量值监视限度保户值,即血量值的 75% mppt=0.15 --魔法值监视限度保户值,即魔法值的 15% msPress=200 --监视间隔时间,暂停200ms msHPPressWait=7000 --吃红间隔时间,7秒 msMPPressWait=9000 --吃蓝间隔时间,9秒 function keypressEx(keycode) hWar3 = getwar3window() sendmessage(hWar3, 256, keycode, 0) sleep(1) sendmessage(hWar3, 257, keycode, 0) end function runAutoHPPressFunc () if 1==isplaying() then --当游戏正在进行时才执行 unitid,unithandle=getselunitex() --获取当前英雄单位ID和句柄信息 hpmax,hp,mpmax,mp= getunitattribute(unithandle, 1, 2, 3, 4) --获取该单位的血魔的最大值和实际值 if hp/hpmax<hppt then --判断当前的血量值比率是否小于设定 值 keypressEx (103) --小于则执行小键盘7按键加血 killtimer(tmAutoHPPress) --关闭定时器 sleep(msHPPressWait) --延时加血操作 tmAutoHPPress=settimer(msPress, 'runAutoHPPressFunc') --打开定时器 end end end function runAutoMPPressFunc () if 1==isplaying() then --当游戏正在进行时才执行 unitid,unithandle=getselunitex() --获取当前英雄单位ID和句柄信息hpmax,hp,mpmax,mp= getunitattribute(unithandle, 1, 2, 3, 4) --获取该单位的血魔的最大值和实际值 if mp/mpmax<mppt then --判断当前魔法值是比率否小于设定值 keypressEx (104) --小于则执行小键盘8按键加魔 killtimer(tmAutoHPPress) --关闭定时器 sleep(msMPPressWait) --延时加血操作 tmAutoHPPress=settimer(msPress, 'runAutoHPPressFunc') --打开定时器 end end end tmAutoHPPress=settimer(msPress, 'runAutoHPPressFunc') tmAutoMPPress=settimer(msPress, 'runAutoMPPressFunc') 这样更改后,就可以实现无限制的自动吃药了,是不是很爽?爽的话 就嚎叫吧,O(∩_∩)O~! 然而有的朋友玩的时候还会发现一个问题,虽然以上程序能自动吃药 且不浪费还能挂机,但是有的图红蓝有多种,我们包裹里可能放了多种药,而每 种药冷却时间较长,一种药补血可能补不过来会导致英雄挂掉!为了解决这个问 题我们可以再增加几个血量限度保护值和对应的补血定时器程序,前面我们也提 到了防止多个判断写在一起导致延时时其后的程序有可能不被实际需要时而未执 行的问题。