Войти на сайт

Авторизация, ждите ...
×

ТЕМА: Добавление предметов по переменной

Добавление предметов по переменной 9 года 9 мес. назад #77623

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • Проект месяца 1 местоОрганизатор конкурсовПисатель 3 местоУчительПрограммист RubyПроект месяца 2 место1 место в Готв3 местоВетеран
Добавление предметов по переменной
Информация:
Автор: DeadElf79
Версия скрипта: 1.2
Версия мейкера: XP, VX, VX Ace
Тип: Компонент, дополняющий систему выдачи вещей

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

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

Код:
# Добавление предметов по переменной
# Автор: 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 Волчонок - за то, что вдохновил пересмотреть этот скрипт и добавить совместимость с его скриптом (его можно посмотреть по этой ссылке)
Последнее редактирование: 7 года 9 мес. назад от DeadElf79.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Ren310, Dprizrak1, Jas6666

Добавление предметов по переменной 9 года 9 мес. назад #77625

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • Проект месяца 1 местоОрганизатор конкурсовПисатель 3 местоУчительПрограммист RubyПроект месяца 2 место1 место в Готв3 местоВетеран
Предварительная настройка
Данная инструкция содержит отображение содержимого для сундуков, в которых только один типа предметов.

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

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


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


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


Шаг 4.
Далее предполагается, что вы используете измененную систему сообщений (Custom Message System), которая поддерживает отображение названия оружия, брони или предмета при помощи тега. Я использую UMS (Universal Message System) для XP.
Далее - создадим условие, проверяющее типа содержимого и его количество.
Для одного оружия выведем строку:
Вы нашли в сундуке:
\c[3]\ow[\v[5]]
Для двух и более оружий выведем:
Вы нашли в сундуке:
\c[3]\ow[\v[5]]х\v[6]
После чего добавим данное оружие в инвентарь.

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


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


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


Шаг 6.
Тестируем это в игре и получаем:
Последнее редактирование: 9 года 9 мес. назад от DeadElf79.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Ren310, caveman, Jas6666

Добавление предметов по переменной 9 года 9 мес. назад #77626

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • Проект месяца 1 местоОрганизатор конкурсовПисатель 3 местоУчительПрограммист RubyПроект месяца 2 место1 место в Готв3 местоВетеран
Скрипт написан специально для тех, кто использует общие события, а не настраивает каждое событие целиком и полностью отдельно от другого.
Администратор запретил публиковать записи гостям.

Добавление предметов по переменной 7 года 9 мес. назад #96579

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • Проект месяца 1 местоОрганизатор конкурсовПисатель 3 местоУчительПрограммист RubyПроект месяца 2 место1 место в Готв3 местоВетеран
Вышел тут недавно скрипт PickUp Message и мне понравилась его простота. Так что я решил проверить, пойдет ли он у меня и понял, что скрипт из этого топика с ним слегка несовместим.

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

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

Добавление предметов по переменной 7 года 9 мес. назад #96634

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • Проект месяца 1 местоОрганизатор конкурсовПисатель 3 местоУчительПрограммист RubyПроект месяца 2 место1 место в Готв3 местоВетеран
Пофиксил пару критических ошибок, которые не успел проверить. Вроде теперь всё более-менее.
Администратор запретил публиковать записи гостям.
Модераторы: NeKotZima
Время создания страницы: 0.229 секунд