HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0402
わんこんdialog命令のテキスト内容を見られないようにしたい7解決


わんこん

リンク

2016/4/2(Sat) 07:48:16|NO.75150

すみません、解決方法を検索したり、
自分でも色々と試したりしたりしたのですが、
どうしても解決方法が分からなかったので
いい解決方法のアイデアがあれば教えてください。

HSPでゲームを作って実行ファイル状態にしました。
「ゲーム名.exe」みたいな状態です。

この実行ファイルをバイナリエディタで開くと
ダンプリストが表示されその横にダンプリストの内容が
Shift-JIS状態で見れます。

バイナリエディタのソフトはいろいろありますが、
どのバイナリエディタもほとんどこんな感じの動作だと思います。

それでバイナリエディタで実行ファイルの中身を眺めていると、
dialog命令で表示されるテキスト内容がShift-JIS状態で表示されているため、
dialog命令で表示されるテキスト内容が丸わかりなので困ってしまいました。

困ってしまいましたと言いますのは、
あるレベルでゲームをクリアすると「隠しステージXに進みますか?」
みたいな感じでdialog命令のタイプ2でYESかNOを選択させて
隠しステージにチャレンジできる処理をしています。

ソースを書くとこんな感じです。

dialog "隠しステージXに進みますか?", 2 if stat=6 { // YESの場合は隠しステージXに進む } else{ // NOの場合は隠しステージXに進まない }


自分としてはゲーム中にあるレベルに到達するまで
この隠しステージXの存在を隠したいのです。
ちなみに隠しステージXはたくさんあるため、
バイナリエディタで実行ファイルの中身を眺めていると、
dialog命令で表示されるテキスト内容が丸わかりなので
思いっきり隠しステージXの存在がバレバレなんです。

自分で考えた解決方法としては、
dialog命令で表示させずに画像でメッセージを表示させるようにし、
その画像メッセージ自体を暗号化しておき、
実際の選択処理のところでメモリ上でその暗号化された画像を復号化し、
表示させる方法を使えば、バイナリエディタなどでみても
このゲームに隠しステージXが存在しているのことは
テキスト内容が書いてないので隠せるのですが、
なにぶん、隠しステージの数も多いため、
dialog命令で処理を行いたいのです。
またdialog命令の方を使った方が処理が楽なので
dialog命令で行いたいのも理由の一つです。

バイナリエディタで実行ファイルの中身を眺められても
なんとかdialog命令で表示されるテキスト内容を隠せないかと考え、
例えば50音を1文字ずつ変数に入れておき、
dialog命令のところで表示させたいテキスト文字の変数を
連結させてメッセージを表示させれば、バイナリエディタで見たときは
変数名だけが表示され、表示されるテキスト内容は隠せるのでは?
と思い試してみましたが、まったく効果がありませんでした。

こんな感じの方法を考え試したみました。
ソースが長くなるので5文字にしてます。


sdim moji,5 moji(0)="あ" moji(1)="い" moji(2)="う" moji(3)="え" moji(4)="お" dialog moji(0) + moji(1) + moji(2) + moji(3) + moji(4)


バイナリエディタで実行ファイルの中身を眺める人なんて
そんなにいる訳でもないのですが、ざっとバイナリエディタで
実行ファイルの中身を眺めたときに隠しステージXの存在を
分からないようにしたいです。

バイナリエディタで実行ファイルの中身を眺められても
dialog命令で表示されるテキスト内容が分からないようにする
HSPでの記述方法がもしあれば教えてもらえないでしょうか。
宜しくお願いします。



この記事に返信する


kanamaru

リンク

2016/4/2(Sat) 09:36:46|NO.75151

テキストファイルに記述して、#epackを使うとかすればいいのでは?
ファイルをパックした場合、内部で暗号化されるので。



cats

リンク

2016/4/2(Sat) 10:49:21|NO.75152

私なら復号化用の関数を作って、
dialog decrypt_string("[data]") ; [data] = encrypt_string("something")
のようにします。



tat

リンク

2016/4/2(Sat) 15:13:42|NO.75156

どうやって実行ファイルを作ってるんでしょう。
エディタからCTRL+F9を押せば自動で実行ファイルが作られますがその場合自動的にstart.axが暗号化されるので
dialogのメッセージがバイナリエディタからみられることはないです。
手動で作っている場合もパックファイル編集で暗号化にチェックを入れてからstart.axを追加すれば同じことができます。



科学太郎

リンク

2016/4/2(Sat) 16:37:16|NO.75157


*Init MsgHide="隠しステージ%dに進みますか?" *Main : dialog strf(MsgHide,StageNo), 2 if stat=6 { // YESの場合は隠しステージに進む } else{ // NOの場合は隠しステージに進まない }
ゲームの起動時に「MsgHide」変数に文字列をセットして
dialog 命令では「MsgHide」変数を第一引数に渡せばよいと思います。

この方法ならばバイナリ・エディタで文字列検索したときに、
初期化部の「MsgHide」変数に文字列がセットされるだけなので
隠しステージの場所は特定不可能でしょうね。



スペース

リンク

2016/4/2(Sat) 17:39:59|NO.75158

データの隠し方に関しては他の方が書いているので実際そういう事をする側の意見を少し。(私個人の意見です)
そそもそもゲームを存分に楽しみたい人はバイナリエディタなんて使わず普通にプレイします。
時間が無い、時間を無駄にしたくない、無駄な作業をしたくない、そういう人がバイナリエディタを使い内容を確認すると思うのですが、
それに対して暗号化して見れなくしたら、モチベーションが下がります。
下手に暗号化はせず、見たい人は見ればいい、という風にした方が最後までプレイする人は増えるのではないでしょうか?



KA

リンク

2016/4/2(Sat) 19:39:28|NO.75161

バイナリエディタで覗く程度の知識があれば、当然セーブデータも
解析する程度の知識はあるでしょう。

それは別として、多数ある「隠しステージ」を「隠し」と言う表現
が適切なのか疑問です。普通は「ボスステージ」「おまけステージ」
「ボーナスステージ」が相当すると思います。

本題に戻りますが
A="普通の"
B="極秘の"
B="禁断の"
B="18禁"
B="隠しの"
C="ステージ"
dialog B+C
なんてしておくと、「隠し」は出るけど他のが出ない!!
と、一生懸命プレイしてくれるでしょう。

「バイナリエディタに文字があるぞ」と文句を言う人はいない
でしょうが、聞かれたら「ああ消し忘れですよ、それが何か?」
とでも返せば良いでしょう。



わんこん

リンク

2016/4/2(Sat) 21:22:21|NO.75162

皆様ご返答とお知恵をありがとうございます!
返信行数が多くなってしまったのでお一人分ずつ
線で区切らせて頂きました。


-------------------------------------------------------
kanamaru様へ

なるほど、「#epack」とか使う方法もあるのですね。
ためになりました!どうもありがとうございました!

-------------------------------------------------------
cats様へ

暗号化した画像を復号化する処理は試してみて作れたので
この後でテキストデータでも実験してみたいと思います。
こちらもためになるお知恵をありがとうございました!

-------------------------------------------------------
tat様へ

>どうやって実行ファイルを作ってるんでしょう。

自分はスプリクトエディタのツールバーの「HSP」のところでSTART.AXファイル作成し、
そのあと、ツールバーの「ツール」のところからPACkFILE編集でstart.axを追加。
そしてツールバーの「ツール」のところからEXEファイル作成で
実行ファイルを作成しておりました。


>エディタからCTRL+F9を押せば自動で実行ファイルが作られますが

え?CTRL+F9ですぐに実行ファイルが作れたのですか!?
うわぁ、知りませんでした。(´ω`;


>パックファイル編集で暗号化にチェックを入れてから

よく見たら「暗号化」ってチェック項目がありますね!?
全然ちゃんと見ていなかったのでこちらもびっくりしました。
いままで全然気づかなかったです…(´ω`;

それで「暗号化」ってチェック項目にチェックを入れて実行ファイルを作ったら
無事にdailogのテキストが見えない状態になっていました。
役立つお知恵をどうもありがとうございました!

-------------------------------------------------------
科学太郎様へ

変数内に引数を渡す記述もできるのですね。
とてもためになりました。どうもありがとうございました!

-------------------------------------------------------
スペース様へ

貴重なご意見ありがとうございます!
確かに普通にゲームを楽しむ方はバイナリエディタは使いませんよね。
そもそも普通の人はバイナリエディタ自体を知らないですよね。(´ω`;

-------------------------------------------------------
KA様へ

>なんてしておくと、「隠し」は出るけど他のが出ない!!
>と、一生懸命プレイしてくれるでしょう。

これはとても面白い妙案ですね。
今度使わせて頂くかも知れませんw
面白いアイデア、どうもありがとうございました!

-------------------------------------------------------



ONION software Copyright 1997-2021(c) All rights reserved.