忍者ブログ

へぷたなすくろーる

RPGツクールのブログです。イベント講座とRGSS3スクリプト配布をやってます♪

Home > 記事一覧

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

スクリプトの競合対策その2、「切り替え型マージ」について

前回の記事で説明したマージの発展系です。
基本となる競合の仕組みやマージについては向こうの記事を参照して下さい。

さて、マージとは同じメソッドに
「Aの変更を加える」スクリプトと「Bの変更を加える」スクリプトがある場合
「AとBの変更を加える」スクリプトに改変することで競合を防ぐ方法でした。
しかし、当然それは(変更が両立可能な場合)という括弧付きです。
お互いに何かの処理を加えるというスクリプトなら問題はおきにくいですが
何かの処理を削る変更や、既存の数値を弄る変更は両立し難い場合があります。

そこで例えば、ある場面ではスクリプトAを、ある場面ではスクリプトBを適用したい。
或いは、ある場面ではスクリプトAを、ある場面ではデフォルトの仕様にしたい。
こういった形でスクリプトを導入したいというケースはあると思います。
今回はifとelse、つまり条件分岐を使ってスイッチで切り替える方式のマージを紹介します。

拍手[5回]

PR

RGSS3_ショップ価格変動すーぱー

ショップの買値や売値を、ショップ毎、アイテム毎に変動できるスクリプトです。
設定はメモ欄を参照するため、一括や凝った設定も簡単にできます。
以前作ったショップ価格変動スクリプトのリメイク版です。
敷居が2上がって、やれる事は10倍って感じなのでお好きな方をどうぞ。
使用上の留意点や補足などは続きにあります。

設定のリセット
以下の設定は全て、ショップを閉じたときにリセットされます。
手動でリセットする場合は「$game_temp.shop_initialize」と書きます。

価格の変動
イベントコマンドの「スクリプト」に書く。
$game_temp.nana_shop_pricelist1.push(["○○", n])
$game_temp.nana_shop_pricelist2.push(["○○", n])
メモ欄に○○とあるアイテムの価格がn%になります。
list1で追加した変動は重複なしで、最初の1つが適用されます。
list2は重複ありで、全ての倍率を掛けていきます。
""と指定すると全てのアイテムを対象にできます。

実際に書くときは、スクリプト欄のサイズの関係上
$game_temp.nana_shop_pricelist1.push(
["○○", n])
と区切って書いて下さい。(を上に残さないと認識しません。

価格の調整
イベントコマンドの「スクリプト」に書く。
$game_temp.nana_shop_pricelist3.push(["○○", n])
$game_temp.nana_shop_pricelist4.push(["○○", n])
メモ欄に○○とあるアイテムの価格が+nになります。
list1と2の変動計算の後に、nが加算(-nなら減算)されます。
list3が重複なし、list4が重複ありです。

売値の設定
◇初期設定の
SHOP_SELLPRICE = n
で売値が価格のn%か、既定値を設定できます。

イベントコマンドの「スクリプト」に書く。
$temp.nana_shop_sellprice = n
価格(=買値)に対して、売値がn%になります。


スクリプトをダウンロード

拍手[18回]

RGSS3_リンクアイテム

アイテム、武器、防具に他のアイテムへのリンクを設定できます。
リンク元のアイテムが増減する場合、リンク先のアイテムも同時に増減します。
(増減とは装備の付け外しやアイテムの使用、ショップでの売買も含みます)
これにより、アイテムとしても使える装備や複数の性能を持つ装備が作れます。
(つづきに具体的な作り方が載っています)

設定方法
データベースのアイテム、武器、防具のメモ欄にタグを書きます。
<リンクアイテム n>
<リンク武器 n>
<リンク防具 n>
n番のアイテム / 武器 / 防具へのリンクを設定します。(複数可)
タグを書いたアイテムが増減する場合、ここで設定したアイテムも同時に増減します。
(但しリンク先の増減で、新たにリンクが連鎖して発動することはない)

<リスト非表示>
このタグを書いたアイテムは、メニューやショップ売却のアイテムリストには表示されません。
ショップ購入、戦闘画面、装備画面などでは問題なく表示されます。
*スクリプター向け情報
表示されないのはWindow_ItemListクラスのinclude?メソッドを使っているもの。
子クラスであってもinclude?メソッドをsuperなしでオーバライドしているなら表示される。


<専用スロット n>
このタグを書いたアイテムは、n番のスロットにしか装備できません。
複数タグを書けば、そのどれかのスロットで装備できます。
ほぼ二刀流用の機能です。
右手装備と左手装備を別々に用意してバランスを調節したり
両手剣をスロット0専用にして「両手剣二刀流バグ」をなくしたりできます。

その他
ver1.1  専用スロットのタグを追加。
ver1.2  エラー落ちする不具合を修正。


スクリプトをダウンロード

拍手[14回]

RGSS3_セルフスイッチ操作ぷらす

イベントでセルフスイッチを自在に切り替えるスクリプトです。
デフォルトだとセルフスイッチは、そのイベント自身のものしか操作できませんが
これをマップIDとイベントIDを指定して、好きなセルフスイッチを操作できます。

また、1つ1つ指定するのではなく
全てのマップや、全てのイベントといった指定を組み合わせて行えます。

おまけで
スイッチと変数を「指定したID / 指定したID以外」で一括操作する機能が付いてます。

セルフスイッチの操作
イベントコマンドの「スクリプト」に書く。
adv_self_switches(マップID, イベントID, "スイッチ名", true / false)
マップIDとイベントIDは数値で指定し、スイッチ名は"A"や"B"で指定します。
trueならセルフスイッチがon、falseならセルフスイッチがoffになります。
例1: adv_self_switches(1, 1, "A", true)
マップ1番のイベント1番のセルフスイッチAをonにする。
[]で指定することで、複数のIDやスイッチ名を指定できる。
例2: adv_self_switches([1,2,3], 1, "A", true)
マップ1番と2番と3番のイベント1番のセルフスイッチAをonにする。
例3: adv_self_switches(1, [2,5], ["A","C"], true)
マップ1番のイベント2番と5番のセルフスイッチACをonにする。
"all"を指定することで、全てのIDやスイッチ名を一括指定できる。
例4: adv_self_switches("all", 1, "A", true)
全てのマップのイベント1番のセルフスイッチAをonにする。
例5: adv_self_switches(1, "all", "all", true)
マップ1番の全てのイベントのセルフスイッチABCDをonにする。
例6: adv_self_switches("all", "all", "all", false)
全てのセルフスイッチをoffにする。

スイッチ/変数の一括操作
イベントコマンドの「スクリプト」に書く。
adv_switches(スイッチID, true / false)
adv_switches_rev(スイッチID, true / false)
adv_variables(変数ID, 数値)
adv_variables_rev(変数ID, 数値)
IDは[]で複数指定可能。allの機能は無し(デフォルトで出来るので)。
_revが付いている方は、指定したID「以外」のスイッチ / 変数を操作する。

その他
ver1.1  特定状況で一部のセルフスイッチが切り替わらない不具合を修正


スクリプトをダウンロード

拍手[38回]

ブログ内検索

アーカイブ

最新コメント

[10/18 ヒヨラー]
[10/06 シキ]
[10/13 深海樹]
[08/02 ダイ二ホケンシツ]
[07/29 ダイ二ホケンシツ]

プロフィール

バナー

HN:奈々(なな)
RPGツクールVXAceを中心に製作を行っています。 スクリプト、イラスト、ドット絵など広くちょこちょこ手を出していますので、 できる範囲で他のツクーラーさんのお手伝いができたらなと思っています。