ソースコードの仕様

ソースコードの仕様

このアーカイブにはゲーム部分の実行ファイルのソースコードが添付されています。
ソースコードの言語はHSP3.2です。
HSP3.1までのバージョンではコンパイルできませんのでご注意ください。

ファイル、ディレクトリ構造について

場所と説明の一覧
rgn_common
汎用モジュール
rpg_common
RPG部分共通モジュール
rgn_game\module
ゲーム用モジュール
rgn_game\extension
RPG拡張モジュール格納ディレクトリ
rgn_game\rpg_generator.hsp
インクルードファイル
rgn_game\extension.hsp
拡張モジュール用ヘッダファイル
rgn_game\sample.hsp
サンプルコード
rgn_game\main.hsp
メインコード

メッセージのカスタマイズ

"rgn_game\module\constmessage.hsp"は戦闘メッセージの定数一覧です。
このソースコードを変えることで、基本メッセージを変えることができます。
"rgn_game\extension\rpg_command.hsp"は技、道具使用時に行われる命令です。
このソースコードを変えることで、メッセージやダメージ量などのパラメーターを変えることができます。

組み込みとしての利用

以下のファイルをインクルードして、"rpg_generator_init"命令を記述すると、

#include "module/main.hsp"
	rpg_generator_init
ゲームが起動します。 詳しくは"sample.hsp"をご覧ください。

拡張機能

拡張機能とは、ユーザーが高度な独自システムを構築することができる機能です。
この機能を使うと、独自の命令や関数でオリジナルシステムを呼び出したり、既存の機能を拡張することができます。

使用方法

  1. 拡張機能仕様に準したソースコードを"RPG\extension"ディレクトリに移動させる
  2. RPG\extension.hsp に追加したファイルの結合(#include)を行う

ソースコードの構造

以下のサンプルコードを参考にしてください。 モジュール内では、HSP標準命令、関数と、 内のすべてのモジュール命令、関数が使用できます。

#module
;命令を記述
#deffunc sampleextension int p1,int p2
	if p1=1{
		mode=1
		velocity=5
		vx=velocity
		vy=velocity
		if p2=0:n=10:else:n=p2
		count=n
		timecount=1
		cc=0
	}
	if p1=0:mode=0: timecount=0
	
	return
#deffunc sampleextension_draw
	if mode=0:return
	pos cx,cy
	gmode 3,0,0,128
	color 255,0,0
	grect cx,cy,1.0*c/10.0+3.141*2/3,32,32
	color 0,255,0
	grect cx,cy,1.0*c/10.0,32,32
	color 0,0,255
	grect cx,cy,1.0*c/10.0-3.141*2/3,32,32
	return
#deffunc sampleextension_draw2
	if  timecount=0:return
	if timecount=2{
		pos 10,10
		gmode 3,,,128
		color 0,0,0
		grect 300+20,25+10,0,600,50
		color 255,255,255
		pos 250,10
		font gettextfontname(),50,gettextfonttype()
		mes "TIME UP"
		return
	}
	pos 10,10
	gmode 3,,,128
	color 0,0,0
	grect 500+65,25+10,0,130,50
	color 255,255,255
	pos 500,10
	font gettextfontname(),50,gettextfonttype()
	mes ""+strf("%02d",count/60)+":"+strf("%02d",count\60)
	return
#deffunc sampleextension_task
	if mode=1{
		cx+=vx
		cy+=vy
		c+=2
		if cx<0:vx=velocity
		if cy<0:vy=velocity
		if cx>WINX:vx=-velocity
		if cy>WINY:vy=-velocity
		
	}
	if timecount=1{
		cc++
		if cc\50=0:count-=1:commonsound"select"
		if count=0{
			timecount=2
			}
		}
	if timecount=2{
		ccc++
		if ccc>=150{
			timecount=0
			}
	}
	return
#deffunc sampleextension_setlabel
;ラベル登録命令です。
;ここで、ラベルを登録しておくと、アクションが呼び出された時などに指定したラベルにジャンプします。
	newextensionlabel
	i=stat
	setextensionlabel i,0,*set;ゲーム起動時に呼び出される	
	setextensionlabel i,1,*task;各フレーム(20ms)ごとに呼び出されるタスク
	setextensionlabel i,2,*state;命令を呼び出すとき
	setextensionlabel i,3,*draw;描画時に呼び出される(マップチップ、オブジェクトの次に呼び出される)
	setextensionlabel i,4,*draw2;描画時に呼び出される(draw1よりも手前に描画される)
	setextensionlabel i,5,*exit;アクション終了時に呼び出される(終了処理をしない場合は呼び出されない)
	setextensionlabel i,6,*warp;マップ移動時に呼び出される
	setextensionlabel i,7,*actionatart;すべてのアクション開始時に呼び出される
	setextensionlabel i,8,*load;セーブデータ呼び出し
	labellist_saveextension_set i,"sample";セーブデータ拡張機能認識タグの登録
	setextensionlabel i,9,*save;セーブデータ書き込み
	setextensionlabel i,10,*exit2;アクション終了時に呼び出される
	return
*set
	dialog"サンプル拡張機能が初期化されました。"
	return
*task
	sampleextension_task
	return
*draw
	sampleextension_draw
	return
*draw2
	sampleextension_draw2
	return
*exit
	mode=0
	return
*actionatart
	return
*exit2
	return
*warp
	return
*load
//ロード時に1回だけ呼び出される(バージョン1.55で仕様変更)
	newmod buf_savedataextension ,mod_loadxml, RG_SAVEDATA_LOADTEXT;セーブしたXMLデータがこの変数に代入されている
	xmls buf_savedataextension,"data"
		xmltag "id",t
		dialog "id="+int(t.0)+"\ndata="+xmlt();読みだして表示
	xmld
	return
*save
	data="	<sample>\n";認識用タグ
	data+="		<data id=\"0\">TESTSAVEDATA</data>\n"
	data+="	</sample>\n"
	save_addsavedatatext data;セーブデータにXMLデータを追加する
	return
*state
	;アクション命令時に呼び出される
	;RG_SCRIPT_STATEMENT命令名が代入される。設定した命令と一致している場合のみ呼び出されるように記述する
	;RG_SCRIPT_NEXT
	;param1〜param8 パラメーターが代入される
	;RG_SCRIPT_RV=stat アクション命令の戻り値を代入するときは代入する
	if RG_SCRIPT_STATEMENT="sampleextension":sampleextension int(param1),int(param2):RG_SCRIPT_NEXT
	return
#global
;初期化命令
#ifdef EXTENSION_INIT
;初期化命令はこの中に記述する
	sampleextension_setlabel
#endif

ライセンスについて

このアーカイブ内のソースコードの著作権は一部を除いてSekiSekkiにあります。
"commonmodule"内のソースコードの一部には、SekiSekki以外のソースコードがあります。
そのコードの再配布等はその作者のライセンスに従ってください。

SekiSekkiのソースコードについては、ゲーム制作もしくはその支援に関することならば、 著作権情報を変更しない限り連絡なしで自由に改変、再配布してかまいません。
このとき、著作権情報の後に第3者による改変をしたことを何らかの形で示してください。
それ以外の場合は事前に連絡して許可をとってください。
改変したソースコードをコンパイルしてできたデータ(実行ファイル)についても同様です。

TOP