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


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0428
みかんhspでりんごをキャッチするようなゲームをつくりたいのですが10未解決


みかん

リンク

2010/4/28(Wed) 20:10:21|NO.32364

こういった漠然としたことをしてはいけないと
書いてあったのですが、どうしても頼るところが無いので、すいません。
かごを動かして、落ちてくるりんご(何でも良いのですが)
をキャッチするゲームを作りたいです。
自分の中ではシューティングゲームのぶつかったときの
当たり判定でできると思い込んでいるのですが、
そういうものではないのでしょうか。
難しい単語は自分で調べますので、どなたかご教授いただけないでしょうか。



この記事に返信する


Chokoko

リンク

2010/4/28(Wed) 20:38:21|NO.32365

自分で漠然とした質問であると理解しているのならば、
もう少し具体的に書く努力をしてください。

>>自分の中ではシューティングゲームの・・・
シューティングゲームの当たり判定を行う方法はたくさんあります。
あなたが想像している物をスクリプトとして提示し説明するか、
内容がわかるようにはっきりと説明してください。

そうしてもらえなければ答えようがありません。



backdrop

リンク

2010/4/28(Wed) 21:23:17|NO.32367

リンゴとプレイヤーの座標(X or Y)が重なったらキャッチして、そのリンゴを消す



Ve

リンク

2010/4/28(Wed) 21:24:11|NO.32368

考えを煮詰めていけば、処理の流れが分かると思う。

大まかにでも・・・

・リンゴは下へ落ちる
・カゴは動かせる
・リンゴとカゴが接触するとキャッチする
・リンゴが画面から消える

と考えて、さらに細かく崩していけば、必要な処理が分かると思います。

・リンゴは下へ落ちる

.螢鵐瓦蓮ずつ下へ落ちる
◆ずつ落とす為にリンゴの座標を記録する変数が必要になる
その変数に○ずつ加算させていく処理をループへ入れる
ぅゴの座標と重なったらリンゴが消えて、キャッチした事になる
ッ鰐未砲ちてもリンゴが消える

…etc



backdrop

リンク

2010/4/28(Wed) 21:26:36|NO.32370

HGIMG3だったらgetcoliが簡単
[リンゴを消す]から、ループのうちで毎回絵画処理(座標が重なっていたらスキップするとか)



ANTARES

リンク

2010/4/28(Wed) 23:54:37|NO.32375

>自分の中ではシューティングゲームのぶつかったときの
>当たり判定でできると思い込んでいるのですが、
>そういうものではないのでしょうか。
 少し異なる要素が絡んできます。

 まず、かごをドット単位で動かすのかキャラクタ単位で
動かすのか(これは同時にリンゴの初期位置X座標を
ドット単位にするのかキャラクタ単位にするのかという
ことでもあります)
キャラクタ単位で動かすのであれば、うまくキャッチできた
ときはリンゴとかごがぴったり重なりますし、キャッチ
できないときはまるで離れますから問題ありません。
 しかし、ドット単位で動かす場合、典型的な例としては
かごとリンゴが(X座標について)半分だけ重なっているとき
どう判定するのかという問題が生じます。

 しかし、シューティングのあたり判定と同様に
少しでも触っていればキャッチできたと判定することも
できます。

 結局、それを決めるのはあなたであって、
いいか悪いかの問題ではありません。



ANTARES

リンク

2010/4/29(Thu) 00:10:55|NO.32377

>いいか悪いかの問題ではありません。
 訂正。
正しいか間違っているかという問題ではありません。



gm

リンク

2010/4/29(Thu) 14:15:42|NO.32381

hsp32\sample\game\block2.hsp

サンプルファイルを参考にされたら? xD



あり

リンク

2010/4/30(Fri) 11:10:31|NO.32394

リンゴキャッチゲームなら基本的にプレイヤーが上下に移動する事は無いので
プレイヤーのY座標にリンゴが達した時にプレイヤーの幅の中に
リンゴのX座標が存在していればキャッチできた事になります。
判定はこんな感じなのでそれほど難しく無いとは思いますが
複数のリンゴを落とそうとした場合の管理の方が初心者には多少ハードルが
高いのではないかと思います。

