RPG開発

RPGツクール2000/2003 - セーブデータ抽出

[ホーム] > [RPG開発] > [ RPG2000 { 感想 | シナリオ | マップ | アイテム | セーブ | イベント書込 } ]

はじめに

RPGツクール2003/2000 のセーブデータを読み込み、フラグや変数など主要な部分にアクセスできるようにします。

ツクールXPのRGSSから前作RPGのセーブデータを引き継ぎたい時、サイト上でRPGセーブデータを扱うCGIを運営したいときなどにお使い下さい。

RGSSでの使い方

# セーブデータを読み込む
oldsave = Rpg2kSav.new("C:\\RPG\\save01.lsd") 

# データを変数に取り出す
flag  = oldsave.flag   # 1次元配列 / フラグ     [番号, 1~]
var   = oldsave.var    # 1次元配列 / 変数       [番号, 1~]
item  = oldsave.item   # 1次元配列 / アイテム   [番号, 1~]
party = oldsave.party  # 2次元配列 / パーティー [キャラ番号][属性]

battle = oldsave.battle  # 戦闘回数(撃破+中断+逃走)
escape = oldsave.escape  # 逃走回数
money  = oldsave.money   # お金
save   = oldsave.save    # セーブ回数


# -- for RGSS (イベントに埋め込むスクリプト)
# スクリプト・データを Game.exe と同一フォルダに置く場合
filename = "SaveAirG.lsd"
oldsave = Rpg2kSav.new(filename)
p(oldsave)

ファイルを読み込む前に FileTest.exist?(filename) を付けておくと安心です。(いまのところファイルが存在しない場合の動作は未定義...)

CGI にも同様に組み込めます。実際これに似た(ひとさまにお見せできないような古い)ソースを使って、ネフェシエル・ロマカノセーブデータ登録所を運営しています。

注意

セーブデータ登録用CGIをUnixマシン上で稼働させたいなど、Intel系CPUなlittle endianから離れる環境で動かす場合には ‘unpack("l*")’(環境依存 32bit signed int) を ‘unpack("V*")’(little endian 32bit unsigned int) に書き換えるなどの適当な処理をお願いします。

セーブデータの読み込み専用です。書き込みはできません。

ダウンロード

更新履歴

最後に

もともとの目的はセーブデータ登録用CGIでもXPへの利用でもなく、AirRPGやロマカノのセーブデータがテスプレも含めると数百個単位となってしまい手が付けられなくなったから、どのセーブデータがどのシーンのものかの一覧をリストアップするようなものを作ってみたと。

丁度 [sue445さん] のリプレイビュアーのようなものが目的でした。

セーブデータ改造部分インターフェースはここでの公開にあわせて(意図的に)なかったことにしました。

[ホーム] > [RPG開発] > [ RPG2000 { 感想 | シナリオ | マップ | アイテム | セーブ | イベント書込 } ]


Valid XHTML 1.1! Valid CSS!

Hosoyama Naoki / ほっしー
hossy@hossy.info