2take1menu的Lua脚本编写
本文介绍2take1menu的脚本制作方法
免责声明
本文作者不支持任何游戏中作弊行为,本文所介绍的方法仅能作为技术介绍,不得将本文所介绍的方法用于脚本出售/租赁等非法商业行为,同时,本文作者不对由本文方法造成的问题(包括封禁/财产损失等)负任何责任。
什么是Lua?
Lua is a powerful, efficient, lightweight, embeddable scripting language. It supports procedural programming, object-oriented programming, functional programming, data-driven programming, and data description.
这是Lua官网上对Lua的描述,简言之:这是一种脚本语言,功能很多,很强大。
安装Lua
对于Windows、Linux、macOS都有对应的安装方式
Windows
对于Windows,我更建议直接下载安装包进行使用,访问Lua 二进制文件下载 ,下载Windows对应的二进制文件,目录应该是这样的:
1 | . |
如果你愿意,可以删去这些文件名中的54,这代表它是Lua5.4版本,在下面的命令中,我将使用删去54的命令,以使各操作系统的命令大致统一。
随后,你应该将解压缩的文件夹添加进path中,然后实验一下:
1 | PS C:\> lua #cmd也不是不行 |
如果出现这个,就代表你成功了:
1 | Lua 5.4.2 Copyright (C) 1994-2020 Lua.org, PUC-Rio |
随后试试输入进:
1 | print("hello world!") |
它应该会返回hello world!,如果你在其中任何一个步骤出错了,都可能导致失败,那么请从头再试。
Linux
对于Linux,最推荐的方法是使用包管理器,例如,对于Ubuntu/Debian,可以尝试:
1 | sudo apt install lua5.4 |
不同的发行版有不同的包管理器,如果你使用LFS,可能还需要处理更多问题,请自行谷歌解决。
macOS
对于macOS,同样推荐用包管理器解决,一个比较好的方法是使用brew进行安装,brew的安装可以在他们的官方网站上找到,国内用户最好换成清华源等国内源
安装指令可能是:
1 | brew install lua |
根据实际情况自己调整。
编辑器的选择
VSCode是我的选择,如果你喜欢别的,尽管用吧,Lua并不是很需要集成环境,因此能写就行。
开始
首先,你要熟悉Lua的语法,因为比较简单,请自行上网学习,2t脚本并不需要你掌握全部的Lua知识,只需要掌握基本的写法即可
了解2take1的脚本
这有几个重要的网址:
你应该已经了解什么是API了吧?
阅读
打开脚本介绍,你需要通篇阅读他们以基本的了解2take1的脚本使用方式,这可以加强你脚本的写作能力
API文档不需要通篇阅读,我们需要什么就看什么
Example
一个基本的Lua脚本的制作流程大概是:
- 明确功能
开始CV- 测试可用性
- 封装成luac格式防止源码泄露
那么,我们先要明白一些写法,我会带你完成第一个测试脚本
我们想做一个没用的脚本,并且希望有一个选项卡,里面套一个选项卡,于是我们阅读API文档,在文档中看见了:
1 | Feat add_feature(string name, string type, integer|nil parent, function|nil script_handler) |
什么意思?????
拆分看,整个一行分两部分,Feat和后面的一大堆,后面的明显是函数,前面的是描述,那么看看函数部分:
1 | add_feature(string name, string type, integer|nil parent, function|nil script_handler) |
其实很易懂,翻译一下就明白了,但string type在哪里?翻到文档开头,有个表格:
| Name | Description |
|---|---|
parent |
Parent feature |
toggle |
Toggle feature |
action |
Action feature |
value_i |
Toggle feature with integer value |
value_f |
Toggle feature with float value |
slider |
Toggle feature with slider |
value_str |
Toggle feature with string values |
action_value_i |
Action feature with integer value |
action_value_f |
Action feature with float value |
action_slider |
Action feature with slider |
action_value_str |
Action feature with string values |
autoaction_value_i |
Auto Action feature with integer value |
autoaction_value_f |
Auto Action feature with float value |
autoaction_slider |
Auto Action feature with slider |
autoaction_value_str |
Auto Action feature with string values |
现在一切都一目了然了,我们需要一个父选项卡,那么string type自然是parent,那么整理一下代码,删去我们不需要的元素,就可以得到:
1 | a=menu.add_feature("start",'parent',0,function()end) |
这里为什么要加入a=呢,因为我们待会还要用到这个父选项卡,然后往里面丢东西。
解释一下吧,start是父选项卡的名字,会显示在选项卡上,parent是我们刚刚解释的string type,0代表它的id,空的function代表他不会执行任何代码(实际上就意味着只是个选项卡,而不是实际的命令按钮)
现在选项卡有了,我们想在里面再加一个选项卡,就像这样:
1 | b=menu.add_feature("我在里面",'parent',a.id,function()end) |
这里和a很像,除了名字,唯一不同的就是id变成了a.id(这也是我们为什么在前面用a=的原因,这意味着它属于a,在游戏里会显示在a的内部,也就是说,你在游戏里要先点击start这个选项卡,才能点击我在里面这个选项卡。
现在我们有了选项卡,如何添加一个命令呢?查阅string type,命令的种类很多,这里因为是教程,我们选择最简单也最常见的action。
1 | menu.add_feature('action1','action',b.id,function()end) |
现在命令按钮action1出现在选项卡我在里面里了,让我们给他添加一些指令吧:
1 | menu.add_feature('action1','action',b.id,function() |
我们把end)拆下去,做成缩进来方便阅读和编写,当然,这里也可以加入多行命令。
这里解释一下里面的命令,这回弹出一个窗口,就像是你每次游戏启动的一样,你可以在API文档里找到用法,这里只简单解释一下后面的0xff7b68ee,把他拆成0xff和7b68ee,前面是透明度,后面是十六进制颜色,有趣吧 : )
这样,我们的第一个简单的lua脚本就写完了,它没什么功能,但是里面的方法是在更高级的脚本中能发现的,也是绝大多数脚本的基础,现在,扔到%appdata%\PopstarDevs\2Take1Menu\scripts\里面尝试一下,如果能用,那么请继续
我们写脚本,即便是免费脚本,也不是很希望别人看到源码,在2take1的市场中,很多人盗用别人发布的免费脚本制成付费的脚本,这种行为是我们不想看到的,于是,我们把脚本进行编译,在命令行中执行:
1 | luac54 -s GTA.lua #GTA.lua是你的脚本名字,根据需求更改 |
-s可以删去调试信息,防止反编译,建议使用上,但即便已经编译,也不代表绝对安全。
输出一个luac.out,把它改名为GTA.lua以让2take1明白这是脚本(luac后缀可能也行,但我没试过)
写道这里是1972个词,我们总算是完成第一个2take1脚本了,现在喝口水休息一下吧 : )
如果你在过程中遇到问题,请在评论区留言,我看到会及时回复的
API文档翻译和解释
(正在制作的计划,太难了,先鸽)(在做了在做了)
后记
这么长的文章可是花了我一个多小时完成的(不包括API文档翻译和解释),还不快快转发?(恼
谢谢你看完,如果你有任何问题,请及时去评论区告诉我。
: )
2take1menu的Lua脚本编写