メニュー画面スクリプトの編集について

らみあ
記事: 4
登録日時: 2018年2月04日(日) 10:58

メニュー画面スクリプトの編集について

投稿記事by らみあ » 2018年2月04日(日) 11:09

初めまして、らみあと申します。
この掲示板を使用するのは今回が初めてなのですが、どうぞよろしくお願い致します。

さて、件の内容についてなのですが、まず現在使用しているスクリプトを見て頂ければと思います。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
#立ち絵表示
#
#
# 内容:立ち絵の表示 / 独自ステータスの表示 / 項目削除[並べ替え][ステータス]
# by nleo

# Pictureフォルダの画像を以下のファイル名で参照します
# "立ち絵_" SIMGA[着替えID] + "_" + SIMGB[表情ID]
#

module MENUSTAND
SIMGAID = 3
SIMGBID = 4
KIND = ["未設定", "未設定", "未設定", "未設定", "未設定"]
STATS = [25, 26, 27, 28, 29]
end

class Window_Base < Window
#--------------------------------------------------------------------------
# ○ 立ち絵の描画
#--------------------------------------------------------------------------
def draw_standimage(x, y, enabled = true)


$game_variables[MENUSTAND::SIMGBID] = 1 if $game_variables[MENUSTAND::SIMGBID] <= 0
$game_variables[MENUSTAND::SIMGAID] = 1 if $game_variables[MENUSTAND::SIMGAID] <= 0

filename = "Actor" + $game_variables[MENUSTAND::SIMGAID].to_s + "_" + $game_variables[MENUSTAND::SIMGBID].to_s
bitmap = Cache.picture(filename)

rect = Rect.new(0, 0, 500, 500)
contents.blt(x, y, bitmap, rect, enabled ? 255 : translucent_alpha)
bitmap.dispose
end
end

class Window_MenuStatus < Window_Selectable
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

上記の物なのですが、今のままだと操作キャラクターを変更した場合、変更前のキャラクターの画像がステータスに反映されてしまいます。
そこで、キャラクターを変更すると、パラメータ、アクターの画像が反映されるようにしたいのですが、どのように記入すればよろしいでしょうか?

拙い文で申し訳ありませんが、どうぞご教授のほど、よろしくお願い致します。

faida
記事: 224
登録日時: 2015年12月17日(木) 16:44

Re: メニュー画面スクリプトの編集について

投稿記事by faida » 2018年2月04日(日) 11:58

はじめまして。
まず、スクリプトの入手先を明記してください。
作者様の利用規約の関係上、スクリプトについての質問もしくはスクリプトの転載ができない場合があります。
次に、この貼っていただいたスクリプト、実際に描画するウィンドウの処理が無いので質問に対する答えが出せません。
実際に使用している全文を(できれば入手先のサイトURLか、もしくはスクリプトを直接ここに)貼り付けてください。
なお、スクリプトを張る場合、入力枠上の「Code」を使用すると、長いスクリプトでも見やすくできます。

コード: 全て選択

こういう風に出ます。
---------------------------------------------
自作の(改造でない)スクリプト素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
らみあ
記事: 4
登録日時: 2018年2月04日(日) 10:58

Re: メニュー画面スクリプトの編集について

投稿記事by らみあ » 2018年2月04日(日) 12:07

>>faidaさん
初めまして。 返信、ご指摘、ありがとうございます。

このスクリプトに関しましては、最初は知り合いが作ってくれたんですが、その知り合いと連絡が取れなくなってしまった為、今回この場でご質問させて頂きました。
折角作ってもらった物なのに上手く扱えず、憤っていたところです。

そして早速ですが、教えて頂いた機能を使って貼り付けてみました。
もしよろしければ、見て頂けると幸いです。

コード: 全て選択

#立ち絵表示
#
#
# 内容:立ち絵の表示 / 独自ステータスの表示 / 項目削除[並べ替え][ステータス]
# by nleo

