Войти на сайт

Авторизация, ждите ...
×
  • Страница:
  • 1
  • 2

ТЕМА: Нужна доработка Ace Battle Engine

Нужна доработка Ace Battle Engine 10 года 7 мес. назад #64690

  • Shedi
  • Shedi аватар
  • Вне сайта
  • Оседлый
  • Сообщений: 47
  • Спасибо получено: 3
Всем привет! Я уже в курсе что на этом форуме могут мне помочь. С моей проблемой.
А проблема такая.
#==============================================================================
# 
# ▼ Yanfly Engine Ace - Battle Engine Add-On: Enemy HP Bars v1.10
# -- Last Updated: 2012.02.10
# -- Level: Easy, Normal
# -- Requires: YEA - Ace Battle Engine v1.00+.
# 
#==============================================================================
 
$imported = {} if $imported.nil?
$imported["YEA-EnemyHPBars"] = true
 
#==============================================================================
# ▼ Updates
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 2012.02.10 - Bug Fixed: AoE selection doesn't reveal hidden enemies.
# 2012.02.01 - Bug Fixed: Back and front of gauge randomly don't appear.
# 2012.01.11 - Efficiency update.
# 2012.01.04 - Compatibility Update: Area of Effect
# 2011.12.28 - Efficiency update.
#            - Bug Fixed: HP bars didn't disappear after a heal.
# 2011.12.26 - Bug Fixed: HP bars were not depleting.
# 2011.12.23 - Efficiency update.
# 2011.12.10 - Bug Fixed: HP bars no longer appear when dead and an AoE skill
#              has been selected.
# 2011.12.08 - New feature. Hide HP Bars until defeated once.
# 2011.12.06 - Started Script and Finished.
# 
#==============================================================================
# ▼ Introduction
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script shows HP gauges on enemies as they're selected for targeting or
# whenever they're damaged. The HP gauges will actually slide downward or
# upward as the enemies take damage.
# 
# Included in v1.01 is the option to require the player having slain an enemy
# once before enemies of that type will show their HP gauge.
# 
#==============================================================================
# ▼ Instructions
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# To install this script, open up your script editor and copy/paste this script
# to an open slot below ▼ Materials/素材 but above ▼ Main. Remember to save.
# 
# -----------------------------------------------------------------------------
# Enemy Notetags - These notetags go in the enemy notebox in the database.
# -----------------------------------------------------------------------------
# <back gauge: x>
# Changes the colour of the enemy HP back gauge to x where x is the text colour
# used from the "Window" skin image under Graphics\System.
# 
# <hp gauge 1: x>
# <hp gauge 2: x>
# Changes the colour of the enemy HP HP gauge to x where x is the text colour
# used from the "Window" skin image under Graphics\System.
# 
# <hide gauge>
# <show gauge>
# Hides/shows HP gauge for enemies in battle. These gauges appear whenever the
# enemy is targeted for battle or whenever the enemy takes HP damage. Note that
# using the <show gauge> tag will bypass the requirement for needing to defeat
# an enemy once if that setting is enabled.
# 
#==============================================================================
# ▼ Compatibility
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
# it will run with RPG Maker VX without adjusting.
# 
# This script requires Yanfly Engine Ace - Ace Battle Engine v1.00+ and the
# script must be placed under Ace Battle Engine in the script listing.
# 
#==============================================================================
 
module YEA
  module BATTLE
 
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # - Enemy HP Gauges -
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # Adjust the settings for the enemy HP gauges. You can choose to show the
    # enemy HP gauges by default, the size of the gauge, the colour of the
    # gauge, and the back colour of the gauge.
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    SHOW_ENEMY_HP_GAUGE    = true   # Display Enemy HP Gauge?
    ANIMATE_HP_GAUGE       = true   # Animate the HP gauge?
    DEFEAT_ENEMIES_FIRST   = false  # Must defeat enemy first to show HP?
    ENEMY_GAUGE_WIDTH      = 35    # How wide the enemy gauges are.
    ENEMY_GAUGE_HEIGHT     = 4     # How tall the enemy gauges are.
    ENEMY_HP_GAUGE_COLOUR1 = 20     # Colour 1 for HP.
    ENEMY_HP_GAUGE_COLOUR2 = 21     # Colour 2 for HP.
    ENEMY_BACKGAUGE_COLOUR = 19     # Gauge Back colour.
 
  end # BATTLE
end # YEA
 
#==============================================================================
# ▼ Editting anything past this point may potentially result in causing
# computer damage, incontinence, explosion of user's head, coma, death, and/or
# halitosis so edit at your own risk.
#==============================================================================
 
if $imported["YEA-BattleEngine"]
 
module YEA
  module REGEXP
  module ENEMY
 
    HIDE_GAUGE = /<(?:HIDE_GAUGE|hide gauge)>/i
    SHOW_GAUGE = /<(?:SHOW_GAUGE|show gauge)>/i
 
    BACK_GAUGE = /<(?:BACK_GAUGE|back gauge):[ ]*(\d+)>/i
    HP_GAUGE_1 = /<(?:HP_GAUGE_1|hp gauge 1):[ ]*(\d+)>/i
    HP_GAUGE_2 = /<(?:HP_GAUGE_2|hp gauge 2):[ ]*(\d+)>/i
 
  end # ENEMY
  end # REGEXP
