寝ても覚めてもゲーム製作 - ウェブログ-ログ

ニコニコのブロマガで書いてたやつの保守。更新予定ほぼなし。

HSP3.4のDPMファイルをもっと楽して作る(自動化してゆく)


こんにちは。
dpmファイルを手動で作るの面倒ですよね?

暗号化キーを入力して
ファイル名決めて
いちいちフォルダごとに手動で指定して……。

フォルダが増えれば増えるほど地獄ですよ。

じゃあ
自作の暗号化→bsave bloadからの復号化
というのも悪くはないですが
めんどくさいなあー!

……ところでこれはどうやって暗号化してるんでしょうね?


ということで今回は
サンプルファイルであるmkdpm.hspを利用して
ある程度自動化してゆこうという話です

親切な人なら作ったファイルを投げてくれるのでしょうが
そこまでするのが正直面倒くさかった。

ではmkdpm.hspを開いてください。
HSPのサンプルフォルダに入っているので
直接開いてもいいですし

エディタでF1を押すと出てくるHSPDocument Libraryで
検索してもよいでしょう

暗号化をしているのは以下の部分です
*mkdpm
sname = "packfile" chdir fname dirlist s1,"*.*",0 notesel s1 repeat notemax noteget ff,cnt hed="" if enc : hed="+" if ff="packfile" : hed=";" if getpath(ff,2)=".dpm" : hed=";" if hed!="" : noteadd hed+ff,cnt,1 loop noteadd "; packfile generated by mkpack",0 notesave sname ; テキストファイルをセーブ title "Building DPM..." hsc_ini "" pack_ini dname+".dpm" pack_make 1,deckey title "Complete." stop
(mkpack.hspより引用)

この部分をそのまま使うと良いでしょう。
(stopはreturnに書き換えるとかしようね。)
しかし、これだけでは使えない命令があります

ちゃんとインクルード部分もコピーしておきましょう

ちなみに
hsc_ini, pack_ini, pack_makeが "hspcpm.as"です
"hspext.as"はdirlistが内蔵命令じゃなかった頃の名残でしょうか?
一応インクルードしておきましょう。

さて、これであとは変数をこちらで各種代入してあげれば
自動化が完成するわけです。

箇条書きしておきますね。
  1. fname = "" ;ファイルネーム
  2. dname = "";ディレクトリ(フォルダ)ネーム
  3. enc = 1 ;暗号化するかどうか(1で暗号化,0でしない)
  4. deckey = 0 ;暗号化キー(0で標準キー,その他ならばその番号で)

もう一度張っておきますが
ちゃんと一つ一つ対応してしているのが分かると思います。




あとは配列変数を作って
ループ命令でひとつづつ生成するだけです。

おつかれさまでした。

まあHSPでそんな膨大な量作る想定では
ないのでしょうけどね。

HSPで無理やりやってゆく人向けですね。