奴隷商人から奴隷を購入するイベントを作りたいです。
選択肢などでアクターを選ぶことはできますが、転職システムで使われる転職画面のように、専用の画面が欲しいのです。
スクリプトを作成できる方いらっしゃいませんか!?
【解決済】奴隷購入システムのリクエスト
Re: 奴隷購入システムのリクエスト
こんな感じでいいですか?
コード: 全て選択
# アクター購入画面
# 制作者:TOMO
#
#
# ※使い方
# 1.イベントコマンド「スクリプト」等で
#
# SceneManager.call(Scene_ActorShop)
# SceneManager.scene.prepare([5,6,7,8,9,10])
#
# とする
# (各数値はアクターID)
#
# 2.データベースのアクターのメモ欄に
# <購入金額:n>
# と書く(nは金額)
#
#
# ※補足
# 購入画面のアクターのステータスは、デフォルトのステータスです
# レベルアップ等で変化したステータスではありません
class Window_ActorShopList < Window_Selectable
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_reader :status_window # ステータスウィンドウ
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(actors)
super(0, 0, window_width, fitting_height(10))
@actors = actors
@money = 0
refresh
activate.select(0)
end
#--------------------------------------------------------------------------
# ● ウィンドウ幅の取得
#--------------------------------------------------------------------------
def window_width
return 240
end
#--------------------------------------------------------------------------
# ● 項目数の取得
#--------------------------------------------------------------------------
def item_max
@data ? @data.size : 1
end
#--------------------------------------------------------------------------
# ● アクターの取得
#--------------------------------------------------------------------------
def actor
@data[index]
end
#--------------------------------------------------------------------------
# ● 所持金の設定
#--------------------------------------------------------------------------
def money=(money)
@money = money
refresh
end
#--------------------------------------------------------------------------
# ● 選択項目の有効状態を取得
#--------------------------------------------------------------------------
def current_item_enabled?
enable?(@data[index])
end
#--------------------------------------------------------------------------
# ● アクターの値段を取得
#--------------------------------------------------------------------------
def price(actor)
@price[actor]
end
#--------------------------------------------------------------------------
# ● アクターを許可状態で表示するかどうか
#--------------------------------------------------------------------------
def enable?(actor)
actor && price(actor) <= @money &&
!$game_party.members.include?($game_actors[actor.id])
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
make_shop_list
create_contents
draw_all_items
end
#--------------------------------------------------------------------------
# ● ショップリストの作成
#--------------------------------------------------------------------------
def make_shop_list
@data = []
@price = {}
@actors.each do |actor_id|
actor = $data_actors[actor_id]
@data.push(actor)
@price[actor] = 0
if actor.note.match(/<購入金額:(\d+)>/i) && $1.to_i > 0
@price[actor] = $1.to_i
end
end
end
#--------------------------------------------------------------------------
# ● 項目の描画
#--------------------------------------------------------------------------
def draw_item(index)
actor = @data[index]
rect = item_rect(index)
change_color(normal_color, enable?(actor))
draw_text(rect, actor.name)
rect.width -= 4
draw_text(rect, price(actor), 2)
end
#--------------------------------------------------------------------------
# ● ステータスウィンドウの設定
#--------------------------------------------------------------------------
def status_window=(status_window)
@status_window = status_window
end
#--------------------------------------------------------------------------
# ● ヘルプテキスト更新
#--------------------------------------------------------------------------
def update
super
@status_window.actor = actor if @status_window
end
end
class Window_ActorShopStatus < Window_Base
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(x)
super(x, 0, Graphics.width - x, Graphics.height)
@actor = nil
deactivate
end
#--------------------------------------------------------------------------
# ● アクターの設定
#--------------------------------------------------------------------------
def actor=(actor)
return if @actor == actor
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
contents.clear
return unless @actor
rect = Rect.new(0, 0, contents_width, line_height)
actor = Game_Actor.new(@actor.id)
draw_actor_class(actor, rect.x, rect.y)
rect.y += line_height
draw_actor_face(actor, rect.x, rect.y)
rect.y += 100
8.times do |i|
draw_actor_param(actor, rect.x, rect.y, i)
rect.y += line_height
end
actor = nil
end
end
class Scene_ActorShop < Scene_MenuBase
#--------------------------------------------------------------------------
# ● 準備
#--------------------------------------------------------------------------
def prepare(actors)
@actors = actors
end
#--------------------------------------------------------------------------
# ● 開始処理
#--------------------------------------------------------------------------
def start
super
@list_window = Window_ActorShopList.new(@actors)
@list_window.money = $game_party.gold
@list_window.set_handler(:ok, method(:on_buy_ok))
@list_window.set_handler(:cancel, method(:return_scene))
@status_window = Window_ActorShopStatus.new(@list_window.width)
@list_window.status_window = @status_window
@gold_window = Window_Gold.new
@gold_window.y = Graphics.height - @gold_window.height
end
#--------------------------------------------------------------------------
# ● 購入[決定]
#--------------------------------------------------------------------------
def on_buy_ok
Sound.play_shop
$game_party.lose_gold(@list_window.price(@list_window.actor))
$game_party.add_actor(@list_window.actor.id)
@list_window.money = $game_party.gold
@list_window.activate
end
end
Re: 奴隷購入システムのリクエスト
>TOMOさん
完璧です!ありがとうございます!
完璧です!ありがとうございます!