Project1

标题: 问:图标显示状态脚本与即时横版CTB脚本能完美整合不 [打印本页]

作者: qcc001    时间: 2008-2-5 00:18
标题: 问:图标显示状态脚本与即时横版CTB脚本能完美整合不
问题现象 1 :
  在一群怪物中,有部分中了XX状态,当你攻击选择一个中XX状态的怪物时显示怪物图标XX状态,但当你选择下一个没中XX状态的怪物时也还显示XX状态图标!

问题现象 2 :
  当角色 给 自己加状态时,有时不显示状态图标,但状态效果是纯在的!
  
不知道 这些个问题有人遇到过没?该怎么解决?

--------------------------------------------------------------------------
问题现象 2 补充
  当中了第一个状态图标没显示时,在中第2个状态后:显示第一个状态图标,第二个状态图标估计要在第三次中状态时显示!

--------------------------------------------------------------------------
新发现
问题找到了
用了 即时制横版CTB战斗系统 问题就出现
不用就正常了
图标显示状态脚本 单独用米问题

***********************有谁能知道 2者怎么 整合 ?************************
作者: 水迭澜    时间: 2008-2-5 00:22
那个脚本是哪个orz可能是么有同步刷新的问题
贴上来我看看吧
作者: qcc001    时间: 2008-2-5 00:24
#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
# 欢迎访问www.66RPG.com
# 梦想世界,在你手中
#==============================================================================

#==============================================================================
# 图标显示状态 v1.1
# By 叶子
# 9-30-2007 v1.1
# 修正了描绘状态的一个致命BUG
# 12-31-2005 v1.0
# 重定义类:Window_Base, Window_Help
#==============================================================================
# 脚本功能:
# 实现战斗中和菜单中用图标显示状态,代替原来的文字显示。
# 默认最多同时显示5个状态
#------------------------------------------------------------------------------
# 设置方法:
# 一个状态对应的图标文件名为“状态的动画ID”
# 例如某状态的动画ID为50,那么它的图标就是“Icons\50.png”或“Icons\50.jpg”
# 如果找不到对应的文件,会报错 ◎_◎
#==============================================================================

# 注意,在ICON_STATE_IDS中写上需要带图标的状态ID
# ICON_STATE_IDS是一个数组,数组的方法请参考帮助文件
# 例如:
# 只要1,5,8号状态带图标,就这样:ICON_STATE_IDS = [1,5,8]
# 要20到50号状态带图标:ICON_STATE_IDS = 20..50

ICON_STATE_IDS = 1..100

#==============================================================================
# ■ Window_Base
#------------------------------------------------------------------------------
#  游戏中全部窗口的超级类。
#==============================================================================