end # YEA
 
#==============================================================================
# ■ DataManager
#==============================================================================
 
module DataManager
 
  #--------------------------------------------------------------------------
  # alias method: load_database
  #--------------------------------------------------------------------------
  class <<self; alias load_database_ehpb load_database; end
  def self.load_database
    load_database_ehpb
    load_notetags_ehpb
  end
 
  #--------------------------------------------------------------------------
  # new method: load_notetags_ehpb
  #--------------------------------------------------------------------------
  def self.load_notetags_ehpb
    groups = [$data_enemies]
    for group in groups
      for obj in group
        next if obj.nil?
        obj.load_notetags_ehpb
      end
    end
  end
 
end # DataManager
 
#==============================================================================
# ■ RPG::Enemy
#==============================================================================
 
class RPG::Enemy < RPG::BaseItem
 
  #--------------------------------------------------------------------------
  # public instance variables
  #--------------------------------------------------------------------------
  attr_accessor :show_gauge
  attr_accessor :require_death_show_gauge
  attr_accessor :back_gauge_colour
  attr_accessor :hp_gauge_colour1
  attr_accessor :hp_gauge_colour2
 
  #--------------------------------------------------------------------------
  # common cache: load_notetags_ehpb
  #--------------------------------------------------------------------------
  def load_notetags_ehpb
    @show_gauge = YEA::BATTLE::SHOW_ENEMY_HP_GAUGE
    @require_death_show_gauge = YEA::BATTLE::DEFEAT_ENEMIES_FIRST
    @back_gauge_colour = YEA::BATTLE::ENEMY_BACKGAUGE_COLOUR
    @hp_gauge_colour1 = YEA::BATTLE::ENEMY_HP_GAUGE_COLOUR1
    @hp_gauge_colour2 = YEA::BATTLE::ENEMY_HP_GAUGE_COLOUR2
    #---
    self.note.split(/[\r\n]+/).each { |line|
      case line
      #---
      when YEA::REGEXP::ENEMY::HIDE_GAUGE
        @show_gauge = false
      when YEA::REGEXP::ENEMY::SHOW_GAUGE
        @show_gauge = true
        @require_death_show_gauge = false
      when YEA::REGEXP::ENEMY::BACK_GAUGE
        @back_gauge_colour = [$1.to_i, 31].min
      when YEA::REGEXP::ENEMY::HP_GAUGE_1
        @hp_gauge_colour1 = [$1.to_i, 31].min
      when YEA::REGEXP::ENEMY::HP_GAUGE_2
        @hp_gauge_colour2 = [$1.to_i, 31].min
      end
    } # self.note.split
    #---
  end
 
end # RPG::Enemy
 
#==============================================================================
# ■ Sprite_Battler
#==============================================================================
 
class Sprite_Battler < Sprite_Base
 
  #--------------------------------------------------------------------------
  # alias method: initialize
  #--------------------------------------------------------------------------
  alias sprite_battler_initialize_ehpb initialize
  def initialize(viewport, battler = nil)
    sprite_battler_initialize_ehpb(viewport, battler)
    create_enemy_gauges
  end
 
  #--------------------------------------------------------------------------
  # alias method: dispose
  #--------------------------------------------------------------------------
  alias sprite_battler_dispose_ehpb dispose
  def dispose
    sprite_battler_dispose_ehpb
    dispose_enemy_gauges
  end
 
  #--------------------------------------------------------------------------
  # alias method: update
  #--------------------------------------------------------------------------
  alias sprite_battler_update_ehpb update
  def update
    sprite_battler_update_ehpb
    update_enemy_gauges
  end
 
  #--------------------------------------------------------------------------
  # new method: create_enemy_gauges
  #--------------------------------------------------------------------------
  def create_enemy_gauges
    return if @battler.nil?
    return if @battler.actor?
    return unless @battler.enemy.show_gauge
    @back_gauge_viewport = Enemy_HP_Gauge_Viewport.new(@battler, self, :back)
    @hp_gauge_viewport = Enemy_HP_Gauge_Viewport.new(@battler, self, :hp)
  end
 
  #--------------------------------------------------------------------------
  # new method: dispose_enemy_gauges
  #--------------------------------------------------------------------------
  def dispose_enemy_gauges
    @back_gauge_viewport.dispose unless @back_gauge_viewport.nil?
    @hp_gauge_viewport.dispose unless @hp_gauge_viewport.nil?
  end
 
  #--------------------------------------------------------------------------
  # new method: update_enemy_gauges
  #--------------------------------------------------------------------------
  def update_enemy_gauges
    @back_gauge_viewport.update unless @back_gauge_viewport.nil?
    @hp_gauge_viewport.update unless @hp_gauge_viewport.nil?
  end
 
  #--------------------------------------------------------------------------
  # new method: update_enemy_gauge_value
  #--------------------------------------------------------------------------
  def update_enemy_gauge_value
    @back_gauge_viewport.new_hp_updates unless @back_gauge_viewport.nil?
    @hp_gauge_viewport.new_hp_updates unless @hp_gauge_viewport.nil?
  end
 
end # Sprite_Battler
 
#==============================================================================
# ■ Game_BattlerBase
#==============================================================================
 
