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

Тема: [VX ACE][MV] Валюты (Game Currency)

  1. #1

    По умолчанию [VX ACE][MV] Валюты (Game Currency)

    Валюты
    Автор: DK (Денис Кузнецов)
    Мейкер: VX Ace
    Версия: 1.1 от 14.08.15
    Тип: Добавляющий возможности

    Добавляет в игру несколько валют.

    Особенности:
    • Настройка количества валют
    • Изменено окно Window_Gold


    Использование:
    Вся инструкция и настройки в шапке скрипта!

    Демо: Версия 1.1

    Скрипт в облаке: Яндекс.диск

    Скрипт:
    Спойлер Код:
    =begin
    ################################################## #############################
    # #
    # Валюта (Game Currency) #
    # #
    ################################################## #############################

    Автор: Денис Кузнецов (http://vk.com/id8137201)
    Группа ВК: https://vk.com/scriptsrpgmakervxace
    Версия: 1.1
    Релиз от: 14.08.15
    Первый релиз: 13.08.15

    Что нового в этой версии:
    - Добавил новый вызов скрита
    - Добавил сохранение/загрузку одной настройки вместе с игрой
    - Убрал коэффициенты
    - Изменено название одного вызова скрипта, а также некоторые параметры вызовов
    - Баг фикс Window_Gold, Window_Window_ShopNumber и Scene_Shop

    Инструкция:

    Получить текущее количество денег текущей валюты:
    get_game_currency_value

    Получить номер текущей валюты:
    get_game_currency_type

    Получить номер валюты, использованной в предыдущий раз:
    get_game_last_currency_type

    Установить значение для текущей валюты:
    set_game_currency_value(value)

    Установить номер валюты для использования:
    set_game_currency_type(currency_type)

    Перенести деньги с одной валюты на другую:
    type1 - откуда перенести
    type2 - куда перенести
    rate - значение коэффициента переноса (type1 * rate) (по-умолчанию равен 1)
    game_exchange_currency(type1, type2, rate)

    Увеличить значение валюты:
    currency_type - номер валюты
    amount - значение
    game_gain_currency(currency_type, amount)

    Уменьшить значение валюты:
    game_lose_currency(currency_type, amount)

    Установить отображение только текущей валюты в окне золота (Window_Gold):
    setup - true или false (только текущее значение или нет)
    set_game_window_gold_current_currency(setup)

    Для справки о совместимости с другими скриптами:
    В данном скрипте переписаны/дополнены стандартные классы

    ### module Vocab ###
    Переписанные методы:
    self.currency_unit(currency_type = nil)

    ### class Game_Party ###
    Новые методы:
    init_currency
    currency_value=(currency_value)
    currency_type=(currency_type)
    exchange_currency(type1, type2, rate)
    gold

    Дополненные методы:
    initialize

    Переписанные методы:
    gain_gold(amount)

    ### class Window_Gold ###
    Новые методы:
    value_width
    type

    Дополненные методы:
    initialize
    update
    draw_currency_value(value, unit, x, y, width)

    Переписанные методы:
    value
    currency_unit

    ### class Window_ShopNumber ###
    Дополненные методы:
    initialize(x, y, height)
    set(item, max, price, currency_unit = nil)
    draw_currency_value(value, unit, x, y, width)

    Переписанные методы:
    currency_unit=(currency_unit)

    ### class Scene_Shop ###
    Переписанные методы:
    money
    currency_unit

    =end

    module Currency_Settings

    # Какую валюту использовать в начале игры ?
    GAME_CURRENCY_START_TYPE = 0

    # Настройка валют
    # номер_валюты => { :name => "символ_валюты", :start_value => значение (количество валюты в начале игры (можно не указывать этот параметр)) }
    GAME_CURRENCY = {
    0 => { :name => "Gil" },
    1 => { :name => "$", :start_value => 5000 },
    2 => { :name => "€", :start_value => 2000 }
    }

    # Настройка иконок для отображения в окне денег
    # Если не указана иконка, то будет отображаться символ валюты
    # номер_валюты => номер_иконки
    # GAME_CURRENCY_WINDOW_GOLD_ICON = { } чтобы не использовать
    GAME_CURRENCY_WINDOW_GOLD_ICON = {
    0 => 341,
    1 => 361,
    #~ 2 => 360
    }

    # Отображать только используемую на данный момент валюту ?
    # true - да, false - нет
    $GAME_CURRENCY_WINDOW_GOLD_CURRENT_CURRENCY = false

    end # module Currency_Settings

    module Vocab

    def self.currency_unit(currency_type = nil)
    if currency_type.nil?
    Currency_Settings::GAME_CURRENCY[$game_party.currency_type][:name]
    else
    Currency_Settings::GAME_CURRENCY[currency_type][:name]
    end
    end

    end # module Vocab

    class Game_Party < Game_Unit

    include Currency_Settings

    attr_reader :last_currency_type
    attr_reader :currency_type
    attr_reader :currency

    alias denis_kyznetsov_game_currency_game_party_initializ e initialize
    def initialize
    denis_kyznetsov_game_currency_game_party_initializ e
    @last_currency_type = GAME_CURRENCY_START_TYPE
    @currency_type = GAME_CURRENCY_START_TYPE
    init_currency
    end

    def init_currency
    return if !@currency.nil?
    @currency = {}
    GAME_CURRENCY.keys.each do |index|
    value = GAME_CURRENCY[index].has_key?(:start_value) ? GAME_CURRENCY[index][:start_value] : 0
    @currency[index] = value
    end
    end

    def currency_value=(currency_value)
    @currency[@currency_type] = currency_value
    end

    def currency_type=(currency_type)
    @last_currency_type = @currency_type
    @currency_type = currency_type
    end

    def exchange_currency(type1, type2, rate)
    @currency[type2] += (@currency[type1] * rate).to_i
    @currency[type1] = 0
    end

    def gold
    return @currency[@currency_type]
    end

    def gain_gold(amount)
    @currency[@currency_type] = [[@currency[@currency_type] + amount, -max_gold].max, max_gold].min
    end

    end # class Game_Party < Game_Unit

    class Game_Interpreter

    include Currency_Settings

    def set_game_window_gold_current_currency(setup)
    $GAME_CURRENCY_WINDOW_GOLD_CURRENT_CURRENCY = setup
    end

    def get_game_currency_value
    return $game_party.gold
    end

    def get_game_currency_type
    return $game_party.currency_type
    end

    def get_game_last_currency_type
    return $game_party.last_currency_type
    end

    def set_game_currency_value(value)
    $game_party.currency_value = value
    end

    def set_game_currency_type(currency_type)
    return if !GAME_CURRENCY.has_key?(currency_type)
    $game_party.currency_type = currency_type
    end

    def game_exchange_currency(type1, type2, rate = 1)
    return if !GAME_CURRENCY.has_key?(type1) || !GAME_CURRENCY.has_key?(type2)
    $game_party.exchange_currency(type1, type2, rate)
    end

    def game_gain_currency(currency_type, amount)
    return if !GAME_CURRENCY.has_key?(currency_type)
    last_currency = $game_party.currency_type
    game_currency_type(currency_type)
    $game_party.gain_gold(amount)
    game_currency_type(last_currency)
    end

    def game_lose_currency(currency_type, amount)
    game_gain_currency(currency_type, -amount)
    end

    end # class Game_Interpreter

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

    class Window_Gold < Window_Base

    include Currency_Settings

    alias denis_kyznetsov_game_currency_window_gold_initiali ze initialize
    def initialize
    @currency_keys_type = 0 # номер ключа массива валют
    denis_kyznetsov_game_currency_window_gold_initiali ze
    self.arrows_visible = false
    self.ox = -value_width if !$GAME_CURRENCY_WINDOW_GOLD_CURRENT_CURRENCY && GAME_CURRENCY.size > 1
    end

    alias denis_kyznetsov_game_currency_window_gold_update update
    def update
    denis_kyznetsov_game_currency_window_gold_update
    if !$GAME_CURRENCY_WINDOW_GOLD_CURRENT_CURRENCY && GAME_CURRENCY.size > 1
    self.ox += 1
    if self.ox > contents.width
    @currency_keys_type += 1
    @currency_keys_type %= $game_party.currency.keys.size
    self.ox = -value_width
    refresh
    end
    elsif $GAME_CURRENCY_WINDOW_GOLD_CURRENT_CURRENCY && self.ox != 0
    self.ox = 0
    refresh
    end
    end

    def value_width # ширина значения вместе с иконкой или текстом
    val_width = 24 # отступ
    val_width += text_size(currency_unit).width if !GAME_CURRENCY_WINDOW_GOLD_ICON.has_key?(type) # ширина названия валюты, если нет иконки
    val_width += text_size(value).width # ширина значения
    return val_width
    end

    def value # значение валюты
    if $GAME_CURRENCY_WINDOW_GOLD_CURRENT_CURRENCY
    $game_party.gold
    else
    $game_party.currency[type]
    end
    end

    def type # получить тип валюты из ключей
    if $GAME_CURRENCY_WINDOW_GOLD_CURRENT_CURRENCY
    $game_party.currency_type
    else
    $game_party.currency.keys[@currency_keys_type]
    end
    end

    def currency_unit # символ валюты
    Vocab::currency_unit(type)
    end

    alias denis_kyznetsov_game_currency_window_gold_draw_cur rency_value draw_currency_value
    def draw_currency_value(value, unit, x, y, width)
    return denis_kyznetsov_game_currency_window_gold_draw_cur rency_value(value, unit, x, y, width) if !GAME_CURRENCY_WINDOW_GOLD_ICON.has_key?(type)
    change_color(normal_color)
    draw_text(x, y, width - 16 - 2, line_height, value, 2)
    draw_icon(GAME_CURRENCY_WINDOW_GOLD_ICON[type], width - 16, y)
    end

    end # class Window_Gold < Window_Base

    class Window_ShopNumber < Window_Selectable

    include Currency_Settings

    alias denis_kyznetsov_game_currency_window_shop_number_i nitialize initialize
    def initialize(x, y, height)
    denis_kyznetsov_game_currency_window_shop_number_i nitialize(x, y, height)
    @currency_unit = $game_party.currency_type
    end

    alias denis_kyznetsov_game_currency_window_shop_number_s et set
    def set(item, max, price, currency_unit = nil)
    denis_kyznetsov_game_currency_window_shop_number_s et(item, max, price, currency_unit)
    @currency_unit = $game_party.currency_type if currency_unit
    refresh
    end

    def currency_unit=(currency_unit)
    @currency_unit = $game_party.currency_type
    refresh
    end

    alias denis_kyznetsov_game_currency_window_shop_number_d raw_currency_value draw_currency_value
    def draw_currency_value(value, unit, x, y, width)
    if !GAME_CURRENCY_WINDOW_GOLD_ICON.has_key?(unit)
    unit = Vocab::currency_unit
    return denis_kyznetsov_game_currency_window_shop_number_d raw_currency_value(value, unit, x, y, width)
    end
    change_color(normal_color)
    draw_text(x, y, width - 16 - 2, line_height, value, 2)
    draw_icon(GAME_CURRENCY_WINDOW_GOLD_ICON[unit], width - 16, y)
    end

    end # class Window_ShopNumber < Window_Selectable

    class Scene_Shop < Scene_MenuBase

    def money
    $game_party.gold
    end

    def currency_unit
    $game_party.currency_type
    end

    end # class Scene_Shop < Scene_MenuBase

    module DataManager

    class << self
    alias denis_kyznetsov_game_currency_data_manager_make_sa ve_contents make_save_contents
    alias denis_kyznetsov_game_currency_data_manager_extract _save_contents extract_save_contents
    end

    def self.make_save_contents
    contents = denis_kyznetsov_game_currency_data_manager_make_sa ve_contents
    contents[:GAME_CURRENCY_WINDOW_GOLD_CURRENT_CURRENCY] = $GAME_CURRENCY_WINDOW_GOLD_CURRENT_CURRENCY
    contents
    end

    def self.extract_save_contents(contents)
    denis_kyznetsov_game_currency_data_manager_extract _save_contents(contents)
    $GAME_CURRENCY_WINDOW_GOLD_CURRENT_CURRENCY = contents[:GAME_CURRENCY_WINDOW_GOLD_CURRENT_CURRENCY]
    end

    end # module DataManager


    Валюты
    Автор: DK (Денис Кузнецов)
    Мейкер: MV
    Версия: 1.3

    Требования:
    Ядро DKCore версии 1.61 или выше

    Плагин больше не поддерживается и не развивается

    Скачать с Яндекс.Диск:
    Яндекс.Диск
    Последний раз редактировалось DK; 11.04.2016 в 21:01. Причина: Обновление

  2. #2

    По умолчанию

    Извиняюсь, было 2 лишних символа, которые вызывали ошибку в скрипте. Скрипт по ссылке обновлен

  3. #3

    По умолчанию

    Обновил скрипт, добавил демо.
    Баг фиксы, небольшие изменения в работе скрипта. Полный список изменений в шапке скрипта.

  4. #4
    Хранитель Аватар для Paranoid
    Информация о пользователе
    Регистрация
    22.12.2014
    Сообщений
    2,768
    Записей в дневнике
    33
    Репутация: 28 Добавить или отнять репутацию

    По умолчанию

    А можно хоть пару скриншотов окон?
    Лицензионный VX Ace. Спасибо Петр.
    2 года мукеризма в пустую.

  5. #5

    По умолчанию

    Цитата Сообщение от Paranoid Посмотреть сообщение
    А можно хоть пару скриншотов окон?
    Новых окон в скрипте нет. Изменено стандартное окно золота партии (отображается только текущая валюта или все доступные валюты (анимация по кругу)). Скриншотом анимацию не показать... Также вместо имени валюты можно указать иконку.

  6. #6
    Хранитель Аватар для Paranoid
    Информация о пользователе
    Регистрация
    22.12.2014
    Сообщений
    2,768
    Записей в дневнике
    33
    Репутация: 28 Добавить или отнять репутацию

    По умолчанию

    А еще нигде не указан Мейкер для которого скрипт

    А можно сделать не анимацию, а по отдельному окну для каждой валюты?
    Последний раз редактировалось Пётр; 14.08.2015 в 17:30.
    Лицензионный VX Ace. Спасибо Петр.
    2 года мукеризма в пустую.

  7. #7

    По умолчанию

    Цитата Сообщение от Paranoid Посмотреть сообщение
    А можно сделать не анимацию, а по отдельному окну для каждой валюты?
    В самом скрипте нельзя сделать отдельные окна для каждой валюты.
    Последний раз редактировалось DK; 14.08.2015 в 16:27.

  8. #8
    Хранитель Аватар для Paranoid
    Информация о пользователе
    Регистрация
    22.12.2014
    Сообщений
    2,768
    Записей в дневнике
    33
    Репутация: 28 Добавить или отнять репутацию

    По умолчанию

    Жаль
    Лицензионный VX Ace. Спасибо Петр.
    2 года мукеризма в пустую.

  9. #9

    По умолчанию

    Версия для MV.

    Основные отличия от Ace версии:
    - Возможность блокировать/разблокировать использование определенной валюты
    - Возможность управлять выбором валюты командой в меню + разные настройки
    - Больше различных вызовов скриптов

  10. #10

    По умолчанию

    Версия для совместимости с ядром DKCore версии 1.21

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

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

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

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

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

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

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

Ваши права

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