//スクリプト
function activer(object_name){
instance_active_object(object_name)
}
このスクリプトをcall_later(60,time_source_units_frames,activer(ObjectA))で実行すると「Time source callback must be a method or function」というエラーが起きます。その他すべてのスクリプトをcall_laterで実行してもそれぞれ同じエラーになってしまいます。(alarmを使えば解決するのですがシンプル化したかったので.....)
回答ありがとうございます。
リンクのマニュアルを読み、テストプロジェクトにて使用テストを行いました。
立ち絵操作以外の処理を行う単発式のダイアログシステムは
ほぼ完成してしまったので、せっかくなのでそちらを使用していこうと思います。
テキストの色を文字列から簡単に変えられるのは良いですね。
私は見つけられませんでしたが、表示するメッセージ、立ち絵の情報、発言者……などをまとめて管理する機能もあったりするのでしょうか。
行き詰まったりしたら、今後、使用するかもしれません。
リンク
上のリンクが切れてたので再掲です。
質問の趣旨とはずれるかもしれませんが、基本的なダイアログシステムの構築が楽になるGameMakerのライブラリーがあります。
リンク
テキストのタイプライター効果や、テキスト折り返しの条件などを割と簡単に指定できます。
機能がてんこ盛りなので、ドキュメントを精読して色々実験する必要はあると思いますがアドベンチャーゲームの作成にも役立つと思います。
解答がズレてたらごめんなさい!!
まさに欲してたものです!ありがとうございます!
やりたいことによって、
keyboard_key
keyboard_lastkey
keyboard_lastchar
keyboard_string
これらのビルトイン変数を使うのはどうでしょうか。
それぞれマニュアルで調べてみてください。
例えばDrawGUIでこう記述すると、最後に押された文字が表示されます
使い方で分からなかったらまた聞いて下さい
なるほど!!ありがとうございます!!!
一部分だけ半透明にして、他は影響させないようにする場合は、
というように、alpha値を戻してください。
そろそろ名前一括変換だけじゃなく、変数や関数の参照箇所のみの変換がほしいですねぇ。
便利そう!
対応してないからエラーが起きてたんですね......ありがとうございました!!!!
引数ありの関数にはまだ対応していなかったはずです。
次のように、一度引数なしのローカル関数でつつんであげるといけるかもしれません。
ストレージの故障というのはあくまで推測なのではっきりしたことが言えず申し訳ないですが、
バックアップはできるだけ頻繁に取るようにしたほうがいいですね。
今回偶然か気づいていないだけなのかもしれないんですが、作っていたプロジェクトだけがピンポイントで破損していたので......分かりづらかったんですがやっぱりHDD,SSDの問題ですよね.......。そこまでスペックも悪いわけでもないのに強制終了ショートカットが効かないフリーズだったので、パソコン本体の電源を直接落としたんですが.......電源落としは良くないですね....。
すみません!!
コード自体はシンプルで、
このスクリプトをcall_later(60,time_source_units_frames,activer(ObjectA))で実行すると「Time source callback must be a method or function」というエラーが起きます。その他すべてのスクリプトをcall_laterで実行してもそれぞれ同じエラーになってしまいます。(alarmを使えば解決するのですがシンプル化したかったので.....)
具体的なソースコードがあると原因が特定しやすいので貼り付けてもらえると助かります!
GameMakerのIDEを使っている中で、プロジェクトが壊れてアセットブラウザにアセットが表示されなくなることはあります。
その場合はプロジェクトファイルを修復するか、作り直す(別名でエクスポートなどの方法があります)のを試す流れになります。
ですが、GameMakerを起動していない時に何らかの原因でファイル自体が壊れたり消えたりするのは、GameMakerが原因ではないHDDやSSDの故障によるデータ破損のケースだと思います。
ちなみに、私の場合はプロジェクト丸ごとを圧縮してクラウドにバックアップしています。
私が使ってるのはdropboxですが、dropboxの同期対象フォルダにプロジェクトを置いて作業すると問題が生じるとか読んだ記憶があるので、プロジェクトはクラウドの同期対象フォルダには置かず、かつ同期などは使わずに手動でバックアップしています。
以前クラウド系にファイルを保存するなという警告を受けて、クラウド系からHDD(SSD)にコピーして使っていたんですが、少し前に戻ってしまうもののコピー元を削除していなかったのでよかったです!!!ありがとうございました!!!バックアップは今後しっかりとっておきます......
バックアップはないです....。一応Gamemaker studio2側のエラーか何かで消えた線を考えてみて質問させていただいたのですが......やはりそうですよね......。色々検討してみます!!ありがとうございました!!!
プロジェクトのフォルダの中身が消えたということでしょうか?
HDD(SSD)が破損してデータが失われたというケースを仮定しますと、
その場合はバックアップがあればそこから復活ですが、無ければ難しいかもしれません。
(HDDデータ復旧サービスはありますが、お金がかかって必ず復活できるかも分からないので、なんとも言えません)
バックアップはありますか?
レイヤー複数あったときこれないとまじできついっす。
ありがとうございました。
よかったです!!
色々と試していった結果、無事治すことが出来たため、同じ問題が起こった方のために書いておきます。
原因自体は明確にはわかっていませんが、Gamemakerを最初にインストールした時に作成されるファイル群にありそうです。
このファイル群は、Gamemakerをただアンインストールするだけでは削除されないようです。
、
1.作成しているファイルなどを外付けの記憶媒体に移しておく。
こちらのサイトに書いてあるアンインストーラーをダウンロードして起動
3.Gamemakerに関連するファイルを全て削除(この時に、1番を行っていないと作成したものが全て消えてしまいそうです。)
4.再度インストールし、1番を戻す。
この手順で無事サウンドファイル周りを使えるようになりました。
ありがとうございました。
xyz様
複数の解決への手かがりとなり得る方法を教えてくださりありがとうございます。
可能性程度でも良いので何か手段が思いつきましたら教えていただけると幸いです
流石にプロジェクト内のコードをいじっただけでシステムエラーは起きないと思います
最初に貼ったmicrosoftコミュニティの一番下にも書いてあった通りOSの再構築をすれば何とかなるとは思いますが.......下手したら最悪データが消えてしまったりもするのでなるべくその方法は避けたいですが.....今のところ対処法が考え付かないです....。申し訳ないです。何かいい方法を思いついたり見つけたらまた送ります!あともしこれを見ている方で分かる方がいたらお願いします!!
wavファイルで試しましたが、できませんでした。
Gamemaker以外では特に何もしていないです。
最後に実行できた状態から実行できなくなる状態になる間もずっとGamemakerを開いていたので、他のソフトなどが影響した可能性は少ないかなと思っています。
開けなくなる直前にしたことは、使用している関数の引数を変更し、それによる変数名を間違えていたくらいなのですが、それが関係ある可能性はありますかね?
すみません!!6):mp3,wav,oggの間違いです!!とはいえそうなってくると色々難しいですね......。ちなみに普通に開けていた時とエラーが起こるようになった時の間にGamemaker studio2以外で何かしら作業した覚えはありますか?
1)していません
2)ffエラーが発生します。
3)同じようなサウンドファイルが作成されてします。
4)クラウド系には保存されていません。
5)正常に開くことが可能です。
6)mp4などをインポートする方法が分からないです、申し訳ございません。
7)エラーは発生しませんでした。
サウンドファイルが全ての原因である可能性が高いってことですね.......
いくつかまた聞きたいことと試して欲しいがあるのですが、
1):サウンドファイルはmp4等のファイルを名前変更で拡張子を強制的にmp3等のサウンドファイルにしていないか
2):新しくプロジェクトを作成し、サウンドファイルをインポートし、一度閉じ、開いたときにエラーが起こった時に、再度コマンドプロンプトでコマンドを実行し、開いた場合エラーになるか
3):エクスプローラーから直接ドラッグアンドドロップした場合も同じようになるか
4):Gamemaker studio2のファイルとプロジェクトファイルがクラウド系(One Drive等)のファイルに保存されていないか
5):サウンドファイルがないプロジェクトで画像を作成し、Gamemaker studio2内の画像編集ツールで何か適当に描いて保存し、開いた場合正常に開けるか
6):mp4,wav,ogg全ての音声ファイルでエラーが起こるか
7):Gamemaker studio2以外のソフトで音声ファイルを扱った場合エラーは起きるか
聞くことが多くなってしまってすみません.....
一部訂正させていただきます
①起動時になんらかのサウンドファイルがある状態で、起動時にあったサウンドファイルが一つでも残った状態で実行を行うとff……エラーが発生する。
②起動時にサウンドファイルが一つもない、もしくは起動時にあったサウンドファイルが全て消えていて、
起動後にサウンドファイルを作成、インポートを行うと上で貼ったようなサウンドファイル(参照mp3の中身に関わらず、波形なし)が作成され、それがある状態で実行するとコンパイルエラー
一つもサウンドファイルがなければ何もエラーは起こらず、逆に一つでもサウンドファイルが存在すると1,2のどちらかに該当しエラーが発生します
xyz様の仰ったことを試そうと思い、別のプロジェクトを開き、とりあえず一度実行を行うと、またffprobe.exeエラーが発生してしまいました。
気になったため色々と実験をしてみたところ、それぞれのエラーの発生条件は分かりました
①起動時になんらかのサウンドファイルがある状態で実行を行うとff……エラーが発生する。
②起動時にサウンドファイルがない状態から、新たにサウンドファイルを作成、インポートを行うと上で貼ったようなサウンドファイル(波形なしでコンパイルエラー発生)
これが全てのプロジェクトで発生しています。
別のプロジェクトでインポートしても同じようになりますか?
ありがとうございます。
実行したところ、上記エラーが発生しなくなりました。
しかし、異なる問題が発生しました。
Error : Failed to convert audio file 'snd_cursor_select'. Check source file 'C:\Users\Username\GameMakerProjects\Project\sounds\snd_cursor_select\snd_cursor_select.mp3'
というコンパイルエラーが全てのSoundファイルで出るようになりました。
エクスプローラーからmp3を再生したところ、何も問題がなかったため、一度すべてのサウンドファイルを削除、サウンドファイルを参照する部分をコメントアウトして実行すると、無事実行することが出来ました。
そのため、もう一度サウンドファイルを作り直したところ、インポート操作を行っても
このように音の波形が表示されず、そのまま実行するとやはり上記エラーが発生してしまいます。
確認したところ、画像ファイルのインポートもできませんでした。(しかし、これによってエラーは発生しないようです)
これらの原因がわかる方いらっしゃいましたらよろしくお願いします。
microsofrコミュニティ
https://answers.microsoft.com/ja-jp/windows/forum/all/dllファイルを/4b65ab9b-5d52-4f96-80c4-0e475c8ddac6
microsoftサポート
https://support.microsoft.com/ja-jp/topic/システム-ファイル-チェッカー-ツールを使用して不足または破損しているシステム-ファイルを修復する-79aa86cb-ca52-166a-92a3-966e85d4094e
上手く貼れてなかったので貼り直しました!
このエラーはGamemaker studio2のエラーというよりかはWindows自体のエラーで似たような事象が起きた方のMicrosoftコミュニティのトピックとそこの解決方法に書いてあるコマンドについてのサポートページを見つけたので試してみてください](https://cdn.wikiwiki.jp/proxy-image?url=https%3A%2F%2Fsupport.microsoft.com%2Fja-jp%2Ftopic%2F%25E3%2582%25B7%25E3%2582%25B9%25E3%2583%2586%25E3%2583%25A0-%25E3%2583%2595%25E3%2582%25A1%25E3%2582%25A4%25E3%2583%25AB-%25E3%2583%2581%25E3%2582%25A7%25E3%2583%2583%25E3%2582%25AB%25E3%2583%25BC-%25E3%2583%2584%25E3%2583%25BC%25E3%2583%25AB%25E3%2582%2592%25E4%25BD%25BF%25E7%2594%25A8%25E3%2581%2597%25E3%2581%25A6%25E4%25B8%258D%25E8%25B6%25B3%25E3%2581%25BE%25E3%2581%259F%25E3%2581%25AF%25E7%25A0%25B4%25E6%2590%258D%25E3%2581%2597%25E3%2581%25A6%25E3%2581%2584%25E3%2582%258B%25E3%2582%25B7%25E3%2582%25B9%25E3%2583%2586%25E3%2583%25A0-%25E3%2583%2595%25E3%2582%25A1%25E3%2582%25A4%25E3%2583%25AB%25E3%2582%2592%25E4%25BF%25AE%25E5%25BE%25A9%25E3%2581%2599%25E3%2582%258B-79aa86cb-ca52-166a-92a3-966e85d4094e)
なるほど、そういうツールが作れたら便利そうですね。
ファイル分けを自動化するか、それが難しければ制作中は1つでやって最終的にファイルを分ける方法を考えたいと思います。
ありがとうございます!
素晴らしい
オブジェクトごとに作成したメソッドにF1で飛べるようになってますね。
https://github.com/YoYoGames/GameMaker-Bugs/issues/4322
編集したりするときは、全部の言語一緒の方が、一覧性だったり保管に便利だから一つのファイルの方が楽というのは、わかります。
fontのデータをゲーム実行時に追加できるfont_addがあるので、asaさんのやりたいことができそうかと思いました。
しかし、font_addはGameMakerのフォント画像に追加する文字を、開始と終了の範囲でしか指定できませんでした。
使っている文字だけ追加するエディター上のフォント追加と機能的違いがあります。
今のゲームメッセージリソースCSVはそのままで、
外部ツールとして、PHPでもpythonでもC#でも何でもよいのでCSVを読み込んで、所定の列を入れた新しいCSVを生成するプログラムを作成し、フォント作成のFont Rangeに各CSVを入れるようにするというのはどうでしょうか。
Excelでデータを作っているなら、ExcelのVBAなんかで、ファイル保存したときに自動的に各言語用CSVが生成されるようにすると手間がなくてよいかもしれません。
ゲームメッセージリソースCSVを読み込み
・日本語と英語の文字データだけのCSVを作成する。
・中国語の文字データだけのCSVを作成する。
日本語用と中国語用のフォントを作成し、Font Rangeに各ファイルを入れる。
これで各フォント必要な文字だけ入ったものが出来上がりそうです。
GameMakerで使う乱数は、「疑似乱数」となるので、乱数生成器にrandom_set_seed()で乱数の種を入れて、random()を呼ぶたびに出てくる数字の順番は毎回同じです。
random_set_seedを自発的に記述していない場合でも、内部的にrandom_set_seed(0)で乱数生成を行っているようです。
randomize() or randomise()を呼び出したときは、乱数の種に入れる数字を作り、random_set_seed()にその種を入れるようになっています。
歴史を遡って同じ乱数の値をとるためには、「データの作成時」にrandomizeを呼び出した後、random_get_seed()を使い、乱数の種を取得し、セーブデータや一時データに保管しておく。
その後、randomを使うときは、何回使ったかの回数を保管しておく。
セーブデータロードや戻るコマンド?などで3ターン目や2ターン目に戻ったときは、保管しておいた乱数の種をrandom_set_seed(種の数字)でリセットして、使った回数分randomize()呼び出しを行う。
すると、同じ乱数を取得することができます。
まとめると、
▼メイン処理
randomize()←最初の一回だけ
乱数の種変数「保管する」=random_get_seed()
▼乱数を使うとき
random(数字)
randomを呼び出した回数変数++「保管する」
▼元に戻したいとき
random_set_seed(乱数の種変数)
randomを呼び出した回数変数をループなどでまわして「random(00)」繰り返し呼ぶ
1つ前の乱数を使いたいのでループは「randomを呼び出した回数変数-1」にすればよいと思います。
保管しておくデータは
・乱数の種
・randomを呼び出した回数
だけで同じ乱数を取得できます。