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
Социальные закладки