查看: 2230|回复: 5

[已经过期] 求一个在战斗中同时显示多个状态动画的脚本

[复制链接]
梦石
0
星屑
50
在线时间
102 小时
注册时间
2016-5-9
回帖
50
发表于 2016-5-24 17:18:19 | 显示全部楼层 |阅读模式

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

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

×
我用了横版战斗的脚本,XP自己本身自带状态动画,但是角色拥有不同的BUFF时却只能显示一个状态动画,看起来很不舒服。我想让所有状态动画都一起显示。跪求帮忙。
顺百年问一嘴,如果有敌人能力数据突破极限的脚本也请给我一份,谢谢了!
梦石
0
星屑
1788
在线时间
1313 小时
注册时间
2012-8-4
回帖
724
发表于 2016-5-24 18:15:32 | 显示全部楼层
多状态脚本[pre lang="ruby"]#==============================================================================
# ■ 状态图标化

#------------------------------------------------------------------------------

# 重定义类:Window_Base, Window_Help

#==============================================================================

# 脚本功能:
# 实现战斗中和菜单中用图标显示状态,代替原来的文字显示。

# 默认最多同时显示5个状态

#------------------------------------------------------------------------------
# 设置方法:
# 一个状态对应的图标文件名为“状态的动画ID.png”

# 例如某状态的动画ID为50,那么它的图标就是“Icons\50.png”

# 如果找不到对应的文件,会报错 ◎_◎
#==============================================================================
# 注意,在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,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,30,33,34]


#==============================================================================
# ■ 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 !ICON_STATE_IDS.include?(state)
next
    end

##################################################################

    bitmap = RPG::Cache.icon($data_states[state].name + "_sta.png")

    if actor.states_turn[state] >= $data_states[state].hold_turn/

      opacity = 255

    else
      opacity = 100
    end

    # 这里的图标大小默认是24x24,要改就改下面那个Rect.new(0, 0, 24, 24)

    #..........................................................................

    if $game_temp.in_battle
    self.contents.blt(x - 8 + 16 * state_size, y + 16, bitmap, Rect.new(0, 0, 24, 24), opacity)
     

    else
      ########################################################
      #状态菜单中
      ########################################################

      self.contents.blt(x + 16 * state_size, y + 8, 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)

  # 描绘状态图标
  state_size = 0

  for state in enemy.states



    # 此状态不带图标就跳过

    if !ICON_STATE_IDS.include?(state)

      next

   end

    bitmap = RPG::Cache.icon($data_states[state].name + "_sta.png")

    if enemy.states_turn[state] >= $data_states[state].hold_turn/2

      opacity = 255

    else

      opacity = 100

    end

    self.contents.blt(70 + 16 * state_size, 0, bitmap, Rect.new(0, 0, 24, 24), opacity)

    state_size += 1

  end

  # 描绘敌人名字

  set_text(enemy.name, 1)

end

end


class Game_Battler



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



end
#==============================================================================
# ■ Window_Help
#==============================================================================

class Window_Help < Window_Base
  #--------------------------------------------------------------------------
  # ● アクター設定
  #     actor : ステータスを表示するアクター
  #--------------------------------------------------------------------------
  alias set_actor_ctb set_actor
  def set_actor(actor)
    if PARA_CTB::HELP_DRAWING_MATER_ACTOR
      self.contents.clear
      draw_actor_name(actor, 4, 0)
      draw_actor_state(actor, 120, -10)
      hp_color1 = PARA_CTB::HP_COLOR_LEFT
      hp_color2 = PARA_CTB::HP_COLOR_RIGHT
      draw_meter(actor.hp, actor.maxhp, 316, 18, 112, 8, hp_color1, hp_color2)
      draw_actor_hp(actor, 284, 0)
      sp_color1 = PARA_CTB::SP_COLOR_LEFT
      sp_color2 = PARA_CTB::SP_COLOR_RIGHT
      draw_meter(actor.sp, actor.maxsp, 492, 18, 112, 8, sp_color1, sp_color2)
      draw_actor_sp(actor, 460, 0)
      @actor = actor
      @text = nil
      self.visible = true
    else
      set_actor_ctb(actor)
    end
  end
  #--------------------------------------------------------------------------
  # ● エネミー設定
  #     enemy : 名前とステートを表示するエネミー
  #--------------------------------------------------------------------------
  alias set_enemy_ctb set_enemy
  def set_enemy(enemy)
    if PARA_CTB::HELP_DRAWING_MATER_ENEMY
      self.contents.clear
      draw_actor_name(enemy, 4, 0)
      draw_actor_state(enemy, 120, -10)
      hp_color1 = PARA_CTB::HP_COLOR_LEFT
      hp_color2 = PARA_CTB::HP_COLOR_RIGHT
      draw_meter(enemy.hp, enemy.maxhp, 316, 18, 112, 8, hp_color1, hp_color2)
      draw_actor_hp(enemy, 284, 0)
      sp_color1 = PARA_CTB::SP_COLOR_LEFT
      sp_color2 = PARA_CTB::SP_COLOR_RIGHT
      draw_meter(enemy.sp, enemy.maxsp, 492, 18, 112, 8, sp_color1, sp_color2)
      draw_actor_sp(enemy, 460, 0)
      self.visible = true
    else
      set_enemy_ctb(enemy)
    end
  end
end
[/pre]
回复

使用道具 举报

梦石
0
星屑
50
在线时间
102 小时
注册时间
2016-5-9
回帖
50
 楼主| 发表于 2016-5-24 18:23:34 | 显示全部楼层
夜狠简单 发表于 2016-5-24 18:15
[fold=多状态脚本]#==============================================================================
#  ...

我试了一下,错误。估计是不兼容。
而且这个不是状态图标显示的脚本吗?
我想要的是多状态动画同时显示啊。
回复

使用道具 举报

梦石
0
星屑
1788
在线时间
1313 小时
注册时间
2012-8-4
回帖
724
发表于 2016-5-24 18:52:16 | 显示全部楼层
望月神绮 发表于 2016-5-24 18:23
我试了一下,错误。估计是不兼容。
而且这个不是状态图标显示的脚本吗?
我想要的是多状态动画同时显示啊 ...

不兼容正常,应该可以对症下药调兼容不是。
这个效果大概是这样

QQ截图20160524185023.png
QQ截图20160524185009.png

# 设置方法:
# 一个状态对应的图标文件名为“状态的动画ID.png”

# 例如某状态的动画ID为50,那么它的图标就是“Icons\50.png”

# 如果找不到对应的文件,会报错 ◎_◎
#==============================================================================
# 注意,在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,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,30,33,34]
回复

使用道具 举报

梦石
0
星屑
50
在线时间
102 小时
注册时间
2016-5-9
回帖
50
 楼主| 发表于 2016-5-24 19:20:51 | 显示全部楼层
夜狠简单 发表于 2016-5-24 18:52
不兼容正常,应该可以对症下药调兼容不是。
这个效果大概是这样

显示多状态图标的脚本我已经有了。
我想要的是同时显示多状态动画,是状态动画!的脚本……
比如角色中毒,会显示中毒的动画,然后又麻痹了,中毒动画就不显示只显示麻痹动画。但我想让两个动画都显示……

点评

这样啊  发表于 2016-5-24 19:52
回复

使用道具 举报

梦石
0
星屑
17561
在线时间
4249 小时
注册时间
2013-7-18
回帖
2491
发表于 2016-5-25 10:20:17 | 显示全部楼层
我也想要呢,估计系统本身设定不允许

点评

去找后知后觉大大的帖子  发表于 2016-6-6 21:59
退隐....
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部