XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
Амбидекстрия
Silenced by ScorpioT1000
offline
Опыт: 8,237
Активность:
Высота полёта
Как сделать так, чтобы герой дамажил своей аое абилкой только тех, кто на опр. высоте? например, я хочу чтобы он дамажил тех, у кого +-50 высоты полёта от его высоты, т.е. у него например 100 высота, и надо чтобы продамажило тех, у кого высота от 50 до 150
Старый 24.12.2011, 11:13
BUGERS
Alkar WC3 Admin
offline
Опыт: 2,446
Активность:
Real comparison - Flying hight. Посмотри там если GUI. Если jass, то соответственно поищи функцию)
Старый 24.12.2011, 11:18
Амбидекстрия
Silenced by ScorpioT1000
offline
Опыт: 8,237
Активность:
BUGERS, я знаю как узнать высооту полёта...
Амбидекстрия:
Как сделать так, чтобы герой дамажил своей аое абилкой только тех, кто на опр. высоте?
Старый 24.12.2011, 11:33
hexing

offline
Опыт: 110
Активность:
Амбидекстрия, сделать аое абилку триггерно
группой пикать всем рядом стоящих и ForGroup проверка если разница высот <= 50 то UnitDamageTarget
не разберёшься могу сделать пример
Старый 24.12.2011, 12:06
asesmo
Я I Jag Ich Jeg Ja Minä!
offline
Опыт: 8,073
Активность:
((код jass
If GetUnitFly(u) ><= r
then
...
else
...
endif
))
в чем проблема то?
Старый 24.12.2011, 13:03
Амбидекстрия
Silenced by ScorpioT1000
offline
Опыт: 8,237
Активность:
hexing:
е разберёшься могу сделать пример
сделай плз.
Старый 24.12.2011, 16:19
hexing

offline
Опыт: 110
Активность:
высота полёта ваще у всех одна оказывается(у наземных)
пришлось использовать локации и GetLocationZ() - работает на отлично
Старый 24.12.2011, 18:29
Амбидекстрия
Silenced by ScorpioT1000
offline
Опыт: 8,237
Активность:
RAbsBJ(GetLocationZ(loc1) - GetLocationZ(loc2)) <= 80.
вот проверка на высоту, НО! если у моего кастера высота 100 а у врага 200, то проверка даст Истину, потому что 100-200=-100, но это будет не правильно, т.к. его не врага заденет уроном, но разница в модуле больше чем 80...
Амбидекстрия добавил:
в принципе всё хорошо, ток вот этот недочёт(
Старый 25.12.2011, 10:23
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
globals
   location TmpLoc = Location(0., 0.)
endglobals

function GetWidgetZ takes widget w returns real
   call MoveLocation(TmpLoc, GetWidgetX(w), GetWidgetY(w))
   return GetLocationZ(TmpLoc)
endfunction

function GetUnitAbsZ takes unit u returns real
   call MoveLocation(TmpLoc, GetUnitX(u), GetUnitY(u))
   return GetLocationZ(TmpLoc)+GetUnitFlyHeight(u)
endfunction
...
if ( RAbsBJ(GetUnitAbsZ(unit_1) - GetUnitAbsZ(unit_2)) <= 80. ) then
...
endif
Старый 25.12.2011, 22:41
hexing

offline
Опыт: 110
Активность:
Амбидекстрия, 100-200=-100
|-100| = 100
100 > 80
чтото не понимаю где проблема?
hexing добавил:
p.s. RAbsBJ(число) возвращает модуль числа
Старый 26.12.2011, 13:57
Hares
полупротосс
offline
Опыт: 6,966
Активность:
Да госпади!!!
Что ж тут сложного-то???
» Разверни меня!
((код cjass
define
{
bool = boolean;
void = nothing;
int = integer;

Radius = 250;
Damage = 450;
AttackType = ATTACK_TYPE_CHAOS;
DamageType = DAMAGE_TYPE_DEATH;
WeaponType = WEAPON_TYPE_WHOKNOWS;
}
bool ConditionGroup ()
{
unit u = GetFilterUnit();
unit Caster = GetSpellAbilityUnit();
bool b = true;

if IsPlayerAlly(GetOwningPlayer(GetSpellAbilityUnit()), GetOwningPlayer(u)) {b = false}
elseif IsUnitType(u, UNIT_TYPE_STRUCTURE) {b = false}
elseif GetWidgetLife(u) < 0.405 {b = false}
elseif GetUnitFlyHeight(Caster) - 50 > GetUnitFlyHeight(u) {b = false}
elseif GetUnitFlyHeight(Caster) + 50 < GetUnitFlyHeight(u) {b = false}

u = null;
Caster = null;
return b;
}
void DamageUnit()
{UnitDamageTarget(GetSpellAbilityUnit(),GetEnumUnit(), Damage, false, true, AttackType, DamageType, WeaponType)}

void Trig_Trigger_Damager_Actions()
{
boolexpr BE = Condition(function ConditionGroup);
group Gr = CreateGroup();
unit Caster = GetSpellAbilityUnit();

GroupEnumUnitsInRange(Gr, GetSpellTargetX(), GetSpellTargetY(), Radius, BE);
}
))
Старый 31.12.2011, 16:15
Амбидекстрия
Silenced by ScorpioT1000
offline
Опыт: 8,237
Активность:
Hares, ты проверял?
Амбидекстрия добавил:
Hares, и вообще, это больше похоже на СИ++ или галакси, но никак не на jass
Старый 31.12.2011, 16:45
Doc

offline
Опыт: 63,163
Активность:
Это cjass, ок?

Doc добавил:
Ну и да, кто-то из зрителей подсказал, что пора закрываться, ответы даны, поэтому:
http://screenshot.su/show.php?img=f7b77b225c87abe3c1501b6c8629aea8.jpg
Старый 31.12.2011, 19:30
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 03:51.