查看: 2043|回复: 18

[原创发布] 仿《南方公园;真理之杖》护盾值系统

[复制链接]
梦石
1
星屑
1184
在线时间
59 小时
注册时间
2023-9-8
回帖
19
发表于 2026-4-8 01:35:31 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 Ruigi 于 2026-4-18 01:06 编辑

[pre lang="ruby"]#==============================================================================
# ★ 仿《南方公园;真理之杖》护盾值系统- RPG Maker VX Ace
#==============================================================================
# 版本: 1.0
# 作者: MrRuigi
#
# 使用方法:
#   在防具(铠甲、盾牌、头盔、饰品)的备注栏中写入:
#     护盾值:数值
#   例如: 护盾值:100
#
# 功能说明:
#   1. 装备带有护盾值的防具后,角色的HP会被护盾值覆盖
#   2. 护盾存在时,HP条显示为灰色
#   3. 敌人攻击玩家时,不扣除生命值,而是先扣除1点护盾值(无论伤害多高)
#   4. 护盾值归零后,变回原版生命值系统,正常受到伤害
#   5. 护盾存在时受击音效变为特定音效(可在脚本中自定义)
#   6. 进入新战斗时护盾值会自动刷新至最大值
#   7. 更换装备时护盾值会自动刷新
#==============================================================================

$imported = {} if $imported.nil?
$imported["ShieldSystem"] = true

#==============================================================================
# ■ 配置模块
#==============================================================================

module SHIELD_CONFIG
  # 护盾受击音效(RPG::SE.new("文件名", 音量, 音调))
  # 可修改为其他音效文件名,例如: "Shield", "Absorb", "Ice8"
  SHIELD_HIT_SE = RPG::SE.new("Heal1", 80, 100)
  
  # 护盾值备注关键词(如非必要请不要修改)
  SHIELD_NOTE_TAG = "护盾值:"
  
  # 护盾条颜色(RGB格式,范围0-255)
  SHIELD_GAUGE_COLOR1 = Color.new(150, 150, 150)  # 渐变起始色(灰色)
  SHIELD_GAUGE_COLOR2 = Color.new(100, 100, 100)  # 渐变结束色(深灰色)
  
  # 护盾破碎音效(护盾值归零时播放,设为nil则不播放)
  SHIELD_BREAK_SE = RPG::SE.new("Collapse3", 80, 100)
end

#==============================================================================
# ■ Game_BattlerBase
#==============================================================================

class Game_BattlerBase
  #--------------------------------------------------------------------------
  # ● 别名: 初始化对象
  #--------------------------------------------------------------------------
  alias shield_initialize initialize
  def initialize
    shield_initialize
    @shield = 0          # 当前护盾值
    @shield_max = 0      # 最大护盾值
  end
  
  #--------------------------------------------------------------------------
  # ● 获取护盾值
  #--------------------------------------------------------------------------
  def shield
    @shield ||= 0
  end
  
  #--------------------------------------------------------------------------
  # ● 获取最大护盾值
  #--------------------------------------------------------------------------
  def shield_max
    @shield_max ||= 0
  end
  
  #--------------------------------------------------------------------------
  # ● 设置护盾值
  #--------------------------------------------------------------------------
  def shield=(value)
    @shield = [[value, shield_max].min, 0].max
  end
  
  #--------------------------------------------------------------------------
  # ● 设置最大护盾值
  #--------------------------------------------------------------------------
  def shield_max=(value)
    @shield_max = value
    @shield = @shield_max if @shield_max > 0
  end
  
  #--------------------------------------------------------------------------
  # ● 护盾是否激活?
  #--------------------------------------------------------------------------
  def shield_active?
    shield > 0
  end
  
  #--------------------------------------------------------------------------
  # ● 护盾率(用于显示)
  #--------------------------------------------------------------------------
  def shield_rate
    shield_max > 0 ? shield.to_f / shield_max : 0.0
  end
  
  #--------------------------------------------------------------------------
  # ● 刷新护盾值(重置为最大值)
  #--------------------------------------------------------------------------
  def refresh_shield
    if shield_max > 0
      @shield = shield_max
    end
  end
end

#==============================================================================
# ■ Game_Battler
#==============================================================================

