Top > EasyFAQ > 93
HTML convert time to 0.007 sec.


EasyFAQ/93

Last-modified: 2009-12-13 (日) 20:26:16

エラー38が解決できない Edit

投稿者りょうたろ
重要度
edit/refer
状態
edit/refer
カテゴリ
edit/refer
HSPバージョン3.1
E3Dバージョン5.1.0.2
回答
edit/refer

ここから下を自由に編集してください。
上の投稿情報は安易に編集するとFAQリストのリストアップに支障が出るものもあります。
よく分からない方は分かる人に聞いてみてください。

  • HSPのフォルダに指定のファイルを入れたのにエラー38が出続けます。格闘ゲームのキャラクターやモーション、ステージを名前はそのままで内容だけ変えて自分用のゲームにしたかったのですが、プログラミングをコピー、ファイル名などだけ変えただけでは実行できないのでしょうか? -- りょうたろ? 2009-10-29 (木) 23:46:18
  • ”名前はそのまま”と”ファイル名などだけ変えただけ”の部分がよくわからないのですが、、、
    例えばスクリプトのファイル名であるfight.hspと言うファイル名をkakuge.hspに変えただけだとしたら、それは問題なく動くはずです。元のfight.hspはちゃんと動きましたか?
    あと、kakuge.hspはfight.hspと同じフォルダの中にありますか?これが違うとパスが変わってしまう場合が多いので、データのファイルを見つけることが出来ないはずです。
    もしデータ類のファイル名を変えたのだとしたら、ちょっと面倒な事になりますね。
    例えば元の作品では”ジョー”というキャラクターがいて、joe.sigやjoe.moaなどを読み込み、hsidはhsidjoeだったとします。
    そこにマックスというオリジナルキャラクターを登場させようとしてmax.sigやmax.moaを置いても、これをそのまま読み込んで”ジョー”と差し替えてくれるという事はないと思います。
    max.sigやmax.moaの名前をjoe.sigやjoe.moaに変更する事でとりあえず読み込み、とりあえず差し替えることは出来ると思います。
    ただし、「内部でキャラクター名やリソース類がどう言う考え方でまとめられているのか?それと一致しない場合意外なトラブルが出るかも」「”ジョー”と”マックス”ではモデルのサイズが倍ほど違うので、読み込み時にサイズを調整しなくてはいけない」とか問題が出る可能性はあります。
    結局、この場合で言う”ジョー”のモデルを改造する所から始めた方が確実かもしれません。
    最も簡単なのはテクスチャの描き換えです。モデルデータをいじる場合にはjoe.sigをRDB2で読み込み、MQO形式で書き出し、メタセコイア上で「角をつける」「帽子をかぶらせる」など簡単な変更を行う。RDB2に読み込んで追加した頂点を適したボーンに設定。sig形式で書き出して元の場所に戻すと言う作業になります。ココまでならスクリプトを全く触らなくても自分のオリジナルキャラクターを登場させる事ができるでしょう。
    オリジナル技を入れたいと言う場合なら、モーションを改造する事である程度は実現できるでしょう。
    「パンチのモーションがどうもヘロヘロしてるから俺が直してやるぜ!」ぐらいなら問題ないと思います。
    全くのオリジナル技を追加するとなると、moaにイベントを追加し、効果音などの効果を追加する必要が出て来ます。その他もろもろの改造もありますので、これはスクリプトの書き方を理解する必要が出て来るでしょう。スイートポテト -- 2009-10-30 (金) 11:34:19
  • 名前とファイル名で矛盾して申し訳ありません。スイートポテトさんがおっしゃている通りのことをしていました。sigやmoaは一から自分で作りましたが、キャラクタやステージ、使用画像は違う名前で、それ以外のモーションの名前はそのままにしてあり、それらを好きな名前で作ったフォルダに入れています。そして参考書のROMにあったスクリプトをそのままコピー&ペーストして、そこに書かれているキャラクタ名やフォルダ名などだけを変更していました。そのスクリプトは自作データのあるフォルダに入れています。それと自作キャラクタのサイズがtirinの3分の2程度であることも気付きました。自分でつけた名前のままやるためには一からスクリプトを本の通り書けば安全でしょうか? -- りょうたろ? 2009-10-30 (金) 21:03:51
  • あ、おちゃっこさんの本のサンプル格ゲーだったんですね。
    この例に限って言えば”tirin”と言う単語は52行目と57行目に2つずつ入っているだけですから、とりあえずそこを書き換えれば読み込んでくれると思います。4ヵ所書き換えればオッケーですね。
    ”pirin”の方も差し替えるなら64行目と69行目の4ヵ所も書き換えましょう。
    背景と地面はそれぞれ87行目と89行目ですね。
    もし、もっと大量に書き換える場合なら、HSPスクリプトエディタの上の所にある”検索”機能が便利ですよ。見落としをチェックするのにいいですし、単純な差し替えなら”文字列の置き換え”で一発書き換えなんて事もできます。
    あ。もちろん自分で書くのもいいと思います。モデルの表示など自分なりにできる所から初めて、わからなくなったらサンプルを見るとか。
    E3D に入っているサンプルもいちいち参考になりますから一度は全部見ておくことをお勧めしますよ。ではー。 -- スイートポテト? 2009-10-30 (金) 21:30:12
  • まったく同じテーマの質問があるので、そこを使ってほしかったな。と少し思いました。
    エラー38が出る原因は?
    今回の場合は、「ファイルが見つからない」パターンなのかな?仕組みを理解する前にデータの差し替えをやるのなら、いっぺんにたくさんのデータを入れ替えようとせず、1個ずつ試しながらやっていくとよいかと。
    そうすれば問題が把握しやすくなるし、修正が必要な箇所も見つけやすいです。さらに関連性もわかってくるので習得にもよいかと。 -- GENKI? 2009-10-30 (金) 22:44:29
  • あ、一つだけ気になった事を追記。
    パスの意味はわかりますか?dir_curはスクリプトファイルをおいてある現在のフォルダです。以降はフォルダ名が列挙されており、最後にファイル名があります。
    これがわかっていれば好きなファイル名やフォルダ名をつけてもちゃんとファイルを指定できるんですが、そうでなければ出来るだけサンプルのやり方に合わせた方がいいですよ。
    具体的にはパスで検索すればいろいろ勉強になるはずです。-- スイートポテト? 2009-10-30 (金) 23:21:03
  • 自分なりにスクリプトを理解しながら書き直していたつもりですが、どうしてもB、N、Mを一連で押したときに出るエラー38の原因が分かりません。GENNKIさんに教えていただいたページも拝見し、考えたのですがやはり分からないです。 -- りょうたろ? 2009-11-07 (土) 20:19:37
  • どう書き換えたかが判らないのでとりあえずなんとも言いようがないんですが、単純攻撃や単純防御は問題ないんですね?
    BNMを連続押しした時に出る大技を改造したい。気持ちはとてもよくわかります。
    「1本背負いみたいなヤツの方がいいな」とか自分のアイデアを入れたくなりますよね。
    なんならピカッと光っているようなエフェクトを加える事も出来ます。
    派手な効果音を入れる事も出来ます。
    やろうと思えばいろいろ出来ますからねE3Dは。
    しかしコレはちょっとした工事が必要になるでしょう。
    「1本背負いなら相手の方向にオシリを向けて頭越しに投げ飛ばす」と言う動きが必要になります。
    相手の方向を取得するにはどうすればいいのか?取得した情報の中のxとzの値を*-1してオシリを向けるようにして、、、といろいろやるべき事が出てきますからね。
    無造作に変数名を変更して変数が迷子になっていないか?単純なキーの打ち間違いがあるかも?
    焦らずに取り組んで見ましょうとしか言いようがないですが、モチベーションを保てる面白いポイントだと思うので、なんとかがんばってみましょう。
    要点がわからなかったので、なんか無責任な文章になってしまいましたが、、、 -- スイートポテト? 2009-11-10 (火) 10:03:53
  • まずは何行目でエラーが出てるのかを確認しその命令が現在サポートされているかや引数にミスタイプなどが無いかを確かめるのが第一にすることです。それでも分からない場合はdbg.txtをみるといいです。E3DInitよりも前でE3DEnableDbgFileを1回だけ呼んでおきます。するとログ情報がdbg.txtに出力されます。dbg.txtをerrorという単語で検索するとエラー情報が書いてあることがあります。dbg.txtは起動するごとに内容が破棄されるので保存したい場合は名前を変えておいてください。引数に実際どんな値が入っているかを調べるのも有効です。dialog命令で画面に表示してもいいですがE3DDbgOutを使ってdbg.txtに出力し後でまとめてチェックする方法も有効です。 -- おちゃっこ? 2009-11-15 (日) 07:23:40
  • dllと作業したRokDeBoneのバージョン差による問題である可能性を排除するため、最新のプラグインをインストールしてみては。これでエラーが出ないか動作一度確認を。
    次はおちゃっこさんが言うように引数のチェック。一応提出、デバッグの参考資料はこちら。…(HSPwiki - デバッグの仕方) -- GENKI? 2009-11-15 (日) 10:42:45
  • お恥ずかしいことに一か月越しで悩んだものの何も分からないままです。dbg.txtでerrorを検索したところ以下がerrorを含むものでした。
    texbank : CreateTexData : D3DXCreateTextureFromFileEx error 88760b59, C:\game\Media\1Player\dummy!!!
    BgDisp : g_texbnk : CreateTexData 2 error !!! set null texture
    texbank : CreateTexData : D3DXCreateTextureFromFileEx error 88760b59, C:\game\Media\bmpfile\dummy!!!
    shdhandler : GetBonePos : this element is not bone error !!!
    handlerset : GetBonePos : shandler GetBonePos error !!!
    e3dhsp : E3DGetBonePos : curhs GetBonePos error !!!
    ネットでも調べてみたのですがさっぱりでした。このエラー群がどういうものか教えていただけませんでしょうか。 -- りょうたろ? 2009-12-10 (木) 14:35:35
  • 1 2と4 5行目はテクスチャの読み込みに失敗してるみたいですね。モデルデータをフォルダに入れた時テクスチャも同じフォルダに入れましたか?
    メタセコ上でモデリングする時、モデルと同じフォルダにテクスチャを置いて、相対パス(この場合TEX_1.jpgなどファイル名だけ)で指定し、RDB2で.sig形式にした後テクスチャも同じフォルダに入れてやれば問題ないと思います。
    3行目は背景の2枚目のテクスチャが指定されていないようですね。1枚目は普通の背景画像。そこに2枚目の背景を設定できるようになっています。空を雲が流れて行くような場合に設定します。これはE3DCreateBGの3番目のパラメータで指定できます。ココを空欄にしたい場合はわざと存在しないパスを書き込みます。一枚目がback1.jpgなら二枚目にbakc1.jpgなど存在しない名前を指定すれば問題ないと思います。
    以降は、キャラクターを差し替えた時に、ボーン構造その物が変わっているので必要なボーンを見つける事が出来なくなっているようですね。
    大技発生の時キャラクターの手のボーン位置を取得して相手をつかみ(つまり自キャラの手の位置に相手キャラクターを置く)投げる時の部分でしょうか?
    もしそうなら、差し替えた自キャラの手のボーンを取得して、スクリプト側がそのボーンを指定するように書き換えれば、とりあえず自キャラの手に相手キャラがくっついてくれると思います。
    ↑こちらの憶測で書いている部分が多いので、この文章の中に間違いがあるかも知れません。その時は混乱させてしまってすいません。ではまた。--スイートポテト? 2009-12-10 (木) 20:54:02
  • 投げ技のためにモデルデータの手の先のジョイントのIDを指定する部分があります。モデルデータを変更した場合はこのジョイントのIDも変更する必要があります。本のサンプルでいうと62行目のici(0,ICI_NAGEJOINT)=17というところと74行目のici(0,ICI_NAGEJOINT)=28というところです。ジョイントのIDはRokDeBone2で確認できます。モデルを読み込んで階層構造エディタで手の先のジョイントの名前を右クリックします。出てきたダイアログのserialnoの数字がIDです。E3DGetPartNoByNameという命令でもIDを取得することが出来ます。 -- おちゃっこ? 2009-12-12 (土) 06:31:37

URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White