AMX mod X

AMX mod X
http://www.amxmodx.org/

AMX mod X(以下AMXX)というのは、AMX modの後継で、
CSなどで有志が作ったプラグインを扱うために必要なものです。
AMXXのプラグインには実用的なものからユニークなものが様々あります。
海外での開発はとても盛んなのですが、日本では全くといっていいほど作られてません。
なので日本語の資料も少なくて残念。

とりあえず俺のわかった範囲のことでも書いていきます。


拡張子についてはソースファイルは「〜.sma」プラグインは「〜.amxx」と決まっています。
導入自体は他のサイト様で解説されているので、今回は開発向けのことでも書きます。

使用言語

言語の正式名はよくわかりませんが、
コンパイラーを使い、オブジェクトファイルを作るというC言語と同じことをします。
コンパイラーには"small compiler"と呼ばれるものを使います。
AMXXで使うのに都合のいいコンパイラーなのでしょう。
文法は非常にC言語に近いものがあります。ほぼ一緒といえます。
また、C言語とくらべ、メモリ管理を厳密にする必要がなく、型もかなり大雑把になってます。
文末のセミコロンも書く必要がないので書き忘れをしても大丈夫です。
結構効率よく開発ができる環境といえます。

#includeがあり、C言語と同じで外部のファイルを読み込むために使います。
コンパイラーと同じディレクトリにあるincludeの中にあります。
ただし、includeファイルの拡張子は「.inc」です。

#defineもあり、こちらはC言語と全く同じです。

書き方

まずincludeに

#include 

は必ず書きましょう。これがないとほとんどのことができません。

次に必ず書くべき関数(メソッド?)があり、

public plugin_init(){
    register_plugin("プラグイン名","バージョン","作者名")
    register_event("アクション","関数名","フラグ","条件?")
    register_concmd("rconコマンド名","関数名",権限,"メッセージ")
    // 処理
}

があります。

plugin_init

http://amxmodx.org/doc/source/functions/core/plugin_init.htm
プラグインが読み込まれたときに実行され、基本的にイベントのセットなどを行います。

register_plugin

http://amxmodx.org/doc/source/functions/core/register_plugin.htm
プラグイン一覧表示などで表示する情報を定義します。

register_event

http://amxmodx.org/doc/source/functions/core/register_event.htm
イベントのセットを行います。
・アクション
アクション名を書きます。
このアクションが発生したときに(例えば死んだ時など)指定した関数を実行します。
・フラグ
"abcde"があり、この5つを組み合わせて使います。"be"といった感じに。リファレンスには

"a" - Global Event
"b" - Event sent to a single target
"c" - Send only once when repeated to other players
"d" - Only if sent to a dead player
"e" - Only if sent to an alive player

とかかれています。
"de"は死んだ/生きているプレイヤーを判別するフラグみたいですね。
あとはよくわかりません。
・条件
[引数][比較演算子][比較対象]
を書きます。
"1=1"なら、引数1番目の値が"1"であるならeventを行うという感じのようです。
よくわかりません。

register_concmd

http://amxmodx.org/doc/source/functions/core/register_concmd.htm
rconでrconコマンド名が送られてきたときに指定した関数を実行します。
権限にはrconの権限レベルを定義します。
メッセージには引数コマンドなどの書き方を説明する文章を書きます。




と、わかった範囲はこんなものです。
id:uho_ii_otoko がAMX MODの翻訳をやっているそうなので期待しておきますか・・・


以下にAMXXプラグインを作るための情報がたくさんあります。
AMX mod X - Doc
http://amxmodx.org/doc/index.html