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

Project1

 找回密码
 注册会员
搜索
查看: 2309|回复: 3
打印 上一主题 下一主题

[已经过期] FUKI加强脚本与状态显示问题

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2510
在线时间
437 小时
注册时间
2016-10-1
帖子
42
跳转到指定楼层
1
发表于 2020-8-1 02:51:57 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 mmm999xp 于 2020-8-1 02:54 编辑

请问一下,我写了一个状态显示的脚本,到目前为止都可以正常显示,但是装了FUKI对话框加强脚本之后,就出问题了,切换页面都会造成对话框来不及消失所以一直留在画面上,这个在事件可以用等待5帧解决,但是用脚本就不知道怎么写了,有人可以帮忙吗?






大约像这样的问题

这边是Scene_Status的脚本update

  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.   @message_window = Window_Message.new #信息窗口
  31.   #宝箱君
  32.     # 执行过渡
  33.     Graphics.transition
  34.     # 主循环
  35.     loop do
  36.       # 刷新游戏画面
  37.       Graphics.update
  38.       # 刷新输入信息
  39.       Input.update
  40.       # 刷新画面
  41.       update
  42.       # 如果画面被切换的话就中断循环
  43.       if $scene != self
  44.         
  45.         break
  46.         
  47.       end
  48.     end
  49.     # 准备过渡
  50.     Graphics.freeze
  51.     # 释放窗口
  52.    
  53.     @status_window.dispose
  54.     @details_state_window.dispose
  55.     #宝箱君
  56.     @message_window.dispose
  57.   
  58.     #宝箱君

  59.   end
  60.   #--------------------------------------------------------------------------
  61.   # ● 刷新画面
  62.   #--------------------------------------------------------------------------
  63.   def update
  64.     @details_state_window.update
  65.     #宝箱怪
  66.     @message_window.update
  67.     #宝箱怪
  68.     # 按下 B 键的情况下
  69.     if Input.trigger?(Input::B)
  70.       # 演奏取消 SE
  71.       $game_system.se_play($data_system.cancel_se)
  72.       # 切换到菜单画面
  73.       @message_window.active = true
  74.       $scene = Scene_Menu.new(3)
  75.       return
  76.     end
  77.     # 按下 R 键的情况下
  78.     if Input.trigger?(Input::R)
  79.       # 演奏光标 SE
  80.       $game_system.se_play($data_system.cursor_se)
  81.       # 移至下一位角色
  82.       @actor_index += 1
  83.       @actor_index %= $game_party.actors.size
  84.       # 切换到别的状态画面
  85.       $scene = Scene_Status.new(@actor_index)
  86.       return
  87.     end
  88.     # 按下 L 键的情况下
  89.     if Input.trigger?(Input::L)
  90.       # 演奏光标 SE
  91.       $game_system.se_play($data_system.cursor_se)
  92.       # 移至上一位角色
  93.       @actor_index += $game_party.actors.size - 1
  94.       @actor_index %= $game_party.actors.size
  95.       # 切换到别的状态画面
  96.       $scene = Scene_Status.new(@actor_index)
  97.       return
  98.     end

  99.     if Input.trigger?(Input::C)
  100.       @details_state_window.active=true
  101.          # 演奏取消 SE
  102.       $game_system.se_play($data_system.cancel_se)
  103.       
  104.       @details_state_window.index=0
  105.       
  106. #宝箱怪
  107. if Input.trigger?(Input::C)
  108.   if @details_state_window.active_state_id !=nil
  109.     $MES_SPEED=0
  110.    #   text = ""
  111.       text =$game_temp.message_text = $状态介绍[@details_state_window.active_state_id]+ " \n"

  112.       $game_temp.message_text = text
  113.    
  114.    
  115. #宝箱怪
  116. return
  117. end
  118. end

  119.   end
  120. end
  121. end
复制代码

Lv5.捕梦者

梦石
0
星屑
39016
在线时间
5717 小时
注册时间
2006-11-10
帖子
6619
2
发表于 2020-8-1 16:26:12 | 只看该作者
把 @message_window.dispose 这句复制到你所有 $scene = XXXX 之前试试
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2510
在线时间
437 小时
注册时间
2016-10-1
帖子
42
3
 楼主| 发表于 2020-8-1 17:53:30 | 只看该作者
灯笼菜刀王 发表于 2020-8-1 16:26
把 @message_window.dispose 这句复制到你所有 $scene = XXXX 之前试试

试过,可是没用,插错位置还会出错@@这是我的工程,我想要的效果是
按下键盘enter(Input::C)会跳出状态说明,再按一下会关掉状态说明。
1.没装fuki的情况:会显示状态说明,且跳回其他选单时对话框会正常消失。 (但是再按一次enter不会关掉状态说明)
2.有装fuki的情况:会显示状态说明,但是跳回其他选单时状态说明不会消失
3还有一种状况是不管有没有装fuki都会的出现的:状态框的选项光标会选到空的状态(这可能是我设定错误)


还是说是fuki对于对话框的释放有重新定义??但我看的时候没什么特别之处阿,求菜刀大佬解答

Data.rar (484.35 KB, 下载次数: 42)
@@2mb的文件限制搞人
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
39016
在线时间
5717 小时
注册时间
2006-11-10
帖子
6619
4
发表于 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

复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-25 12:55

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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