注册会员 登录
Project1 返回首页

椎名ヤシロ de 特护病房 ... ... https://rpg.blue/?10105 [收藏] [复制] [分享] [RSS] ~μ's(・∀・)イイネ!! サイッコウダネ!!~

日志

【脚本共享】【VA】基于默认战斗系统 - 选中的敌人增加闪烁效果 ...

热度 1已有 605 次阅读2016-3-17 14:25 | 战斗

#==============================================================================
# □ 基于默认战斗系统的 选中的敌人闪烁效果   2016-03-17 By. 椎名YASHIRO
#------------------------------------------------------------------------------
#  可以在敌人备注里任意空行填上:<闪烁色: r,g,b,a>设置闪烁颜色,
#  rgba分别是RGB颜色数字和ALPHA值,具体参考F1的Color类,
#  4个数字之间用半角逗号隔开,不要有其他东西出现,否则会出问题。
#  没设定闪烁色的敌人使用默认的白色闪烁。
#==============================================================================

class Spriteset_Battle
  attr_accessor :enemy_sprites   # 公开敌人精灵组
end

class RPG::Enemy < RPG::BaseItem
  #-----------------------------------
  # ○ 获取备注的闪烁颜色
  #-----------------------------------
  def flash_color
    color_set = nil
    self.note.each_line do |line|
      if line[/^<闪烁色:\s?(.*)?>/]
        color_set = $1.split(",").collect{|i| i.to_i}
      end
    end
    return color_set.nil? ? default_flash_color : Color.new(*color_set)
  end
  #-----------------------------------
  # ○ 备注没有设置闪烁颜色的时候默认的颜色
  #-----------------------------------
  def default_flash_color
    return Color.new(255, 255, 255, 150)
  end
end

class Sprite_Battler < Sprite_Base
  #-----------------------------------
  # ○ 获取战斗者(敌人)的闪烁颜色
  #-----------------------------------
  def flash_color
    return unless @battler.is_a?(Game_Enemy)
    return @battler.enemy.flash_color
  end
  #-----------------------------------
  # ○ 设置闪烁标志
  #-----------------------------------
  def set_flash(n)
    @flash_count = 0
    @start_flash = n
  end
  #-----------------------------------
  # ○ 更新“选择中”的闪烁效果
  #-----------------------------------
  def selecting_flash
    return unless need_flash?
    flash(flash_color, 60) if @flash_count % 60 == 0
    @flash_count += 1
  end
  #-----------------------------------
  # ○ 是否需要闪烁?
  #-----------------------------------
  def need_flash?
    return (@start_flash and @battler and @battler.is_a?(Game_Enemy) and @battler.alive?)
  end
  #-----------------------------------
  # ○ 画面更新
  #-----------------------------------
  alias sn_160317_update update
  def update
    sn_160317_update
    selecting_flash
  end
end

class Window_BattleEnemy < Window_Selectable
  attr_accessor :scene_spriteset  # 增加一个公开的界面精灵组
  #-----------------------------------
  # ○ 选择
  #-----------------------------------
  alias sn_160317_select select
  def select(n)
    if @scene_spriteset.nil?
      sn_160317_select(n)
      return
    end
    sn_160317_select(n)
    @scene_spriteset.enemy_sprites.each do |e|
      e.set_flash(e.battler.name == self.enemy.name)
    end
  end
  #-----------------------------------
  # ○ 清除所有敌人的闪烁标志
  #-----------------------------------
  def reset_toops_flash
    @scene_spriteset.enemy_sprites.each do |e|
      e.set_flash(false)
    end
  end
end

class Scene_Battle < Scene_Base
  #-----------------------------------
  # ○ 建立敌人选择窗口
  #-----------------------------------
  alias sn_160317_create_enemy_window create_enemy_window
  def create_enemy_window
    sn_160317_create_enemy_window
    @enemy_window.scene_spriteset = @spriteset
  end
  #-----------------------------------
  # ○ 选择敌人”确定“
  #-----------------------------------
  alias sn_160317_on_enemy_ok on_enemy_ok
  def on_enemy_ok
    sn_160317_on_enemy_ok
    @enemy_window.reset_toops_flash
  end
  #-----------------------------------
  # ○ 选择敌人”取消“
  #-----------------------------------
  alias sn_160317_on_enemy_cancel on_enemy_cancel
  def on_enemy_cancel
    sn_160317_on_enemy_cancel
    @enemy_window.reset_toops_flash
  end
end


鸡蛋

鲜花

发表评论 评论 (5 个评论)

回复 alexncf125 2020-11-16 01:32
请问这个能与MOG的战斗指针一起使用么?
嘗试下来当指针切換后, 闪烁会停在第一位敌人, 没有跟隨切換喔~
回复 cinderelmini 2020-11-18 14:18
alexncf125: 请问这个能与MOG的战斗指针一起使用么?
嘗试下来当指针切換后, 闪烁会停在第一位敌人, 没有跟隨切換喔~
得具体看MOG那个指针改动了哪些部分,一般来说这个脚本放其他相关脚本之下应该能兼容,如果效果不对的话肯定是其他脚本改动了默认战斗系统的某些流程,或是改写了Window_BattleEnemy的部分内容,又或是替换掉了它。
回复 alexncf125 2020-11-18 14:49
cinderelmini: 得具体看MOG那个指针改动了哪些部分,一般来说这个脚本放其他相关脚本之下应该能兼容,如果效果不对的话肯定是其他脚本改动了默认战斗系统的某些流程,或是改写 ...
https://rpg.blue/home.php?mod=space&uid=2652223&do=blog&id=16631

大大能请你帮忙看看网址內里的第433行, 加的 select(self.index) 是正解么?

可是我这样的改动好像会牽涉到三个地方
Sprite_Battle_Cursor
Window_BattleActor
Window_BattleEnemy

这三个地方都有调用cursor_move_index
回复 cinderelmini 2020-11-19 13:25
alexncf125: https://rpg.blue/home.php?mod=space&uid=2652223&do=blog&id=16631

大大能请你帮忙看看网址內里的第433行, 加的 select(self.index) 是正解么?

可是我这样的 ...
emmm
确实,alias的应该是index=而不应该是select,
你可以把我这个脚本里Window_BattleEnemy部分的alias select的那段换成index试试看(select的部分不要保留),比如:
  #-----------------------------------
  # ○ 选择
  #-----------------------------------
  alias sn_201119_index index=
  def index=(index)
    sn_201119_index(index)
    return if @scene_spriteset.nil?
    @scene_spriteset.enemy_sprites.each do |e|
      e.set_flash(e.battler.name == self.enemy.name)
    end
  end
回复 alexncf125 2020-11-19 13:37
cinderelmini: emmm
确实,alias的应该是index=而不应该是select,
你可以把我这个脚本里Window_BattleEnemy部分的alias select的那段换成index试试看(select的部分不要保留) ...
能正常運作了~谢谢~

facelist doodle 涂鸦笔

您需要登录后才可以评论 登录 | 注册会员

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

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

GMT+8, 2024-11-13 22:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

返回顶部