Войти на сайт

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

ТЕМА: Пример работы с примечаниями. Случайный лут

Пример работы с примечаниями. Случайный лут 2 мес. 1 нед. назад #119500

  • Alx_Yago
  • Alx_Yago аватар
  • Сейчас на сайте
  • Просветлённый
  • Сообщений: 393
  • Спасибо получено: 607
  • РазработчикПроект месяца 1 место3 место3 место в Обучающем конкурсеУчитель
Сейчас постараюсь рассказать, как в RPG Maker MV можно работать с полем «Примечание», которое имеется в настройках персонажей, классов, предметов, навыков, врагов и так далее. Складывается ощущение, что это поле предназначено исключительно для личных записей автора, чтобы он, бедолага, случайно чего не забыл в процессе разработки игры. Однако у него есть и другие применения. Можно, например, добавлять туда какие-нибудь лично придуманные характеристики.

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

Для начала, о синтаксисе.

Характеристика должна быть заключена в треугольные скобки, а её значение стоять после двоеточия. Вот так:

<характеристика: значение>

Многие плагины используют подобные теги, поэтому название характеристики лучше взять позаковыристей, чтобы оно случайно не совпало с названием из какого-нибудь плагина.

Добавляем предметам новую характеристику.

Итак, я сделал в базе четыре предмета с вероятностями выпадения: 50%, 20%, 10% и 0. Последний — это предмет, который в принципе не должен появляться в сундуках (квестовый, например). И записал каждому в примечание примерно следующее:

1-6.png


lessondrop – это название характеристики, а 50 — шанс выпадения этой вещи.

Создаём общее событие для выпадения случайных предметов.

Переходим на вкладку общих событий и создаём новое событие.

Мы сделаем цикл с перебором всех предметов, поэтому первым делом устанавливаем для цикла переменную «счётчик» в значение =1.

Далее запускаем цикл и следующие действия выполняем внутри цикла:

«Бросаем» 100-гранник. То есть, приравниваем переменную «вероятность» к случайному числу от 1 до 100.

Переменную «шанс выпадения» приравниваем к созданной нами характеристике предмета. Делаем это так:

2-5.png


После сравниваем эти две переменные и, если «шанс выпадения» больше или равен «вероятности», то даём нашему герою одну штуку этого предмета. Делаем это строчкой скрипта:
◆Скрипт:$gameParty.gainItem($dataItems[$gameVariables.value(6)], 1)

Также хорошо бы сообщить герою, что же он получил. Для этого в переменную «название» заносим название полученного предмета:
◆Переменная:#0014 название = $dataItems[$gameVariables.value(6)].name

И пишем радостное сообщение, не забыв выделить название предмета цветом:
◆Сообщение:Нет, Окно, Низ
    :         :Вы нашли \C[1]\V[14]

После чего увеличиваем «счётчик» на 1 и проверяем, если он уже стал больше или равен 5 (в нашей базе было 4 предмета, так что пятый — уже лишний), то прерываем цикл, а если нет, то повторяем цикл сначала уже со следующим предметом.

В итоге получилось следующее общее событие:
◆Переменная:#0006 счётчик = 1
◆Цикл
  ◆Переменная:#0007 вероятность = Случайно 1..100
  ◆Переменная:#0013 шанс выпадения = $dataItems[$gameVariables.value(6)].meta.lessondrop
  ◆Если:шанс выпадения ≥ вероятность
    ◆Скрипт:$gameParty.gainItem($dataItems[$gameVariables.value(6)], 1)
    ◆Переменная:#0014 название = $dataItems[$gameVariables.value(6)].name
    ◆Сообщение:Нет, Окно, Низ
    :         :Вы нашли \C[1]\V[14]
    ◆
  :Конец
  ◆Переменная:#0006 счётчик += 1
  ◆Если:счётчик ≥ 5
    ◆Прервать цикл
    ◆
  :Конец
  ◆
:Повторить цикл

Немножко улучшаем общее событие.

Сделаем событие чуточку получше, а то иногда может случиться такое, что игрок ничего не найдёт в сундуке. В этом случае не происходит вообще ничего, а ведь так хочется обратить его внимание на то, какой же он неудачник. Так что делаем следующее:

В самом начале выполнения события создаём триггер «находка» и переводим его в положение ВЫКЛ.
Затем во время выполнения цикла, если игрок получает какой-либо предмет, переводим триггер «находка» в положение ВКЛ.
Ну и в самом конце, когда цикл уже закончил выполняться, делаем проверку и, если триггер «находка» по-прежнему выключен, пишем наше издевательское сообщение.

Улучшенное общее событие будет выглядеть так:
◆Переключатель:#0004 находка = ВЫКЛ
◆Переменная:#0006 счётчик = 1
◆Цикл
  ◆Переменная:#0007 вероятность = Случайно 1..100
  ◆Переменная:#0013 шанс выпадения = $dataItems[$gameVariables.value(6)].meta.lessondrop
  ◆Если:шанс выпадения ≥ вероятность
    ◆Скрипт:$gameParty.gainItem($dataItems[$gameVariables.value(6)], 1)
    ◆Переменная:#0014 название = $dataItems[$gameVariables.value(6)].name
    ◆Сообщение:Нет, Окно, Низ
    :         :Вы нашли \C[1]\V[14]
    ◆Переключатель:#0004 находка = ВКЛ
    ◆
  :Конец
  ◆Переменная:#0006 счётчик += 1
  ◆Если:счётчик ≥ 5
    ◆Прервать цикл
    ◆
  :Конец
  ◆
:Повторить цикл
◆Если:находка теперь ВЫКЛ
  ◆Сообщение:Нет, Окно, Низ
  :         :Вы ничего не нашли.
  ◆
:Конец

Ставим на карте сундук со случайным лутом.

Как обычный сундук, только вместо заранее определённого предмета «кладём» туда наше общее событие:

4.png


Делаем случайную броню и оружие.

Теперь, когда принцип ясен, можно добавить такие же характеристики броне и оружию и создать общие события для них. Всё то же самое, только вместо “dataItems” пишем везде “dataArmors” и “dataWeapons”, а вместо “gainItem” — “gainArmor” и “gainWeapon”.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Amphilohiy, LiRo
Время создания страницы: 0.453 секунд