Векторное оружие на Creative +

Hatlessjacob

Участник
Регистрация
2 Авг 2025
Сообщения
0
Начал изучать код на креатив+, с друзьями делаю проект на тему пострелушек.
Хотел сделать качественное оружие, без снежков и прочей лабуды, тоесть векторное
Нашел единственный туториал в интернете, полностью перенес код с видео и ничего не получилось.
Точнее, получилось, но урон от выстрела наносился как и игроку по которому ведут огонь, так и по стрелку.
Скорее всего, это происходило из-за того, что видео с кодом на оружие было выпущено очень давно, а код на креатив+ не стоит на месте.
Хотел бы узнать от сообщества, как вообще можно сделать хорошее векторное оружие, и если возможно даже получить полный код на него.
Для справок : Я просмотрел весь форум майнленда, но не нашел именно качественного векторного оружия. Я переносил один из кодов, и он даже ели-как работал, но урон регал только если выстрел производился в блок на котором стоит жертва.
 

Maxcim

Участник
Регистрация
23 Сен 2023
Сообщения
0
Вот код на векторное оружие, она работает по шагам, а точнее рейкастингом:
(Сделал меньше размер текста, чтобы код уместился)

Функция { Текст{"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}] } ->
] Иначе -> [
Действие игрока { Коммуникация: Отправить сообщение [Разд. текста: Без разделение, Текст{"Оружие перезаряжается!"}] } ->
]
]
]
 
Сверху