ソースコードの仕様

ソースコードの仕様

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

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

場所と説明の一覧
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\rpg_constmessage.hsp"は戦闘メッセージの定数一覧です。
このソースコードを変えることで、基本メッセージを変えることができます。
"rgn_game\extension\rpg_constmessage.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以外の著作物があります。
当該著作物の利用条件はその著作者の規約・ライセンス等が適用されます。

ライセンス表示

	・ロープレジェネレーター ソースコード(別途著作権表示のあるコード等を除く)

	当ソースコードのライセンス表示は以下のとおりです。
	ライセンスは3条項BSDライセンスに相当します。
	(凡例: #著作権表示 *本条件 +免責条項)
	-----------------------------------------------------------------------
	# Copyright (c) 2020,SekiSekki
	  All rights reserved.

	  ソースコード形式かバイナリ形式か、変更するかしないかを問わず、
	  以下の条件を満たす場合に限り、再頒布および使用が許可されます。

	* ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、
	  および下記免責条項を含めること。

	* バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の資料に、
	  上記の著作権表示、本条件一覧、および下記免責条項を含めること。

	* 書面による特別の許可なしに、本ソフトウェアから派生した製品の宣伝または
	  販売促進に、SekiSekki(SekiSekki.net)の名前またはコントリビューターの名前を
	  使用してはならない。

	+ 本ソフトウェアは、著作権者およびコントリビューターによって「現状のまま」
	  提供されており、明示黙示を問わず、商業的な使用可能性、および特定の目的に対する
	  適合性に関する暗黙の保証も含め、またそれに限定されない、いかなる保証もありません。
	  著作権者もコントリビューターも、事由のいかんを問わず、 損害発生の原因いかんを
	  問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その他の)不法行為で
	  あるかを問わず、仮にそのような損害が発生する可能性を知らされていたとしても、
	  本ソフトウェアの使用によって発生した(代替品または代用サービスの調達、
	  使用の喪失、データの喪失、利益の喪失、業務の中断も含め、またそれに限定されない)
	  直接損害、間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害について、
	  一切責任を負わないものとします。
	-----------------------------------------------------------------------
	

TOP