# Pictureフォルダの画像を以下のファイル名で参照します
# "立ち絵_" SIMGA[着替えID] + "_" + SIMGB[表情ID]
#

module MENUSTAND
  SIMGAID = 3
  SIMGBID = 4
  KIND = ["未設定", "未設定", "未設定", "未設定", "未設定"]
  STATS = [25, 26, 27, 28, 29]
end

class Window_Base < Window
  #--------------------------------------------------------------------------
  # ○ 立ち絵の描画
  #--------------------------------------------------------------------------
  def draw_standimage(x, y, enabled = true)

   
    $game_variables[MENUSTAND::SIMGBID] = 1 if $game_variables[MENUSTAND::SIMGBID] <= 0
    $game_variables[MENUSTAND::SIMGAID] = 1 if $game_variables[MENUSTAND::SIMGAID] <= 0
   
    filename = "Actor" + $game_variables[MENUSTAND::SIMGAID].to_s + "_" + $game_variables[MENUSTAND::SIMGBID].to_s
    bitmap = Cache.picture(filename)
   
    rect = Rect.new(0, 0, 500, 500)
    contents.blt(x, y, bitmap, rect, enabled ? 255 : translucent_alpha)
    bitmap.dispose
  end
end

class Window_MenuStatus < Window_Selectable
  #--------------------------------------------------------------------------
  # ■ 項目の高さを取得
  #--------------------------------------------------------------------------
  def item_height
    (height - standard_padding * 2)
  end
 
  #--------------------------------------------------------------------------
  # ○ メニュー立ち絵のステータス描画
  #--------------------------------------------------------------------------
  def draw_actor_stand_status(actor, x, y)
#~     bw = 260 #block width
        bw = 0 #block width
    # 能力地の描画
    draw_parameters(actor, x, y)
    # 経験地の描画
    draw_exp_info(actor, x, y + 150)
   
    y += 205

    change_color(system_color)
    # 独自ステータスの名前を描画
    (MENUSTAND::KIND.length).times {|i|
      draw_text(x, y+line_height*i, 20 * MENUSTAND::KIND[i].length, line_height, MENUSTAND::KIND[i])
    }
   
    # 独自ステータスの値を描画
    change_color(normal_color)
    draw_text(x+150, y+line_height*0, 20 * $game_variables[MENUSTAND::STATS[0]].to_s.length.to_i + 30, line_height, $game_variables[MENUSTAND::STATS[0]].to_s)
    draw_text(x+150, y+line_height*1, 20 * $game_variables[MENUSTAND::STATS[1]].to_s.length.to_i + 30, line_height, $game_variables[MENUSTAND::STATS[1]].to_s)
    draw_text(x+150, y+line_height*2, 20 * $game_variables[MENUSTAND::STATS[2]].to_s.length.to_i + 30, line_height, $game_variables[MENUSTAND::STATS[2]].to_s+"人")
    draw_text(x+150, y+line_height*3, 20 * $game_variables[MENUSTAND::STATS[3]].to_s.length.to_i + 30, line_height, $game_variables[MENUSTAND::STATS[3]].to_s+"mℓ")
    draw_text(x+150, y+line_height*4, 20 * $game_variables[MENUSTAND::STATS[4]].to_s.length.to_i + 30, line_height, $game_variables[MENUSTAND::STATS[4]].to_s+"mℓ")

