Добавление предметов по переменной

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
11 года 3 мес. назад - 9 года 2 мес. назад #77623 от DeadElf79
Добавление предметов по переменной
Информация:
Автор: DeadElf79
Версия скрипта: 1.2
Версия мейкера: XP, VX, VX Ace
Тип: Компонент, дополняющий систему выдачи вещей

Описание:
Позволяет добавить необходимый предмет, оружие или броню в инвентарь с помощью указания номеров двух переменных.
Пример:
Code:
$game_party.var_gain_weapon(5,6)
Добавит в инвентарь оружие, ID которого указано в переменной под номером 5. Количество добавляемого оружия указано в переменной под номером 6.

Установка:
Предварительная настройка ивентов перед использованием скрипта описана здесь: ссылка на пост.

Код:
Code:
# Добавление предметов по переменной # Автор: DeadElf79 # Версия: 1.2 # # Описание: # Немного модифицированные стандартные методы # для использования сразу с переменными # # Как использовать: # 1. в одну переменную вы записываете ID нужного итема # 2. в другую пишете количество # 3. вызываете одну из следующих функций для получения предмета: # $game_party.var_gain_item(var1, var2) # $game_party.var_gain_weapon(var1, var2) # $game_party.var_gain_armor(var1, var2) # (здесь и далее: # var1 - ID первой переменной, # var2 - ID второй переменной) # или одну из этих, чтобы отобрать предмет (учтите, что даже при отборе # предмета вы должны указывать во второй переменной положительное число): # $game_party.var_lose_item(var1, var2) # $game_party.var_lose_weapon(var1, var2) # $game_party.var_lose_armor(var1, var2) # # Используя переменные, вы можете указать случайный ID предмета # и/или случайное количество предметов. # Собственно, код class Game_Party #-------------------------------------------------------------------------- # * Gain Items (or lose) # var_id : variable ID # var_amount : variable ID for quantity #-------------------------------------------------------------------------- def var_gain_item(var_id, var_amount) # Update quantity data in the hash. item=$data_items[ $game_variables[var_id] ] n=$game_variables[var_amount] if item gain_item(item, n) end end #-------------------------------------------------------------------------- # * Gain Weapons (or lose) # var_id : variable ID # var_amount : variable ID for quantity #-------------------------------------------------------------------------- def var_gain_weapon(var_id, var_amount) # Update quantity data in the hash. weapon=$data_weapons[ $game_variables[var_id] ] n=$game_variables[var_amount] if weapon gain_weapon(weapon, n) end end #-------------------------------------------------------------------------- # * Gain Armor (or lose) # var_id : variable ID # var_amount : variable ID for quantity #-------------------------------------------------------------------------- def var_gain_armor(var_id, var_amount) # Update quantity data in the hash. armor=$data_armors[ $game_variables[var_id] ] n=$game_variables[var_amount] if armor gain_armor(armor, n) end end #-------------------------------------------------------------------------- # * Lose Items # var_id : variable ID # n : variable ID for quantity #-------------------------------------------------------------------------- def var_lose_item(var_id, n) # Reverse the numerical value and call it var_gain_item item=$data_items[ $game_variables[var_id] ] n=$game_variables[var_amount] if item gain_item(item, -n) end end #-------------------------------------------------------------------------- # * Lose Weapons # var_id : variable ID # n : variable ID for quantity #-------------------------------------------------------------------------- def var_lose_weapon(var_id, n) # Reverse the numerical value and call it var_gain_weapon weapon=$data_weapons[ $game_variables[var_id] ] n=$game_variables[var_amount] if weapon gain_weapon(weapon, -n) end end #-------------------------------------------------------------------------- # * Lose Armor # var_id : variable ID # n : variable ID for quantity #-------------------------------------------------------------------------- def var_lose_armor(var_id, n) # Reverse the numerical value and call it var_gain_armor armor=$data_armors[ $game_variables[var_id] ] n=$game_variables[var_amount] if armor gain_armor(armor, -n) end end end

Благодарности:
Ren310, за то, что подсказал, что анимацию сундуков можно сделать частью общего события.
Urban.Wolfling aka Волчонок - за то, что вдохновил пересмотреть этот скрипт и добавить совместимость с его скриптом ( его можно посмотреть по этой ссылке )
Последнее редактирование: 9 года 2 мес. назад пользователем DeadElf79.
Спасибо сказали: Ren310, Dprizrak1, Jas6666

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
11 года 3 мес. назад - 11 года 3 мес. назад #77625 от DeadElf79
Предварительная настройка
Данная инструкция содержит отображение содержимого для сундуков, в которых только один типа предметов.

Шаг 1.
Создадим общее событие под названием "Сундуки". Оставим его пока пустым.

Шаг 2.
Создадим на карте событие, которое станет нашим будущим сундуком, добавим в него указание номера сундука и вызов общего события:
[IMG


На второй странице зададим в качестве графики сундук в открытом состоянии и зададим вызов страницы, если локальный переключатель А включен:
[IMG


Шаг 3.
Откроем общее событие "Сундуки" и создадим условие, проверяющее номер сундука, вызвавшего событие.
Зададим три переменных, которые содержат всю необходимую информацию: тип содержимого, ID в базе данных и количество.
[IMG


Шаг 4.
Далее предполагается, что вы используете измененную систему сообщений (Custom Message System), которая поддерживает отображение названия оружия, брони или предмета при помощи тега. Я использую UMS (Universal Message System) для XP.
Далее - создадим условие, проверяющее типа содержимого и его количество.
Для одного оружия выведем строку:

Вы нашли в сундуке:
\c[3]\ow[\v[5]]

Для двух и более оружий выведем:

Вы нашли в сундуке:
\c[3]\ow[\v[5]]х\v[6]

После чего добавим данное оружие в инвентарь.

Так все вышеописанное выглядит в событии:
[IMG


Шаг 5.
Также можно установить анимацию открытия сундука и включить локальный переключатель А.
Полный текст события, указана проверка только для типа "Оружие". Вы можете дописать условия с BoxContent TYPE равным 1 (броня) и 2 (предметы) самостоятельно, они аналогичны.
[IMG


Вот так выглядит добавление денег:
[IMG


Шаг 6.
Тестируем это в игре и получаем:
[IMG
Последнее редактирование: 11 года 3 мес. назад пользователем DeadElf79.
Спасибо сказали: Ren310, caveman, Jas6666

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
11 года 3 мес. назад #77626 от DeadElf79
Скрипт написан специально для тех, кто использует общие события, а не настраивает каждое событие целиком и полностью отдельно от другого.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
9 года 3 мес. назад - 9 года 3 мес. назад #96579 от DeadElf79
Вышел тут недавно скрипт PickUp Message и мне понравилась его простота. Так что я решил проверить, пойдет ли он у меня и понял, что скрипт из этого топика с ним слегка несовместим.

Исправил свой код, а заодно добавил небольшое описание и инструкцию в самом начале.

Скрипт был проверен на XP и VX Ace, он совместим с обеими версиями. Пользуйтесь на здоровье!
Последнее редактирование: 9 года 3 мес. назад пользователем DeadElf79.
Спасибо сказали: Hinigami

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
9 года 2 мес. назад #96634 от DeadElf79
Пофиксил пару критических ошибок, которые не успел проверить. Вроде теперь всё более-менее.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Время создания страницы: 0.097 секунд
Работает на Kunena форум