ページ 1 / 1
【解決済み】仲間(アクター)の図鑑のプラグイン
Posted: 2017年2月04日(土) 03:38
by やっこ
こんばんは、やっこと申します
現在VXで最近のソーシャルゲームにあるような、ガチャガチャで仲間を増やすタイプのRPGの制作を考えています
そこで、モンスター図鑑ならぬガチャで出てきた『仲間たちの図鑑』を求めています
・ウィンドウはキャラクター情報、キャラクター一覧、図鑑完成度を表す%の三つ
・情報の枠内、名前の前に『No.001、No.002』とナンバーが表示される
・キャラクターのグラフィックが出来るだけ大きく表示される
・HPなどのステータス情報は省いている
上記に酷似するプラグインなどありましたら紹介して頂ければ幸いです
よろしくお願いします
Re: 【VX】仲間(アクター)の図鑑のプラグイン
Posted: 2017年2月14日(火) 21:20
by faida
こんばんは。
手元にVXがないので想像で作りました。
ちょっと情報が足りないところがあったので、報告していただけると対応できるかもしれません。
コード: 全て選択
=begin
◆概要
キャラ図鑑っぽい何かを作ります。
◆機能
・$scene = Scene_CharacterDictionary.newでキャラ図鑑っぽい何かを呼び出せます。
・情報は名前とグラフィックのみ。
◆仕様
・VXBeteranで作成したのでVXで動くかが分からない。
◆使用上の注意
・再定義なし。エイリアスあり。
=end
module FAI_CharaDicthionary
# 設定項目:アクターのデータを流用する
# trueにするとID、名前、グラフィックが自動で「データベースの」アクターデータから
# 流用できます。
# グラフィックですが、Graphics/Pictureに「(顔グラの画像名)-(インデックス)」って
# 画像を用意してください。
# 例:ラルフの顔グラ(Actor1の最初のヤツ)→Actor1-1
# また、下の設定項目で流用データに沿わないものも設定できます。
# falseにすると全部手動で設定するハメになります。
USE_ACTOR_DATA = true
CHARA_NAME = {}
# 設定項目:アクターの名前
# 無いと自動で欠番になります。
CHARA_NAME[1] = "ラルフ"
CHARA_NAME[2] = "ウルリカ"
CHARA_GRAPHICS = {}
# 設定項目:アクターの画像名
# アクターの名前がないと意味がありません。無いと何も表示しません。
CHARA_GRAPHICS[1] = "Actor1-1"
CHARA_GRAPHICS[2] = "Actor1-4"
# 設定項目:仲間にしたアクターのIDの図鑑フラグを自動でONにする
CHARA_FLAG_ADD_PARTY = true
# 設定項目:フラグが立っていないアクターをリストに表示する
CHARA_NO_FLAG_SHOW = true
# 設定項目:フラグがたっていないアクターの名前
# 1文字にすると名前分繰り返し、2文字以上は繰り返しなし
CHARA_NO_FLAG_NAME = "?"
# 設定項目:達成率のテキスト
CHARA_CR_TXT = "達成率 %s%"
end
class Game_DictionaryData
include FAI_CharaDicthionary
attr_accessor :data
def initialize
reset_data
end
def reset_data
@data = {}
if USE_ACTOR_DATA
$data_actors.each_with_index{|actor, i|
next if !actor || actor.name.empty?
@data[i] = [actor.name, "#{actor.face_name}-#{actor.face_index}"]
}
end
CHARA_NAME.each{|i, name|
@data[i] = [] if !@data[i]; @data[i][0] = (name.empty? ? nil : name)
}
CHARA_GRAPHICS.each{|i, name|
next if !@data[i]; @data[i][1]=name if @data[i][0] && !@data[i][0].empty?
}
end
def check_actor_data
return if !USE_ACTOR_DATA
reset_data if @data.keys.max != $data_actors.compact.size
end
def [](id)
@data[id]
end
def size
@data.keys.size
end
def keys
@data.keys
end
end
class Game_System
include FAI_CharaDicthionary
attr_reader :charadic_flag
attr_reader :charadic_data
alias fai_cd_initialize initialize
def initialize
fai_cd_initialize
clear_charadic_flag
end
def clear_charadic_flag
@charadic_flag = []
@charadic_data = Game_DictionaryData.new
end
def add_charadic(id)
clear_charadic_flag if !@charadic_flag
@charadic_flag |= [id]
@charadic_flag.sort
end
def delete_charadic(id)
@charadic_flag.delete(id)
end
def check_cd_actor_data
@charadic_data.check_actor_data
end
def cd_complete_rate
@charadic_flag.size * 100 / @charadic_data.size
end
def cd_name(id)
name = @charadic_data[id][0]
return name if @charadic_flag.include?(id)
CHARA_NO_FLAG_NAME * (CHARA_NO_FLAG_NAME.size == 1 ? name.size : 1)
end
def cd_gra(id)
@charadic_flag.include?(id) ? @charadic_data[id][1] : ""
end
end
class Game_Party < Game_Unit
#--------------------------------------------------------------------------
# ● 初期パーティのセットアップ
#--------------------------------------------------------------------------
alias fai_cd_setup_starting_members setup_starting_members
def setup_starting_members
fai_cd_setup_starting_members
@actors.each{|actor_id|$game_system.add_charadic(actor_id)}
end
#--------------------------------------------------------------------------
# ● アクターを加える
#--------------------------------------------------------------------------
alias fai_cd_add_actor add_actor
def add_actor(actor_id)
fai_cd_add_actor(actor_id)
if FAI_CharaDicthionary::CHARA_FLAG_ADD_PARTY && @actors.include?(actor_id)
$game_system.add_charadic(actor_id)
end
end
end
#==============================================================================
# ■ Scene_File
#==============================================================================
class Scene_File < Scene_Base
#--------------------------------------------------------------------------
# ● ロードの実行
#--------------------------------------------------------------------------
alias fai_cd_do_load do_load
def do_load
fai_cd_do_load
$game_system.check_cd_actor_data
end
end
class Window_CD_NameList < Window_Selectable
include FAI_CharaDicthionary
def initialize
super(0, 0, Graphics.width - 320, Graphics.height)
make_data
refresh
self.active = true
self.index = 0
end
def make_data
@data = []
if CHARA_NO_FLAG_SHOW
$game_system.charadic_data.keys.each{|id|@data << id}
else
$game_system.charadic_flag.each{|id|@data << id}
end
@item_max = @data.size
end
def draw_item(index)
id = @data[index]
contents.draw_text(0, WLH * index, contents.width, WLH, $game_system.cd_name(id))
end
def refresh
create_contents
(0...@data.size).each{|i|draw_item(i)}
end
def actor
@data[index]
end
end
class Window_CD_Graphics < Window_Base
def initialize
super(Graphics.width - 320, 0, 320, Graphics.height - (WLH + 32))
@actor = nil
end
def actor=(id)
return if @actor == id
@actor = id
refresh
end
def refresh
return if !@actor
contents.clear
name = sprintf("No.%03d ", @actor) + $game_system.cd_name(@actor)
contents.draw_text(0, 0, self.width, WLH, name)
bitmap = Cache.picture($game_system.cd_gra(@actor)) rescue return
x = (contents.width - bitmap.width) / 2
y = [contents.height - bitmap.height, WLH].max
contents.blt(x, y, bitmap, bitmap.rect)
end
end
class Window_CD_CompleteRate < Window_Base
def initialize
super(Graphics.width - 160, Graphics.height - (WLH + 32), 160, WLH + 32)
rate = $game_system.cd_complete_rate
text = sprintf(FAI_CharaDicthionary::CHARA_CR_TXT, rate)
contents.draw_text(0, 0, self.width, WLH, text)
end
end
class Scene_CharacterDictionary < Scene_Base
#--------------------------------------------------------------------------
# ● 開始処理
#--------------------------------------------------------------------------
def start
super
create_menu_background
@list_window = Window_CD_NameList.new
@gra_window = Window_CD_Graphics.new
@cr_window = Window_CD_CompleteRate.new
end
#--------------------------------------------------------------------------
# ● 終了処理
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@list_window.dispose
@gra_window.dispose
@cr_window.dispose
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
super
update_menu_background
@list_window.update
@gra_window.update
@gra_window.actor = @list_window.actor
@cr_window.update
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
end
end
#--------------------------------------------------------------------------
# ● 元の画面へ戻る
#--------------------------------------------------------------------------
def return_scene
$scene = Scene_Map.new
end
end