#~     draw_text(x+150, y+line_height*0, bw, line_height, $game_variables[MENUSTAND::STATS[0]].to_s)
#~     draw_text(x+150, y+line_height*1, bw, line_height, $game_variables[MENUSTAND::STATS[1]].to_s+"人")
#~     draw_text(x+150, y+line_height*2, bw, line_height, $game_variables[MENUSTAND::STATS[2]].to_s+"回")
#~     draw_text(x+150, y+line_height*3, bw, line_height, $game_variables[MENUSTAND::STATS[3]].to_s+"回")
#~     draw_text(x+150, y+line_height*4, bw, line_height, $game_variables[MENUSTAND::STATS[4]].to_s+"回")
#~     draw_text(x+150, y+line_height*5, bw, line_height, $game_variables[MENUSTAND::STATS[5]].to_s+"回")
   
    y += 135 # 微妙に下にずらす
    draw_actor_name(actor, x + bw, y)
    draw_actor_level(actor, x + bw + 100, y)
    draw_actor_icons(actor, x + bw, y + line_height * 1)
    draw_actor_hp(actor, x + bw, y + line_height * 2)
    draw_actor_mp(actor, x + bw, y + line_height * 3)
  end
  #--------------------------------------------------------------------------
  # ● 職業の描画
  #--------------------------------------------------------------------------
  def draw_actor_class(actor, x, y, width = 112)
    change_color(normal_color)
    draw_text(x, y, width, line_height, actor.class.name)
  end
  #--------------------------------------------------------------------------
  # ● 能力値の描画
  #--------------------------------------------------------------------------
  def draw_parameters(actor, x, y)
    6.times {|i| draw_actor_param(actor, x, y + line_height * i, i + 2) }
  end
  #--------------------------------------------------------------------------
  # o 経験値情報の描画
  #--------------------------------------------------------------------------
  def draw_exp_info(actor, x, y)
    s1 = actor.max_level? ? "-------" : actor.exp
    s2 = actor.max_level? ? "-------" : actor.next_level_exp - actor.exp
    s_next = sprintf(Vocab::ExpNext, Vocab::level)
    change_color(system_color)
    draw_text(x, y + line_height * 0, 180, line_height, Vocab::ExpTotal)
    draw_text(x, y + line_height * 1, 180, line_height, s_next)
    change_color(normal_color)
    draw_text(x, y + line_height * 0, 180, line_height, s1, 2)
    draw_text(x, y + line_height * 1, 180, line_height, s2, 2)
  end
  #--------------------------------------------------------------------------
  # ■ 項目の描画
  #--------------------------------------------------------------------------
  def draw_item(index)
    actor = $game_party.members[index]
    enabled = $game_party.battle_members.include?(actor)
    rect = item_rect(index)
    draw_item_background(index)
    draw_standimage(rect.x, rect.y, enabled)
    draw_actor_stand_status(actor, rect.x+10, rect.y + line_height / 2)
  end
end

#==============================================================================
# ■ Window_MenuCommand
#------------------------------------------------------------------------------
class Window_MenuCommand < Window_Command
  #--------------------------------------------------------------------------
  # ■ 主要コマンドをリストに追加
  #--------------------------------------------------------------------------
  def add_main_commands
    add_command(Vocab::item,   :item,   main_commands_enabled)
    add_command(Vocab::skill,  :skill,  main_commands_enabled)
    add_command(Vocab::equip,  :equip,  main_commands_enabled)
#~     add_command(Vocab::status, :status, main_commands_enabled)
  end
  #--------------------------------------------------------------------------
  # ■ 並び替えをコマンドリストに追加
  #--------------------------------------------------------------------------
  def add_formation_command
  end
end

#memo
# $data_system.switches[4] # スイッチ
# $game_variables[id] # 変数
faida
記事: 224
登録日時: 2015年12月17日(木) 16:44

Re: メニュー画面スクリプトの編集について

投稿記事by faida » 2018年2月04日(日) 14:24

まず、このスクリプトの正確な使い方はご存知でしょうか。
このスクリプトは「変数の数値」に応じて立ち絵を表示するものですので、操作キャラクターを変更しても
変数を操作しなければ立ち絵は変更されません。つまり、基本的に一人旅用のスクリプトになります。
……の割に、パラメータ描画は多人数パーティに対応しているなどの不可解な点はありますが。

