Перед началом выполнения, включите /textengine в мире на “Динамический”.
Система занимает три КБ, используется в мире Cops & Robbers. Перед этим разберем саму суть активации КБ:
Выстрел
#retstr(0)# - Название оружия.
#retstr(1)# - Во что выстрелил игрок. (Объект, машина, игрок).
#retstr(2)# - Если выстрел бы в транспорт, вовзращает название части т/с, куда попали.
#retval(0)# - ID кто выстрелил.
#retval(1)# - ID оружия.
#retval(2)# - Тип выстрела (аналогично #retstr(1)#, только числовой): 1 - игрок, 2 - транспорт, 3 - объект, 4 - объект.
#retval(3)# - ID выстрела. При попадании в т/с, игрока возвращает ID в что/кого попали.
#retval(4)# - Куда выстрелил X.
#retval(5)# - Куда выстрелил Y.
#retval(6)# - Куда выстрелил Z.
#retval(7)# - Если выстрел был в транспорт, возвращает: 1 - левое переднее колесо, 2 - левое заднее колесо, 3 - правое переднее колесо, 4 - правое задное колесо, 5 - кузов, 6 - бензобак. Если т/c не имеет бензобака либо же это воздушный т/с возвращает всегда 5.
#retval(8-9)# - N/A
Теперь нужно подумать как это всё систематизировать, чтобы не делать 5 отдельных КБ для проверки на каждое колесо.
CB_1: Урон по колесам в машине без водителя.
Данный КБ использует одну из самых важных функций в КБ - \ext^ - текстовая функция для вытягивания строк из КБ. Действие изменить статус колес требует ввода статуса сразу четырех колес машины, номера колес соответствуют порядку \retval(7) из способа активации “Выстрел”, предлагаю вам один из способов систематизации:
Действие #1: N/A
Значение #1: 1 0 0 0
Действие #2: N/A
Значение #2: 0 1 0 0
Действие #3: N/A
Значение #3: 0 0 1 0
Действие #4: N/A
Значение #4: 0 0 0 1
Действие #5: Изменить статус колес
Значение #5: \ext(id_сb1 \retval(7)) \retval(3)
Способ активации: “ВЫСТРЕЛ”
Радиус Активации: 9999
Условия активации:
#1.
\retval(2) ИЛИ ЗНАЧЕНИЕ КОЛЛБЭКА(2)
РАВНО
2
#2.
\isInRange(\retval(7) 1 4)
РАВНО
1
#3.
Вроде больше ничего не надо.
ИНАЧЕ:
ВЫЗВВАТЬ КБ
*cb_id2*
1 проверка - на выстрел в машину.
2 проверка - на попадание в любую шину. Шины записаны в retval(7) от 1 до 4. Впринципе, ситуации когда ретвал 7 равно 0 и выстрел был в машину не существует, мы можем просто поставить проверку \retval(7) МЕНЬШЕ/РАВНО 4. Но в данном примере, я покажу пример использования функции \isInRange.
CB_2: Damage по машине без водителя.
Действие #1: Добавить HP машине
Значение #1: -30 \retval(3)
-30 можете заменить на своё значение, но как по мне это самый опциональный урон не учитывая вида оружия и т.д.
Cпособ активации: Ввод диалога
Радиус активации: 0.1
В данном случае нам не нужна активация “Выстрел”, т.к. этот блок вызовется блоком #1 в ИНАЧЕ.
Условия активации:
#1.
\retval(2) ИЛИ ЗНАЧЕНИЕ КОЛЛБЭКА(2)
РАВНО
2
#2.
\retval(7)
РАВНО
5
#3.
\vehDriver(\retval(3))
РАВНО
-1
*ЕСЛИ ХОТИТЕ ВЗРЫВ ПРИ ПОПАДАНИИ В БЕНЗОБАК*:
ИНАЧЕ:
Вызвать КБ
*cb_id3*
1 проверка - всё та же проверка, чтобы выстрел был именно в автомобиль.
2 проверка - проверка на попадание в Кузов авто.
3 проверка - нет ли водителя внутри. Если водитель есть, то урон и так будет проходить и без этой проверки он будет суммироваться.
CB_3: Взрыв при попадании в бензобак.
Казуальная система с гта, не думаю что в РП мирах она пригодится.
Действие #1: Взрыв
Значение #1: 12 15 \vehPos(\retval(3))
Тут можете поэксперементировать со взрывами, 12 тип как по мне самый подходящий.
Способ активации: [ Ввод диалога ]
Радиус активации: 0.1
Условия активации:
#1.
\retval(2) ИЛИ ЗНАЧЕНИЕ КОЛЛБЭКА(2)
РАВНО
2
#2.
\retval(7)
РАВНО
6