Страница 105 из 147 ПерваяПервая ... 55595103104105106107115 ... ПоследняяПоследняя
Показано с 1,041 по 1,050 из 1470

Тема: Помощь с скриптами (RGSS)

  1. #1041
    Маститый Аватар для Antberg
    Информация о пользователе
    Регистрация
    14.04.2008
    Сообщений
    1,348
    Записей в дневнике
    3
    Репутация: 52 Добавить или отнять репутацию

    По умолчанию

    Тогда ещё вопрос. Как бы сделать так, чтобы чарсет отображался как одна большая картинка с одним фрэймом анимации? Помнится, кто-то такое делал в своё время. По принципу - если в начале файла выставлен такой-то тег (по аналогии с "!$" в названии одинарных больших чаров), то чарсет будет считываться сразу целиком.

  2. #1042
    Супер-модератор Аватар для dirge
    Информация о пользователе
    Регистрация
    25.02.2013
    Сообщений
    924
    Репутация: 79 Добавить или отнять репутацию

    По умолчанию

    Цитата Сообщение от Antberg Посмотреть сообщение
    Нашёл, в чём проблема. Этот глюк появляется, если использовать скрипт разрешения 1024х768. При меньшем разрешении (стандартное эйсовское, либо 640х480) проблем не возникает. Что бы такое тут сделать?
    Попробуй вот это
    Код:
    #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
    #  ▼ Plane
    #  Author: Kread-EX
    #  Version 1.01
    #  Release date: 08/01/2013
    #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
    
    #------------------------------------------------------------------------------
    #  ▼ UPDATES
    #------------------------------------------------------------------------------
    # #  11/04/2013. Added compatibility with Yanfly's Parallax Lock.
    #------------------------------------------------------------------------------
    #  ▼ TERMS OF USAGE
    #------------------------------------------------------------------------------
    # #  You are free to adapt this work to suit your needs.
    # #  You can use this work for commercial purposes if you like it.
    # #
    # # For support:
    # # grimoirecastle.wordpress.com
    # # rpgmakerweb.com
    #------------------------------------------------------------------------------
    #  ▼ INTRODUCTION
    #------------------------------------------------------------------------------
    # # Rewrite the Plane class to work with Esrever's hacked DLL. Plug-and-play.
    #------------------------------------------------------------------------------
    
    #==============================================================================
    # ■ Plane
    #==============================================================================
    
    class Plane
      #--------------------------------------------------------------------------
      # ● Object initialize
      #--------------------------------------------------------------------------
      def initialize(view = nil)
        @viewport = view
        @sprite = Sprite.new(@viewport)
      end
      #--------------------------------------------------------------------------
      # ● Free
      #--------------------------------------------------------------------------
      def dispose
        @sprite.dispose
      end
      #--------------------------------------------------------------------------
      # ● Get freed
      #--------------------------------------------------------------------------
      def disposed?
        @sprite.disposed?
      end
      #--------------------------------------------------------------------------
      # ● Get visible
      #--------------------------------------------------------------------------
      def visible
        @sprite.visible
      end
      #--------------------------------------------------------------------------
      # ● Set visible
      #--------------------------------------------------------------------------
      def visible=(value)
        @sprite.visible = value
      end
      #--------------------------------------------------------------------------
      # ● Get zoom x
      #--------------------------------------------------------------------------
      def zoom_x
        @sprite.zoom_x
      end
      #--------------------------------------------------------------------------
      # ● Set zoom x
      #--------------------------------------------------------------------------
      def zoom_x=(value)
        @sprite.zoom_x = value
      end
      #--------------------------------------------------------------------------
      # ● Get zoom y
      #--------------------------------------------------------------------------
      def zoom_y
        @sprite.zoom_y
      end
      #--------------------------------------------------------------------------
      # ● Set zoom y
      #--------------------------------------------------------------------------
      def zoom_y=(value)
        @sprite.zoom_y = value
      end
      #--------------------------------------------------------------------------
      # ● Get opacity
      #--------------------------------------------------------------------------
      def opacity
        @sprite.opacity
      end
      #--------------------------------------------------------------------------
      # ● Set opacity
      #--------------------------------------------------------------------------
      def opacity=(value)
        @sprite.opacity = value
      end
      #--------------------------------------------------------------------------
      # ● Get blend type
      #--------------------------------------------------------------------------
      def blend_type
        @sprite.blend_type
      end
      #--------------------------------------------------------------------------
      # ● Set blend type
      #--------------------------------------------------------------------------
      def blend_type=(value)
        @sprite.blend_type = value
      end
      #--------------------------------------------------------------------------
      # ● Get color
      #--------------------------------------------------------------------------
      def color
        @sprite.color
      end
      #--------------------------------------------------------------------------
      # ● Set color
      #--------------------------------------------------------------------------
      def color=(value)
        @sprite.color = value
      end
      #--------------------------------------------------------------------------
      # ● Get tone
      #--------------------------------------------------------------------------
      def tone
        @sprite.tone
      end
      #--------------------------------------------------------------------------
      # ● Set tone
      #--------------------------------------------------------------------------
      def tone=(value)
        @sprite.tone = value
      end
      #--------------------------------------------------------------------------
      # ● Frame update
      #--------------------------------------------------------------------------
      def update
        @sprite.update
      end
      #--------------------------------------------------------------------------
      # ● Get viewport
      #--------------------------------------------------------------------------
      def viewport
        @viewport
      end
      #--------------------------------------------------------------------------
      # ● Set viewport
      #--------------------------------------------------------------------------
      def viewport=(value)
        @viewport = value
        @sprite.viewport = viewport
      end
      #--------------------------------------------------------------------------
      # ● Get bitmap
      #--------------------------------------------------------------------------
      def bitmap
        @sprite.bitmap
      end
      #--------------------------------------------------------------------------
      # ● Set bitmap
      #--------------------------------------------------------------------------
      def bitmap=(value)
        if value.nil?
          @sprite.bitmap = value
          return
        end
        bw = @viewport ? @viewport.rect.width : Graphics.width
        bh = @viewport ? @viewport.rect.height : Graphics.height
        if SceneManager.scene.is_a?(Scene_Map) && $game_map.parallax_tile_lock?
          bw = $game_map.width * 32
          bh = $game_map.height * 32
        end
        rw = bw.fdiv(value.width).ceil
        rh = bh.fdiv(value.height).ceil
        new_bmp = Bitmap.new(bw, bh)
        0.upto(rw).each do |x|
          0.upto(rh).each do |y|
            new_bmp.blt(x * value.width, y * value.height, value, value.rect)
          end
        end
        @sprite.bitmap = new_bmp
      end
      #--------------------------------------------------------------------------
      # ● Get ox
      #--------------------------------------------------------------------------
      def ox
        @sprite.ox
      end
      #--------------------------------------------------------------------------
      # ● Set ox
      #--------------------------------------------------------------------------
      def ox=(nox)
        @sprite.ox = nox
      end
      #--------------------------------------------------------------------------
      # ● Get oy
      #--------------------------------------------------------------------------
      def oy
        @sprite.oy
      end
      #--------------------------------------------------------------------------
      # ● Set oy
      #--------------------------------------------------------------------------
      def oy=(noy)
        @sprite.oy = noy
      end
      #--------------------------------------------------------------------------
      # ● Get z
      #--------------------------------------------------------------------------
      def z
        @sprite.z
      end
      #--------------------------------------------------------------------------
      # ● Set z
      #--------------------------------------------------------------------------
      def z=(z)
        @sprite.z = z
      end
    end
    Хоть он и предназначен для другого, и добавление его похоже на извращение) Но он вроде как фиксит твою проблему, но я не берусь гарантировать, что не будет каких-то других.
    Выставь скрипты в порядке:
    1. Unlimited Resolution
    2. Plane от Kread-EX
    3. Parallax Lock

  3. #1043
    Маститый Аватар для Antberg
    Информация о пользователе
    Регистрация
    14.04.2008
    Сообщений
    1,348
    Записей в дневнике
    3
    Репутация: 52 Добавить или отнять репутацию

    По умолчанию

    О, отлично! С этим скриптом всё работает! Эх, теперь бы с камерой разобраться. А то она только карты и эвенты поддерживает при изменении масштаба.

  4. #1044
    Создатель Аватар для Рольф
    Информация о пользователе
    Регистрация
    14.04.2008
    Адрес
    Южно- Сахалинск/Пенза
    Сообщений
    10,081
    Записей в дневнике
    2
    Репутация: 108 Добавить или отнять репутацию

    По умолчанию

    Вот тема, помощи, а я на ту подумал. Хотя в той тоже помощь, кроме спрашивания скриптов была.
    http://rpgmaker.su/f26/%D0%BF%D0%BE%...0%B0%D0%BC-61/
    Теперь думаю что с ними делать.

  5. #1045
    Администратор Аватар для Пётр
    Информация о пользователе
    Регистрация
    24.04.2014
    Адрес
    Краснодар
    Сообщений
    3,940
    Записей в дневнике
    6
    Репутация: 132 Добавить или отнять репутацию

    По умолчанию

    Цитата Сообщение от Рольф Посмотреть сообщение
    Вот тема, помощи, а я на ту подумал. Хотя в той тоже помощь, кроме спрашивания скриптов была.
    http://rpgmaker.su/f26/%D0%BF%D0%BE%...0%B0%D0%BC-61/
    Теперь думаю что с ними делать.
    Да закрой их все! Ненавижу такие мусорные ящики. Вспомнишь, что где-то видел подсказку, хрен найдешь где.
    Нужен раздел "Проблемы со скриптом".
    И правила: Скрипт ----->Описание проблемы.
    Так хоть повторяющихся вопросов будет меньше. И найти что-то будет проще.
    Спойлер Хм...:
    Мое мнение не эталон.

  6. #1046
    Создатель Аватар для Рольф
    Информация о пользователе
    Регистрация
    14.04.2008
    Адрес
    Южно- Сахалинск/Пенза
    Сообщений
    10,081
    Записей в дневнике
    2
    Репутация: 108 Добавить или отнять репутацию

    По умолчанию

    Ну пока я эту тему перенес в раздел скрипты, а ту тему назад переименовал. Теперь две темы поиск и проблемы.
    Насчет повторяющий вопросов, сейчас идет работа и не только с разделом скриптов, но и с вопросами. Будет так все вопросы и решения в первом сообщении.

  7. #1047

    По умолчанию

    Вопрос такой появился: мне нужно сделать стек сообщений. Пока что есть скрипт отображения одного окна с сообщением на карте игры. Но хочу сделать, чтобы при вызове скрипта, сообщение добавлялось в очередь сообщений (максимум N на экране). Пример: отображается 1 окно с сообщением, вызываю через скрипт (добавляю еще одно сообщение), 1 сообщение скользит по экрану вниз, второе сообщение появляется сверху него и т. д.

  8. #1048
    Познающий Аватар для DeadElf79
    Информация о пользователе
    Регистрация
    09.08.2013
    Сообщений
    276
    Записей в дневнике
    12
    Репутация: 22 Добавить или отнять репутацию

    По умолчанию

    Делай через массив же. Почитай документацию официальную по руби, там в классе Array есть методы push и pop, как у стеков ^_^ Это сам стек, окошки ты и сам умеешь писать ^_^
    Пример:
    Код:
    arr=[]
    arr.push(1)
    arr<<[2]# работает аналогично
    arr.pop(1)# удаляет по индексу (не уверен, уточни в док-ах)
    Отображение максимума тем же массивом:
    Код:
    arr=[10,20,30,40,50]
    minvalue=2
    maxvalue=4
    (minvalue..maxvalue).each{|index|
       print arr[index] # к примеру
    }
    Последний раз редактировалось DeadElf79; 03.02.2015 в 10:55.

  9. #1049

    По умолчанию

    Не, как сам стек сделать - понятно) Проблема в отображении на экране всего этого. Окно сообщения может быть в 3 позициях (сверху, центр, внизу). Допустим сверху есть окно, потом добавляю еще одно. Второе должно плавно уйти вниз на высоту окна, а второе спокойно появляется выше. Ну, а, если первое по центру, то второе просто отображается сверху скажем. С этим проблем нет. Проблема со скольжением... Не правильно выразился в том сообщении. Стек подразумевал, как появление сообщения под сообщением

  10. #1050

    По умолчанию

    Добрый день, испытываю небольшую проблему с неработой одного скрипта по выбору целей, а точнее
    Спойлер Scope Change:
    =begin
    #================================================= =============================
    ** Scope Change
    Author: Hime
    Date: Sep 29, 2012
    ------------------------------------------------------------------------------
    ** Change log
    Sep 29
    - Scope changing bug fixed. Now requires Tsuki Action
    Aug 18
    - initial release
    ------------------------------------------------------------------------------
    ** Terms of Use
    * Free to use in non-commercial projects
    * Contact me for commercial use
    * No real support. The script is provided as-is
    * Will do bug fixes, but no compatibility patches
    * Features may be requested but no guarantees, especially if it is non-trivial
    * Preserve this header
    ------------------------------------------------------------------------------
    ** Required
    -Tsuki Action (http://www.rpgmakervxace.net/topic/7312-tsuki-action)
    ------------------------------------------------------------------------------
    This script allows to you change the scope of your skills by pressing a
    key.

    It allows you to switch between "all" and "single", as well as switching
    between "ally" and "enemy".

    By default, skills or items cannot change scopes.
    To allow a skill/item to toggle scopes, tag it with

    <toggle scope>
    <invert scope>

    Then press the toggle key (Q) or invert key (W) during battle or
    in the item scene to change it.
    #================================================= =============================
    =end
    $imported = {} if $imported.nil?
    $imported["Tsuki_ScopeChange"] = true
    #================================================= =============================
    # ** Configuration
    #================================================= =============================
    module Tsuki
    module Scope_Change

    # toggles between "one" and "all"
    Toggle_Key = :L
    Invert_Key = :R

    #================================================= =============================
    # ** Rest of the script
    #================================================= =============================
    # one <--> all
    Toggle_Map = {
    1 => 2,
    2 => 1,
    7 => 8,
    8 => 7,
    9 => 10,
    10 => 9
    }

    # enemy <--> ally
    Invert_Map = {
    1 => 7,
    2 => 8,
    7 => 1,
    8 => 2
    }

    Can_Toggle_Regex = /<toggle_scope|toggle scope>/i
    Can_Invert_Regex = /<invert_scope|invert scope>/i
    end
    end


    module RPG
    class UsableItem

    def can_toggle_scope?
    return @can_toggle unless @can_toggle.nil?
    return @can_toggle = load_notetags_scope_toggle
    end

    def can_invert_scope?
    return @can_invert unless @can_invert.nil?
    return @can_invert = load_notetags_scope_invert
    end

    def load_notetags_scope_toggle
    return !Tsuki::Scope_Change::Can_Toggle_Regex.match(self. note).nil?
    end

    def load_notetags_scope_invert
    return !Tsuki::Scope_Change::Can_Invert_Regex.match(self. note).nil?
    end

    def need_selection?
    [1, 2, 7, 8, 9, 10].include?(@scope)
    end

    def toggle_scope
    @scope = Tsuki::Scope_Change::Toggle_Map[@scope]
    end

    def invert_scope
    @scope = Tsuki::Scope_Change::Invert_Map[@scope]
    end
    end
    end


    class Game_ActionScope
    # duplicating these here since these are within the scope of the action

    def need_selection?
    [1, 2, 7, 8, 9, 10].include?(@scope)
    end

    # "one" or "all"
    def toggle_scope
    if Tsuki::Scope_Change::Toggle_Map.include?(@scope)
    @scope = Tsuki::Scope_Change::Toggle_Map[@scope]
    end
    end

    # "ally" or "enemy"
    def invert_scope
    if Tsuki::Scope_Change::Invert_Map.include?(@scope)
    @scope = Tsuki::Scope_Change::Invert_Map[@scope]
    end
    end
    end

    #-------------------------------------------------------------------------------
    # * Menu related scene/windows
    #-------------------------------------------------------------------------------

    class Window_MenuActor < Window_MenuStatus
    def process_handling
    return unless open? && active
    return process_scope_toggle if Input.trigger?(Tsuki::Scope_Change::Toggle_Key) && handle?(:toggle)
    return super
    end

    def process_scope_toggle
    Sound.play_cursor
    Input.update
    deactivate
    call_handler(:toggle)
    end
    end

    class Scene_ItemBase < Scene_MenuBase

    alias :th_scope_change_actor_window :create_actor_window
    def create_actor_window
    th_scope_change_actor_window
    @actor_window.set_handler(:toggle, method(:toggle_scope))
    end

    def toggle_scope
    if item && item.can_toggle_scope?
    item.toggle_scope
    @actor_window.select_for_item(item)
    end
    @actor_window.activate
    end
    end

    #-------------------------------------------------------------------------------
    # * Battle related scene/windows
    #-------------------------------------------------------------------------------

    class Window_BattleEnemy < Window_Selectable

    def process_handling
    return unless open? && active
    return process_scope_toggle if Input.trigger?(Tsuki::Scope_Change::Toggle_Key) && handle?(:toggle)
    return process_scope_invert if Input.trigger?(Tsuki::Scope_Change::Invert_Key) && handle?(:invert)
    return super
    end

    def process_scope_toggle
    Sound.play_cursor
    Input.update
    deactivate
    call_handler(:toggle)
    end

    def process_scope_invert
    Sound.play_cursor
    Input.update
    deactivate
    call_handler(:invert)
    end
    end

    class Window_BattleActor < Window_BattleStatus

    def process_handling
    return unless open? && active
    return process_scope_toggle if Input.trigger?(Tsuki::Scope_Change::Toggle_Key) && handle?(:toggle)
    return process_scope_invert if Input.trigger?(Tsuki::Scope_Change::Invert_Key) && handle?(:invert)
    return super
    end

    def process_scope_toggle
    Sound.play_cursor
    Input.update
    deactivate
    call_handler(:toggle)
    end

    def process_scope_invert
    Sound.play_cursor
    Input.update
    deactivate
    call_handler(:invert)
    end
    end

    class Scene_Battle

    # set handler for scope changing
    alias :th_scope_change_create_actor_window :create_actor_window
    def create_actor_window
    th_scope_change_create_actor_window
    @actor_window.set_handler(:toggle, method(:toggle_actor_scope))
    @actor_window.set_handler(:invert, method(:invert_actor_scope))
    end

    alias :th_scope_change_create_enemy_window :create_enemy_window
    def create_enemy_window
    th_scope_change_create_enemy_window
    @enemy_window.set_handler(:toggle, method(:toggle_enemy_scope))
    @enemy_window.set_handler(:invert, method(:invert_enemy_scope))
    end

    # returns true if the skill/item targets all
    def select_all?
    BattleManager.actor.input.scope.for_all?
    end

    # toggle related

    def toggle_scope
    if BattleManager.actor.input.item.can_toggle_scope?
    BattleManager.actor.input.scope.toggle_scope
    end
    end

    def toggle_actor_scope
    toggle_scope
    select_actor_selection
    end

    def toggle_enemy_scope
    toggle_scope
    select_enemy_selection
    end

    def select_enemy_selection
    @enemy_window.cursor_all = select_all?
    @enemy_window.refresh
    @enemy_window.show.activate
    end

    def select_actor_selection
    @actor_window.cursor_all = select_all?
    @actor_window.refresh
    @actor_window.show.activate
    end

    # invert related
    def invert_actor_scope
    if BattleManager.actor.input.item.can_invert_scope?
    BattleManager.actor.input.scope.invert_scope
    @actor_window.hide
    select_enemy_selection
    else
    select_actor_selection
    end
    end

    def invert_enemy_scope
    if BattleManager.actor.input.item.can_invert_scope?
    BattleManager.actor.input.scope.invert_scope
    @enemy_window.hide
    select_actor_selection
    else
    select_enemy_selection
    end
    end

    def on_actor_ok
    BattleManager.actor.input.target_index = @actor_window.index
    @actor_window.hide
    @skill_window.hide
    @item_window.hide
    next_command
    end

    # You can attack yourself now in theory...
    alias :th_scope_change_actor_cancel n_actor_cancel
    def on_actor_cancel
    th_scope_change_actor_cancel
    case @actor_command_window.current_symbol
    when :attack
    @actor_command_window.activate
    end
    end
    end


    Выдает ошибку неизвестного метода 'cursor_all' for #,Window_battleEnemy_cursor:0xacacf60>
    Руби я только начал изучать, однако смог выяснить только то, что связь с скриптом от MOG
    Спойлер ADVANCED BATTLE HUD:
    #================================================= =============================
    # +++ MOG - ADVANCED BATTLE HUD (v1.6) +++
    #================================================= =============================
    # By Moghunter
    # http://www.atelier-rgss.com/
    #================================================= =============================
    # Sistema de hud avançado de batalha.
    #================================================= =============================

    #================================================= =============================
    # ● Histórico (Version History)
    #================================================= =============================
    # v 1.6 - Corrigido o erro quando o MP ou TP maximo é iguál a zero.
    # v 1.5 - Corrigido a animação da face quando uma skill tem a função charge.
    # v 1.4 - Corrigido o erro de crash randômico. (relativo a dispose de imagem.)
    # v 1.3 - Script 100% independente do sistema de AT System.
    # - Correção da posição inicial da janela de Fuga.
    # - Correção da posição do cursor nos aliados quando a face está
    # desabilitada.
    # v 1.2 - Corrigido a prioridade das condições.
    # v 1.1 - Corrigido o glitch inicial da prioridade da face.
    # v 1.0 - Primeiro lançamento.
    #================================================= =============================

    #================================================= =============================
    # ■ - FACE ANIMADAS DOS PERSONAGENS - (Opcional)
    #================================================= =============================
    # 1 - Grave as imagens das faces dos personagens na pasta.
    #
    # GRAPHICS/BATTLERS/
    #
    # 2 - Nomeie a imagem com o mesmo nome do personagem. (EG - Hertor.png)
    # 3 - A largura da imagem deverá ser dividido por 5. (A escolha do tamanho
    # da face é livre desde que a lagura dividido pela altura seja igual a 5 )
    #
    #================================================= =============================

    #================================================= =============================
    # ■ BATTLE HUD SETTING
    #================================================= =============================
    module MOG_BATTLE_HUD
    # Ativar Battlers dos personagens em faces, deixe desativado em caso de haver
    # outros scripts que usam battlers dos personagens em seu projeto.
    BATTLER_FACE_ENABLE = false
    #Definição geral da posição da HUD.
    HUD_POSITION = [5,315]
    #Definição da posição da face
    FACE_POSITION = [60,30]
    #Definição da posição do numero de HP.
    HP_NUMBER_POSITION = [85,28]
    #Definição da posição do medidor de HP.
    HP_METER_POSITION = [27,37]
    #Definição da posição do numero de MP.
    MP_NUMBER_POSITION = [101,46]
    #Definição da posição do medidor de MP.
    MP_METER_POSITION = [43,55]
    #Definição da posição do numero de TP.
    TP_NUMBER_POSITION = [85,64]
    #Definição da posição do medidor de TP.
    TP_METER_POSITION = [27,73]
    #Definição da posição das condições
    STATES_POSITION = [5,1]
    #Definição da posição do comando de batalha.
    COMMAND_POSITION = [0,-145]
    #Definição da posição do espaço da HUD entre os membros do grupo.
    MEMBERS_SPACE = [136,0]
    #Definição da prioridade da HUD.
    BATTLE_HUD_Z = 50
    #Definição da velocidade de animação dos medidores.
    METER_FLOW_SPEED = 2
    #Ativa o layout mais limpo nas janelas de item e skill.
    ITEM_SKILL_WINDOWS_CLEAN_STYLE = true
    #Definição da opacidade das janelas.
    ITEM_SKILL_WINDOW_OPACITY = 0
    end

    #================================================= =============================
    # ■ CURSOR SETTING
    #================================================= =============================
    module MOG_BATTLE_CURSOR
    #Definição da posição do cursor em relação ao alvo.
    CURSOR_POSITION = [-45, -16]
    #Definição da posição do nome do alvo.
    CURSOR_NAME_POSITION = [-10, 35]
    #Ativar efeito deslizar.
    CURSOR_SLIDE_EFFECT = true
    #Ativar animação de levitação.
    CURSOR_FLOAT_EFFECT = true
    end


    if MOG_BATTLE_HUD::BATTLER_FACE_ENABLE #BATTLER_FACE SYSTEM START
    #================================================= =============================
    # ■ Game_Actor
    #================================================= =============================
    class Game_Actor < Game_Battler

    attr_accessor :battler_face
    attr_accessor :screen_x
    attr_accessor :screen_y

    #--------------------------------------------------------------------------
    # ● Initialize
    #--------------------------------------------------------------------------
    alias mog_battle_hud_initialize setup
    def setup(actor_id)
    mog_battle_hud_initialize(actor_id)
    battler_sprite_setup
    end

    #--------------------------------------------------------------------------
    # ● Battler Sprite Setup
    #--------------------------------------------------------------------------
    def battler_sprite_setup
    @battler_face = [0,0,0]
    @battler_name = @name
    @screen_x = 0
    @screen_y = 0
    end

    #--------------------------------------------------------------------------
    # ● Use Sprite?
    #--------------------------------------------------------------------------
    def use_sprite?
    return true
    end

    #--------------------------------------------------------------------------
    # ● Screen Z
    #--------------------------------------------------------------------------
    def screen_z
    return MOG_BATTLE_HUD::BATTLE_HUD_Z + 4
    end

    #------------------------------------------------------------------------
    # ● Screen X
    #------------------------------------------------------------------------
    def screen_x
    return FACE_POSITION[0] + HUD_POSITION[0] + (MEMBERS_SPACE[0] * index)
    end

    #------------------------------------------------------------------------
    # ● Screen Y
    #------------------------------------------------------------------------
    def screen_y
    return FACE_POSITION[1] + HUD_POSITION[1] + (MEMBERS_SPACE[1] * index)
    end

    end

    #================================================= =============================
    # ■ Sprite_Battler
    #================================================= =============================
    class Sprite_Battler < Sprite_Base
    include MOG_BATTLE_HUD

    #--------------------------------------------------------------------------
    # ● Initialize
    #--------------------------------------------------------------------------
    alias mog_battle_hud_initialize initialize
    def initialize(viewport, battler = nil)
    battle_hud_setup
    mog_battle_hud_initialize(viewport, battler)
    end

    #--------------------------------------------------------------------------
    # ● Battle Hud Setup
    #--------------------------------------------------------------------------
    def battle_hud_setup
    @old_face_index = 0
    end

    #--------------------------------------------------------------------------
    # ● Dispose
    #--------------------------------------------------------------------------
    alias mog_battle_hud_dispose dispose
    def dispose
    mog_battle_hud_dispose
    if @f_im != nil
    @f_im.dispose
    end
    end

    #--------------------------------------------------------------------------
    # ● Update Bitmap
    #--------------------------------------------------------------------------
    alias mog_battle_hud_update_bitmap update_bitmap
    def update_bitmap
    if @battler.is_a?(Game_Actor)
    create_actor_battler
    update_actor_battler
    return
    end
    mog_battle_hud_update_bitmap
    end

    #--------------------------------------------------------------------------
    # ● Create Actor Battler
    #--------------------------------------------------------------------------
    def create_actor_battler
    return if self.bitmap != nil
    @f_im = Cache.battler(@battler.battler_name, 0)
    @f_cw = @f_im.width / 5
    @f_ch = @f_im.height
    self.bitmap = Bitmap.new(@f_cw,@f_ch)
    x = FACE_POSITION[0] + HUD_POSITION[0] + (MEMBERS_SPACE[0] * @battler.index)
    y = FACE_POSITION[1] + HUD_POSITION[1] + (MEMBERS_SPACE[1] * @battler.index)
    @org_pos = [x,y]
    @battler.battler_face = [0,0,0]
    @battler_visible = true
    @low_hp = @battler.mhp * 30 / 100
    self.z = @battler.screen_z + 100
    make_face(true)
    end

    #--------------------------------------------------------------------------
    # ● Face Base Setting
    #--------------------------------------------------------------------------
    def face_base_setting
    self.x = @org_pos[0]
    self.y = @org_pos[1]
    self.z = @battler.screen_z
    self.zoom_x = 1
    self.zoom_y = 1
    self.mirror = false
    end

    #--------------------------------------------------------------------------
    # ● Check Base Face
    #--------------------------------------------------------------------------
    def check_base_face(reset)
    face_base_setting
    return if @battler.battler_face[2] > 0
    @battler.battler_face = [0,0,0] if reset and @battler.battler_face[1] != 2
    @battler.battler_face[0] = 3 if @battler.hp < @low_hp
    @battler.battler_face[0] = 4 if @battler.hp == 0
    end

    #--------------------------------------------------------------------------
    # ● Make Face
    #--------------------------------------------------------------------------
    def make_face(reset = false)
    self.bitmap.clear
    check_base_face(reset)
    src_rect_back = Rect.new(@f_cw * @battler.battler_face[0], 0, @f_cw, @f_ch)
    self.bitmap.blt(0,0, @f_im, src_rect_back)
    @old_face_index = @battler.battler_face[0]
    end

    #--------------------------------------------------------------------------
    # ● Update Actor Battler
    #--------------------------------------------------------------------------
    def update_actor_battler
    return if self.bitmap == nil
    update_face_effect
    update_face_reset_time
    update_face_z
    make_face if @old_face_index != @battler.battler_face[0]
    end

    #--------------------------------------------------------------------------
    # ● Update Face Z
    #--------------------------------------------------------------------------
    def update_face_z
    self.z = @battler.screen_z + BATTLE_HUD_Z rescue 100
    end

    #--------------------------------------------------------------------------
    # ● Update Face Reset Time
    #--------------------------------------------------------------------------
    def update_face_reset_time
    return if @battler.battler_face[2] == 0
    @battler.battler_face[2] -= 1
    if @battler.battler_face[2] == 0 or
    (@battler.hp < @low_hp and @battler.battler_face[0] == 0)
    make_face(true)
    end
    end

    #--------------------------------------------------------------------------
    # ● Update Face Effect
    #--------------------------------------------------------------------------
    def update_face_effect
    return if @battler.battler_face[2] == 0
    case @battler.battler_face[1]
    when 0
    face_damage
    when 1..2
    face_heal
    when 3
    face_action
    end
    end

    #--------------------------------------------------------------------------
    # ● Face Damage
    #--------------------------------------------------------------------------
    def face_damage
    self.x = (@org_pos[0] - (@battler.battler_face[2] /2)) + rand(@battler.battler_face[2])
    end

    #--------------------------------------------------------------------------
    # ● Face Heal
    #--------------------------------------------------------------------------
    def face_heal
    case @battler.battler_face[2]
    when 20..40
    self.zoom_x += 0.01
    self.zoom_y = self.zoom_x
    when 0..20
    self.zoom_x -= 0.01
    self.zoom_y = self.zoom_x
    end
    end

    #--------------------------------------------------------------------------
    # ● Face Action
    #--------------------------------------------------------------------------
    def face_action
    case @battler.battler_face[2]
    when 25..50
    self.zoom_x += 0.01
    self.zoom_y = self.zoom_x
    self.mirror = true
    when 0..25
    self.zoom_x -= 0.01
    self.zoom_y = self.zoom_x
    self.mirror = false
    end
    self.zoom_x = self.zoom_x > 1.5 ? self.zoom_x = 1.5 : self.zoom_x < 1 ? 1 : self.zoom_x
    self.zoom_y = self.zoom_y > 1.5 ? self.zoom_y = 1.5 : self.zoom_y < 1 ? 1 : self.zoom_y
    end

    #--------------------------------------------------------------------------
    # ● Update Position
    #--------------------------------------------------------------------------
    alias mog_battle_hud_update_position update_position
    def update_position
    return if @battle.is_a?(Game_Actor)
    mog_battle_hud_update_position
    end

    #--------------------------------------------------------------------------
    # ● Update Collapse
    #--------------------------------------------------------------------------
    alias mog_battle_hud_update_collapse update_collapse
    def update_collapse
    return if @battler.is_a?(Game_Actor)
    mog_battle_hud_update_collapse
    end

    #--------------------------------------------------------------------------
    # ● Update Instant Collapse
    #--------------------------------------------------------------------------
    alias mog_battle_hud_update_instant_collapse update_instant_collapse
    def update_instant_collapse
    return if @battler.is_a?(Game_Actor)
    mog_battle_hud_update_instant_collapse
    end

    end

    #================================================= =============================
    # ■ Battle Manager
    #================================================= =============================
    class << BattleManager

    #--------------------------------------------------------------------------
    # ● Battle End
    #--------------------------------------------------------------------------
    alias mog_battle_hud_battle_process_victory process_victory
    def process_victory
    execute_face_effect
    mog_battle_hud_battle_process_victory
    end

    #--------------------------------------------------------------------------
    # ● Prepare
    #--------------------------------------------------------------------------
    def execute_face_effect
    for i in $game_party.members
    if i.hp > 0
    i.battler_face = [1,2,40]
    end
    end
    end

    end

    #================================================= =============================
    # ■ Game Action
    #================================================= =============================
    class Scene_Battle < Scene_Base

    #--------------------------------------------------------------------------
    # ● Show Animations
    #--------------------------------------------------------------------------
    alias mog_battle_hud_show_animation show_animation
    def show_animation(targets, animation_id)
    # execute_battle_cry(2, @subject.current_action.item.id, @subject)
    make_face_action_battle
    mog_battle_hud_show_animation(targets, animation_id)
    end

    #--------------------------------------------------------------------------
    # ● Make Face Action
    #--------------------------------------------------------------------------
    def make_face_action_battle
    return if !@subject.is_a?(Game_Actor)
    @subject.battler_face = [2,3,50]
    end

    end

    #================================================= =============================
    # ■ Game Battler
    #================================================= =============================
    class Game_Battler < Game_BattlerBase

    #--------------------------------------------------------------------------
    # ● Item Apply
    #--------------------------------------------------------------------------
    alias mog_battle_hud_item_apply item_apply
    def item_apply(user, item)
    old_hp = self.hp
    old_mp = self.mp
    mog_battle_hud_item_apply(user, item)
    check_face_effect(old_hp,old_mp) if can_check_face_effect?(old_hp,old_mp)
    end

    #--------------------------------------------------------------------------
    # ● Check Face Effect
    #--------------------------------------------------------------------------
    def check_face_effect(old_hp,old_mp)
    if self.hp > old_hp or self.mp > old_mp
    self.battler_face = [1,1,40]
    elsif self.hp < old_hp
    self.battler_face = [3,0,40]
    end
    end

    #--------------------------------------------------------------------------
    # ● Added New State
    #--------------------------------------------------------------------------
    alias mog_battle_hud_add_new_state add_new_state
    def add_new_state(state_id)
    mog_battle_hud_add_new_state(state_id)
    if self.is_a?(Game_Actor)
    self.battler_face = [1,1,40] if $data_states[state_id].note =~ /<Good State>/
    self.battler_face = [3,0,40] if $data_states[state_id].note =~ /<Bad State>/
    end
    end

    #--------------------------------------------------------------------------
    # ● Regenerate HP
    #--------------------------------------------------------------------------
    alias mog_battle_hud_regenerate_hp regenerate_hp
    def regenerate_hp
    old_hp = self.hp
    old_mp = self.mp
    mog_battle_hud_regenerate_hp
    check_face_effect(old_hp,old_mp) if can_check_face_effect?(old_hp,old_mp)
    end

    #--------------------------------------------------------------------------
    # ● Regenerate MP
    #--------------------------------------------------------------------------
    alias mog_battle_hud_regenerate_mp regenerate_mp
    def regenerate_mp
    old_hp = self.hp
    old_mp = self.mp
    mog_battle_hud_regenerate_mp
    check_face_effect(old_hp,old_mp) if can_check_face_effect?(old_hp,old_mp)
    end

    #--------------------------------------------------------------------------
    # ● Can Check Face Effect
    #--------------------------------------------------------------------------
    def can_check_face_effect?(old_hp,old_mp)
    return false if self.is_a?(Game_Enemy)
    return true if old_hp != self.hp
    return true if old_mp != self.mp
    return false
    end

    end

    #================================================= =============================
    # ■ Scene_Battle
    #================================================= =============================
    class Scene_Battle < Scene_Base

    #--------------------------------------------------------------------------
    # ● Invoke Counter Attack
    #--------------------------------------------------------------------------
    alias mog_battle_hud_invoke_counter_attack invoke_counter_attack
    def invoke_counter_attack(target, item)
    mog_battle_hud_invoke_counter_attack(target, item)
    if target.is_a?(Game_Actor) and target.battler_face[0] != 2
    target.battler_face = [2,3,50]
    end
    end

    #--------------------------------------------------------------------------
    # ● Invoke Magic Reflection
    #--------------------------------------------------------------------------
    alias mog_battle_hud_invoke_magic_reflection invoke_magic_reflection
    def invoke_magic_reflection(target, item)
    mog_battle_hud_invoke_magic_reflection(target, item)
    if target.is_a?(Game_Actor) and target.battler_face[0] != 2
    target.battler_face = [2,3,50]
    end
    end

    end

    end #BATTLER FACE SYSTEM END --------------------------------------------------

    #================================================= =============================
    # ■ Battle_Hud
    #================================================= =============================
    class Battle_Hud
    include MOG_BATTLE_HUD

    #--------------------------------------------------------------------------
    # ● Initialize
    #--------------------------------------------------------------------------
    def initialize(actor)
    dispose
    @actor = actor
    @x = HUD_POSITION[0] + (MEMBERS_SPACE[0] * @actor.index)
    @y = HUD_POSITION[1] + (MEMBERS_SPACE[1] * @actor.index)
    pre_cache
    create_layout
    create_hp_number
    create_hp_meter
    create_mp_number
    create_mp_meter
    create_tp_number
    create_tp_meter
    create_states
    end

    #--------------------------------------------------------------------------
    # ● Pre Cache
    #--------------------------------------------------------------------------
    def pre_cache
    @number = Cache.system("Battle_Hud_Number")
    @number_cw = @number.width / 10
    @number_ch = @number.height / 4
    @meter = Cache.system("Battle_Hud_Meter")
    @meter_cw = @meter.width / 3
    @meter_ch = @meter.height / 3
    @icon = Cache.system("Iconset")
    end

    #--------------------------------------------------------------------------
    # ● Create Layout
    #--------------------------------------------------------------------------
    def create_layout
    @layout = Sprite.new
    @layout.bitmap = Cache.system("Battle_Hud_Layout")
    @layout.z = BATTLE_HUD_Z
    @layout.x = @x
    @layout.y = @y
    end

    #--------------------------------------------------------------------------
    # ● Create HP Number
    #--------------------------------------------------------------------------
    def create_hp_number
    @hp = @actor.hp
    @hp_old = @actor.hp
    @hp_ref = @hp_old
    @hp_refresh = false
    @hp_number = Sprite.new
    @hp_number.bitmap = Bitmap.new((@number_cw * 6),@number_ch)
    @hp_number.z = BATTLE_HUD_Z + 2
    @hp_number.x = @x + HP_NUMBER_POSITION[0]
    @hp_number.y = @y + HP_NUMBER_POSITION[1]
    refresh_hp_number
    end

    #--------------------------------------------------------------------------
    # ● Create HP Meter
    #--------------------------------------------------------------------------
    def create_hp_meter
    @hp_meter = Sprite.new
    @hp_meter.bitmap = Bitmap.new(@meter_cw,@meter_ch)
    @hp_meter.z = BATTLE_HUD_Z + 1
    @hp_meter.x = @x + HP_METER_POSITION[0]
    @hp_meter.y = @y + HP_METER_POSITION[1]
    @hp_flow = rand(@meter_cw * 2)
    @hp_width_old = @meter_cw * @actor.hp / @actor.mhp
    hp_flow_update
    end

    #--------------------------------------------------------------------------
    # ● Hp Flow Update
    #--------------------------------------------------------------------------
    def hp_flow_update
    @hp_meter.bitmap.clear
    hp_width = @meter_cw * @actor.hp / @actor.mhp
    #execute_damage_flow(hp_width)
    hp_src_rect = Rect.new(@hp_flow, 0,hp_width, @meter_ch)
    @hp_meter.bitmap.blt(0,0, @meter, hp_src_rect)
    @hp_flow += METER_FLOW_SPEED
    @hp_flow = 0 if @hp_flow >= @meter_cw * 2
    end

    #--------------------------------------------------------------------------
    # ● Execute Damage Flow
    #--------------------------------------------------------------------------
    def execute_damage_flow(hp_width)
    n = (@hp_width_old - hp_width).abs * 3 / 100
    damage_flow = [[n, 2].min,0.5].max
    @hp_width_old -= damage_flow
    @hp_width_old = hp_width if @hp_width_old < hp_width
    src_rect_old = Rect.new(@hp_flow, @meter_ch * 3,@hp_width_old, @meter_ch)
    @hp_meter.bitmap.blt(0,0, @meter, src_rect_old)
    end

    #--------------------------------------------------------------------------
    # ● Update HP Number
    #--------------------------------------------------------------------------
    def update_hp_number
    @hp_refresh = true
    n = 2 * (@actor.hp - @hp_old).abs / 100
    hp_ref = [[n, 100].min,1].max
    if @hp_old < @actor.hp
    @hp += hp_ref
    if @hp >= @actor.hp
    @hp_old = @actor.hp
    @hp = @actor.hp
    @hp_ref = 0
    end
    elsif @hp_old > @actor.hp
    @hp -= hp_ref
    if @hp <= @actor.hp
    @hp_old = @actor.hp
    @hp = @actor.hp
    @hp_ref = 0
    end
    end

    end

    #--------------------------------------------------------------------------
    # ● Refresh HP Number
    #--------------------------------------------------------------------------
    def refresh_hp_number
    @hp_number.bitmap.clear
    number_value = @hp.abs.to_s.split(//)
    hp_color = @hp < @actor.mhp * 30 / 100 ? @number_ch : 0
    center_x = 0
    for r in 0..number_value.size - 1
    number_value_abs = number_value[r].to_i
    src_rect = Rect.new(@number_cw * number_value_abs, hp_color, @number_cw, @number_ch)
    @hp_number.bitmap.blt((@number_cw + 1) * r, 0, @number, src_rect)
    center_x += 1
    end
    @hp_number.x = @x + HP_NUMBER_POSITION[0] - (center_x * (@number_cw + 1))
    @hp_refresh = false if @hp == @actor.hp
    end

    #--------------------------------------------------------------------------
    # ● Create MP Number
    #--------------------------------------------------------------------------
    def create_mp_number
    @mp = @actor.mp
    @mp_old = @actor.mp
    @mp_ref = @mp_old
    @mp_refresh = false
    @mp_number = Sprite.new
    @mp_number.bitmap = Bitmap.new((@number_cw * 6),@number_ch)
    @mp_number.z = BATTLE_HUD_Z + 2
    @mp_number.x = @x + MP_NUMBER_POSITION[0]
    @mp_number.y = @y + MP_NUMBER_POSITION[1]
    refresh_mp_number
    end

    #--------------------------------------------------------------------------
    # ● Create MP Meter
    #--------------------------------------------------------------------------
    def create_mp_meter
    @mp_meter = Sprite.new
    @mp_meter.bitmap = Bitmap.new(@meter_cw,@meter_ch)
    @mp_meter.z = BATTLE_HUD_Z + 1
    @mp_meter.x = @x + MP_METER_POSITION[0]
    @mp_meter.y = @y + MP_METER_POSITION[1]
    @mp_flow = rand(@meter_cw * 2)
    @mp_width_old = @meter_cw * @actor.mp / @actor.mmp rescue 0
    mp_flow_update
    end

    #--------------------------------------------------------------------------
    # ● Mp Flow Update
    #--------------------------------------------------------------------------
    def mp_flow_update
    return if @actor.mmp == 0
    @mp_meter.bitmap.clear
    mp_width = @meter_cw * @actor.mp / @actor.mmp rescue 0
    src_rect = Rect.new(@mp_flow, @meter_ch,mp_width, @meter_ch)
    @mp_meter.bitmap.blt(0,0, @meter, src_rect)
    @mp_flow += METER_FLOW_SPEED
    @mp_flow = 0 if @mp_flow >= @meter_cw * 2
    end

    #--------------------------------------------------------------------------
    # ● Update MP Number
    #--------------------------------------------------------------------------
    def update_mp_number
    @mp_refresh = true
    n = 2 * (@actor.mp - @mp_old).abs / 100
    mp_ref = [[n, 100].min,1].max
    if @mp_old < @actor.mp
    @mp += mp_ref
    if @mp >= @actor.mp
    @mp_old = @actor.mp
    @mp = @actor.mp
    @mp_ref = 0
    end
    elsif @mp_old > @actor.mp
    @mp -= mp_ref
    if @mp <= @actor.mp
    @mp_old = @actor.mp
    @mp = @actor.mp
    @mp_ref = 0
    end
    end
    end

    #--------------------------------------------------------------------------
    # ● Refresh MP Number
    #--------------------------------------------------------------------------
    def refresh_mp_number
    @mp_number.bitmap.clear
    number_value = @mp.abs.to_s.split(//)
    center_x = 0
    for r in 0..number_value.size - 1
    number_value_abs = number_value[r].to_i
    src_rect = Rect.new(@number_cw * number_value_abs, @number_ch * 2, @number_cw, @number_ch)
    @mp_number.bitmap.blt((@number_cw + 1) * r, 0, @number, src_rect)
    center_x += 1
    end
    @mp_number.x = @x + MP_NUMBER_POSITION[0] - (center_x * (@number_cw + 1))
    @mp_refresh = false if @mp == @actor.mp
    end

    #--------------------------------------------------------------------------
    # ● Create TP Number
    #--------------------------------------------------------------------------
    def create_tp_number
    @tp = @actor.tp
    @tp_old = @actor.tp
    @tp_ref = @tp_old
    @tp_refresh = false
    @tp_number = Sprite.new
    @tp_number.bitmap = Bitmap.new((@number_cw * 6),@number_ch)
    @tp_number.z = BATTLE_HUD_Z + 2
    @tp_number.x = @x + TP_NUMBER_POSITION[0]
    @tp_number.y = @y + TP_NUMBER_POSITION[1]
    refresh_tp_number
    end

    #--------------------------------------------------------------------------
    # ● Create TP Meter
    #--------------------------------------------------------------------------
    def create_tp_meter
    @tp_meter = Sprite.new
    @tp_meter.bitmap = Bitmap.new(@meter_cw,@meter_ch)
    @tp_meter.z = BATTLE_HUD_Z + 1
    @tp_meter.x = @x + TP_METER_POSITION[0]
    @tp_meter.y = @y + TP_METER_POSITION[1]
    @tp_flow = rand(@meter_cw * 2)
    @tp_width_old = @meter_cw * @actor.tp / @actor.max_tp rescue 0
    tp_flow_update
    end

    #--------------------------------------------------------------------------
    # ● TP Flow Update
    #--------------------------------------------------------------------------
    def tp_flow_update
    return if @actor.max_tp == 0
    @tp_meter.bitmap.clear
    tp_width = @meter_cw * @actor.tp / @actor.max_tp rescue 0
    src_rect = Rect.new(@tp_flow, @meter_ch * 2,tp_width, @meter_ch)
    @tp_meter.bitmap.blt(0,0, @meter, src_rect)
    @tp_flow += METER_FLOW_SPEED
    @tp_flow = 0 if @tp_flow >= @meter_cw * 2
    end

    #--------------------------------------------------------------------------
    # ● Update TP Number
    #--------------------------------------------------------------------------
    def update_tp_number
    @tp_refresh = true
    n = 2 * (@actor.tp - @tp_old).abs / 100
    tp_ref = [[n, 100].min,1].max
    if @tp_old < @actor.tp
    @tp += tp_ref
    if @tp >= @actor.tp
    @tp_old = @actor.tp
    @tp = @actor.tp
    @tp_ref = 0
    end
    elsif @tp_old > @actor.tp
    @tp -= tp_ref
    if @tp <= @actor.tp
    @tp_old = @actor.tp
    @tp = @actor.tp
    @tp_ref = 0
    end
    end
    end

    #--------------------------------------------------------------------------
    # ● Refresh TP Number
    #--------------------------------------------------------------------------
    def refresh_tp_number
    @tp_number.bitmap.clear
    number_value = @tp.truncate.to_s.split(//)
    center_x = 0
    for r in 0..number_value.size - 1
    number_value_abs = number_value[r].to_i
    src_rect = Rect.new(@number_cw * number_value_abs, @number_ch * 3, @number_cw, @number_ch)
    @tp_number.bitmap.blt((@number_cw + 1) * r, 0, @number, src_rect)
    center_x += 1
    end
    @tp_number.x = @x + TP_NUMBER_POSITION[0] - (center_x * (@number_cw + 1))
    @tp_refresh = false if @tp == @actor.tp
    end

    #--------------------------------------------------------------------------
    # ● Create_States
    #--------------------------------------------------------------------------
    def create_states
    refresh_states
    @status = Sprite.new
    @status.bitmap = Bitmap.new(24,24)
    @status.x = @x + STATES_POSITION[0]
    @status.y = @y + STATES_POSITION[1]
    @status_flow = -24
    @states_speed = 50
    @status.z = BATTLE_HUD_Z + 2
    @old_states = @actor.states
    flow_states
    end

    #--------------------------------------------------------------------------
    # ● Flow_Status
    #--------------------------------------------------------------------------
    def flow_states
    return if @actor.states.size == 0 and !@status.visible
    @states_speed = 0
    @status.bitmap.clear
    src_rect = Rect.new(@status_flow,0, 24,24)
    @status.bitmap.blt(0,0, @actor_status, src_rect)
    @status.visible = @actor.states.size == 0 ? false : true
    @status_flow += 1
    @status_flow = -24 if @status_flow >= @states_size - 24
    end

    #--------------------------------------------------------------------------
    # ● Refresh States
    #--------------------------------------------------------------------------
    def refresh_states
    refresh_icon if @icon == nil or @icon.disposed?
    @old_states = @actor.states
    if @actor_status != nil
    @actor_status.dispose
    @actor_status = nil
    end
    @states_size = @actor.states.size > 0 ? (48 * @actor.states.size) : 24
    @actor_status = Bitmap.new(@states_size,24)
    index = 0
    for i in @actor.states
    rect = Rect.new(i.icon_index % 16 * 24, i.icon_index / 16 * 24, 24, 24)
    @actor_status.blt(48 * index , 0, @icon, rect)
    index += 1
    end
    end

    #--------------------------------------------------------------------------
    # ● Refresh Icon
    #--------------------------------------------------------------------------
    def refresh_icon
    if @icon != nil
    if !@icon.disposed?
    @icon.dispose
    end
    @icon = nil
    end
    @icon = Cache.system("Iconset")
    end

    #--------------------------------------------------------------------------
    # ● Dispose
    #--------------------------------------------------------------------------
    def dispose
    return if @meter == nil
    @meter.dispose
    @meter = nil
    @number.dispose
    if @icon != nil
    if !@icon.disposed?
    @icon.dispose
    end
    @icon = nil
    end
    @layout.bitmap.dispose
    @layout.dispose
    @hp_number.bitmap.dispose
    @hp_number.dispose
    @hp_meter.bitmap.dispose
    @hp_meter.dispose
    @mp_number.bitmap.dispose
    @mp_number.dispose
    @mp_meter.bitmap.dispose
    @mp_meter.dispose
    @tp_number.bitmap.dispose
    @tp_number.dispose
    @tp_meter.bitmap.dispose
    @tp_meter.dispose
    @status.bitmap.dispose
    @status.dispose
    if @actor_status != nil
    @actor_status.dispose
    @actor_status = nil
    end
    end

    #--------------------------------------------------------------------------
    # ● Update
    #--------------------------------------------------------------------------
    def update
    return if @meter == nil
    update_hp_number if @hp_old != @actor.hp
    refresh_hp_number if @hp_refresh
    update_mp_number if @mp_old != @actor.mp
    refresh_mp_number if @mp_refresh
    update_tp_number if @tp_old != @actor.tp
    refresh_tp_number if @tp_refresh
    refresh_states if @old_states != @actor.states
    hp_flow_update
    tp_flow_update
    mp_flow_update
    flow_states
    end

    end

    #================================================= =============================
    # ■ Spriteset Battle
    #================================================= =============================
    class Spriteset_Battle

    #--------------------------------------------------------------------------
    # ● Initialize
    #--------------------------------------------------------------------------
    alias mog_battle_hud_initialize initialize
    def initialize
    mog_battle_hud_initialize
    create_battle_hud
    end

    #--------------------------------------------------------------------------
    # ● Create Battle Hud
    #--------------------------------------------------------------------------
    def create_battle_hud
    dispose_battle_hud
    @battle_hud = []
    for i in $game_party.members
    @battle_hud.push(Battle_Hud.new(i))
    end
    end

    #--------------------------------------------------------------------------
    # ● Dispose
    #--------------------------------------------------------------------------
    alias mog_battle_hud_dispose dispose
    def dispose
    mog_battle_hud_dispose
    dispose_battle_hud
    end

    #--------------------------------------------------------------------------
    # ● Dispose Battle Hud
    #--------------------------------------------------------------------------
    def dispose_battle_hud
    return if @battle_hud == nil
    @battle_hud.each {|sprite| sprite.dispose }
    @battle_hud.clear
    @battle_hud = nil
    end

    #--------------------------------------------------------------------------
    # ● Update
    #--------------------------------------------------------------------------
    alias mog_battle_hud_update update
    def update
    mog_battle_hud_update
    update_battle_hud
    end

    #--------------------------------------------------------------------------
    # ● Update Battle Hud
    #--------------------------------------------------------------------------
    def update_battle_hud
    return if @battle_hud == nil
    @battle_hud.each {|sprite| sprite.update }
    end

    end

    #================================================= =============================
    # ■ Game_Actor
    #================================================= =============================
    class Game_Actor < Game_Battler
    include MOG_BATTLE_HUD

    attr_accessor :hud_x
    attr_accessor :hud_y

    #--------------------------------------------------------------------------
    # ● HUD X
    #--------------------------------------------------------------------------
    def hud_x
    return HUD_POSITION[0] + (MEMBERS_SPACE[0] * index)
    end

    #--------------------------------------------------------------------------
    # ● HUD Y
    #--------------------------------------------------------------------------
    def hud_y
    return HUD_POSITION[1] + (MEMBERS_SPACE[1] * index)
    end

    end

    #================================================= =============================
    # ■ Scene Battle
    #================================================= =============================
    class Scene_Battle < Scene_Base

    #--------------------------------------------------------------------------
    # ● Create Party Command Window
    #--------------------------------------------------------------------------
    alias mog_battle_hud_create_party_command_window create_party_command_window
    def create_party_command_window
    mog_battle_hud_create_party_command_window
    set_party_window_position
    end

    #--------------------------------------------------------------------------
    # ● Set Party Window Position
    #--------------------------------------------------------------------------
    def set_party_window_position
    @party_command_window.viewport = nil
    return if $mog_rgss3_at_system != nil
    a_index = []
    for actor in $game_party.alive_members
    a_index = [actor.hud_x, actor.hud_y]
    break
    end
    return if a_index.empty?
    @party_command_window.x = MOG_BATTLE_HUD::COMMAND_POSITION[0] + a_index[0]
    @party_command_window.y = MOG_BATTLE_HUD::COMMAND_POSITION[1] + a_index[1]
    end

    #--------------------------------------------------------------------------
    # ● Set Party Window Position
    #--------------------------------------------------------------------------
    alias mog_battle_hud_start_party_command_selection start_party_command_selection
    def start_party_command_selection
    set_party_window_position
    mog_battle_hud_start_party_command_selection
    end

    #--------------------------------------------------------------------------
    # ● Update
    #--------------------------------------------------------------------------
    alias mog_battle_hud_update_basic update_basic
    def update_basic
    mog_battle_hud_update_basic
    update_command_window_visible
    end

    #--------------------------------------------------------------------------
    # ● Update Command Window Visible
    #--------------------------------------------------------------------------
    def update_command_window_visible
    @status_window.visible = @status_window.active ? true : false
    @actor_command_window.visible = @actor_command_window.active ? true : false
    @skill_window.visible = @skill_window.active ? true : false
    @item_window.visible = @item_window.active ? true : false
    end

    #--------------------------------------------------------------------------
    # ● Start Actor Command Selection
    #--------------------------------------------------------------------------
    alias mog_battle_hud_start_actor_command_selection start_actor_command_selection
    def start_actor_command_selection
    mog_battle_hud_start_actor_command_selection
    @actor_command_window.viewport = nil
    @actor_command_window.x = MOG_BATTLE_HUD::COMMAND_POSITION[0] + $game_party.members[BattleManager.actor.index].hud_x
    @actor_command_window.y = MOG_BATTLE_HUD::COMMAND_POSITION[1] + $game_party.members[BattleManager.actor.index].hud_y
    @party_command_window.x = @actor_command_window.x
    @party_command_window.y = @actor_command_window.y
    end

    end


    #================================================= =============================
    # ■ Game Temp
    #================================================= =============================
    class Game_Temp

    attr_accessor :battle_cursor

    #--------------------------------------------------------------------------
    # ● Initialize
    #--------------------------------------------------------------------------
    alias mog_battle_cursor_initialize initialize
    def initialize
    @battle_cursor = [0,0,true,""]
    mog_battle_cursor_initialize
    end

    end

    #================================================= =============================
    # ■ Spriteset Battle
    #================================================= =============================
    class Spriteset_Battle

    include MOG_BATTLE_CURSOR

    #--------------------------------------------------------------------------
    # ● Initialize
    #--------------------------------------------------------------------------
    alias mog_battle_cursor_initialize initialize
    def initialize
    mog_battle_cursor_initialize
    create_cursor
    end

    #--------------------------------------------------------------------------
    # ● Create_Cursor
    #--------------------------------------------------------------------------
    def create_cursor
    @cursor = Sprite.new
    @cursor.bitmap = Cache.system("Battle_Cursor")
    @cursor.z = 999
    @cursor.visible = false
    @cursor_new_x = -64
    @cursor_new_y = -64
    @cursor_float_y = 0
    @cursor_float_duration = 0
    @c_real_y = 0
    @cursor_name = Sprite.new
    @cursor_name.bitmap = Bitmap.new(120,32)
    @cursor_name.z = @cursor.z + 1
    @cursor_name.bitmap.font.size = 16
    refresh_cursor_name
    update_cursor_name
    $game_temp.battle_cursor = [@cursor_new_x,@cursor_new_y,false]
    end

    #--------------------------------------------------------------------------
    # ● Refresh Cursor Name
    #--------------------------------------------------------------------------
    def refresh_cursor_name
    return if !(@cursor.x == $game_temp.battle_cursor[0] and
    @cursor.y == @c_real_y)
    @cursor_name_enemy = $game_temp.battle_cursor[3]
    @cursor_name.bitmap.clear
    @cursor_name.bitmap.draw_text(0,0,120,32,@cursor_n ame_enemy.to_s,1)
    end

    #--------------------------------------------------------------------------
    # ● Dispose
    #--------------------------------------------------------------------------
    alias mog_battle_cursor_dispose dispose
    def dispose
    mog_battle_cursor_dispose
    dispose_cursor
    end

    #--------------------------------------------------------------------------
    # ● Dispose Cursor
    #--------------------------------------------------------------------------
    def dispose_cursor
    @cursor.bitmap.dispose
    @cursor.dispose
    @cursor_name.bitmap.dispose
    @cursor_name.dispose
    end

    #--------------------------------------------------------------------------
    # ● Update
    #--------------------------------------------------------------------------
    alias mog_battle_cursor_update update
    def update
    mog_battle_cursor_update
    update_battle_cursor
    end

    #--------------------------------------------------------------------------
    # ● Update Battle Cursor
    #--------------------------------------------------------------------------
    def update_battle_cursor
    return if @cursor == nil
    @cursor.visible = $game_temp.battle_cursor[2]
    update_cursor_name
    if !@cursor.visible
    @cursor.x = -64
    @cursor.y = -64
    @cursor.opacity = 0
    update_cursor_name
    return
    end
    @cursor.opacity += 15
    update_cursor_float_effect
    if CURSOR_SLIDE_EFFECT
    update_cursor_slide_effect
    else
    @cursor.x = $game_temp.battle_cursor[0]
    @cursor.y = $game_temp.battle_cursor[1]
    end
    end

    #--------------------------------------------------------------------------
    # ● Update Cursor Name
    #--------------------------------------------------------------------------
    def update_cursor_name
    refresh_cursor_name if @cursor_name_enemy != $game_temp.battle_cursor[3]
    @cursor_name.x = @cursor.x + CURSOR_NAME_POSITION[0]
    @cursor_name.y = @cursor.y + CURSOR_NAME_POSITION[1]
    @cursor_name.opacity = @cursor.opacity
    @cursor_name.visible = @cursor.visible
    end

    #--------------------------------------------------------------------------
    # ● Update Cursor Slide Effect
    #--------------------------------------------------------------------------
    def update_cursor_slide_effect
    @cursor_new_x = $game_temp.battle_cursor[0]
    @cursor_new_y = $game_temp.battle_cursor[1]
    @cs_x = 5 + ((@cursor.x - @cursor_new_x).abs / 5)
    @cs_y = 5 + ((@cursor.y - @cursor_new_y).abs / 5)
    if @cursor.x > @cursor_new_x
    @cursor.x -= @cs_x
    @cursor.x = @cursor_new_x if @cursor.x < @cursor_new_x
    elsif @cursor.x < @cursor_new_x
    @cursor.x += @cs_x
    @cursor.x = @cursor_new_x if @cursor.x > @cursor_new_x
    end
    @c_real_y = @cursor_new_y + @cursor_float_y
    if @cursor.y > @cursor_new_y
    @cursor.y -= @cs_y
    @cursor.y = @c_real_y if @cursor.y < @c_real_y
    elsif @cursor.y < @c_real_y
    @cursor.y += @cs_y
    @cursor.y = @c_real_y if @cursor.y > @c_real_y
    end
    end

    #--------------------------------------------------------------------------
    # ● Update Cursor Float Effect
    #--------------------------------------------------------------------------
    def update_cursor_float_effect
    return if !CURSOR_FLOAT_EFFECT
    @cursor_float_duration += 1
    case @cursor_float_duration
    when 0..20
    @cursor_float_y += 1
    when 21..40
    @cursor_float_y -= 1
    else
    @cursor_float_y = 0
    @cursor_float_duration = 0
    end
    end

    end

    #================================================= =============================
    # ■ Window BattleStatus
    #================================================= =============================
    class Window_BattleStatus < Window_Selectable

    #--------------------------------------------------------------------------
    # ● Initialize
    #--------------------------------------------------------------------------
    alias mog_battle_hud_initialize initialize
    def initialize
    mog_battle_hud_initialize
    self.visible = false
    end

    #--------------------------------------------------------------------------
    # ● Refresh
    #--------------------------------------------------------------------------
    alias mog_battle_hud_refresh refresh
    def refresh
    return
    mog_battle_hud_refresh
    end

    end

    #================================================= =============================
    # ■ Scene Battle
    #================================================= =============================
    class Scene_Battle < Scene_Base

    #--------------------------------------------------------------------------
    # ● Create Enemy Window
    #--------------------------------------------------------------------------
    def create_enemy_window
    @enemy_window = Window_BattleEnemy_Cursor.new
    @enemy_window.set_handler(k, method(n_enemy_ok))
    @enemy_window.set_handler(:cancel, method(n_enemy_cancel))
    end

    #--------------------------------------------------------------------------
    # ● Create Actor Window
    #--------------------------------------------------------------------------
    def create_actor_window
    @actor_window = Window_BattleActor_Cursor.new
    @actor_window.set_handler(k, method(n_actor_ok))
    @actor_window.set_handler(:cancel, method(n_actor_cancel))
    end

    end

    #================================================= =============================
    # ■ Window Selectable Battle_Cursor
    #================================================= =============================
    class Window_Selectable_Battle_Cursor < Window_Base

    attr_reader :index

    #--------------------------------------------------------------------------
    # ● Initialize
    #-------------------------------------------------------------------------
    def initialize(x, y, width, height)
    super
    @index = -1
    @handler = {}
    deactivate
    end

    #--------------------------------------------------------------------------
    # ● Item Max
    #--------------------------------------------------------------------------
    def item_max
    return 0
    end

    #--------------------------------------------------------------------------
    # ● Active
    #--------------------------------------------------------------------------
    def active=(active)
    super
    end

    #--------------------------------------------------------------------------
    # ● Index
    #--------------------------------------------------------------------------
    def index=(index)
    @index = index
    end

    #--------------------------------------------------------------------------
    # ● Set Handler
    #--------------------------------------------------------------------------
    def set_handler(symbol, method)
    @handler[symbol] = method
    end

    #--------------------------------------------------------------------------
    # ● Handle?
    #--------------------------------------------------------------------------
    def handle?(symbol)
    @handler.include?(symbol)
    end

    #--------------------------------------------------------------------------
    # ● Call Handler
    #--------------------------------------------------------------------------
    def call_handler(symbol)
    @handler[symbol].call if handle?(symbol)
    end

    #--------------------------------------------------------------------------
    # ● Cursor Movable
    #--------------------------------------------------------------------------
    def cursor_movable?
    active && open? && !@cursor_fix && !@cursor_all && item_max > 0
    end

    #--------------------------------------------------------------------------
    # ● Cursor Down
    #--------------------------------------------------------------------------
    def cursor_down(wrap = false)
    self.index += 1
    check_index_limit
    end

    #--------------------------------------------------------------------------
    # ● Cursor Right
    #--------------------------------------------------------------------------
    def cursor_right(wrap = false)
    self.index += 1
    check_index_limit
    end

    #--------------------------------------------------------------------------
    # ● Cursor UP
    #--------------------------------------------------------------------------
    def cursor_up(wrap = false)
    self.index -= 1
    check_index_limit
    end

    #--------------------------------------------------------------------------
    # ● Cursor Left
    #--------------------------------------------------------------------------
    def cursor_left(wrap = false)
    self.index -= 1
    check_index_limit(self.index)
    end

    #--------------------------------------------------------------------------
    # ● Update
    #--------------------------------------------------------------------------
    def update
    super
    process_cursor_move
    process_handling
    end

    #--------------------------------------------------------------------------
    # ● Process Cursor Move
    #--------------------------------------------------------------------------
    def process_cursor_move
    return unless cursor_movable?
    last_index = @index
    cursor_down (Input.trigger?(OWN)) if Input.repeat?(OWN)
    cursor_up (Input.trigger?(:UP)) if Input.repeat?(:UP)
    cursor_right(Input.trigger?(:RIGHT)) if Input.repeat?(:RIGHT)
    cursor_left (Input.trigger?(:LEFT)) if Input.repeat?(:LEFT)
    if @index != last_index
    Sound.play_cursor
    set_cursor_position(@index)
    end
    end

    #--------------------------------------------------------------------------
    # ● Process Handling
    #--------------------------------------------------------------------------
    def process_handling
    return unless open? && active
    return process_ok if ok_enabled? && Input.trigger?(:C)
    return process_cancel if cancel_enabled? && Input.trigger?(:B)
    end

    #--------------------------------------------------------------------------
    # ● OK Enabled
    #--------------------------------------------------------------------------
    def ok_enabled?
    handle?(k)
    end

    #--------------------------------------------------------------------------
    # ● Cancel Enabled
    #--------------------------------------------------------------------------
    def cancel_enabled?
    handle?(:cancel)
    end

    #--------------------------------------------------------------------------
    # ● Process OK
    #--------------------------------------------------------------------------
    def process_ok
    if current_item_enabled?
    Sound.play_ok
    Input.update
    deactivate
    call_ok_handler
    else
    Sound.play_buzzer
    end
    end

    #--------------------------------------------------------------------------
    # ● Call OK Handler
    #--------------------------------------------------------------------------
    def call_ok_handler
    call_handler(k)
    end

    #--------------------------------------------------------------------------
    # ● Process Cancel
    #--------------------------------------------------------------------------
    def process_cancel
    Sound.play_cancel
    Input.update
    deactivate
    call_cancel_handler
    end

    #--------------------------------------------------------------------------
    # ● Call Cancel Handler
    #--------------------------------------------------------------------------
    def call_cancel_handler
    call_handler(:cancel)
    end

    #--------------------------------------------------------------------------
    # ● Set Cursor Position
    #--------------------------------------------------------------------------
    def set_cursor_position(index)
    end

    #--------------------------------------------------------------------------
    # ● Current Item Enabled?
    #--------------------------------------------------------------------------
    def current_item_enabled?
    return true
    end

    #--------------------------------------------------------------------------
    # ● Refresh
    #--------------------------------------------------------------------------
    def refresh
    contents.clear
    end

    #--------------------------------------------------------------------------
    # ● Show
    #--------------------------------------------------------------------------
    def show
    set_cursor_position(self.index)
    $game_temp.battle_cursor[2] = true
    super
    end

    #--------------------------------------------------------------------------
    # ● Hide
    #--------------------------------------------------------------------------
    def hide
    $game_temp.battle_cursor[2] = false
    super
    end

    #--------------------------------------------------------------------------
    # ● Check Index Limit
    #--------------------------------------------------------------------------
    def check_index_limit(index = self.index)
    self.index = index
    self.index = 0 if self.index >= item_max
    self.index = (item_max - 1) if self.index < 0
    end

    end

    #================================================= =============================
    # ■ Window_BattleEnemy
    #================================================= =============================
    class Window_BattleEnemy_Cursor < Window_Selectable_Battle_Cursor

    include MOG_BATTLE_CURSOR

    #--------------------------------------------------------------------------
    # ● Initialize
    #--------------------------------------------------------------------------
    def initialize
    super(-32, -32, 32, 32)
    self.index = 0
    self.visible = false
    set_cursor_position(self.index)
    end

    #--------------------------------------------------------------------------
    # ● Item Max
    #--------------------------------------------------------------------------
    def item_max
    $game_troop.alive_members.size
    end

    #--------------------------------------------------------------------------
    # ● Enemy
    #--------------------------------------------------------------------------
    def enemy
    $game_troop.alive_members[self.index]
    end

    #--------------------------------------------------------------------------
    # ● Set Cursor Position
    #--------------------------------------------------------------------------
    def set_cursor_position(index)
    check_index_limit(index)
    return if $game_troop.alive_members[self.index] == nil
    $game_temp.battle_cursor[0] = $game_troop.alive_members[self.index].screen_x + CURSOR_POSITION[0]
    $game_temp.battle_cursor[1] = $game_troop.alive_members[self.index].screen_y + CURSOR_POSITION[1]
    $game_temp.battle_cursor[3] = $game_troop.alive_members[self.index].name
    end

    end

    #================================================= =============================
    # ■ Window_BattleActor Cursor
    #================================================= =============================
    class Window_BattleActor_Cursor < Window_Selectable_Battle_Cursor

    include MOG_BATTLE_CURSOR
    include MOG_BATTLE_HUD
    #--------------------------------------------------------------------------
    # ● Initialize
    #--------------------------------------------------------------------------
    def initialize
    super(-32, -32, 32, 32)
    self.index = 0
    self.visible = true
    set_cursor_position(self.index)
    end

    #--------------------------------------------------------------------------
    # ● Item Max
    #--------------------------------------------------------------------------
    def item_max
    $game_party.members.size
    end

    #--------------------------------------------------------------------------
    # ● Set Cursor Position
    #--------------------------------------------------------------------------
    def set_cursor_position(index)
    check_index_limit(index)
    return if $game_party.members[self.index] == nil
    screen_x = $game_party.members[self.index].screen_x rescue nil
    screen_y = $game_party.members[self.index].screen_y rescue nil
    if screen_x == nil or screen_y == nil
    screen_x = $game_party.members[self.index].hud_x + (HP_NUMBER_POSITION[0] / 3) + 32
    screen_y = $game_party.members[self.index].hud_y + (HP_NUMBER_POSITION[1] / 2) + 32
    end
    $game_temp.battle_cursor[0] = screen_x + CURSOR_POSITION[0]
    $game_temp.battle_cursor[1] = screen_y + CURSOR_POSITION[1]
    $game_temp.battle_cursor[3] = $game_party.members[self.index].name
    end

    end

    $mog_rgss3_battle_hud = true


    Так вот, можно ли как то совместить? и если да, то вероятно что то
    Спойлер часть:
    def select_enemy_selection
    @enemy_window.cursor_all = select_all?
    @enemy_window.refresh
    @enemy_window.show.activate
    end

    def select_actor_selection
    @actor_window.cursor_all = select_all?
    @actor_window.refresh
    @actor_window.show.activate
    end

Страница 105 из 147 ПерваяПервая ... 55595103104105106107115 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 3 (пользователей: 0 , гостей: 3)

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Помощь с скриптами (RGSS)