class Game_BattlerBase
 
  #--------------------------------------------------------------------------
  # public instance variables
  #--------------------------------------------------------------------------
  attr_accessor :hidden
 
  #--------------------------------------------------------------------------
  # alias method: refresh
  #--------------------------------------------------------------------------
  alias game_battlerbase_refresh_ehpb refresh
  def refresh
    game_battlerbase_refresh_ehpb
    return unless SceneManager.scene_is?(Scene_Battle)
    return if actor?
    sprite.update_enemy_gauge_value
  end
 
end # Game_BattlerBase
 
#==============================================================================
# ■ Game_Battler
#==============================================================================
 
class Game_Battler < Game_BattlerBase
 
  #--------------------------------------------------------------------------
  # alias method: die
  #--------------------------------------------------------------------------
  alias game_battler_die_ehpb die
  def die
    game_battler_die_ehpb
    return if actor?
    $game_party.add_defeated_enemy(@enemy_id)
  end
 
  #--------------------------------------------------------------------------
  # alias method: hp=
  #--------------------------------------------------------------------------
  alias game_battlerbase_hpequals_ehpb hp=
  def hp=(value)
    game_battlerbase_hpequals_ehpb(value)
    return unless SceneManager.scene_is?(Scene_Battle)
    return if actor?
    return if value == 0
    sprite.update_enemy_gauge_value
  end
 
end # Game_Battler
 
#==============================================================================
# ■ Game_Party
#==============================================================================
 
class Game_Party < Game_Unit
 
  #--------------------------------------------------------------------------
  # alias method: init_all_items
  #--------------------------------------------------------------------------
  alias game_party_init_all_items_ehpb init_all_items
  def init_all_items
    game_party_init_all_items_ehpb
    @defeated_enemies = []
  end
 
  #--------------------------------------------------------------------------
  # new method: defeated_enemies
  #--------------------------------------------------------------------------
  def defeated_enemies
    @defeated_enemies = [] if @defeated_enemies.nil?
    return @defeated_enemies
  end
 
  #--------------------------------------------------------------------------
  # new method: add_defeated_enemy
  #--------------------------------------------------------------------------
  def add_defeated_enemy(id)
    @defeated_enemies = [] if @defeated_enemies.nil?
    @defeated_enemies.push(id) unless @defeated_enemies.include?(id)
  end
 
end # Game_Party
 
#==============================================================================
# ■ Enemy_HP_Gauge_Viewport
#==============================================================================
 
