Как сделать рамдомную установку блоков

EndermanHack19

Активный участник
Регистрация
3 Май 2023
Сообщения
73
Как сделать рамдомную установку блоков из списка

Мне нужно:
1685103382816.png
 

SashaLab7

Эксперт
Регистрация
3 Май 2023
Сообщения
95
Как сделать рамдомную установку блоков из списка

Способ 1:​

Создание массива:​

Событие чата → [Если имя равно (EndermanHack19) → [Если сообщение равно (@create blocks) → Создать/очистить массив (blocks) () → Установить предмет (%player%_item) (Магма)→ Добавить в конец массива (blocks) (%player%_item) → Установить предмет (%player%_item) (Алмазная руда) → Добавить в конец массива (blocks) (%player%_item) → ... По аналогии со всеми блоками ] ]​

Поставка случайного блока:​

Событие ... → Получить размер массива (blocks) (%player%_count_blocks) → Установить случайное число (​
%player%_count_blocks) (1) (%player%_count_blocks) → Получить элемент массива (blocks) (%player%_count_blocks) (%player%_item) → Поставить блок (%player%_item) () () () (местоположение, куда ставить блок)​

Значения:​

blocks - Массив (Постоянный)​
%player%_count_blocks - Динамическая переменная (Не сохранено)​
%player%_item - Динамическая переменная (Не сохранено)​
При первом заходе в игру напиши @create blocks, после чего создастся массив. Массив достаточно создать 1 раз, при повторном заходе в игру его можно не создавать.​


Способ 2:​

Создание функции:​

Функция (set_block) → Установить случайное число (%player%_num) (1) (10) → [Если значение (%player%_num) == (1) → Поставить блок () (Магма) () () (местоположение, куда ставить блок) ] → [Если значение (%player%_num) == (2) → Поставить блок () (Алмазная руда) () () (местоположение, куда ставить блок) ] → ... По аналогии со всеми блоками​

Поставка блока:​

Событие ... → Вызвать функцию (set_block)​

Значения:​

%player%_num - Динамическая переменная (Не сохранено)​
 

EndermanHack19

Активный участник
Регистрация
3 Май 2023
Сообщения
73

Способ 1:​

Создание массива:​

Событие чата → [Если имя равно (EndermanHack19) → [Если сообщение равно (@create blocks) → Создать/очистить массив (blocks) () → Установить предмет (%player%_item) (Магма)→ Добавить в конец массива (blocks) (%player%_item) → Установить предмет (%player%_item) (Алмазная руда) → Добавить в конец массива (blocks) (%player%_item) → ... По аналогии со всеми блоками ] ]​

Поставка случайного блока:​

Событие ... → Получить размер массива (blocks) (%player%_count_blocks) → Установить случайное число (​
%player%_count_blocks) (1) (%player%_count_blocks) → Получить элемент массива (blocks) (%player%_count_blocks) (%player%_item) → Поставить блок (%player%_item) () () () (местоположение, куда ставить блок)​

Значения:​

blocks - Массив (Постоянный)​
%player%_count_blocks - Динамическая переменная (Не сохранено)​
%player%_item - Динамическая переменная (Не сохранено)​
При первом заходе в игру напиши @create blocks, после чего создастся массив. Массив достаточно создать 1 раз, при повторном заходе в игру его можно не создавать.​


Способ 2:​

Создание функции:​

Функция (set_block) → Установить случайное число (%player%_num) (1) (10) → [Если значение (%player%_num) == (1) → Поставить блок () (Магма) () () (местоположение, куда ставить блок) ] → [Если значение (%player%_num) == (2) → Поставить блок () (Алмазная руда) () () (местоположение, куда ставить блок) ] → ... По аналогии со всеми блоками​

Поставка блока:​

Событие ... → Вызвать функцию (set_block)​

Значения:​

%player%_num - Динамическая переменная (Не сохранено)​
А можно тоже самое но на куби у меня куб 9x9 мне его надо заполнить. Это для авто шахты
 

Фанни

Эксперт
Регистрация
3 Май 2023
Сообщения
118

Способ 1:​

Создание массива:​

