●魂響~円環の絆~ コンバータ for ONScripter
ONScripter用に 『魂響~円環の絆~』 (c)あかべぇそふとつぅ様 のシナリオを劣化移植するスクリプト
7/29)
tama_20070729b.rar
a:さっくりアイキャッチ修正だけ
b:本筋をやらずにエフェクト強化&修正。あともう少し
詳細はいずれ…
8/3)
7/26発売『魂響~円環の絆~』 のONS用コンバータです。遅ればせながら前書き。
一応同社『悠久の少年少女』用スクリプトがベースなのですが、如何せん現状一番古いもののため
全面的リライト…とはいかずとも、かなり強引に組み上げています。
悠久コンバータ自体、今見ると無茶な処理をしていたこともあって、結果注釈もなく、
1000行を越えるすぱげってぃスクリプトになってしまいました。
これで「エラーは自分で修正汁」はもはや犯罪的でありましょうや。
なのであまり参考にして頂いても…orz
いつになく早いリリースに見えますが、コマンドバトル?を実装してないので通しプレイが出来なかったり。
この週末に少し弄ってなんとかしたいと思います。
tama_20070729c.rar
とりあえず選択肢に立ち絵が被る箇所だけプチ修正。
8/5)
タイトルメニューとコマンドバトルを実装。
これである程度の外面は整ったかな?
基本的にみんなそうなんですが、以前のセーブデータは多分使えないと思います…
tama_20070805a.rar
進めている際にラベルが見つからず落ちたので修正。
って、そこのラベルみたら新シナリオみたい。魂響初プレイなのに…うーん、このまま進めるべきか…
8/19)
拡大処理をdrawbg2からdrawsp2に変更。
しかし現状のONSでは忠実な再現がやはり難しいようです。
拡大率を補正しても、補正前の画面サイズからはみ出る部分は描画されなくて手詰まり状態。
ある程度の再現性と見栄えを有してればいいかなー、と妥協してひとまずの終了へ。
tama_20070805b.rar
9/10)
ONScripter更新によって、上記描画不具合が解消。
計算を正常にさせたものをUPします。
tama_20070910.rar
コメント
製作お疲れ様です
質問なのですが、初期の魂響では、使用できますか?
Posted by: $$こと埋葬機関 | 2007年07月30日 01:42
ありがとうございます。
どうでしょう?試して頂けると嬉しいです
初期だとむしろ車輪の方が使えそうな気もしますね
Posted by: ひとつもり | 2007年07月31日 00:23
あまりの早いリリースに驚きました。
ありがとうございました。
魂響~円環の絆~のPSPでの起動を確認しました。アイキャッチの修正もうまくいっております。率直にすごい出来だと感心しました。
ただ、変換したばかりの状態だと、動きませんでした。というのも、0.txtのdefsub命令でのbgm関連の設定に問題があるらしく、実質、bgm命令が無効になっていて、エラー終了します。
そこで、0.txtの134行めと、324行目の
;defsub bgm
;bgm "bgm/bgm_f_03b.ogg"
をコメント化することで、動作するようになりました。
ちなみに、タイトルも表示されないで、いきなり本編が始まりますが、これが正しい状態なのでしょうか?
あと、画像ですが、PNGでは正常に表示されなかったので、JPGで表示させています。
今まで、PNGを使ったことがなかったのですが、先日挑戦したクライミライでもうまく表示できませんでした。PNGを使う上で、何か特殊な設定が必要なのでしょうか?出来ればアドバイスをいただけると助かります。
JPGのままだと、透過率を調整できないため、メニューウィンドウ等の表示の具合が悪いので・・・
あと、おまけモードには対応していないという話ですが、このゲームの場合、エンディング後にアナザーストーリーを楽しめるはずなので、この部分だけでも、将来実装していただけると、ありがたいのですが・・・
あと、コンバータのファイルを見る限り、かなり吉里吉里に対して、汎用性が高そうに思えたため、思わず、こんな娘がいたら僕はもう!も同様に変換を試みましたが、さすがに無理でした。
かなりいい具合で変換されてたんですけどね・・・
*chr_back、*chr_shout、*setdellay、*simg、、*strans、*chr、*sq以外のルーチンでは、ファイル名の変換もうまくいっていたので、その辺の表示命令をコメント化してみましたが、駄目でした。
・・無謀な試みもいいとこなんですけど、ここまで吉里吉里の再現度が高いと、汎用性を試してみたくなりまして・・・すみません。
あと、動作報告に関しては、後でPSP-君にもできることにも報告をしようとも思います。ご了承ください。
Posted by: HARU | 2007年07月31日 19:07
おお、早速の詳細な報告大変ありがとうございます。
時間&体力&気力切れで割と未完成だったりします…ということすら書けずに申し訳ないです。
早晩、タイトルメニューを付けてアナザーストーリー含めた通しプレイが出来る様にしますので、
是非とも宜しくお願いします。
さてエラーの件、これはおそらく /alter フォルダ内の macro.ks なども一緒に変換してしまっているためだと思います。
/scenario フォルダ以外のものはmacro_battle.ks 以外は使いませんので、
展開時にフォルダ構成を保持出来る物でおためし下さい。
PNGの方はしっかり確認していませんでしたが、イベント・背景CGなどには透過情報が付いていないため
ONSの仕様だとNスクのアルファブレンド画像として扱われて、結果半分且つ透け透けとなってしまいます。
ということで全不透明の情報を付けてくれる、FastStone ImageViewerでリサイズすることをお勧めします。
JPGの際は七次元さんのツールなどが同様の効果を持っているので上手くいったのかも?
この辺りも説明不足でしたねm(_ _)m
ちなみに、テキストウィンドウの透過率は画像ファイル自体を弄ってくださいませ
そして吉里吉里汎用…せめて各社ごとには動く様にはしたいなぁと思ったり思わなかったり
ただ前述のように、あかべぇの macro.ks には手を付けていないので現状難しそうです
こん僕は時期的に期待していたのに…
ちなみに FlyingShine の方は実験的に全ファイルを読み込んでいます。
SWAN SONG あたりが動くのではないか!?と思うのですが如何せん売ってない&高杉なのでー
君でもできること様への報告も大変助かりました。
今後予想されるバージョンアップ(という名のケアレスミス修正)にもお付き合い頂けると嬉しいです。
Posted by: ひとつもり | 2007年07月31日 22:19
バージョンアップ版の動作を確認しました。
確実に進化しているようですね・・・ありがとうございました。
PNGの件は、ひとつもりさんのご指摘の通りでした。質問した甲斐がありました。ありがとうございます。
・・・ここで、ひとつ朗報があります。
先日の汎用性のテストの続きですが、こんな娘が・・だけでなく、ほかのソフトでも試したのですが、ほとんどのソフトで起動が成功しました。
ただ、完全に動いているものは1本もないのですが・・ただ、やはりこのコンバータは、かなり完成度が高いと、実感しております。もう少しで、かなりのソフトが動かせるようになるかもしれません。
それでは、動作報告です。
・こんな娘がいたら、僕はもう・・・
起動方法
・SCINARIOフォルダ内の魂響と同様に、ひとつにまとめる。ただし、ETCフォルダは移動させない。その後、tama.plを起動。
・0.txtの137行目を、
goto *L_title→goto *L_001_001に変更。
問題点
1.txtのvoice関連の変換が行われていないため、音声が再生されない。
2.各キャラの立ち絵の表示位置がめちゃめちゃ。
3.amsp命令の数値の変換が正確に行われていないため、すぐにエラー終了する。
例 amsp 9,%4,%5,%6
amsp 9,180,*,255
・・・・とこんな感じです。
amsp命令の対応が正確に行われれば、音声なしの状態ではありますが、いい感じで動きそうです。
・こんな魂響があったら、僕はもう・・・!!
初回限定特典のこのソフトも動きます。
起動方法
・SCINARIOフォルダ内を、001,002ai、end、kasumi、masaki、matiru、namiのksファイルのみにして、tama.plを起動。
・0.txtの54行目を、
goto *L_title→goto *L_001_001に変更。
問題点
1.txtのvoice関連の変換が行われていないため、音声が再生されない。
2.各キャラの立ち絵の表示位置がめちゃめちゃ。
3.選択肢で選ぶことができずに、勝手に進んでしまう。
・・・恐らく、こんな娘が・・とほぼ同様のプログラムの組み方をしていると思われますので、症状も同様です。
・魂響~陵辱SIDE~
起動方法
・SCINARIOフォルダ内を、story1、story2、story2-a、story2-bのみの状態にして、tama.pl
を起動。
・0.txtの86行目を、
goto *L_title→goto *L_begin_story01_story01に変更。
・1.txt立ち絵のファイルの指定がおかしいので、"image/st_st_"→"image/st_"→に全置換。
問題点
・こんな娘が・・とは真逆で、BGM,SEが再生されず、音声のみが再生される。やはり、1.txtの変換がうまく行っていないのが原因。
このソフトが、今のところ一番うまく動いています。音関係の不具合が他の物と正反対なのが興味深いです。
・その横顔をみつめてしまう~a profile~完全版
これのみ、シナリオ変換が全くできないため、起動不可能です。
・・・・・と、大体こんな感じです。
よろしければ、お役立てください。
もし、改善できそうなものがありましたら、なるべく早急に試してみますので、ご連絡ください。
それでは失礼します。
かなり完成度が高まっています。頑張ってください。
Posted by: HARU | 2007年08月02日 22:01
大量の検証ありがとうございます。
うーん、なかなか細かい命令の揺れがあるようですねぇ
あ、こん魂が動けばこん僕も大丈夫なのかな?
ちょっと見てみよう。
立ち絵の方は『悠久』forONSが640x480仕様なので、その辺がネックかと。
頑張ります
Posted by: ひとつもり | 2007年08月04日 00:51
バージョンアップお疲れ様です。
早速試してみましたが、1.txtが全く生成できてないようです(0バイトのまま)。お手数ですが、対応をお願いします。
・・・あと、初代の魂響では画像ファイルが変換できていないようで、動かせないようです。これは、仕方がないでしょうね・・・・・
・・・話は変わりますが、こん僕で立ち絵がおかしいのは、スプライト関係の座標の割り出しが原因のような気がします。特にY座標がひどいようです。
lsp 9,"image/st_yosihiro_A_se_06_s.jpg",-400,*,0
mov %4,180+(-360-(180))*%9/2000
mov %5,*+(*-(*))*%9/2000
mov %6,255+(255-(255))*%9/2000
・・プログラムに関しては素人ですが、どうみても正常の変換には見えません。こん魂でエラー終了がないのは、スプライト系の移動命令がないためと思われます。
もっとも、所詮は素人の詮索なので、どこまであてになるかわかりませんが・・・
最後は苦言になってしまいましたが、都合が悪ければ、忘れてください。
それでは今回はこれで失礼します。頑張ってください。
Posted by: HARU | 2007年08月05日 14:58
報告ありがとうございます。
1.txt が作成されないのはおそらく macro_battle.ks がないためかと思います。
今回リネームは必要ないのでご確認下さい。
一応エラー文が出るようにしたのですけど、ひょっとして ActivePerl で
直接?実行する際には意味がないのかも
こん僕の方は、こん魂しか手元にないので何とも言えませんが
どうも"*"は現在の座標を表しているようですね。
ということで、スクリプト的には一応正常動作です。
いずれ"*"を実際の座標に置き換えて対応しようと思います。
あと現状、他作品での立ち絵表示は多分 0.txt の defsub を弄らない限り正常にならないので…
Posted by: ひとつもり | 2007年08月05日 19:00
コンバーター作成お疲れ様です。
macro_battle.ks はリネームせずに入れ、
最新のコンバーターを使用しましたが、
1.txtがうまく生成出来ませんでした。
直接実行した場合は0バイトの1.txtが作成
され、
コマンドプロンプトから実行した際には、
380Kバイトぐらいの1,txtと普通に0.txtが
作成されました。)
また、まったく関係ないかもしれませんが、
以前は問題なく使用できたコンバーター
tama_20070729cも
1.txtが作成できなくなってしまいました。
(こちらは00.ksにリネームしました。)
単にこちらの変換等のミスかもしれません…
なにか解決法などアドバイスを頂ければと
思います。
宜しくお願いします。
Posted by: モンチャック | 2007年08月05日 22:37
上記の件、自己解決しました。
違うツールを使用し、データを抽出した所、
ちゃんと1.txtが作成されました。
お騒がせしました。
Posted by: モンチャック | 2007年08月06日 09:21
ご連絡ありがとうございます。
1.txtの変換がうまくいかなかったのは、必要なksファイルが無かった為のようです。
コマンドプロンプトからの変換以外では、エラーの報告が無いため、気づきませんでした。
ただ、もうひとつ別の問題が起きました。
・・・立ち上げようとすると、タイトル表示時に、必ずバスエラーが起きて、強制終了します。
1.txtの107886行目の、
print 18,200,"image/rule_title2.png"
が原因のようです。コメント化で先に進めました。
・・・また話が変わりますが、こん僕でスプライトの移動関係で、落ちるわけではないのなら、原因は別にある、ということになります。
学園に向かう通学路まで軽快にやってきた。\
ld c,"image/st_yosihiro_A_se_05_s.jpg",2
saveoff
resettimer
for %1=1 to 999999
gettimer %9
if %9>=2000 break
mov %4,300+(-350-(300))*%9/2000
mov %5,-200+(*-(-200))*%9/2000
mov %6,255+(255-(255))*%9/2000
amsp 9,%4,%5,%6
print 1
next
amsp 9,-350,*,255
print 1
saveon
csp 9:print 1
「うーっす、透ぅ」\
学園に向かう通学路まで軽快にやってきた。・・というメッセージが出て、立ち絵が表示され(位置はおかしい)、この直後にエラー終了しますので、この中に異常があることになります。心当たりがあれば、教えてください。(breakという処理はあまり見かけませんが・・)
あと、こん魂で、選択肢が選べない・・・というのはもしかしたら少し違うのかも・・実際には選べるのだけれど、選択肢が反転表示されないため、見た目でわからないだけかもしれません。まだはっきりとはしませんが、お役立てください。
出来れば、他の吉里吉里のソフトも試してみたい気もしますが、意外と対応ソフトが無いようですね・・フライングシャインのソフトはあまり持ってないし(ちなみにFateは失敗しました。
x[fffd] does not map to cp932・・というメッセージが出ました。does not map to Unicode・・と出るその横顔を・・とはしょうじょうがちがいますね。)
・・・余計な話ばかりでしたが、円環の絆に関しては良く動いています。ありがとうございました。
Posted by: HARU | 2007年08月07日 05:08
モンチャックさん、無事変換出来た様で何よりです。
HARUさんすみません、言葉が足りてませんでしたね。
そこで落ちるのは"*"が原因です。
意図した通りの変換ではあるのですが、結果としては未対応というか…うーん、微妙。
その辺りは macro.ks を見ながら実装していこうと思います。
また、吉里吉里はKAG標準タグ以外に各種の独自マクロ、そしてtjsでかなり複雑な処理をしています。
同じメーカーの作品ではその辺りが割と流用されていることが多いので
まだ融通が利きますが、他社作品となると標準機能を除いてもう全くの別物です。
特にFateはエフェクトにかなり力を入れているので、そのまま使用するのは無理かと思います。
(とはいえいつか挑戦してみたい気はするのですが)
ただ、今回のエラー自体はおそらく呪文に使われている文字のせいかな?
その横顔~もチェック出来れば何とかなるかもしれません
改めて報告ありがとうございました。
Posted by: ひとつもり | 2007年08月07日 21:41
開発お疲れ様です。
「すぱげってぃスクリプト」ってあたりに反応してしまいました。
久しぶりに修正しようとすると「これなんの処理?」って思い出すほうに時間がかかることが良くあります。
次回は自分のためにもマメにコメント文を入れておこうと思います。
Posted by: ゆす | 2007年08月07日 23:54
ご連絡ありがとうございます。
非常に親切に教えていただき、勉強になります。
・・・Fateに関しては、りざなう氏のコンバータでは私の持っているDVD版ではCRCエラーが起こり、動かせないので、こちらとしても期待したいのはやまやまですが・・やはり先の話になるでしょうね・・・・いつか、機会があれば、お願いします。
それにしても、吉里吉里は奥が深いですね。手持ちの同人ソフトでコンバータを当ててみましたが、駄目でしたが、コメントを読ませていただいた限り、そんなに、簡単なものではない、と実感させられました。大変でしょうが、頑張ってください。・・こちらとしては、気の利いたことはこのぐらいしか言えません。
こん魂では、全てのスプライトの座標が固定で指定されているようなので、例え、座標の数値の変換に成功できたとしても、このソフトで確認できないのが痛いですが、連絡をいただければ、早急に対応いたします。
それ以外の不具合に関しては(音声など)はこん魂で対応できれば、かなりいい感じで動かせそうな気がします。やはりこの作品はパロディだけあって、造りはかなり似ています。
ただ、気がかりなのは、今回の私の身勝手な報告のために、本来の魂響に対しての開発の邪魔になっていたとしたら、申し訳ないと、思っております。他の方も期待している以上、こちらの開発を急がれるべきだと思います。
こん僕に関しては、いつか、でも構いません。そのうち・・・お願いします。こちらも、その間に、ムービー作成などに挑戦してみたいと思います。
それでは、色々とありがとうございます。
頑張ってください。
Posted by: HARU | 2007年08月08日 04:00
>ゆすさん
ああ、同じお悩みを…
やっぱりコメント入れるべきですよねぇ、主に自分のために
>HARUさん
いえいえ、他作品での報告、もの凄く助かっています。
なかなか自分では検証出来ないので…
お陰である程度は課題が見えてきました。
はっきりいつとは言えませんが、じっくり取り組んでみようと思います。
魂響の方にも役立ちますので、全く気にしないで下さい。
Posted by: ひとつもり | 2007年08月08日 22:40
お疲れ様です。
新バージョンでの起動を確認しました。
前バージョンとセーブデータの互換性があるようです。
・・ただ、まだ本格的に動作確認をしていない状況ですので、しばらくは、プレイすることに専念したほうがよさそうですね・・・自分はまだ、修正箇所のところまで行ってませんので。
色々とお気遣いいただき、ありがとうございます。これからも気づいたことを報告させていただきます。有益なものばかりとは限らないかもしれませんが、お役立ていただければ幸いです。
とりあえず、このコンバータに関しては、あかべえそふとつぅ専用と割り切って動作確認をしたほうがよさそうです。その横顔を・・・もシナリオの変換ができるようになれば、何かいい情報が得られるかもしれません。
それでは、今日はこれで失礼します。
頑張ってください。
Posted by: HARU | 2007年08月09日 06:56
お疲れ様です。
おとなしく魂響をテストプレイしようと思ったのですが、結局こん僕関係が気になって、ksファイル等も調べてみたのですが・・・あれこれ調整した結果、こん僕、こん魂、魂響~陵辱サイド~の3本とも、BGM、SE、音声を実装した状態での起動に成功しました。
タイトル未実装、立ち絵関係の不具合も相変わらずですが、選択肢の設定についての不具合も解決したため、最低限のテストプレイは可能です。
実は、こん魂とこん僕では、音声の不具合の状況が微妙に異なるため、自分で調べてみて正解だったようです。
3本とも、起動方法が異なるため、1本ずつ起動方法を書かせていただきます。
・こんな娘がいたら、僕はもう・・・!!
1.tama.plの書き換え
※tama20070729cのtama.plを使用します。
A:209行目を、
}elsif ( $line =~ /^\@vo s=([a-zA-Z_0-9]*)/ ){ から、
}elsif ( $line =~ /^\vo =([a-zA-Z_0-9]*)/ ){
に書き換え。
B:212行目を、
}elsif ( $line =~ /^\[nm t=\"(.*?)\"/ ){ から、
}elsif ( $line =~ /^\@nm t=\"(.*?)\"/ ){
に書き換え。
C:215行目を、
if ( $line =~ / s=([a-zA-Z_0-9]*)\]/){ から、
if ( $line =~ / vo=([a-zA-Z_0-9]*)/ ){
に書き換え。
D:315行目を、
}elsif ( $line =~ /^\@showexlink/ ){ から、
}elsif ( $line =~ /^\@showlink/ ){
に書き換え。
2.上記に書き換えたtama.plで作成された、1.txtの変更。
①"amsp"→";amsp"に全置換。
②"mov"→";mov"に全置換。
③",*,"→",0,"に全置換。
以前からのスプライト表示の関連は、今回は全て無視。無視すると動かないものに関してのみ、*=0として代入。
④"lsp 0,":s/26,26,2;#FFFFFF"→";"に全置換。
⑤"@nm t=”"→";"に全置換。
これは、音声の再現には成功したものの、
dwavestop 0:dwave 0,"voice/onn_0002.ogg"
lsp 0,":s/26,26,2;#FFFFFF女の人",60,370:print 1
@nm t=”女の人” vo=onn_0002\
・・・といった余分なものまで変換されてしまうようになってしまったため、ゴミ取りで行う置換です。ずいぶん大雑把ですが、とりあえず、動作に支障がないので・・・
⑥1874行目を、
lsp 9,"image/.png",-400,0,0から、
slsp 9,"image/t_yosihiro_B_se_02a_l.png",-400,0,0
に書き換え。
メインスクリプト内で、唯一この箇所だけ、書き換えに失敗しているため、修正します。
ちなみに、もとのksファイルでは、
@cutin storage="st_yosihiro_B_se_02a_l" layer=3 x=-400 y=* path=(180,*,255) time=800 nowait=true opacity=255
となっておりますが、心当たりがありますでしょうか?
・・・立ち絵はおかしいままですが、とりあえず、これで遊べる状態にはなりました。あとで、ひとつもりさんの処理を参考にして、タイトルを実装したいところですが・・・
if %s_ayana_end || %s_maho_end || %s_saki_end || %s_nagisa_end || %s_sino_end || %s_asuka_end == 1 if %s_ayana_end || %s_maho_end || %s_saki_end || %s_nagisa_end || %s_sino_end || %s_asuka_end == 1 print 10,500
title.ksを変換すると、こんな感じでおかしな感じになってしまうものですから・・・・
こんな魂響があったら、僕はもう・・・!!
1.tama.plの書き換え
※tama20070729cのtama.plを使用します。
A:209行目を、
}elsif ( $line =~ /^\@vo s=([a-zA-Z_0-9]*)/ ){ から、
}elsif ( $line =~ /^\s=([a-zA-Z_0-9]*)/ ){
に書き換え。
B:212行目を、
}elsif ( $line =~ /^\[nm t=\"(.*?)\"/ ){ から、
}elsif ( $line =~ /^\@nm t=\"(.*?)\"/ ){
に書き換え。
C:215行目を、
if ( $line =~ / s=([a-zA-Z_0-9]*)\]/){ から、
if ( $line =~ / s=([a-zA-Z_0-9]*)/ ){
に書き換え。
D:315行目を、
}elsif ( $line =~ /^\@showexlink/ ){ から、
}elsif ( $line =~ /^\@showlink/ ){
に書き換え。
2.上記に書き換えたtama.plで作成された、1.txtの変更。
①"lsp 0,":s/26,26,2;#FFFFFF"→";"に全置換。
②"@nm t=”"→";"に全置換。
・魂響~陵辱サイド~
・story01、story02、story02-a、story02-bの各ksファイルを、
"@playbgm storage="→"@bgm storage="に全置換。
・・・・これで、BGMを実装できます。
よく考えたら、tama.plを書き換えたほうが効率がいいのですが・・・やってしまったものは仕方がないです。
ここまでやると、初代の魂響もやってみたくなりますが、プログラムの書式が別物のように違うため、諦めました。下手をすると、Fateの方が、まだ作りやすいかもしれません。
・・・あと、気になるのはその横顔を・・ですが、やはりどうやっても、ksファイルを読めません。恐らく、このコンバータで動かせそうな最後のゲームのため、残念ですが・・・・
あとで、同様の内容の記事を、PSP-君にもできること-に載せようと思っています。ご了承ください。
それでは、今日はこれで失礼します。
頑張ってください。
Posted by: HARU | 2007年08月12日 15:38
おおー、大変お疲れ様でした
私も参考にさせてもらいますね
とりあえず今気付いたことを。
>@cutin storage="st_yosihiro_B_se_02a_l"
これはファイル名を""で囲っているからですねぇ。
稀にあるので、統一してくれれば助かるのですが…
>if %s_ayana_end || %s_maho_end || ...
これは、"||"を使ったor処理です
他の言語なら割と正常ですが、Nスクではor処理ができなくて。
一見まとも&修正がめんどいので処理をしていなかったりします。ごめんなさい…
他は特に問題がないと思います
あとは立ち絵座標くらいですね!
お互いに頑張りましょ~
Posted by: ひとつもり | 2007年08月12日 23:08
お疲れ様です。
先日のこん僕の件ですが、PSP-君にもできること -の管理人のさくりん氏が非常に興味を持たれて、もしかしたら、記事にしてくれる可能性が出てきました。
・・・・このこと自体は、大変喜ばしいことなのですが、ここでひとつ大きな問題に気づきました。
一見確かにまともに動いているのですが、こののままではゲームとして成立するはずがないのです。
・・というのも、今回、
"mov"→";mov"
という置換を行っていますが、このままだと、スプライト移動の件だけでなく、好感度やフラグ立ての数値の計算命令も無視されてしまうため、ゲームになりません。
解決策としては、この際、一気に"*"関係の修正を行ってしまうのが得策ですが、変数の扱いがあまり得意ではないので、うまくいきません。
何らかのアドバイスを頂ければ、幸いなのですが・・・・
タイトルの実装や、立ち絵の修正は、いい感じに進んでいるのですが・・・・お手数をおかけして申し訳ありませんがよろしくお願いします。
とりあえず、こちらでも努力してみます。
報告については、また後ほど・・・・
Posted by: HARU | 2007年08月14日 15:00
・・・度々すみません。
先ほどの件ですが、とりあえずゲーム全体の動作に影響がないように修正をしました。
本当はtama.plをいじって、"*"に適正な数値を与えてみたかったのですが、こちらはまだ出来ない状態です。
ただ、*を使っている場所には規則性があるので、1.txt置換作業で、*=0を全てに代入しました。また、変換されずに、空白になっている数値もあるので、場所にも0を入れます。
"*+(*-(*))"→"0+(0-(0))"
"*+(-("→"0+(-("
"-(*))"→"-(0))"
",*,"→",0,"
"-())"→"-(0))"
"%4,+("→"%4,0("
"%5,+("→"%5,0("
"%6,+("→"%6,0("
これで、このゲーム内にある606箇所のamsp命令には、スクリプト上では対応が出来たことになります。(一部、mov命令の分母(タイマー割り込み)の値が記されていないところもあるけど、そのときに対応します。)
ただ、いまだに問題は山積み。
・正確に数値が変換できているところでも、スプライト移動が行われていない場所がある。
・前の立ち絵を消さずに、アニメーションをしてしまうために、重なって表示されることもある。
・何故か、表示命令に書き換えが失敗している絵がある。(カットイン表示の絵にこのような傾向が多い。)
・メッセージの枠が表示されない。このゲームは枠の左側に、ミニフェイスが表示されるようになっているのですが、陶然、それも表示されない。恐らく、tama.plに専用のルーチンを作成する必要があるのでしょうが、自分のレベルで出来るのだろうか?・・・かなり苦しいような・・
・このゲームにはハーレムルートというのがエンディング後のエクストラメニューに現れるようですが、さすがに、実装しなければならないでしょうね・・どのような条件で付くのかもわかりませんけど。
・・・いったいこれらの不具合をどこまで修正できるかは、大分疑問ですが、ゆっくりやりますか・・
とりあえずは動いています。
何か気づくことがあればご連絡ください。
失礼します。
Posted by: Anonymous | 2007年08月14日 20:18
なるほど、おそらく立ち絵とスプライト移動で指定するスプライト番号を調整する必要があるでしょうね
.pl
$layer = 12 - (%layer)
0.txt
numalias c,6;センタースプライト番号
numalias l,8;レフトスプライト番号
numalias r,7;ライトスプライト番号
ここの数値を弄って、@move命令での [layer= ]が立ち絵のスプライト番号と一致すると、画像表示部分の不具合の多くは解消されそうです。
フェイスウインドウは…専用の画像ではなく、立ち絵をそのまま表示してるのかな?
こん魂だと macro.ks 内に各キャラの顔表示位置が記述されているみたいなので、
この数値を上手く使えばいけるかもしれません。
では、是非とも頑張ってくださいませ
分かることであればお答えしますのでー
Posted by: ひとつもり | 2007年08月15日 19:46
どもです~とか出没してみたり
画像ファイルとにらめっこした感じだとmf_*.pngがフェイスウィンドウの画像だと思いますですよ~
サイズとか的にも恐らく合ってるんじゃないかと
Posted by: ざれ | 2007年08月15日 21:50
>ざれ様
PSP-君にもできること-も含めていろいろとアドバイスをありがとうございます。引き続きよろしくお願いします。
>ひとつもり様(これからは、敬称を”様”で統一しようと思います。)
まずは現状をお知らせします。
序盤は見た目をのぞけば、正常に動作しておりますので、懸念材料は、中盤以降のキャラ固有のストーリーに進めるか、です。
今のところ、フラグ関係は立っているので、大丈夫だと思いますが・・・
エンディング関連は、スタッフロール以外はうまくいきそうなので、スタッフロール関係のみ、コメント化で対応できそうです。
タイトルは実装が完了し、その際にハーレムルートも実装させました。特定のキャラ2人を攻略することで、表れるようです。
これで、ゲームの進行に関しての設定は完了しました。あとは、動作報告待ちです。
・・・自分でやりたいのは、やまやまですが、仕事が忙しくなりそうなので、他の方の報告を受けた方が早そうです。
・・・こうなれば、見た目の問題に気兼ねなく集中できます。スプライト関連もきになりますが、まずはやりかけのミニフェイス関連について書かせていただきます。
原文では、こうなっています。
@set_miniface name=yosihiro_A_se_05_l
これを、
lsp xx,"image/mf_yosihiro_A_se_05_l"・・・
と変換したいのですが、うまくいきません。
まずは、0.txtで、
numalias mface,31 ・・となっているので、
立ち絵関連の前で、
}elsif ( $line =~ /^\@set miniface / ){
if ($line =~ / =([a-zA-Z_0-9]*)/ ){
print OUT "ld c,\"image/mf_$1.png\",2\n";
$ldchk[31] = 1;
}
・・・と書いてみたのですが、駄目でした。
エラーログは出力されておりませんが、完全に無視されています。ファイル指定だけ、取り出せれば、後は座標の調整で済みますので、何とかなりそうですが・・・・
macro.ksでは、
*set_miniface
mov %0,0
if %1.indexOf(nagisa)==-1 jumpf
mov %0,0
mov %0,0
~
mov %0,0
return
・・と書かれていますが、どう使えばいいのかわからない状態です。
何か気づいたことがあれば、ご連絡ください。
こちらも、これからは余程のトラブルがない限り、マイペースで調整するつもりですので、余裕が出来たときにアドバイスを頂ければ幸いです。
・・・あと、PSP-君にもできること-で、こん僕についての記事を書いてもらえそうです。よろしければ、そちらにも目を通していただければ、ありがたいです。
・・・それでは、今回はこれで失礼します。
これからも、よろしくお願いします。
Posted by: HARU | 2007年08月16日 22:20
>ざれさん
コメントありがとうございます。
なるほど、こん僕では専用の顔画像があるんですね。
となると材料がこん魂だけだとちょっと厳しそう
>HARUさん
お疲れ様です。
スタッフロール…魂響ではバックでムービー流しながら文字をロールさせてるのでスルーしておりました。
やはりコメントアウトで対応でしょうか
>}elsif ( $line =~ /^\@set miniface / ){
if ($line =~ / =([a-zA-Z_0-9]*)/ ){
ざっくりみただけだと、set_miniface のハイフンと
/ =(a-z... の前の半角スペースが上手くマッチしてないような?
ただのコピペミスorケアレスミスだと思いますが念のため確認願います
Posted by: ひとつもり | 2007年08月17日 23:04
ご連絡ありがとうございます。
何度もお世話になり、申し訳ありませんが、今回もまた、よろしくお願いします。
先日のミニフェイスの件ですが、確かにケアレスミスだったようです。
}elsif ( $line =~ /^\@set_miniface name/ ){
if ($line =~ /=([a-zA-Z_0-9]*)/ ){
print OUT "lsp 31,\"image/mf_$1.png\",2,0\n";
$ldchk[31] = 1;
}
・・・これでうまくいきました。ありがとうございます。
ただ、ファイルの取得はうまくいったものの、スプライト番号の指定が間違っていて、表示できないようです。
そもそも31番で取得があっているかどうか・・
先日の$layerの式に照らし合わせれば、12-31=-19になってしまいます。
こちらが初心者であることを露見するような質問で恥ずかしい限りですが、何かアドバイスを頂ければ幸いです。
また、立ち絵のアニメーション件ですが、一般のlsp命令で書かれているもの、例えば、
lsp 999,"image/・・・
lsp 9,"image/st_・・・
この辺のものは、うまくいっているようです。
うまくいってないのは、ld c,ld l,ld rで表示されているのが駄目なようです。
例えば、
cspa:ld c,"image/st_yosihiro_B_se_02a_l.jpg",2
getldlocate c
mov %4,%2-20
saveoff
resettimer
for %1=1 to 999999
gettimer %9
if %9>=100 break
mov %4,%2+(%4-(%2))*%9/100
mov %5,%3+(%3-(%3))*%9/100
mov %6,255+(255-(255))*%9/100
amsp 6,%4,%5,%6
print 1
next
amsp 6,%4,%3,255
print 1
ここは失敗している部分の1例ですが、センタースプライトは6番なのですから、番号はあっているはず・・・
・・でもコピペしながら気づいたんですけど、%2,%3・・といった変数の方にもんだいがあるのでしょうか?この辺を定義しているのは0.txtの、*getldlocate、*ld辺りしか思いつきませんが、何か問題があるのでしょうか?
・・・とにかく、変数関係のことではご迷惑をかけっぱなしで申し訳ありませんが、何かわかることがあれば、ご連絡願います。
それではよろしくお願いします。失礼します。
Posted by: Anonymous | 2007年08月18日 22:01
>立ち絵移動
らら、すみません、これは私のスクリプトが間違っていました。
mov %4,%2+(%4-(%2))*%9/100
お気づきの通り、ここで%4が重複しているので正しく計算されていないようです。
お手数ですが、sub move内を
print OUT "mov %5,$spleft[$layer]+($endleft[$i]-($spleft[$layer]))*%9/$movetime\n";
print OUT "mov %6,$sptop[$layer]+($endtop[$i]-($sptop[$layer]))*%9/$movetime\n";
print OUT "mov %7,$spopa[$layer]+($endopa[$i]-($spopa[$layer]))*%9/$movetime\n";
print OUT "amsp $layer,%5,%6,%7\n";
こんな感じに、番号を一つずつずらしてみてくださいませ。
>顔画像
あ、 numalias は変数 %mface を定義しているもので、スプライト番号とは関係ありません。
この場合は、適当に若い番号(2とか3?)を割り振ってあげるとよさそうですね。
>ご迷惑を…
こちらのスクリプトの精査にもなるので、ホント気にしないで下さいですm(_ _)m
Posted by: ひとつもり | 2007年08月18日 23:08
こん僕変換頑張っているようで…自分にはさっぱりですorz
ということで魂響の変換記事を書かせていただきました。
一応報告を...
あと、こちらの手違いでトラックバックを3通も送ってしまいました(汗
すみませんが削除お願いいたします
すみませんorz
Posted by: tales fan | 2007年08月19日 01:59
>tales fanさん
記事ありがとうございます。
魂響よりもこん僕の方が需要あったのかとちょっぴり凹んでいたので、嬉しい限りです
Posted by: ひとつもり | 2007年08月19日 12:11
ひとつもりさん>
削除有難うございます。
よろこんでいただけてうれしいですb
それで魂響なんですがプレイしていた所
23262行目ぐらいの
俺は暫しの眠りについた
って所を読むとPSPのメニューに戻ってしまうのですがこれは不具合でしょうか??
BADエンドかなぁと思ったのですがそれだと魂響のTOPに戻ると思うので…汗
Posted by: tales fan | 2007年08月19日 21:39
シナリオを見たところ、好感度次第でnewルートになるところですね。
念のため、/scenario/new_route/new~藍/ 以下のksファイルを
/scenario フォルダ直下に手動でコピーしているか確認してくださいませ
Posted by: ひとつもり | 2007年08月19日 23:51
確かめた所コピーしていませんでした(汗
初歩的なミスですorz
すみません
有難うございます。
Posted by: tales fan | 2007年08月20日 00:45
ひとつもり様
いつもありがとうございます。
立ち絵移動の件ですが、ひとつもり様のアドバイスの通りに行ったところ、うまくいきました。ありがとうございます。まだ、検証が十分でないため、再現度や、他にうまくいってない場所がないか・・・少し時間をかけて調べてみたいと思います。
ミニフェイスの件ですが・・・いくら試行錯誤しても、全く表示できない理由がわかりました。
・・・ファイル名が違うんです。
@set_miniface name=yosihiro_A_se_05_l
・・と書かれていますが、
対応すべきミニフェイスに、
mf_yosihiro_A_se_05_l ・・・こういったファイルが無いんです。
mf_yosihiro_A_se_05 ・・・こんな感じのファイルしかありません。
このゲームのミニフェイスは、立ち絵と同じ名前のミニフェイスファイルが付いているのですが、_l 、_s といった立ち絵でサイズを示す表記が無いのです。対応するファイルが無いのだから、表示するはずがありません。
Perlのマニュアルを見ると、
文字変数 =~ s/'_l'//g; ・・等を使って、_l 、_s といった表記を消せるように書かれてますが、うまく取り込めません。
なんとかして、
lsp 2,"image/mf_yosihiro_A_se_05.png"・・
といった感じで表示できるように書き換えたいのですが、アドバイスをお願いします。
あと、変換方法が難しすぎる、という意見も出ているようなので、ある程度の完成度になったら、konboku.plとして、PSP-君にもできること-のさくりん様のHPで、配布できるように、後ほど、提案したいと思うのですが、いかがでしょうか?さくりん様はもちろんのこと、コンバータの作者である、ひとつもり様の承諾は、絶対に必要ですので、このことについても、ご意見を聞かせてください。
1.txtの変換は、バッチファイルでも作れれば、いいなぁ・・と思うのですが、実はバッチファイルを今まで作ったことが無い有様なので、一体、どこまでできるか・・・いずれにしても、少し先の話です。
話は変わりますが、こん僕の反響の多さは、確かにこちらにとっても意外でした。
今まで、何度か他のゲームの変換記事を投稿しましたが、こんな感じで、反響があったのは初めてで・・
再現性、という点においては、魂響の方が、ずっと上なんですけどねぇ・・拡大、縮小の演出はかなりの見物なので、もっと多くの方にやってもらいたい気もしますが・・初代の魂響が再現できないのが、ネックなのでしょうか?・・でも書式が違いすぎるし、わずかな変更で動かせるようには見えないし・・こちらとしても、魂響は、もっと注目されても良いと思います。そもそも、このコンバータの出来が良かったから、こん僕を再現できたわけだし・・
何度もお世話になり、申し訳ありませんが、よろしくお願いします。
Posted by: HARU | 2007年08月20日 16:00
すみません、上記の件について、追加報告です。
ミニフェイスの件ですが、ファイル名を一部手直しして、表示テストを試みてみましたが、スプライト番号2番で正常表示されました。・・・さすがです。ありがとうございました。
ただ、これに伴い、新たな問題が・・・
このミニフェイスは、メッセージ枠と、かなり重なっているのですが、常にメッセージ枠の下に表示されて、ほとんど見えないようです。
・・・確か、魂響では、メッセージ枠より上にスプライトが表示されることは無かったはず。
・・というより、メッセージ枠より上にスプライトを表示させる方法がまるで思いつきません。今までのPSPで動かしたゲームで、そんなゲームって無かったような。
魂響コンバータのように、setwindow命令で、枠を表示するのではなく、スプライトで表示させる必要が、あるかもしれません。
(今のところ,}elsif ( $line =~ /^\@novel/ ){・・・の一節を,改変して表示させています。)
色々と甘えすぎな気もしますが、ご意見をお聞かせください。
それでは、失礼します。
Posted by: HARU | 2007年08月20日 17:20
>tales fanさん
いえいえ、解決出来て良かったです。
>HARUさん
>konboku.pl
遠慮せずにじゃんじゃんやってくださいませ。期待していますm(_ _)m
>魂響とこん僕
う、言葉の綾というか殆ど冗談なので気にしないで下さいな。
フォローありがとうございます。
>miniface関連
置換の際に ' が余分なのかな?
$hoge =~ s/_l//; だと上手くいくと思います。
($hoge =~ s/_(l|s|m)$//; lsmを一気に消す場合はこんな感じで。
ちなみに行末$を指定して誤爆をなくしています。)
そしてメッセージ枠の方ですが、実は車輪や魂響でも上にスプライトを表示させていたりします。
名前表示が文字スプライトなんですね。ふふふふ(何故か笑
Nスク define節に windowback 命令を入れると、同じく humanz で指定した番号まで
テキストウィンドウが下がります。
なので humanz 2または3でちゃんと表示されるかと思います。
windowchip命令がサポートされていれば、連動して消えるので尚良いのですが…
ではでは、宜しくお願いします。
Posted by: ひとつもり | 2007年08月20日 21:09
ご連絡ありがとうございます。
早速試してみたのですが、うまくいきません。
実はこのゲームでは、ミニフェイスの表示方法が、2種類あって、
1.立ち絵と全く同じミニフェイスが出る。
@chr c=yosihiro_A_se_06_s
と出ていたら、
ld c,"image/st_yosihiro_A_se_06_s.jpg",2
lsp 2,"image/mf_yosihiro_A_se_06.jpg",0,415
・・・と表示させたいのですがうまくいきません
2.立ち絵と、異なるミニフェイスを表示させる。
@set_miniface name=yosihiro_A_se_05_l
と出ていたら、
lsp 2,"image/mf_yosihiro_A_se_05_.jpg",0,415
・・・と出したいのですが・・
}elsif ( $line =~ /^\@chr / ){
if ($line =~ / c=[a-zA-Z_0-9]*)/ ){
print OUT "ld c,\"image/st_$1.jpg\",2\n";
$ldchk[6] = 1;
if ($line =~ s/_(l|s|m)$/ c=[a-zA-Z_0-9]*)/ ){
print OUT "lsp 2,\"image/mf_$1.\",0,415\n";
}
}elsif ( $line =~ /^\@set_miniface name/ ){
if ($line =~ s/_(l|s|m)$/=([a-zA-Z_0-9]*)/ ){
print OUT "lsp 2,\"image/mf_$1.jpg\",2,415\n";
$ldchk[21] = 1;
・・・といった感じでやっているのですが、うまくいきません。
たびたびすみませんが、アドバイスをお願いします。
失礼します。
Posted by: Anonymous | 2007年08月21日 02:44
なるほど、2種類あったのですね
}elsif ( $line =~ /^\@chr / ){
if ($line =~ / c=[a-zA-Z_0-9]*)/ ){
print OUT "ld c,\"image/st_$1.jpg\",2\n";
$ldchk[6] = 1;
$face = $1;#一度$1の内容を待避します
$face =~ s/_(l|s|m)$//;#ここで置換。後ろには何もいれません。
print OUT "lsp 2,\"image/mf_$face.\",0,415\n";
}
}elsif ( $line =~ /^\@set_miniface name/ ){
$line =~ /=([a-zA-Z_0-9]*)/;#ifを使わず、全て置換でも大丈夫?
$face = $1;
$face =~ s/_(l|s|m)$//;
print OUT "lsp 2,\"image/mf_$face.jpg\",2,415\n";
$ldchk[2] = 0;#スプライト毎に立ち絵(且つデフォ位置)かどうかをチェックしています
こんな感じでどうでしょう?
Posted by: ひとつもり | 2007年08月22日 07:25
ご連絡ありがとうございます。
なるほど、もう1つ文字変数を作って新たに定義する、という訳ですか・・・実に勉強になります。ありがとうございます。
・・ただ、残念なことに、これでも、下記のようなエラーが出て、変換できません。
Unmatched ) in regex ; marked by
ひとつもり様から頂いた構文をそのまま使用した場合は、329行、あれこれと細かい調整を試みようとすると、328行がエラーの対象になりますが、該当する行は、
print OUT "if \%r000=$1 ";
}elsif ( $line =~ /^kag\.process.*\"\*([a-zA-Z_0-9]*)\"/ ){
・・・こんな感じで恐らく、これらの行に異常があるとは思えません。
そもそも、エラーの内容が把握できていないため、対処方法が思いつきません。お手数ですが、アドバイスをお願いします。
こちらも、恐らくこれが最後の障害だと思われますので、もう少し粘ってみます。
先日の1.txtの置換作業のバッチファイル化については、PSP-君にもできること-で、提案をしたところ、ざれ様が差分ファイルを作ってくれました。1人では、また頭を抱えるところでした。こういったサポートは勉強にもなるし、本当にありがたいことです。
話は変わりますが、ksファイルを読めない(文字化けする)ゲームが多いですが、これは、もしかして暗合化されているのでしょうか?絵も音の読みこめて、シナリオだけ読めない、というのも妙な気もしますが・・・どうにもこの手の知識に疎いので・・
今手持ちのゲームで、吉里吉里対応のゲームで、PSPに変換できてないゲームは4本。
この内2本は、Fateと初代の魂響なので、今の私のレベルでは厳しいので・・・残った2本、その横顔を・・・と、ぶらばん!、このどちらかは試してみたい気もします。・・・でも、ksファイルが閲覧できないんですよね。ぶらばん!のほうはゲーム自体ほとんどやってないので、自分に出来そうかどうか確かめたいところですが・・
まだこん僕も終わらせていない状態で、気の早い話ですが、もう少し色々と続けてみたいので、調べてみようと思います。
それでは、今回はこれで失礼します。
Posted by: HARU | 2007年08月22日 18:30
●PerlでONSへ変換しよう 基本編 ~シナリオ読込~
の記事のスクリプトを使用すれば、ぶらばんはテキストには出来ますよ~
置換で撃沈しまった自分が言うのもあれな感じが(ry orz
ゆのはな・・・かにしののperlを引用すれば大体のテキストは出来る・・・のだが・・・
perlとonsの知識ない&正規表現何それおいしいの? ・・・(´・ω・`)
Posted by: Anonymous | 2007年08月22日 19:15
すみません、エラーの記述に誤りがありました。
Unmatched ) in regex ; marked by
・・・でした。あ、でも、書いてる最中に気づきました。”(”がひとつ足りない。
c=([a-zA-Z_0-9]*) ・・に直せば、OKでした。
と思ったのもつかの間。
Unrecognized Character \x81 ・・・ in line 343
が出てしまいます。
該当行は、
}elsif ( $line =~ /^\@set_miniface name/ ){
$line =~ /=([a-zA-Z_0-9]*)/;#ifを使わず、全て置換でも大丈夫?
$face = $1;
の最後の行、$face = $1;です。立ち絵センターで同じことをやっていて、エラーが起きないのに、何故?(ちなみに、上の文で if を入れても、解決できません。)
やはり、アドバイスを頂くことになりそうです。
よろしくお願いします。
Posted by: Anonymous | 2007年08月22日 19:20
>HARUさん
ほんとだ、 ( が足りていませんでしたね…すみません orz
次のエラーは、なんだろう…?
一応コメントを外してみていただけますか?
駄目なら、どこかに全角が使われているのかもしれないのでお手数ですがそこの部分を書き直して下さいm(_ _)m
>Anonymousさん
おお、あの辺の記事を試して頂いてたとは。ありがたやありがたや 人(’’
ゆのはな、PULLTOPなので流用出来るかな?と思っていたのですが…こちらもやっぱりそう甘くはなかったのですね
ちなみに私はこの移植のためだけにPerlとONSに手を出してたりします。
なので大丈夫、きっと美味しいですよ?
Posted by: ひとつもり | 2007年08月22日 20:27
>Anonymous 様
ksファイルについてのアドバイス、ありがとうございました。こちらも散々、こちらのサイトにお世話になりながら、肝心のサイトの文章をまるで読んでなかった、というのは恥ずかしい限りです。
ただ、残念なことに、こちらではぶらばん!のシナリオの読み込みはうまくいっておりません。ひとつもり様は、かにしのを、メッセージローダからの情報を基にデコードさせていますが、ぶらばん!の場合、メッセージローダが見当たらず、暗号解除のパラメータを入手できないでいます。
・・それとも、本当は暗号など掛かっておらず、こちらが何か見落としているのでしょうか?
よろしければ、シナリオ読み込みで行った手順を詳しく教えてください。よろしくお願いします。
>ひとつもり様
おかげさまで、ミニフェイスの表示に成功しました。・・・ただ、実は後のアドバイスを試しても全くうまくいかず、試行錯誤を繰り返した結果、立ち絵処理を一旦消去して、組み直したら、うまくいったのです、が・・・
自分でも、どこを直したのかよくわからないのです。・・という訳で原因は全く特定できずに、結果としてうまく修正できた、というスッキリしない幕引きで完了しました。
以下の内容が、組み直した内容の全文です。
こんな内容でうまくいったのなら、とうの昔に解決しているはずなのですが・・・
}elsif ( $line =~ /^\@chr / ){
if ($line =~ / c=([a-zA-Z_0-9]*)/ ){
print OUT "ld c,\"image/st_$1.png\",2\n";
$ldchk[6] = 1;
$face = $1;
$face =~ s/_(l|s|m)$//;
print OUT "lsp 2,\"image/mf_$face.jpg\",0,415\n";
$ldchk[2] = 1;
}
if ($line =~ / l=([a-zA-Z_0-9]*)/ ){
print OUT "ld l,\"image/st_$1.png\",2\n";
$ldchk[8] = 1;
$face = $1;
$face =~ s/_(l|s|m)$//;
print OUT "lsp 2,\"image/mf_$face.jpg\",0,415\n";
$ldchk[2] = 1;
}
if ($line =~ / r=([a-zA-Z_0-9]*)/ ){
print OUT "ld r,\"image/st_$1.png\",2\n";
$ldchk[7] = 1;
$face = $1;
$face =~ s/_(l|s|m)$//;
print OUT "lsp 2,\"image/mf_$face.jpg\",0,415\n";
$ldchk[2] = 1;
}
}elsif ( $line =~ /^\@schr / ){
if ($line =~ / c=([a-zA-Z_0-9]*)/ ){
print OUT "ld c,\"image/st_$1.png\",1\n";
$ldchk[6] = 1;
$face = $1;
$face =~ s/_(l|s|m)$//;
print OUT "lsp 2,\"image/mf_$face.jpg\",0,415\n";
$ldchk[2] = 1;
}
if ($line =~ / l=([a-zA-Z_0-9]*)/ ){
print OUT "ld l,\"image/st_$1.png\",1\n";
$ldchk[8] = 1;
$face = $1;
$face =~ s/_(l|s|m)$//;
print OUT "lsp 2,\"image/mf_$face.jpg\",0,415\n";
$ldchk[2] = 1;
}
if ($line =~ / r=([a-zA-Z_0-9]*)/ ){
print OUT "ld r,\"image/st_$1.png\",1\n";
$ldchk[7] = 1;
$face = $1;
$face =~ s/_(l|s|m)$//;
print OUT "lsp 2,\"image/mf_$face.jpg\",0,415\n";
$ldchk[2] = 1;
}
}elsif ( $line =~ /^\@set_miniface name=([a-zA-Z_0-9]*)/ ){
$face = $1;
$face =~ s/_(l|s|m)$//;
print OUT "lsp 2,\"image/mf_$face.jpg\",0,415\n";
$ldchk[2] = 1;
・・・おかげで、訳のわからない理由で、徹夜する羽目になりましたが、ミニフェイスを入れるゲームは結構多いので、宜しければ、お役立てください。
メッセージ枠との兼ね合いは、ひとつもり様のアドバイスの通りでうまくいきました。(△ボタンを押したときのメニュー表示暗転時に、顔だけはっきり見えるのが少し怖いけど・・)
とりあえず、こん僕での画像関係で最大の難関はクリア出来ました。ありがとうございます。
あと、これは小さなことですが、魂響と違い、メッセージ枠がゴミが残った状態で表示されてしまいます。・・理由は簡単で、元絵が魂響では、余白部分が、透明で塗りつぶされているのに対し、こん僕の場合、余白部分が白いため、透過度を調整できないsetwindow命令では、はっきりと目立ってしまいます。(PSP-君にもできること-の画面を見るとわかります。)
・・この場合、ひとつもり様ならどういたしますか?自分だけプレイするなら、画像を加工すればいい話なのですが、著作権がらみで、ネット配信は出来ないし・・・lsp命令で、透過度を調整してごまかすが、枠そのものを自作するか・・
・・こん僕では、立ち絵を縮小してから、移動する演出があるようですね(ぶらばん!もですけど)・・amsp命令で対応しようが無いので、見なかったことにしよう・・
さらに余談を・・・LOVERSOULの春萌とSTEP X STEADYも吉里吉里ですね。こちらはksファイルは暗号化されて無いけど、画像ファイル等が全て日本語・・・ゆす様のデモンべインを改修したほうが早そうな・・・やはり見なかったことにしよう・・・
それでは、これで失礼します。
Posted by: HARU | 2007年08月25日 10:31
HARU様
ksファイルを/scenario フォルダ等に解凍後に
●PerlでONSへ変換しよう 基本編 ~シナリオ読込~
のスクリプトを使えばいけるかと思います。(勝手に引用スミマセン
ただ、当方では何故か上手くいかなかったので「close IN;」を削除して使用しました
上手くいけば下記のような文が出るかと・・・(出来たテキストから適当に引っ張り出してみました)
[EV zoom=200 time=500 afx=364 afy=236]
[fadeoutbgm time=2000]
【純】「うわぁっ!」
これで合ってるのか謎なんですがね・・・orz
チラ裏
ゆのはな・・・フォント入れてなかったから起動しかったみたい・・・
早とちりしすぎだぜ俺・・・(`・ω・´) やり直してみるか・・・
Posted by: Anonymous | 2007年08月25日 15:43
うぉ!?
勝手に引用スミマセンって・・・引用してなかったから消したはずなのに・・・orz
スルーしてやってくだされ(勝手に引用のこと
STEP X STEADY・・・がんばってみたい気はするんだけどなぁ・・・(殴
Posted by: Anonymous | 2007年08月25日 15:51
Anonymous様
ご連絡ありがとうございます。
早速試してみましたが・・・やはり、うまくいかないようです。
このシナリオ読込の章に書かれているスクリプトは、ただksファイルをそのままつなげているだけのようで、ksファイルの内容には、おそらく全く手が加わっていない状態のように思えます。
つまり、最初から暗号化されずに読めるファイルでないと、このスクリプトを通しても、おそらく読めないと思います。
・・・こうなってくると、ksファイルをどうやって展開したか、が重要になります。恐れ入りますが、ksファイルを展開したツールと、できれば状況を教えてください。
よろしくお願いします。
Posted by: HARU | 2007年08月25日 22:01
>HARUさま
お疲れ様でした。
有効なアドバイスは出来ませんでしたが、無事にミニフェイスが出て良かったです。
△の時の顔だけ描画は、windowchip命令が有効ならあっさり解決するんですけどねー
現状だと、システムカスタマイズで右クリックの処理を変更しないといけません。
私もそこまで手が回ってないです…
さてメッセージウィンドウ。実物がないのでなんともいえませんが
これはもう、各人に加工してもらうのが一番かも…?
うーん、ごめんなさい。
スプライトの拡縮移動は、はい、見なかったことに。涙
>Anonymousさまの
ゆのはな期待です(`・ω・´) シャキ
シナリオ読み込みのは単純にテキストくっつけてるだけなので、
やっぱり展開(復号)ツールなんでしょうね
見たところExtractDataで対応してるみたいです>ぶらばん!
Posted by: ひとつもり | 2007年08月26日 08:17
ひとつもり様
すみません。こん僕で、アドバイスをいただきたいことがあり連絡しました。
今まで、選択肢の分岐で、
[選択肢A]----[選択肢1]
├ [選択肢2]
└ [選択肢3]
・
・
・・こういった形のものは、うまくいっていまし
たが、
[選択肢A]----[選択肢1]-----[選択肢①]
│ ├ [選択枝②]
│ └ [選択肢③]
│
├-[選択肢2]-----[選択肢④]
│ ├ [選択枝⑤]
│ └ [選択肢⑥]
│
├-[選択肢3]-----[選択肢⑦]
│ ├ [選択枝⑧]
│ └ [選択肢⑨]
・
・
・
・・といった、複数の連続してまたがる選択枝の分岐がうまくいっていないようです。
具体的には、選択肢1~3の所が、、
if %0 == 1 cspb:vspa1:print 2:mov %susumu_chr,:goto *L_susumu_chr_004
if %0 == 2 cspb:vspa1:print 2:mov %susumu_chr,:goto *L_susumu_chr_004
if %0 == 3 cspb:vspa1:print 2:mov %susumu_chr,:goto *L_susumu_chr_004
if %0 == 4 cspb:vspa1:print 2:mov %situ_time,:mov %situ_file,:goto *L_susumu_not
・・上記のように、各選択肢の転送先の書き換えがうまく行っておらず、その代わりに、次の選択肢①~⑨が、いっぺんに表示されてしまいます。(当然、書ききれないので、途中で切れて、表示しきれなくなる。)
多少のトラブルなら、自力で解決しますが、これは重要なトラブルのため、連絡した次第です。何か心当たりがございましたら、ご連絡ください。自分でもやってみますが、ゲームの進行にかかわることなので、よろしくお願いします。
Posted by: HARU | 2007年08月26日 10:57
むむ、さすがにこれは原物を見ないとアドバイスが出来そうにないです。
お役に立てずすみません。
Posted by: ひとつもり | 2007年08月26日 17:20
すみません、先ほどの選択肢の件ですが、ksファイルの原文や、どのように直したいか?といった具体的な内容を書いておかないと、心当たりがあったとしても対策などアドバイスのしようがないと思います。
問題の箇所の原文ですが、
@exlink txt="綾菜" storage="004.ks" target="*susumu_chr" exp="f.susumu_chr = 'ayana'" susumu=true
@exlink txt="真帆" storage="004.ks" target="*susumu_chr" exp="f.susumu_chr = 'maho'" susumu=true
@exlink txt="あすか" storage="004.ks" target="*susumu_chr" exp="f.susumu_chr = 'asuka'" susumu=true
@exlink txt="志乃" storage="004.ks" target="*susumu_chr" exp="f.susumu_chr = 'sino'" susumu=true
@exlink txt="明日はなにもしないのだ" storage="004.ks" target="*susumu_nothing" susumu=true exp="f.situ_time='no', f.situ_file='no'"
@showlink
・・これが、こう表示されているわけで・・
(判定分のみ)
if %0 == 0 goto *004_selectbtn2
if %0 == -1 systemcall rmenu
if %0 == 1 cspb:vspa1:print 2:mov %susumu_chr,:goto *L_susumu_chr_004
if %0 == 2 cspb:vspa1:print 2:mov %susumu_chr,:goto *L_susumu_chr_004
if %0 == 3 cspb:vspa1:print 2:mov %susumu_chr,:goto *L_susumu_chr_004
if %0 == 4 cspb:vspa1:print 2:mov %susumu_chr,:goto *L_susumu_chr_004
if %0 == 5 cspb:vspa1:print 2:mov %situ_time,:mov %situ_file,:goto *L_susumu_nothing_004
・・これでは、どれを選んでも同じです。
この後、各キャラ4人に3個ずつの選択肢、合計12個の選択肢がいっぺんに表示されます。もちろん表示しきれずに、一部の選択肢は選べません。
できれば、
if %0 == 0 goto *004_selectbtn2
if %0 == -1 systemcall rmenu
if %0 == 1 cspb:vspa1:print 2:mov %susumu_chr,:goto *L_susumu_chr_004_ayana
if %0 == 2 cspb:vspa1:print 2:mov %susumu_chr,:goto *L_susumu_chr_004_maho
if %0 == 3 cspb:vspa1:print 2:mov %susumu_chr,:goto *L_susumu_chr_004_asuka
if %0 == 4 cspb:vspa1:print 2:mov %susumu_chr,:goto *L_susumu_chr_004_sino
if %0 == 5 cspb:vspa1:print 2:mov %situ_time,:mov %situ_file,:goto *L_susumu_nothing_004
・・・と変換できるようにして、なおかつ、
*L_susumu_chr_004_ayana
*L_susumu_chr_004_maho
・・・といった個別処理を作成できるようにしたいのです。(しかも、この場所は2周目では、さらに選択肢が増えるとか」・・・この場所がキャラ攻略で必須の場所だったら、一体どうなるのか・・・)
何人もの方が、すでにこの場所を通過しているはずなのに、誰もクレームをつけないのが、不思議なくらいですが・・・
手を加えるなら、
}elsif ( $line =~ /^\@if exp=false/ ){
print OUT "jumpf\n";
}elsif (( $line =~ /\@if exp=\"(.*?)\"/ ) && ( $1 !~ /tf\./)){
$ifend = $1;
$ifend =~ s/!sf\.([a-zA-Z_0-9]*)/sf\.$1 == false/g;
$ifend =~ s/!f\.([a-zA-Z_0-9]*)/f\.$1 == false/g;
$ifend =~ s/sf\./\%s\_/g;
$ifend =~ s/f\./\%/g;
$ifend =~ s/true/1/g;
$ifend =~ s/false/0/g;
$ifend =~ s/mp\.[a-zA-Z_0-9]*/\%1/g;
$ifend =~ s/\'//g;
if ( $ifend !~ /(=|>| print OUT "if $ifend == 0 jumpf\n"
このあたりのルーチンでしょうか・・
それにしても、現在、同時に平行して、こちらが予期せぬタイミングで、メッセージ、音声が飛ばされるバグ修正を行っておりますが、結構とんでもない書式がありますね・・例えば、
「さて……透とどの娘を仲良くさせていくのだ?」
選択肢直前の文章ですが、[np]とかないと、ページ切り替えは不可能。吉里吉里では、どう処理を行っているのだろう?
「……あつかましいお願いではありますが、[r]
よければ限定、ゴールデントマトサンドを買ってき」[se storage=se_010][wait time=200][nwnp]
・・・メッセージ表示直後に、同じ分でSE再生命令。普通、2つの文(3つ?)に分けるでしょう。よくこれで、エラーが起きないものです。
完全対応なんて、とても無理なような・・
それにしても、こうやって質問できるだけでも、こちらは恵まれています。ひとつもり様や、ほかの方はよく自力だけで、コンバータを作れるものだと、感心します。・・ただ、こちらも出来れば、こん僕で終わらせたくない気もしますが、勉強は必須ですね。PSPでONSの講座、実に参考になります。これは、かなり貴重ですね・・
それでは、これで失礼します。気が向いたら、アドバイスをお願いします。
Posted by: Anonymous | 2007年08月26日 19:31
追記ですが、ぶらばん!は、ひとつもり様の仰るとおり、ExtractdataでOKでした。今までは、ドライバの相性の関係で、正確に変換できなかったようです。 Anonymous 様にもお世話になりました。ありがとうございました。
・・ただ、このゲーム、SEのみ日本語表記ですね。・・・SEだけなら、SEをファイル名を変換ソフトで書き換えて、1.txtのみ差分バッチで、置換、で済めばいいのですが・・・
さすがに、こん僕よりは厄介なので、じっくり見てみようと思います。
Posted by: HARU | 2007年08月26日 20:15
004.ks の *susumu_chr 部分を見ればはっきりすると思いますが、
選択肢中の exp="f.susumu_chr = 'sino'"を文字変数への代入としてマッチングさせると上手く行きそうですね
sub flag{ 内の文字変数部分を
}elsif ( $point =~ /^f\.([a-zA-Z_0-9]*)=(?:\"|\')([a-zA-Z_0-9]*)(?:\"|\')/ ){
print OUT "mov \$$1,\"$2\":";
をこのように修正("に加えて'でもマッチするように)し
*susumu_chr で使用しているであろう条件分岐(if exp?)にも文字変数処理を追加してみてください。
Posted by: ひとつもり | 2007年08月26日 20:59
ご連絡ありがとうございます。
・・・試してみたのですが、エラーこそは起きないものの、うまくいかないようです。
・・現在のところ、1.txtには何の変化もおきていません。
まずは、 *susumu_chr 部分を含めた、選択肢の原文をもう一度記してみます。 *susumu_chr の選択肢を長すぎるので、半分くらいしか載せませんが、必要な情報は、得られると思います。
;選択肢
;綾菜 真帆 あすか 志乃
;沙希は2週目から
;--------------------------------------------------------
@exlink txt="綾菜" storage="004.ks" target="*susumu_chr" exp="f.susumu_chr = 'ayana'" susumu=true
@exlink txt="真帆" storage="004.ks" target="*susumu_chr" exp="f.susumu_chr = 'maho'" susumu=true
@exlink txt="あすか" storage="004.ks" target="*susumu_chr" exp="f.susumu_chr = 'asuka'" susumu=true
@exlink txt="志乃" storage="004.ks" target="*susumu_chr" exp="f.susumu_chr = 'sino'" susumu=true
@exlink txt="明日はなにもしないのだ" storage="004.ks" target="*susumu_nothing" susumu=true exp="f.situ_time='no', f.situ_file='no'"
@showlink
;--------------------------------------------------------
*susumu_chr|
@nm t="ススム" vo=sus_0122
「次にどんな行動を起こさせてやるのだ?」
;--------------------------------------------------------
;選択肢
;各キャラクター 個別シチュへ
;--------------------------------------------------------
@if exp="f.susumu_chr == 'ayana'"
@exlink txt="お弁当を作ってくる" storage="004.ks" target="*susumu_situation" susumu=true exp="f.situ_time='day', f.situ_file='ayana_situ_a.ks'" cond="!f.ayana_situ_a"
@exlink txt="綾菜と登校" storage="004.ks" target="*susumu_situation" susumu=true exp="f.situ_time='morning', f.situ_file='ayana_situ_b.ks'" cond="!f.ayana_situ_b"
@exlink txt="綾菜自転車で登校" storage="004.ks" target="*susumu_situation" susumu=true exp="f.situ_time='morning', f.situ_file='ayana_situ_c.ks'" cond="!f.ayana_situ_c"
@exlink txt="やっぱり別の娘にするのだ" storage="004.ks" target="*susumu_restart" susumu=true
@endif
@if exp="f.susumu_chr == 'maho'"
@exlink txt="いたずら" storage="004.ks" target="*susumu_situation" susumu=true exp="f.situ_time='morning', f.situ_file='maho_situ_a.ks'" cond="!f.maho_situ_a"
@exlink txt="一緒に帰宅" storage="004.ks" target="*susumu_situation" susumu=true exp="f.situ_time='evening', f.situ_file='maho_situ_b.ks'" cond="!f.maho_situ_b"
@exlink txt="傷の手当て" storage="004.ks" target="*susumu_situation" susumu=true exp="f.situ_time='maho_situ_c', f.situ_file='maho_situ_c.ks'" cond="!f.maho_situ_c"
@exlink txt="やっぱり別の娘にするのだ" storage="004.ks" target="*susumu_restart" susumu=true
@endif
それに対し、こちらの修正箇所はif exp節を、
}elsif ( $line =~ /^\@if exp=false/ ){
print OUT "jumpf\n";
}elsif (( $line =~ /\@if exp=\(?:\"|\')([a-zA-Z_0-9]*)(?:\"|\')/ ) && ( $1 !~ /tf\./)){
$ifend = $1;
$ifend =~ s/!sf\.(?:\"|\')([a-zA-Z_0-9]*)(?:\"|\')/sf\.$1 == false/g;
$ifend =~ s/!f\.(?:\"|\')([a-zA-Z_0-9]*)(?:\"|\')/f\.$1 == false/g;
$ifend =~ s/sf\./\%s\_/g;
$ifend =~ s/f\./\%/g;
$ifend =~ s/true/1/g;
$ifend =~ s/false/0/g;
$ifend =~ s/mp\.[a-zA-Z_0-9]*/\%1/g;
$ifend =~ s/\'//g;
if ( $ifend !~ /(=|>| print OUT "if $ifend == 0 jumpf\n"
}else{
$ifend =~ s/==/!_=/g;
$ifend =~ s/!=/==/g;
$ifend =~ s/!_=/!=/g;
$ifend =~ s/>/dai/g;
$ifend =~ s//g;
$ifend =~ s/dai/ $ifend =~ s/&&/\|l\|/g;
$ifend =~ s/\|\|/&&/g;
$ifend =~ s/\|l\|/\|\|/g;
if ( $ifend =~ /(.*?)\|\|(.*)/ ){
print OUT "if $1 jumpf\n";
print OUT "if $2 jumpf\n";
}else{
print OUT "if $ifend jumpf\n";
}
}
}elsif ( $line =~ /^\@endif/ ){
print OUT "~\n";
及び、
}elsif ( $point =~ /^f\.([a-zA-Z_0-9]*)\=(\d*)/ ){
print OUT "mov \%$1,$2:";
}elsif ( $point =~ /^f\.([a-zA-Z_0-9]*)=(?:\"|\')([a-zA-Z_0-9]*)(?:\"|\')/ ){
print OUT "mov \$$1,\"$2\":";
}elsif ( $point =~ /^sf\.([a-zA-Z_0-9]*)\+\+/ ){
print OUT "add \%s\_$1,1:";
}elsif ( $point =~ /^sf\.([a-zA-Z_0-9]*)\+=(\d*)/ ){
・・念のため、周辺の文も書いてますが・・直しているのは、中央の1文のみです。
・・何か、大きな勘違いをしているのでしょうか?恐れ入りますが、もう1度アドバイスをお願いします。
・・話は変わりますが、ぶらばん!のksファイルを見てみましたが、今までのものとは、大きく構成が異なります。
@chr c=sino_B_se_tyu_14_l
@nm t="志乃" vo=shi_0074
・・こんな書き方は、全くといっていいほど、無いです。
[みなせ 右 制服 02 fade]・・これが、立ち絵の指示です。せめて、左右の指示が、一番最後なら、変換しやすいのですが、・・この立ち絵のファイル名は、ebi_0_0_02.png・・初めの0が、サイズ(中)、次が服装(制服)を表します。
音声に至っては、何の表示もありません。キャラのセリフがあると、自動的に音声がしゃべり、カウンターが加算され、次回には、次の番号の音声を流す・・という仕組みです。
シナリオライターの負担を出来るだけ軽くし、かつシナリオの容量も減らせる、実に効率的な作りです。・・動かそうとするほうにとっては、厄介ですが、こういう組み方もあるんですね・・
それでは、これで失礼します。いつも長文で、すみません。
Posted by: HARU | 2007年08月27日 18:29
原文サンプルで試したところ
susumu=true の部分が先に
}elsif ( $point =~ /^f\.([a-zA-Z_0-9]*)=true/ ){
でマッチングされていたようです。
でも""の外なのに何で含まれてるんでしょう…?どこかでミスってる…?
とまれひとまず、これより上に前回の文字変数の処理を貼ってみてください。上手くいけば
:mov $susumu_chr,"ayana":
となると思います。
次に @if exp 内処理は
$ifend =~ s/\'//g; を消して
if ( $ifend =~ /\'/ ){
$ifend =~ s/\%/\$/g;
$ifend =~ s/\'/\"/g;
}
としてください
if $susumu!="ayana" jumpf
となればおkだと思います。
(しかし susumu=true は何してるんでしょうね…?)
ではでは、あと少し!?頑張ってくださいませ
Posted by: ひとつもり | 2007年08月28日 20:38
ご連絡ありがとうございます。
早速、試してみましたが、1.txtには、何の変化もありませんでした。
念のため、実際に変更した箇所について、周辺の部分も記載しておきます。こちらが、何か勘違いしているかどうか、お手数ですが、確認願います。
if exp関係:
}elsif (( $line =~ /\@if exp=\"(.*?)\"/ ) && ( $1 !~ /tf\./)){
$ifend = $1;
$ifend =~ s/!sf\.([a-zA-Z_0-9]*)/sf\.$1 == false/g;
$ifend =~ s/!f\.([a-zA-Z_0-9]*)/f\.$1 == false/g;
$ifend =~ s/sf\./\%s\_/g;
$ifend =~ s/f\./\%/g;
$ifend =~ s/true/1/g;
$ifend =~ s/false/0/g;
$ifend =~ s/mp\.[a-zA-Z_0-9]*/\%1/g;
if ( $ifend =~ /\'/ ){
$ifend =~ s/\%/\$/g;
$ifend =~ s/\'/\"/g;
}
if ( $ifend !~ /(=|>| print OUT "if $ifend == 0 jumpf\n"
}else{
}elsif ( $point =~ /^f関係:
}elsif ( $point =~ /^f\.([a-zA-Z_0-9]*)\+\+/ ){
print OUT "add \%$1,1:";
}elsif ( $point =~ /^f\.([a-zA-Z_0-9]*)\+=(\d*)/ ){
print OUT "add \%$1,$2:";
}elsif ( $point =~ /^f\.([a-zA-Z_0-9]*)--/ ){
print OUT "sub \%$1,1:";
}elsif ( $point =~ /^f\.([a-zA-Z_0-9]*)-=(\d*)/ ){
print OUT "sub \%$1,$2:";
}elsif ( $point =~ /^f\.([a-zA-Z_0-9]*)=(?:\"|\')([a-zA-Z_0-9]*)(?:\"|\')/ ){
print OUT "mov \$$1,\"$2\":";
}elsif ( $point =~ /^f\.([a-zA-Z_0-9]*)=true/ ){
print OUT "mov \%$1,1:";
}elsif ( $point =~ /^f\.([a-zA-Z_0-9]*)=false/ ){
print OUT "mov \%$1,0:";
}elsif ( $point =~ /^f\.([a-zA-Z_0-9]*)\=(\d*)/ ){
print OUT "mov \%$1,$2:";
}elsif ( $point =~ /^f\.([a-zA-Z_0-9]*)=\"([a-zA-Z_0-9]*)\"/ ){
print OUT "mov \$$1,\"$2\":";
・・変更したのは、上記の箇所のみです。
お手数ですが、ご確認ください。
この選択枝は、004の名前の通り、4日目なのですが、5,6日にも同様の選択肢があり、7日目になると、
「いいからいいから、誰か意中の娘を選ぶのだ」
;--------------------------------------------------------
;選択肢 綾菜 真帆 志乃 あすか 沙希 渚
;--------------------------------------------------------
@exlink txt="綾菜" storage="007.ks" target="*susumu_chr" exp="f.susumu_chr = '*ayana'"
@exlink txt="真帆" storage="007.ks" target="*susumu_chr" exp="f.susumu_chr = '*maho'"
@exlink txt="あすか" storage="007.ks" target="*susumu_chr" exp="f.susumu_chr = '*asuka'"
@exlink txt="志乃" storage="007.ks" target="*susumu_chr" exp="f.susumu_chr = '*sino'"
@exlink txt="沙希" storage="007.ks" target="*susumu_chr" exp="f.susumu_chr = '*saki'"
@exlink txt="渚" storage="007.ks" target="*susumu_chr" exp="f.susumu_chr = '*nagisa'"
@exlink txt="" storage="007.ks" target="*susumu_chr" hide=true exp="f.susumu_chr = '*yosihiro'"
@showlink
;--------------------------------------------------------
*susumu_chr|
@nm t="ススム" vo=sus_0153
「今心の中で浮かんだ娘が、今夜透の夢に現れるのだ」[np]
原文で、こうなっている箇所が、
btnwait %0
if %0 == 0 goto *007_selectbtn1
if %0 == -1 systemcall rmenu
if %0 == 1 cspb:vspa1:print 2:mov %susumu_chr,:goto *L_susumu_chr_007
if %0 == 2 cspb:vspa1:print 2:mov %susumu_chr,:goto *L_susumu_chr_007
if %0 == 3 cspb:vspa1:print 2:mov %susumu_chr,:goto *L_susumu_chr_007
if %0 == 4 cspb:vspa1:print 2:mov %susumu_chr,:goto *L_susumu_chr_007
if %0 == 5 cspb:vspa1:print 2:mov %susumu_chr,:goto *L_susumu_chr_007
if %0 == 6 cspb:vspa1:print 2:mov %susumu_chr,:goto *L_susumu_chr_007
if %0 == 7 cspb:vspa1:print 2:mov %susumu_chr,:goto *L_susumu_chr_007
goto *007_selectbtn1
*L_susumu_chr_007
mov %box,150
mov %btn,160
dwavestop 0:dwave 0,"voice/sus_0153.ogg"
lsp 0,":s/26,26,2;#FFFFFFススム",100,440:print 1
@nm t=”ススム” vo=sus_0153\
csp 0:print 1
「今心の中で浮かんだ娘が、今夜透の夢に現れるのだ」\
dwavestop 0
・・・判定文とその以下数行のみですが、見ての通り、選択枝が、全く意味を成していません。原因も、文字変数の認識にあることは、全く同様と思われますが、やはりゲームの進行と関わる重要なトラブルと、考えるしかないですね・・・
あと、12日目(共通ルート最終日)にも、判定文もミスがありますが、これはor判定なので、手作業で書き変えて、対応することにします。
これ以降は、個別ルートになるので、複雑な選択枝はないと思われるので、このトラブルに悩まされるのは4,5,6,7日夜の4箇所のみ・・と思われます。
とりあえず、テストプレイをしている方の中には、こちらの修正を、心待ちにしているいる方もいるかと思われますので、PSP-君にもできること-には、別の解決案を提示しておきます。
こちらが、手作業で直した修正案を試していただくことにします。
修正箇所は、4,5,6,7,12日の5箇所と多くはないのですが、見ての通り、1つの修正す部分が長いのでクレームが来そうですが、とりあえず、付いて来てくれる一部の方に、テストプレイをしていただくしか、前に進めないので・・・
というのも、ほかに不安材料があるからです。
1つは、12日目の選択枝で、6人のヒロインの内5人しか判定文が見当たらないこと(ksファイルを見る限り、の話ですが・・)
あと、ひとつもり様のご指摘のとおり、susumu=trueの意味です。この場所では、2周目めに、さらに沙希の選択枝が加わるようなので、(それに該当する判定文が見当たらないのが、気になりますが)、周回数を判定するフラグだといいのですが・・そう考えても、腑に落ちないですが・・・
この選択枝の修正は、こちらも非常に気がかりなので、ひとつもり様には引き続き、判定文の修正のアドバイスをお願いします。お手数ですが、もうしばらくお付き合いください。
よろしくお願いします。
Posted by: HARU | 2007年08月29日 18:52
すみません、先ほどのコメントですが、誤りがありました。1.txtは一部変化があります。
btnwait %0
if %0 == 0 goto *004_selectbtn2
if %0 == -1 systemcall rmenu
if %0 == 1 cspb:vspa1:print 2:mov $susumu_chr,"ayana":goto *L_susumu_chr_004
if %0 == 2 cspb:vspa1:print 2:mov $susumu_chr,"maho":goto *L_susumu_chr_004
if %0 == 3 cspb:vspa1:print 2:mov $susumu_chr,"asuka":goto *L_susumu_chr_004
if %0 == 4 cspb:vspa1:print 2:mov $susumu_chr,"sino":goto *L_susumu_chr_004
if %0 == 5 cspb:vspa1:print 2:mov $situ_time,"no":mov $situ_file,"no":goto *L_susumu_nothing_004
goto *004_selectbtn2
見ての通り、$susumu_chr,"sino"・・と、文字変数はしっかり入っております。ただ、gotoの行き先の指定がうまくいっていないため、その後選択肢がいっぺんに表示されるのが直っていないだけです。
直すなら、
}elsif (( $line =~ /^\@jump/ ) && ( $line =~ /returnStorage/ )){
print OUT "goto \$10\n";
}elsif ( $line =~ /^\@jump/ ){
$line =~ s/\"//g;
if ( $line =~ /storage=([a-zA-Z_0-9]*)\.ks/ ){
$ks = $1;
}else{
$ks = $fn;
}
if ( $line =~ /target=&/ ){
$line =~ /\'\*(.*)\'/;
$cali1 = $1;
$line =~ /f\.([a-zA-Z_0-9]*)/;
print OUT "itoa \$1,\%$1\n";
print OUT "mov \$2,\"\*L_$cali1\"+\$1\+\"\_$ks\"\n";
print OUT "goto \$2\n";
}elsif ( $line =~ /target.*?=\*([a-zA-Z_0-9]*)/ ) {
$label = $1;
$label =~ s/\"//g;
$label =~ s/\*//;
print OUT "goto *L_$label\_$ks\n";
}else{
$label = $ks;
print OUT "goto *L_$label\_$ks\n";
}
・・・辺りでしょうか。いずれにしても、一歩前進には間違いありません。お手数ですが、よろしくお願いします。
Posted by: HARU | 2007年08月29日 19:26
storage="007.ks" target="*susumu_chr"
からの goto *L_susumu_chr_004 部自体は問題ありません。
どの選択肢でも一様に *L_susumu_chr_004 へ飛び、その後@if exp で条件による分岐をしているはずです。
その辺り、1.txt内を確認していただけますか?
こちらで原文を test.ks と保存して実行したところ
*L_susumu_chr_test
mov %box,150
mov %btn,160
「次にどんな行動を起こさせてやるのだ?」
if $susumu_chr != "ayana" jumpf
if %ayana_situ_a == 0 lsp 21,"image/g_select_off.png",80,%box:lsp 11,":s/24,24,2;#808080#FFFFFFお弁当を作ってくる",90,%btn:add %box,50:add %btn,50
if %ayana_situ_b == 0 lsp 22,"image/g_select_off.png",80,%box:lsp 12,":s/24,24,2;#808080#FFFFFF綾菜と登校",90,%btn:add %box,50:add %btn,50
if %ayana_situ_c == 0 lsp 23,"image/g_select_off.png",80,%box:lsp 13,":s/24,24,2;#808080#FFFFFF綾菜自転車で登校",90,%btn:add %box,50:add %btn,50
lsp 24,"image/g_select_off.png",80,%box:lsp 14,":s/24,24,2;#808080#FFFFFFやっぱり別の娘にするのだ",90,%btn:add %box,50:add %btn,50
~
以下同様
という結果になりました。
この jumpf から ~ までにある選択肢4つは”綾菜”を選択した時のみ表示されます。
Posted by: ひとつもり | 2007年08月29日 20:24
ご連絡ありがとうございます。
ひとつもり様の仰るとおりでした。確かに、その後の選択肢の表示は正常になりました。・・スクリプトだけを見て、早とちりしたようです。ありがとうございます。
ただ、それとは別に大きな問題が、2,3浮上してきました。
①選択肢が選べない
*004_selectbtn3
spbtn 11,1
spbtn 12,2
spbtn 13,3
spbtn 14,4
spbtn 15,5
spbtn 16,6
spbtn 17,7
spbtn 18,8
spbtn 19,9
spbtn 20,10
spbtn 21,11
spbtn 22,12
spbtn 23,13
spbtn 24,14
spbtn 25,15
spbtn 26,16
print 2
textoff
btnwait %0
if %0 == 0 goto *004_selectbtn3
if %0 == 0 goto *004_selectbtn3
if %0 == -1 systemcall rmenu
if %0 == 1 cspb:vspa1:print 2:mov $situ_time,"day":mov %situ_file,:goto *L_susumu_situation_004
if %0 == 2 cspb:vspa1:print 2:mov $situ_time,"morning":mov %situ_file,:goto *L_susumu_situation_004
if %0 == 3 cspb:vspa1:print 2:mov $situ_time,"morning":mov %situ_file,:goto *L_susumu_situation_004
if %0 == 4 cspb:vspa1:print 2:goto *L_susumu_restart_004
if %0 == 5 cspb:vspa1:print 2:mov $situ_time,"morning":mov %situ_file,:goto *L_susumu_situation_004
if %0 == 6 cspb:vspa1:print 2:mov $situ_time,"evening":mov %situ_file,:goto *L_susumu_situation_004
if %0 == 7 cspb:vspa1:print 2:mov $situ_time,"maho_situ_c":mov %situ_file,:goto *L_susumu_situation_004
if %0 == 8 cspb:vspa1:print 2:goto *L_susumu_restart_004
if %0 == 9 cspb:vspa1:print 2:mov $situ_time,"evening":mov %situ_file,:goto *L_susumu_situation_004
if %0 == 10 cspb:vspa1:print 2:mov $situ_time,"evening":mov %situ_file,:goto *L_susumu_situation_004
if %0 == 11 cspb:vspa1:print 2:mov $situ_time,"evening":mov %situ_file,:goto *L_susumu_situation_004
if %0 == 12 cspb:vspa1:print 2:goto *L_susumu_restart_004
if %0 == 13 cspb:vspa1:print 2:mov $situ_time,"morning":mov %situ_file,:goto *L_susumu_situation_004
if %0 == 14 cspb:vspa1:print 2:mov $situ_time,"evening":mov %situ_file,:goto *L_susumu_situation_004
if %0 == 15 cspb:vspa1:print 2:mov $situ_time,"evening":mov %situ_file,:goto *L_susumu_situation_004
if %0 == 16 cspb:vspa1:print 2:goto *L_susumu_restart_004
goto *004_selectbtn3
・・・ボタン関係は、このようになるのですが、このうち1~6番には、どうやっても、カーソルが行きません。例えば、綾菜の場合は、選択肢が1~4番なので、そのまま選べずに、無限ループして、先に進めなくなります。真帆の場合は5~8番なので、下の2つのみが選べるようになっています。
②選択したイベントが発生しない。
上記で例えば、7番を選択します。
7ば「傷の手当て」というイベントで、このイベントは、maho_situ_c.ksに書かれているイベントに移行します。1.txtなら、
*L_maho_situ_c_maho_situ_c に移行するはずです。・・・ただ、実際には次の日にイベントは発生しません。
if %0 == 7 cspb:vspa1:print 2:mov $situ_time,"maho_situ_c":mov %situ_file,:goto *L_susumu_situation_004
005.ksでは、
@hide
@wait time=2000
*page54|
;// 真帆・傷の手当てはここから発生
;--------------------------------------------------------
@eval exp="f.situ_backfile='005.ks'" cond="f.situ_time=='maho_situ_c'"
@jump storage="&f.situ_file" cond="f.situ_time=='maho_situ_c'"
;--------------------------------------------------------
;/////昼イベントがある場合ここまで/////
;--------------------------------------------------------
*situ_day|
;// 真帆・傷の手当ての戻る場所もここ
*maho_situ_c|
;--------------------------------------------------------
@c_grp storage=bg11a
@bgm storage=bgm_07
@show
6時間の授業が終わった、よって放課後である。[np]
・・・こう書かれていて(念のため、周辺の2,3文、追加してあります。
1.txt上では、
textoff
wait 2000
if %situ_time=='maho_situ_c' mov %situ_backfile,:mov %0,0
if %situ_time=='maho_situ_c' goto *L_005_005
*L_situ_day_005
mov %box,150
mov %btn,160
*L_maho_situ_c_005
mov %box,150
mov %btn,160
cspa
print 2
cl a,0:lsp 999,"image/bg11a.jpg",0,0
print 10,500
・・・mov %situ_backfile, の様に、カンマの後が空白なのも気になりますが、どうやっても、
*L_maho_situ_c_maho_situ_cに移行するとは思えません。ちなみに、問題の選択肢は、4~6日夜に計3回選ぶチャンスがあり、次の日の昼間に発生するようです。また、1度選ばれると、もう1度選ぶことがないよう、選択枝から消えます。
さらに、maho_situ_c.ksの冒頭では、既読判定と、好感度判定のフラグについての記載があるのに、
;--------------------------------------------------------
;傷の手当て
@iscript
f.maho_situ_c=true;
f.maho_flag++;
@endscript
;--------------------------------
1.txtにおいては、これらの記載が無視されています。好感度フラグが立たない