このページは整備中です.有識者の方は編集にご協力いただけると幸いです.

[編集]はじめに

Simutrans-Squirrel-APIリファレンス

Simutransでは,Squirrel(すくわーる)というスクリプト言語を用いてAIプレイヤー,シナリオ,ツールを記述することができます.

Squirrelの言語仕様については以下が参考になります.
Squirrel本家
Squirrel 3.0 Reference Manual (Squirrel本家)
Squirrel 2.1 リファレンスマニュアル

[編集]AIプレイヤー

AI interface

[編集]シナリオ

設定ファイル/シナリオを参照してください.

[編集]ツール

[編集]呼び出しかた

スクリプトツールの動作には,simutrans/script/にtool_base.nutが必要です.standard 122.0以降に同梱されています.ココから単体でダウンロードすることもできます.

スクリプトツールは,以下2通りの呼び方で呼び出せます.

  • dialog_tool[34](スクリプトツールの読込)を使う ... pakXXX/tool/下にあるスクリプトツールの一覧が表示されます.アイコンやmenuconfの設定がされていないツールも呼び出し可能です.
  • メニューバーでアイコンを選択する ... 予めdescription.tabでアイコンを設定し,menuconfの設定が必要です.

[編集]必要なファイル

スクリプトツールには,以下の2つのファイルが必要です.

  • tool.nut ... Squirrelコード本体
  • description.tab ... 設定ファイル(plain text)

ツールの名前を「my_tool」とするとき,2つのファイルはともに,

pak-something/tool/mytool/

に配置します.

toolディレクトリにはpakファイルは配置できません.pakファイルを配置できるのは

pak-something/

ディレクトリ直下のみです.

[編集]description.tab

description.tabは,ツールのタイトルやタイプなどを定義するtabファイルです.

titleName of tool to be shown in tool selection dialog
typeone_click or two_click
tooltipツールバーのアイコンに表示される説明文
restart0のとき,メニューバーから呼び出されたツールの場合はツールを終了しても変数の状態が保持されます.dialog_tool[34]から呼び出された場合はこの値に関わらず毎回変数の状態がリセットされます.
menuParameter that can be used to load tools with menuconf.tab
iconName of cursor object (loaded from some pak-file), used images: 0 = cursor, 1 = icon, 2 = marker image

description.tabの例

title=my_tool
type=one_click
tooltip=A scripting tool for testing
restart=0
menu=my-tools
icon=one_click_test

この場合,menuconf.tabで

toolbar[X][Y]=scripts(my-tools)

(X,Yは適当な数字)のように,menuパラメータの値を指定することでツールバーにスクリプトツールを表示させることができます.スクリプトツールをメニューバーに出すにはiconを正しく指定することが必要です.

icon=one_click_test

となっているので,pak-something/直下のcursor.one_click_test.pakがアイコン・カーソル画像のpakとして使われます.

[編集]tool.nut

Tool interface
Tool only functions

1クリックツールの場合は

  • bool init (player_x pl) ... ツール起動時に呼ばれる関数
  • bool exit (player_x pl) ... ツール終了時に呼ばれる関数
  • string work (player_x pl, coord3d pos) ... クリックされたときに呼ばれる関数

2クリックツールの場合は

  • bool init (player_x pl)
  • bool exit (player_x pl)
  • string do_work (player_x pl, coord3d start, coord3d end)
  • void mark_tiles (player_x pl, coord3d start, coord3d end)
  • void is_valid_pos (player_x pl, coord3d pos, coord3d start)

を実装します.

一部の関数のみ記述した場合でも動作しますが,ユーザーのsimutrans実行ディレクトリ下にscript/tool_base.nutが配置されていることが必要です.

[編集]その他Tips

スクリプトツールは,ネットワークゲームにおけるpak一致検査の対象外です.ネットワークゲームでもプレイヤーは自由にスクリプトを追加し,実行することができます.

[編集]ツールの試作品を貼るコーナー

スクリプトツールの動作には,simutrans/script/にtool_base.nutが配置されていることが必要です.

tool_base.nutは,standard 122.0以降に同梱されています.ココから単体でダウンロードすることもできます.

[Type]Title/題名Author/作者Date/投稿日
Thumbnail/画像Game Versions/対応Ver.Download/ダウンロード
Comment/コメント
海面浅くするクンひめし2020/10/25
make_sea_shallow_tmb.png122.0〜filemake_sea_shallow.zip
海の深さを浅くして高架などを建てられるようにするスクリプトです.
アイコンやmenuconfのキーなどは設定していないので,スクリプトツール読込ウィンドウ(dialog_tool[34])より呼び出してください.
ワンクリックでタービン型JCTひめし2020/10/25
turbine_jct_tmb.png122.0〜fileturbine_jct.zip
ワンクリックで26x22マスのタービン型JCTを建設するスクリプトです.
tool.nutの8行目,9行目で,地上道路と高架道路のアドオン名を指定してから使用してください.

添付ファイル: fileturbine_jct.zip 7件 [詳細] fileturbine_jct_tmb.png [詳細] filemake_sea_shallow_tmb.png [詳細] filemake_sea_shallow.zip 5件 [詳細]

 
Last-modified: 2020-10-25 (日) 17:35:51