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

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

Ответ
 
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
пик по вектору из фейсинга юнита
Старый 16.05.2012, 11:29
Sladkoegka
Забыл что хотел...
offline
Опыт: 7,477
Активность:
Hatsume_Hate, А МОЖНО БЫ КАК НИБУДЬ СТРОЧКУ????
P.S.:такие все умные-а я то тупой,как жаль.
Старый 16.05.2012, 12:26
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
local real a = GetUnitFacing(MyUnit)
local real x = GetUnitX(MyUnit) + 140. * Cos(a * bj_DEGTORAD)
local real y = GetUnitY(MyUnit) + 140. * Sin(a * bj_DEGTORAD)
call GroupEnumUnitsInRange(MyGroup, x, y, 125, Filter(function MyFilter))
Старый 16.05.2012, 12:55
Sladkoegka
Забыл что хотел...
offline
Опыт: 7,477
Активность:
Hatsume_Hate, А разве это юниты-сектором окружности????
Sladkoegka добавил:
И Вообще можно подробней про GroupEnumUnitsInRange и MyGroup
Старый 16.05.2012, 15:01
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
Sladkoegka, учи jass, или ты сел в лужу и фиг у тебя что выйдет...
Он предлагает засовывать в группу всех юнитов впереди героя, а заем проверять если группа не пуста то твои деиствия...
GroupEnumUnitsInRang - натив функция, берёт и добавляет всез юнитов в группу MyGroup, в точке x,y и радиусе 125.... Filter (это функция которая не даст попасть в группу ненужным юнитам, к примеру зданиям)
Старый 16.05.2012, 15:05
Hanabishi
COOL STATUS
offline
Опыт: отключен
А так не работает разве?
f = GetUnitFacing(caster)*bj_DEGTORAD
a = Atan2(GetUnitY(target)-GetUnitY(caster), GetUnitX(target)-GetUnitX(caster))
if (a<=f+1.57) and (a>=f-1.57) then
    //...
endif
Старый 16.05.2012, 15:05
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
Hanabishi, он это не понимает, делаеть на гуи с локейшенами и всё бестолку...
Старый 16.05.2012, 15:07
Sladkoegka
Забыл что хотел...
offline
Опыт: 7,477
Активность:
Hanabishi, А что вот это за коффицент 1.57???И как тут регулировать этот самый угол на определенное число??
Старый 16.05.2012, 15:41
Hanabishi
COOL STATUS
offline
Опыт: отключен
Это радиан.
1.57 радиан = 90 градусов (примерно)
Hanabishi добавил:
Если хочешь, можно сделать так, если тебе в градусах понятней:
f = GetUnitFacing(caster)*bj_DEGTORAD
a = Atan2(GetUnitY(target)-GetUnitY(caster), GetUnitX(target)-GetUnitX(caster))
t = 90.0*bj_DEGTORAD
if (a<=f+t) and (a>=f-t) then
    //...
endif
Старый 16.05.2012, 16:01
Sladkoegka
Забыл что хотел...
offline
Опыт: 7,477
Активность:
Короче говоря-не мудрствуя лукаво:
function Trig_WaveOfWindPeriodic_2 takes nothing returns nothing
    local real f = GetUnitFacing(udg_WaveOfWind_Unit)*bj_DEGTORAD
    local real a = Atan2(GetUnitY(GetEnumUnit())-GetUnitY(udg_WaveOfWind_Unit), GetUnitX(GetEnumUnit())-GetUnitX(udg_WaveOfWind_Unit))
    if (a<=f+1.57) and (a>=f-1.57) then
    if IsUnitEnemy( (GetEnumUnit()), GetOwningPlayer(udg_WaveOfWind_Unit)) and IsUnitAliveBJ(GetEnumUnit()) then
      call SetUnitPositionLoc( GetEnumUnit(), PolarProjectionBJ(GetUnitLoc(GetEnumUnit()), ( 61.00 - ( DistanceBetweenPoints(GetUnitLoc(udg_WaveOfWind_Unit), GetUnitLoc(GetEnumUnit())) / 20.00 ) ),bj_RADTODEG * Atan2(GetUnitY(GetEnumUnit())-GetUnitY(udg_WaveOfWind_Unit), GetUnitX(GetEnumUnit())-GetUnitX(udg_WaveOfWind_Unit))))
    endif
    endif
