CCodelab Station
ワークフロー

GMod アドオンの作り方をステップごとに解説

03
最初のアドオン

チャットコマンドのアドオンを最初から最後まで

自分のサーバーで使う !hello チャットコマンドは、役に立つ最小のアドオンです。サーバー側の 1 つのファイルで書く、ごく普通の GMod Lua スクリプトで、空のフォルダーからテスト済みの結果まで GMod アドオンを作る流れが分かります。書くのはエージェント、確認するのはあなたです。

01

アドオンのフォルダーを開く

まず garrysmod/addons/welcome を自分で作成し、そのフォルダーを作業フォルダーに選びます。

02

作業内容を説明する

アドオンにやってほしいことを普通の言葉で書きます。たとえば、!hello チャットコマンドにプレイヤー名で返事をする、などです。

03

diff を確認する

Ask first で作業します。sv_welcome.lua のファイルカードと diff を読んで、Accept か Reject を押します。

04

ゲームでテストする

ローカルのテストサーバーでマルチプレイヤーゲームを始めて参加し、チャットでコマンドを入力して、完了とする前にコンソールの Lua エラーを確認します。

エージェントが書くファイル

lua/autorun/server/sv_welcome.lua
-- sv_welcome.lua: answer the !hello chat command
-- Runs on the server only (lua/autorun/server/).

local command = "!hello"

hook.Add("PlayerSay", "Welcome_Hello", function(ply, text)
    if string.lower(text) == command then
        local name = ply:Nick()
        ply:ChatPrint(string.format("Hello, %s!", name))
        return ""
    end
end)

サーバー側のみです。hook.Add が関数を PlayerSay に結び付け、string.lower が大文字小文字を無視して照合し、ChatPrint がそのプレイヤーにあいさつを表示し、空文字列が入力されたコマンドをチャットから隠します。

最初のアドオンのあとの次のステップ

次は scripted weapon を追加する

次は scripted weapon を追加します。武器は lua/weapons/ に置くので、エージェントにそこへ 1 つのファイルを作らせ、設定した各フィールドを説明してもらいます。たとえば、手動式の大砲と迫撃砲のモッドは、scripted weapon にも scripted entity にもでき、その挙動は普通の言葉で説明します。エージェントは新しいファイルに write_file、クラス名の出現箇所を示すのに grep、テストコマンドに Shell を使います。Plan only モードなら、保存の前にすべてのファイルを一覧にします。そのあと gm_flatgrass でスポーンし、コンソールのエラーを読みます。

アドオンを公開してプレイヤーに配布する

プレイヤーはあなたの PC ではなく、サーバーからアドオンをダウンロードします。モッドを手動で全部インストールしてもらう手間を省く手軽な方法が、Workshop コレクション、またはサーバーの Lua ファイルに resource.AddWorkshop の行を書くことです。resource.AddWorkshop は公開済みアイテムの ID を取るので、自作のアドオンを先に Workshop に公開しておく必要があります。公開してよいコンテンツだけを公開してください。エージェントに edit_file で行を追加させ、diff を確認します。GMod のテストサーバーでプレイヤーに Workshop アドオンがダウンロードされないときは、まず resource.AddWorkshop を grep で探します。そのあとサーバーを再起動し、プレイヤーとして参加してダウンロードを確かめます。

Windows 版 Codelab Station

最初のアドオンを作る

Codelab Station をダウンロード ↗