- Сообщений: 119
- Спасибо получено: 3
(VX) EK Items Menu 1.4b
- Equilibrium Keeper
-
Автор темы
- Не в сети
- Захожу иногда
-
- Скриптер
Скрыть
Больше
17 года 11 мес. назад #20486
от Equilibrium Keeper
[size=14pt]Аддончег[/size]
[size=14pt]Собсна, сам скрипт[/size]
Истина там, во тьме, и во тьме ты иди - мыслящий бродит во тьме.
В себя самого загляни, открой свою дорогу в Ничто.
В Ничто ты войди, во тьму, и пойми:
Пока ты во тьме, не может она быть Ничем - ведь там ты.
Equilibrium Keeper создал тему: (VX) EK Items Menu 1.4b
[SIZE=28pt]EK Items Menu 1.4b[/SIZE]
[size=14pt]Описание[/size]
Скрипт изменяет структуру меню предметов, добавляя фильтрацию по различным критериям
[size=14pt]Скриншоты[/size]
[size=14pt]Внимание!!![/size]
Скрипт использует мой кривенький аддончег, так что его цепляем в обязательном порядке. Траблы возможны только в том случае, если ваши кастомные скрипты будут менять тоже, что и мои.
[size=14pt]Описание[/size]
Скрипт изменяет структуру меню предметов, добавляя фильтрацию по различным критериям
[size=14pt]Скриншоты[/size]
[size=14pt]Внимание!!![/size]
Скрипт использует мой кривенький аддончег, так что его цепляем в обязательном порядке. Траблы возможны только в том случае, если ваши кастомные скрипты будут менять тоже, что и мои.
[size=14pt]Аддончег[/size]
Code:
#==============================================================================
# EK Addon v.1.00b
#------------------------------------------------------------------------------
# Created by: Equilibrium Keeper [equilibriumkeeper@inbox.com]
# Created on: 25.05.2008 22:20:49
#==============================================================================
# Description: The given package of scripts expands opportunities of original
# functions. All made changes are described below. Problems can arise only in
# the event that you use the scripts changing теже the functions.
#------------------------------------------------------------------------------
# Install: Make a new blank script page above main and copy this script.
#==============================================================================
# Window_Command:
# 1. Procedure of a call is changed:
# (width, commands, column_max = 1, row_max = 0, spacing = 32, textalign = 0)
# textalign Change text align (0 - Left; 1 - Center; 2 - Right)
#
#------------------------------------------------------------------------------
# Window_Help:
# 1. Procedure of a call is changed:
# (x = 0, y = 0, width = 544, height = WLH + 32)
#==============================================================================
class Window_Command Window_Selectable
def initialize(width, commands, column_max = 1, row_max = 0, spacing = 32, textalign = 0)
if row_max == 0
row_max = (commands.size + column_max - 1) / column_max
end
super(0, 0, width, row_max * WLH + 32, spacing)
@commands = commands
@item_max = commands.size
@column_max = column_max
@textalign = textalign
refresh
self.index = 0
end
def draw_item(index, enabled = true)
rect = item_rect(index)
rect.x += 4
rect.width -= 8
self.contents.clear_rect(rect)
self.contents.font.color = normal_color
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(rect, @commands[index], @textalign)
end
end
#==============================================================================
class Window_Help Window_Base
def initialize(x = 0, y = 0, width = 544, height = WLH + 32)
super(x, y, width, height)
end
end
#==============================================================================
[size=14pt]Собсна, сам скрипт[/size]
Code:
#==============================================================================
# EK Items Menu v.1.4b
#------------------------------------------------------------------------------
# Created by: Equilibrium Keeper [equilibriumkeeper@inbox.com]
# Created on: 26.05.2008 17:29:18
# Отдельное спасибо: Рольф, ANNxiousity, insider
# А так же: rpgmaker.sk6.ru, rpg-maker.info, rpgmakervx.net
#==============================================================================
# Описание: Скрипт изменяет структуру меню предметов, добавляя фильтрацию
# по различным критериям
#------------------------------------------------------------------------------
# Требования: Addon Equilibrium Keeper а версии 1.00 или выше
# Установка: В редакторе скриптов создайте чистую страницу над Main и
# скопируйте туда данный скрипт.
#==============================================================================
# Инструкция: В массив ITEMS_TYPE (строка 43) впишите названия желаемых
# разделов. В двумерный массив ITEMS_FILTRARION (строка 44) впишите критерии
# отбора из списка ниже или задайте свои. ПРИМЕЧАНИЕ: Одномерные массивы
# (критерии отбора) в массиве ITEM_FILTRATION должны следовать именно в том
# порядке, в котором следуют соответствующие им категории в ITEMS_TYPE!
#------------------------------------------------------------------------------
# Список стандартных критериев отбора (по умолчанию отрисовываются все предметы):
# Usable - Предметы, которые можно использовать либо в меню, либо в бою, либо и там и там
# Usable! - Предметы, которые нельзя использовать никогда
# Equipment - Предметы экипировки - оружие или броня (или и то и другое о.О)
# Equipment! - Предметы, не являющиеся частью экипировки
# InMenu - Предметы, которые можно использовать в меню
# InMenu! - Предметы, которые нельзя использовать в меню
# InBattle - Предметы, которые можно использовать в бою
# InBattle! - Предметы, которые нельзя использовать в бою
#------------------------------------------------------------------------------
# Для того, что бы создать свой собственный критерий отбора следует:
# 1)Вписать название новой категории в массив ITEMS_TYPE, в качестве нового
# значения или заменив уже существующее.
# 2)Придумать тег, например \alch и вписать его в поле Note оружия,
# доспеха или предмета, который вы решили отнести к новой категории.
# 3)Вписать этот тег, заменив \ на \ в массив ITEMS_FILTRATION, как новое
# условие или заменив им уже существующие.
# 4)В блок GetItemType, в конец case а (ст.178) добавить блок кода, аналогичный
# строкам 151...178, заменив \alch и \alch! на ваш тег и тег отрицающий.
#==============================================================================
module EKScripts
ITEMS_TYPE = [ Usable , Battle Only , Equipment , Other , Alchemistry ]
ITEMS_FILTRARION = [
[ InMenu , Equipment! , \alch! ], # Usable
[ InBattle , InMenu! , Equipment! ], # Battle Only
[ Equipment ], # Equipment
[ Usable! , Equipment! , \alch! ], # Other
[ \alch ] # For example: Alchemistry
] # ? Do not delete
end
class Window_Item Window_Selectable
#--------------------------------------------------------------------------
attr_writer :type
#--------------------------------------------------------------------------
# * Object Initialization
# x : window x-coordinate
# y : window y-coordinate
# width : window width
# height : window height
# type : item type
#--------------------------------------------------------------------------
def initialize(x, y, width, height, type = -1)
super(x, y, width, height)
@items_notes = []
for i in 1..$data_items.size - 1
@items_notes[i] = $data_items[i].note
end
@weapons_notes = []
for i in 1..$data_weapons.size - 1
@weapons_notes[i] = $data_weapons[i].note
end
@armors_notes = []
for i in 1..$data_armors.size - 1
@armors_notes[i] = $data_armors[i].note
end
@type = type
@items_filtrarion = EKScripts::ITEMS_FILTRARION
@column_max = 2
self.index = 0
refresh
end
#--------------------------------------------------------------------------
# * Whether or not to include in item list
# item : item
#--------------------------------------------------------------------------
def include?(item)
return false if item == nil
if $game_temp.in_battle
return false unless item.is_a?(RPG::Item)
else
return false if GetItemType(item) == false
end
return true
end
#--------------------------------------------------------------------------
# * Whether or not to include in valid items list
# item : item
#--------------------------------------------------------------------------
def GetItemType(item)
@item = item
@return = true
for i in 0..@items_filtrarion[@type].size - 1
if @return == true
case @items_filtrarion[@type][i]
when Usable
if !(item.is_a?(RPG::Armor) || item.is_a?(RPG::Weapon))
unless $data_items[item.id].menu_ok? || $data_items[item.id].battle_ok?
@return = false
end
end
when Usable!
if !(item.is_a?(RPG::Armor) || item.is_a?(RPG::Weapon))
if $data_items[item.id].menu_ok? || $data_items[item.id].battle_ok?
@return = false
end
end
when InMenu
if !(item.is_a?(RPG::Armor) || item.is_a?(RPG::Weapon))
unless $data_items[item.id].menu_ok?
@return = false
end
end
when InMenu!
if !(item.is_a?(RPG::Armor) || item.is_a?(RPG::Weapon))
if $data_items[item.id].menu_ok?
@return = false
end
end
when InBattle
if !(item.is_a?(RPG::Armor) || item.is_a?(RPG::Weapon))
unless $data_items[item.id].battle_ok?
@return = false
end
end
when InBattle!
if !(item.is_a?(RPG::Armor) || item.is_a?(RPG::Weapon))
if $data_items[item.id].battle_ok?
@return = false
end
end
when Equipment
unless item.is_a?(RPG::Armor) || item.is_a?(RPG::Weapon)
@return = false
end
when Equipment!
if item.is_a?(RPG::Armor) || item.is_a?(RPG::Weapon)
@return = false
end
when IsWeapon
unless item.is_a?(RPG::Weapon)
@return = false
end
when IsWeapon!
if item.is_a?(RPG::Weapon)
@return = false
end
when IsArmor
unless item.is_a?(RPG::Armor)
@return = false
end
when IsArmor!
if item.is_a?(RPG::Armor)
@return = false
end
when \alch
if item.is_a?(RPG::Weapon)
if @weapons_notes[item.id].index( \alch ) == nil
@return = false
end
elsif item.is_a?(RPG::Armor)
if @armors_notes[item.id].index( \alch ) == nil
@return = false
end
else
if @items_notes[item.id].index( \alch ) == nil
@return = false
end
end
when \alch!
if item.is_a?(RPG::Weapon)
if @weapons_notes[item.id].index( \alch ) != nil
@return = false
end
elsif item.is_a?(RPG::Armor)
if @armors_notes[item.id].index( \alch ) != nil
@return = false
end
else
if @items_notes[item.id].index( \alch ) != nil
@return = false
end
end
end
end
end
return @return
end
end
class Scene_Item Scene_Base
#--------------------------------------------------------------------------
# * Start processing
#--------------------------------------------------------------------------
def start
super
create_menu_background
@items_type = EKScripts::ITEMS_TYPE
@spacing = 32 - (@items_type.size - 4) * 8
if @spacing = 0
@spacing = 8
end
@command_window = Window_Command.new(544, @items_type, @items_type.size, 0, @spacing, 1)
@command_window.index = 0
@viewport = Viewport.new(0, 0, 544, 416)
@help_window = Window_Help.new (0, 56)
@help_window.viewport = @viewport
@item_window = Window_Item.new(0, 112, 544, 304, 0)
@item_window.viewport = @viewport
@item_window.help_window = @help_window
@item_window.active = false
@target_window = Window_MenuStatus.new(0, 0)
hide_target_window
@command_window.active = true
@item_window.active = false
end
#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@command_window.dispose
@viewport.dispose
@help_window.dispose
@item_window.dispose
@target_window.dispose
end
#--------------------------------------------------------------------------
# * Update Frame
#--------------------------------------------------------------------------
def update
super
update_menu_background
@command_window.update
@help_window.update
@item_window.update
@target_window.update
if @command_window.active
update_command_selection
elsif @item_window.active
update_item_selection
elsif @target_window.active
update_target_selection
end
end
#--------------------------------------------------------------------------
# * Update Command Selection
#--------------------------------------------------------------------------
def update_command_selection
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
elsif Input.trigger?(Input::C)
Sound.play_decision
@command_window.active = false
@item_window.active = true
elsif Input.trigger?(Input::RIGHT) || Input.trigger?(Input::LEFT)
@item_window.type = @command_window.index
@item_window.refresh
@item_window.update_help
end
end
#--------------------------------------------------------------------------
# * Update Item Selection
#--------------------------------------------------------------------------
def update_item_selection
if Input.trigger?(Input::B)
Sound.play_decision
@item_window.active = false
@command_window.active = true
Sound.play_cancel
elsif Input.trigger?(Input::C)
@item = @item_window.item
if @item != nil
$game_party.last_item_id = @item.id
end
if $game_party.item_can_use?(@item)
Sound.play_decision
determine_item
else
Sound.play_buzzer
end
end
end
#--------------------------------------------------------------------------
# * Show(Recreate) Target Window
# right : Right justification flag (if false, left justification)
#--------------------------------------------------------------------------
def show_target_window(right)
@item_window.active = false
@target_window.dispose
@target_window = Window_MenuStatus.new(0, 0)
width_remain = 544 - @target_window.width
@target_window.x = right ? width_remain : 0
@target_window.visible = true
@target_window.active = true
if right
@viewport.rect.set(0, 0, width_remain, 416)
@viewport.ox = 0
else
@viewport.rect.set(@target_window.width, 0, width_remain, 416)
@viewport.ox = @target_window.width
end
end
end
[size=18pt]Авторы и Благодарности[/size]
[size=14pt]Equilibrium Keeper[/size]
[size=10pt]Кодер[/size]
[size=14pt]Рольф[/size]
[size=10pt]Консультант[/size]
[size=14pt]insider[/size]
[size=10pt]Консультант[/size]
[size=14pt]ANNxiousity[/size]
[size=10pt]Переводчик[/size]
[size=14pt]Примечание автора[/size]
Мой второй скрипт. Пожелания и критика приветствуются!
[size=14pt]Equilibrium Keeper[/size]
[size=10pt]Кодер[/size]
[size=14pt]Рольф[/size]
[size=10pt]Консультант[/size]
[size=14pt]insider[/size]
[size=10pt]Консультант[/size]
[size=14pt]ANNxiousity[/size]
[size=10pt]Переводчик[/size]
[size=14pt]Примечание автора[/size]
Мой второй скрипт. Пожелания и критика приветствуются!
Истина там, во тьме, и во тьме ты иди - мыслящий бродит во тьме.
В себя самого загляни, открой свою дорогу в Ничто.
В Ничто ты войди, во тьму, и пойми:
Пока ты во тьме, не может она быть Ничем - ведь там ты.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
17 года 11 мес. назад #20490
от Arykray
Arykray ответил в теме (VX) EK Items Menu 1.00b
Довольно не плохой скрипт, особенно если учесть, что на VX. Ошибок пока в работе не заметил.
Наконец-то скриптеры на портал подтягиваются, так держать!
Наконец-то скриптеры на портал подтягиваются, так держать!
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Equilibrium Keeper
-
Автор темы
- Не в сети
- Захожу иногда
-
- Скриптер
Скрыть
Больше
- Сообщений: 119
- Спасибо получено: 3
17 года 11 мес. назад #20493
от Equilibrium Keeper
Истина там, во тьме, и во тьме ты иди - мыслящий бродит во тьме.
В себя самого загляни, открой свою дорогу в Ничто.
В Ничто ты войди, во тьму, и пойми:
Пока ты во тьме, не может она быть Ничем - ведь там ты.
Equilibrium Keeper ответил в теме (VX) EK Items Menu 1.00b
Есть они.
Совсем забыл на радостях! В скрипте есть ошибка. Он отрисовывает новые экраны предметов по нажатию вправо или влево, но если их зажать - начинает немного сходить с ума. Как это исправить - не знаю. Видимо что нить iskerpress? return? Хотя хотелось бы что бы он продолжал их перебирать, но с некоторой задержкой.
Совсем забыл на радостях! В скрипте есть ошибка. Он отрисовывает новые экраны предметов по нажатию вправо или влево, но если их зажать - начинает немного сходить с ума. Как это исправить - не знаю. Видимо что нить iskerpress? return? Хотя хотелось бы что бы он продолжал их перебирать, но с некоторой задержкой. Истина там, во тьме, и во тьме ты иди - мыслящий бродит во тьме.
В себя самого загляни, открой свою дорогу в Ничто.
В Ничто ты войди, во тьму, и пойми:
Пока ты во тьме, не может она быть Ничем - ведь там ты.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
17 года 11 мес. назад #20495
от Arykray
Arykray ответил в теме (VX) EK Items Menu 1.00b
По моему заморочка в блокох Update Command Selection
и include?()
Может это привычка, оставшаяся у меня от XP, но я бы сделал из этих блоков один, так как именно в блоке include?() у тебя идет обновление команд.
Code:
#--------------------------------------------------------------------------
# * Update Command Selection
#--------------------------------------------------------------------------
def update_command_selection
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
elsif Input.trigger?(Input::C)
Sound.play_decision
@command_window.active = false
@item_window.active = true
elsif Input.trigger?(Input::RIGHT) || Input.trigger?(Input::LEFT)
@item_window.dispose
@item_window = Window_Item.new(0, 112, 544, 304, @command_window.index)
@item_window.active = false
@item_window.help_window = @help_window
@item_window.update_help
end
end
и include?()
Code:
#--------------------------------------------------------------------------
# * Whether or not to include in item list
# item : item
#--------------------------------------------------------------------------
def include?(item)
@item_id = item.id
return false if item == nil
if $game_temp.in_battle
return false unless item.is_a?(RPG::Item)
end
case @type
when 0
return false if item.is_a?(RPG::Weapon) || item.is_a?(RPG::Armor)
return false unless $data_items[@item_id].menu_ok?
when 1
return false if item.is_a?(RPG::Weapon) || item.is_a?(RPG::Armor)
return false if $data_items[@item_id].menu_ok?
return false unless $data_items[@item_id].battle_ok?
when 2
return false unless item.is_a?(RPG::Weapon) || item.is_a?(RPG::Armor)
when 3
return false if item.is_a?(RPG::Weapon) || item.is_a?(RPG::Armor)
return false if $data_items[@item_id].menu_ok? || $data_items[@item_id].battle_ok?
end
return true
end
Может это привычка, оставшаяся у меня от XP, но я бы сделал из этих блоков один, так как именно в блоке include?() у тебя идет обновление команд.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Equilibrium Keeper
-
Автор темы
- Не в сети
- Захожу иногда
-
- Скриптер
Скрыть
Больше
- Сообщений: 119
- Спасибо получено: 3
17 года 11 мес. назад #20599
от Equilibrium Keeper
Истина там, во тьме, и во тьме ты иди - мыслящий бродит во тьме.
В себя самого загляни, открой свою дорогу в Ничто.
В Ничто ты войди, во тьму, и пойми:
Пока ты во тьме, не может она быть Ничем - ведь там ты.
Equilibrium Keeper ответил в теме (VX) EK Items Menu 1.4b
Update ... Selection, во всяком случае в VX, отвечает только за считывание нажатия кнопок, соответственно и обновляется постоянно. Если совместить эти блоки, то мукер надолго и капитально повиснет. ^^
А тот ужос в инклюде я сейчас разгребаю (будет еще хуже) - осталось только понять - как выудить подстроку из строки. Видимо я что-то не то пишу в аргументах метода .sub - находит он ее только если она стоит в начале файла x_x[hr]Обновил версию. Добавил возможность кастомизации фильтров и привел царящий в скрипте хаос в относительный беспорядок. Тестируйте!
Осталось только найти нормальный способ избавиться от бага с зажиманием кнопки...[hr]Обновил версию. Поправил баг из 1.1b[hr]Обновил до 1.3. Теперь InMenu и иже с ним будут игнорировать предметы экипировки, что бы исключить их из списка придется воспользоваться опцией Equipment! . Это так же исправит баг, когда InMenu и Equipment использовались вместе. (Спасибо, insider)[hr]Обновлено до версии 1.4b. Оптимизация. Спасибо, insider!
А тот ужос в инклюде я сейчас разгребаю (будет еще хуже) - осталось только понять - как выудить подстроку из строки. Видимо я что-то не то пишу в аргументах метода .sub - находит он ее только если она стоит в начале файла x_x[hr]Обновил версию. Добавил возможность кастомизации фильтров и привел царящий в скрипте хаос в относительный беспорядок. Тестируйте!