以上を踏まえて最低限必要な要素を入れたスクリプトを作ってみました。
各命令の詳細は命令ヘルプ(命令にキャレットをあわせてF1キーで起動)を見て下さい。
Enterキーで当たり判定が表示されるので内部でどのように
動いているのかの参考になればと思います。
(リンゴの判定位置を中心にする為に表示位置を左に8ドット分ずらしているのに注意)

screen 0, 640, 480 buffer 1 : cls 4 font msgothic, 16 color 255, 255, 255 pos 1, 0 : mes "○" pos 0, 13 : mes "大" pos 0, 26 : mes "V" color 255 : pos 1, 42 : mes "●" Px = 320 ;プレイヤーの初期座標X Py = 450 ;プレイヤーの初期座標Y Pmuki = 1 ;左向き=-1 右向き=1 Pmov = 8 ;プレイヤーの移動量 hit1 = Px ;当たり判定左端 hit2 = Px +16 + 12 ;当たり判定右端 Amax = 15 ;リンゴの最大数 dim Ax, Amax ;リンゴのX座標 dim Ay, Amax ;リンゴのY座標 dim Aflg, Amax ;リンゴの存在フラグ Anum = 0 ;画面中のリンゴの数 Asty = 0 ;リンゴの初期位置 Amov = 4 ;リンゴの移動量 Adflg = 10 ;リンゴが何フレーム毎に出現するか? Chkline = 445 ;当たり判定ライン dbg = 0 ;デバッグフラグ Score = 0 randomize ;乱数初期化 *main gsel 0 gmode 2, 16, 25 redraw 0 color 0 : boxf ; プレイヤーの移動と表示 stick key, 5 if key & 1 : Pmuki = -1 : Px + Pmov * Pmuki : hit1 = Px - 12 : hit2 = Px +16 if key & 4 : Pmuki = 1 : Px + Pmov * Pmuki : hit1 = Px : hit2 = Px +16 + 12 if key & 32 : dbg + 1 : dbg \ 2 if key & 128 : end Px = limit(Px, 16, 612) pos Px, Py : gcopy 1 pos Px + 12 * Pmuki, Py + 10 : gcopy 1, 0, 28, 16, 12 if Anum ! 0 : gosub *Apple_Move ;リンゴの数が一個以上あれば移動ルーチンへ Adrop++ : Adrop \ Adflg ;ランダムでリンゴを落す if Adrop = 0 : if rnd(3) = 0 : gosub *Apple_Drop if dbg = 1 { ;当たり判定ライン表示 color ,,255 : line hit1, 0, hit1, 480 : line hit2, 0, hit2, 480 color ,255 : line 0, Chkline, 640, Chkline } title "" + Anum + "個落下中 " + Score + "個拾った Escで終了 Enterで判定表示" redraw 1 await 33 goto *main *Apple_Drop if Anum = Amax : return ;リンゴが最大数より増えないように調節 repeat Amax if Aflg(cnt) = 0 { ;配列の空きがあればリンゴを追加する Aflg(cnt) = 1 Anum = limit(Anum + 1, 0, Amax) Ax(cnt) = rnd(79) * 8 + 8 ;リンゴの出現位置決定 Ay(cnt) = Asty break } loop return *Apple_Move repeat Amax if Aflg(cnt) = 1 { Ay(cnt) + Amov if Ay(cnt) > Chkline { ;当たり判定開始 if (Ax(cnt) > hit1)&(Ax(cnt) < hit2) { Aflg(cnt) = 0 Anum = limit(Anum - 1, 0, Amax) Score + 1 continue } } if Ay(cnt) > 480 { ;地面に落ちたら消える Aflg(cnt) = 0 Anum = limit(Anum - 1, 0, Amax) continue } pos Ax(cnt) -8, Ay(cnt) : gcopy 1, 0, 42, 16, 54 ;リンゴ表示 if dbg = 1 : color 255 : line Ax(cnt), 0, Ax(cnt), 640 ;当たり判定ライン表示 } loop return



u

リンク

2010/4/30(Fri) 19:03:01|NO.32399

アルゴリズムさえ分かればこの先応用でやっていけると思うので、簡略化したサンプルを書きました。
当たり判定はリンゴの中心点だけで行っています。(カゴにかすっただけで入るというのもおかしい気がするので)