endfunction


function Trig_WaveOfWindPeriodic_Actions takes nothing returns nothing
    call ForGroup( GetUnitsInRectAll(RectFromCenterSizeBJ(GetUnitLoc(udg_WaveOfWind_Unit), 1200.00, 1200.00)), function Trig_WaveOfWindPeriodic_2 )
endfunction

//===========================================================================
function InitTrig_WaveOfWindPeriodic takes nothing returns nothing
    set gg_trg_WaveOfWindPeriodic = CreateTrigger(  )
    call DisableTrigger( gg_trg_WaveOfWindPeriodic )
    call TriggerRegisterTimerEventPeriodic( gg_trg_WaveOfWindPeriodic, 0.04 )
    call TriggerAddAction( gg_trg_WaveOfWindPeriodic, function Trig_WaveOfWindPeriodic_Actions )
endfunction
Срабатывает редко и тока 1 раз.
P.S.:Тогда можно и перенести тему в соответствующий раздел...........
Старый 16.05.2012, 16:06
Sladkoegka
Забыл что хотел...
offline
Опыт: 7,477
Активность:
Да,скорее всего ошибка в порядке действий,и во всяких endif.Кто может исправить-помогите уж плиз.
Старый 16.05.2012, 21:23
Vadik29
Choice Battle 1.6а
offline
Опыт: 15,845
Активность:
Sladkoegka, по-моему проще было просто заказать спел в заклинаниях на заказ или уже забить....
Да есть выход на гуи, создаешь дамми пускаешь его в указанном направлении ,затем пикаешь всех юнитов вокруг него и тащишь за ним, даммика сделай прозрачным.
Но правда утечек будет уйма и карта будет говном с таким спелом, хотя я уже представляю какие там спелы....
Vadik29 добавил:
Sladkoegka, Даа... код - фэил....
Старый 17.05.2012, 07:09
Sladkoegka
Забыл что хотел...
offline
Опыт: 7,477
Активность:
Vadik29,
по-моему проще было просто заказать спел в заклинаниях на заказ или уже забить....
Это не для меня
Да есть выход на гуи, создаешь дамми пускаешь его в указанном направлении ,затем пикаешь всех > юнитов вокруг него и тащишь за ним, даммика сделай прозрачным.
Читай ранние посты-писали уже об этом и я сказал что это не совсем то
>Но правда утечек будет уйма и карта будет говном с таким спелом
Уверен?
хотя я уже представляю какие там спелы....
Ты не предствляешь.
Даа... код - фэил....
ОО ты крут написал что код плохой.а сам ничего путного и действенного предложить не смог-зачем тогда отписываться?Чтобы показать свои способности??
Старый 17.05.2012, 11:21
DimanTOoBS

offline
Опыт: 5,791
Активность:
Sladkoegka, держи как- то так
Прикрепленные файлы
Тип файла: w3x permforce.w3x (12.6 Кбайт, 5 просмотров )

Отредактировано Nerevar, 17.05.2012 в 17:27.
Старый 17.05.2012, 15:35
Vadik29
Choice Battle 1.6а
offline
Опыт: 15,845
Активность:
найдёшь утечку, получишь медальку
Ок, если за каждую утечку по медальке то ты уже должен мне 2 медальки. ( ты себя переоцениваешь сударь) + я еще сомневаюсь на счет "GetUnitsInRangeOfLocAll" - возможно еще по 1 создает, но не уверен...
вот код:
function Trig_Spell_Func006Func001C takes nothing returns boolean
    if ( not ( IsUnitAliveBJ(GetEnumUnit()) == true ) ) then
        return false
    endif
    if ( not ( IsUnitEnemy(GetEnumUnit(), Player(0)) == true ) ) then
        return false
    endif
    return true
endfunction

function Trig_Spell_Func006A takes nothing returns nothing
    if ( Trig_Spell_Func006Func001C() ) then
        call GroupAddUnitSimple( GetEnumUnit(), udg_Group[2] )
    else
    endif
endfunction

function Trig_Spell_Func007Func001C takes nothing returns boolean
    if ( not ( IsUnitInGroup(GetEnumUnit(), udg_Group[2]) == true ) ) then
        return false
    endif
    return true
endfunction