class Enemy_HP_Gauge_Viewport < Viewport
 
  #--------------------------------------------------------------------------
  # initialize
  #--------------------------------------------------------------------------
  def initialize(battler, sprite, type)
    @battler = battler
    @base_sprite = sprite
    @type = type
    dw = YEA::BATTLE::ENEMY_GAUGE_WIDTH
    dw += 2 if @type == :back
    @start_width = dw
    dh = YEA::BATTLE::ENEMY_GAUGE_HEIGHT
    dh += 2 if @type == :back
    rect = Rect.new(0, 0, dw, dh)
    @current_hp = @battler.hp
    @current_mhp = @battler.mhp
    @target_gauge_width = target_gauge_width
    @gauge_rate = 1.0
    setup_original_hide_gauge
    super(rect)
    self.z = 125
    create_gauge_sprites
    self.visible = false
    update_position
  end
 
  #--------------------------------------------------------------------------
  # dispose
  #--------------------------------------------------------------------------
  def dispose
    @sprite.bitmap.dispose unless @sprite.bitmap.nil?
    @sprite.dispose
    super
  end
 
  #--------------------------------------------------------------------------
  # update
  #--------------------------------------------------------------------------
  def update
    super
    self.visible = gauge_visible?
    @sprite.ox += 4 if YEA::BATTLE::ANIMATE_HP_GAUGE
    update_position
    update_gauge
    @visible_counter -= 1
  end
 
  #--------------------------------------------------------------------------
  # setup_original_hide_gauge
  #--------------------------------------------------------------------------
  def setup_original_hide_gauge
    @original_hide = @battler.enemy.require_death_show_gauge
    return unless @original_hide
    if YEA::BATTLE::DEFEAT_ENEMIES_FIRST
      enemy_id = @battler.enemy_id
      @original_hide = !$game_party.defeated_enemies.include?(enemy_id)
    end
  end
 
  #--------------------------------------------------------------------------
  # create_gauge_sprites
  #--------------------------------------------------------------------------
  def create_gauge_sprites
    @sprite = Plane.new(self)
    dw = self.rect.width * 2
    @sprite.bitmap = Bitmap.new(dw, self.rect.height)
    case @type
    when :back
      colour1 = Colour.text_colour(@battler.enemy.back_gauge_colour)
      colour2 = Colour.text_colour(@battler.enemy.back_gauge_colour)
    when :hp
      colour1 = Colour.text_colour(@battler.enemy.hp_gauge_colour1)
      colour2 = Colour.text_colour(@battler.enemy.hp_gauge_colour2)
    end
    dx = 0
    dy = 0
    dw = self.rect.width
    dh = self.rect.height
    @gauge_width = target_gauge_width
    @sprite.bitmap.gradient_fill_rect(dx, dy, dw, dh, colour1, colour2)
    @sprite.bitmap.gradient_fill_rect(dw, dy, dw, dh, colour2, colour1)
    @visible_counter = 0
  end
 
  #--------------------------------------------------------------------------
  # update_visible
  #--------------------------------------------------------------------------
  def gauge_visible?
    update_original_hide
    return false if @original_hide
    return false if case_original_hide?
    return true if @visible_counter > 0
    return true if @gauge_width != @target_gauge_width
    if SceneManager.scene_is?(Scene_Battle)
      return false if SceneManager.scene.enemy_window.nil?
      unless @battler.dead?
        if SceneManager.scene.enemy_window.active
          return true if SceneManager.scene.enemy_window.enemy == @battler
          return true if SceneManager.scene.enemy_window.select_all?
          return true if highlight_aoe?
        end
      end
    end
    return false
  end
 
  #--------------------------------------------------------------------------
  # highlight_aoe?
  #--------------------------------------------------------------------------
  def highlight_aoe?
    return false unless $imported["YEA-AreaofEffect"]
    return false if @battler.enemy? && @battler.hidden
    return SceneManager.scene.enemy_window.hightlight_aoe?(@battler)
  end
 
  #--------------------------------------------------------------------------
  # new_hp_updates
  #--------------------------------------------------------------------------
  def new_hp_updates
    return if @current_hp == @battler.hp && @current_mhp == @battler.mhp
    @current_hp = @battler.hp
    @current_mhp = @battler.mhp
    return if @gauge_rate == target_gauge_rate
    @gauge_rate = target_gauge_rate
    @target_gauge_width = target_gauge_width
    @visible_counter = 60
  end
 
  #--------------------------------------------------------------------------
  # case_original_hide?
  #--------------------------------------------------------------------------
  def case_original_hide?
    return false if !@battler.enemy.require_death_show_gauge
    if YEA::BATTLE::DEFEAT_ENEMIES_FIRST
      enemy_id = @battler.enemy_id
      return true unless $game_party.defeated_enemies.include?(enemy_id)
    end
    return false
  end
 
  #--------------------------------------------------------------------------
  # update_original_hide
  #--------------------------------------------------------------------------
  def update_original_hide
    return unless @original_hide
    return if @battler.dead?
    enemy_id = @battler.enemy_id
    @original_hide = false if $game_party.defeated_enemies.include?(enemy_id)
  end
 
  #--------------------------------------------------------------------------
  # update_position
  #--------------------------------------------------------------------------
  def update_position
    dx = @battler.screen_x - @start_width / 2
    dy = @battler.screen_y
    self.rect.x = dx
    self.rect.y = dy
    dh = self.rect.height + 1
    dh += 2 unless @type == :back
    dy = [@battler.screen_y, Graphics.height - dh - 120].min
    dy += 1 unless @type == :back
    self.rect.y = dy
  end
 
  #--------------------------------------------------------------------------
  # update_gauge
  #--------------------------------------------------------------------------
  def update_gauge
    return if @gauge_width == @target_gauge_width
    rate = 3
    @target_gauge_width = target_gauge_width
    if @gauge_width > @target_gauge_width
      @gauge_width = [@gauge_width - rate, @target_gauge_width].max
    elsif @gauge_width < @target_gauge_width
      @gauge_width = [@gauge_width + rate, @target_gauge_width].min
    end
    @visible_counter = @gauge_width == 0 ? 10 : 60
    return if @type == :back
    self.rect.width = @gauge_width
  end
 
  #--------------------------------------------------------------------------
  # target_gauge_rate
  #--------------------------------------------------------------------------
  def target_gauge_rate
    return @current_hp.to_f / @current_mhp.to_f
  end
 
  #--------------------------------------------------------------------------
  # target_gauge_width
  #--------------------------------------------------------------------------
  def target_gauge_width
    return [@current_hp * @start_width / @current_mhp, @start_width].min
  end
 
end # Enemy_HP_Gauge_Viewport
 
end # $imported["YEA-BattleEngine"]
 
#==============================================================================
# 
# ▼ End of File
# 
#==============================================================================
Есть вот такой скрипт его надо доработать вот до такого вида.
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]

Зарание спасибо!
Последнее редактирование: 10 года 7 мес. назад от AnnTenna. Причина: более адекватное название темы сделала
Администратор запретил публиковать записи гостям.

Нужна доработка скрипта ВХ Асе 10 года 7 мес. назад #64691

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • Организатор конкурсовВетеранПроект месяца 1 местоПисатель 3 место1 место в ГотвПрограммист RubyПроект месяца 2 местоУчитель3 место
Воспользуйся тегом ["code type=ruby"]для вставки скрипта[/"code] (без кавычек). Очень неудобно читать))
Последнее редактирование: 10 года 7 мес. назад от DeadElf79.
Администратор запретил публиковать записи гостям.

Нужна доработка скрипта ВХ Асе 10 года 7 мес. назад #64694

  • Shedi
  • Shedi аватар
  • Вне сайта
  • Оседлый
  • Сообщений: 47
  • Спасибо получено: 3
исправил.
Администратор запретил публиковать записи гостям.

Нужна доработка скрипта ВХ Асе 10 года 7 мес. назад #64696

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • Организатор конкурсовВетеранПроект месяца 1 местоПисатель 3 место1 место в ГотвПрограммист RubyПроект месяца 2 местоУчитель3 место
Удали кавычки))
Ладно, почитаю, где-то я это уже видел.
Администратор запретил публиковать записи гостям.

