设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索

FUKI加强脚本与状态显示问题

查看数: 2310 | 评论数: 3 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-8-1 02:51

正文摘要:

本帖最后由 mmm999xp 于 2020-8-1 02:54 编辑 请问一下,我写了一个状态显示的脚本,到目前为止都可以正常显示,但是装了FUKI对话框加强脚本之后,就出问题了,切换页面都会造成对话框来不及消失所以一直留在画面 ...

回复

灯笼菜刀王 发表于 2020-8-1 20:07:37
本帖最后由 灯笼菜刀王 于 2020-8-2 10:49 编辑

你就是想要个说废话的窗口嘛, 直接建个新窗口就好了, 何必去和MESSAGE窗口打架

稍微给你改了下, 用个低配版对话窗去显示, 不过要用控制符的话要打两个斜杆, 像颜色要这样 \\C , 去掉了\G功能, 会自动换行(不过没做翻页,笑) , 想手动换行用\\n

  1. #宝箱君
  2. #ICON_STATE_IDS = 1..4
  3. #宝箱君
  4. #======================


  5. #这是换行,另外,无法显示超过4行的介绍,你就当是在用显示文章这个功能吧………

  6. #==============================================================================
  7. # ■ Scene_Status
  8. #------------------------------------------------------------------------------
  9. #  处理状态画面的类。
  10. #==============================================================================

  11. class Scene_Status

  12.   #--------------------------------------------------------------------------
  13.   # ● 初始化对像
  14.   #     actor_index : 角色索引
  15.   #--------------------------------------------------------------------------
  16.   def initialize(actor_index = 0, equip_index = 0)
  17.     @actor_index = actor_index
  18.   end
  19.   #--------------------------------------------------------------------------
  20.   # ● 主处理
  21.   #--------------------------------------------------------------------------
  22.   def main
  23.     # 获取角色
  24.     @actor = $game_party.actors[@actor_index]
  25.     # 生成状态窗口
  26.     @status_window = Window_Status.new(@actor)
  27.     @details_state_window = Window_State_Details.new(@actor)
  28. # @details_state_window.index=0
  29.   #宝箱君
  30.     # 执行过渡
  31.     Graphics.transition
  32.     # 主循环
  33.     loop do
  34.       # 刷新游戏画面
  35.       Graphics.update
  36.       # 刷新输入信息
  37.       Input.update
  38.       # 刷新画面
  39.       update
  40.       # 如果画面被切换的话就中断循环
  41.       if $scene != self
  42.         
  43.         break
  44.         
  45.       end
  46.     end
  47.     # 准备过渡
  48.     Graphics.freeze
  49.     # 释放窗口
  50.    
  51.     @status_window.dispose
  52.     @details_state_window.dispose
  53.     #宝箱君
  54.     @信息.dispose if @信息 != nil
  55.     #宝箱君

  56.   end
  57.   #--------------------------------------------------------------------------
  58.   # ● 刷新画面
  59.   #--------------------------------------------------------------------------
  60.   def update
  61.     @details_state_window.update
  62.     #宝箱怪
  63.     # 按下 B 键的情况下
  64.     if Input.trigger?(Input::B)
  65.       # 演奏取消 SE
  66.       $game_system.se_play($data_system.cancel_se)
  67.       # 切换到菜单画面
  68.       $scene = Scene_Menu.new(3)
  69.       return
  70.     end
  71.     if Input.trigger?(Input::C)
  72.       if @信息 != nil
  73.         @信息.dispose
  74.         @信息 = nil
  75.         @details_state_window.active = true
  76.       else
  77.         @信息 = Window_mini_message.new($状态介绍[@details_state_window.active_state_id])
  78.         @details_state_window.active = false
  79.       end
  80.       return
  81.     end
  82.     return if @信息 != nil
  83.     # 按下 R 键的情况下
  84.     if Input.trigger?(Input::R)
  85.       # 演奏光标 SE
  86.       $game_system.se_play($data_system.cursor_se)
  87.       # 移至下一位角色
  88.       @actor_index += 1
  89.       @actor_index %= $game_party.actors.size
  90.       # 切换到别的状态画面
  91.       $scene = Scene_Status.new(@actor_index)
  92.       return
  93.     end
  94.     # 按下 L 键的情况下
  95.     if Input.trigger?(Input::L)
  96.       # 演奏光标 SE
  97.       $game_system.se_play($data_system.cursor_se)
  98.       # 移至上一位角色
  99.       @actor_index += $game_party.actors.size - 1
  100.       @actor_index %= $game_party.actors.size
  101.       # 切换到别的状态画面
  102.       $scene = Scene_Status.new(@actor_index)
  103.       return
  104.     end
  105.   end
  106. end
  107. #-------------------------------------------------------
  108. class Window_mini_message < Window_Base
  109.   def initialize(txt)
  110.     super(80,304,480,160)
  111.     self.contents = Bitmap.new(width - 32, height - 32)
  112.     self.z = 999
  113.     x = y = 0
  114.     if txt != nil
  115.       text = txt.dup
  116.       # 限制文字处理
  117.       begin
  118.         last_text = text.clone
  119.         text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  120.       end until text == last_text
  121.       text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  122.         $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  123.       end
  124.       # 为了方便、将 "\\\\" 变换为 "\000"
  125.       text.gsub!(/\\\\/) { "\000" }
  126.       # "\\C" 变为 "\001" 、"\\G" 变为 "\002"
  127.       text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
  128.       # c 获取 1 个字 (如果不能取得文字就循环)
  129.       while ((c = text.slice!(/./m)) != nil)
  130.         # \\ 的情况下
  131.         if c == "\000"
  132.           # 还原为本来的文字
  133.           c = "\\"
  134.         end
  135.         # \C[n] 的情况下
  136.         if c == "\001"
  137.           # 更改文字色
  138.           text.sub!(/\[([0-9]+)\]/, "")
  139.           color = $1.to_i
  140.           if color >= 0 and color <= 7
  141.             self.contents.font.color = text_color(color)
  142.           end
  143.           # 下面的文字
  144.           next
  145.         end
  146.         # 另起一行文字的情况下
  147.         if c == "\n" or x >= self.contents.width - 22
  148.           # y 加 1
  149.           y += 1
  150.           x = 0
  151.         end
  152.         # 描绘文字
  153.         self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
  154.         # x 为要描绘文字的加法运算
  155.         x += self.contents.text_size(c).width
  156.       end
  157.     end
  158.   end
  159. end

复制代码
灯笼菜刀王 发表于 2020-8-1 16:26:12
把 @message_window.dispose 这句复制到你所有 $scene = XXXX 之前试试
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-25 13:17

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表