function Trig_Spell_Func007A takes nothing returns nothing
    if ( Trig_Spell_Func007Func001C() ) then
        set udg_XY[1] = GetUnitX(GetEnumUnit())
        set udg_XY[2] = GetUnitY(GetEnumUnit())
        set udg_XY[1] = ( udg_XY[1] + ( 10.00 * CosBJ(GetUnitFacing(udg_Unit)) ) )
        set udg_XY[2] = ( udg_XY[2] + ( 10.00 * SinBJ(GetUnitFacing(udg_Unit)) ) )
        call UnitDamageTargetBJ( udg_Unit, GetEnumUnit(), 1.00, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL )
        call SetUnitX(GetEnumUnit(), udg_XY[1])
        call SetUnitY(GetEnumUnit(), udg_XY[2])
    else
    endif
endfunction

function Trig_Spell_Actions takes nothing returns nothing
    set udg_XY[1] = GetUnitX(udg_Unit)
    set udg_XY[2] = GetUnitY(udg_Unit)
    call GroupClear( udg_Group[1] )
    call GroupClear( udg_Group[2] )
    set bj_wantDestroyGroup = true
    call ForGroupBJ( GetUnitsInRangeOfLocAll(300.00, OffsetLocation(Location(udg_XY[1], udg_XY[2]), ( 300.00 * CosBJ(GetUnitFacing(udg_Unit)) ), ( 300.00 * SinBJ(GetUnitFacing(udg_Unit)) ))), function Trig_Spell_Func006A ) // 1 утечка
    call ForGroupBJ( GetUnitsInRangeOfLocAll(400.00, Location(udg_XY[1], udg_XY[2])), function Trig_Spell_Func007A ) // 1 утечка
endfunction

//===========================================================================
function InitTrig_Spell takes nothing returns nothing
    set gg_trg_Spell = CreateTrigger(  )
    call TriggerRegisterTimerEventPeriodic( gg_trg_Spell, 0.03 )
    call TriggerAddAction( gg_trg_Spell, function Trig_Spell_Actions )
endfunction

Отредактировано Nerevar, 17.05.2012 в 17:27.
Старый 17.05.2012, 16:46
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
DimanTOoBS, ну локации не удаляются, перед каждой ForGroupBJ нужно ставить bj_wantDestroyGroup = true.... вот и утечки.
Старый 17.05.2012, 17:14
NIKZ
Изучаю Jass
offline
Опыт: 6,036
Активность:
А как сделать чтобы положение юнита запоминалось один раз?
подкиньте код плз
Старый 18.05.2012, 01:26
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
ну или так
Прикрепленные файлы
Тип файла: w3x force push.w3x (15.2 Кбайт, 3 просмотров )

Отредактировано Hatsume_Hate, 18.05.2012 в 03:41.
Старый 18.05.2012, 02:56
Extremator

offline
Опыт: 39,428
Активность:
Sladkoegka:
В общем что-то не могу нормально сделать такое условие под такой триггер:Когда герой применяет заклинание то вражеские юниты должны двигаться от кастера,как бы отталкиваться от него,но только перед ним!!!.Собственно подскажите пожалуйста проверку на то что юнит находится в 90 градусов(градусной мере) перед другим юнитом.
вижу тут ещё много чего написано... а читать всё лениво... поэтому предложу такой вариант...
Пикнть юнитов в кольце перед героем (как на картинке ниже)
И всех кто попал в этот круг - оттолкнуть...
Тут канешно можно по разному толкать... (вторая картинка)
  • стена - отталкивать в одном направдении
  • эпицентр - в направении от героя
Extremator добавил:
вот пример...
там есть две строки, одна из них отключеная... set MP_angle[_] = ...
вот верхняя толкает под углом в котором повернёт герой (в момент каста)
а вторая - угол от героя до этого юнита (в момент каста)
Миниатюры
Кликните на картинку для увеличения
Название:  1.PNG
Просмотров: 3
Размер:  4.6 Кбайт  Кликните на картинку для увеличения
Название:  2.PNG
Просмотров: 9
Размер:  11.9 Кбайт  
Прикрепленные файлы
Тип файла: w3x MassPush.w3x (10.6 Кбайт, 2 просмотров )

Отредактировано Extremator, 18.05.2012 в 15:14.
Старый 18.05.2012, 04:22
Ответ

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

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

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

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



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