class Game_Battler < Game_BattlerBase
  #--------------------------------------------------------------------------
  # ● 别名: 执行伤害
  #--------------------------------------------------------------------------
  alias shield_execute_damage execute_damage
  def execute_damage(user)
    # 仅对角色(玩家)生效护盾系统
    if self.is_a?(Game_Actor) && shield_active?
      # 如果是HP伤害
      if @result.hp_damage > 0
        # 保存原始伤害值
        original_damage = @result.hp_damage
        # 扣除1点护盾值(无论敌人攻击有多高)
        self.shield -= 1
        # 清除HP伤害(护盾保护下不扣HP)
        @result.hp_damage = 0
        # 播放护盾受击音效
        SHIELD_CONFIG::SHIELD_HIT_SE.play
        # 护盾归零时播放破碎音效并刷新HP显示
        if !shield_active?
          SHIELD_CONFIG::SHIELD_BREAK_SE.play if SHIELD_CONFIG::SHIELD_BREAK_SE
          # 护盾消失,恢复原始HP系统
        end
      end
      # 执行原始伤害处理(此时hp_damage已为0,不影响HP)
      shield_execute_damage(user)
    else
      # 没有护盾时,正常执行伤害
      shield_execute_damage(user)
    end
  end
  
  #--------------------------------------------------------------------------
  # ● 别名: 应用伤害效果
  #--------------------------------------------------------------------------
  alias shield_make_damage_value make_damage_value
  def make_damage_value(user, item)
    # 正常计算伤害值(护盾减伤在execute_damage中处理)
    shield_make_damage_value(user, item)
  end
end

#==============================================================================
# ■ Game_Actor
#==============================================================================

class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● 别名: 初始化
  #--------------------------------------------------------------------------
  alias shield_actor_initialize initialize
  def initialize(actor_id)
    shield_actor_initialize(actor_id)
    @shield = 0
    @shield_max = 0
    # 初始化时计算护盾值
    refresh_shield_from_armors
  end
  
  #--------------------------------------------------------------------------
  # ● 从装备计算护盾值
  #--------------------------------------------------------------------------
  def refresh_shield_from_armors
    total_shield = 0
    # 遍历所有已装备的防具
    armors.each do |armor|
      next if armor.nil?
      # 从备注中提取护盾值
      if armor.note =~ /#{SHIELD_CONFIG::SHIELD_NOTE_TAG}(\d+)/
        total_shield += $1.to_i
      end
    end
    # 设置最大护盾值并刷新当前护盾
    self.shield_max = total_shield
  end
  
  #--------------------------------------------------------------------------
  # ● 别名: 更换装备
  #--------------------------------------------------------------------------
  alias shield_change_equip change_equip
  def change_equip(slot_id, item)
    shield_change_equip(slot_id, item)
    # 更换装备后重新计算护盾值
    refresh_shield_from_armors
  end
  
  #--------------------------------------------------------------------------
  # ● 别名: 优化装备
  #--------------------------------------------------------------------------
  alias shield_optimize_equipments optimize_equipments
  def optimize_equipments
    shield_optimize_equipments
    refresh_shield_from_armors
  end
  
  #--------------------------------------------------------------------------
  # ● 别名: 清除装备
  #--------------------------------------------------------------------------
  alias shield_clear_equipments clear_equipments
  def clear_equipments
    shield_clear_equipments
    refresh_shield_from_armors
  end
  
  #--------------------------------------------------------------------------
  # ● 获取当前显示用的HP值(用于血条绘制)
  #--------------------------------------------------------------------------
  def display_hp
    shield_active? ? shield : hp
  end
  
  #--------------------------------------------------------------------------
  # ● 获取当前显示用的最大HP值(用于血条绘制)
  #--------------------------------------------------------------------------
  def display_mhp
    shield_active? ? shield_max : mhp
  end
  
  #--------------------------------------------------------------------------
  # ● 护盾是否激活?
  #--------------------------------------------------------------------------
  def shield_active?
    shield > 0
  end
  
  #--------------------------------------------------------------------------
  # ● 战斗开始时刷新护盾
  #--------------------------------------------------------------------------
  def on_battle_start
    refresh_shield if shield_max > 0
  end
