回一樓: 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搞混。
此外要修改時,也可以直接修改定義,雖然有些雞肋,但在大量重複使用時也是常用用法之一。