max=5//一画面に落とすリンゴの最大数 dim appX,max//リンゴX位置用配列 dim appY,max//リンゴY位置用配列 repeat max//リンゴの初期位置をランダムに決める appX(cnt)=rnd(680) appY(cnt)=-rnd(max*100) loop kagoX=0//カゴのX位置 kagoY=450//Y位置 mes "σ" mesx=ginfo_mesx/2//文字の横幅の半分 (簡易当たり判定に使用) repeat redraw 0 color 0,0,0:boxf//画面を黒で塗り潰し color 255,255,255 pos 0,0:mes "カゴの中にはリンゴが"+nakami+"個です" repeat max//リンゴの数分繰り返す appY(cnt)+=2//リンゴのY座標を下げる color 255,0,0 pos appX(cnt),appY(cnt):mes "σ"//その位置に表示 if (appX(cnt)+mesx>kagoX) & (appX(cnt)+mesx<kagoX+30) & (appY(cnt)>kagoY) & (appY(cnt)<kagoY+20){//リンゴの中心がカゴに当たっていれば /* 30=カゴの横幅 20=カゴの縦幅 */ color 255,255,255 pos appX(cnt)-20,appY(cnt)-20 mes "\スポッ/"//スポッ nakami++//カウントを増やす appX(cnt)=rnd(640)//座標をランダムに appY(cnt)=-rnd(max*100) } if appY(cnt)>480{//画面の下まできたらまた座標をランダムに appX(cnt)=rnd(640) appY(cnt)=-rnd(max*100) } loop stick key,1|4 if key=1:kagoX-=4//←ならXを減らし if key=4:kagoX+=4//→なら増やす color 255,255,255 boxf kagoX,kagoY,kagoX+30,kagoY+20//カゴ表示 color:pos kagoX,450:mes "カゴ" redraw 1 wait 1 loop



テック

リンク

2010/5/3(Mon) 21:02:36|NO.32441

>かごを動かして、落ちてくるりんご(何でも良いのですが)
>をキャッチするゲームを作りたいです。
随分抽象的な質問のような気がする・・・。
まあ、こういうのは、Veさんが記述してあるとおり、
処理を分けて考えていくのがいいかもしれません。

・初期処理[1回のみ]
 画像データのロードなど
・入力処理
 キー入力読み込み処理
・移動処理
 自機(かご)の移動処理
 敵機(りんご)の移動処理
・当たり判定
 自機(かご)と敵機(りんご)の当たり判定
・描画処理
 自機(かご)の描画処理
 敵機(りんご)の描画処理