end

#==============================================================================
# ■ Game_Party
#==============================================================================

class Game_Party < Game_Unit
  #--------------------------------------------------------------------------
  # ● 别名: 战斗开始时
  #--------------------------------------------------------------------------
  alias shield_on_battle_start on_battle_start
  def on_battle_start
    shield_on_battle_start
    # 战斗开始时刷新所有角色的护盾
    members.each do |actor|
      actor.on_battle_start if actor.respond_to?(:on_battle_start)
    end
  end
end

#==============================================================================
# ■ Window_Base
#==============================================================================

class Window_Base < Window
  #--------------------------------------------------------------------------
  # ● 绘制角色护盾条(覆盖HP条)
  #--------------------------------------------------------------------------
  def draw_actor_shield_gauge(actor, x, y, width = 124)
    return if actor.shield_max <= 0
    rate = actor.shield_rate
    # 绘制背景(黑色)
    contents.fill_rect(x, y, width, 6, gauge_back_color)
    # 计算填充宽度
    fill_w = (width * rate).to_i
    # 绘制护盾条(灰色渐变)
    contents.gradient_fill_rect(x, y, fill_w, 6,
      SHIELD_CONFIG::SHIELD_GAUGE_COLOR1,
      SHIELD_CONFIG::SHIELD_GAUGE_COLOR2)
  end
  
  #--------------------------------------------------------------------------
  # ● 别名: 绘制角色HP
  #--------------------------------------------------------------------------
  alias shield_draw_actor_hp draw_actor_hp
  def draw_actor_hp(actor, x, y, width = 124)
    if actor.shield_active?
      # 护盾激活时绘制护盾条(替代HP条)
      draw_actor_shield_gauge(actor, x, y, width)
      # 绘制护盾数值文本
      draw_actor_shield_value(actor, x, y, width)
    else
      # 无护盾时正常绘制HP条
      shield_draw_actor_hp(actor, x, y, width)
    end
  end
  
  #--------------------------------------------------------------------------
  # ● 绘制护盾数值
  #--------------------------------------------------------------------------
  def draw_actor_shield_value(actor, x, y, width)
    contents.font.color = system_color
    contents.draw_text(x, y, 30, line_height, Vocab::hp_a)
    contents.font.color = shield_gauge_color
    contents.draw_text(x + width - 60, y, 60, line_height,
      "#{actor.shield}/#{actor.shield_max}", 2)
  end
  
  #--------------------------------------------------------------------------
  # ● 护盾条颜色
  #--------------------------------------------------------------------------
  def shield_gauge_color
    text_color(24)  # 灰色系
  end
end

#==============================================================================
# ■ Scene_Battle
#==============================================================================

class Scene_Battle < Scene_Base
  #--------------------------------------------------------------------------
  # ● 别名: 战斗开始
  #--------------------------------------------------------------------------
  alias shield_battle_start battle_start
  def battle_start
    # 战斗开始前刷新所有角色的护盾
    $game_party.members.each do |actor|
      actor.refresh_shield if actor.shield_max > 0
    end
    shield_battle_start
  end
end

#==============================================================================
# ■ RPG::Armor
#==============================================================================

class RPG::Armor < RPG::EquipItem
  #--------------------------------------------------------------------------
  # ● 获取护盾值(从备注中读取)
  #--------------------------------------------------------------------------
  def shield_value
    if @shield_value.nil?
      if self.note =~ /#{SHIELD_CONFIG::SHIELD_NOTE_TAG}(\d+)/
        @shield_value = $1.to_i
      else
        @shield_value = 0
      end
    end
    @shield_value
  end
end[/pre]





[pre lang="ruby"]#==============================================================================
# ★ 护盾值系统 - Yanfly兼容版 v2.2
#==============================================================================
# 修复:卸下护盾装备后血条消失、攻击敌人报错、残留无敌的问题
#==============================================================================

$imported = {} if $imported.nil?
$imported["ShieldSystem"] = true