Нужна доработка скрипта ВХ Асе 10 года 7 мес. назад #64697

  • Shedi
  • Shedi аватар
  • Вне сайта
  • Оседлый
  • Сообщений: 47
  • Спасибо получено: 3
Почитай. рад буду если сможешь помочь.
Администратор запретил публиковать записи гостям.

Нужна доработка скрипта ВХ Асе 10 года 7 мес. назад #64706

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • Организатор конкурсовВетеранПроект месяца 1 местоПисатель 3 место1 место в ГотвПрограммист RubyПроект месяца 2 местоУчитель3 место
Не стал излишне дополнять этот скрипт, так что сделал отдельный аддон. Сейчас кое-что допишу, потестируешь - скажешь, работает ли.
Администратор запретил публиковать записи гостям.

Нужна доработка скрипта ВХ Асе 10 года 7 мес. назад #64707

  • Shedi
  • Shedi аватар
  • Вне сайта
  • Оседлый
  • Сообщений: 47
  • Спасибо получено: 3
Давай самое главное чтоб стрелка двигалась за градиентом жизни врагов и при использование массовой магии
размножалась как и градиент на всех врагов. а то другие стрелки при использование этого скрипта при масовой магии только на одном враге появляются(
Администратор запретил публиковать записи гостям.

Нужна доработка скрипта ВХ Асе 10 года 7 мес. назад #64708

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • Организатор конкурсовВетеранПроект месяца 1 местоПисатель 3 место1 место в ГотвПрограммист RubyПроект месяца 2 местоУчитель3 место
оу, вот это не гарантирую.
Администратор запретил публиковать записи гостям.

Нужна доработка скрипта ВХ Асе 10 года 7 мес. назад #64709

  • Shedi
  • Shedi аватар
  • Вне сайта
  • Оседлый
  • Сообщений: 47
  • Спасибо получено: 3
Как так??
Администратор запретил публиковать записи гостям.

Нужна доработка скрипта ВХ Асе 10 года 7 мес. назад #64710

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • Организатор конкурсовВетеранПроект месяца 1 местоПисатель 3 место1 место в ГотвПрограммист RubyПроект месяца 2 местоУчитель3 место
Так, сделал по аналогии с оригинальным скриптом. Вставляй как отдельный скрипт:
#==============================================================================
# 
# ▼ Yanfly Engine Ace - Battle Engine Add-On: Enemy Pointer v1.0
# -- Author: DeadElf79
# -- Last Updated: 2013.09.20
# -- Level: Easy, Normal
# -- Requires: YEA - Ace Battle Engine v1.00+.
# 
#==============================================================================
 
$imported = {} if $imported.nil?
$imported["YEA-EnemyPointer"] = true
 
#==============================================================================
# ▼ Updates
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 2013.09.20 - Release
# 
#==============================================================================
# ▼ Introduction
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script shows pointer over enemy
#
#==============================================================================
# ▼ Instructions
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# To install this script, open up your script editor and copy/paste this script
# to an open slot below ▼ Materials/素材 but above ▼ Main. Remember to save.
# 
# -----------------------------------------------------------------------------
# Enemy Notetags - These notetags go in the enemy notebox in the database.
# -----------------------------------------------------------------------------
# <pointer: x>, <pointer: y>
#	Position for pointer image relatively Battler's center 
#
#==============================================================================
# ▼ Compatibility
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
# it will run with RPG Maker VX without adjusting.
# 
# This script requires Yanfly Engine Ace - Ace Battle Engine v1.00+ and the
# script must be placed under Ace Battle Engine in the script listing.
# 
#==============================================================================
 
module YEA
  module BATTLE
 
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # - Enemy Pointer -
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # You can choose image for pointer
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    ENEMY_POINTER_IMAGE="Data/Pictures/Pointer"
	DEF_ENEMY_POINTER_X=0
	DEF_ENEMY_POINTER_Y=+30
 
  end # BATTLE
end # YEA
 
#==============================================================================
# ▼ Editting anything past this point may potentially result in causing
# computer damage, incontinence, explosion of user's head, coma, death, and/or
# halitosis so edit at your own risk.
#==============================================================================
 
if $imported["YEA-BattleEngine"]
 
module YEA
  module REGEXP
  module ENEMY
 
    ENEMY_POINTER_X =/<(?:pointer_x|POINTER_X):[ ]*(\d+)>/i
    ENEMY_POINTER_Y =/<(?:pointer_y|POINTER_Y):[ ]*(\d+)>/i
 
  end # ENEMY
  end # REGEXP
end # YEA
 
#==============================================================================
# ■ DataManager
#==============================================================================
 
module DataManager
 
  #--------------------------------------------------------------------------
  # alias method: load_database
  #--------------------------------------------------------------------------
  class <<self; alias load_database_epoin load_database; end
  def self.load_database
    load_database_epoin
    load_notetags_epoin
  end
 
  #--------------------------------------------------------------------------
  # new method: load_notetags_epoin
  #--------------------------------------------------------------------------
  def self.load_notetags_epoin
    groups = [$data_enemies]
    for group in groups
      for obj in group
        next if obj.nil?
        obj.load_notetags_epoin
      end
    end
  end
 
end # DataManager
 
#==============================================================================
# ■ RPG::Enemy
#==============================================================================
 
class RPG::Enemy < RPG::BaseItem
 
  #--------------------------------------------------------------------------
  # public instance variables татьяна 89853184215 - спец. по подбору персонала
  #--------------------------------------------------------------------------
  attr_accessor :pointer_x
  attr_accessor :pointer_y
 
  #--------------------------------------------------------------------------
  # common cache: load_notetags_ehpb
  #--------------------------------------------------------------------------
  def load_notetags_epoin
    @pointer_x = YEA::BATTLE::DEF_ENEMY_POINTER_X
	@pointer_y = YEA::BATTLE::DEF_ENEMY_POINTER_Y
    #---
    self.note.split(/[\r\n]+/).each { |line|
      case line
      #---
      when YEA::REGEXP::ENEMY::ENEMY_POINTER_X
        @pointer_x = [$1.to_i, 320].min
      when YEA::REGEXP::ENEMY::ENEMY_POINTER_Y
        @pointer_y = [$1.to_i, 240].min
      end
    } # self.note.split
    #---
  end
 
end # RPG::Enemy
 
#==============================================================================
# ■ Sprite_Battler
#==============================================================================
 
class Sprite_Battler < Sprite_Base
 
  #--------------------------------------------------------------------------
  # alias method: initialize
  #--------------------------------------------------------------------------
  alias sprite_battler_initialize_epoin initialize
  def initialize(viewport, battler = nil)
    sprite_battler_initialize_epoin(viewport, battler)
    create_enemy_pointer
  end
 
  #--------------------------------------------------------------------------
  # alias method: dispose
  #--------------------------------------------------------------------------
  alias sprite_battler_dispose_epoin dispose
  def dispose
    sprite_battler_dispose_epoin
    dispose_enemy_pointer
  end
 
  #--------------------------------------------------------------------------
  # alias method: update
  #--------------------------------------------------------------------------
  alias sprite_battler_update_epoin update
  def update
    sprite_battler_update_epoin
    update_enemy_pointer
  end
 
  #--------------------------------------------------------------------------
  # new method: create_enemy_pointer
  #--------------------------------------------------------------------------
  def create_enemy_pointer
    return if @battler.nil?
    return if @battler.actor?
    @enemy_pointer=Pointer_Viewport.new(@battler, self, :back)
  end
 
  #--------------------------------------------------------------------------
  # new method: dispose_enemy_pointer
  #--------------------------------------------------------------------------
  def dispose_enemy_pointer
	@enemy_pointer.dispose unless @enemy_pointer.nil?
  end
 
  #--------------------------------------------------------------------------
  # new method: update_enemy_pointer
  #--------------------------------------------------------------------------
  def update_enemy_pointer
    unless @enemy_pointer.nil?
		@enemy_pointer.update unless @enemy_pointer.nil?
	end
  end
 
end # Sprite_Battler
 
#==============================================================================
# ■ Pointer_Viewport
#==============================================================================
 
class Pointer_Viewport
	#
	# initialize
	#
	def initialize(battler, sprite, type)
		@battler = battler
		@base_sprite = sprite
		@type = type
		@enemy_pointer=Sprite.new
		@enemy_pointer.bitmap=Bitmap.new(YEA::BATTLE::ENEMY_POINTER_IMAGE)
		@enemy_pointer.z=126 #over gauges
	end
	#
	# update
	#
	def update
		dx = @battler.screen_x - @start_width / 2
		dy = @battler.screen_y
		@enemy_pointer.x = dx + @battler.pointer_x
		@enemy_pointer.y = dy + @battler.pointer_y
	end
	#
	# dispose
	#
	def dispose
		@enemy_pointer.bitmap.dispose unless @enemy_pointer.bitmap.nil?
		@enemy_pointer.dispose unless @enemy_pointer.nil?
	end
end# Pointer_Viewport
 
end # $imported["YEA-BattleEngine"]
 
#==============================================================================
# 
# ▼ End of File
# 
#==============================================================================

Протестировать, к сожалению, не могу. Если будут ошибки - приложи скриншот, я исправлю))
Чуть не забыл - тебе потребуется картинка с именем Pointer в папке Graphics/Pictures. Ее приложи сам какую-нибудь))
Последнее редактирование: 10 года 7 мес. назад от DeadElf79.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Amphilohiy

