首页 > 游戏资讯 > 《CS Online(反恐精英online)》【攻略】CSO lua零基础小教室(一)接触lua

《CS Online(反恐精英online)》【攻略】CSO lua零基础小教室(一)接触lua

时间:2021-01-30 15:24:52

yrgna1234 (misk) #1 2020-09-14 18:07:45
大家好 我是misk
最近心血来潮想发一篇lua教学
初学者没写过程式吗?
您没有程式基础却想製作lua地图吗?

没问题,这次将会介绍最最最基本的程式语言,并且教大家如何运用在CSO上!

前言

如果您连程式语言都没碰过,必须要做个心理準备,那就是......您别想着要做出太创新的地图,因为那些创新地图是需要熟悉CSO的API,并且要有练过lua的作者才做得出来的。
API是什幺?简单来说就是连接程式与游戏之间的桥樑。

这边不会教你什幺程式运作原理,或是进阶的程式关键词,不用,您要做的就是先看懂简单的程式码。对初学者来说,连看都看不懂了,应该也不会想接触API吧?

所以这边会简单介绍一些程式基础的东西,非常基本,让您先看懂再下手。

建立写程式的地方

1.打开CSO,创立地图,进入编辑模式
2.先按V,再按8
正常来说会跳出这个画面
3.点"新创立"(点进去他会叫你选路径,选自己喜欢的路径吧!),然后再点"确认"
4.前往刚刚选的路径,照理来说会看到3个档案。
game.lua,ui.lua,project.json,初学者只需要用到game.luaui.lua就好。
可以点进去game.luaui.lua,应该会看到这行字:
没错,可以用记事本写,但是我极不推荐,因为对眼睛太残忍了,本人推荐VScode,之后的範例将都会使用这个软体。接下来要开始接触程式语言了喔!

程式的基本动作

一般来说,我们要先看懂3个动作。

1.宣告
程式一开始,我们需要自己建立需要的东西,例如变数,字串....等。
变数:会变动的数字。
字串:"你好"就是字串。

那我们要如何宣告呢?我们看个例子。
这个程式码只有1行,也就是建立一个名叫value的变数,并且让他为1,就这样。

那我们只能宣告数字吗?当然不是,但目前先提数字,字串,布林值(true or false)就好。
以下是範例。
这个範例有4行,分别是
建立名叫value的变数,并且让他为1
建立名叫string的变数,并且让他为"你好!"
建立名叫bool的变数,并且让他为true
建立名叫float的变数,并且让他为0.1
就这样。

2.判断
我们取名那些变数就是要拿来用的,因此我们可以用那些取了名的变数进行判断,我们举个例子。
这边我们可以看到,用了关键字if==thenend,这是什幺?
我们先介绍"==",这是一个判断的运算符,下面列出其他的一起解释。

==:是否相等?
~=:是否不相等?

然后学过英文就知道if的意思就是"如果",所以第2行的意思就是:如果value等于1的话就.....,那就怎样呢?我们需要範围,所以就出现了then跟end。

如果value真的等于1,程式就会从then开始跑,跑到他看到end为止。相反的,如果value不等于1的话,就会省略用then跟end包住的程式码。

而被then跟end所包住的地方有一行,就是print("value等于1"),这边先不讲解这行的意思。

3.运算
我们取名的变数除了判断外,也可以拿来做运算,这边我们先介绍常用的运算符。

+:加
-:减
*:乘
/:除
%:取余数
=:让左边的东西等于右边的东西(所以宣告时才用=)

我们举个例子。
逐一讲解。
先宣告value1等于1
再宣告value2等于5
再宣告一个变数,取名为value3,并让value3等于value1加value2,value1等于1,value2等于5,所以value3就等于1+5,也就是6了。

另外要如何让自己加1呢?例如我们宣告一个变数val为5,我们要怎幺让val加1呢?很简单,就是val = val + 1,因为=的意思是让左边等于右边,所以就让左边的val等于右边的自己+1就可以完成+1了!

执行程式的顺序

原理非常简单,就是由上至下执行,就像您看书也是一行一行看,也就是说如果您没有先宣告就进行运算时,程式就会出错!所以请初学者注意,在使用任何变数之前都要先确保自己已经定义了它!我们看个例子。
这边出现了很明显的错误,我们先做value加法,之后才定义它,结果当然是无法执行。

另外,程式由上往下看的特性也会出现重叠,也就是说我们可能会有需要重複给值的时候,这时候程式会随着行数更动。例如:
这边我们先定义了value1,并让它为5。
再来,我们又定义了value2,并让它为20。
但第三行又出现value2 = 100,这时程式就会乖乖的把本来为20的value2更改为100了。

问题
请问下方图片的value为多少呢?

可以在留言区中讨论喔!下一次将会讲解比较难但必须知道的关键字,之后才会正式接触CSO的API,哪边不懂也可以提出来,谢谢大家观看。

已更新第二章:

看较旧的 5 则留言

乂缄默乂: 09-14 20:23

魔王小辰: 09-15 22:02

谁再给我==我就

misk: 09-15 23:03

[qaz80429:德氏~魄殇] = =

uglinb (常山) #2 2020-09-15 12:39:15
化繁为简提供入门者更轻易学 已推
创世者如果没有用LUA真的会非常单调

很多功能都没办法表现出来

看较旧的 3 则留言

misk: 09-15 17:53

[cxz25660737:Lcarus] 因为还没写到api啊,要先看懂程式码才比较好懂api

misk: 09-15 17:54

[cxz25660737:Lcarus] 就懂基本的就好了,不需要太深

常山: 09-15 18:27

[yrgna1234:misk] 我先研究一下 看到程式码有点头痛

a5936021 (凋零) #3 2020-09-15 18:12:43
首先推大佬开教室,关于给的问题,如果value是否等于5时,value等于12,
有人留言10,我想问为甚幺不是12,因为大佬的教学中,下面这段

这边我们先定义了value1,并让它为5。
再来,我们又定义了value2,并让它为20。
但第三行又出现value2 = 100,这时程式就会乖乖的把本来为20的value2更改为100了。

有点不太了解,想请问为什幺?

misk: 09-15 18:42

这是因为"判断式if"的关係,因为在判断的时候value已经变成10了,它并不等于5,所以程式会忽略then跟end里面的东西,也就是忽略value = 12,因此最后的value才会是10喔

边缘至死: 09-15 19:58

程式的先后次序问题,电脑不会主动达成判断

凋零: 09-15 21:11 编辑

[yrgna1234:misk] [yipyip122:边缘至死] 原来如此,谢谢各位指导!

专题合集

精彩合集,奇葩无下限

相关文章

精彩推荐

大家还在看

手机版 | 电脑版