module SHIELD_CONFIG
  SHIELD_HIT_SE   = RPG::SE.new("Heal1", 80, 100)
  SHIELD_BREAK_SE = RPG::SE.new("Collapse3", 80, 100)
  SHIELD_NOTE_TAG = "护盾值:"
  SHIELD_GAUGE_COLOR1 = Color.new(150, 150, 150)
  SHIELD_GAUGE_COLOR2 = Color.new(100, 100, 100)
end

#==============================================================================
# ■ Game_BattlerBase
#==============================================================================

class Game_BattlerBase
  attr_reader :shield, :shield_max

  alias shield_initialize initialize
  def initialize
    shield_initialize
    @shield = 0
    @shield_max = 0
  end

  def shield=(value)
    @shield = [[value, shield_max].min, 0].max
  end

  def shield_max=(value)
    @shield_max = value
    if @shield_max > 0
      @shield = @shield_max
    else
      @shield = 0   # 最大护盾为0时,当前护盾也清零,防止残留
    end
  end

  def shield_active?
    shield > 0 && shield_max > 0
  end

  def shield_rate
    shield_max > 0 ? shield.to_f / shield_max : 0.0
  end

  def refresh_shield
    if shield_max > 0
      @shield = shield_max
    else
      @shield = 0
    end
  end
end

#==============================================================================
# ■ Game_Battler (伤害拦截)
#==============================================================================

class Game_Battler < Game_BattlerBase
  alias shield_execute_damage execute_damage
  def execute_damage(user)
    if self.is_a?(Game_Actor) && shield_active? && @result.hp_damage > 0
      self.shield -= 1
      @result.hp_damage = 0
      SHIELD_CONFIG::SHIELD_HIT_SE.play
      if !shield_active? && SHIELD_CONFIG::SHIELD_BREAK_SE
        SHIELD_CONFIG::SHIELD_BREAK_SE.play
      end
    end
    shield_execute_damage(user)
  end

  alias shield_hp_set hp=
  def hp=(value)
    if self.is_a?(Game_Actor) && shield_active? && value < self.hp
      return
    end
    shield_hp_set(value)
  end
end

#==============================================================================
# ■ Game_Actor
#==============================================================================

class Game_Actor < Game_Battler
  alias shield_actor_initialize initialize
  def initialize(actor_id)
    shield_actor_initialize(actor_id)
    @shield = 0
    @shield_max = 0
    refresh_shield_from_armors
  end

  def refresh_shield_from_armors
    total_shield = 0
    armors.each do |armor|
      next if armor.nil?
      if armor.note =~ /#{SHIELD_CONFIG::SHIELD_NOTE_TAG}(\d+)/
        total_shield += $1.to_i
      end
    end
    self.shield_max = total_shield
  end

  alias shield_change_equip change_equip
  def change_equip(slot_id, item)
    shield_change_equip(slot_id, item)
    refresh_shield_from_armors
  end

  alias shield_optimize_equipments optimize_equipments
  def optimize_equipments
    shield_optimize_equipments
    refresh_shield_from_armors
  end

  alias shield_clear_equipments clear_equipments
  def clear_equipments
    shield_clear_equipments
    refresh_shield_from_armors
  end

  def on_battle_start
    refresh_shield if shield_max > 0
  end
end

#==============================================================================
# ■ Game_Party
#==============================================================================

class Game_Party < Game_Unit
  alias shield_on_battle_start on_battle_start
  def on_battle_start
    shield_on_battle_start
    members.each { |actor| actor.on_battle_start if actor.respond_to?(:on_battle_start) }
  end
end

#==============================================================================
# ■ Window_Base (护盾条绘制)
#==============================================================================