ありさんやuさんが、サンプルスクリプトを載せてますが、
私もサンプルスクリプトを作成したので載せておきます。
それにしても、これだけの仕様なのに、
HSPは、癖がありすぎのか、
実装するのにかなり疲れた・・・(´・ω・`)


//==================================================================================================== // ファイル名:SampleHsp001.hsp // 内   容:みかんさんの質問の返答 // 作 成 者:テック // 更 新 者:テック // 作 成 日:2010/05/01 // 更 新 日:2010/05/03 // 履   歴:2010/05/01 新規作成 //       2010/05/02 かご用・りんご用の配列・マクロを作成 //       2010/05/03 ゲームメイン処理・当たり判定を実装 // メ   モ:スレッド「http://hsp.tv/play/pforum.php?mode=all&num=32364」 //==================================================================================================== //==================== ヘッダーファイルのインクルード ====================// #include "hspdef.as" //==================== マクロの宣言 ====================// #define global APPLE_SIZE 10 // りんごの個数 #define global ITEM_SIZE_BASKET 6 // かごの項目数 #define global ITEM_SIZE_APPLE 7 // りんごの項目数 #define global WINDOW_ID_BASKET 1 // ウィンドウID(かご) #define global WINDOW_ID_APPLE 2 // ウィンドウID(りんご) #define global FILE_NAME_BASKET "Basket.gif" // ファイル名(かご) #define global FILE_NAME_APPLE "Apple.gif" // ファイル名(りんご) #define global BASKET_WIDTH 36 // かご画像の幅 #define global BASKET_HEIGHT 36 // かご画像の高さ #define global APPLE_WIDTH 36 // りんご画像の幅 #define global APPLE_HEIGHT 36 // りんご画像の高さ #define global APPLE_WAIT 20 // りんごの描画間隔 #define global BASKET_MOVE_X 20 // かご画像の移動量(X軸) #define global BASKET_MOVE_Y 0 // かご画像の移動量(Y軸) #define global APPLE_MOVE_X 0 // りんご画像の移動量(X軸) #define global APPLE_MOVE_Y 8 // りんご画像の移動量(Y軸) #define global g_clsBasket_hWindowId g_nArrayBasket@(0) #define global g_clsBasket_nDivId g_nArrayBasket@(1) #define global g_clsBasket_nLeft g_nArrayBasket@(2) #define global g_clsBasket_nTop g_nArrayBasket@(3) #define global g_clsBasket_nWidth g_nArrayBasket@(4) #define global g_clsBasket_nHeight g_nArrayBasket@(5) #define global ctype g_clsApple_hWindowId(%1) g_nArrayApple@(0, %1) #define global ctype g_clsApple_nDivId(%1) g_nArrayApple@(1, %1) #define global ctype g_clsApple_nLeft(%1) g_nArrayApple@(2, %1) #define global ctype g_clsApple_nTop(%1) g_nArrayApple@(3, %1) #define global ctype g_clsApple_nWidth(%1) g_nArrayApple@(4, %1) #define global ctype g_clsApple_nHeight(%1) g_nArrayApple@(5, %1) #define global ctype g_clsApple_nDisplay(%1) g_nArrayApple@(6, %1) // ※↑モジュール内からグローバル変数を参照する場合は、変数名の最後に@を付けなければならない //==================== 定数の宣言 ====================// #const global WAIT_TIME 10 // 中断時間(単位:10ミリ秒) #const global KEY_ARROW_LEFT 1 // カーソルキーの左(←) #const global KEY_ARROW_RIGHT 4 // カーソルキーの右(→) #const global KEY_ARROW_UP 2 // カーソルキーの上(↑) #const global KEY_ARROW_DOWN 8 // カーソルキーの下(↓) #const global KEY_SPACE 16 // スペースキー #const global KEY_ENTER 32 // Enterキー #const global KEY_ESC 128 // Escキー //==================== 列挙型の宣言 ====================// // プロセスID #enum global ENUM_PROCESS_ID_BEGIN = 0 // プロセスID(初 期処理) #enum global ENUM_PROCESS_ID_MAIN // プロセスID(メイン処理) #enum global ENUM_PROCESS_ID_END // プロセスID(終 了処理) #enum global ENUM_PROCESS_ID_LIMIT // プロセスID(限界値) // シーンID #enum global ENUM_SCENE_ID_GAME = 0 // シーンID(ゲーム画面) #enum global ENUM_SCENE_ID_TITLE // シーンID(タイトル画面) #enum global ENUM_SCENE_ID_LIMIT // シーンID(限界値) //==================== グローバル変数の宣言 ====================// g_nProcessId = ENUM_PROCESS_ID_BEGIN // プロセスID g_nSceneIdOld = ENUM_SCENE_ID_GAME // シーンID(過去) g_nSceneIdNow = ENUM_SCENE_ID_GAME // シーンID(現在) g_nSceneIdNew = ENUM_SCENE_ID_GAME // シーンID(未来) g_nKeyData = 0 // キー入力データ g_nArrowLeft = 0 // キー入力フラグ(左) g_nArrowRight = 0 // キー入力フラグ(右) g_nAppleCount = 0 // りんごの描画間隔カウント dim g_nArrayBasket, ITEM_SIZE_BASKET // かご情報の1次元配列 dim g_nArrayApple, ITEM_SIZE_APPLE, APPLE_SIZE // りんご情報の2次元配列 //==================== モジュールの宣言 ====================// #module SampleModule // 2つの矩形の当たり判定を行う // 引数 //  lstRect1 : 矩形1の配列 //  lstRect2 : 矩形2の配列 //  nIndex : 矩形2の配列の要素数 // ローカル変数 //  nHitFlag : // 戻り値 //  0以外 : 2つの矩形が接触している場合 //  0   : 2つの矩形が接触していない場合 #defcfunc IsHit array lstRect1, array lstRect2, int nIndex, local nHitFlag, \ local nLeft1, local nLeft2, local nLeft3, local nLeft4, \ local nTop1, local nTop2, local nTop3, local nTop4 nLeft1 = lstRect1(2) nLeft2 = lstRect2(2, nIndex) + lstRect2(4, nIndex) nLeft3 = lstRect1(2) + lstRect1(4) nLeft4 = lstRect2(2, nIndex) nTop1 = lstRect1(3) nTop2 = lstRect2(3, nIndex) + lstRect2(5, nIndex) nTop3 = lstRect1(3) + lstRect1(5) nTop4 = lstRect2(3, nIndex) // 矩形1の左側のX座標が、矩形2の左側のX座標+矩形2の幅未満の場合 かつ // 矩形1の左側のX座標+矩形1の幅が、矩形2の左側のX座標以上の場合 かつ // 矩形1の上側のY座標が、矩形2の上側のY座標+矩形2の高さ未満の場合 かつ // 矩形1の上側のY座標+矩形1の高さが、矩形2の上側のY座標以上の場合 if((nLeft1 < nLeft2) & (nLeft3 > nLeft4) & (nTop1 < nTop2) & (nTop3 > nTop4)) { nHitFlag = 1 // 上記以外の場合 } else { nHitFlag = 0 } return nHitFlag // 初期処理を行う // 引数 //  nSceneIdNow : シーンID(現在) //  nSceneIdOld : シーンID(過去) // 戻り値 //  なし #deffunc ProcessBegin int nSceneIdNow, int nSceneIdOld // かご画像情報の初期化を行う g_clsBasket_hWindowId = WINDOW_ID_BASKET g_clsBasket_nDivId = 0 g_clsBasket_nLeft = 0 g_clsBasket_nTop = 400 g_clsBasket_nWidth = BASKET_WIDTH g_clsBasket_nHeight = BASKET_HEIGHT // りんご画像情報の初期化を行う for i, 0, APPLE_SIZE, 1 g_clsApple_hWindowId(i) = WINDOW_ID_APPLE g_clsApple_nDivId(i) = 0 g_clsApple_nLeft(i) = 0 g_clsApple_nTop(i) = 0 g_clsApple_nWidth(i) = APPLE_WIDTH g_clsApple_nHeigth(i) = APPLE_HEIGHT g_clsApple_nDisplay(i) = 0 next // 画像ファイルをロードし、仮想画面(バッファ)を初期化する celload FILE_NAME_BASKET, WINDOW_ID_BASKET, 0 celload FILE_NAME_APPLE, WINDOW_ID_APPLE, 0 return // メイン処理を行う // 引数 //  nSceneIdNow : シーンID(現在) //  nSceneIdOld : シーンID(過去) // ローカル変数 //  nSceneIdNew : シーンID(未来) //  nHitFlag : 当たりフラグ // 戻り値 //  シーンID(未来) #defcfunc ProcessMain int nSceneIdNow, int nSceneIdOld, local nSceneIdNew, local nHitFlag // シーンID(未来)にシーンID(現在)を代入する nSceneIdNew = nSceneIdNow // りんごの描画間隔カウントをカウントアップする g_nAppleCount@++ // カーソルキーの左(←)の入力状態を取得する getkey g_nArrowLeft, 37 // カーソルキーの左(←)が押下されている場合 // if(g_nKeyData@ & KEY_ARROW_LEFT) { if(g_nArrowLeft) { // かごのX座標が0未満(ウィンドウの左端)の場合 if(g_clsBasket_nLeft <= 0) { g_clsBasket_nLeft = 0 // かごのX座標が0以上の場合 } else { // かごのX座標からかごの移動量を減算する g_clsBasket_nLeft = g_clsBasket_nLeft - BASKET_MOVE_X } } // カーソルキーの右(→)の入力状態を取得する getkey g_nArrowRight, 39 // カーソルキーの右(→)が押下されている場合 // if(g_nKeyData@ & KEY_ARROW_RIGHT) { if(g_nArrowRight) { // かごのX座標+かごの幅が640以上(ウィンドウの右端)の場合 if(g_clsBasket_nLeft + g_clsBasket_nWidth >= 640) { g_clsBasket_nLeft = 640 - g_clsBasket_nWidth // かごのX座標+かごの幅が640未満の場合 } else { // かごのX座標にかごの移動量を加算する g_clsBasket_nLeft = g_clsBasket_nLeft + BASKET_MOVE_X } } // りんごの移動・描画処理を行う for i, 0, APPLE_SIZE, 1 // りんごが描画されている場合 if(g_clsApple_nDisplay(i)) { // りんごのY座標にりんごの移動量(Y座標)を加算する g_clsApple_nTop(i) = g_clsApple_nTop(i) + APPLE_MOVE_Y // りんごのY座標が480以上(ウィンドウの下端)の場合 if(g_clsApple_nTop(i) >= 480) { // りんごを非表示にする g_clsApple_nDisplay(i) = 0 // 別画画面に遷移する(今回は、HSPを終了する) nSceneIdNew = ENUM_SCENE_ID_LIMIT // ループを抜ける _break } // かごとりんごが接触しているかチェックする nHitFlag = IsHit(g_nArrayBasket@, g_nArrayApple@, i) // かごとりんごが接触している場合 if(nHitFlag) { // りんごを非表示にする g_clsApple_nDisplay(i) = 0 // かごとりんごが接触していない場合 } else { // かごの描画位置を設定する pos g_clsApple_nLeft(i), g_clsApple_nTop(i) // りんごを描画する celput g_clsApple_hWindowId(i), g_clsApple_nDivId(i), 1.0, 1.0, 0.0 } // りんごが描画されていない場合 } else { // りんごの描画間隔のカウントがりんごの描画間隔以上の場合 if(g_nAppleCount@ >= APPLE_WAIT) { // りんごの描画位置を初期化する g_clsApple_nLeft(i) = rnd(640 - APPLE_WIDTH) g_clsApple_nTop(i) = 0 g_clsApple_nDisplay(i) = 1 // りんごの描画間隔のカウントを0でクリアする g_nAppleCount@ = 0 } } next // かごの描画位置を設定する pos g_clsBasket_nLeft, g_clsBasket_nTop // かごを描画する celput g_clsBasket_hWindowId, g_clsBasket_nDivId, 1.0, 1.0, 0.0 return nSceneIdNew // 終了処理を行う // 引数 //  nSceneIdNow : シーンID(現在) //  nSceneIdOld : シーンID(過去) // 戻り値 //  なし #deffunc ProcessEnd int nSceneIdNow, int nSceneIdOld return // module SampleModule #global //==================== HSPスクリプトの実装 ====================// // HSPのエントリーポイント // 引数 //  なし // 戻り値 //  なし *HspMain // ウィンドウを初期化する // screen 0, 640, 480, 0 // 画面をクリアする(黒) cls 4 // ゲームループ // プロセスIDがプロセスID(限界値)以上になるまでループする do // HSPの実行を一定時間中断する wait WAIT_TIME // 画面をクリアする(黒) cls 4 // キー入力情報を取得する stick g_nKeyData, 0, 0 // Escキーが押下された場合 if(g_nKeyData & KEY_ESC) { // 終了処理に遷移する g_nProcessId = ENUM_PROCESS_ID_END // HSPを終了する g_nProcessId = ENUM_PROCESS_ID_LIMIT } // プロセスIDに対応した処理を行う switch g_nProcessId // 初期処理の場合 case ENUM_PROCESS_ID_BEGIN // 初期処理を行う ProcessBegin g_nSceneIdNow, g_nSceneIdOld // メイン処理に遷移する g_nProcessId = ENUM_PROCESS_ID_MAIN swbreak // メイン処理の場合 case ENUM_PROCESS_ID_MAIN // メイン処理を行う g_nSceneIdNew = ProcessMain(g_nSceneIdNow, g_nSceneIdOld) // シーンID(現在)とシーンID(未来)が異なる場合 if(g_nSceneIdNow != g_nSceneIdNew) { // シーンID(過去)にシーンID(現在)を代入する g_nSceneIdOld = g_nSceneIdNow // シーンID(現在)にシーンID(未来)を代入する g_nSceneIdNow = g_nSceneIdNew // 終了処理に遷移する g_nProcessId = ENUM_PROCESS_ID_END } swbreak // 終了処理の場合 case ENUM_PROCESS_ID_END // 終了処理を行う ProcessEnd g_nSceneIdNow, g_nSceneIdOld // シーンID(未来)がシーンID(限界値)の場合 if(g_nSceneIdNew == ENUM_SCENE_ID_LIMIT) { // HSPを終了する g_nProcessId = ENUM_PROCESS_ID_LIMIT } swbreak // 上記以外の場合 default swbreak swend until g_nProcessId >= ENUM_PROCESS_ID_LIMIT // HSPを終了する end stop



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