とりあえず触ってみて考えたのですが、「操作キャラクターを変更」というのはどのような操作なのでしょうか。
「基本一人旅で、イベントコマンドを使ってアクターを加入/脱退」させるのであれば、
ついでに変数を操作してください。
「多人数パーティで、メニュー画面で参照するアクターを変更する」(つまりスキルや装備コマンドを選ぶときに
上下キーを使う)のであれば、そもそもこの「変数の数値に応じて立ち絵を表示する」というシステム自体が
要らないものになります。

とにかく「したいこと」があまりはっきり見えていないので曖昧な表現になってしまいましたが、
今のところアドバイスできるのはこのくらいです。
---------------------------------------------
自作の(改造でない)スクリプト素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
らみあ
記事: 4
登録日時: 2018年2月04日(日) 10:58

Re: メニュー画面スクリプトの編集について

投稿記事by らみあ » 2018年2月04日(日) 21:46

>>faidaさん
変数の数値を弄って立ち絵を表示するということ自体は把握しているのですが、どの部分を
正確に弄ればいいのかが、あまり分かっていない状態です。
基本一人旅用で作ってくれたことを伝え忘れていたのは申し訳ありませんでした。
これを作ってくれた時に「衣装も変数で変えることができるから」と言っていたのですが、
やはりどの部分を弄ればいいのか、覚えておりません……。

また、「操作キャラクターを変更」の方法ですが――
基本パーティは1人で動きます。特定の対象に話しかけて、操作キャラクターを入れ替えると言った方が正確でした。
使用しているのは、イベントコマンドでアクターの変更です。

なので「したいこと」に関しましては
『イベントコマンドでアクターの変更を行う際、立ち絵の変数を変えて、アクター1からアクター2の立ち絵へ変更したい』

ということになります。
※また、独自ステータスもそれぞれ「アクター1」と「アクター2」独立して操作したいのですが、その場合もどうしたらいいでしょうか。

不躾な質問ばかりで申し訳ありません。どうぞよろしくお願い致します。
faida
記事: 224
登録日時: 2015年12月17日(木) 16:44

Re: メニュー画面スクリプトの編集について

投稿記事by faida » 2018年2月04日(日) 22:18

ご質問の意図を大体把握しました。
まず、立ち絵について解説します。
スクリプト上部の説明に

コード: 全て選択

# Pictureフォルダの画像を以下のファイル名で参照します
# "立ち絵_" SIMGA[着替えID] + "_" + SIMGB[表情ID]
とあります。(この説明文実は間違っていますがまあいいです)
設定項目のSIMGAIDとSIMGBIDというのがありますね。これはそれぞれ「着替えID」「表情ID」を参照する変数IDを
示します。デフォルトだと3と4ですね。
例えば、ID3の変数が2で、ID4の変数が3であるとしましょう。そうすると、立ち絵は「Actor2_3」になります。
つまり「着替えID」か「表情ID」の変数の値の範囲をアクターごとに区切って(アクター1は1~10, アクター2は11~20など)、
操作キャラクターを変更する都度、値を変えていけばいいはずです。

独自ステータスはとりあえず2つの方法があります。
1つは「表示用の変数(設定項目の25~29がこれにあたります)」と「各アクターのパラメータ保存用変数」に分けること。
コモンイベントで「今パーティにいるアクターはどちらか」を条件分岐して、「表示用の変数」に
「各アクターのパラメータ保存用変数」を都度代入していく方法です。
こちらはスクリプトの改造が不必要です。
もうひとつはスクリプトを改造して、「各アクターのパラメータ保存用変数」をそのまま表示できるようにすることです。

コード: 全て選択

module MENUSTAND
  STATS = []
  # STATS[アクターID] = [変数ID5つ] で設定。
  STATS[1] = [25, 26, 27, 28, 29]
  STATS[2] = [30, 31, 32, 33, 34]
end

class Window_MenuStatus < Window_Selectable
  #--------------------------------------------------------------------------
  # ○ メニュー立ち絵のステータス描画
  #--------------------------------------------------------------------------
  def draw_actor_stand_status(actor, x, y)
