当前位置:首页 » 网页前端 » lua脚本关键词
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

lua脚本关键词

发布时间: 2022-06-08 11:45:39

‘壹’ 问一个关于LUA的关键词

ticket是键名
是没写完的吧

完整的大概应该是这样
my_table =
{
["ticket"] = {"TOPLEFT", UIParent, "TOPLEFT", 20, -20},
['ticket2'] = {"TOPLEFT", UIParent, "TOPLEFT", 20, -20},
}

这样的话可以使用下面的代码:
local name = 'ticket'
my_table[name]; // 值就是 {"TOPLEFT", UIParent, "TOPLEFT", 20, -20}

‘贰’ 游戏脚本语言lua,相关的一些东西

LZ要学LUA的话一定要去看书 Programming in Lua不一定要买纸质的 至少要有个电子档的 在序言里就已经说了 Lua本身是作为一种扩展语言来定位的 所以本身没有很强大的库 而它优势在于扩展性和兼容性 大部分功能都必须依赖外部的库 本身只有一些很简单的库函数可供调用 但是作为学习的话 那些强大的库大可不必看 基本的那些库学起来已经需要好一段时间了
至于脚本和C等的调用问题 虽然两者都可相互调用,但是毕竟windows与C相连接更紧密,所以一般来说 都是C调用lua 但是当脚本里需要实现一些需要使用c来写程序的时候也会在lua中调用c
lua脚本和C绑定的问题 c写的VC程序在windows下是可以直接运行的,lua写的如果没有解释器是无法直接运行的 所以一般来说写lua程序 想要直接使用的话都会用C来调用

‘叁’ Lua 这个脚本语言一般都用来干什么,有什么优点

脚本语言有很多种,像是我们常见的Cmd命令也可以算是一种脚本,你说的脚本语言应该是Web应用程序的脚本。

这类的常见的有JavaScript、VBScript、Perl、PHP、Python、Ruby。

脚本语言的特点是语法简单,一般以文本形式保存,并且不需要编译成目标程序,在调用的时候直接解释。这可以当做是脚本语言的判断标准,比如说JavaScript,你只需要用记事本新建一个Html文件,在里面加上一段脚本就可以了,在浏览器打开Html文件时自然会调用JS脚本。

总之你能用记事本写出程序,不需要编译环境生成目标程序的基本上就是脚本语言。

‘肆’ LUA脚本的几个疑问

关于dostring中的局部变量 这里刚好是有个特殊情况的

我用的luaforwindows直接运行的 没dostring 就先用loadstring了

locala=1
print(loadstring("a=123")())
print(a,_G.a)

这里a = 123执行时 不会给局部变量a进行赋值操作,而是修改了全局变量a

对于到底是局部变量还是全局变量的判断 依据的是 使用这个变量的这个区域 在使用之前 是否有过局部变量的声明

比如

a=1
print(a)
locala=2
print(a,_G.a)

这样就能看到2个不同的a

而在function Msg(x,y)中

是因为x和y是被当作实参传过来的 函数里的实参 在函数内部都是作为局部变量来使用 所以xy是局部而a是全局

‘伍’ 怎么使用lua脚本