Событие чата → [Если имя равно (EndermanHack19) → [Если сообщение равно (@create blocks) → Создать/очистить массив (blocks) () → Установить предмет (%player%_item) (Магма)→ Добавить в конец массива (blocks) (%player%_item) → Установить предмет (%player%_item) (Алмазная руда) → Добавить в конец массива (blocks) (%player%_item) → ... По аналогии со всеми блоками ] ]​

Поставка случайного блока:​

Событие ... → Получить размер массива (blocks) (%player%_count_blocks) → Установить случайное число (​
%player%_count_blocks) (1) (%player%_count_blocks) → Получить элемент массива (blocks) (%player%_count_blocks) (%player%_item) → Поставить блок (%player%_item) () () () (местоположение, куда ставить блок)​
Кстати можно упростить этот вариант
Код:
Функция ->
Установить предмет();
...
#так со всеми блоками

Функция ->
Случайное значение(block = все переменные с блоками);
Поставить блок(block)
должно работать, как минимум у меня это работало с выдачей предмета игроку
 

onn512

Эксперт
Регистрация
2 Май 2023
Сообщения
153
А можно тоже самое но на куби у меня куб 9x9 мне его надо заполнить. Это для авто шахты

Основная функция заполнения области/куба:
Код:
Функция(fill_random):

    Установить(%player%_fill_function = "in_process")
    Получить значения из местоположения(%player%_top_southeast_point_X, %player%_top_southeast_point, Значение=X)
    Получить значения из местоположения(%player%_block_pointer_X, %player%_block_pointer, Значение=X)
 
    Если значение(%player%_block_pointer_X > %player%_top_southeast_point_X):
        Получить значения из местоположения(%player%_bottom_northwest_point_X, %player%_bottom_northwest_point, Значение=X)
        Установить значения в местоположение(%player%_block_pointer, %player%_block_pointer, X = %player%_bottom_northwest_point_X, Z += 1)
        Получить значения из местоположения(%player%_block_pointer_Z, %player%_block_pointer, Значение=Z)
        Получить значения из местоположения(%player%_top_southeast_point_Z, %player%_top_southeast_point, Значение=Z)
   
        Если значение(%player%_block_pointer_Z > %player%_top_southeast_point_Z):
            Получить значения из местоположения(%player%_bottom_northwest_point_Z, %player%_bottom_northwest_point, Значение=Z)
            Установить значения в местоположение(%player%_block_pointer, %player%_block_pointer, X = %player%_bottom_northwest_point_X, Y += 1, Z = %player%_bottom_northwest_point_Z)
            Получить значения из местоположения(%player%_block_pointer_Y, %player%_block_pointer, Значение=Y)
            Получить значения из местоположения(%player%_top_southeast_point_Y, %player%_top_southeast_point, Значение=Y)

            Если значение(%player%_block_pointer_Y > %player%_top_southeast_point_Y):
               Установить(%player%_fill_function = "done")
               Сообщение("Done.")
       
Если значение(%player%_fill_function != "done"):
    Получить размер массива (blocks, %player%_count_blocks)
    Установить случайное число (%player%_count_blocks, 1, %player%_count_blocks)
    Получить элемент массива (blocks, %player%_count_blocks, %player%_item)
    Поставить блок(%player%_item, местоположение=%player%_block_pointer)
    Установить значения в местоположение(%player%_block_pointer, %player%_block_pointer, X += 1)
    Ждать(1 тик)
    Вызвать функцию(fill_random)

Пример вызова функции:
Код:
Событие игрока(Событие чата):
    Если имя равно(EndermanHack19):
        Если сообщение равно(@upgrade automine):
            Если значение(%player%_fill_function != "in_process"):
                Установить(%player%_bottom_northwest_point = нижний северо-западный угол области/куба)
                Установить(%player%_top_southeast_point = верхний юго-восточный угол области/куба)
                Установить(%player%_block_pointer = %player%_bottom_northwest_point)
                Вызвать функцию(fill_random)
                Сообщение("Заполнение началось.")
            Иначе:
                Сообщение("Ошибка! Функция заполнения уже запущена.")

Код на создание массива с блоками тут.
 
Последнее редактирование:
Сверху