[ГАЙД] Аирдроп

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



Код спавнит аирдроп в рандомном месте карты с таймером, после спавна аирдроп падает с 255 высоты и приземляется. После приземление аирдроп еще не открыт, и игрок должен подождать чтобы аирдроп открылся 3 минуты. После чего аирдроп заполняется абсолютно рандомными предметами в рандомных слотах сундука. Все предметы, время, места спавна можно менять в коде. Также можно сделать чтобы время аирдропа шло только если в мире 2 игрока
1705163617428.png1705163619894.png1705163621708.png
Код идет в 5 строкчо смотришь
1 - Событие, запуск всех необходимых циклов
2 - Событие, запрет на открытие сундука если аирдроп еще не открыт
3 - Цикл, спавн аирдропа и таймер до его появления.
4 - Цикл, время до открытия аирдропа
5 - Функция, рекурсивная функция которая заполняет аирдроп рандомными предметами.



Перед тем как кодить циклы - их нужно запустить.
Код:
Событие Вход игрока
 Начать цикл (air_time)
 Если переменая = (@airdrop_open@, no) [
  Начать цикл (airdrop_spawn)
  ]
Код чтобы игроки не могли открывать аирдроп до его открытия
Код:
Событие игрока Взаимодейст с блоком
 Если игрок Тип взаим. действ. с блоком (Правый клик по блоку) [
  Если игрок Блок равен (null, @airdrop_cordinats@) [
   Если переменая = (airdrop_open, no) [
    Отменить событие
    Сообщение игрока (&cАирдроп еще не открыт!)
    ]
   ]
  ]
