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

[編集]はじめに

Simutrans-Squirrel-APIリファレンス

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

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

[編集]AIプレイヤー

AI interface

[編集]シナリオ

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

[編集]ツール

[編集][プレイヤー向け] スクリプトツールの導入のしかた

この節は非開発者向けにスクリプトツールの導入方法を説明するものです.

[編集]準備(初回のみ)

  1. 実行ファイルがあるディレクトリから見て,script/tool_base.nutがあることを確認する.(古いバージョンからの継ぎ足し環境では存在しないことがあります.)
  2. pak/config/menuconf.tabで,dialog_tool[34]にキーを割り当てる.例えば,「dialog_tool[34]=,O」と追記する.(一部のメニューバーでは既に設定されています.)

[編集]配布されているツールの導入方法

  1. 配布されているツールをダウンロードし,zipを解凍します.
  2. 解凍してできたフォルダまるごと, pak/tools/ に配置します.

ツールの配置は,Simutrans本体を再起動しなくても反映されます.

[編集]呼び出しかた

スクリプトツールの動作には,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]から呼び出された場合はこの値に関わらず毎回変数の状態がリセットされます.
menuアイコンをツールバーに表示させるための,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として使われます.

[編集]menu項目の命名規則

description.tabのmenu項目は,ツールバー定義に基づいて指定してください.
例えば,地上線路を建設するスクリプトであれば,地上線路アドオンの付近にアドオンを表示したいので,

menu=ways(2,0)

と記述してください.

鉄道用駅舎を建設するスクリプトであれば,

menu=buildings(34,2)

となるでしょう.

スロープツールに関連したスクリプトは,

menu=slope

を用いてください.

ツールバー定義の書式は, 設定ファイル/menuconf.tab#q56b1334にあります.

scriptツール対応のmenuconf.tabを作るときは,各ツールバー定義に対応したスクリプトツールの配置を定義してください.例えば,道路アドオンのツールバーでは,下のように,アドオン属性に対応したscript配置を定義します.

toolbar[3][0]=general_tool[17],27,q,1 #Remove Way
toolbar[3][1]=ways(1,0)
toolbar[3][2]=scripts(ways(1,0))
toolbar[3][3]=ways(1,1)
toolbar[3][4]=scripts(ways(1,1))
toolbar[3][5]=general_tool[14],,s,1

スロープツールのツールバーでは,下のように記述してスクリプトを呼び出してください.

toolbar[1][0]=scripts(slope)

[編集]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/11/28 第二版に更新
make_sea_shallow_tmb.png122.0〜filemake_sea_shallow.zip
海の深さを浅くして高架などを建てられるようにするスクリプトです.
スクリプト対応のmenuconf.tabを導入している場合,スロープツールとしてアイコンが表示されます.
ワンクリックでタービン型JCTひめし2020/10/25
turbine_jct_tmb.png122.0〜fileturbine_jct.zip
ワンクリックで26x22マスのタービン型JCTを建設するスクリプトです.
tool.nutの8行目,9行目で,地上道路と高架道路のアドオン名を指定してから使用してください.
ひめしツールキットひめし2020/11/8
tmb_hm_toolkit.png122.0〜filehm_toolkit_v1.zip
線路や駅舎などをワンクリックで建設するツールを簡単に書けるようにしたライブラリです.
らくらく景観線路ひめし2020/11/17
tmb_rakuraku_keikan.png122.0〜filerakuraku_keikan_senro.zip
線路のFront / Backを手動で切り替えることなく上の画像のように景観線路を建設できるツールです.
tool.nutの2行目と3行目で,景観線路のアドオン名を指定してから使用してください.
ワンクリック国鉄型配線きたすみなるみん2020/11/28
scr_KSN-script_JNR-style-station_set01.png122.01〜fileKSN-script_JNR-style-station_set01(v10).zip
国鉄型配線をワンクリックで建設するスクリプトです。
本スクリプトは ひめしツールキット v1 を使用して作成しております。ひめし様に感謝申し上げます。

添付ファイル: filemake_sea_shallow.zip 11件 [詳細] filescr_KSN-script_JNR-style-station_set01.png 1件 [詳細] fileKSN-script_JNR-style-station_set01(v10).zip 6件 [詳細] filetmb_rakuraku_keikan.png 1件 [詳細] filerakuraku_keikan_senro.zip 27件 [詳細] filetmb_hm_toolkit.png 1件 [詳細] filehm_toolkit_v1.zip 22件 [詳細] fileturbine_jct.zip 24件 [詳細] fileturbine_jct_tmb.png 1件 [詳細] filemake_sea_shallow_tmb.png 1件 [詳細]

 
Last-modified: 2020-11-28 (土) 22:49:16