回一楼: include本来是不想说的,但既然问了,那就只好说了 AMX MOD X的脚本使用的是PAWN语言,又因为模仿了C/C++的架构,所以又被称为Small C include指令在C/C++语言中也是一定会用到的 #include <amxmodx>
#include <amxmisc>
这两个是最基础的两个,主要是影响到语法的命令内容,include是「包含」的意思,用这个指令来载入所谓的「字典」
例如说,有个东西叫bomb_explode,这个命令是用在C4爆炸时执行事件,而此命令在csx之中,所以要加:
#include <csx>来使用,如果不加的话,在compile时就会显示「无效的命令」,从而导致compile失败
keys = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9)
看字面就知道这是按键的设定
据说只打1023也可以正常执行,但是我想既然是教学,还是打完整的好
回二楼: new szMenuBody[256]↓
用new来宣告新变数,字面上的意思就是,增加一个名为szMenuBody的变数,并给予256位元的资料储存
在选单的语法中,每一句都有szMenuBody,就是要将资料储存在这里面。
变数的名称可以自己给,只要你打的语法可以正常执行打什么都可以。
register_clcmd("say menu","ShowMenu",-1,"Show Menu")
既然你问第三和第四格,前两个我就不说了。
第三格指的是使用者的资格,-1是不列入计算,也就是所有玩家都可以。
第四格其实可以不用打也能执行,官方的原文是
"Description of the command"也就是命令的描述。 register_menucmd(register_menuid("\y选单教学:"), 1023, "MenuCMD" ) 这个其实有做整合,第一格其实只要打menuid就好,但是如果在这里打了register_menuid的话,就不用在多打一行。 「选单教学:」就是选单的标题,前面的\y是颜色,y是黄色,w是白色,r是红色,其他的我不太清楚,就麻烦你们自行研究了。 1023的意义,可以看我给一楼的回文,之所以这里比较省略,是因为一个一个打实在很多。 最后的MenuCMD,就是连结到指令的语法,不难理解吧?名称也可以随便改。 回三楼: 我没看过超级M4+M203的原始码,不好意思... case 9,是指switch(keys)的0键,是为了配合选单内容才这样写的。 default主要是用在所有case都不符合才使用的,我不太会用到它。 另外,在case之中如果要使用两个以上的命令,才要在两端加上{} return的用法有三个:return PLUGIN_CONTINUE/PLUGIN_HANDLED/PLUGIN_HANDLED_MAIN 第一个就是继续使用插件 第二个是说插件命令停止,直到下次呼叫 第三个我不太会用,大概是说停止命令,但不中断呼叫 此外,可以打得简短些,根据我打得次序,可以只打0/1/2来代替 补充: 既然提到了switch,就不得不说另一个也常常会使用switch的语法:随机 复制程式
new rand = random_num(0,3) //宣告变数rand,并使rand为随机数字0~3(共四个)
switch(rand){ //发现了吗?这里用的是变数rand,和按键的不同喔!
case 0: client_print( id, print_chat, "你抽到了一万元!" )
case 1: client_print( id, print_chat, "你抽到了五千元!" )
default : client_print( id, print_chat, "你什么都没得到!") //一时兴起写了default,很久没用这个,有错请指正
如此如此这般这般,就完成了一段随机的语法,那些随机播放音效的大都是用这种方法写的。
另外还有一个东西,叫做define(定义),和new的用法很像,但是又不太一样
例如说,我先在#include下面打上#define keys (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9)
这样一来,整个插件之中,使用到keys的部份,就不需要重新宣告keys,直接使用就可以。
为何呢?因为我在一开始就把keys定义成(1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9)
所以就不需要在宣告变数,是个很方便的命令。
此外,在随机的语法也可以用得上。
#define MAX_NUM 4
new rand = random_num(0,MAX_NUM-1)
发现了吗?这样写和上面的随机是一样的喔!而且这样写就可以直接设定总数,而不会被第一个数字到底是0还是1搞混。
此外要修改时,也可以直接修改定义,虽然有些鸡肋,但在大量重复使用时也是常用用法之一。