请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册,只需10秒
查看: 53|回复: 1

[插件教程] WatPz - Lua!从入门到入土(二)

[复制链接]
发表于 2020-1-31 18:18:06 | 显示全部楼层 |阅读模式

立即注册!仅需10秒!加入CS2D中文站,成为广大2Der爱好者的一部分!

您需要 登录 才可以下载或查看,没有帐号?立即注册,只需10秒

x
本帖最后由 Fuck 于 2020-1-31 18:25 编辑

- 测试你的Lua -
安装别人的插件
在开服的过程中,我们经常会 用到和学(chāo)习 别人的Lua插件

那么你必须先学会怎么安装别人的插件,才能知道当自己写完Lua后,如何放到游戏中测试

在这里我们以我的sFrame为例子:(打开 <Your CS2D>\sys\lua\ 路径)
lua folder.png

在这里我们会看到一堆文件,一个个讲吧!

autorun文件夹
自动加载文件夹,这个文件夹下的所有Lua会被自动加载,很方便
(缺点是:执行优先级较低,且不方便调试)

samples文件夹
USGN官方的一些Lua示例,可以帮助你理解如何写Lua
(缺点:都是英文,萌新看不懂,而且这种学习不系统,只能培养出cv大佬)

info.txt
一个说明文件,里面告诉了你使用Lua的一些注意事项啥的,类似我们的第一章
有兴趣的可以用翻译软件看看 xP

physics.lua
USGN官方的物理引擎(不过没啥屁用,没API又没注释,只能靠字面意思理解)

server.lua
服务器插件总入口,拥有最高的执行优先级(啥是优先级?别急,等会讲)

wrapper.lua
超废的一个Lua插件,就是把console cmd变成函数形式了
(强烈不建议使用!这个文件为了一时方便,注册了163个全局函数)
(sFrame的封装parse同样可以做到这个效果,但是性能完全吊打wrapper.lua)

文件讲完了,如何食用我们的sFrame呢?
首先你要下载,这是Github官方下载地址
点开最新版本(最上面)的Assets,再选择sFrame-xxx.zip即可下载

这里有3种安装方式
1. 全部解压到 <Your CS2D>\sys\lua\ 下,解压模式 选择 “更新文件”

2. 解压sFrame文件夹到 <Your CS2D>\sys\lua\ 下,然后把压缩包里面的server.lua所有内容放到游戏server.lua的最上面

3. 解压sFrame文件夹到 <Your CS2D>\sys\lua\ 下,然后打开sFrame文件夹,把里面的Main.lua放到autorun里面
来解释下区别(这里涉及到上文的优先级)

首先,我们要知道Lua文件的一个加载优先级(也就是执行优先级)
1. CS2D创建服务器时,会第一时间打开server.lua,执行完server.lua中的所有内容

2. 检查autorun文件夹下面的所有Lua文件,全部执行完

3. 检查是否有<mapName>.lua的存在,如果有,那么再把它执行了

清楚了这个优先级的问题后,我们再来回头看看这三种方法
1. sFrame是在server.lua中加载的,不过解压才用的是更新文件的方式,因此加载sFrame之前,可能还会加载别的文件

2. 手动把压缩包里server.lua的内容,添加到CS2D中server.lua的第一行,sFrame永远都是第一个加载的

3. 把sFrame的Main.lua直接扔到autorun,sFrame要等server.lua全部执行完才能加载

因此他们的一个优先级,从高到低是这样排序的:
2 1 3

调试自己的插件
是骡子是马,拉出来遛遛

在编写Lua的过程中,不仅需要运用抽象的思维来达到自己的一个项目需求

而且还要不断的调试,来验证代码的正确性
如果你写的代码全都是BUG,哪怕你水平再高,也没人愿意让你写代码

还是以上面的为例子,我们已经知道了Lua文件加载的一个先后,但是这是正确的吗?
在学习Lua的过程,质疑是个不可或缺的精神
你只有先敢肯定:“我的代码有问题”,才可能去修复你的BUG

那么,我们要验证这一点,怎么办呢?
首先我们需要了解到,Lua文件里面的一个函数:
print(...)
这个函数有啥用?就是把它的参数部分全部输出到控制台

听不懂?没关系,我们来实战一下,你就明白了
先弄清楚我们要测试什么?autorun、server.lua和<mapName>.lua谁先加载

ok,搞明白这一点后,我们再来看看需要准备什么:
1. 一台电脑还有CS2D(这不是废话吗
2. 一个地图和对应的地图Lua,server.lua以及autorun里面的一个Lua文件

首先,我们要先搞一个地图
在这里我创建了一个名叫test的地图

神马?你还不会做地图?那行吧..我教教你
首先打开CS2D,左边那一列有一个“地图编辑器”,点开它!
然后你会看到这样的一个界面:
Map Editor.png

好像很复杂?在这里我们我们只是需要一个可以测试的地图,所以没那么多讲究
你只需要关注这三个按钮,其他的日后讲(偷懒
Buttons.png

第一个是新建地图,点开它之后,啥都不用管!直接确定
然后还是一坨黑,不过你也不用关心,毕竟我们只是测试,不需要玩

第二个是打开地图,第三个是保存地图,我们这里点击第三个
然后你会看到一堆选项,别傻乎乎地选了!
那些选项都是你本来就有的地图,如果你选择了,就会覆盖
我们在下面的输入框里面,输入test(测试)这个单词就行了(输别的也可以

然后再点击第二个按钮,在框里面输入test,或者你直接在选项里面找
如果能打开,证明你的地图已经创建了!

okey,地图搞完,现在是地图Lua
还记得之前说过的,地图放在哪里吗?
就是我们的maps文件夹!打开它后

你可以发现那个一点都不显眼的test.map文件,它就是你的地图啦!
在他的旁边,新建一个叫做test.lua的文件,然后我们用vsCode打开它
在里面输入这一行:
test.lua.png

这一行的意思就是,让控制台里面出现一行 i'm test.lua 的信息

然后我们打开server.lua,在里面同样也加上这一行(不过内容要改成 i'm server.lua,不然分不清的)
最后打开我们的autorun文件夹,里面随便创建一个233.lua,在里面加上:
print("i'm 233.lua")

最后我们进入游戏,选择“新建游戏”,地图选择test
进入游戏后,按 \ 打开控制台
可以看到这样的内容
print1.png

奇怪,怎么test.lua没有被触发?
这是因为CS2D的服务器,默认是不会加载<mapName>.lua的

如果要加载,就要打开server.cfg,在最后面的// More下,添加这一行
serverCFG.png

添加完后,关掉游戏,保存好文件,再进入服务器,我们可以看到:
print2.png

test.lua也被加载了!根据他们输出的一个先后,我们便可以得到优先级的一个顺序:
先server.lua,其次autorun,最后才<mapName>.lua

那么关于这一章的内容就结束了,下一章开始教你们如何写Lua!
CS2D中文站 - 版权所有 1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者的同意
4、CS2D中文站管理员和版主有权不事先通知发贴者的情况下删除本贴
回复

使用道具 举报

发表于 2020-1-31 18:28:42 | 显示全部楼层
顶一下
回复
回复

使用道具 举报

本版积分规则