class Window_Base < Window
  #--------------------------------------------------------------------------
  # ● 描绘状态
  #     actor : 角色
  #     x     : 描画目标 X 坐标
  #     y     : 描画目标 Y 坐标
  #     width : 描画目标的宽
  #--------------------------------------------------------------------------
  def draw_actor_state(actor, x, y, width = 120)
    state_size = 0
    for state in actor.states
      # 图标数量超出宽度就中断循环
      if state_size >= width / 24
        break
      end
      # 此状态不带图标就跳过
      if !ICON_STATE_IDS.include?(state)
        next
      end
      bitmap = RPG::Cache.icon($data_states[state].animation_id.to_s)
      if actor.states_turn[state] >= $data_states[state].hold_turn/2
        opacity = 255
      else
        opacity = 100
      end
      # 这里的图标大小默认是24x24,要改就改下面那个Rect.new(0, 0, 24, 24)
      self.contents.blt(x + 24 * state_size, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
      state_size += 1
    end
  end
end
  
  
#==============================================================================
# ■ Window_Help
#------------------------------------------------------------------------------
#  特技及物品的说明、角色的状态显示的窗口。
#==============================================================================
  
class Window_Help < Window_Base
  #--------------------------------------------------------------------------
  # ● 设置敌人
  #     enemy : 要显示名字和状态的敌人
  #--------------------------------------------------------------------------
  def set_enemy(enemy)
    @text = ""
    # 描绘敌人名字
    set_text(enemy.name, 1)
    # 描绘状态图标
    state_size = 0
    for state in enemy.states
      # 图标数量超出宽度就中断循环
      if state_size >= 5
        break
      end
      # 此状态不带图标就跳过
      if !ICON_STATE_IDS.include?(state)
        next
      end
      bitmap = RPG::Cache.icon($data_states[state].animation_id.to_s)
      if enemy.states_turn[state] >= $data_states[state].hold_turn/2
        opacity = 255
      else
        opacity = 100
      end
      self.contents.blt(70 + 24 * state_size, 0, bitmap, Rect.new(0, 0, 24, 24), opacity)
      state_size += 1
    end
  end
end

class Game_Battler
  attr_reader :states_turn       # 声明状态剩余回合
end

#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
# 欢迎访问www.66RPG.com
# 梦想世界,在你手中
#==============================================================================


作者: 水迭澜    时间: 2008-2-5 00:25
大概明白问题了,回头帮你改{/hx}
作者: Eclair    时间: 2008-2-5 00:28
提示: 作者被禁止或删除 内容自动屏蔽
作者: qcc001    时间: 2008-2-5 00:35
Eclair
我的问题就是你贴出来的这个脚本中地哦

先谢 水迭澜 了
期待中
作者: Eclair    时间: 2008-2-5 00:41
提示: 作者被禁止或删除 内容自动屏蔽
作者: Eclair    时间: 2008-2-5 01:07
提示: 作者被禁止或删除 内容自动屏蔽
作者: 小星子    时间: 2008-2-5 01:21
下班前的最后一丝努力,不知对错。
  1. class Window_Base < Window
  2. #--------------------------------------------------------------------------
  3. # ● 描绘状态
  4. #     actor : 角色
  5. #     x     : 描画目标 X 坐标
  6. #     y     : 描画目标 Y 坐标
  7. #     width : 描画目标的宽
  8. #--------------------------------------------------------------------------
  9. def draw_actor_state(actor, x, y, width = 120)
  10.    state_size = 0
  11.    self.contents.fill_rect(x, y, 120, 32, Color.new(0,0,0,0))
  12.    for state in actor.states
  13.      # 图标数量超出宽度就中断循环
  14.      if state_size >= width / 24
  15.        break
  16.      end
  17.      # 此状态不带图标就跳过
  18.      if !ICON_STATE_IDS.include?(state)
  19.        next
  20.      end
  21.      bitmap = RPG::Cache.icon($data_states[state].animation_id.to_s)
  22.      if actor.states_turn[state] >= $data_states[state].hold_turn/2
  23.        opacity = 255
  24.      else
  25.        opacity = 100
  26.      end
  27.      # 这里的图标大小默认是24x24,要改就改下面那个Rect.new(0, 0, 24, 24)
  28.      self.contents.blt(x + 24 * state_size, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  29.      state_size += 1
  30.    end
  31. end
  32. end


  33. #==============================================================================
  34. # ■ Window_Help
  35. #------------------------------------------------------------------------------
  36. #  特技及物品的说明、角色的状态显示的窗口。
  37. #==============================================================================

  38. class Window_Help < Window_Base
  39. #--------------------------------------------------------------------------
  40. # ● 设置敌人
  41. #     enemy : 要显示名字和状态的敌人
  42. #--------------------------------------------------------------------------
  43. def set_enemy(enemy)
  44.    @text = ""
  45.    # 描绘敌人名字
  46.    set_text(enemy.name, 1)
  47.    # 描绘状态图标
  48.    state_size = 0
  49.    self.contents.fill_rect(0, 0, self.width - 32, 32, Color.new(0,0,0,0))
  50.    for state in enemy.states
  51.      # 图标数量超出宽度就中断循环
  52.      if state_size >= 5
  53.        break
  54.      end
  55.      # 此状态不带图标就跳过
  56.      if !ICON_STATE_IDS.include?(state)
  57.        next
  58.      end
  59.      bitmap = RPG::Cache.icon($data_states[state].animation_id.to_s)
  60.      if enemy.states_turn[state] >= $data_states[state].hold_turn/2
  61.        opacity = 255
  62.      else
  63.        opacity = 100
  64.      end
  65.      self.contents.blt(70 + 24 * state_size, 0, bitmap, Rect.new(0, 0, 24, 24), opacity)
  66.      state_size += 1
  67.    end
  68. end
  69. end

  70. class Game_Battler
  71. attr_reader :states_turn       # 声明状态剩余回合
  72. end
复制代码

作者: qcc001    时间: 2008-2-5 01:32
额...
看来要再详细说明下了

问题现象 2 补充
  当中了第一个状态图标没显示时,在中第2个状态后:显示第一个状态图标,第二个状态图标估计要在第三次中状态时显示!
作者: 趙雲    时间: 2008-2-5 01:39
以下引用qcc001于2008-2-4 17:32:06的发言:

额...
看来要再详细说明下了

问题现象 2 补充
当中了第一个状态图标没显示时,在中第2个状态后:显示第一个状态图标,第二个状态图标估计要在第三次中状态时显示!


刷新时机问题?
能否上传会碰到这个bug的工程?
太大的话就传data文件夹下的scripts.rxdata 好了

作者: qcc001    时间: 2008-2-5 04:07
新发现
问题找到了
用了 即时横版 问题就出现
不用就正常了
图标显示状态脚本 单独用米问题
作者: 水迭澜    时间: 2008-2-5 07:47
orz
今天才知道要赶两份作业……
LZ……我对不起你orz
作者: qcc001    时间: 2008-2-5 08:14
-_-!
米关系
问题已经知道在那了?
就在即时脚本中没有刷新
已经重开问题贴了




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1