投稿記事

吉里吉里スクリプトの記事 (3)

神楽いづち/**PetitPot** 2022/05/25 01:21

【吉里吉里】探索画面


拙作『共鳴ロンターノ』ver.1.1で実装した探索パートの作り方について書いてみます。
画像の矢印ボタンと!ボタンで操作すること前提に作成しています。十字キー対応まではしていませんが可能であればアレンジしていただいても大丈夫です。

ゲーム製作エンジン『吉里吉里』用のスクリプトです。
吉里吉里2KAG3にて検証済みですが、動作を保証するものではありません。
※適宜書き換えてご利用ください。報告は任意です。
※以前ブログで全体公開していたものを掲載しています。おまけ程度に御覧ください。

内容

・準備する画像
・キャラクターの歩行アニメ
・キャラクターの移動
・マップの切り替え

フォロワー以上限定無料

無料プランの記事を読むことができます。 ゲーム制作の進捗やイラストなど。

無料

神楽いづち/**PetitPot** 2022/05/25 01:01

【吉里吉里】性格判定・スチル一覧

ゲーム製作エンジン『吉里吉里』のスクリプト置き場。備忘録程度のため全体公開です。
吉里吉里2KAG3にて検証済みですが、動作を保証するものではありません。
※適宜書き換えてご利用ください。報告は任意です。
※以前ブログで全体公開していたものを掲載しています。おまけ程度に御覧ください。

内容

・スチル一覧pimage
・性格判定スクリプト

スチル一覧pimage


▲やりたいこと(右上にカーソルをのせた状態)
▼準備するもの

(参考までに↓ 上2つは今回関係ないですが)
awR:あとがきにカーソルをのせたときに表示される画像
baR:タイトル画面に戻る「Back」にカーソルをry
extra_bg:おまけ画面のJPG画像。この土台に色々のっけます。
extra_bg:クリッカブルマップに必要なMAファイル
extra_bg_p:クリッカブルマップに必要なPNGファイル
g1:スチル1の閲覧条件を満たしたとき指定の場所に表示される画像
g1R:g1にカーソルのせたとき表示される画像
以下略。
このゲームの場合スチルは全部で6枚ですが、サンプルでは省略してます。

extra.ksの中身そのまま載せます。

[laycount layers=3]
;使用するレイヤ数を指定
[if exp="sf.スチル1==1"]
;「sf.スチル1」ってxに1が代入されてる場合[endif]までを実行
[image layer=0 storage="g1R" page=fore visible=false left=364 top=76]
;ロールオーバー画像の指定。
;色文字の部分が大事です。後はMAファイルさんが動かしてくれます。
[endif] [if exp="sf.スチル2==1"]
[image layer=1 storage="g2R" page=fore visible=false left=494 top=76] [endif]
[if exp="sf.スチル3==1"] [image layer=2 storage="g3R" page=fore visible=false left=364 top=178]
[endif] [backlay]
[image storage="extra_bg" layer=base page=back] [pimage storage="g1" layer=base page=back dx=364 dy=76 cond="sf.スチル1==1"]
;「sf.スチル1」が1の場合、つまり本編中にスチル1を見た場合
;指定した座標にスチル1のサムネが表示されます。
[pimage storage="g2" layer=base page=back dx=494 dy=76 cond="sf.スチル2==1"] [pimage storage="g3" layer=base page=back dx=364 dy=178 cond="sf.スチル3==1"]
[trans method=crossfade time=50] [wt]
;上述のものを色々と指定してからここで画面切り替え。
;タイトル画面からおまけ画面へと切り替わります。

[s]
;プレイヤーの指示待ち

意外と大事なことなんですけど、pimageタグの特徴で
①imageタグの直後じゃないとだめ。
②1枚のレイヤの上に何枚でも画像を載せれる。

というのがあります。
なので[image][pimage][pimage][pimage][pimage]...とできるわけですね。ただし間に別のタグを挟むとpimageが動いてくれません、ってことです。
表情差分でも同じように眼鏡オプションとか付けれますので是非ご活用ください~

性格判定スクリプト

「育成ゲーム作りたい!」
「年齢と能力や属性から性格を判定したい!」
(これを応用すれば、判定した性格によって顔グラフィック変更可能に!)

といった場合に使うスクリプトです。

そのまま載せます。

;(性格)
[eval exp="f.年齢=8"]
;(なし)
[if exp="f.属性=='なし'"] [if exp="f.年齢>=8"][eval exp="f.性格='ふつう'"][endif]
[if exp="f.年齢>=11"][eval exp="f.性格='平凡'"][endif] [if exp="f.年齢>=14"][eval exp="f.性格='良識的'"][endif]
;(光)
[if exp="f.属性=='光'"] [if exp="f.年齢>=8"][eval exp="f.性格='優しい'"][endif]
[if exp="f.年齢>=11"][eval exp="f.性格='純朴'"][endif] [if exp="f.年齢>=14"][eval exp="f.性格='博愛'"][endif]
[endif]
;(炎)
[if exp="f.属性=='炎'"] [if exp="f.年齢>=8"][eval exp="f.性格='腕白'"][endif]
[if exp="f.年齢>=11"][eval exp="f.性格='活発'"][endif] [if exp="f.年齢>=14"][eval exp="f.性格='熱血'"][endif]
[endif]
;(地)
[if exp="f.属性=='地'"] [if exp="f.年齢>=8"][eval exp="f.性格='よい子'"][endif]
[if exp="f.年齢>=11"][eval exp="f.性格='穏やか'"][endif] [if exp="f.年齢>=14"][eval exp="f.性格='鷹揚'"][endif]
[if exp="f.年齢>=14 && f.道徳<=50"][eval exp="f.性格='腹黒'"][endif] [endif]
;(水)
[if exp="f.属性=='水'"] [if exp="f.年齢>=8"][eval exp="f.性格='内気'"][endif]
[if exp="f.年齢>=11"][eval exp="f.性格='小心者'"][endif] [if exp="f.年齢>=14"][eval exp="f.性格='内向的'"][endif]
[if exp="f.年齢>=14 && f.魅力>=80"][eval exp="f.性格='社交的'"][endif] [endif]
;(風)
[if exp="f.属性=='風'"] [if exp="f.年齢>=8"][eval exp="f.性格='ふしぎ'"][endif]
[if exp="f.年齢>=11"][eval exp="f.性格='変り者'"][endif] [if exp="f.年齢>=14"][eval exp="f.性格='飄逸'"][endif]
[endif]
;(闇)
[if exp="f.属性=='闇'"] [if exp="f.年齢>=8"][eval exp="f.性格='無口'"][endif]
[if exp="f.年齢>=11"][eval exp="f.性格='一匹狼'"][endif] [if exp="f.年齢>=14"][eval exp="f.性格='クール'"][endif]
[if exp="f.年齢>=14 && f.体力>=80 && f.道徳<=30"][eval exp="f.性格='凶人'"][endif] [endif]

;性格がどれになるか表示
[emb exp="f.性格"] [s]

低年齢だと「良い子」とか「ふしぎちゃん」の方が合ってるんですけど16歳でそう呼ぶのは何となく憚られるし、年齢上がったときに性格名も変わった方がなんかレベルアップ感出ていいよね!ってことで8歳のときの闇属性は無口、11歳のときの闇属性は一匹狼みたいな感じになるようにしてます。
地水闇の三属性のみ能力値判定もしています。
14歳闇属性かつ体力80以上かつ道徳30以下の場合「凶人」の性格になります。
それ以外の場合は14歳闇属性であればクールになります。

例えばこのスクリプトを「0.ks」に保存して、育成画面の設定ファイル「SLG.ks」の一番最初に0.ksを毎回読み込むようにしておけば、どこか別のファイルで属性や年齢が変更されようとも育成画面に戻ればそれが反映される仕組みです。
ついでに0.ksに年月日の確認スクリプトなんかも入れておけば一石二鳥です。

広がれ育成ゲー創作者の輪!

神楽いづち/**PetitPot** 2022/05/25 00:44

【吉里吉里】スクリプト小ネタ

ゲーム製作エンジン『吉里吉里』のスクリプトについて備忘録程度の小ネタのため全体公開にしてあります。
吉里吉里2KAG3にて検証済みですが、動作を保証するものではありません。
※適宜書き換えてご利用ください。報告は任意です。
※以前ブログで全体公開していたものを掲載しています。おまけ程度に御覧ください。

内容

・メッセージレイヤより上に前景レイヤ(立ち絵など)
・属性にニックネーム%|
・表情差分pimage
・左右反転マクロ
・変数の上限設定
・タイトル画面からロード(ボタン画像)

メッセージレイヤより上に前景レイヤ

[layopt layer=0 index=1000001 autohide=true] [layopt layer=1 index=1001001 autohide=true]
index属性を付けてあげて、1000001から始まって1000ずつ増えてくはず。

属性にニックネーム%|

[macro name=立ち絵] [backlay]
[image storage=%s layer=1 page=back visible=true top=0 left=0] [trans time=%t|100 method=crossfade][wt] [endmacro]

タグの属性には全てニックネームがつけられます。
マクロ内タグに画像や時間を指示する場合、本来なら
[立ち絵 storage=Mikasa time=300]
と打たなければなりません。

が、%を使えばstorageやtimeを好きなアルファベットに置き換えることができます。
storageだったらs、timeだったらtのように。で…
[立ち絵 s=Armin t=50]
こんな感じにできます。余計な情報がないので見やすいですね。

あと「|」(半角+Shift+¥キー)の後ろは特に指定がない場合に実行するファイル/数値です。
[立ち絵 s=Levi]
とすれば、トランジションのtimeは最初に指定した通り100で実行されます。imageタグにも|+ファイル名を加えておけば[立ち絵]だけできちんと立ち絵が表示されます。

表情差分pimage

[macro name=左] [backlay]
[image storage=%s|K1 layer=1 page=back visible=true top=30 left=40] [pimage storage=%m|K1def layer=1 page=back dx=0 dy=0];眉の差分レイヤ
[pimage storage=%e|K1def layer=1 page=back dx=0 dy=0];目の差分レイヤ
[pimage storage=%k|K1def layer=1 page=back dx=0 dy=0];口の差分レイヤ
[pimage storage=%s|none layer=1 page=back dx=0 dy=0];オプション(汗や照れ顔、メガネ等)レイヤ
[pimage storage=%s|none layer=1 page=back dx=0 dy=0];オプションレイヤ2
[trans time=%t|100 method=crossfade][wt]
[endmacro]

としておけば、[左]だけでデフォルトの表情のキャラを表示でき、かつ

[左 m=K1hachi k=K1close]

という風に眉と口だけ差分を指定することも可能です。

左右反転マクロ

[macro name=左右反転] [eval exp="kag.getLayerFromElm(mp).flipLR()"]
[endmacro]

上下反転したい場合はflipLR()をflipUD()に書き換えるだけ。
実際には、

[backlay] (表示の準備)
[左 s=leo] (左側に表示したい立ち絵のファイル名を指定)
[左右反転 layer=1 page=back] (反転するレイヤ番号を指定)
[表示] (トランジションで表示)

な感じで使います。

変数の上限設定

iscriptタグで
f.変数名 = (int)Math.min(f.変数名+1, 100);
とすると上限が100になります。
f.変数名+1,の「1」はその変数の初期値。
変数を文字表示する直前にでも記述しておくといいみたいです。

タイトル画面からロード

吉里吉里に付属しているrclick_tjs.ksのロード画面を、
タイトル画面から呼び出したい!ってときに書くやつです。

ロードボタン(画像)をクリックして呼び出す方式。

[eval exp="kag.callExtraConductor('rclick_tjs.ks', '*rclick'); tf.sav=2;"]

( )内等、必要に応じて書き換えてください。

月別アーカイブ

限定特典から探す

記事を検索