Нужна доработка скрипта ВХ Асе 10 года 7 мес. назад #64711

  • Shedi
  • Shedi аватар
  • Вне сайта
  • Оседлый
  • Сообщений: 47
  • Спасибо получено: 3
выдает ошибку
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]
Администратор запретил публиковать записи гостям.

Нужна доработка скрипта ВХ Асе 10 года 7 мес. назад #64712

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • Организатор конкурсовВетеранПроект месяца 1 местоПисатель 3 место1 место в ГотвПрограммист RubyПроект месяца 2 местоУчитель3 место
Пофиксил. вот код:
#==============================================================================
# 
# ▼ Yanfly Engine Ace - Battle Engine Add-On: Enemy Pointer v1.0
# -- Author: DeadElf79
# -- Last Updated: 2013.09.20
# -- Level: Easy, Normal
# -- Requires: YEA - Ace Battle Engine v1.00+.
# 
#==============================================================================
 
$imported = {} if $imported.nil?
$imported["YEA-EnemyPointer"] = true
 
#==============================================================================
# ▼ Updates
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 2013.09.20 - Release
# 
#==============================================================================
# ▼ Introduction
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script shows pointer over enemy
#
#==============================================================================
# ▼ Instructions
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# To install this script, open up your script editor and copy/paste this script
# to an open slot below ▼ Materials/素材 but above ▼ Main. Remember to save.
# 
# -----------------------------------------------------------------------------
# Enemy Notetags - These notetags go in the enemy notebox in the database.
# -----------------------------------------------------------------------------
# <pointer: x>, <pointer: y>
#	Position for pointer image relatively Battler's center 
#
#==============================================================================
# ▼ Compatibility
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
# it will run with RPG Maker VX without adjusting.
# 
# This script requires Yanfly Engine Ace - Ace Battle Engine v1.00+ and the
# script must be placed under Ace Battle Engine in the script listing.
# 
#==============================================================================
 
