書く前に読む
list_dir、glob、read_file、grep が先にアドオンを調べるので、編集はフォルダーの実際の中身から始まります。
GMod gamemode は、情報ファイルと、init.lua、cl_init.lua、shared.lua を含む gamemode/ サブフォルダーを持つフォルダーです。Codelab Station はそのフォルダーを読み、指定した Lua を編集し、Ask first モードでは承認の前に diff を表示します。ゲームの外で動きます。すべての操作は、実際の結果付きのカードとして表示されます。
list_dir、glob、read_file、grep が先にアドオンを調べるので、編集はフォルダーの実際の中身から始まります。
edit_file は diff を表示し、write_file は新しいファイルを作成します。Ask first は変更のたびに止まります。
複数のアドオンを 1 つのフォルダーにまとめる作業には、list_dir、grep、move_file、そして確認する diff を使います。
すべての操作は、実際の結果付きのカードとしてチャットに表示されます。この実行では、自作のアドオンに crate entity のフォルダーを作成し、そのあと確認します。カードごとに承認か拒否を選びます。
lua/entities/**一致 0 件lua/entities/crate/shared.lua保存しましたlua/entities/crate/init.lua保存しましたlua/entities/crate/cl_init.lua保存しましたENT.Spawnable一致 1 件your test commandexit 0Plan only モードで始め、scripted entity(たとえばプレイヤーがスポーンできる箱)を説明します。エージェントは list_dir でアドオンを読み、lua/entities/ の下に書く予定のファイルを一覧にします。Plan only は何も書きません。Ask first に切り替えると、write_file が shared.lua、init.lua、cl_init.lua をカードごとに作成します。箱のモデルが表示されないときは、ゲームがアドオンのモデルを見つけられていない可能性があります。glob で models フォルダーを一覧にし、そのパスを Lua のモデルパスと比べます。まず計画するこの手順は、マップ全体に敵をスポーンするモッドのような大きなアイデアにも向いています。diff を 1 つずつ確認し、gm_construct を読み込んでテストします。
gamemode は garrysmod/gamemodes にあるフォルダーで、情報テキストファイルと、init.lua、cl_init.lua、shared.lua を含む gamemode/ サブフォルダーを持ちます。エージェントにこの構成を作らせ、自分のルールが Sandbox の上に成り立つよう DeriveGamemode("sandbox") を追加させます。ファイルには make_dir と write_file、gamemode とマップを起動パラメーターにした起動スクリプトには Shell を使います。Lua のエラーはゲームのコンソールに出て、ocr はスクリーンショットからそのエラーを読み取れます。Ask first はオンのままにします。diff を毎回読み、gm_flatgrass でテストします。
Codelab Station はゲームのプラグインではなく、ゲームクライアントには決して触れません。他のサーバーは対象外です。自分のものではないプレイヤーやアカウントも対象外で、コードが正しいことを保証することもできません。そのため、すべての変更をテストし、すべての diff を自分で読んでください。