LUA脚本语言基本使用方法是本文要将介绍的内容,主要是来学习Lua脚本语言的使用方法,具体内容来看本文详解。
先要把下边这些语句加入到VC中的头文件,一般是加到StdAfx.h中
extern "C" { #include "lua.h" #include "lualib.h" #include "lauxlib.h" #pragma comment(lib, "lualib.lib") #pragma comment(lib, "lua.lib") }

然后一般来说都使用一个全局的LUA库定义的这个东西
lua_State* g_Lua;

并且在工程处初始化时也给LUA初始化
g_Lua = lua_open(); **加这句 /* load Lua base libraries */ 网上一些教材中这么写的 lua_baselibopen(g_Lua); 不过我这简单的例子中不用到这些也行 lua_tablibopen(g_Lua); lua_iolibopen(g_Lua); lua_strlibopen(g_Lua); lua_mathlibopen(g_Lua);

紧接着声明接口函数,注册上函数
lua_register(g_Lua, "Message", myMessage);

好,初始化部分完了,看看接口函数的写法。
函数必须这样的格式来写
static int Func(lua_State *L) { 静态型函数,而且必须带参数为lua_State结构指针 返回的值是代表返回的数据个数,比如return 2;就可以代表 返回两个整数啊,浮点数什么的,象LUA的脚本编写就可以这样 i, j = Func() , 这样就表示可以从Func接口函数中得到两个返回值了 return 0; }

执行脚本语句可以读文件,也可以直接读函数名
注册了
lua_register(g_Lua, "Message", myMessage); static int myMessage(lua_State *L) { OutputDebugString("OK"); return 0; } lua_dofile(g_Lua, strCurPath); //读文件,必须给出完整的文件路径名称 lua_dostring(g_Lua, "Message()"); //直接读函数

文件中只要写上
Message()

就可以了。

‘陆’ 用Lua脚本来扫描一个日志文件,找出里面的关键字

逐行读取进行匹配
local file = io.open("log.txt","r") --打开log
for l in file:lines() do --逐行读取
if string.match(l,"error") then --如果存在字符串‘error’
print(l) --输出
end
end
file:close()

‘柒’ lua脚本语言的概念解释

Lua 教程
lua
Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
Lua 是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组于 1993 年开发的,该小组成员有:Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo。
设计目的
其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
Lua 特性
轻量级: 他用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里。
可扩展: Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。
其它特性:
支持面向过程(procere-oriented)编程和函数式编程(functional programming);
自动内存管理;只提供了一种通用类型的表(table),用它可以实现数组,哈希表,集合,对象;
语言内置模式匹配;闭包(closure);函数也可以看作一个值;提供多线程(协同进程,并非操作系统所支持的线程)支持;
通过闭包和table可以很方便地支持面向对象编程所需要的一些关键机制,比如数据抽象,虚函数,继承和重载等。
Lua 应用场景
游戏开发
独立应用脚本
Web 应用脚本
扩展和数据库插件如:MySQL Proxy 和 MySQL WorkBench
安全系统,如入侵检测系统
第一个 Lua 程序
接下来我们使用 Lua 来输出"Hello World!"
实例(Lua 5.3)
print("Hello World!")

‘捌’ lua脚本怎么取出自己想要的的部分字符

你好,以前没接触过lua,刚自己试了一下,就按照你问题中的"23^Hello^你好^2000^world.txt"这个字符串为例,以^为分隔符来说吧:
---------------start---------------
str = "23^Hello^你好^2000^world.txt"
list = table.pack()
for w in string.gmatch(str, "[^^]+") do
print(w)
table.insert(list, w)
end
---------------start---------------
解释:代码共6行,
第1行:定义一个变量str,内容为"23^Hello^你好^2000^world.txt",这也是我们要处理的字符串.
第二行: 定义一个空列表,它是用在下面的for循环中,存放以"^"作为分隔符的每一部分
第三行:简单来看是个for循环,深入一点来看,也就是string.gmatch(str,"[^^]+")这部分需要解释一下,它表示调用的是string库的gmatch()函数,这个函数有两个参数,第1个参数为要处理的字符串,咱们这里就是上面定义的str,第二个参数就是我们要在这个字符串中匹配什么样的内容,这里的匹配内容写的是"[^^]+",学过正则的很好理解,单纯的[abc]表示匹配任意单个字符a或b或c,有一点特殊的是一旦[]中的字符是以^打头的,则表示匹配任意非[]中列出的字符,如[^abc]表示匹配任意除abc外的其它任一字符,所以[^^]解释为匹配除^外的任一字符,举例来说,如果我们有字符串"23^Hello",如果用[^^]匹配的话,最终得到的是7个单个字符,即"2","3","H","e","l","l","o",显示这不符合我们的题意,所以在这基础上改进了一下,即在其后又加了个+号,[^^]+,这里的+号表示尽可能多地匹配它前面内容,这里也就是尽可能多地匹配[^^],所以[^^]+在处理"23^Hello"的时候,结果得到的就是"23","Hello".这里关于用到的这个正则说的不是太清楚,多练练就明白了。最后,第3行把函数部分给替换掉后,可以理解为:for w in [23,Hello,你好,2000,world.txt],每次从[]中取一个值赋给w,然后执行for下面的语句,接着往下看
第4行,接第3行尾,就是把每次赋给w的值都打印出来
第5行,将每次赋给w的值都追加到列表list中
第6行,for循环语法上的闭合关键字,这个没啥说的
到此,我们得到了一个列表值为[23,Hello,你好,2000,world.txt]的list,此时我们就可以使用list[n]来取我们想要的值了 。
*.如果你要问上面最3条最后不都有[23,Hello,你好,2000,world.txt]了嘛,为啥还要那么麻烦,直接使用string.gmatch()函数不就行了嘛,其实第3条结尾我那么写只是为了让你好理解,实际上gmatch()函数的返回值并不是列表,而是一个可迭代的函数,而for循环的作用就是把gmatch()函数返回的这个可迭代的函数中的每个元素都取出来并赋给列表list
*.说的有点啰嗦了,希望对你有帮助吧,另外,我从没用过lua,也是刚查了查,自己实践了一下,希望不会形成误导

‘玖’ lua脚本文本翻译

inst可以看做一个人,lives_left 是他的一个部位。
inst.components.childspawner.onchildkilledfn这就是inst的部位的部位,比如胳膊上的毛
inst.components.childspawner:StopRegen()这冒号后面就是inst某个部位的一些动作,比如:胳膊 动起来
后面同理 .点后面就相当于部位 :冒号后面就是动作
inst:RemoveComponent("childspawner")括号里面就是动作的指令,比如:向上动,向下动

‘拾’ lua的io,读取文件,匹配关键字,获取内容下面内容.并返回

FileStream fs = new FileStream("d:\\a.txt", FileMode.Open); StreamReader m_streamReader = new StreamReader(fs); m_streamReader.BaseStream.Seek(0, SeekOrigin.Begin); string arry = ""; string strLine = m_streamReader.ReadLine(); do { string[] split = strLine.Split('='); string a = split[0]; if (a.ToLower() == "ip") { arry += strLine + "\n"; } strLine = m_streamReader.ReadLine(); } while (strLine != null && strLine != ""); m_streamReader.Close(); m_streamReader.Dispose(); fs.Close(); fs.Dispose(); Console.Write(arry); Console.ReadLine(); 如果你要大小写也要匹配的话把.ToLower() 去掉就行了