Плохо! Плохо!:  0
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 14

Тема: Damage Popup

  1. #1
    Хранитель Аватар для Темный
    Информация о пользователе
    Регистрация
    13.05.2011
    Сообщений
    2,449
    Записей в дневнике
    20
    Репутация: 50 Добавить или отнять репутацию

    По умолчанию Damage Popup

    Скрипт для урона противников BX Ace
    Нашел первую ласточку скриптов для Асе на забугорном форуме.
    демо-версию Ace не позволяет изменять, вот маленькая хитрость, чтобы вставить скрипт.

    1 - Создание нового проекта в Ace.
    2 - Перейти в папку с игрой и скопировать Scripts.rvdata2
    3 - Перейти в папку проекта VX и заменить Scripts.rvdata по Script.rvdata2 вы только что скопировали. Переименуйте его Scripts.rvdata.
    4 - Открыть проект VX, вставьте скрипт, сохранить проект.
    5 - В папке VX проекта, копию Scripts.rvdata, и вставьте его в Ace папку и переименовать его Scripts.rvdata2.
    6 - Пресс играть в Ace

    #================================================= =============================
    # ** Damage Popup
    #------------------------------------------------------------------------------
    # © Dargor, 2011
    # 01/12/11
    # Version 1.0
    #------------------------------------------------------------------------------
    # VERSION HISTORY:
    # - 1.0 (01/12/11), Initial release
    #------------------------------------------------------------------------------
    # INSTRUCTIONS:
    # - Paste this above main
    # - Edit the constants in Damage_Popup module
    #================================================= =============================

    #================================================= =============================
    # ** Damage Popup Customization Module
    #================================================= =============================

    module Damage_Popup
    HP_Damage_Color = Color.new(255,255,255)
    MP_Damage_Color = Color.new(172,0,234)
    TP_Damage_Color = Color.new(253,157,62)
    HP_Recover_Color = Color.new(0,255,0)
    MP_Recover_Color = Color.new(48,192,255)
    TP_Recover_Color = Color.new(255,242,0)
    end

    #================================================= =============================
    # ** Sprite_Battler
    #------------------------------------------------------------------------------
    # This sprite is used to display battlers. It observes a instance of the
    # Game_Battler class and automatically changes sprite conditions.
    #================================================= =============================

    class Sprite_Battler < Sprite_Base
    #--------------------------------------------------------------------------
    # * Alias Listing
    #--------------------------------------------------------------------------
    alias dargor_ace_dmgpopup_sprite_battler_initialize initialize
    alias dargor_ace_dmgpopup_sprite_battler_setup_new_effec t setup_new_effect
    alias dargor_ace_dmgpopup_sprite_battler_start_effect start_effect
    alias dargor_ace_dmgpopup_sprite_battler_update_effect update_effect
    #--------------------------------------------------------------------------
    # * Object Initialization
    #--------------------------------------------------------------------------
    def initialize(viewport, battler = nil)
    # The Usual
    dargor_ace_dmgpopup_sprite_battler_initialize(view port, battler)
    # Create damage sprite
    @damage_sprite = Sprite_Base.new(viewport)
    @damage_sprite.bitmap = Bitmap.new(160,48)
    @damage_sprite.bitmap.font.bold = true
    @damage_sprite.bitmap.font.outline = true
    @damage_sprite.bitmap.font.size = 32
    @damage_sprite.visible = false
    @damage_duration = 0
    @damage_effect = nil
    end
    #--------------------------------------------------------------------------
    # * Setup New Effect
    #--------------------------------------------------------------------------
    def setup_new_effect
    # The Usual
    dargor_ace_dmgpopup_sprite_battler_setup_new_effec t
    # Check for HP Damage
    if display_damage_sprite? && @battler.result.hp_damage > 0
    start_damage(:hp_damage)
    # Check for MP Damage
    elsif display_damage_sprite? && @battler.result.mp_damage > 0
    start_damage(:mp_damage)
    # Check for TP Damage
    elsif display_damage_sprite? && @battler.result.tp_damage > 0
    start_damage(:tp_damage)
    # Check for HP Recover
    elsif display_damage_sprite? && @battler.result.hp_damage < 0
    start_damage(:hp_recover)
    # Check for MP Recover
    elsif display_damage_sprite? && @battler.result.mp_damage < 0
    start_damage(:mp_recover)
    # Check for TP Recover
    elsif display_damage_sprite? && @battler.result.tp_damage < 0
    start_damage(:tp_recover)
    end
    end
    #--------------------------------------------------------------------------
    # * Damage Display Test
    #--------------------------------------------------------------------------
    def display_damage_sprite?
    return (@battler.result.success && @damage_duration == 0)
    end
    #--------------------------------------------------------------------------
    # * Start Damage Effect
    #--------------------------------------------------------------------------
    def start_damage(effect_type)
    @damage_effect = effect_type
    @damage_duration = 60
    case @damage_effect
    when :hp_damage
    @damage_sprite.bitmap.font.color = Damage_Popup::HP_Damage_Color
    when :mp_damage
    @damage_sprite.bitmap.font.color = Damage_Popup::MP_Damage_Color
    when :tp_damage
    @damage_sprite.bitmap.font.color = Damage_Popup::TP_Damage_Color
    when :hp_recover
    @damage_sprite.bitmap.font.color = Damage_Popup::HP_Recover_Color
    when :mp_recover
    @damage_sprite.bitmap.font.color = Damage_Popup::MP_Recover_Color
    when :tp_recover
    @damage_sprite.bitmap.font.color = Damage_Popup::TP_Recover_Color
    end
    update_damage_popup_position
    update_damage_popup_text
    @damage_sprite.visible = true
    @damage_sprite.opacity = 255
    end
    #--------------------------------------------------------------------------
    # * Update Effects
    #--------------------------------------------------------------------------
    def update_effect
    # Update effects
    if @damage_duration > 0
    @damage_duration -= 1
    update_damage
    if @damage_duration == 0
    @damage_sprite.visible = false
    @damage_type = nil
    @battler.result.clear_hit_flags
    end
    end
    # The Usual
    dargor_ace_dmgpopup_sprite_battler_update_effect
    end
    #--------------------------------------------------------------------------
    # * Update Damage Sprite Potision
    #--------------------------------------------------------------------------
    def update_damage_popup_position
    if @battler && @battler.use_sprite?
    @damage_sprite.x = @battler.screen_x
    @damage_sprite.y = @battler.screen_y - 48
    @damage_sprite.z = @battler.screen_z + 10
    end
    end
    #--------------------------------------------------------------------------
    # * Update Damage Sprite Text
    #--------------------------------------------------------------------------
    def update_damage_popup_text
    case @damage_effect
    when :hp_damage, :hp_recover
    string = @battler.result.hp_damage.abs.to_s
    when :mp_damage, :mp_recover
    string = @battler.result.mp_damage.abs.to_s
    when :tp_damage, :tp_recover
    string = @battler.result.tp_damage.abs.to_s
    end
    rect = @damage_sprite.bitmap.text_size(string)
    @damage_sprite.bitmap.clear
    @damage_sprite.bitmap.draw_text(rect, string, 1)
    end
    #--------------------------------------------------------------------------
    # * Update Damage
    #--------------------------------------------------------------------------
    def update_damage
    case @damage_duration
    when 58..59
    @damage_sprite.y -= 4
    when 56..57
    @damage_sprite.y -= 2
    when 54..55
    @damage_sprite.y += 2
    when 48..53
    @damage_sprite.y += 4
    end
    if @damage_duration <= 20
    @damage_sprite.opacity = @damage_duration * 11
    end
    end
    end
    Expand to see the code.


    Instructions



  2. #2
    Новичок Аватар для Hentai
    Информация о пользователе
    Регистрация
    24.07.2011
    Адрес
    Там, где я живу - нет живых.
    Сообщений
    13
    Записей в дневнике
    1
    Репутация: 0 Добавить или отнять репутацию

    По умолчанию

    Цитата Сообщение от Темный Посмотреть сообщение

    1 - Создание нового проекта в Ace.
    2 - Перейти в папку с игрой и скопировать Scripts.rvdata2
    3 - Перейти в папку проекта VX и заменить Scripts.rvdata по Script.rvdata2 вы только что скопировали. Переименуйте его Scripts.rvdata.
    4 - Открыть проект VX, вставьте скрипт, сохранить проект.
    5 - В папке VX проекта, копию Scripts.rvdata, и вставьте его в Ace папку и переименовать его Scripts.rvdata2.
    6 - Пресс играть в Ace
    Эрм... Через Промт проганял?




  3. #3
    Хранитель Аватар для Темный
    Информация о пользователе
    Регистрация
    13.05.2011
    Сообщений
    2,449
    Записей в дневнике
    20
    Репутация: 50 Добавить или отнять репутацию

    По умолчанию

    не через гугл переводчик)



  4. #4

    По умолчанию

    Я не понял ни слова...
    Думаю, имеется ввиду, что все изменение в скриптах сохраняются во время редактирования проекта, но после его закрытия - откатываются. Предлагается вытянуть файл со скриптами в тот момент, когда он изменен, а затем подсунуть взамен того, что используется по-умолчанию.
    Последний раз редактировалось Equilibrium Keeper; 07.12.2011 в 21:06.

  5. #5
    Хранитель Аватар для Темный
    Информация о пользователе
    Регистрация
    13.05.2011
    Сообщений
    2,449
    Записей в дневнике
    20
    Репутация: 50 Добавить или отнять репутацию

    По умолчанию

    так я сам пробывал вставлять этот скрипт как описано все вставляеться и работает цифры вылетают из врагов при уроне))
    а делаеться это так. новый проект асе копируешь Scripts.rvdata2
    открываешь простой вх создаешь новый проект и в его папку копируешь Scripts.rvdata2
    ихменяя его на Scripts.rvdata потом вставляешь скрипт и сохраняешь. потом копируешь в папку проекта Асе и изменяешь
    Scripts.rvdata2 и включаешь игру и все цифры вылетают



  6. #6

    По умолчанию

    Так, если у тебя это получилось - попробуй собрать свои мысли в кучку и изложить в первом посте.

    Тэкс, случилось страшное.
    Код:
    @item_window.set_handler(:ok,     method(:on_item_ok))
    В RPG Maker пришли Data Binding (связывание данных), Reflection(отражение) и делегаты. Осваиваем.
    Последний раз редактировалось Equilibrium Keeper; 07.12.2011 в 21:28.

  7. #7
    Хранитель Аватар для Темный
    Информация о пользователе
    Регистрация
    13.05.2011
    Сообщений
    2,449
    Записей в дневнике
    20
    Репутация: 50 Добавить или отнять репутацию

    По умолчанию

    блин у меня редактирование и даже ответы на коменты через раз работают((
    а в первом посте просто кривой перевод гугла вставил.
    кстате при такой системе очки из противников вылетают и еще сверху пишут повреждение
    в окне вот это окно можно убрать как ты думаешь?



  8. #8

    По умолчанию

    Да. Можно.

    ---

    Продолжаю тему связывания и отражения.
    В общем, ничего сложного нет. Все это безобразие объявляется в Window_Selectable
    У него его имеется хэш handler<символ, метод>.
    При обновлении вызывается следующий метод:
    Код:
    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)
        return process_pagedown if handle?(:pagedown) && Input.trigger?(:R)
        return process_pageup   if handle?(:pageup)   && Input.trigger?(:L)
      end
    Который поочереди проверяет нажата ли кнопка, сопоставлен ли метод с соответствующим дескриптором (handle), а возвращаемый метод вызывает такое вот чудовище:
    Код:
    def call_handler(symbol)
        @handler[symbol].call if handle?(symbol)
      end
    Совершенно неясно - для чего дважды выполняется проверка на существование метода, и первой модификацией надо убрать if ok_enabled? и иже с ним из метода process_handling. Какая-никакая, а оптимизация, особенно если в каком-либо из дочерних классов будет задействована вся клавиатура.

    Итог: сократился объем кода, программировать менюшки стало проще. Однако вырос уровень абстракции. Задействовано отражение. Это неминуемо негативно скажется на производительности. Однако, вероятно, в рамках проекта на мейкере, это падение будет незначительным. Тем не менее, если я за полчаса изучения скриптов уже нашел такой ляп, стоит основательно их прошерстить на предмет оптимизации.

  9. #9
    Хранитель Аватар для Темный
    Информация о пользователе
    Регистрация
    13.05.2011
    Сообщений
    2,449
    Записей в дневнике
    20
    Репутация: 50 Добавить или отнять репутацию

    По умолчанию

    кстате хотел спросить. перед волной после выхода полной версии Асе
    ты не хотел бы как модератор по скриптам добавить отдельный раздел?
    Потому что если люди пишут скрипты уже на триале что будет когда они
    получат полную версию.



  10. #10

    По умолчанию

    1) С каких пор я модератор?! о_О
    2) К Рольфу.
    3) А какой смысл? Скриптовый язык не изменился. Все тот же Ruby. Скрипты из XP вполне подойдут и VX Ace. А то, что там методы по разному называются, поля новые у героев и т.д. - это мелочи.

Страница 1 из 2 12 ПоследняяПоследняя

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

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

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

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

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

Ваши права

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