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

Project1

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

[已经过期] 请教一个“状态图标化”(图标显示状态)脚本的问题

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
跳转到指定楼层
1
发表于 2021-1-7 10:53:45 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 taeckle 于 2021-1-7 11:02 编辑

前些天我找到了一个“状态图标化”脚本, 可以把状态用图标显示在敌人身上, 但是移植到我自己的工程里就出现了一个问题:

敌人使用普通攻击后, 自身消失的状态(比如第1号状态)对应的状态图标却不消失

还有需要补充一点: 用了这个状态图标化脚本后敌人使用技能后自身消失的状态(比如第1号状态)对应的图标却能正常消失


这是什么原因呢?

还请大家指点一二,多谢了


这是我找到的“状态图标化”脚本:

#==============================================================================
# 本脚本来自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个状态 108行定义,已改为8
#------------------------------------------------------------------------------
# 设置方法:
# 一个状态对应的图标文件名为“状态的动画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..999
#==============================================================================
# ■ Window_Base
#------------------------------------------------------------------------------
#  游戏中全部窗口的超级类。
#==============================================================================
class Window_Base < Window
  #--------------------------------------------------------------------------
  # ● 描绘状态
  #     actor : 角色
  #     x     : 描画目标 X 坐标
  #     y     : 描画目标 Y 坐标
  #     width : 描画目标的宽
  #--------------------------------------------------------------------------
  def draw_actor_state(actor, x, y, width = 120)  #改动了一下
    text = make_battler_state_text(actor, width, true)
    text.gsub!(/\[/) { "" }
    text.gsub!(/\]/) { "" }
    s = text.split("/")
    sp = 0
    s.each do |i|
      bitmap = RPG::Cache.icon("#{i}")     
      cw = bitmap.width
      ch = bitmap.height
      src_rect = Rect.new(0, 0, cw, ch)
      self.contents.blt(x + sp, y, bitmap, src_rect)
      sp += cw + 10
    end
  end
end
class Window_Base < Window
  #--------------------------------------------------------------------------
  # ● 描绘状态
  #     actor : 角色
  #     x     : 描画目标 X 坐标
  #     y     : 描画目标 Y 坐标
  #     width : 描画目标的宽
  #--------------------------------------------------------------------------
  def draw_actor_state(actor, x, y, width = 240)
    state_size = 0
   # buff_idx = 0
    #debuff_idx = 0
    for state in actor.states
      # 图标数量超出宽度就中断循环
      if state_size >= 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)
    #  if $data_states[state].name.include?"☆"
     #   if debuff_idx <= 5
      #   self.contents.blt(x + 24 * debuff_idx, y + 56, bitmap, Rect.new(0, 0, 24, 24), opacity)
       # else
        # self.contents.blt(x + 24 * (debuff_idx-5), y +88, bitmap, Rect.new(0, 0, 24, 24), opacity)
        #end
        #debuff_idx += 1
      #else
       # if  buff_idx <= 5
        # self.contents.blt(x + 24 * buff_idx, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
        #else
         #self.contents.blt(x + 24 * (buff_idx-5), y + 30, bitmap, Rect.new(0, 0, 24, 24), opacity)
        #end
        #buff_idx += 1
      #end
      if state_size <= 7
       self.contents.blt(x+24 * state_size, y+4, bitmap, Rect.new(0, 0, 24, 24), opacity)
      else
       self.contents.blt(x+24 * (state_size-5), y+4+30, bitmap, Rect.new(0, 0, 24, 24), opacity)
      end
      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 >= 10
        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(108+24 * state_size,0, bitmap, Rect.new(0, 0, 24, 24), opacity)
      #state_size += 1

#只显示某些状态的文字   
      @text +=" "
      if $data_states[state].id < 111 or ($data_states[state].id > 800 && $data_states[state].id < 999)
      @text += $data_states[state].name.to_s
      end
      @text +=" "
     end  # of for
   set_text(@text, 0)


#========================================================================
      
  end
end
class Game_Battler
  attr_reader :states_turn       # 声明状态剩余回合
end
#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
# 欢迎访问www.66RPG.com
# 梦想世界,在你手中
#==============================================================================


点评

还要补充一点就是我方队员使用普通攻击后, 自身消失的状态(比如第1号状态)对应的状态图标也可以正常消失,就是敌方使用普通攻击不行..  发表于 2021-1-8 02:37

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
4
 楼主| 发表于 2022-8-11 05:07:56 | 只看该作者
enghao_lim 发表于 2021-2-6 02:47
问题描述有点模糊,为啥普通攻击后状态会消失?默认情况状态只有设置被攻击有机会消失,没有印象有砍人也会 ...


好的,大神我把这个问题整理到这个默认工程里了,你用数据库里唯一的那个测试战斗测试一下问题就清楚啦!

敌人普通攻击后状态图标不消失.rar

238.09 KB, 下载次数: 1

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7981
在线时间
1183 小时
注册时间
2007-7-29
帖子
2055
3
发表于 2021-2-6 02:47:14 | 只看该作者
问题描述有点模糊,为啥普通攻击后状态会消失?默认情况状态只有设置被攻击有机会消失,没有印象有砍人也会消失,可以的话开一个新的工程测试一下该问题是否存在,存在的话也许可以整个工程上传。如果不存在代表和一些脚本冲突了,届时还是需要工程。
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
2
 楼主| 发表于 2021-1-28 23:04:48 | 只看该作者
继续坐等大神指点一二。。。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-27 20:00

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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