赞 | 0 |
VIP | 4 |
好人卡 | 11 |
积分 | 1 |
经验 | 29368 |
最后登录 | 2021-11-17 |
在线时间 | 568 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 60
- 在线时间
- 568 小时
- 注册时间
- 2012-9-7
- 帖子
- 611
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 wingzeroplus 于 2013-4-24 21:23 编辑
- #==============================================================================
- # □ アイテム選択の処理実装 (for XP)
- #------------------------------------------------------------------------------
- # Version : 1_20120701
- # by サリサ・タイクーン
- # http://www.tycoon812.com/rgss/
- #==============================================================================
- #==============================================================================
- # □ 素材スイッチ
- #==============================================================================
- $rgsslab = {} if $rgsslab == nil
- $rgsslab["アイテム選択の処理実装"] = true
- if $rgsslab["アイテム選択の処理実装"]
- # カスタマイズポイントは、ありません。
- module RGSSLAB end
- #==============================================================================
- # □ RGSSLAB::Item_Select_Process [module]
- #==============================================================================
- module RGSSLAB::Item_Select_Process
- #--------------------------------------------------------------------------
- # ○ 素材設定用の定数定義
- #--------------------------------------------------------------------------
- MATERIAL_NAME = "アイテム選択の処理実装"
- VERSION = 1
- RELEASE = 20120701
- end
- #==============================================================================
- # ■ Game_Temp [class]
- #==============================================================================
- class Game_Temp
- #--------------------------------------------------------------------------
- # ● 公開インスタンス変数
- #--------------------------------------------------------------------------
- attr_accessor :selected_item
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化 [エイリアス]
- #--------------------------------------------------------------------------
- alias item_select_process_initialize initialize
- def initialize
- item_select_process_initialize
- @selected_item = 0
- end
- end
- #==============================================================================
- # ■ Game_Party [class]
- #==============================================================================
- class Game_Party
- #--------------------------------------------------------------------------
- # ○ アイテムオブジェクトの配列取得 (武器と防具を含む)
- #--------------------------------------------------------------------------
- def items
- result = []
- for i in @items.keys.sort do result.push($data_items[i]) if $data_items[i].id >100 and @items[i] > 0 end
- # for i in @items.keys.sort do result.push($data_items[i]) if @items[i] > 0 end
- # for i in @weapons.keys.sort do result.push($data_weapons[i]) if @weapons[i] > 0 end
- # for i in @armors.keys.sort do result.push($data_armors[i]) if @armors[i] > 0 end
- return result
- end
- end
- #==============================================================================
- # ■ Interpreter [class]
- #==============================================================================
- class Interpreter
- #--------------------------------------------------------------------------
- # ○ アイテム選択の処理の呼び出し
- # message : 表示メッセージ
- #--------------------------------------------------------------------------
- def call_item_select_process(message = "")
- @flag = true if $rgsslab["スクリプト・改"]
- $scene = Scene_ItemSelectProcess.new(message)
- @index += 1
- return false
- end
- end
- #==============================================================================
- # ■ Window_Base [class]
- #==============================================================================
- class Window_Base < Window
- #--------------------------------------------------------------------------
- # ○ 項目を描画する矩形の取得
- # index : 項目番号
- #--------------------------------------------------------------------------
- def item_rect(index)
- rect = Rect.new(0, 0, 0, 0)
- rect.width = contents.width / @column_max
- rect.height = 32
- rect.x = index % @column_max * rect.width + (index % @column_max * 20)
- rect.y = index / @column_max * 32
- return rect
- end
- end
- #==============================================================================
- # □ Window_ItemSelectProcess [class]
- #==============================================================================
- class Window_ItemSelectProcess < Window_Selectable
- #--------------------------------------------------------------------------
- # ○ オブジェクト初期化 [オーバーライド]
- #--------------------------------------------------------------------------
- def initialize
- super(320, 0, 320, 480)
- self.back_opacity = 128
- @column_max = 1
- self.index = 0
- refresh
- end
- #--------------------------------------------------------------------------
- # ○ アイテムの取得
- #--------------------------------------------------------------------------
- def item
- return @data[self.index]
- end
- #--------------------------------------------------------------------------
- # ○ リフレッシュ
- #--------------------------------------------------------------------------
- def refresh
- @data = []
- for item in $game_party.items
- @data.push(item)
- end
- @item_max = @data.size
- h = row_max * 32
- if h == 0
- h = 1
- end
- self.contents = Bitmap.new(width - 32, h)
- for i in 0...@item_max do draw_item(i) end
- end
- #--------------------------------------------------------------------------
- # ○ 項目の描画
- # index : 項目数
- #--------------------------------------------------------------------------
- def draw_item(index)
- rect = item_rect(index)
- self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
- item = @data[index]
- if item != nil
- case item
- when RPG::Item ; number = $game_party.item_number(item.id)
- when RPG::Weapon ; number = $game_party.weapon_number(item.id)
- when RPG::Armor ; number = $game_party.armor_number(item.id)
- end
- rect.width -= 4
- draw_item_name(item, rect.x, rect.y)
- self.contents.draw_text(rect.x + 240, rect.y, 16, 32, ":", 1)
- self.contents.draw_text(rect.x + 256, rect.y, 24, 32, number.to_s, 2)
- end
- end
- #
- end
- #==============================================================================
- # □ Window_ItemSelectProcess_Message [class]
- #==============================================================================
- class Window_ItemSelectProcess_Message < Window_Base
- #--------------------------------------------------------------------------
- # ○ オブジェクト初期化 [オーバーライド]
- # message : メッセージ
- #--------------------------------------------------------------------------
- def initialize(message)
- super(0, 320, 320, 160)
- self.contents = Bitmap.new(width - 32, height - 32)
- self.back_opacity = 128
- refresh(message)
- end
- #--------------------------------------------------------------------------
- # ○ リフレッシュ
- # message : メッセージ
- #--------------------------------------------------------------------------
- def refresh(message = nil)
- self.contents.clear
- rect = self.contents.text_size(message)
- self.contents.draw_text(rect, message)
- end
- end
- #==============================================================================
- # □ Scene_ItemSelectProcess [class]
- #==============================================================================
- class Scene_ItemSelectProcess
- #--------------------------------------------------------------------------
- # ○ オブジェクト初期化
- # message : メッセージ
- #--------------------------------------------------------------------------
- def initialize(message)
- @message = message
- end
- #--------------------------------------------------------------------------
- # ○ メイン処理
- #--------------------------------------------------------------------------
- def main
- start
- Graphics.transition
- Input.update
- loop do
- Graphics.update
- Input.update
- update
- break if $scene != self
- end
- Graphics.update
- Graphics.freeze
- terminate
- end
- #--------------------------------------------------------------------------
- # ○ 開始処理
- #--------------------------------------------------------------------------
- def start
- @spriteset = Spriteset_Map.new
- @select_window = Window_ItemSelectProcess.new
- @message_window = Window_ItemSelectProcess_Message.new(@message)
- end
- #--------------------------------------------------------------------------
- # ○ 終了処理
- #--------------------------------------------------------------------------
- def terminate
- @spriteset.dispose
- @select_window.dispose
- @message_window.dispose
- end
- #--------------------------------------------------------------------------
- # ○ フレーム更新
- #--------------------------------------------------------------------------
- def update
- @select_window.update
- if Input.trigger?(Input::B)
- $game_system.se_play($data_system.cancel_se)
- # $game_temp.selected_item = 0
- # $scene = Scene_Map.new
- end
- if Input.trigger?(Input::C)
- $game_system.se_play($data_system.decision_se)
- case @select_window.item
- when RPG::Item ; $game_temp.selected_item = @select_window.item.id
- when RPG::Weapon ; $game_temp.selected_item = @select_window.item.id + 1000
- when RPG::Armor ; $game_temp.selected_item = @select_window.item.id + 2000
- end
- $scene = Scene_Map.new
- end
- end
- end
- end
复制代码 原版脚本被我稍微改变了下,左上方是空白的
现在想在这个里面追加一个道具缩略图窗口 super的位置和大小是(0, 0, 320, 320)
根据选择窗口里光标指向的道具ID, 在这个新窗口中央刷新并显示PICTURE文件夹下 同ID名在道具图片,自己弄了半天都不行
求高人帮忙 |
|