●魂響~円環の絆~ コンバータ 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_20070910a.rar 08/07/26) a: 変数の代入が正常に行われていなかったのを修正しました。
コメント
製作お疲れ様です
質問なのですが、初期の魂響では、使用できますか?
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においては、これらの記載が無視されています。好感度フラグが立たないのは、いたいですね・・・
さらに、ダメ押し。maho_situ_c.ksの末尾は、
@sbgm
@hide
@wait time=2000
@jump storage="&f.situ_backfile" target="*maho_situ_c"
・・となっているのですが、変換結果は、
stop
vsp 0,0:vsp 1,0:print 1
textoff
wait 2000
goto *L_maho_situ_c_maho_situ_c
・・・これでは、無限ループ?
・・・といった感じです。
ある程度なら、置換作業で、対抗できますが、無理に置換しても、ゲームに進行が出るかもしれません。何か、解れば教えてください。
あと、7日夜は、誰を選んでも、7日終了後に、強制終了します。本来ならdream.ksに移行して、選んだキャラの夢を見た後、008.ksに移行して続くのですが、そこまでいけないようです。
ちなみに、dreamのksファイル冒頭と、変換結果の冒頭を記載しておきます。
;//////////////////////////綾菜/////////////////////////
*ayana|
;--------------------------------------------------
; 回想シーン1始まり
;--------------------------------------------------
@eval exp="tf.event_inside=false"
*event_point1
;--------------------------------------------------
@bgm storage=bgm_31
@show
にちゅ、にちゅ……。[np]
1.txt上:
*L_dream_dream
mov %box,150
mov %btn,160
*L_ayana_dream
mov %box,150
mov %btn,160
mov %t_event_inside,0:mov %0,0
*L_event_point1_dream
mov %box,150
mov %btn,160
bgm "bgm/bgm_31.ogg"
setwindow 170,478,23,4,25,25,1,5,10,1,1,"image/g_window.png",20,445
にちゅ、にちゅ……。\
あと、問題である、007.ksのksファイル末尾と、変換後を・・・
オレは期待せず、その夜眠りにつくのだった。[np]
*page281|
;
;黒画面
;
@c_grp
…………。[np]
*page282|
……。[np]
*page283|
;選択したキャラクターの夢へ・別ファイル参照
;次の日へ
@stopbgm
@hide
@wait time=2000
;--------------------------------------------------------
; 夢のなかで
;--------------------------------------------------------
@jump storage="dream.ks" target="&f.susumu_chr"
以下、1.txtの変換結果です。
オレは期待せず、その夜眠りにつくのだった。\
cspa
print 2
cl a,0:lsp 999,"image/black.jpg",0,0
bg black,0
print 10,500
stop
vsp 0,0:vsp 1,0:print 1
textoff
wait 2000
itoa $1,%susumu_chr
mov $2,"*L_"+$1+"_dream"
goto $2
・・・こんな感じです。
正直な話、毎日のようにこんなに膨大な文章を送られるのは、迷惑だと思います。(というか、立場が逆なら、自分ならそう思う、絶対。)
ひとつもり様の生活に影響を及ぼす意図など、毛頭ありませんので、気が向いたときに、何らかのご返答をください。こちらも、置換作業でできるところなどがないか、もう1度、不具合の箇所をチェックすることにします。
・・・本当に、厄介ごとばかり押し付けて、すみません。それでは、失礼します。
Posted by: HARU | 2007年08月29日 23:50
すみません、上記のコメントの続きです。
イベントに進めない理由は、文字変数でなければいけない場所に、数字変数が入っていることと、ルーチンのラベルの名前の割り当てが、うまく行っていないのが、原因のようです。試しに、
if %situ_time=='maho_situ_c' mov %situ_backfile,:mov %0,0
if %situ_time=='maho_situ_c' goto *L_005_005
を、
if $situ_time=="maho_situ_c" mov %situ_backfile,:mov %0,0
if $situ_time=="maho_situ_c"gosub *L_maho_situ_c_maho_situ_c
・・と書き換えて、return で返せばイベントが発生します。
また、*L_maho_situ_c_maho_situ_c
のルーチン内で、
mov %maho_situ_c,1
mov %maho_flag,%maho_flag+1
を追加すれば、フラグもちゃんと立つようです。
7日目終了後に落ちるバグも、判定文を、
if %0 == 1 cspb:vspa1:print 2:mov %100,1:goto *L_susumu_chr_007
if %0 == 2 cspb:vspa1:print 2:mov %100,2:goto *L_susumu_chr_007
if %0 == 3 cspb:vspa1:print 2:mov %100,3:goto *L_susumu_chr_007
if %0 == 4 cspb:vspa1:print 2:mov %100,4:goto *L_susumu_chr_007
if %0 == 5 cspb:vspa1:print 2:mov %100,5:goto *L_susumu_chr_007
if %0 == 6 cspb:vspa1:print 2:mov %100,6:goto *L_susumu_chr_007
if %0 == 7 cspb:vspa1:print 2:mov %100,7:goto *L_susumu_chr_007
と書き換えて、7日目の最後を
;itoa $1,%susumu_chr
;mov $2,"*L_"+$1+"_dream"
;goto $2
if %100=1 goto *L_ayana_dream
if %100=2 goto *L_maho_dream
if %100=3 goto *L_asuka_dream
if %100=4 goto *L_sino_dream
if %100=5 goto *L_saki_dream
if %100=6 goto *L_nagisa_dream
goto *L_yoshihiro_dream
・・・とすれば、夢も見れて、8日目に繋げられます。ちなみに、$1でどうしても収めたい場合は、上から、
event_point1
event_point6
event_point13
event_point23
event_point8
event_point29
・・で収めなければなりませんが、どういう計算で、このような値が出るかは解りません。
・・問題は、これらの修正を、1.txtの書き換えで行うか、tama.plの修正で行うか、です。1.txtの書き換えだと、膨大な量になってしまうため、他の方に同じことをやらせるのが辛い、という欠点もあります。・・・・とりあえず、参考になればと思い、追記します。
あと、選択肢のバーである、,"image/g_select_off.png"が、選択後にいつまでも残り続けるというバグもあるようです。cspa命令で、消すのがいいのでしょうか?cspa命令や、cl
命令を使った場合、その後のスプライトの表示がおかしくなるバグがあるので、できれば避けたいところなのですが・・・
後は、1~6番の選択肢が選べない、ことでしょうか・・原因がわからないと、対応するのが、キツイです。手作業で書き換えれば、やはりうまくは行くものの、自分1人で遊ぶならともかく、人にやらせるというのも・・・
とりあえず、これで失礼します。
よろしくお願いします。
Posted by: HARU | 2007年08月30日 03:21
すみません。さらに追記を。
上記の$1の値は、
numalias s_event1,249
numalias s_event6,250
numalias s_event23,251
numalias s_event13,252
numalias s_event20,253
numalias s_event29,254
・・これが原因のようです。
でも、これで正しく表示されるのかな?うーん・・・
Posted by: HARU | 2007年08月30日 03:28
・・・すみません。さらに追加情報を・・
@exlink txt="お弁当を作ってくる" storage="005.ks" target="*susumu_situation" susumu=true exp="f.situ_time='day', f.situ_file='ayana_situ_a.ks'" cond="!f.ayana_situ_a" enabled=false
5日目夜の選択肢ですが、最後の、enable=falseと書いてありますが、これは、次の日には、この行動を起こせない、という意味を持つフラグです。
・・これは、次の日に昼食イベントがあるため、弁当を作ってもらうと、昼食を2回行うことになり、矛盾しているため、この日のみ、禁止していることを表します。
@exlink txt="志乃朝起こしに来る" storage="005.ks" target="*susumu_situation" susumu=true exp="f.situ_time='morning', f.situ_file='sino_situ_a.ks'" cond="!f.sino_situ_a" enabled="&f.sino_situ_b"
@exlink txt="志乃肉じゃが" storage="005.ks" target="*susumu_situation" susumu=true exp="f.situ_time='evening', f.situ_file='sino_situ_b.ks'" cond="!f.sino_situ_b"
・・・上記の="志乃朝起こしに来る"の場合のenableフラグは、下記の"志乃肉じゃが"を選んだ後で、初めて現れるという条件をあらわします。
ひとつもり様の現在のコンバータでは、enableフラグを実装していないため、これらを再現するのは相当な手間になると思います。
・・完全に再現するには、手作業で、条件を満たすよう、選択肢を書くのが正解のようです。
・・今回の選択肢のアドバイスについてはキャンセルしようと思います。お手数をおかけして、申し訳ありませんでした。
・・できれば、スプライト表示のアドバイスのみ、後ほどいただけると助かります。
それでは、これで失礼します。
Posted by: HARU | 2007年08月30日 20:36
いえいえ、もともと答えられる時に答えているのであまりお気にせずに。私の方にも役立ちますし。
ただ、それではお言葉に少し甘えてちょっと説明を簡素にさせていただきます。
あくまでアドバイス、とゆーことでご了承ください
文字変数をラベルに含む処理ですが、魂響では数字が入った変数をラベルに入れていたので itoa で文字列に変換しています。
なので、itoa処理をなくして \$$1 をそのまま使えばいけそうですね。
混在することも考えると、if ( $line =~ /target=&/ ){ ルーチンにて itoa の前にif 文を付け、
print OUT "if \$$1 == \"\" itoa \$$1,\%$1\\n";
print OUT "mov \$2,\"\*L_$cali1\"+\$$1\+\"\_$ks\"\n";
とすると
if $susumu_chr == "" itoa $susumu_chr,%susumu_chr
mov $2,"*L_"+$susumu_chr+"_dream"
goto $2
が導けて、上手くいきそうな気がします。
うん、これは今後、私のスクリプトでも取り入れてみたいです。
enable=false はいまいちよく分からないので保留に…
肝心のスプライトボタンですが、lsp で選択肢を表示する際のスプライト番号が上手くあっていないのではないかと?
spbtn と照らし合わせてみてください。
選択肢を表示した時に番号がリセットされていないかもしれないので、これは私の方で改善の必要がありそうです。
Posted by: ひとつもり | 2007年08月30日 21:43
ご連絡ありがとうございます。
早速、試してみましたが、誰を選んでも、あすかの夢に行ってしまうようです。
お手数ですが、修正願います。
あと、変換結果が、
if $susumu_chr == "" itoa $susumu_chr,%susumu_chr\nmov $2,"*L_"+$susumu_chr+"_dream"
・・と2つの文がつながってしまうのですが・・
Posted by: HARU | 2007年08月31日 07:05
ふむふむ、それだけでは状況がさっぱり分からないので対応は無理ですごめんなさい
というかアドバイスなので修正とかはないですよ?
後者は、\\nが間違いですね
\nに直してください。
ケアレスミスやすぐに分かるものなら何とか…m(_ _)m
Posted by: ひとつもり | 2007年09月01日 00:57
すみません。先日にコメントは出勤直前に慌てて書き込んだこともあり、自分でも整理できていない状態で打ったために、返答しようのない文章になってしまいました。申し訳ありません。
とりあえず、こん僕の選択肢の修正案をPSP-君にもできること -に載せておきましたので、よろしければご覧ください。
あまりにも膨大な量のため、クレームがつきそうですが(多分絶対くるでしょう(苦笑))、tama.plのif節全部を入れ替えない限り、これしか方法がないのが現状です。
普通のゲームでは、条件説のフラグ立ては、ほとんど数字変数で行っているようなので、コンバータで対応しきれないのはやむを得ない、のでしょうが・・・
ここで、ひとつ質問があります。
if $situ_time == "moning" && $situ_file == "ayana_situ_a" goto *L_ayana_situ_a_ayana_situ_a
・・例えば、こんな文章で、条件節を作ると、必ずエラー終了してしまうのですが、必ずエラー終了します。文法的に、何か問題があるのでしょうか?とりあえず、数字変数に全て書き換えて、対応しましたが・・・
0.txtで、
numalias situ_file,44
numalias situ_time,45
・・と書いてあるので、文字変数としては使えない、のでしょうか?
他のゲームで同様の対応が迫られたとき、重要になりますので、宜しければお答えください。
よろしくお願いします。
Posted by: HARU | 2007年09月04日 06:29
>HARUさま
君でもできることさまでのコメント拝見しました。
ううむ、力作ですね…お疲れ様でした。
以下お答えを
たまたま魂響では数字変数だった、というだけで文字変数での分岐も普通にあると思います。
処理自体は間違っていない(そのためあすかに行った?)筈なので、ちゃんと文字変数へ値が代入されているかなどチェックするとよかったかもしれませんね。
下の条件節ですが、こちらで同様の式を書いて試したところ問題なく進行するようです。
文法的にも誤りはないため、エラー文が分かると良いのですが…
また、numalias は数字変数を定義しているのではなく、その文字列を以後数値として扱うというものです。
%situ_file は %44、 $situ_file は $44 として正常に動作します。
Posted by: ひとつもり | 2007年09月05日 13:27
ご連絡ありがとうございます。
・・・文法的には、先日の構文は問題ないのですね・・
エラーが起きる状況ですが、変換後の条件文では、
if %0 == 1 cspb:vspa1:print 2:mov %situ_time,"mornig":mov %situ_file,"ayana_situ_a":goto *L_susumu_situation_004
これを受けての、下記の文章なのですが、
lsp 11,"image/cal_today.jpg",227,310,255
print 10,1000
wait 3000
cspa
print 2
cl a,0:lsp 999,"image/black.jpg",0,0
bg black,0
print 10,500
if $situ_time == "moning" && $situ_file == "ayana_situ_a" goto *L_ayana_situ_a_ayana_situ_a
cal_today.jpgがの表示が終わった直後に強制終了してしまうため、考えられそうなものは条件文の、Syntax Errorぐらいだと思ったのですが・・・この後はsetwindowへと続く通常のテキスト表示なので、エラーらしきものは見当たらないのですが・・
個人的には、何がおかしいのか、見当もつかないです。
今回の選択肢のトラブルでは、ひとつもり様のアドバイスを殆ど使えなかったのが、残念です。実際には、かなりいいところまでいっていたようなのですが、公開を早めることを、優先させました。(それでも、konboku.plの書き換えを行っているのは、導入せずにいると、変数の割り当てが狂ってしまい、修正しても、動かないためです。)ただ、、なぜそうなるか、は解らないでいます。特殊な変数を使った覚えはないのですが・・・
あと、ひとつニュースがあります。
その横画を見つめてしまう・・は今までスクリプトに暗号がかかって動かせなかったのですが、m-akita様にメッセージローダをリクエストしたところ、製作してくださり、(しかもksファイル全文出力機能つき!)これにより、動作可能になりました。が、やはりそのまま動かせる、とは行かないようです。立ち絵に問題があります。
このゲームの立ち絵は全てのっぺらぼうで、これに顔パーツを組み合わせて表示させます。(ただし、目パチなどのアニメは無し。)
@rizu costume=pa
(本当は、@rizu costume="パジャマ"、便宜上置換処理で変換してあります。)
このように服装指定指定を前振りしたあと、
@chr c=riz_da_16
という命令を受けて、
riz_Da_pa ・・顔の無い立ち絵
riz_D_16 ・・顔パーツ。服装に関わらず共通。
を表示させるようになっています。
ちなみに、ksファイル冒頭で、
@iscript
// キャラクターの顔共通にできる物はそっちを使うようにする辞書配列
var chrFace = %[
"riz_ba"=>"b",
"riz_bb"=>"b",
"riz_cb"=>"c",
"riz_da"=>"d",
"mik_aa"=>"a",
・・・]; と、名前の変更処理の定義付けもされています。
これに対し、
}elsif ( $line =~ /^\@rizu costume=([a-zA-Z_0-9]*)/ ){
$rizucos = $1;
}
elsif ( $line =~ /^\@chr / ){
if ($line =~ / c=riz_da_([a-zA-Z_0-9]*)/ ){
print OUT "ld c,\"image/riz_Da_$rizucos.jpg\",2\n";
$ldchk[6] = 1;
print OUT "lsp 3,\"image/$1.jpg",2\n";
$ldchk[3] = 1;
}
・・・顔のファイル名の変更はできてませんが、とりあえず、立ち絵の表示だけでも試みたのですが、こちらでも、@rizu_costume関連の文で、Syntax Errorが出ます。
確かに、Perlスクリプトには不慣れですが、これが文法的には間違えているようには思えないのですが・・・
あと、オープニングで縦書きの文章が、複数表示される文章が表示されます。複数表示されるのなら、lsp命令で対応すのが良いのでしょうが、縦書きで表示させるにはどうすればよいのでしょうか?
ちなみに、ksファイル上では、
@overlap_ch txt1="「ふと、思い出す過去がある」" txt2="・・・・となっています。量的には多くないので、手書きでONSで直接書き込めばいいので、Perlスクリプトにこだわる必要は無いのですが・・・
このゲームは、あまり演出は凝ったつくりでは内容なので、この2点が最大の障害(だと思いたい)と思います。お手数ですが、アドバイスをお願いします。
それにしても、Perlスクリプトには余りにも、不慣れのため、本でも買って勉強しようと思うのですが、お勧めの本とかございますでしょうか?もしよい本がございましたら、教えてください。
それでは、今回はこれで失礼します。
Posted by: Anonymous | 2007年09月08日 06:31
>HARUさま
お疲れ様です。
上のエラー、ざっと見た限り問題なさそうですね。
充分確認されているでしょうが、ラベルがないくらいしか思いつきません。
前回の「エラー文が分かれば」。これはONSが不正終了する際のエラーメッセージのことです。
ちなみに私は鍛えた動体視力で見て記憶しています。もとい終了間際でキャプチャソフトを起動して確認しています。
何故かエラーログが出力されないので…
とにかく、こちらを見れば何が問題なのか判別できそうです。
Perlの方も同じく、エラーが出た際は逐次エラー内容が表示されるので確認してみてください。
自分でスクリプトを書く場合はコマンドプロンプトからの起動が必須でしょうか。
とりあえず上記スクリプトをコピペで試したところ
}elsif ( $line =~ /^\@rizu costume=([a-zA-Z_0-9]*)/ ){
$rizucos = $1;
}←全角の括弧
print OUT "lsp 3,\"image/$1.jpg",2\n"; ←2の前で"が閉じている。\"とエスケープ
と、上記の内容を示すエラーメッセージが出ます。
これに従って直していけば問題はないと思います。
さてPerlの参考文献ですが…すみません、私はネットで調べただけなのでよく分かりませんm(_ _)m
なのでPerlの知識はかなりあやふや&偏っています。私こそ良い本があれば読まないと(汗
ちなみに一番参考にしたのは左ブックマークのPerl講座です。
何か躓いたらその都度関数リファレンスを読んだりググったりしています。
お役に立てずすみません。お互いに頑張りましょー
と、加えて縦書きは tateyoko 命令で切り替わるようです。
使ったことはないけれど…。
こちらも左側にある NScripter API Reference 等を熟読するのがお勧めです。
Posted by: ひとつもり | 2007年09月08日 14:46
ご連絡いただいてから、結構時間がったてしまいました。この間に、いろいろと報告したいことが出来ました。
まず、その横顔を見つめてしまう、の件ですが、おおむね、軌道に乗ってきました。現在、立ち絵と、オープニングの調整に入っています。立ち絵の位置合わせに手間取りそうですが、表示自体は出来てますので、しばらくしたら、暫定版を公開できそうです。
・・・という訳で、sonoyoko.plとしての配布許可をいただきたいのですが、いかがでしょうか?まだ、こちらの作業も時間がかかるため、数日中にお答えいただければ幸いです。
結局、立ち絵の表示ルーチンは、
}elsif ( $line =~ /^\@rizu costume/ ){
if ($line =~ /=([a-zA-Z_0-9]*)/ ){
$rizucos=$1;
}
及び、
}elsif ( $line =~ /^\@chr/ ){
if ($line =~ / c=riz_a_([a-zA-Z_0-9]*)/ ){
print OUT "ld c,\"image/riz_A_$rizucos.jpg\",2\n";
$ldchk[6] = 1;
print OUT "lsp 3,\"image/riz_A_$1.jpg\",300.50\n";
$ldchk[3] = 1;
}
という形になりました。結論から言えば、殆ど変わっていませんが、ひとつもり様のアドバイスは大いに役に立っております。ありがとうございます。
とりあえず、こちらの手抜きで、現在の仕様では、ユーザーにksファイルの書き換えも要求してしまう様になっているのがちょっと・・でも、もしこれから吉里吉里のゲームを動かそうとするには、これは必至になるかも・・
ここで、質問があります。
まず、現在のamsp命令を使用した、スクロールや、スプライト移動では、一旦、移動処理を終了してからでないと、他の処理を行えませんが、移動中でも、テキストや音声の並行処理や、ボタン入力待ちを行う方法はないものでしょうか?ゲームの動作そのものには、大きく影響を与えるものではありませんが、宜しければ、お答えください。
後もうひとつ、テキストの縦書きの件ですが、ひとつもり様の仰るとおり、tateyoko命令で、縦書きに可能ですが、あくまで、通常のテキストのみ対応していて、
lsp 1,":s/26,26,2;#FFFFFF「ふと、思い出す過去がある」",0,0:print 1\
lsp 2,":s/26,26,2;#FFFFFF「ふと、思い出す過去がある」",320,0:print 1
lsp 3,":s/26,26,2;#FFFFFF「ふと、思い出す過去がある」",600,0:print 1
・・・といったスプライトの表示には、対応しておりません。lsp命令で、縦書きに出来る方法があれば、教えてください。・・最も、上記のように、セリフが同じものは、1つだけ表示させるようにしても、意味は通るのですが、出来ればこだわりたいので・・
話は変わりますが、PSPでONSの日本語ファイルに置換の掲載は、こちらにとって、とてもありがたいことです。PSP-君にもできること-のざれ様同様、ありがたい限りです。
ただ、大変申しあけないのですが、現在のままだと、使いづらいゲームも多いようです。確かに、Fate/stay nightや、ニトロプラスの作品のように、ファイルを直接指定して表示する作品には有効なのですが、このごろの作品は、そうとばかりは限りません。
例えば、LOVERSOULのSTEP X STEADYでは、
京_制服_頬杖_不機嫌.png
かりん_メイド_おすまし_平静.png
・・・このような立ち絵を表示させるのに、
[speech name="千尋"]
「はて……こ、これはっ!」
[endspeech]
[p]
*|
[cmc]
[context name="立ち絵中央" value="なし"]
[context name="立ち絵中央アップ" value="false"]
[context name="立ち絵人数" value="3"]
[context name="さつきの演技" value="驚き"]
[context name="さつきの服装" value="私服"]
[context name="立ち絵左" value="さつき"]
[context name="立ち絵左アップ" value="false"]
[speech id="STK0048" name="さつき"]
[update]
・・・とこんな感じで、表示をさせます。
いくらなんでも、これは凄まじい。これでは、普通に直接ファイルを出力させた方が楽だろうに、何の意味があるのだろう?と思うほど、とんでもない命令系統になっております。
もし、これを再現するのなら、連番による番号の表記では、とても無理です、ローマ字+半角記号による変換でないと、無理だと思います。
・・・確かに、これは極端な例だとは思いますが・・ちなみに、春萌も似たようなものです。
この2つは、もう少し経験をつんでから出ないとキツいかも・・・
ぶらばん!や EXE の場合は、日本語表記は、なぜか効果音のみで、命令も、
[se buf=0 storage="学校チャイム.ogg"]
・・・といった感じで、割と素直なため、使えそうですが・・
この2本に関しては、同じ会社だけあって、組み方が似ているため、どちらかを作ることが出来れば、もう1つも作れそうです。もっとも、かなりの技術巧者が作っているので、一筋縄では、行かないようですが・・
また、例を挙げることは出来ませんが、立ち絵で、目パチなどの演出があるゲームでも、連番表記では、対応できない可能性は高いと思います。最近はあまりないけど・・
こうなると、吉里吉里の手持ちのゲームは、結構な難度の作品が多い、考えるべきなのでしょうか?・・・ぶらばん!は、やって出来ないことはないかもしれませんが、手強いのは確かでしょうね。
他に共用エンジンで作られているもの言えば、
Majiro ・・夜明け前より瑠璃色な、スカーレット、ラムネ、恋する乙女と守護の楯
Visual Arts・・・CLANNAD、彼女たちの流儀
これぐらいでしょうか。Majiroはやったことないけど、自分に出来るのだろうか・・・・?
また長くなってしまいましたが、これで失礼します。
Posted by: HARU | 2007年09月15日 14:37
>HARUさま
その横、順調に進んでいる様でなによりです。もちろん改変・配布はおーけーですよ。
大分弄って貰っていますし、特に報告してくれなくても大丈夫です(もし気が引ける、というなら事後でも)
amsp等のエフェクトは痛いところですねぇ。
ボタン入力でのエフェクトスキップや、タイマーで音を出したりくらいは出来ます。
ただ、全くの並列で他の処理進行をするのは無理みたいです。文章は特に。
BulletButlersでもおかげでテンポに支障をきたしていたり。
とはいえ、本家Nスクでは最近出たプラグインでそのような処理も出来るようになったのですが…。
>縦書き
なるほど…。for文で上から一文字ずつ配置するとかで無理矢理対応ができるかもしれません。
>ファイル名・吉里吉里
うーん、これはまた厳しいですねぇ。
こうなったらKAG・tjsの処理自体を移植してしまうほうが早いかも…。
吉里吉里はtjsでかなりのことが出来る分、難易度も千差万別ですね。
せめてそのまま読めることが救いでしょうか?
Majiroとかだと命令を分析?することから始めないといけませんし。
VAのものも何だか難しいようで…応援しています(
Posted by: ひとつもり | 2007年09月17日 20:00
>HARUさん
『夜明け前より瑠璃色な』はMajiroではなく、Ethornell(BGI:Buriko General Interpreter)だと思います。Ethornellを使っているゲームは『夜明け前より瑠璃色な』『Nursery Rhyme』『いつか届く、あの空に』などがありますよ。ちなみに、MajiroやVA系のRealLiveならば、どこかに逆汗があったはず。RLdevとか。
Posted by: し〜くる | 2007年09月17日 23:52
守護の楯もMajiroではなかったかも?
ただ体験版を見る限り、Nスクに似たベタテキストで移植はしやすそうな印象でした。
Majiroの方は一応カタハネを参考にしてもらえると多少楽かも知れません。
というかVAの逆汗も同じ所にありましたか
Posted by: ひとつもり | 2007年09月18日 21:57
お二人とも、ありがとうございます。
.arcとついているものは、全てMajiroと思い込んでいたようです・・これからも、色々と駄文を書くかもしれませんが、ご指摘いただけると幸いです。
Visual Artsは、少し苦しそうですね・・少し余裕が出来たら、見てみようと思います。
恋する乙女と・・・については、後で見てみます。スクリプトエンジンにこだわらないほうが、結果としては、いいような気もします。うまく出来そうなら、AXLのゲームはかなりいけるかも知れませんし・・
あ、でもまずは、その横顔を・・を完成させないと・・・
それでは、今回はこれで失礼します。
Posted by: HARU | 2007年09月19日 06:02
恋する乙女と守護の」楯、のテキストファイルを見てみました。
ファイル名こそ日本語ですが、確かに素直な内容のようです。
全く同じ表示命令で、立ち絵とフェイス、フェイスのみ表示の2種類があるゆずソフトのゲームや、ぱっと見た感じ、意味不明なパラメータがあるLOVERSOULの作品よりも作りやすそうです。
今は時間の余裕がないので無理ですが、折を見て挑戦してみたいです。
ところで、今までONSで日本がファイルが使えなかったのは、ONS本体ではなく、アーカイブツールのnsaarcが、全角文字を認識できないこと、に問題があるということでしょうか?
・・・できれば、日本語のファイル名のものと、連番変換の2種類を作ってみたいですね。
できれば、の話ですが・・
それでは、今回はこれで失礼します。
Posted by: HARU | 2007年09月21日 06:57
>HARUさま
nsaarc も基本的には日本語ファイル名が使えるはずです。
機種依存文字か何かで、たまにエラーを吐きますが…。
あんまり必要性がなかったので今までは使用されてなかったのかもですね。
あとは他のNスク系エンジンへの互換性を持たせるためにとか?
Posted by: ひとつもり | 2007年09月21日 22:40
恋する乙女と守護の楯、少しやってみました。
・・どのスクリプトエンジンとも形式が違うようですが・・
カタハネでは無く、使い慣れた魂響コンバータを元にやってみようかと思いますが、情けないことにPerlの書式に戸惑っている有様です。
ぱっと見た感じで、どこが文法的に間違えているのかがよくわかっていない・・1ヶ月は付き合ったのに実に情けないです。
このゲームでは、音関係は、全てSndPlay命令で行うようですが、
SndPlay bgm01,03.ogg,LOOP
SndPlay se01,gaya002.ogg,NORMAL
SndPlay voice09,reporter0012.ogg,NORMAL
この辺りを再現させるのに、
}elsif ( $line =~ /^\SndPlay/ ){
if ( $line =~ / bgm([a-zA-Z_0-9]*)\]/){
print OUT "bgm \"bgm/bgm$1.ogg\"\n";
}
if ( $line =~ / se=([a-zA-Z_0-9]*)\]/){
$wave = $1;
if ($line =~ /buf=(\d)/ ){
$chn = $1;
}else{
$chn = 1;
}
if ( $line =~ /loop=true/ ){
print OUT "dwaveloop $chn,\"sound/$wave.ogg\"\n";
}else{
print OUT "dwave $chn,\"sound/$wave.ogg\"\n";
}
if ( $line ~ / voice([a-zA-Z_0-9]*)\]/){
print OUT "dwavestop 0:dwave 0,\"voice/$1.ogg\"\n";
}else{
print OUT "dwavestop 0\n";
}}
・・・などとやってみましたが、SyntaxErrorの嵐。音ファイルの階層構造や、無関係の処理も入っていますが、文法上のエラーというのはそれ以前の問題。・・すでにあきれられているかも知れませんが、もう少し粘りたいので、気が向いたら、アドバイスをお願いします。
あと、アセンブラ関係について全く知識が無いので、本を買った勉強することにしました。せめて、基礎知識が無いことには話しにならないので、最低限必要なことはマスターしようと思います。
話を進めれば進めるほど、自分の無知をさらけ出すようですが、よろしければ、しばらくお手伝いください。
Posted by: HARU | 2007年09月24日 06:17
前にも書きましたが、エラーの際はコマンドプロンプトにエラーの行数、内容などが表示されるので
それを見ながらちくちく直していくしかありません。
今回だと $line ~ でしょうか?
文法の誤りと言うより、記述上のケアレスミスですね。
どうしてもケアレスミスは出てしまうので、エラーの際はその辺りに気をつけてください。
アセンブラは私もさっぱりなので応援しています。
デバッガを使ってデータ抽出・復号の段階から作業が出来れば色々面白いんですけどねー
Posted by: ひとつもり | 2007年09月24日 15:41
何度も基本的な構文ミスでお世話になり、申し訳ありませんでした。
Perlの方も、本を買って勉強することにします。本の場合、職場にも持っていけるので、勉強の時間が増やせそうなので・・・
こんかい、連絡をしたのは、別件についてアドバイスを頂きたかったからです。
その横顔を見つめてしまう、ですが、選択肢関係で詰まっております。選択肢が少ないゲームのため、いままで、解りませんでした。
このゲームの場合、
;1 未来を誘ってみる
;2 美桜でいいか
@setlink
[exlink target="*select1_1"] 未来を誘ってみる [endlink]
[exlink target="*select1_2"] 美桜でいいか [endlink]
@showlink
・・・こんな感じで表現されているのですが、
変換結果は、
lsp 21,"image/g_select_off.jpg",80,%box:lsp 11,":s/24,24,2;#808080#FFFFFF",90,%btn:add %box,50:add %btn,50
mov %box,150
mov %btn,160
vspa0
*2_selectbtn15
spbtn 11,1
print 2
textoff
btnwait %0
if %0 == 0 goto *2_selectbtn15
if %0 == -1 systemcall rmenu
if %0 == 1 cspb:vspa1:print 2:goto *L_page770_2_2
goto *2_selectbtn15
*L_select1_1_2
mov %box,150
mov %btn,160
*L_select1_1_end_2
mov %box,150
mov %btn,160
csp 3:print 1:lsp 4,"image/kaine_A_01.jpg",505,99
ld r,"image/kai_A_se.jpg",2
・・と、全く選択が出来ない上、全く関係ない場所へジャンプします。ここの場合は、いきなりHシーンから始まります。
構文の形が全く違うため、
}elsif ( $line =~ /^\@setlink/ ){
&sel();
}elsif ( $line =~ /^[exlink target=\"[a-zA-Z_0-9]\"][a-zA-Z_0-9]\[endlink\]/ ){
&sel();
$seltarget = $1;
$seltxt = $2;
}elsif ( $line =~ /^\@showlink/ ){
&selend();
$selnum = 0;
@goto = ();
@gotoexp = ();
print OUT "\n"
sub sel{
$selnum++;
if ( $line =~/cond=\"(.*?)\"/ ){
$ifsel = $1;
$ifsel =~ s/!sf\.([a-zA-Z_0-9]*)/sf\.$1 == false/g;
$ifsel =~ s/!f\.([a-zA-Z_0-9]*)/f\.$1 == false/g;
$ifsel =~ s/sf\./s_\%/g;
$ifsel =~ s/f\./\%/g;
$ifsel =~ s/true/1/g;
$ifsel =~ s/false/0/g;
if ( $ifsel !~ /(=|>| print OUT "if $ifsel == 1 "
}else{
print OUT "if $ifsel ";
}
}
$line =~ /txt=\"(.*?)\"/;
$ashi = $1;
if ( $line =~ /storage=\"([a-zA-Z_0-9]*).ks\"/ ){
$file = $1;
}else{
$file = $fn;
}
if ( $line =~ /target=\*([a-zA-Z_0-9]*)/ ){
$label = $1;
}elsif ( $line =~ /target=\"\*([a-zA-Z_0-9]*?)\"/ ){
$label = $1;
}
printf OUT "lsp %02d,\"image/g_select_off.jpg\",80,",$selnum + 20;
print OUT "\%box";
printf OUT ":lsp %02d,\":s/24,24,2;#808080#FFFFFF$seltxt\",90,",$selnum + 10;
print OUT "\%btn";
print OUT ":add \%box,50:add \%btn,50\n";
$goto[$selnum] = "$label\_$file";
if ( $line =~ /exp=\"(.*?)\"/ ){
$gotoexp[$selnum] = $1;
}else{
$gotoexp[$selnum] = "";
}
}
sub selend{
$seltotal++;
print OUT "mov \%box,150\n";
print OUT "mov \%btn,160\n";
print OUT "vspa0\n";
print OUT "\n\*$fn\_selectbtn$seltotal\n";
for ( $j = 1; $j printf OUT "spbtn %02d,%01d\n",$j + 10,$j;
}
print OUT "print 2\n";
print OUT "textoff\n";
print OUT "btnwait \%0\n";
print OUT "if \%0 == 0 goto \*$fn\_selectbtn$seltotal\n";
print OUT "if \%0 == -1 systemcall rmenu\n";
for ( $k = 1; $k if ( exists($gotoexp[$k]) ){
print OUT "if \%0 == $k cspb:vspa1:print 2:";
&flag($gotoexp[$k]);
print OUT "goto \*L_$goto[$k]\n";
}else{
print OUT "if \%0 == $k cspb:vspa1:print 2:goto \*L_$seltarget\n";
}
}
print OUT "goto \*$fn\_selectbtn$seltotal\n";
}
・・・・$seltarget(新規に作った選択後の行き先)、$seltxt(選択肢の文章)の二つを作ってみたのですが、うまく機能していません。
何とかして、
if %0 == 1 cspb:vspa1:print 2:goto *L_select1_1_2
if %0 == 2 cspb:vspa1:print 2:goto *L_select1_2_2
・・という感じで変換したいのですが、どうやればいいか、よく解りません。(ちなみに、ラベル名は、自動生成されたラベルの行き先を仮に書いてみました。)
このゲームの選択肢は、expといった、他のパラメータの無い、シンプルなもののようですが・・・
恋する乙女と守護の楯、とりあえず後回し・・・原文のテキストを見る限り、シナリオのジャンプ先がわかりずらいのが、ネックになりそうです。一旦、オリジナルを全てクリアして、フローチャートを簡単に作って確かめた方がいいかも(このゲームの場合、かなりしっかりプレイしないと、すぐにバッドエンドに突入するなど、フラグの条件も結構厳しそうですし)・・・何はともあれ、先にその横画を・・を何とかしたいので・・・
・・話はまた変わりますが・・ひとつもり様の新型PSPの画面に映っているゲームは、「おとボク」に見えますが、PSPで動かせたという話は聞いてないのですが・・注釈システムはどうやって再現させているのでしょう?
実は、キャラメルBOXは、かなり好きなメーカーなので、非常に気になるのですが・・・
Posted by: HARU | 2007年09月30日 21:41
ではアドバイスです。
正規表現によるマッチングがうまくいってないみたいですね。
Perlで作業するに当たっての肝なので、是非とも頑張ってください。
その横顔の選択肢自体は車輪の国(向日葵)とほぼ同一のため使い回せるかも知れません。
新型PSPのは…ハメコミ合成デスヨ?
それは置いておいて、まあ一応PSPで動いていない(筈)のものを手がけております故従来通りということで。
Posted by: ひとつもり | 2007年10月01日 21:23
お久しぶりです。
その横顔・・の選択肢の件ですが、色々試した結果、車輪の国のものをベースにすることで、対応できました。(ただ、少し変更してあります。)
exp等のパラメータの取得がうまく行っていない箇所がありますが、該当する箇所が少ないため、置換処理で対応した方が早そうです。志の低いやり方ですが、結果オーライ。まずは、完成させることが優先、ということで・・・
まだ、細かい調整が必要なので、公開は先になりそうですが・・
やはり、正規表現を理解するのに、手間取っております。じっくり取りくむしかなさそうですね・・・
その正規表現の件ですが、tama.plの中で、いくつか意味が解らないものがあるので、教えていただけると助かるのですが・・・以下のものが、それです。
(?:\p{Han}|\p{Hiragana}|\p{Katakana}|\p{InCJKSymbolsAndPunctuation})
(。。| )
(=|>|<)
(なぜか、一部の記号がブログ上で、表記できないため、全角文字が混ざっています。)
本も購入して読んでいるのですが、これらについては、載っていなかったので、よろしければ、アドバイスをお願いします。
全角文字の対応するものだとしたら、恋する乙女と・・などを行ううえでは重要になりますので、よろしくお願いします。
(もうPocketPC版は出ているので、ONS版でも誰かに先を越されるかも知れませんが・・)
だとしても、その方のコンバータの内容を見て勉強したいので、望むところですが・・
それでは、今回はこれで失礼します。
Posted by: HARU | 2007年10月08日 04:57
おひさしぶりです。
毎回思うのですがアドバイス、というのはなかなか難しいですね…
一番目。
ユニコードで使用される文字ブロックです。
二番目。
euc-jpでの全角空白がshift-jisだとこうなります。
三番目。
(いち|にい|さん) のように"|"で区切った物のどれかがあればマッチする正規表現です。
この場合は中身も記号だったので分かりにくかったですね。
Posted by: ひとつもり | 2007年10月09日 20:48
いつもアドバイスをありがとうございます。
確かに、何かを教えるということは、大変なことだと思います。ただ、とても参考になるのも事実で、本当に助かっています。
さすがに、1から学び直しているので、Syntax Error などは、自己解決できるようにはなりました。これからは、本当に自力で出来そうないことに絞って質問しようよ思います。
・・まずは、自力でどうにか試してから、聞くことにしますので、よろしければ、よろしくお願いします。
・・ところで、恋する乙女と・・は、シナリオ分岐が複雑(どうやっても、話がつながらない)・・と、以前、書いたような気がしますが、どうやら、シナリオファイルを正確に解凍できていなかっただけのようです。
ExtractDataではなく、お楽しみCDだとうまくいきました。これで、何とかなるといいのですが・・・
CGも、α値を持ったまま展開するには、お楽しみCDだけのようですし・・もしかして、どこかで、プラグインを見落としているのかな?
何はともあれ、ありがとうございました。それでは、失礼します。
Posted by: HARU | 2007年10月10日 06:59
・・・すみません、またアドバイスを伺いたいと思います。
・・・といっても、今回はPerlのことではありません。恋するする乙女と・・で、予想外の障害が出てきました。画像です。
このゲームの立ち絵は、余白部分がすべて白で塗りつぶされているため、通常の方法では、透過表示が出来ません。
・・・スクリプトの変換作業は順調に進んでいるため、うまくいけば数日中に公開できそうなんですが・・・
毎度のことで、本当に申し訳ありませんが、アドバイスをお願いします。
Posted by: HARU | 2007年10月12日 06:47
>スクリプト展開エラー
Linar + masaemonさんの所のスペースプロジェクト系pluginでやったら見た感じつながってるような気がしますが・・・
エラーの場合どの辺が明らかにおかしいでしょうか?
>透過
プラグインの設定で背景色を変えられる模様なので32bit→24bitのチェックを外しつつ背景色を普通は使わない色(原色の緑とか)に指定すれば何とかならないかなぁとか
ONSの画像の透過設定をαではなく画像の左上の1ドットか右上の1ドットを透過色に指定してやればそれで透過処理できると思います
画像ファイル名の頭に:l;か:r;をつける事になるんでしょうか・・・
ONSがそっちに対応してたっけなぁ・・・
Posted by: ざれ | 2007年10月12日 14:43
tama.plの↓の
$ifsel =~ s/sf\./s_\%/g;
って
$ifsel =~ s/sf\./\%s_/g;
じゃないんですか?
if ( $line =~/cond=\"(.*?)\"/ ){
$ifsel = $1;
$ifsel =~ s/!sf\.([a-zA-Z_0-9]*)/sf\.$1 == false/g;
$ifsel =~ s/!f\.([a-zA-Z_0-9]*)/f\.$1 == false/g;
$ifsel =~ s/sf\./s_\%/g;
$ifsel =~ s/f\./\%/g;
$ifsel =~ s/true/1/g;
$ifsel =~ s/false/0/g;
if ( $ifsel !~ /(=|>| print OUT "if $ifsel == 1 "
}else{
print OUT "if $ifsel ";
}
}
Posted by: Anonymous | 2007年10月12日 17:26
画像について続報というかなんと言うか
背景を塗りつぶしたbmpから一括でα透過のpngに出来るソフトを発見したので報告~
ttp://www.h4.dion.ne.jp/~fht/
のPhotoShifterのフォーマット設定のpngタブで透過の指定を有効にするにチェックを入れ、色指定のチェックは外してアルファ値を0に指定で出力するとαチャンネルを付加できるようです
png2Mjpg_slowにかけた所、マスク画像がしっかり出力できたんで問題なく使えると思います
ただし一度に多量に投入すると落ちるので一気に全部とは行かないようですが・・・
Posted by: ざれ | 2007年10月12日 18:11
連投失礼
しかしこれだとゴミが残りますね・・・
どうしたもんか
Posted by: ざれ | 2007年10月12日 18:27
>HARUさん
実際にどのような形式なのかよく分かりませんが、α値があるのなら余白が白くても正常に透過されます。
もしα値がそもそもない場合は、ざれさんの言う様にNスクの透過形式を変更することで対応出来るかと思います。
>Anonymousさん
あらら、これはミスですね。ありがとうございます。
魂響では幸い影響はないようですが、他の作品のためにも一度チェックしてみます。
>ざれさん
元々のα値がない画像だと、上の形式で透過させてもどうしてもゴミは残ってしまいますねぇ
ただ、これは FastStone imageviewer の代わりに背景画像などを全不透過化させるのには便利かも知れません。覚えておこう…
Posted by: ひとつもり | 2007年10月12日 23:11
>ひとつもり様、ざれ様
アドバイス、ありがとうございます。
返答が多少遅れましたが、何とかなりました。
ただ、PhotoShifterを使うと、余白だけでなく、本来表示させたい白い部分が全てつぶれてしまうため、残念ながら、使えませんでした。Nスクの透過設定の変更は試してはおりませんが、恐らく同様の結果が出ると思います。
・・・ただ、解決案は思いのほかシンプルでした。お楽しみCD69の、koitatcvで、「α値のある画像のみを、PNGで出力」で、PNG出力した画像をFastStoneImageViewerで縮小・・・これだけでした。
koitatcvで出力した画像を、そのままpngMjpeg_slowで掛けても、なぜかα値が無視されてしまったため、ドツボにはまってしまったようです。こんなことは初めてなのですが・・・
ただ、α値が無い画像の場合は、上記の方法でも、おかしくなってしまうため、出力したBMP画像を、どのツールを使っていいから、PNG変換→pngMjpeg_slowに掛けるというPNG,JPG折衷案を採用することで、いい感じの絵になりました。
(ただ、この方法だと、立ち絵よりも背景の方がややクッキリと写ってしまうのが残念ですが・・)
あと、申し訳ありませんが、ざれ様には、こん僕のときと同様、差分バッチを作っていただけないでしょうか?ざれ様から頂いたファイルを元に自作したのですが、
引数の数が一致していません。または不正なプロパティを指定しています。:'Replace' ・・このエラーが出て、どうしてもいかないので・・
こちらの技量不足で、ご迷惑をおかけしますが、ご協力いただけると助かります。
(変更箇所事態は、、それほど多くは無いのですが・・)
詳細は、後ほどPSP-君にもできること-にアップしますので、そちらをご覧ください。
それでは、今回はこれで失礼します。何度もお手数をおかけしますが、よろしくお願いします。
Posted by: HARU | 2007年10月14日 17:05
ふむ・・・
画像をアーカイブから切り出すときにプラグインの設定で背景色を白(FFFFFF)から別の色に変えれば白が潰れる事はないと思います
Linarのプラグイン設定から背景色の設定変更は可能なようですし・・・
koitatcvの画像は私はpngMjpeg_slowで正常に出力できている模様です
バッチについては了解です
書き換えリストいただければ作成しますです
Posted by: ざれ | 2007年10月14日 17:29
>ひとつもり様
先刻、PSP-君にもできること-に、恋する乙女と守護の楯コンバータの初版(と言うよりはお試し版?)をアップさせました。
事後承諾になりますが、tama.plを元にしておりますので、報告と、配布許可を頂きたいのですが、よろしくお願いします。
こん僕のときでもそうでしたが、画像処理よりも、ゲームを進められることに重点を置いて作られているため、先に進められると思うのですが・・・画像関係は、余裕が出来たときに少しずつ改善したいかな?・・と言う感じです。
今回は、完成を急いだために、日本語ファイルの変換は、試しておりません。これも、時間が出来たら・・PSP以外でやりたい方がいたら重要になりますので・・・
今回は、スクリプトエンジンが違うため(実は、恋たてがどんなスクリプトなのかはいまだに知りません。)、変更点が多いですが、もともとtama.plが優れたコンバータのため、結構残っています。
タイマー割り込みを利用した、コマ割りによるスプライト移動とかは、いいアイデアですし・・(と言いつつも、まだスプライト移動を実装してないけど・・・)
・・・惜しむべくは4次変換。
<If *L_yurijudge,(%yuri_flag>=%yuki_flag),&,(%yuri_flag>=%renn_flag),&,(%yuri_flag>=%mari_flag),&,(%yuri_flag>=%setu_flag)>
}elsif ($line =~ /(\S*)judge\,\((\S*)\)\,&\,\((\S*)\)\,&\,\((\S*)\)/){
print OUT "If $2 && $3 && $4 goto $1judge";
・・・という形で再現しようとしたのですが、まるで無限ループのように処理が長引いたため、Perlで行うことをあきらめたのですが、何か問題があるのでしょうか?
一応、解決はしているのだ、アドバイスが欲しい、というわけではないのですが・・・
話は変わりますが、やはりおとボクコンバータは、気になります。時間的に余裕が無いので、まだこちらは、試していませんが・・
もし完成した暁には、アリスマと、うつりぎ七恋の移植は私が・・・・・
嘘です冗談です滅相も無いです(笑)。・・本気にしないでくださいね。それはともかく、期待しております。
ヴァルキリープロファイル(?)は、かつて自分も探してました。よく見つかりましたね・・・うん、すごい。
それでは、今回はこれで失礼します。
Posted by: HARU | 2007年10月14日 22:32
恋楯のアルファ値保持したままの変換が出来たので報告までに
展開にはSPIユーティリティを使用
設定→プラグイン設定から背景色を000000に設定、32bit→24bitのチェックを外し、アルファブレンドをするにチェックして出力ファイル形式はpngで出力
png2Mjpg_slowにかけると綺麗にマスク付きjpgが出力されました
君でもできることにも報告入れときますです
Posted by: ざれ | 2007年10月15日 13:54
>HARUさん
PNGの件、解決できたようで良かったです(まあ私は何もしておりませんけれど)
そして守護の楯コンバータお疲れ様でした。
配布はいつも通り問題有りませんよ。
というかむしろ毎度コメントも付いてないものを再利用して貰って申し訳ないような。
複数のフラグ判定のところは split で配列にいれてそれぞれ処理をするといいかもしれませんね。
キャラメルBOX作品は、当分当該作を購入する余裕がないのでやっていただけると大変嬉しくはあります。
ただ今回相当に訳のわからん工程でやっておりまして、
これをよそ様に弄って頂くのはちょっと犯罪的な香りがしていたり。
そのためサポートもあまり出来ないと思いますのでご了承願います(感謝と応援はいくらでも^^;)
っていやまあ、こちらも冗談です(追記)
あとヴァルキリー、見つけたというか、一応作者なのです。恥ずかしながら…
それは置いておいて、今後の活動も頑張ってくださいませ。
>ざれさん
α値を正常に抜き出すまでが勝負ですねぇ。
お疲れ様でした。差分パッチも大変だと思いますが期待しています。
Posted by: ひとつもり | 2007年10月15日 23:03
おとボクコンバータの製作、お疲れ様です。
すぐには取り掛かれないかもしれませんが、非常に楽しみです。
ヴァルキリーの件は、驚きです。海外の奥深くのサイト辺りまで見ないとないかもしれない、と思っていたのに・・まさかこんな身近に作者がいようとは・・・(ネットで身近も何もないのでしょうけど・・)
・・で、今回の本題です。
AXLの「キミの声が聞こえる」コンバータが今夜中にアップできそうです。
という訳で報告と、配布許可を(もう許可はいらない、と言うかもしれませんが、念のため。)
・・さすがにそのままで、とはいかないようなので、調整は必須でしょうが、動くことは確かなので・・
それでは、今回はこれで失礼します。よろしくお願いします。
Posted by: HARU | 2007年10月17日 07:01
このコンバータで、EXTRAモードでのCG閲覧は正常にできるのでしょうか?
もし自分だけできてないと嫌ですので・・・。
Posted by: kuzu | 2007年12月30日 19:26
すみません、EXTRAは実装してないのです。
ボタンは押せるけど誰がやっても落ちます orz
Posted by: ひとつもり | 2007年12月30日 20:11
どうも 初めまして、
ひとつもり様が作成された。コンバータを
使用して、魂響をPSPで遊んでるのですが、
真咲ルートの最後の戦闘シーンでナイフを
投げる所があると思います。
そこの部分でどうしてもナイフが当たらず
バットエンドになってしまします。
これはどうすれば、進めるのでしょうか?
戦闘ゲージメータが半分のところでなげれば
進めるというのですが、戦闘ゲージに変化が
見られないためどうしよう無くて困っています。
助けていただけないでしょうか?
環境
PSP2000 4.01M33
ons ver 20070823v4
Posted by: fu | 2008年07月25日 03:31
>fuさん
ご報告ありがとうございます。
申し訳ありません。正規表現のミスで変数の変数への代入が正常に行われていませんでした。
修正しましたのでご確認ください。
(ゲージはやはり動きませんが、内部で時間を取得しています)
Posted by: ひとつもり | 2008年07月26日 19:30
ひとつもり様
修正ありがとうございます。
早速 試してみます。
Posted by: fu | 2008年07月26日 22:37
すみません。再度修正しました。
お手数をかけますが、ファイル名そのままで落とし直してみてください。
getbtntimer の位置変更。
より本来のスクリプトに沿った時間取得が出来ている、筈です。多分……
Posted by: ひとつもり | 2008年07月27日 10:35
ひとつもり様
修正されたファイルで試してみたところ
無事に進むことができました。
お手数おかけして申し訳ありません。
ちなみにこのコンバータは ons 2007823
を使うと、画像が△を押さないと出てこないです。 2008110を使うと問題ないのですが
タイトルのスタートが表示されません。
これはどうすれば、解決できるのでしょうか?
Posted by: fu | 2008年07月27日 16:14
ご確認ありがとうございます。こちらこそ見落としていたので助かりました。
>画像が△...
あー、PSPで画像が即時に描画されない問題がありましたね……
そういえば最近のはシステムカスタマイズでやっていたのであまり意識してなかったです。
新ライブラリで作成された0823でも駄目なんでしたっけ(汗
200801xxで『START』が出ないのは無駄に windowchip命令を使っているのが原因なのですが、
ここを修正しても draw命令による拡大表示に不具合があるので200801xx は魂響ではかなりお勧めできません。
大変恐縮ですが、ONS0823の最新版を使って駄目な場合は現状対策がない状態です。
(システムカスタマイズ+拡張スプライトへ移行する予定も今のところありません)
ご了承下さいませ。
Posted by: ひとつもり | 2008年07月29日 21:35
ひとつもり様
了解です。 質問に付き合って頂いて
ありがとうございました。
また 何かありましたらよろしくお願いします。
Posted by: fu | 2008年07月30日 14:15