class Window_Base < Window
  def draw_actor_shield_gauge(actor, x, y, width = 124)
    return if actor.shield_max <= 0 || !actor.shield_active?
    rate = actor.shield_rate
    contents.fill_rect(x, y, width, 6, gauge_back_color)
    fill_w = (width * rate).to_i
    contents.gradient_fill_rect(x, y, fill_w, 6,
      SHIELD_CONFIG::SHIELD_GAUGE_COLOR1,
      SHIELD_CONFIG::SHIELD_GAUGE_COLOR2)
    draw_actor_shield_value(actor, x, y, width)
  end

  def draw_actor_shield_value(actor, x, y, width)
    contents.font.color = system_color
    contents.draw_text(x, y, 30, line_height, Vocab::hp_a)
    contents.font.color = shield_gauge_color
    contents.draw_text(x, y, width, line_height, "#{actor.shield}/#{actor.shield_max}", 2)
  end

  def shield_gauge_color
    text_color(24)
  end

  def draw_actor_hp(actor, x, y, width = 124)
    if actor.shield_active?
      draw_actor_shield_gauge(actor, x, y, width)
    else
      draw_gauge(x, y, width, actor.hp_rate, hp_gauge_color1, hp_gauge_color2)
      contents.font.color = system_color
      contents.draw_text(x, y, 30, line_height, Vocab::hp_a)
      draw_current_and_max_values(x, y, width, actor.hp, actor.mhp,
        hp_color(actor), normal_color)
    end
  end
end

#==============================================================================
# ■ 兼容 Yanfly Battle Command List
#==============================================================================
if $imported["YEA-BattleCommandList"]
  class Window_BattleStatus < Window_Selectable
    alias shield_ybc_draw_actor_hp draw_actor_hp
    def draw_actor_hp(actor, x, y, width = 124)
      if actor.shield_active?
        draw_actor_shield_gauge(actor, x, y, width)
      else
        shield_ybc_draw_actor_hp(actor, x, y, width)
      end
    end
  end
end

#==============================================================================
# ■ Scene_Battle
#==============================================================================

class Scene_Battle < Scene_Base
  alias shield_battle_start battle_start
  def battle_start
    $game_party.members.each { |actor| actor.refresh_shield if actor.shield_max > 0 }
    shield_battle_start
  end
end[/pre]

[pre lang="ruby"]#==============================================================================
# ★ 护盾系统 - 伤害拦截底层补丁 (Yanfly Battle Command List 兼容版专用)
#==============================================================================
# 说明:将护盾扣除逻辑直接嵌入 hp= 方法,确保在任何战斗脚本下都能正确扣盾且不掉血。
#       将此脚本放在护盾系统主脚本之后、Main 之前。
#==============================================================================

class Game_Battler < Game_BattlerBase
  #--------------------------------------------------------------------------
  # ● 覆盖:设置 HP(护盾激活时拦截扣血并扣盾)
  #--------------------------------------------------------------------------
  alias shield_final_hp_set hp=
  def hp=(value)
    # 只对玩家角色且护盾激活时处理
    if self.is_a?(Game_Actor) && shield_active?
      # 判断本次是否为扣血操作(新值小于当前HP)
      if value < self.hp
        damage_amount = self.hp - value  # 原本要扣的血量
        # 无论伤害多高,固定扣除 1 点护盾值
        self.shield -= 1
        # 播放护盾受击音效
        SHIELD_CONFIG::SHIELD_HIT_SE.play
        # 护盾破碎音效
        if !shield_active? && SHIELD_CONFIG::SHIELD_BREAK_SE
          SHIELD_CONFIG::SHIELD_BREAK_SE.play
        end
        # 阻止 HP 变化(直接返回,不调用原 hp= 方法)
        return
      end
    end
    # 其他情况(回血、无护盾、敌人等)正常调用原方法
    shield_final_hp_set(value)
  end
end

#==============================================================================
# ■ 确保在 execute_damage 中不重复扣盾(可选优化)
#==============================================================================
class Game_Battler < Game_BattlerBase
  # 如果之前有 execute_damage 的拦截,将其清空或确保不重复扣除
  # 这里直接覆盖,不再扣除护盾,因为 hp= 已经处理了
  alias shield_clean_execute_damage execute_damage
  def execute_damage(user)
    # 如果护盾激活,原本的 hp_damage 会在 hp= 中被拦截,无需额外处理
    # 但为了音效不重复,这里不清除 hp_damage,让 hp= 自然触发
    shield_clean_execute_damage(user)
  end
end

#==============================================================================
# ■ 场景战斗开始时刷新护盾(保留)
#==============================================================================
class Scene_Battle < Scene_Base
  alias shield_final_battle_start battle_start
  def battle_start
    $game_party.members.each { |actor| actor.refresh_shield if actor.shield_max > 0 }
    shield_final_battle_start
  end
