ページ 1 / 1
解決済み【VX・RGSS2改造リクエスト】戦闘コマンド入力中 立ち絵表示
Posted: 2018年5月22日(火) 22:52
by 金田一光彦
こんばんわ。
白の魔様の戦闘コマンド入力中 立ち絵表示
http://izumiwhite.web.fc2.com/rgss2/rgss2_004.html
こちらのスクリプトの改造(追加機能)をお願いしたく書き込みました。
デフォルト仕様としてカスタムできるのが画像の位置と透明度ですが、更に以下のオプションを追加したいです:
①画像をスライド表示させる。最初に表示させる位置と最終的に表示できる位置を設定可能にすればイベントコマンドのようにスライド表示できるかと思いました。
イベントコマンドでしたら簡単に設定できるのでスクリプトで難しくはないと思いますがプログラミング知識0のため改造方法がわかりません。
②瀕死状態の時グラフィック変化。残りHPが少ない時わかりやすくするためグラフィック変更をしたいです。危険時は人によってパーセンテージも変わると思うので(30%が危険と思う人や10%以下でないと危険と思わない方や様々だと思うので)個々でカスタムできるように改造したいです。
③ステート別にグラフィック変更可能にしたいです。例えば全身緑色のグラフィックを用意し、ステートID2(毒)の場合そのグラフィックに変更する。
④各キャラクターに設定できる画像をランダムに。例えばアクターID1のラルフのバストアップを通常時5枚、瀕死時3枚、ステート別1枚ずつ(毒1枚、麻痺1枚等)用意します。通常時5枚の中からランダムで表示(ニコニコ表情の1枚・力んでる表情1枚・やる気ある1枚・余裕かましてる表情の1枚・警戒してる表情1枚からランダムで表示)、瀕死時3枚ある中から1枚をランダムに表示(傷だらけの1枚・血を吐いているのを1枚・ガーンっとやばそうな表情のを1枚、この3種類からランダムで1枚表示)
⑤画像がないキャラの場合ポップアップで「画像がありません」と言うメッセージは表示せず、そのまま何も表示しないで続行。デフォルトの仕様ですと画像がないとポップアップメッセージからの強制終了なので、強制終了しないようにしたいです。
改造できる方に設定部分の操作仕様はお任せします。
全ての要望が可能でなくても、一部の改造が可能な場合でも構いません。
よろしくお願いします。
Re: 【VX・RGSS2改造リクエスト】戦闘コマンド入力中 立ち絵表示
Posted: 2018年5月23日(水) 04:41
by TOMO
こんな感じでいいですか?
コード: 全て選択
module WD_battlepicture_ini
# 瀕死状態の条件式
# (「a.〇〇」と「v[n]」のみです。「b.〇〇」は使えません)
CrisisHp = "a.hp <= a.maxhp * 0.3" # HPが最大HPの30%以下
# 立ち絵の設定
# 立ち絵ファイル名には、「文字列」または「配列」で設定して下さい
# 配列時にはその中からランダムで決定されます
#
# 顔グラファイル名 => {
# :normal => 通常時の立ち絵ファイル名,
# :crisis => 瀕死時の立ち絵ファイル名,
# :state => {ステートID => ステート別の立ち絵ファイル名,},
# },
FaceName = {
"Actor5" => {
:normal => ["Actor5_n1.png", "Actor5_n2.png"],
:crisis => "Actor5_c.png",
:state => {
2 => "Actor5_s2.png",
},
},
}
# スライド開始座標
Start_x = -80 # x
Start_y = -16 # y
# スライド終了座標
End_x = 0 # x
End_y = -16 # y
# スライド速度
Move_x = 10 # 横
Move_y = 10 # 縦
end
class Window_BattlePicture < Window_Base
#--------------------------------------------------------------------------
# ● リフレッシュ(変更)
#--------------------------------------------------------------------------
def set(a)
self.contents.clear
# 追加変更
self.x = WD_battlepicture_ini::Start_x
self.y = WD_battlepicture_ini::Start_y
v = $game_variables
condition = WD_battlepicture_ini::FaceName[a.face_name]
return unless condition
if a.states.any? {|state| condition[:state][state.id] }
state = a.states.find {|state| condition[:state][state.id] }
face_name = determine_picture(condition[:state][state.id])
elsif eval(WD_battlepicture_ini::CrisisHp)
face_name = determine_picture(condition[:crisis])
else
face_name = determine_picture(condition[:normal])
end
return if face_name.nil?
# ここまで
bitmap1 = Cache.picture(face_name)
rect1 = Rect.new(0, 0, bitmap1.width, bitmap1.height)
x = 416 - bitmap1.width / 2 + WD_battlepicture_ini::Picture_x
y = 432 - bitmap1.height + WD_battlepicture_ini::Picture_y
self.contents.blt(x,y,bitmap1,rect1,WD_battlepicture_ini::Picture_opacity)
end
#--------------------------------------------------------------------------
# ● 立ち絵の決定
#--------------------------------------------------------------------------
def determine_picture(pictures)
result = pictures.is_a?(Array) ? pictures[rand(pictures.size)] : pictures
result = nil unless FileTest.exist?("Graphics/Pictures/" + result.to_s)
result
end
#--------------------------------------------------------------------------
# ● スライド処理
#--------------------------------------------------------------------------
def move
unless self.x == WD_battlepicture_ini::End_x &&
self.y == WD_battlepicture_ini::End_y
move_x = WD_battlepicture_ini::Move_x
move_y = WD_battlepicture_ini::Move_y
if self.x > WD_battlepicture_ini::End_x
self.x = [self.x - move_x, WD_battlepicture_ini::End_x].max
elsif self.x < WD_battlepicture_ini::End_x
self.x = [self.x + move_x, WD_battlepicture_ini::End_x].min
end
if self.y > WD_battlepicture_ini::End_y
self.y = [self.y - move_y, WD_battlepicture_ini::End_y].max
elsif self.y < WD_battlepicture_ini::End_y
self.y = [self.y + move_y, WD_battlepicture_ini::End_y].min
end
end
end
end
class Scene_Battle
attr_accessor :battle_picture_window
#--------------------------------------------------------------------------
# ● アクターコマンド選択の開始(変更)
#--------------------------------------------------------------------------
def start_actor_command_selection
wd_orig_start_actor_command_selection4
@battle_picture_window.visible = true
@battle_picture_window.set(@active_battler)
end
#--------------------------------------------------------------------------
# ● アクターコマンド選択の更新
#--------------------------------------------------------------------------
alias wd_orig_update_actor_command_selection_ex update_actor_command_selection
def update_actor_command_selection
wd_orig_update_actor_command_selection_ex
@battle_picture_window.move
end
end
白の魔様のスクリプトより下に入れて下さい
解決【VX・RGSS2改造リクエスト】戦闘コマンド入力中 立ち絵表示
Posted: 2018年5月23日(水) 10:01
by 金田一光彦
TOMO様
早速作っていただきありがとうございます。テストプレイしてみました。
頂いたコードの:crisis => "Actor5_c.png",の部分に[]が抜けていたので追加してテストしたら問題なく表示されました。
ありがとうございました。