module YEA
  module BATTLE
 
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # - Enemy Pointer -
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # You can choose image for pointer
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    ENEMY_POINTER_IMAGE="Data/Pictures/Pointer"
	DEF_ENEMY_POINTER_X=0
	DEF_ENEMY_POINTER_Y=+30
 
  end # BATTLE
end # YEA
 
#==============================================================================
# ▼ Editting anything past this point may potentially result in causing
# computer damage, incontinence, explosion of user's head, coma, death, and/or
# halitosis so edit at your own risk.
#==============================================================================
 
if $imported["YEA-BattleEngine"]
 
module YEA
  module REGEXP
  module ENEMY
 
    ENEMY_POINTER_X =/<(?:pointer_x|POINTER_X):[ ]*(\d+)>/i
    ENEMY_POINTER_Y =/<(?:pointer_y|POINTER_Y):[ ]*(\d+)>/i
 
  end # ENEMY
  end # REGEXP
end # YEA
 
#==============================================================================
# ■ DataManager
#==============================================================================
 
module DataManager
 
  #--------------------------------------------------------------------------
  # alias method: load_database
  #--------------------------------------------------------------------------
  class <<self; alias load_database_epoin load_database; end
  def self.load_database
    load_database_epoin
    load_notetags_epoin
  end
 
  #--------------------------------------------------------------------------
  # new method: load_notetags_epoin
  #--------------------------------------------------------------------------
  def self.load_notetags_epoin
    groups = [$data_enemies]
    for group in groups
      for obj in group
        next if obj.nil?
        obj.load_notetags_epoin
      end
    end
  end
 
end # DataManager
 
#==============================================================================
# ■ RPG::Enemy
#==============================================================================
 
class RPG::Enemy < RPG::BaseItem
 
  #--------------------------------------------------------------------------
  # public instance variables татьяна 89853184215 - спец. по подбору персонала
  #--------------------------------------------------------------------------
  attr_accessor :pointer_x
  attr_accessor :pointer_y
 
  #--------------------------------------------------------------------------
  # common cache: load_notetags_ehpb
  #--------------------------------------------------------------------------
  def load_notetags_epoin
    @pointer_x = YEA::BATTLE::DEF_ENEMY_POINTER_X
	@pointer_y = YEA::BATTLE::DEF_ENEMY_POINTER_Y
    #---
    self.note.split(/[\r\n]+/).each { |line|
      case line
      #---
      when YEA::REGEXP::ENEMY::ENEMY_POINTER_X
        @pointer_x = [$1.to_i, 320].min
      when YEA::REGEXP::ENEMY::ENEMY_POINTER_Y
        @pointer_y = [$1.to_i, 240].min
      end
    } # self.note.split
    #---
  end
 
end # RPG::Enemy
 
#==============================================================================
# ■ Sprite_Battler
#==============================================================================
 
class Sprite_Battler < Sprite_Base
 
  #--------------------------------------------------------------------------
  # alias method: initialize
  #--------------------------------------------------------------------------
  alias sprite_battler_initialize_epoin initialize
  def initialize(viewport, battler = nil)
    sprite_battler_initialize_epoin(viewport, battler)
    create_enemy_pointer
  end
 
  #--------------------------------------------------------------------------
  # alias method: dispose
  #--------------------------------------------------------------------------
  alias sprite_battler_dispose_epoin dispose
  def dispose
    sprite_battler_dispose_epoin
    dispose_enemy_pointer
  end
 
  #--------------------------------------------------------------------------
  # alias method: update
  #--------------------------------------------------------------------------
  alias sprite_battler_update_epoin update
  def update
    sprite_battler_update_epoin
    update_enemy_pointer
  end
 
  #--------------------------------------------------------------------------
  # new method: create_enemy_pointer
  #--------------------------------------------------------------------------
  def create_enemy_pointer
    return if @battler.nil?
    return if @battler.actor?
    @enemy_pointer=Pointer_Viewport.new(@battler, self, :back)
  end
 
  #--------------------------------------------------------------------------
  # new method: dispose_enemy_pointer
  #--------------------------------------------------------------------------
  def dispose_enemy_pointer
	@enemy_pointer.dispose unless @enemy_pointer.nil?
  end
 
  #--------------------------------------------------------------------------
  # new method: update_enemy_pointer
  #--------------------------------------------------------------------------
  def update_enemy_pointer
    unless @enemy_pointer.nil?
		@enemy_pointer.update unless @enemy_pointer.nil?
	end
  end
 
