赞 | 405 |
VIP | 0 |
好人卡 | 11 |
积分 | 390 |
经验 | 242285 |
最后登录 | 2024-11-8 |
在线时间 | 5716 小时 |
Lv5.捕梦者
- 梦石
- 0
- 星屑
- 39009
- 在线时间
- 5716 小时
- 注册时间
- 2006-11-10
- 帖子
- 6618
|
本帖最后由 灯笼菜刀王 于 2020-8-2 10:49 编辑
你就是想要个说废话的窗口嘛, 直接建个新窗口就好了, 何必去和MESSAGE窗口打架
稍微给你改了下, 用个低配版对话窗去显示, 不过要用控制符的话要打两个斜杆, 像颜色要这样 \\C , 去掉了\G功能, 会自动换行(不过没做翻页,笑) , 想手动换行用\\n
- #宝箱君
- #ICON_STATE_IDS = 1..4
- #宝箱君
- #======================
- #这是换行,另外,无法显示超过4行的介绍,你就当是在用显示文章这个功能吧………
- #==============================================================================
- # ■ Scene_Status
- #------------------------------------------------------------------------------
- # 处理状态画面的类。
- #==============================================================================
- class Scene_Status
- #--------------------------------------------------------------------------
- # ● 初始化对像
- # actor_index : 角色索引
- #--------------------------------------------------------------------------
- def initialize(actor_index = 0, equip_index = 0)
- @actor_index = actor_index
- end
- #--------------------------------------------------------------------------
- # ● 主处理
- #--------------------------------------------------------------------------
- def main
- # 获取角色
- @actor = $game_party.actors[@actor_index]
- # 生成状态窗口
- @status_window = Window_Status.new(@actor)
- @details_state_window = Window_State_Details.new(@actor)
- # @details_state_window.index=0
- #宝箱君
- # 执行过渡
- Graphics.transition
- # 主循环
- loop do
- # 刷新游戏画面
- Graphics.update
- # 刷新输入信息
- Input.update
- # 刷新画面
- update
- # 如果画面被切换的话就中断循环
- if $scene != self
-
- break
-
- end
- end
- # 准备过渡
- Graphics.freeze
- # 释放窗口
-
- @status_window.dispose
- @details_state_window.dispose
- #宝箱君
- @信息.dispose if @信息 != nil
- #宝箱君
- end
- #--------------------------------------------------------------------------
- # ● 刷新画面
- #--------------------------------------------------------------------------
- def update
- @details_state_window.update
- #宝箱怪
- # 按下 B 键的情况下
- if Input.trigger?(Input::B)
- # 演奏取消 SE
- $game_system.se_play($data_system.cancel_se)
- # 切换到菜单画面
- $scene = Scene_Menu.new(3)
- return
- end
- if Input.trigger?(Input::C)
- if @信息 != nil
- @信息.dispose
- @信息 = nil
- @details_state_window.active = true
- else
- @信息 = Window_mini_message.new($状态介绍[@details_state_window.active_state_id])
- @details_state_window.active = false
- end
- return
- end
- return if @信息 != nil
- # 按下 R 键的情况下
- if Input.trigger?(Input::R)
- # 演奏光标 SE
- $game_system.se_play($data_system.cursor_se)
- # 移至下一位角色
- @actor_index += 1
- @actor_index %= $game_party.actors.size
- # 切换到别的状态画面
- $scene = Scene_Status.new(@actor_index)
- return
- end
- # 按下 L 键的情况下
- if Input.trigger?(Input::L)
- # 演奏光标 SE
- $game_system.se_play($data_system.cursor_se)
- # 移至上一位角色
- @actor_index += $game_party.actors.size - 1
- @actor_index %= $game_party.actors.size
- # 切换到别的状态画面
- $scene = Scene_Status.new(@actor_index)
- return
- end
- end
- end
- #-------------------------------------------------------
- class Window_mini_message < Window_Base
- def initialize(txt)
- super(80,304,480,160)
- self.contents = Bitmap.new(width - 32, height - 32)
- self.z = 999
- x = y = 0
- if txt != nil
- text = txt.dup
- # 限制文字处理
- begin
- last_text = text.clone
- text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
- end until text == last_text
- text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
- $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
- end
- # 为了方便、将 "\\\\" 变换为 "\000"
- text.gsub!(/\\\\/) { "\000" }
- # "\\C" 变为 "\001" 、"\\G" 变为 "\002"
- text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
- # c 获取 1 个字 (如果不能取得文字就循环)
- while ((c = text.slice!(/./m)) != nil)
- # \\ 的情况下
- if c == "\000"
- # 还原为本来的文字
- c = "\\"
- end
- # \C[n] 的情况下
- if c == "\001"
- # 更改文字色
- text.sub!(/\[([0-9]+)\]/, "")
- color = $1.to_i
- if color >= 0 and color <= 7
- self.contents.font.color = text_color(color)
- end
- # 下面的文字
- next
- end
- # 另起一行文字的情况下
- if c == "\n" or x >= self.contents.width - 22
- # y 加 1
- y += 1
- x = 0
- end
- # 描绘文字
- self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
- # x 为要描绘文字的加法运算
- x += self.contents.text_size(c).width
- end
- end
- end
- end
复制代码 |
|