end[/pre]

[pre lang="ruby"]#==============================================================================
# ★ 护盾系统 - Falcao 宝石镶嵌联动补丁
#==============================================================================
# 功能:使镶嵌在装备上的宝石如果备注了“护盾值:数字”,也会累加到角色的护盾值中。
# 注意:宝石物品必须至少有一个属性标签(如<提升体力:1>)才能被镶嵌系统识别。
#==============================================================================

if defined?(FalMana) && $imported["ShieldSystem"]
  
  #============================================================================
  # ■ 扩展 RPG::Item:添加护盾值读取方法
  #============================================================================
  class RPG::Item < RPG::UsableItem
    def shield_value
      if @shield_value.nil?
        if self.note =~ /#{SHIELD_CONFIG::SHIELD_NOTE_TAG}(\d+)/
          @shield_value = $1.to_i
        else
          @shield_value = 0
        end
      end
      @shield_value
    end
  end

  #============================================================================
  # ■ Game_Actor 护盾计算扩展(包含宝石护盾)
  #============================================================================
  class Game_Actor < Game_Battler
    # 完全覆盖护盾计算,确保宝石护盾被累加
    def refresh_shield_from_armors
      total_shield = 0
      
      # 遍历所有已装备物品(武器 + 防具)
      equips.each do |equip|
        next if equip.nil?
        
        # 1. 装备自身护盾值
        if equip.note =~ /#{SHIELD_CONFIG::SHIELD_NOTE_TAG}(\d+)/
          total_shield += $1.to_i
        end
        
        # 2. 镶嵌宝石的护盾值
        slots = equip.manaslots
        next unless slots.is_a?(Array)
        
        slots.each do |gem|
          next if gem.nil?
          # 读取宝石的护盾值
          total_shield += gem.shield_value if gem.respond_to?(:shield_value)
        end
      end
      
      # 应用总护盾值
      self.shield_max = total_shield
    end
   
    # 确保更换装备、镶嵌宝石后自动刷新护盾
    alias shield_gem_change_equip change_equip
    def change_equip(slot_id, item)
      shield_gem_change_equip(slot_id, item)
      refresh_shield_from_armors
    end
  end

  #============================================================================
  # ■ 宝石操作后立即刷新护盾
  #============================================================================
  module FalMana
    class << self
      # 镶嵌宝石
      alias shield_socket_manastone socket_manastone
      def socket_manastone(item, index, value, actor)
        shield_socket_manastone(item, index, value, actor)
        actor.refresh_shield_from_armors if actor.respond_to?(:refresh_shield_from_armors)
      end

      # 摘除宝石
      alias shield_remove_manastone remove_manastone
      def remove_manastone(item, index, value, actor)
        shield_remove_manastone(item, index, value, actor)
        actor.refresh_shield_from_armors if actor.respond_to?(:refresh_shield_from_armors)
      end

      # 清除所有宝石(镶嵌失败时)
      alias shield_clear_manastones clear_manastones
      def clear_manastones(item, actor)
        shield_clear_manastones(item, actor)
        actor.refresh_shield_from_armors if actor.respond_to?(:refresh_shield_from_armors)
      end
    end
  end
  
  #============================================================================
  # ■ 战斗开始时强制刷新护盾(确保宝石护盾生效)
  #============================================================================
  class Scene_Battle < Scene_Base
    alias shield_gem_battle_start battle_start
    def battle_start
      $game_party.members.each do |actor|
        actor.refresh_shield_from_armors if actor.respond_to?(:refresh_shield_from_armors)
      end
      shield_gem_battle_start
    end
  end

