查看: 3575|回复: 4

[已经解决] 请问如何在敌人战斗图下方显示出其本回合要使用的技能?

[复制链接]
梦石
0
星屑
2590
在线时间
452 小时
注册时间
2019-6-22
回帖
68
发表于 2019-12-13 16:00:02 | 显示全部楼层 |阅读模式
悬赏40星屑已解决
本帖最后由 kunikai 于 2019-12-13 15:58 编辑

技能.png
比如说敌人本回合会使用这个技能 那么是否能够做到在敌人下方显示出这个技能的图标?
↓就像这样(
战斗图.png
当然要是能够做出这种 图标+文字 的效果就更好啦~
图片.png

最佳答案

查看完整内容

临时写了一个,时间有点赶没经过详细测试,等有时间了再补全说明,有问题的话可以先告诉我一下【 技能的备注处写或者可以加文字说明
梦石
0
星屑
17038
在线时间
6058 小时
注册时间
2011-7-18
回帖
152

开拓者

发表于 2019-12-13 16:00:03 | 显示全部楼层
本帖最后由 gqxastg 于 2019-12-15 12:00 编辑

临时写了一个,时间有点赶没经过详细测试,等有时间了再补全说明,有问题的话可以先告诉我一下【
技能的备注处写<行动文字 说明内容>或者<Action_Text 说明内容>可以加文字说明
点击展开/收起[pre lang="ruby"]# 岚风雷(论坛ID:gqxastg)制作
module SnivyLei; module EnemyActionShow
  
  Sprite = {
   pos: [24, -26, 100],
  }
  
  Text = {
   match: /<(?:ACTION_TEXT|行动文字)[ ](.*)>/i,
   font: {
    name: Font.default_name,
    size: 12,
    bold: false,
    italic: false,
    outline: true,
    shadow: true,
    color: Font.default_color,
    out_color: Font.default_out_color,
   },
   pos: [0, 14],
   width: 64,
   height: 24,
   align: 1,
  }
  
  Bitmap = {
   pos: [20, 0],
   width: 64,
   height: 48,
  }

end; end
#==============================================================================
# ■ Sprite_Battler
#==============================================================================

class Sprite_Battler < Sprite_Base
  include SnivyLei
  #--------------------------------------------------------------------------
  # ● 初始化对象
  #--------------------------------------------------------------------------
  alias enacts_initialize initialize
  def initialize(viewport, battler = nil)
    enacts_initialize(viewport, battler)
    @old_actions = []
    create_action_icon_sprite if battler && battler.is_a?(Game_Enemy)
  end
  #--------------------------------------------------------------------------
  # ● 释放
  #--------------------------------------------------------------------------
  alias enacts_dispose dispose
  def dispose
    if @action_icon_sprite && !@action_icon_sprite.disposed?
      @action_icon_sprite.bitmap.dispose
      @action_icon_sprite.dispose
    end
    enacts_dispose
  end
  #--------------------------------------------------------------------------
  # ● 更新画面
  #--------------------------------------------------------------------------
  alias enacts_update update
  def update
    enacts_update
    if @battler && @use_sprite #&& @battler.is_a?(Game_Enemy)
      create_action_icon_sprite if !@action_icon_sprite
      actions = battler.actions.collect{|a| a.item}
      if @old_actions != actions
        @old_actions = actions
        refresh_action_icon_bitmap
      end
      @action_icon_sprite.visible = @battler.alive? && !@battler.hidden?
    else
      @action_icon_sprite.bitmap.dispose if @action_icon_sprite
      @action_icon_sprite.dispose if @action_icon_sprite
      @action_icon_sprite = nil
    end
  end
  #--------------------------------------------------------------------------
  # ● 生成行动图标精灵
  #--------------------------------------------------------------------------
  def create_action_icon_sprite
    if @action_icon_sprite && !@action_icon_sprite.disposed?
      @action_icon_sprite.bitmap.dispose
      @action_icon_sprite.dispose
    end
    @action_icon_sprite = Sprite.new(self.viewport)
    @action_icon_sprite.x = self.x + EnemyActionShow::Sprite[:pos][0]
    @action_icon_sprite.y = self.y + EnemyActionShow::Sprite[:pos][1]
    @action_icon_sprite.y = self.z + EnemyActionShow::Sprite[:pos][2]
    w = EnemyActionShow::Bitmap[:width]
    h = EnemyActionShow::Bitmap[:height]
    @action_icon_sprite.bitmap = Bitmap.new(w, h)
    ["name","size","bold","italic","outline",
    "shadow","color","out_color"].each do |param|
      eval("@action_icon_sprite.bitmap.font.#{param} =
      EnemyActionShow::Text[:font][:#{param}]")
    end
  end
  #--------------------------------------------------------------------------
  # ● 刷新行动图标位图
  #--------------------------------------------------------------------------
  def refresh_action_icon_bitmap
    return if !@action_icon_sprite || @action_icon_sprite.disposed?
    @action_icon_sprite.bitmap.clear
    return if @old_actions.compact.size == 0
    item = (@old_actions.compact)[0]
    pos = EnemyActionShow::Bitmap[:pos]
    bitmap = Cache.system("Iconset")
    icon_index = item.icon_index
    rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
    @action_icon_sprite.bitmap.blt(pos[0], pos[1], bitmap, rect)
    text = EnemyActionShow::Text
    str = text[:match] =~ item.note ? $1 : nil
    @action_icon_sprite.bitmap.draw_text(text[:pos][0], text[:pos][1],
    text[:width], text[:height], str, text[:align]) if str
  end
  #--------------------------------------------------------------------------
  # ● 坐标同步变更
  #--------------------------------------------------------------------------
  def x=(x); super; @action_icon_sprite.x = x +
    EnemyActionShow::Sprite[:pos][0] if @action_icon_sprite
  end
  def y=(y); super; @action_icon_sprite.y = y +
    EnemyActionShow::Sprite[:pos][1] if @action_icon_sprite
  end
  def z=(z); super; @action_icon_sprite.z = z +
    EnemyActionShow::Sprite[:pos][2] if @action_icon_sprite
  end
end[/pre]

一点位置参数的参考

一点位置参数的参考

评分

参与人数 1赞 +1 收起 理由
Cupidk爱呗茶 + 1 塞糖

查看全部评分

这里岚风·雷,任饭、PM理性粉、UT/DR原作粉、(Trans)Furry自萌,半吊子技术一枚_(:з」∠)_    游戏制作交流工(liao)作(tian)室欢迎来玩!
【无偿/有偿】RGSS3(VA)脚本定制 + 合作招募/同好交友    修正Firefox/火狐浏览器的代码框复制问题(油猴脚本)
Click→←Click
回复

使用道具 举报

梦石
0
星屑
2590
在线时间
452 小时
注册时间
2019-6-22
回帖
68
 楼主| 发表于 2019-12-13 22:48:38 | 显示全部楼层
本帖最后由 kunikai 于 2019-12-13 22:53 编辑
gqxastg 发表于 2019-12-13 19:46
临时写了一个,时间有点赶没经过详细测试,等有时间了再补全说明,有问题的话可以先告诉我一下【
技能的备 ...


超好用!谢谢大大!

完成2.png
一介凡人。对大多数事情都有心无力的凡人。
回复

使用道具 举报

梦石
0
星屑
179
在线时间
33 小时
注册时间
2018-11-13
回帖
23
发表于 2019-12-14 18:38:57 | 显示全部楼层
kunikai 发表于 2019-12-13 22:48
超好用!谢谢大大!

美女你是怎么用的 为何我的不能用呢 我的是mv
我有一刀
回复

使用道具 举报

梦石
0
星屑
2590
在线时间
452 小时
注册时间
2019-6-22
回帖
68
 楼主| 发表于 2019-12-15 00:22:49 | 显示全部楼层
wodeshow 发表于 2019-12-14 18:38
美女你是怎么用的 为何我的不能用呢 我的是mv

我是VA…VA的脚本好像不能够直接用在MV的吧…
一介凡人。对大多数事情都有心无力的凡人。
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部