Осталось только найти нормальный способ избавиться от бага с зажиманием кнопки...[hr]Обновил версию. Поправил баг из 1.1b[hr]Обновил до 1.3. Теперь InMenu и иже с ним будут игнорировать предметы экипировки, что бы исключить их из списка придется воспользоваться опцией Equipment! . Это так же исправит баг, когда InMenu и Equipment использовались вместе. (Спасибо, insider)[hr]Обновлено до версии 1.4b. Оптимизация. Спасибо, insider!
Истина там, во тьме, и во тьме ты иди - мыслящий бродит во тьме.
В себя самого загляни, открой свою дорогу в Ничто.
В Ничто ты войди, во тьму, и пойми:
Пока ты во тьме, не может она быть Ничем - ведь там ты.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
17 года 11 мес. назад #20616
от Fizmatik
Fizmatik ответил в теме (VX) EK Items Menu 1.4b
Браво - хорошее начало для скриптера.
Так держать и мы будем публиковать твои скрипты в файловом архиве!
Так держать и мы будем публиковать твои скрипты в файловом архиве!
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Equilibrium Keeper
-
Автор темы
- Не в сети
- Захожу иногда
-
- Скриптер
Скрыть
Больше
- Сообщений: 119
- Спасибо получено: 3
17 года 11 мес. назад #20618
от Equilibrium Keeper
Истина там, во тьме, и во тьме ты иди - мыслящий бродит во тьме.
В себя самого загляни, открой свою дорогу в Ничто.
В Ничто ты войди, во тьму, и пойми:
Пока ты во тьме, не может она быть Ничем - ведь там ты.
Equilibrium Keeper ответил в теме (VX) EK Items Menu 1.4b
Спасибо! И спасибо всем тем кто помогал! 
Пойду дальше скриптить... *sochin*

Пойду дальше скриптить... *sochin*
Истина там, во тьме, и во тьме ты иди - мыслящий бродит во тьме.
В себя самого загляни, открой свою дорогу в Ничто.
В Ничто ты войди, во тьму, и пойми:
Пока ты во тьме, не может она быть Ничем - ведь там ты.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Время создания страницы: 0.101 секунд
