今回はご質問頂いていた
吉里吉里Z/KAG3でセーブ・ロードボタンを
メッセージ枠に表示するやり方の解説をしたいと思います。
それでは早速一緒にやってみましょう!
プラグインを使うと簡単に実装できる
今回は色々な墓場さまが配布されている
プラグインを使用させて頂きたいと思います。
色々な墓場さまでは
様々な便利なプラグインを配布されているので
私も個人制作してきた恋愛ゲームでも
とてもお世話になりました^^
それでは上記サイト様の
- システムボタンプラグイン
- 右クリックルーチン(ロード・セーブ・コンフィグ画面)サンプル
- TJS関数群
- KLayers(汎用レイヤーパーツ)
- 表示メッセージ保存プラグイン
をダウンロードしてください。
ダウンロードしたプラグインは
文字コードがSJISのため、
吉里吉里Zに合わせて、UTF-8に変更します。
「文字コードってなあに?」
「文字コードの変更ってどうしたらいいの?」
という方はこちらの記事で
文字コード変換のやり方についても
解説しているので、参考頂ければと思います^^
(変換は1~2分もあれば終わります)
文字コードの変換が完了したら
変換したプラグインをご自身のゲームプロジェクト内
「data」⇒「sinario」
フォルダの中に入れてください。
上記の通り、
- Krclick.ks
- Krclick_Data_Config.ks
- Krclick_Data_SaveLoad.ks
- ExtSystemButton.ks
- KLayers.ks
- TJSFunctions.ks
- MessageStore.ks
以上、7つのksファイルが
scinarioフォルダ内に入っていれば準備完了です。
ここまで終わったら、
コードを書いていきましょう。
セーブ・ロードボタンを実装してみよう
既存のプロジェクトの設定を変更する
私のサイトでは
たった5分!吉里吉里Zでの環境構築【PCでのノベル(恋愛)ゲームの作り方】
で、KAG3鱧拡張版をダウンロードする方法で
ご紹介していましたが、
今回はそちらを使用しないため
拡張機能をOFFにします。
まずは
「data」⇒「system」⇒「Config.tjs」
を開き、
「global.useHamExtention」を
「false」へ変更しましょう。
下記のようになります。
■Config.tjs
// ◆ Ham拡張の使用
// Ham Extention for KAG3を使用しない場合はfalseにしてください。
;global.useHamExtention = false;
//[end-global-additionals]
次に右クリックサブルーチンプラグインを使用するために
下記設定になっているか確認してください。
■Config.tjs
;freeSaveDataMode = false; ;saveThumbnail = true; ;numBookMarks = 48; ;thumbnailWidth = 128/640*scWidth;
なっていない場合は、上記の通り
各項目の設定を書き直しましょう。
次に
「data」⇒「sinario」⇒「titile.ks」
を開き、下記2点変更をしてください。
- [store enabled=”false”]を[disablestore]へ変更
- 15行目~19行目付近のロード・コンティニュー・コンフィグ表示をコメントアウト
変更した後のtitile.ksは下記になります。
※赤いハイライト部分が変更点です
■title.ks
[wait time=200] *title|タイトル [startanchor] [clearvar] [disablestore] [history enabled="false" output="false"] [delay speed="nowait"] [link target="*start"]スタート[endlink][r] ;[link target="*load"]ロード[endlink][r] ;[if exp='Storages.isExistentStorage("%s/%s%d.bmp".sprintf(kag.saveDataLocation, kag.dataName, MBSystemPref.quickSaveBookMark))'] ; [link target="*continue"]コンティニュー[endlink][r] ;[endif] ;[link target="*config"]コンフィグ[endlink][r] [link target="*exit"]終了[endlink][r] [delay speed="user"]
次にダウンロードしたプラグインの読み込み設定をします。
「data」⇒「sinario」⇒「first.ks」
を開き、下記記述を追加してください。
書く場所は、プラグイン定義の下に書くのがおすすめです。
■first.ks
;============================================ ;プラグイン定義 ;BGM・効果音(OggVorbis)を鳴らすためのプラグイン [loadplugin module="wuvorbis.dll"] [call storage="ButtonLinkPlugin.ks"] ;▼TJS関数群 [call storage="TJSFunctions.ks"] ;▼KLayers(汎用レイヤーパーツ) [call storage="KLayers.ks"] ;▼表示メッセージ保存プラグイン [call storage="MessageStore.ks"] ;▼右クリックルーチン(ロード・セーブ・コンフィグ画面)サンプル [call storage="Krclick.ks"] ;▼システムボタンプラグイン [call storage="ExtSystemButton.ks"]
ちなみに
プラグインのダウンロードページにも書かれている通り、
プラグインには前提となるプラグインがあります。
そのため、
プラグインを読み込ませる順番には注意してください。
例えば、今回ダウンロードした
「システムボタンプラグイン」を
動かすためには
とあるように
- KLayers(汎用レイヤーパーツ)
- TJS関数群
が必要になるので、
上記2つのプラグインを
;▼TJS関数群 [call storage="TJSFunctions.ks"] ;▼KLayers(汎用レイヤーパーツ) [call storage="KLayers.ks"]
と読み込ませた下で
;▼TJS関数群 [call storage="TJSFunctions.ks"] ;▼KLayers(汎用レイヤーパーツ) [call storage="KLayers.ks"] ;▼右クリックルーチン(ロード・セーブ・コンフィグ画面)サンプル [call storage="Krclick.ks"]
と書きましょう。
プラグイン配布サイトさまでも
前提プラグインの説明が書かれていますが、念の為(^^;
基本的には、
今後プラグインを追加する時は
下にどんどん書き足していけば問題ないです◎
セーブ・ロードボタン画像の準備
セーブ・ロードボタンなどの画像も
ダウンロードしておきましょう。
プラグインと同じく
「吉里吉里プラグインとかごった煮的配布場所」ページから
「プラグイン全部入りサンプルスクリプト」
をダウンロードしてください。
ダウンロードしたら
「AllPluginOne」⇒「AllPluginOne-20161018」⇒「data」⇒「image」
から
- Sysbtn_Save.png
- Sysbtn_Load.png
- Sysbtn_Config.png
をご自身のゲームフォルダ内
「data」⇒「image」
へ入れましょう。
これで準備は完了です。
セーブ・ロードボタンを表示させるためのコードを書く
あとはセーブ、ロードボタンを表示させるための
コードを書くだけです。
「data」⇒「sinario」⇒「1.ks」
を開き、
ボタンを表示させたい箇所で
下記の通り書いてみてください。
■first.ks
;セーブボタンの表示 [sysbutton graphic="Sysbtn_Save" top=416 left=500 exp="kag.callExtraConductor('Krclick.ks','*krclick_save')"] ;ロードボタンの表示 [sysbutton graphic="Sysbtn_Load" top=416 left=550 exp="kag.callExtraConductor('Krclick.ks','*krclick_load')"] ;コンフィグボタンの表示 [sysbutton graphic="Sysbtn_Config" top=416 left=604 exp="kag.callExtraConductor('Krclick.ks','*krclick_config')"]
せっかくなので
コンフィグボタンを一緒に追加しちゃいました(^^ゞ
ここまで書けたら変更したファイルを上書き保存して
ゲームを動かしてみましょう。
のようにボタン表示されていますでしょうか?
また、各ボタンをクリックすると
と表示できれば、全部問題なく動いてます!
もちろん
自分で用意した画像に差し替えたり、
表示位置を変えたりなども簡単にできますよ^^
画像の差し替えにはgraphic属性、
表示位置の変更はtop属性、left属性を
それぞれ変更すればOKです。
特にこだわりがなければ、元々実装されている機能を使うのも手
今回頂いたご質問の回答とは少し逸れますが、
もし
「メッセージ枠にくっつけて表示したい!」
というこだわりがなければ、
元々実装されている機能を使うのも手です。
私のサイトではこちらで
KAG3鱧拡張版をダウンロードする方法を
ご紹介していますが、こちらには元々
という感じで、右上のメニューアイコンで
各システムが呼び出せるようになっています。
もし
とりあえずゲーム画面中にセーブ・ロードを呼び出せるボタンがあればいいまん
ということでしたら
元々入っている拡張機能をそのまま使っていただくのが
一番楽かなとは思います。
そのあたりは
自分のこだわりの部分になると思うので
どちらを使用するか、好きな方を選んでもらえれば
よいと思います◎
以上、ここまで読んでいただいていかがでしたでしょうか?
次回もセーブ・ロード周りの記事をアップ予定です。
具体的には
- 今回ご紹介したプラグインと併用して使うと便利なプラグインのご紹介
- セーブ・ロード画面をカスタマイズする方法
あたりを予定しております。
ただ、他に別のご要望が多いようでしたら
そちらを優先的に解説していこうと思いますので
要望などあれば、気軽にコメント頂ければと思います。
その他、感想・疑問点なども
気軽にコメント頂ければ幸いです。
[temp id=4]
セーブの方法ありがとうございます。助かります!
この方法で実装したのですがタイトル画面にもセーブやロードのアイコンが出てしまいます…対処方法は何かありますでしょうか?
>りんさま
コメントありがとうございます!
すみません、システムボタンを消す方法について
記事中に記載してなかったですね・・・!
タイトル画面表示時に
[sysbutton_erase]
と記載いただければ、消すことができますので
そちらで試して頂ければと思います。
ありがとうございます
よく仕様書見たら確かに書いてありました…
ご連絡ありがとうございます。
解決されたようでよかったです!
参考になりました
コメント頂き、ありがとうございます。
参考になったとのことでよかったです!
すみません、1.ksに書いてある文をコピーペーストで貼り付けて起動して見たところメンバKAnimButtonLayerが見つかりませんと出ましたが、そもそもKAnimButtonLayerなんて文がどこにも見つからないです…この場合の対処方法とかってありますでしょうか?
sgk様
初めまして。
システムボタンを動作させるために必要な前提プラグインが
読み込まれていないような感じがするのですが
読み込みはされていますでしょうか?