end # defined?(FalMana) && $imported["ShieldSystem"][/pre]
Y~R~@V(W4JJ[2J8R5LIUW6O.png
@5OZ}[ET{{@KN55V9J0$1$L.png
XG$2MSZ~L3239IR([8{WMBR.png
ETTZ8N~8`U~%U83@S@ZE6{D.png
DY%T40B79)(SS9GW1HC~9M8.png

评分

参与人数 2星屑 +200 赞 +1 收起 理由
阿薩男爵 + 1 精品文章
fux2 + 200 精品文章

查看全部评分

梦石
0
星屑
506
在线时间
381 小时
注册时间
2011-3-11
回帖
75
发表于 2026-4-13 01:05:51 | 显示全部楼层
請問您的腳本【護盾】和【鏡像】的戰鬥系統腳本是? 我使用後好像沒辦法產生效果
回复

使用道具 举报

梦石
1
星屑
1184
在线时间
59 小时
注册时间
2023-9-8
回帖
19
 楼主| 发表于 2026-4-13 21:56:30 | 显示全部楼层
庫洛魔法使 发表于 2026-4-13 01:05
請問您的腳本【護盾】和【鏡像】的戰鬥系統腳本是? 我使用後好像沒辦法產生效果
...

在装备的备注栏里 写下 护盾值:数字
回复

使用道具 举报

梦石
1
星屑
1184
在线时间
59 小时
注册时间
2023-9-8
回帖
19
 楼主| 发表于 2026-4-13 21:57:44 | 显示全部楼层
庫洛魔法使 发表于 2026-4-13 01:05
請問您的腳本【護盾】和【鏡像】的戰鬥系統腳本是? 我使用後好像沒辦法產生效果
...

镜像的话是在技能的备注栏写下<transform_skill>
回复

使用道具 举报

梦石
10
星屑
12650
在线时间
1496 小时
注册时间
2010-8-31
回帖
558

开拓者

发表于 2026-4-14 06:18:27 | 显示全部楼层
东西确实是好东西,可以实现不少功能,但是我目前的游戏使用会报错。
QQ图片20260414061241.png
重新新建了一个工程倒是能用了,可能和我之前的脚本有冲突。
不过在战斗中却无法看到血条呈现出灰色,以及护盾值。
生效倒是正常生效了,定了能承受5次攻击就确实挨了5次。
QQ图片20260414061723.png
QQ图片20260414061728.png
相比起做游戏,更热衷于素材的加工呢。
回复

使用道具 举报

梦石
1
星屑
1184
在线时间
59 小时
注册时间
2023-9-8
回帖
19
 楼主| 发表于 2026-4-15 00:37:11 | 显示全部楼层
阿薩男爵 发表于 2026-4-14 06:18
东西确实是好东西,可以实现不少功能,但是我目前的游戏使用会报错。

重新新建了一个工程倒是能用了,可能 ...

有点奇怪,,,,
回复

使用道具 举报

梦石
1
星屑
1184
在线时间
59 小时
注册时间
2023-9-8
回帖
19
 楼主| 发表于 2026-4-15 00:38:15 | 显示全部楼层
阿薩男爵 发表于 2026-4-14 06:18
东西确实是好东西,可以实现不少功能,但是我目前的游戏使用会报错。

重新新建了一个工程倒是能用了,可能 ...

你用的是yanfly兼容版吗?

点评

新建工程的话,第一个版本能用,但兼容版直接报错  发表于 2026-4-15 06:49
回复

使用道具 举报

梦石
1
星屑
1184
在线时间
59 小时
注册时间
2023-9-8
回帖
19
 楼主| 发表于 2026-4-16 00:53:54 | 显示全部楼层
Ruigi 发表于 2026-4-15 00:38
你用的是yanfly兼容版吗?

兼容版需要配合yanfly的脚本
回复

使用道具 举报

梦石
1
星屑
1184
在线时间
59 小时
注册时间
2023-9-8
回帖
19
 楼主| 发表于 2026-4-16 00:55:05 | 显示全部楼层
阿薩男爵 发表于 2026-4-14 06:18
东西确实是好东西,可以实现不少功能,但是我目前的游戏使用会报错。

重新新建了一个工程倒是能用了,可能 ...

兼容版需要配合yanfly的脚本,配合伤害拦截底层补丁
回复

使用道具 举报

梦石
10
星屑
12650
在线时间
1496 小时
注册时间
2010-8-31
回帖
558

开拓者

发表于 2026-4-16 06:18:20 | 显示全部楼层
Ruigi 发表于 2026-4-16 00:55
兼容版需要配合yanfly的脚本,配合伤害拦截底层补丁

加了补丁还是报错。
QQ图片20260416061552.png
相比起做游戏,更热衷于素材的加工呢。
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部