2013-08-22

RGSS-パラメーター上昇アイテム使用制限

«RGSS一覧


う~ん…タイトルがいつも微妙でごめん。


今回は
アクターのパラメータが最大の時
パラメータ上昇アイテムを使用不可にする
ように改造します。


なんとこれで…


「能力値MAXなのに間違えて使っちまった!!!うおおおぉ~~~ん!!!」


という勿体無く嘆かわしい出来事も防げるんです!


アイテム使用時のターゲットステータスに腕力だとか、魔力だとかの詳細はデフォルトのままだと見えないし、その状態で能力アップを間違えて使っちゃうのはプレイヤーにとって不親切かな~とか思ってやってみました。


ステータスについては、まあ…
レイアウトや表示を変えれば解決するんですが。
プレイヤーさんが
「このパラメータは最大値だな」と思ってても
間違えてポチっと使っちゃう事も
あるかもしれないじゃないですか(・ω・)


…え?烏守じゃないから間違えないって?
あややややや(((゚Д゚;)))

まあとりあえず、やってみましょー!




【今回の変更点】
・Game_Battler 3



■Game_Battler 3

デフォルトではHP、SP回復アイテムの場合だと
対象アクターが全回復している状態なら
ブザーが鳴ってアイテムが使用できないようになっていますよね。

今回はそこを応用してみました。
とりあえず、HP回復アイテム処理のスクリプトについて解説!


last_hp = self.hp
last_sp = self.sp
self.hp += recover_hp
self.sp += recover_sp
effective |= self.hp != last_hp
effective |= self.sp != last_sp


recover_hp がアイテムに設定されている「HP回復量」で
self.hp が対象アクターの現在のHPを表しています。
アイテムの回復量で現在HP、SPが変化したかどうかで
effective が切り替わるようになってます。
この effective という変数は、
アイテムを使用したかどうかを判断させるための
スイッチのような存在になってます。
これが true であれば、消費アイテムは消費されます。


では、パラメータの方も
最大の場合にはアイテムを消費しないように変更してみましょう。

変更場所は以下のwhen…の下です。
(デフォルトのままなら271行目あたり)
# パラメータ上昇値が有効の場合
if item.parameter_type > 0 and item.parameter_points != 0
 # パラメータで分岐
 case item.parameter_type
  when 1 # MaxHP
     :
     :

パラメータごとに
「@maxhp_plus += item.parameter_points」
のようになっていますが、
最大値はGame_Battler 1 と Game_Actorで設定してある
MaxHP の取得等で制限される事になるので
中身を思いっ切り

maxhp = self.maxhp
self.maxhp += item.parameter_points
effective |= self.maxhp != maxhp

に変更!

self.maxhpが最大HP、self.maxspが最大SP
self.strが腕力…というように
selfで対象アクターのパラメータを示します。

パラメータ分岐の中身を変更し終えたら
最後尾についている
# 有効フラグをセット
effective = true

を消去しておきましょう。



これでプレイヤーさんが
アクターのパラメータが最大値の時に間違ってアイテムを使ってしまって
「あ~~勿体無い事した~~orz」
なんて目には合わなくなったハズ。


完成したら必ず面倒だと言わずにテストしておくように(・ω・)



★このスクリプトを使った関連作品

category:
2013-08-10

RGSS-制御文字で絵文字を表示

«RGSS一覧


台詞に「♥(ハートマーク)」を入れたり絵文字でキャラクターの感情を表現したいけど
文字だと環境依存で?になって表示できないし…
と、


諦めたらそこで試合終了だよ(・ω・)


それなら自分で作っちゃえばいいのさ~♪


「でも絵文字の絵を作ってもメッセージに表示するやり方を知らない」
って方に、
今回は制御文字で絵文字を表示させるやり方を伝授します!




【今回の変更点】
・Window_Message

【用意するもの】
・絵文字画像

SilverHearts絵文字サンプルダウンロード

*絵文字サンプルの著作権はSilverHeartsにあります。公開作品に使用する場合はクレジット表記をお願いします。



【スクリーンショット】

こんな感じになります。
絵文字の種類を増やせば、メッセージをより豊かに彩る事ができます。
ビジュアル重視の作品にはもってこい?




■Window_Message

文字描画でいつもお世話になってる「def refresh」に注目。
text.gsub!だとかがつらつら並んでいる場所、
while ((c = text.slice!…の上あたりに
まずはひとつ、スクリプトを追加します。

text.gsub!(/\\[Ee]\[([0-9]+)\]/) { "\006[#{$1}]" }

ここでは、文章の表示に書き込んだ「\E」を「\006」に変換させます。


で、次は。
wheile…の下に

  if c == "\006"
 text.sub!(/\[([0-9]+)\]/, "")
 emoji = $1.to_i
 case emoji
 when 0
  bitmap = RPG::Cache.picture("ハート")
 when 1
  bitmap = RPG::Cache.picture("キラキラ")
    :
    : 使う絵文字の分だけ上と同じように追加
    :
 end
 self.contents.blt(4 + x, 32 * y + 2, bitmap, Rect.new(0, 0, bitmap.width, bitmap.height))
 x += bitmap.width
 next
end

というように追加します。
これで文章の表示で「\E[0]」と書き込むと
Picturesフォルダに入っているハートが、
「\E[1]」と書き込むとキラキラの絵文字が表示されます。
ね、簡単でしょ?



初期からある制御文字の応用なので、
執筆者の書き方がヒジョ~に分かりにくくても(笑)
どうすればいいかすぐ分かるかと思います。

スクリーンショットで使った絵文字4点は
上の「SilverHearts絵文字サンプル」のリンク先からセットでダウンロードできますので、指定フォルダに入れてテストしてみてください。

category: