/*■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

 ■  ウディタ用ランチャー&他ファイル実行ツール

 ■                   WRELFSTOOL(ワレルフツール)

 ■                   Verβ0.2

 ■〜〜主な機能〜〜

 ■

 ■1.ゲームを起動できる。

 ■

 ■2.ウディタでほかのファイルを実行できる。

 ■

 ■3.説明書を起動できる。

 ■

 ■4.インターフェイスが分かりやすすぎる(微妙…。)

 ■

 ■5.コンフィグも起動できる。

 ■

 ■6.BGMSEが鳴る

 ■

 ■※ある程度のバグチェックはしているが

 ■まだまだいろいろ残っているであろう。

 ■

 ■ECID(ECIDとは(エラーコードアイディー)の略称です。このツール上で例外が割り当てられている場合はこのコードが表示されるはずです。(ない場合はエラーではないかコンパイラから出ているエラーです。))

 ■

 ■・000

 ■                実行ファイル(Game.exe)Sysフォルダにない。

 ■

 ■・001

 ■                テキストファイル(readme.txt)Sysフォルダにない。

 ■

 ■・002

 ■                実行ファイル(Config.exe)Sysフォルダにない。

 ■

 ■・003

 ■                エラーコード003は失効された。

 ■

 ■・004

 ■                ゲームを起動、コンフィグ、説明書のどのボタンも、呼び出すファイルがないためボタンが表示できなかった。

 ■

 ■・005

 ■                他ファイル実行時に指定したファイルが存在しなかった。

 ■

 ■・006

 ■                データ削除時に指定されたデータが存在しなかった。

 ■

 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

*/

title "WRELFSTOOLVerβ0.2"//タイトル名を設定

#include"hspext.as" //一部のスクリプトに必要なのを読み込んで結合するインクールド命令を実行

#include "hgimg3.as"//サウンドの再生用にこれをインクールド(OGGじゃないのはグラフィックを何かに使う時用

//#include"hspinet.as"//ネットワーク実行用の何かをインクールド(普通に開けたので必要ない。)

//#include"hspcmp.as" //これはインクールドしなくてよい

 

 

 

 

dmmini//サウンド機能の初期化

dmmload"dsys\\SBGM.ogg",0//BGMをロードする。

dmmload"dsys\\S.wav",1,0//SEをロードする

dmmloop 0,0//BGMのループポイントを指定する。

dmmplay 1//SEを再生する。

 

/*                    netinit                       //ネットワークの初期化。もし初期化に失敗していたらメッセージを表示//これは不要

                      if         stat!0 : dialog"Wininet.dll”の初期化に失敗しました。\n(ECDI003)",1,"初期化失敗のお知らせ"*/

 

 

 //文字列型変数を作る

sdim yyyy , 35000 //これは起動用

sdim negi , 5000  //プロセス監視用

sdim mrlh , 10000 //ファイル実行用

//sdim erlg , 5000  //エラーログ用

sdim mmic , 5000  //予備

sdim klnt , 5000  //フォルダ監視

sdim htnm , 390  //一時セーブデータファイルパス

//sdim kgmn , 1500  //

//sdim mgrn , 100   //

 

//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

 

           x=320//ウィンドウの最大サイズXです。便利なのでここで指定しておきます。

          

           by=80//ボタンサイズYです。ボタンが表示されなかった場合にYからこのぶんだけ減算します。

           nof=0//nofは表示できなかったボタンの数です。ノフとでも呼んでおきます。

 

           fba=4//終了ボタンも含めた最大ボタン数です。計算に使います。

 

           nfa=fba-1//ノーファイルオール。表示可能最大ボタン数です。ノフがこれより大きいとエラーとします。

 

           y=by*fba//ウィンドウの最大サイズYです。ボタンが表示されなかった場合に減算されます。(この値はボタンYサイズ× 終了ボタンを含めた最大ボタン数で計算します。)

 

screen 0 , x , y , 4/*+8*/ , 0 , 0 , x , y  //ランチャーのウィンドウを作成

objsize x , by , by  //ボタンのサイズを指定。ここでは横320ピクセル、縦80ピクセルのボタンにする。

