很久都没教大家一些AMXX知识了
而今次主要教一些比较实用的知识
可以用在其他程式语言
c++ c 等等
今天要教大家的是
2D Array , 回圈(For Loop),Boolean
2D Array:
大家有时看见sma中含有
new xx[200]
new xx[33]
等等
这都是1D Array
而2D Array就是
new [33][200]
new [2][64]
这些就是2D Array
相信以上都能够用肉眼分别
看看以下的图(用小画家能够方便我= =)
相信大家都看见1, 2, 3, 4吧
然后1,2,3,4各自有64
new xxx[4][64]
这xxx就是上图的东西了
简单来说
xxx[4][64] 就是有 4个64空间
就等于
new x[64]
new xx[64]
new xxx[64]
new xxxx[64]
打个比喻
有4个同学有储物柜
当然很公平 , 4个同学各自的储物柜只能够放满64个物件
如果不明白 是很正常的, 因为我都花了很多时间才明白= =
例子:
我想取得id的金钱, IP, 名字
new information[3][100]
get_user_name(id, information[0], 99)
get_user_ip(id, information[1], 99, 1)
format(information[2], 99, "%d", cs_get_user_money(id))
这样就能够使用1个Array取得3个资料
回圈(For Loop):
大家都有可以见过以下的东西吧
for(new i = 1; i <= get_maxplayers(); i++)
for(new i = 0;i < get_maxplayers(); i++)
那可能新手有1个问题
这个是什么= =??
这个就是回圈
通常在没有对象的Function出现
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
register_logevent("logevent_round_start", 2, "1=Round_Start")
register_logevent("logevent_round_end", 2, "1=Round_End")
等等都是没有对象的Function
再说一说原理
for(new i = 0; i <= get_maxplayers() ; i++)
在回圈开始时
i 的数值是 0
然后 中间的是 如果 i是小于或者等于 伺服器总人数(多是32)
最后 i 就会 + 1
然后 i 的数值 = 1; i 又是小于和等于32
i又+ 1了
到最后
当i 是32 时
i 都是小于或等于32
i 变成33了
当i变成33时
33 已经大过32
i不会再+
这就运行了32次
进阶:
AMXX和C / C++类似语言都会设立
Break
Continue
这两个功能
这两个功能和它表面的意思一样
Break = 破坏回圈, 不再循环
Continue = 继续循环
例子:
for(new i = 0; i < get_maxplayers();i++)
if(!is_user_connected(i))
break;
如果他未进入伺服器
破坏回圈
for(new i = 0; i < get_maxplayers();i++)
if(is_user_connected(i))
continue;
如果他进入了伺服器
继续回圈
有人可能会问
1 <=32
for(new i = get_maxplayers(); i >= 1;i--)
这样行吗?
答案:
你可以试试= =
Boolean:
在sma / C/C++类似语言都会看见
True / False
很容易使用
首先
new bool:xx[33]
就能设立 xx是一个boolean
if(cs_get_user_team(id) == CS_TEAM_T)
xx[id] = true
else if(cs_get_user_team(id) == CS_TEAM_CT)
xx[id] = false
如果玩家是T
xx[id] 就是 true
如果玩家是CT
xx[id] = false
if(xx[id])
这句解如果xx[id]是True
if(!xx[id])
这句解如果xx[id]是False
注:
当Boolean是True时
电脑会将Boolean读取的数值为1
当Boolean是False时
电脑会将Boolean读取的数值为0
教学完满结束