#~     bw = 260 #block width
        bw = 0 #block width
    # 能力地の描画
    draw_parameters(actor, x, y)
    # 経験地の描画
    draw_exp_info(actor, x, y + 150)
   
    y += 205

    change_color(system_color)
    # 独自ステータスの名前を描画
    (MENUSTAND::KIND.length).times {|i|
      draw_text(x, y+line_height*i, 20 * MENUSTAND::KIND[i].length, line_height, MENUSTAND::KIND[i])
    }
   
    # 独自ステータスの値を描画 ☆ここを変更しました by faida
    change_color(normal_color)
    draw_text(x+150, y+line_height*0, 20 * $game_variables[MENUSTAND::STATS[actor.id][0]].to_s.length.to_i + 30, line_height, $game_variables[MENUSTAND::STATS[actor.id][0]].to_s)
    draw_text(x+150, y+line_height*1, 20 * $game_variables[MENUSTAND::STATS[actor.id][1]].to_s.length.to_i + 30, line_height, $game_variables[MENUSTAND::STATS[actor.id][1]].to_s)
    draw_text(x+150, y+line_height*2, 20 * $game_variables[MENUSTAND::STATS[actor.id][2]].to_s.length.to_i + 30, line_height, $game_variables[MENUSTAND::STATS[actor.id][2]].to_s+"人")
    draw_text(x+150, y+line_height*3, 20 * $game_variables[MENUSTAND::STATS[actor.id][3]].to_s.length.to_i + 30, line_height, $game_variables[MENUSTAND::STATS[actor.id][3]].to_s+"mℓ")
    draw_text(x+150, y+line_height*4, 20 * $game_variables[MENUSTAND::STATS[actor.id][4]].to_s.length.to_i + 30, line_height, $game_variables[MENUSTAND::STATS[actor.id][4]].to_s+"mℓ")

#~     draw_text(x+150, y+line_height*0, bw, line_height, $game_variables[MENUSTAND::STATS[actor.id][0]].to_s)
#~     draw_text(x+150, y+line_height*1, bw, line_height, $game_variables[MENUSTAND::STATS[actor.id][1]].to_s+"人")
#~     draw_text(x+150, y+line_height*2, bw, line_height, $game_variables[MENUSTAND::STATS[actor.id][2]].to_s+"回")
#~     draw_text(x+150, y+line_height*3, bw, line_height, $game_variables[MENUSTAND::STATS[actor.id][3]].to_s+"回")
#~     draw_text(x+150, y+line_height*4, bw, line_height, $game_variables[MENUSTAND::STATS[actor.id][4]].to_s+"回")
#~     draw_text(x+150, y+line_height*5, bw, line_height, $game_variables[MENUSTAND::STATS[actor.id][5]].to_s+"回")
   
    y += 135 # 微妙に下にずらす
    draw_actor_name(actor, x + bw, y)
    draw_actor_level(actor, x + bw + 100, y)
    draw_actor_icons(actor, x + bw, y + line_height * 1)
    draw_actor_hp(actor, x + bw, y + line_height * 2)
    draw_actor_mp(actor, x + bw, y + line_height * 3)
  end
end
こちら、お持ち帰り用ですので、今持っているスクリプトの下に貼り付けて使用できるはずです。

少々説明が分かりづらい所があると思いますので、分からないところなどあれば遠慮なくご質問ください。
---------------------------------------------
自作の(改造でない)スクリプト素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
らみあ
記事: 4
登録日時: 2018年2月04日(日) 10:58

Re: メニュー画面スクリプトの編集について

投稿記事by らみあ » 2018年2月04日(日) 23:14

>>faidaさん
ありがとうございます! 早速試行してみたところ、問題なくキャラの変更ができ、独自ステータスについても
問題なく編集できております!
拙い文で分かりにくかったにも関わらず、迅速且つ懇切丁寧なご対応、本当にありがとうございました!
このスクリプト、これからも大切に使わせて頂きます。
本当にありがとうございました!

“VX / Ace:質問” へ戻る