Как сделать триггер со следующим содержанием.
function IsUnitBack takes unit uF, unit uWhichBack returns boolean
real r1 = bj_RADTODEG * Atan2(GetUnitY(uWhichBack) - GetUnitY(uF), GetUnitX(uWhichBack) - GetUnitX(uF)) + 360.
real r2 = GetUnitFacing(uWhichBack) + 360.
if GetUnitY(uWhichBack) < GetUnitY(uF) then
set r1 = r1 + 360.
endif
return (r1<=(r2+45.) and r1>=(r2-45.))
endfunction
я просто не знаю как правильно сделать текстовый триггер, тупо скопировать вставить выдает ошибку.
Скиньте карту с триггером данного содержания
(данный триггер позволит юнитам наносить доп урон в спину.

Принятый ответ

Filius Dei, так что-то не так делаешь. Функцию нельзя внутри функции копировать, функцию закинь повыше.
знаешь такую находил много раз. атака сзади атака в спину и др. ищи на форуме "заклинание на заказ", там в первых наработках есть похожее. Углы сложно подсчитать?
подробности
Я тебе скинул пример, на событие юнит атакован. Но ты должен знать что "юнит атакован" - событие, при котором юнит начинает замахиваться, а потом пускает снаряды (у милишников без этого), и потом происходит урон. Надо делать систему урона от события "юнит получает урон". Так как при событии "юнит атакован" можно промахнуться.
Когда при событии "получает урон" наносишь дополнительный триггерный урон, смотри, чтобы зацикливания не было.
Загруженные файлы
1
23
7 лет назад
Отредактирован Obelick
1
А вы думали, что просто скопировав одну функцию, все станет работать? Читайте статьи, если хотите изучить джас, а пока вот вам простенький пример на гуи (не такой правда точный)
Загруженные файлы
0
7
7 лет назад
0
у меня триггеры на русском, facing это что?
2
16
7 лет назад
2
Filius Dei:
у меня триггеры на русском, facing это что?
Никто не знает, потому что триггеры на русском неудобны. Facing - смотрящий, повернутый (примерный перевод).
0
7
7 лет назад
0
ну я предположил что это угол поворота
0
27
7 лет назад
0
вот код
просто ты забыл добавить local. Кто-то не полный код кинул. А из-за этого игра не может объявить локальную переменную. Это можно только на vjass, cjass. Там разрешено не дописывать local, в cjass и vjass сокращают записи для удобства
function IsUnitBack takes unit uF, unit uWhichBack returns boolean
local real r1 = bj_RADTODEG * Atan2(GetUnitY(uWhichBack) - GetUnitY(uF), GetUnitX(uWhichBack) - GetUnitX(uF)) + 360.
local real r2 = GetUnitFacing(uWhichBack) + 360.
if GetUnitY(uWhichBack) < GetUnitY(uF) then
set r1 = r1 + 360.
endif
return (r1<=(r2+45.) and r1>=(r2-45.))
endfunction
0
7
7 лет назад
0
так и почему все равно не идет, выдает вот это.
походу я сегодня не получу нормальную систему атаки в спину
Загруженные файлы
0
27
7 лет назад
Отредактирован MpW
0
Filius Dei, так что-то не так делаешь. Функцию нельзя внутри функции копировать, функцию закинь повыше.
знаешь такую находил много раз. атака сзади атака в спину и др. ищи на форуме "заклинание на заказ", там в первых наработках есть похожее. Углы сложно подсчитать?
подробности
Я тебе скинул пример, на событие юнит атакован. Но ты должен знать что "юнит атакован" - событие, при котором юнит начинает замахиваться, а потом пускает снаряды (у милишников без этого), и потом происходит урон. Надо делать систему урона от события "юнит получает урон". Так как при событии "юнит атакован" можно промахнуться.
Когда при событии "получает урон" наносишь дополнительный триггерный урон, смотри, чтобы зацикливания не было.
Загруженные файлы
Принятый ответ
0
7
7 лет назад
0
О супер так бы сразу)
так я не понял ты пометил чисто одного моба потому что атака сзади проходит только по нему даже если поставить кого то ещё на той же мапе
блин почему работает триггер только на юнитах синего игрока
0
27
7 лет назад
Отредактирован MpW
0
Filius Dei, потому что повесил событие на синего игрока. повесь на остальных, общее. Я думал, что немного шаришь. Ну ничего, начнешь с jass-а изучать, с чего-то надо изучать
0
7
7 лет назад
0
да я знаю прозвучит тупо, но что надо прописать что бы повесит на всех, а то 2 триггера вместе не работают а добавит строки для других игроков тоже не пашет
а все сам справился)
Чтобы оставить комментарий, пожалуйста, войдите на сайт.