[編集]はじめに

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
cursor_areaカーソルサイズ(x,y).サイズは(1,1)以上. r9506以降.
cursor_offsetカーソル中心のオフセット(x,y).r9506以降.

description.tabの例(=の前後に空白文字がないことに注意)

title=my_tool
type=one_click
tooltip=A scripting tool for testing
restart=0
menu=my-tools
icon=one_click_test
cursor_area=3,4
cursor_offset=1,2

この場合,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項目の命名規則

以下の命名規則は、nightly版r9534及びOTRPv29_4以降に限り正常に表示されます。122.0及びOTRPv29_3以前では、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一致検査の対象外です.ネットワークゲームでもプレイヤーは自由にスクリプトを追加し,実行することができます.
スクリプトツールまでのパスに全角文字が入っていると動かない可能性があるので注意してください。

その他のコーディング上のノウハウについてはスクリプト開発/Tips集を参照してください.

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

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

tool_base.nutは,standard 122.0以降に同梱されています.ココから単体でダウンロードすることもできます.
nighlty r10077で更新されています。継ぎ足し環境の場合、r10077以降の環境で使用する際は更新が必要です。

[Type]Title/題名Author/作者Date/投稿日
Thumbnail/画像Game Versions/対応Ver.Download/ダウンロード
Comment/コメント
海面浅くするクンひめし2021/10/3 第三版に更新
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行目で,地上道路と高架道路のアドオン名を指定してから使用してください.
ひめしツールキットひめし2021/4/14 v3に更新
tmb_hm_toolkit.png122.0〜ダウンロードページ;
線路や駅舎などをワンクリックで建設するツールを簡単に書けるようにしたライブラリです.
らくらく景観線路ひめし2020/11/17
tmb_rakuraku_keikan.png122.0〜ダウンロードページ
線路のFront / Backを手動で切り替えることなく上の画像のように景観線路を建設できるツールです.
ワンクリック国鉄型配線きたすみなるみん2020/11/28
scr_KSN-script_JNR-style-station_set01.png122.01〜fileKSN-script_JNR-style-station_set01(v10).zip
国鉄型配線をワンクリックで建設するスクリプトです。
本スクリプトは ひめしツールキット v1 を使用して作成しております。ひめし様に感謝申し上げます。
トンネル入口スロープツール下市2020/12/05
2021/12/23 更新
tunnel_entrance_slope.png122.0〜
OTRPv30.1〜
tunnel_entrance_slope_v4.1
tunnel_entrance_slope_v5.0
tile_height=8のpakset(pak.nipponなど)で平行な地平からトンネル接続に必要なスロープを作るスクリプトです。
v5以降はnightly版かOTRPv30.1以降のみ実行可能です。各自の環境に合わせて選択してください。
人口らくらく増やすくん下市2020/12/05
2021/07/26 v2.1に更新
increase_population.jpg122.0〜increase_population
ワンクリックで指定した人口まで増やします。
v2.0から人口の指定方法が変更されています。詳しくはreadmeをご確認ください。
ワンクリック駅アプローチ配線セット(分岐方向指定タイプ景観線路用)きたすみなるみん2021/01/28
最終更新 2021/03/06
scr_KSN-script_STA-ENT-forETrail_set001.png122.01〜fileKSN-script_STA-ENT-forETrail_set001_v10.zip
駅前後の配線をワンクリックで建設するスクリプトです。景観線路各種にも対応します。
本スクリプトは ひめしツールキット v2 を使用して作成しております。ひめし様に感謝申し上げます。
駅統計取得ツール大和階梯最終更新 2021/05/23
station_statistics_thumbnail.pngOTRP29.5〜/122.0〜file駅統計取得ツール.zip
マップ内の駅の乗降客者数ランキング等の各種統計情報を取得します。テキストファイル出力機能はOTRP29.5〜のみ対応です。詳しくはreadmeをご覧ください。

[編集]AIプレーヤー

[Type]Title/題名Author/作者Date/投稿日
Thumbnail/画像Game Versions/対応Ver.Download/ダウンロード
Comment/コメント
AIプレーヤー α版koa2022/05/12
画像なし123.0.1~filesqai_koa.zip
デフォのAIは2都市間の路線しか作らない、公共駅があっても使わないなどの
問題があります.そこで、このAIプレーヤーは以下の特徴を持たせました.

・複数都市を一度に結ぶ路線を作成
・公共駅があれば、積極的に活用
・タイル上の隣接駅が公共駅になれば、自バス停も公共化
・経営が順調なら町を誘致

現時点でバスしか動かすことができません.
また、α版ですのでバグも多いです.
バグ報告は日本語フォーラムを使用ください.

添付ファイル: filesqai_koa.zip 152件 [詳細] filemake_sea_shallow.zip 504件 [詳細] filestation_statistics_thumbnail.png 56件 [詳細] file駅統計取得ツール.zip 258件 [詳細] fileKSN-script_STA-ENT-forETrail_set001_v10.zip 232件 [詳細] filescr_KSN-script_STA-ENT-forETrail_set001.png 59件 [詳細] fileKSN-script_STA-ENT-forETrail_set001_v01beta.zip 68件 [詳細] filehm_toolkit_v2.zip 115件 [詳細] fileincrease_population.jpg 57件 [詳細] fileincrease_population.zip 87件 [詳細] filetunnel_entrance_slope.png 54件 [詳細] filetunnel_entrance_slope.zip 74件 [詳細] filescr_KSN-script_JNR-style-station_set01.png 65件 [詳細] fileKSN-script_JNR-style-station_set01(v10).zip 246件 [詳細] filetmb_rakuraku_keikan.png 65件 [詳細] filerakuraku_keikan_senro.zip 100件 [詳細] filetmb_hm_toolkit.png 55件 [詳細] filehm_toolkit_v1.zip 118件 [詳細] fileturbine_jct.zip 255件 [詳細] fileturbine_jct_tmb.png 60件 [詳細] filemake_sea_shallow_tmb.png 61件 [詳細]

 
Last-modified: 2022-05-12 (木) 22:07:51