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

Тема: Variables Item

  1. #1
    Маститый Аватар для HopeBree
    Информация о пользователе
    Регистрация
    27.03.2013
    Сообщений
    1,204
    Записей в дневнике
    6
    Репутация: 38 Добавить или отнять репутацию

    По умолчанию Variables, Switches And Scripts Items

    Variables, Switches And Scripts Items
    Автор: HopeBree
    Версия: 1.3
    Тип: Предметы




    Описание:
    Скрипт позволяет изменить переменную или переключатель после использования предмета, и вызов скрипта, не используя общие события.

    Использование:
    Добавить в нотетаг следующие: <variable A: B C> или <switch D: E>
    A - ID переменной
    B - операция над переменной, может принимать следующие значение:
    • set - Выполняет присваивание значения начальной переменной (без дополнительных вычислений);
    • add - Выполняет сложение значения с начальной переменной и возвращает результат;
    • sub - Выполняет вычитание значения от начальной переменной и возвращает результат;
    • mul - Выполняет умножение значения на начальную переменную и возвращает результат;
    • div - Выполняет деление начальной переменной на значение и возвращает результат;
    • mod - Выполняет деление начальной переменной на значение и возвращает остаток.
    C - значение
    D - ID переключателя
    E - true или false, включить или выключить переключатель
    Для вызова скрипта использовать <script>F</script>
    F - скрипт
    Код:
    <variable 10: set 100>
    <switch 10: true>
    <script>
      SceneManager.call_ext(Scene_HistBook, :ancient_book)
    </script>
    Скрипт:
    PHP код:
    #==============================================================================#
    #  Variables, Switches And Scripts Items                                       #
    #------------------------------------------------------------------------------#
    #  Автор: HopeBree                                                             #
    #  Для: RPGMAKER VX ACE                                                        #
    #  Версия 1.4                                                                  #
    #------------------------------------------------------------------------------#
    #  13.05.2017 - Версия 1.4 - Небольшие исправления                             #
    #  04.01.2016 - Версия 1.3 - Добавлены скрипты                                 #
    #  16.11.2015 - Версия 1.2 - Добавлены переключатели                           #
    #  26.10.2015 - Версия 1.1 - Можно использовать не только числа в значении "C" #
    #  25.10.2015 - Версия 1.0 - Релиз                                             #
    #==============================================================================#
    # Скрипт позволяет изменить переменную или переключатель после использования   #
    # предмета, и вызов скрипта, не используя общие события.                       #
    #------------------------------------------------------------------------------#
    # Добавить в нотетаг следующие: <variable A: B C> или <switch D: E>            #
    #   A - ID переменной                                                          #
    #   B - операция над переменной, может принимать следующие значение:           #
    #      ● set - Выполняет присваивание значения начальной переменной (без       #
    #              дополнительных вычислений);                                     #
    #      ● add - Выполняет сложение значения с начальной переменной и            #
    #              возвращает результат;                                           #
    #      ● sub - Выполняет вычитание значения от начальной переменной и          #
    #              возвращает результат;                                           #
    #      ● mul - Выполняет умножение значения на начальную переменную и          #
    #              возвращает результат;                                           #
    #      ● div - Выполняет деление начальной переменной на значение и            #
    #              возвращает результат;                                           #
    #      ● mod - Выполняет деление начальной переменной на значение и            #
    #              возвращает остаток.                                             #
    #   C - значение                                                               #
    #   D - ID переключателя                                                       #
    #   E - true или false, включить или выключить переключатель                   #
    # Для вызова скрипта использовать <script>F</script>                           #
    #   F - скрипт                                                                 #
    #------------------------------------------------------------------------------#
    # Например:                                                                    #
    #   <variable 10: set 100>                                                     #
    #   <switch 10: true>                                                          #
    #   <script>                                                                   #
    #     SceneManager.call_ext(Scene_HistBook, :ancient_book)                     #
    #   </script>                                                                  #
    #==============================================================================#

    module HB
      module VARIABLES_AND_SWITCHES_USE_ITEM
        V_REGEX 
    = /<variable (\d+): (set|add|sub|mul|div|mod) (.*?)>/
        
    S_REGEX = /<switch (\d+): (true|false)>/
        
    C_REGEX = /<script>(.*?)<\/script>/im
      end
    end

    module RPG
      
    class Item
        def variables_items
          load_notetag_variables_items 
    if @variables_items.nil?
          return @
    variables_items
        end
        
        def switches_items
          load_notetag_switches_items 
    if @switches_items.nil?
          return @
    switches_items
        end
        
        def scripts_items
          load_notetag_scripts_items 
    if @scripts_items.nil?
          return @
    scripts_items
        end
        
        def load_notetag_variables_items
          
    @variables_items = []
          
    res self.note.scan(HB::VARIABLES_AND_SWITCHES_USE_ITEM::V_REGEX)
          
    res.each do |data|
            
    varItem VariablesSwitches.new
            
    varItem.v_id data[0].to_i
            varItem
    .v_op data[1].to_s
            varItem
    .v_va data[2]
            @
    variables_items << varItem
          end
        end
        def load_notetag_switches_items
          
    @switches_items = []
          
    res self.note.scan(HB::VARIABLES_AND_SWITCHES_USE_ITEM::S_REGEX)
          
    res.each do |data|
            
    swiItem VariablesSwitches.new
            
    swiItem.s_id data[0].to_i
            swiItem
    .s_va data[1].to_s
            
    @switches_items << swiItem
          end
        end
        def load_notetag_scripts_items
          
    @scripts_items = []
          
    res self.note.scan(HB::VARIABLES_AND_SWITCHES_USE_ITEM::C_REGEX)
          
    res.each do |data|
            
    scrItem VariablesSwitches.new
            
    scrItem.c_va data[0]
            @
    scripts_items << scrItem
          end
        end
      end  
    end

    class VariablesSwitches
      
      attr_accessor 
    :v_id
      attr_accessor 
    :v_op
      attr_accessor 
    :v_va
      attr_accessor 
    :s_id
      attr_accessor 
    :s_va
      attr_accessor 
    :c_va
      
      def initialize
        
    @v_id 0
        
    @v_op "set"
        
    @v_va 0
        
    @s_id 0
        
    @s_va false
        
    @c_va 0
      end
    end

    class Game_Battler Game_BattlerBase
      
      alias 
    :hb_variables_and_switches_use_item_consume_item :consume_item
      def use_item
    (item)
        
    hb_variables_and_switches_use_item_consume_item(item)
        
    item.variables_items.each do |varItem|
          case 
    varItem.v_op
          when 
    "set"
            
    $game_variables[varItem.v_id] = eval(varItem.v_va)
          
    when "add"
            
    $game_variables[varItem.v_id] += eval(varItem.v_va)
          
    when "sub"
            
    $game_variables[varItem.v_id] -= eval(varItem.v_va)
          
    when "mul"
            
    $game_variables[varItem.v_id] *= eval(varItem.v_va)
          
    when "div"
            
    $game_variables[varItem.v_id] /= eval(varItem.v_va)
          
    when "mod"
            
    $game_variables[varItem.v_id] %= eval(varItem.v_va)
          
    end
        end
        item
    .switches_items.each do |swiItem|
          
    $game_switches[swiItem.s_id] = swiItem.s_va
        end
        item
    .scripts_items.each do |scrItem|
          eval(
    scrItem.c_va)
        
    end
      end
    end 
    Последний раз редактировалось HopeBree; 13.05.2017 в 12:13. Причина: Версия: 1.4

  2. #2
    Маститый Аватар для HopeBree
    Информация о пользователе
    Регистрация
    27.03.2013
    Сообщений
    1,204
    Записей в дневнике
    6
    Репутация: 38 Добавить или отнять репутацию

    По умолчанию

    Делал для своих нужд, скрипт принципе бесполезен, но убирает возню с общими событиями.
    Потом может добавлю и свичи сюда.

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

    По умолчанию

    Цитата Сообщение от HopeBree Посмотреть сообщение
    Делал для своих нужд, скрипт принципе бесполезен, но убирает возню с общими событиями.
    Потом может добавлю и свичи сюда.
    А для каких собственно нужд? Просто интересно.
    Лицензионный VX Ace. Спасибо Петр.
    2 года мукеризма в пустую.

  4. #4
    Маститый Аватар для HopeBree
    Информация о пользователе
    Регистрация
    27.03.2013
    Сообщений
    1,204
    Записей в дневнике
    6
    Репутация: 38 Добавить или отнять репутацию

    По умолчанию

    Цитата Сообщение от Paranoid Посмотреть сообщение
    А для каких собственно нужд? Просто интересно.
    где-то тут мелькал скрипт, который писал, с фонариком и батарейками, собственно для него (и не только) реализация батареек через переменные.
    тут вроде еще выкладывали тутор для создания человеческих нужд, по типу голода на переменных. хоть не смотрел, но принцип я догадываюсь там какой.
    запихивать в общие события кучу "одинаковых" событий с абсолютно разными значениями и забивать их штук на 100+, а потом найти то, что тебе рли было нужно, довольна таки тяжко
    у меня, например, было забито где-то за 120 таких событий, во время теста я просто путался, где и что нужно исправить.

  5. #5
    Маститый Аватар для HopeBree
    Информация о пользователе
    Регистрация
    27.03.2013
    Сообщений
    1,204
    Записей в дневнике
    6
    Репутация: 38 Добавить или отнять репутацию

    По умолчанию

    появилась мысль, как бы расширить скрипт до всех возможностей переменных, которые доступны мукеру, а не только действие с числом
    добавить рандомные числа, переменная+переменная, гейм дата, скрипты и тд и тп.
    надо до конца разобраться с регулярными выражениями и все :3

  6. #6
    Маститый Аватар для HopeBree
    Информация о пользователе
    Регистрация
    27.03.2013
    Сообщений
    1,204
    Записей в дневнике
    6
    Репутация: 38 Добавить или отнять репутацию

    По умолчанию

    Шапку обновил "Версия 1.1"
    Можно использовать не только числа в значении "C"

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

    По умолчанию

    Цитата Сообщение от HopeBree Посмотреть сообщение
    Шапку обновил "Версия 1.1"
    Можно использовать не только числа в значении "C"
    То есть можно составлять слова таким образом <variable 10: set Hello> <variable 10: add World>?
    Лицензионный VX Ace. Спасибо Петр.
    2 года мукеризма в пустую.

  8. #8
    Маститый Аватар для HopeBree
    Информация о пользователе
    Регистрация
    27.03.2013
    Сообщений
    1,204
    Записей в дневнике
    6
    Репутация: 38 Добавить или отнять репутацию

    По умолчанию

    хммм, не пробовал, я таким вообще не занимался ни когда даже
    но слова использовать можешь. а по идее да, должно сработать, но пробела не будет между словами скорее всего

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

    По умолчанию

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

  10. #10
    Маститый Аватар для HopeBree
    Информация о пользователе
    Регистрация
    27.03.2013
    Сообщений
    1,204
    Записей в дневнике
    6
    Репутация: 38 Добавить или отнять репутацию

    По умолчанию

    хмм, однако да, сам не проверил D:
    если задать скрипт, то пишется как слово, пойду ковырять тогда

    upd: вроде как исправил, можно использовать более сложные выражения, для вывода текста в переменной нужно писать текст в кавычках, тобишь в твоем варианте будет выглядеть так
    Код:
    <variable 10: set "Hello">
    <variable 10: add "World">
    получишь в переменной HelloWorld, а чтобы был пробел между слов
    Код:
    <variable 10: set "Hello ">
    <variable 10: add "World">
    
    <variable 10: set "Hello">
    <variable 10: add " World">
    
    <variable 10: set "Hello">
    <variable 10: add " ">
    <variable 10: add "World">
    так же можешь использовать и переменные, и скрипты
    например сложение двух переменных
    Код:
    <variable 10: add $game_variables[11]>
    Последний раз редактировалось HopeBree; 16.11.2015 в 03:21.

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

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

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

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

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

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

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

Ваши права

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