//cache
[[アドオン開発]]
あちこちに分散しているmakeobjに関する記述を整理してリファレンスを作成しようという試み。まだコンテンツは未完成です。
#contents
RIGHT:
&size(10){''更新履歴''};
&size(10){初版。ぼちぼちと 2010/05/01};
**makeobjの入手 [#k57da0d8]
[[SourceForge:makeobj]]からWindows,Linux,BeOS版のコンパイル済みmakeobjの実行ファイルがダウンロードできます。
また、[[国際フォーラムのsimutransダウンロードページ>https://forum.simutrans.com/index.php/board,3.0.html]]にて、各バージョンに対応した実行ファイルが該当するバージョンのスレッドにリンクが貼られています。
**makeobjの実行 [#dbc7696b]
makeobjはCUIツールです。コマンドプロンプトなどのCUIシェルから使用します。
makeobjをpathの通った場所におくか、makeobjのあるフォルダで実行します。
Linuxの場合は「./makeobj」と[./]が必要ですが、Windowsでは単に「makeobj」です。
 &imgfolder(16/page_go.png); [[makeobj.exeを使ってみよう>アドオン開発/アドオンの作り方#f276e6e1]]
**コマンドラインオプション [#w89ac0c5]
オプションは大文字小文字を区別しません。

***pak[タイルサイズ] [#jd34ecd6]
:説明|datファイルとpng画像ファイルからpakファイルを作成します。
タイルサイズには16から32767までのサイズを指定できます(ver60.2、120.4.1相当)。
タイルサイズを省略して単にpakとした場合には、タイルサイズ64として扱われます。
:構文|makeobj pak <pakファイル名> <datファイル名> [<datファイル名> ...]
makeobj pak128 <pakファイル名> <datファイル名> [<datファイル名> ...]
:例1|
 makeobj pak
 makeobj pak ./ ./
フォルダ内のすべてのdatファイルを読み込み、個々のpakファイルを作成します。作成されるファイル名は「menu.WindowSkin.pak」のように「オブジェクトの種類.オブジェクト名.pak」になります。
pakオプションは最もよく使われるため、ファイル名を省略または「./」で代用できます。Windowsでもバックスラッシュではなく「./」です。
ファイル名を省略した場合は、オブジェクトはそれぞれ個別のpakファイルになります。
:例2|
 makeobj pak new.pak
フォルダ内のすべてのdatファイルを読み込み、new.pakを作成します。複数のオブジェクトがある場合にはpakライブラリファイルになります。
:例3|
 makeobj pak ./ sample.dat
sample.datを読み込み、個々のpakファイルを作成します。この場合最初の「./」は省略できません。
:例4|
 makeobj pak temp.pak ./sample.dat
sample.datを読み込み、temp.pakを作成します。
***merge [#h677bc19]
:説明|複数のpakファイルを単一のpakライブラリファイルに結合します。
:構文|makeobj merge <pakライブラリファイル名> <pakファイル名> [<pakファイル名> ...]
:例1|
 makeobj merge new.pak a.pak b.pak c.pak
a.pak b.pak c.pakの3つのpakファイルを結合し、new.pakを作成します。
:例2|
 makeobj merge new.pak *.pak
フォルダ内のすべてのpakファイルを結合し、new.pakを作成します。

#div(start,noteblue)
''ground.Outside.pak''というpakファイルは特別なファイルですので、他のpakと結合したり、名前を変更してはいけません。
#div(end)
***extract [#y5671432]
:説明|pakライブラリファイルを個々のpakファイルに分割します。
#div(start,noteyellow,margin:0)
一部に完全には分割できないpakライブラリファイルがあります。
オブジェクト名にコントロールコードや、ファイル名として使用できない文字(/,\,*,?など)が含まれている場合分割処理が継続できません。また、古いバージョンの橋が含まれている場合にも分割処理が継続できません。
#div(end)
:構文|makeobj extract <pakライブラリファイル名>
:例|
:結果|
   found 2 files to extract
 
   writing 'building.HQ1.pak' ... 
   writing 'building.HQ2.pak' ... 
***list [#h5084826]
:説明|pakライブラリファイルに含まれているpakオブジェクト名の一覧を表示します。
:構文|makeobj list <pakファイル名> [<pakファイル名> ...]
:例|
 makeobj list building.hq.all.pak
building.hq.all.pakファイル内のpakオブジェクト名の一覧を表示します。
:結果|
 Contents of file building.hq.all.pak (pak version 1001):
 type             name
 ---------------- ------------------------------
 building         HQ1
 building         HQ2
***dump [#z3222f60]
:説明|pakファイルまたはpakライブラリファイル内のノード情報を表示します。
:構文|makeobj dump <pakファイル名> [<pakファイル名> ...]
:例|
 makeobj dump building.IND_00_02.pak
building.IND_00_02.pakファイル内のノード情報を表示します。
:結果|
 File building.IND_00_02.pak (version 1001):
    ROOT-node (root) 0 bytes
       BUIL-node (building) 26 bytes
          TEXT-node (text) 10 bytes 'IND_00_02'
          TEXT-node (text) 8 bytes 'Patrick'
          TILE-node (tile) 7 bytes
             IMG2-node (imagelist2d) 4 bytes
                IMG1-node (imagelist) 4 bytes
                    IMG-node (image) 9490 bytes
             IMG2-node (imagelist2d) 4 bytes
***capabilities [#aa75fe08]
:説明|このmakeobjが読み書き可能なオブジェクトの種類を表示します。
:構文|makeobj capabilities
:結果|
 This program can pack the following object types (pak version 1001) :
    bridge
    building
    citycar
    crossing
    cursor
 (...以下省略)
***quiet [#h34b6f69]
:説明|makeobjのバージョン情報、著作権情報を標準出力に出力しません。&br;このオプションを使用する場合は、必ず最初に指定しなければいけません。
:構文|
:例|
 makeobj quiet pak
フォルダ内のすべてのdatファイルを読み込み、個々のpakファイルを作成します。
**トラブルシューティング [#y8bb1920]
:&pre(read_png: Invalid image size.);|画像のキャンバスサイズがpakサイズの倍数ではありません。
キャンバスサイズはpak64の場合は64,128,192,256...、pak128の場合は128,256,384,512...のようにpakサイズの倍数にする必要があります。
**makeobjのバージョン履歴 [#u6b72a7f]

**makeobjの素早い使い方 [#z988fef2]
***makeobjをソースと同じフォルダに置く [#x03ce379]
makeobjを、pakのソースであるdatとpngの入ったフォルダにコピーして置いてしまいます。makeobj自体は小さいプログラムなので容量はあまり気になりません。フォルダ内でファイルを選択していない状態で、Shift+右クリックをすると、メニューに「コマンド ウィンドウをここで開く」が表示されます。これを使うとコマンドプロンプトをすぐそのフォルダで開くことができるので、直接makeobjのコマンドを入力して、長い相対/絶対パスの入力も必要なく楽々pakが作成できます。
***パスを通す [#qc1c8362]
上記の応用編です。makeobjをWindows標準のコマンドであるcdやdirと同じように、コマンドプロンプト上ですぐ呼び出せるようにしてしまいます。設定にはやや高度な操作が必要ですが、一度設定すれば事前の準備なくどこでもmakeobjの実行が可能になります。ダウンロードしたMakeobjを、パスを通すためのフォルダに入れて、そこにパスを通します(他のファイルにもパスが通るのを避けるため、専用のフォルダが望ましいです)。パスの通し方は、こちらのサイトなどを参照してください。http://next.matrix.jp/config-path-win7.html http://pocketstudio.jp/win/xp/path.html
***バッチファイルを作る [#d9d08759]
バッチファイルの中身はテキストで、コマンドプロンプトで使用するのと同様のコマンドが記述されています。ダブルクリックすることで記述されたコマンドを実行することができます。バッチファイル自体をコピーして少し書き換えれば、コマンドを覚える必要もなく使いまわしも簡単です。基本的にはmakeobjをコマンドプロンプトで使う際と同じコマンドを、テキストエディタで入力し、拡張子を.batで保存すれば使えます。