無題なログ

セキュリティ情報、迷惑メール、フィッシング詐欺、迷惑ソフト削除、Windows の小ネタを書き出している日本語ブログです~ (*^ー^)ノ

2009/07

 Windows用のゲームやツールを無料で製作できるフリーソフトなプログラミングツール「HSP」(Hot Soup Processor)の新バージョン3.2 RC1がリリースされました。


 変更点は、「HSPアシスタント」というツールの追加、#modcfunc命令に新規対応、など。


 ちなみに、「RC」というのは「Release Candidate」の略で、「リリース候補」という意味。ほぼ正式版に相当するパッケージで、3.2正式版は来月8月にもリリースされる予定。

このエントリーをはてなブックマークに追加

 HSP(HSP3)からWin32 API関数を呼ぶ。
 そんな時にOSによっては対応してない関数というのが少なからず存在します。通常、対応してない(存在しない)関数が呼ばれると、HSPエラー38「外部DLLの呼び出しに失敗しました」となって、そのままプログラムは落ちてしまいます。


 ってなわけで、特定のWin32 API関数が動かしたOS環境に対応してるのかをスクリプトからチェックする方法の紹介。
 HSP標準のvarptr関数を利用します。HSPヘルプから引用すると、『p1に外部拡張命令(#funcで定義されているDLL呼び出し用の命令)を指定した場合には、実際に実行される外部関数のアドレスを返します。』の処理を利用します。


 対応環境なら0以外が返ります。



#include "user32.as"


 mes varptr(MessageBox)


 存在しない関数なら0が返ります。



#uselib "user32"
#func hoge "hoge" ; ありもしない関数


 mes varptr(hoge)

このエントリーをはてなブックマークに追加

 Yahoo!知恵袋より「クリックしたら効果音 を流す それか、音楽 の流し方」。音の再生手段は、HSP標準のmci命令やmmload命令、より良いパフォーマンスを望むならHSP拡張プラグイン(DirectX)など。


 必要となる音楽ファイルは、プログラムの起動段階であらかじめ読み込んでおきます。いざ再生したいときは、音楽再生処理の命令だけ呼ぶようにします。



  • 音楽ファイルを読み込む命令 → 起動直後に1度だけ呼ぶ

  • 読み込んだ音楽を再生する命令 → そのつど呼ぶ


  onclick gosub *jump


 mmload "sample\\demo\\se_tyuiin.wav", 0


 boxf 100, 100, 200, 200


 stop


*jump
 title ""+mousex+"x"+mousey+" / "+wparam


 if mousex > 100 & mousey > 100 & mousex < 200 & mousey < 200 {
  mmplay 0
 }


 return


 ここではmm~命令とonclick命令を利用してます。マウスクリックが行われた時、指定したラベルへとジャンプする割り込み命令です。wparam値をチェックすれば、マウスのどのボタンが押されたか知ることができます(左ボタンなら1、右ボタンなら2)。カーソル位置はHSPのシステム変数mousexとmousey。
 ループさせて、stick命令かgetkey命令でマウスクリックを捕らえる方法もありますな。

このエントリーをはてなブックマークに追加

↑このページのトップヘ