Код на спавн аирдропа и таймер в виде галограммы. (Самый большой код)
Код:
Цикл air_time 20
 Выбрать обьект случайный игрок -- Если вы хотите чтобы цикл работал только когда 2 игрока в мире то добавьте перед всем кодом проверку Сравнить числа легко (Игровое значение количество игроков >= 2)
 Присв. переменую -= (@a_secs@, 1)
 Если переменая сравнить числа легко (@a_secs@ <= 0) [
  Присв. переменую -= (@a_mins@, 1)
  Присв. переменую = (@a_secs@, 60)
  Если переменая сравнить числа легко (@a_mins@ <= 0) [
   Игровое действие поставить блок (null, null, null, @airdrop_cordinats@)
   Присв. переменую = (@airdrop_spawned@, yes)
   Присв. переменую = (@a_mins@, 19)
   Присв. переменую = (@as_minutes@, 4)
   Присв. переменую = (@airdrop_open@, no)
   Присв. переменую установить случайное значение (@ax, 159, 212) -- ВАЖНО нужно указать кординаты X от которых до которых может спавнится аирдроп
   Присв. переменую установить случайное значение (@az, 49, 96) -- ВАЖНО нужно указать кординаты Z от которых до которых может спавнится аирдроп
   Присв. переменую уст. знач. в мест. (airdrop_cordinats, местоположение, null, null, @az, 255, @az) {Режим установки x/y/z Замены =} -- В местоположении нужно указать любые кординаты в мире
   Игровое действие спавн моба (Житель, airdrop_cordinats, &c&lАИРДРОП, 1, 1, 0, 000.1, 0, 1, Невидимость, null, null, Красная шерсть) {Не получает урон, Звуки Нет, Должна светится, Не должна исчезать, Отображать частицы Нет}
   Игровое действие ждать (140) {В тиках}
   Выбрать обьект моб по условию имя равно (&c&lАИРДРОП) {Не учитывать, Не учитывать}
   Присв. переменую = (@airdrop_cordinats@, Игровое значение текущее местоположение)
   Действие игрока удалить сущность `Выборка`
   Выбрать обьект случайный игрок
   Игровое действие пставить блок (null, Сундук, null, @airdrop_cordinats@
   Присв. переменую значение из мест. (@air_y, @airdrop_cordinats@)
   Присв. переменую округлить число (@air_y, @air_y) {Обычное округление}
   Присв. переменую обьединить текст (@visual_cordinats@, &d Кординаты аирдропа:, ax, air_y, az) {Разделение пробелом}
   Присв. переменую = (@airdrop_open@, no)
   Игровое действие начать цикл (airdrop_spawn)
   ]
  ]
 -- Заметьте то что последущий код пишется вне скобок
 Присв. переменую обьединить текст (@holo_text, &dАирдроп:, a_mins, м., a_secs, с.) {Разделение пробелом}
 Игровое действие удалить голограмму (airtime)
 Игровое действие создать голограмму (кординаты голограммы, airtime, &a&lВремя до спавна аирдропа, @holo_text)
 Если значение = (airdrop_open, no) [
  Присв. переменую уст. знач. в мест. (@airdrop_cordinats2, @airdrop_cordinats@, null, null, null, 255, null) {Режим установки Y +=}
  Частицы линия (Частица редстоун, @airdrop_cordinats@, @airdrop_cordinats2)
  Ждать (10) {В тиках}
  Частицы линия (Частица редстоун, @airdrop_cordinats@, @airdrop_cordinats2)
  ]
Код чтобы открыть аирдроп спустя 3 минуты
Код:
Цикл airdrop_spawn
 Выбрать обьект случайный игрок
 Если значение = (@airdrop_spawned@, yes) [
  Присв. переменую -= (@as_minutes@, 1)
  Если переменая = (@as_minutes@, 3) [
   Действие игрока отправить сообщение `Все` (&a&l Аирдроп заспавнился, @visual_cordinats@, &e Откроется через 3 минуты) {Разделение новой строкой}
   Действие игрока проиграть звук `Все` (entity.experience_orb.pickup)
   ]
  Если переменая = (@as_minutes@, 2) [
   Действие игрока отправить сообщение `Все` (&a&l Аирдроп, @visual_cordinats@, &e Откроется через 2 минуты) {Разделение новой строкой}
   ]
  Если переменая = (@as_minutes@, 1) [
   Действие игрока отправить сообщение `Все` (&a&l Аирдроп, @visual_cordinats@, &e Откроется через 1 минуту) {Разделение новой строкой}
   Действие игрока проиграть звук `Все` (entity.experience_orb.pickup)
   ]
  Если переменая = (@as_minutes@ <= 0) [
   Действие игрока отправить сообщение `Все` (&a&l&n АИРДРОП ОТКРЫЛСЯ, @visual_cordinats@) {Разделение новой строкой}
   Действие игрока проиграть звук `Все` (entity.experience_orb.pickup)
   Присв. переменую = (@airdrop_open@, yes)
   Присв. переменую = (@airdrop_in, 0)
   Вызвать функцию (airdrop)
   Остановить цикл (airdrop_spawn)
   ]
  ]
Код:
Функция airdrop
 Присв. переменую += (@airdrop_in, 1)
 Присв. переменую случайное число (@airdrop_slot, 1, 27)
 Присв. переменую установить предмет (@item1, желанный предмет)
 Присв. переменую установить предмет (@item2, желанный предмет)
 Присв. переменую установить предмет (@item3, желанный предмет)
 ... -- Код можно продолжать до того как не закончится строка
 Если значение сравнить числа легко (airdrop_in <= 10) [ -- Вместо 10 можно поставить любое число, число будет означать сколько раз будет повторятся функция
  Присв. переменую случайное значение (item, item1, item2, item3, ...) -- нужно указать переменые которые вы выше присвоили
  Игровое действие установить предметы (@airdrop_cordinats@, @item, null, @aidrop_slot)
  Игровое действие ждать (1) {В тиках}
  Вызвать функцию (airdrop)
  ]

() - Что находится внутри сундука
[] - Скобки, в коде майнленда это поршни
{} - Что выбрать в переключателе
`` - Что появляется после Шифт + ПКМ по табличке
"" - Только текст

# - Перед значением означает то что это массив
# - Перед и после значением означает то что это постоянный массив
-- После строки - коментарий автора
@ - Перед значением означает то что это динамическая переменная
@ - Перед и после значения означает то что это сохраненая динамическая переменная
Если значение содержит буквы то это текст, если содержит только цифры то это число
Остальные переменые в коде обозначаются ихними названиями, к примеру Игровое значение местоположение игрока или же Эффект редстоун
Код писал 2.5 часа на скорую руку, если найдутся ошибки в коде или же грамотные ошибки и опечатки сообщите мне в ответе.
Если понравилась тема ставьте лайк
Переписать код займет приблизно пол часика

 

Вложения

  • 1705163059007.png
    1705163059007.png
    2.8 KB · Просмотры: 12
Последнее редактирование:
Сверху