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
2
3
4
5
.
lua54.dll
lua54.exe
luac54.exe
wlua54.exe

如果你愿意,可以删去这些文件名中的54,这代表它是Lua5.4版本,在下面的命令中,我将使用删去54的命令,以使各操作系统的命令大致统一。

随后,你应该将解压缩的文件夹添加进path中,然后实验一下:

1
PS C:\> lua #cmd也不是不行

如果出现这个,就代表你成功了:

1
2
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脚本的制作流程大概是:

  1. 明确功能
  2. 开始CV
  3. 测试可用性
  4. 封装成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
2
3
menu.add_feature('action1','action',b.id,function()
menu.notify("成功启动", "成功", 3, 0xff7b68ee)
end)

我们把end)拆下去,做成缩进来方便阅读和编写,当然,这里也可以加入多行命令。

这里解释一下里面的命令,这回弹出一个窗口,就像是你每次游戏启动的一样,你可以在API文档里找到用法,这里只简单解释一下后面的0xff7b68ee,把他拆成0xff7b68ee,前面是透明度,后面是十六进制颜色,有趣吧 : )

这样,我们的第一个简单的lua脚本就写完了,它没什么功能,但是里面的方法是在更高级的脚本中能发现的,也是绝大多数脚本的基础,现在,扔到%appdata%\PopstarDevs\2Take1Menu\scripts\里面尝试一下,如果能用,那么请继续

我们写脚本,即便是免费脚本,也不是很希望别人看到源码,在2take1的市场中,很多人盗用别人发布的免费脚本制成付费的脚本,这种行为是我们不想看到的,于是,我们把脚本进行编译,在命令行中执行:

1
luac54 -s GTA.lua #GTA.lua是你的脚本名字,根据需求更改

-s可以删去调试信息,防止反编译,建议使用上,但即便已经编译,也不代表绝对安全。

输出一个luac.out,把它改名为GTA.lua以让2take1明白这是脚本(luac后缀可能也行,但我没试过)

写道这里是1972个词,我们总算是完成第一个2take1脚本了,现在喝口水休息一下吧 : )

如果你在过程中遇到问题,请在评论区留言,我看到会及时回复的

API文档翻译和解释

(正在制作的计划,太难了,先鸽)(在做了在做了)

后记

这么长的文章可是花了我一个多小时完成的(不包括API文档翻译和解释),还不快快转发?(恼

谢谢你看完,如果你有任何问题,请及时去评论区告诉我。

: )

作者

Kuroshima Cat

发布于

2022-12-20

更新于

2022-12-20

许可协议

评论