- Регистрация
- 28 Май 2023
- Сообщения
- 4
Я делаю нормальное оружие и столкнулся с этой проблемой, я не знаю как частица может наносить урон. В теории можно выделить область от начала до целевого блока и если игрок стоит рядом, то урон, но как?
Ох, дружище, не в ту тему ты полез. Я еще год назад делал подобное, и у меня все стояло на цикличной функции. Я проверял каждый блок от игрока и до местоположения целевого блока. Насчет выделения области... А как ты хочешь это сделать? "Если стоит рядом" идет через радиус, он не подойдетЯ делаю нормальное оружие и столкнулся с этой проблемой, я не знаю как частица может наносить урон. В теории можно выделить область от начала до целевого блока и если игрок стоит рядом, то урон, но как?
объяснить не вариант?Векторы.
Немного другой путь к решению этой проблемы. Оружия работают как и векторные (чуть кривее), только код в 2-3 раза короче. (Поищите баги, вполне могут быть)Я делаю нормальное оружие и столкнулся с этой проблемой, я не знаю как частица может наносить урон. В теории можно выделить область от начала до целевого блока и если игрок стоит рядом, то урон, но как?
это я тот R700LC ты говорил написать на форуме,вот я и написалНемного другой путь к решению этой проблемы. Оружия работают как и векторные (чуть кривее), только код в 2-3 раза короче. (Поищите баги, вполне могут быть)
Код:
Функция (blast) → Установить значение в местоположение (%player%_A) (Текущее местоположение) () () () (Y=1) <Относительный +=> () → Установить значение в местоположение (%player%_B) (Местоположение целевого блока) () () (0.5) <Относительный +=> (0.5) <Относительный +=> (0.5) <Относительный +=> → Создать линию из частиц (Частица по вашему вкусу) (%player%_A) (%player%_B) → Получить расстояние между 2 местоположениями (%player%_vector_width) (%player%_A) (%player%_B) → Отнять (%player%_vector_width) - (1) → Выбрать игроков по имя НЕ равно (%default%) → Установить значение в местоположение (%selected%_B) (Текущее местоположение) () () () (Y=1) <Относительный +=> () → Получить расстояние между 2 местоположениями (%selected%_place_width.a) (%player%_A) (%selected%_B) → Получить расстояние между 2 местоположениями (%selected%_place_width.b) (%selected%_B) (%player%_B) → Установить + (%selected%_summ_round) (%selected%_place_width.a) (%selected%_place_width.b) → Установить - (%selected%_summ) (%selected%_summ_round) (%player%_vector_width; 0.6) → Выбрать игроков по сравнить числа -0.5 =< (%selected%_summ) <= 0.5 → [Если игрок имя НЕ равно (%default%) {Выборка} → Урон (1) {Выборка}]Значения:
%player%_A; %player%_B; %player%_vector_width; %selected%_B; %selected%_place_width.a; %selected%_place_width.b; %selected%_summ_round; %selected%_summ - Динамические переменные (Не сохранены)
В тексте код выглядит ужасно, вот скрин кода:
Чтобы совершить сам выстрел, нужно вложить функцию, пример:
Код можно доработать, добавив аргументы частиц и урона при выстреле, это очень просто.
в своё время такие и делал, только после добавления тригонометрии сделал нормальный рейкастНемного другой путь к решению этой проблемы. Оружия работают как и векторные (чуть кривее), только код в 2-3 раза короче. (Поищите баги, вполне могут быть)
Код:
Функция (blast) → Установить значение в местоположение (%player%_A) (Текущее местоположение) () () () (Y=1) <Относительный +=> () → Установить значение в местоположение (%player%_B) (Местоположение целевого блока) () () (0.5) <Относительный +=> (0.5) <Относительный +=> (0.5) <Относительный +=> → Создать линию из частиц (Частица по вашему вкусу) (%player%_A) (%player%_B) → Получить расстояние между 2 местоположениями (%player%_vector_width) (%player%_A) (%player%_B) → Отнять (%player%_vector_width) - (1) → Выбрать игроков по имя НЕ равно (%default%) → Установить значение в местоположение (%selected%_B) (Текущее местоположение) () () () (Y=1) <Относительный +=> () → Получить расстояние между 2 местоположениями (%selected%_place_width.a) (%player%_A) (%selected%_B) → Получить расстояние между 2 местоположениями (%selected%_place_width.b) (%selected%_B) (%player%_B) → Установить + (%selected%_summ_round) (%selected%_place_width.a) (%selected%_place_width.b) → Установить - (%selected%_summ) (%selected%_summ_round) (%player%_vector_width; 0.6) → Выбрать игроков по сравнить числа -0.5 =< (%selected%_summ) <= 0.5 → [Если игрок имя НЕ равно (%default%) {Выборка} → Урон (1) {Выборка}]Значения:
%player%_A; %player%_B; %player%_vector_width; %selected%_B; %selected%_place_width.a; %selected%_place_width.b; %selected%_summ_round; %selected%_summ - Динамические переменные (Не сохранены)
В тексте код выглядит ужасно, вот скрин кода:
Чтобы совершить сам выстрел, нужно вложить функцию, пример:
Код можно доработать, добавив аргументы частиц и урона при выстреле, это очень просто.
кстати вот я сижу и думаю как выяснить что пуля попала именно в блок, тоесть можно ли на конце линии сделать взрывНемного другой путь к решению этой проблемы. Оружия работают как и векторные (чуть кривее), только код в 2-3 раза короче. (Поищите баги, вполне могут быть)
Код:
Функция (blast) → Установить значение в местоположение (%player%_A) (Текущее местоположение) () () () (Y=1) <Относительный +=> () → Установить значение в местоположение (%player%_B) (Местоположение целевого блока) () () (0.5) <Относительный +=> (0.5) <Относительный +=> (0.5) <Относительный +=> → Создать линию из частиц (Частица по вашему вкусу) (%player%_A) (%player%_B) → Получить расстояние между 2 местоположениями (%player%_vector_width) (%player%_A) (%player%_B) → Отнять (%player%_vector_width) - (1) → Выбрать игроков по имя НЕ равно (%default%) → Установить значение в местоположение (%selected%_B) (Текущее местоположение) () () () (Y=1) <Относительный +=> () → Получить расстояние между 2 местоположениями (%selected%_place_width.a) (%player%_A) (%selected%_B) → Получить расстояние между 2 местоположениями (%selected%_place_width.b) (%selected%_B) (%player%_B) → Установить + (%selected%_summ_round) (%selected%_place_width.a) (%selected%_place_width.b) → Установить - (%selected%_summ) (%selected%_summ_round) (%player%_vector_width; 0.6) → Выбрать игроков по сравнить числа -0.5 =< (%selected%_summ) <= 0.5 → [Если игрок имя НЕ равно (%default%) {Выборка} → Урон (1) {Выборка}]Значения:
%player%_A; %player%_B; %player%_vector_width; %selected%_B; %selected%_place_width.a; %selected%_place_width.b; %selected%_summ_round; %selected%_summ - Динамические переменные (Не сохранены)
В тексте код выглядит ужасно, вот скрин кода:
Чтобы совершить сам выстрел, нужно вложить функцию, пример:
Код можно доработать, добавив аргументы частиц и урона при выстреле, это очень просто.