- CharaDictionary.png (202.42 KiB) 閲覧された回数 8944 回
※このスクリプトは拙作「VXBeteran」を使用してVXAceで作成したものです。
VXBeteranのver1.0で動作を確認しているため、VXで正常に動作するかはわかりません。
※2019/9/2 不具合修正
Re: 【VX】仲間(アクター)の図鑑のプラグイン
Posted: 2019年9月01日(日) 03:13
by やっこ
faida さんが書きました:こんばんは。
手元にVXがないので想像で作りました。
ちょっと情報が足りないところがあったので、報告していただけると対応できるかもしれません。
わざわざプラグイン作成ありがとうございます!
私生活で忙しく、何年もイン出来ておらず反応が遅くなって大変申し訳ありませんでした
ゲーム作成自体は続けていこうと思っていますので、もしよろしければ引き続きよろしくお願い致します
試しにイベントでスクリプトを呼び出してみたところ、画像のようなエラーが出てしまいましたので報告致します

- 新規キャンバス2.png (6.09 KiB) 閲覧された回数 7845 回
Re: 【VX】仲間(アクター)の図鑑のプラグイン
Posted: 2019年9月02日(月) 21:44
by faida
アコルトさん
ご報告ありがとうございます。
修正いたしましたので、お手数ですが上の返信から元のスクリプトに
上書きいただければと思います。
※VXBeteran(VXAce)の機能で動いていた箇所を修正しました。
Re: 【解決済み】仲間(アクター)の図鑑のプラグイン
Posted: 2019年9月26日(木) 17:30
by やっこ
今度はエラーが出ることなく表示出来ました!クレジットについても承知しました
faida様ありがとうございました、これにて解決済みとさせて頂きます