end # Sprite_Battler
 
#==============================================================================
# ■ Pointer_Viewport
#==============================================================================
 
class Pointer_Viewport
	#
	# initialize
	#
	def initialize(battler, sprite, type)
		@battler = battler
		@base_sprite = sprite
		@type = type
		@enemy_pointer=Sprite.new
		@enemy_pointer.bitmap=Bitmap.new(YEA::BATTLE::ENEMY_POINTER_IMAGE)
		@enemy_pointer.z=126 #over gauges
	end
	#
	# update
	#
	def update
		dx = @battler.screen_x - @enemy_pointer.width / 2
		dy = @battler.screen_y
		@enemy_pointer.x = dx + @battler.pointer_x
		@enemy_pointer.y = dy + @battler.pointer_y
	end
	#
	# dispose
	#
	def dispose
		@enemy_pointer.bitmap.dispose unless @enemy_pointer.bitmap.nil?
		@enemy_pointer.dispose unless @enemy_pointer.nil?
	end
end# Pointer_Viewport
 
end # $imported["YEA-BattleEngine"]
 
#==============================================================================
# 
# ▼ End of File
# 
#==============================================================================
Администратор запретил публиковать записи гостям.

Нужна доработка скрипта ВХ Асе 10 года 7 мес. назад #64713

  • Shedi
  • Shedi аватар
  • Вне сайта
  • Оседлый
  • Сообщений: 47
  • Спасибо получено: 3
скрин ставить не буду но пишет ошибку в строке 226
с pointer.x
Администратор запретил публиковать записи гостям.

Нужна доработка скрипта ВХ Асе 10 года 7 мес. назад #64714

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • Организатор конкурсовВетеранПроект месяца 1 местоПисатель 3 место1 место в ГотвПрограммист RubyПроект месяца 2 местоУчитель3 место
Ты хоть напиши, что за ошибку он пишет, я не могу протестировать у себя, а вслепую угадывать - так эта тема еще на несколько страниц разойдется)
Администратор запретил публиковать записи гостям.

Нужна доработка скрипта ВХ Асе 10 года 7 мес. назад #64716

  • Shedi
  • Shedi аватар
  • Вне сайта
  • Оседлый
  • Сообщений: 47
  • Спасибо получено: 3
вот ошибка
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]
Администратор запретил публиковать записи гостям.

Нужна доработка скрипта ВХ Асе 10 года 7 мес. назад #64717

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • Организатор конкурсовВетеранПроект месяца 1 местоПисатель 3 место1 место в ГотвПрограммист RubyПроект месяца 2 местоУчитель3 место
Попробуй в этой и следующей строке заменить слово @battler на @base_sprite. Если и это не избавит от ошибки с pointer_x, то я даже и не знаю, что можно сделать, придется как освобожусь включать мейкер и тестировать на нем самостоятельно.
Администратор запретил публиковать записи гостям.

Нужна доработка скрипта ВХ Асе 10 года 7 мес. назад #64719

  • Shedi
  • Shedi аватар
  • Вне сайта
  • Оседлый
  • Сообщений: 47
  • Спасибо получено: 3
увы не работает(
Администратор запретил публиковать записи гостям.

Нужна доработка скрипта ВХ Асе 10 года 7 мес. назад #64720

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • Организатор конкурсовВетеранПроект месяца 1 местоПисатель 3 место1 место в ГотвПрограммист RubyПроект месяца 2 местоУчитель3 место
Ладно, значит, позже вечером я все потестирую у себя.
Администратор запретил публиковать записи гостям.

Нужна доработка Ace Battle Engine 10 года 7 мес. назад #64784

  • Amphilohiy
  • Amphilohiy аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 547
  • Спасибо получено: 666
  • Победитель Сбитой кодировкиОраторПрограммист RubyУчитель2 место Готв
Я ленивее Эльфа, так что просто поизгалялся над готовым классом. Вставлять как отдельный скрипт, но ниже градиентного аддона, хоть туда в конец припихать.
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]

Курсор пихать в Graphics/system/select_arrow.png, могу одолжить свой
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]

Размеры под батлера не подгоняются, оффсет по y настраивается в ручную, думаю найдешь где :)
Я верю, что иногда компьютер сбоит, и он выдает неожиданные результаты, но остальные 100% случаев это чья-то криворукость.
Последнее редактирование: 10 года 7 мес. назад от Amphilohiy.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: DeadElf79, Shedi

Нужна доработка Ace Battle Engine 10 года 7 мес. назад #64787

  • Shedi
  • Shedi аватар
  • Вне сайта
  • Оседлый
  • Сообщений: 47
  • Спасибо получено: 3
Благодарен! без мерно!)) тему можно закрывать!
Администратор запретил публиковать записи гостям.
  • Страница:
  • 1
  • 2
Модераторы: NeKotZima
Время создания страницы: 0.338 секунд