Вот код на векторное оружие, она работает по шагам, а точнее рейкастингом:
(Сделал меньше размер текста, чтобы код уместился)
Функция { Текст{"Raycast"} } -> [
    Если значение { Сравнить числа [Динамическая переменная{ray_step} <= Число{40}] } -> [  // 40 шагов * 0.5 = 20 блоков
        Установить переменную { Векторы: Установить длину вектора [Динамическая переменная{vec_step}, Динамическая переменная{vec_dir}, Динамическая переменная{ray_step} * Число{0.5}] } ->  // Шаг луча
        Установить переменную { Местоположения: Установить (+) [Динамическая переменная{ray_pos}, Игровое значения{Местоположения: Текущее местоположение}, Динамическая переменная{vec_step}] } ->
        Выбрать объект { Если существо: Находится рядом [Число{0.5}, Динамическая переменная{ray_pos}] } ->  // Проверяем сущности в радиусе 0.5
        Если существо { Имя равно [Учитывать регистр: Нет, Учитывать цвета: Нет, Текста: %player%] } [НЕ] -> [  // Исключаем стреляющего
            Действие игрока { Параметры: Урон [Число{4}] [Выбранный] } ->  // Урон 4 HP
            Действие игрока { Параметры: Дать эффект зелья [Отображать частицы: Вкл., Замена эффекта: На новый, Число{3}, Число{1}, Эффекты зелья{"fire_resistance"}] [Выбранный] } ->  // Горение 3 сек
            Действие игрока { Коммуникация: Проиграть звук [Текст{"entity.generic.explode"}, Число{0.5}, Число{1}] [Выбранный] } ->
            Действие игрока { Частицы: Отобразить сферу из частиц [Эффект частицы{"smoke_normal"}, Динамическая переменная{ray_pos}, Число{0.5}, Число{10}] [Выбранный] } ->
            Игровое действие { Утиллиты кода: Остановить цикл [Текст{"RaycastLoop"}] } ->  // Останавливаем при попадании
        ]
        Установить переменную { Числа: Прибавить (+=) [Динамическая переменная{ray_step}, Число{1}] } ->
        Цикл { Текст{"RaycastLoop"}, Число{0} } -> [  // Следующий шаг
            Вызвать функцию { Текст{"Raycast"} } ->
        ]
    ]
]
События игрока { Взаимодействие с миром: Правый клик по сущности } -> [
    Если игрок { Инвентарь и предметы: Держит предмет [Игнор кол-во: Вкл., Игнор прочности: Вкл., Игнор названия: Вкл., Игнор описания: Вкл., В какой руке: В основной, Название предметов: blaze_rod] } [Игрок по умолчанию] -> [
        Если игрок { Инвентарь и предметы: Предмет имеет задержку [Предмет: blaze_rod] } [НЕ] [Игрок по умолчанию] -> [
            Установить переменную { Векторы: Создать вектор из направления взгляда [Динамическая переменная{vec_dir}, Игровое значения{Местоположения: Направление взгляда}] } ->
            Установить переменную { Числа: Установить (=) [Динамическая переменная{ray_step}, Число{0}] } ->  // Сбрасываем шаг
            Цикл { Текст{"RaycastLoop"}, Число{0} } -> [  // Запускаем рейкаст
                Вызвать функцию { Текст{"Raycast"} } ->
            ]
            Действие игрока { Частицы: Отобразить луч из частиц [Тип отображения: По расстоянию, Эффект частицы{"flame"}, Игровое значения{Местоположения: Текущее местоположение}, Динамическая переменная{vec_dir} * Число{20}, Число{0.1}] } ->  // Визуал луча
            Игровое действие { Управление инвентарём: Установить задержку предмета [Предмет: blaze_rod, Число{10}] } ->  // Кулдаун
        ] Иначе -> [
            Действие игрока { Коммуникация: Отправить сообщение [Разд. текста: Без разделение, Текст{"Оружие перезаряжается!"}] } ->
        ]
    ]
]
События игрока { Взаимодействие с миром: Правый клик по воздуху } -> [
    Если игрок { Инвентарь и предметы: Держит предмет [Игнор кол-во: Вкл., Игнор прочности: Вкл., Игнор названия: Вкл., Игнор описания: Вкл., В какой руке: В основной, Название предметов: blaze_rod] } [Игрок по умолчанию] -> [
        Если игрок { Инвентарь и предметы: Предмет имеет задержку [Предмет: blaze_rod] } [НЕ] [Игрок по умолчанию] -> [
            Установить переменную { Векторы: Создать вектор из направления взгляда [Динамическая переменная{vec_dir}, Игровое значения{Местоположения: Направление взгляда}] } ->
            Установить переменную { Числа: Установить (=) [Динамическая переменная{ray_step}, Число{0}] } ->
            Цикл { Текст{"RaycastLoop"}, Число{0} } -> [
                Вызвать функцию { Текст{"Raycast"} } ->
            ]
            Действие игрока { Частицы: Отобразить луч из частиц [Тип отображения: По расстоянию, Эффект частицы{"flame"}, Игровое значения{Местоположения: Текущее местоположение}, Динамическая переменная{vec_dir} * Число{20}, Число{0.1}] } ->
            Игровое действие { Управление инвентарём: Установить задержку предмета [Предмет: blaze_rod, Число{10}] } ->
        ] Иначе -> [
            Действие игрока { Коммуникация: Отправить сообщение [Разд. текста: Без разделение, Текст{"Оружие перезаряжается!"}] } ->
        ]
    ]
]