dmmplay 0//BGMを再生させる

 

font "MS 明朝",32,21//フォントの設定。サイズ32:下線と太字。(アンチエイリアスはXP以外のOS)

 

objmode 2,1//ボタンのフォントを変更し、フォーカスのTabキー操作を可能にする。

 

 

 

//============================================================ゲームのボタン表示機構

 

exist"Sys\\Game.exe"//ゲームがあるかどうかチェック

if strsize=-1{y-by

width x , y , -1 , -1//なかったらウィンドウのサイズを小さくする。

nof+1

else {button"ゲームを起動",*stut  }//ゲームを起動する。ラベル"stut"に飛ぶ。

 

//============================================================コンフィグのボタン表示機構

 

exist"Sys\\Config.exe"//コンフィグがあるかどうかチェック

if strsize=-1{y-by

width x , y , -1 , -1//なかったらウィンドウのサイズを小さくする。

nof+1

else {button"コンフィグを起動",*config  }//コンフィグを起動する。ラベル"config"に飛ぶ。

//↑あったらボタンを表示

 

 

//============================================================説明書のボタン表示機構

 

exist"Sys\\Readme.txt"//説明書のデータがあるかをチェック

if strsize=-1{y-by

width x , y , -1 , -1//なかったらウィンドウのサイズを小さくする。

nof+1

else {button"説明書",*Readme  }//説明書を起動する。ラベル"Readome"に飛ぶ。

//↑あったらボタンを表示

 

//============================================================ボタン表示機構ここまで

 

button"終了",*ending  //ランチャーを終了する。ラベル"ending"に飛ぶ。 (ちなみに、ラベルに"end"と付けると別コマンド扱いになってしまう

 

if nof=nfa : dialog"ボタンが{終了}しか表示できません!\n(ECID:004)",1,"究極のエラー"//ボタンがどれひとつとして表示できなかった場合

 

//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

 

*buttonstop

 

stop  //処理が止まる魔法の呪文「ストップ」命令

 

 

/*ユーザーがボタンで選択できるのはここまで。

 これ以降はフクザツ()な処理

*/

 

 

*stut//"ゲームを起動"のボタンが押された場合に飛んでくるためのラベル

dmmplay 1//SEを再生する。

dmmstop 0//BGMを停止させる

screen 0 , 160 , 120 , 6 , 0 , 0 , 0 , 0  ;ウィンドウを初期化して透明にする。

clrobj 0 , 2  //どの道見えないけどボタンを削除

//=====================================================================ゲームを起動する部分

 

 

 

pipeexec yyyy ,"Sys\\Game.exe",1  //ゲームを起動する。

//起動しようとしたけど見つからなかった場合にエラーメッセージを表示する。

if stat : dialog "エラー:Game.exeがありません。\n 削除されたか名前が変更されています。\n\nもし、名前を誤って変更してしまった場合は”Game.exe”に書き換え、\n消失してしまった場合は再インストールしてください。\nOK」を押すとアプリケーションを終了します。(ECDI000)",1,"WRELFTOOL": goto*ending

 

 

 

//=====================================================================ゲームを起動する部分ここまで

*lup//メイン処理のループ開始地点にラベルを貼っておく(念のため)

repeat   //ループ処理をおこなってくれるマジックスペル

//===========================================メイン処理部分======================================================================================---

 

 

 

           exist"Sys\\fd.fd"   //FDファイルがないか検査。FDファイルがあった場合は普通にファイルを実行する

           if strsize=-1:else:notesel mrlh:noteload "Sys\\fd.fd":goto*fd//ファイルをmrlhに読み込む]

 

 

           exist"Sys\\HP.HP"   //HPファイルがないか検査。HPファイルがあった場合はホームページとして実行する

           if strsize=-1:else:notesel mrlh:noteload "Sys\\HP.HP":goto*hp//ファイルをmrlhに読み込む]

 

           exist"Sys\\sd.sd"   //SDファイルがないか検査。SDファイルがあった場合は中に記入されているセーブデータをデリート(削除)する。

           if strsize=-1:else:notesel mrlh:noteload "Sys\\sd.sd":goto*sd//ファイルをmrlhに読み込む]

 

goto*loopendpoint//上記のファイルがなかった場合はパイプ監視地点へ飛ぶ

//普通にファイルを開く場合

*fd

 

                      exist "Sys\\fd.fd"//もうFDファイルは用済みなので削除するためあるかどうか確認する

                      if strsize>0 : delete "Sys\\fd.fd"//もしあったら削除する

 

            exist mrlh//普通にファイルを起動する。まず呼び出すファイルがあるかどうか確認する

           if strsize=-1 : dialog"指定されたファイル名は無効です。\n(ECID005)"+mrlh : else : exec mrlh ,0,"open"

 

goto*loopendpoint

//ホームページを開く場合

*hp

 

                      exist "Sys\\HP.HP"//もうHPファイルは用済みなので削除するためあるかどうか確認する

                      if strsize>0 : delete "Sys\\HP.HP"//もしあったら削除する

 

                      exec mrlh ,16//ウェブサイトの場合はコンピューター上にないので調べずに即実行

 

goto*loopendpoint

//セーブデータを消す

*sd

 

           exist "Sys\\sd.sd"//もうSDファイルは用済みなので削除するためあるかどうか確認する

                      if strsize>0 : delete "Sys\\sd.sd"//もしあったら削除する

 

           exist mrlh

                      if strsize>0 : {delete mrlh

                                  else : dialog "指定されたデータはありません"+mrlh+"\nECID:006" , 1 , "削除エラー"

 

goto*loopendpoint

          

//===========================================メイン処理部分ここまで==============================================================================---

*loopendpoint        //ループエンドポイントというラベル地点

pipeget negi         //ネギにGame.exeの実行状況を詰め込む

if stat=0:dialog"Game.exeは終了されました。",0,"インフォメーション":goto*ending    //ネギの中が空っぽだったらGame.exeが終了した証

wait 1        //ネギの中に何かしら入ってたら数ミリ秒まってループ開始地点(repeat)にぶっ飛ぶ

 

loop       //ループの先頭に戻る処理

          

*ending      //終了ボタンを押したときに飛んでくるためのラベル

dmmplay 1//SEを再生する。

wait 30//SEがなり終わるまで待機させる。

dmmbye

end           //エンド。ここに来るときはウィンドウが透明なのでこれがないとプロセスをタスクマネージャから落とすしかなくなる。

//===========================================

*Readme        //説明書ボタンを押したときに飛んでくる場所。endの下なのでラベルで飛んでくる以外にここに来る方法はない。

dmmplay 1//SEを再生する。

exist"Sys\\Readme.txt"

if strsize=-1{dialog"Readme.txtが存在しません。\nこのテキストはランチャーが起動したあとに削除されたか、名前が変更されています。(ECDI001)",1,"消失"

else {exec "Sys\\Readme.txt",0,"open"}//説明書を起動する部分。なければボタンが表示されないのでこれでよし

 

 

goto*buttonstop//   ボタン操作の"stop"命令の部分まで飛ぶ

//===========================================//===========================================

//===========================================//===========================================

//===========================================//===========================================

//===========================================コンフィグボタンを押したときの処理

*config

dmmplay 1//SEを再生する。

exist"Sys\\Config.exe"

if strsize=-1{dialog"Config.exeが存在しません。(ECDI002)",1,"実行中のエラー"

else {exec "Sys\\Config.exe",0,"open"}

 

 

goto*buttonstop//   ボタン操作の"stop"命令の部分まで飛ぶ

//===========================================コンフィグボタンを押したときの処理ここまで

 

;ランチャーとしてはまぁまぁの出来

;ちなみにコメント文(実行されない文)の先頭には

;←これとか

//←これとかが使える。

/*

 これは囲った範囲をコメントにする。終わりの"/"をつけないと[EOF]まで全てコメントになってしまう。

  なお、空白や改行は無視されるが、大文字の空白やラベル指定のすぐ後ろに空白を入れるのはダメらしい。

*/

//以上。

/*

■■■■■■■■■

MimicNETGames

■■■■■■■■■

*/