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

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

Ответ
 
Argon

offline
Опыт: 511
Активность:
Как устроить лесоповал?
Я хочю сделать тригер, что бы когда юнит шёл через лес, деревья падали. Как это сделать?
Старый 05.03.2009, 13:08
Hanabishi
COOL STATUS
offline
Опыт: отключен
создай триггер unlamber, конвертируй в текст, снеси всё и вставь:
Код:
function killdest takes nothing returns nothing
    call KillDestructable(GetEnumDestructable())
endfunction

function unlumber takes nothing returns nothing
    call EnumDestructablesInCircleBJ(rad, GetUnitLoc(u), function killdest)
endfunction

//===========================================================================
function InitTrig_unlumber takes nothing returns nothing
    set gg_trg_unlumber = CreateTrigger(  )
    call TriggerRegisterTimerEventPeriodic(gg_trg_unlumber, 0.50)
    call TriggerAddAction(gg_trg_unlumber, function unlumber)
endfunction

rad - радиус повала
u - юнит, вокруг которого дохнет лес
Старый 05.03.2009, 13:22
RazArt

offline
Опыт: 11,197
Активность:
Hanabishi, утечки...
» EnumDestructablesInCircleBJ

function EnumDestructablesInCircleBJ takes real radius, location loc, code actionFunc returns nothing
local rect r

if (radius >= 0) then
set bj_enumDestructableCenter = loc
set bj_enumDestructableRadius = radius
set r = GetRectFromCircleBJ(loc, radius)
call EnumDestructablesInRect(r, filterEnumDestructablesInCircleBJ, actionFunc)
call RemoveRect(r)
endif
endfunction
Старый 05.03.2009, 13:28
Hanabishi
COOL STATUS
offline
Опыт: отключен
события:
pereodic event (0.5)
действия:
pick every destructable in circle and do multiple actions (радиус, Position of unit (юнит))
kill (Last created destructable)

Hanabishi добавил:
Код:
function rad takes nothing returns integer
    return 250 //Твой радиус
endfunction

function u takes nothing returns unit
    return u //Твой юнит
endfunction

function killdest takes nothing returns nothing
    if(IsUnitAliveBJ(GetEnumDestructable())==true) then
        call KillDestructable(GetEnumDestructable())
    endif
endfunction

function dest_true takes nothing returns boolean
    return true
endfunction

function unlumber takes nothing returns nothing
    local integer i = rad()/2
    local location loc = GetUnitLoc(u())
    local rect r = Rect(-i, -i, i, i)
    call MoveRectToLoc(r, loc)
    call EnumDestructablesInRect(r, Condition(function dest_true), function killdest)
    call RemoveRect(r)
    call RemoveLocation(loc)
    set r = null
    set loc = null
endfunction

//===========================================================================
function InitTrig_unlumber takes nothing returns nothing
    set gg_trg_unlumber = CreateTrigger(  )
    call TriggerRegisterTimerEventPeriodic(gg_trg_unlumber, 0.50)
    call TriggerAddAction(gg_trg_unlumber, function unlumber)
endfunction

Отредактировано Hanabishi, 05.03.2009 в 15:04.
Старый 05.03.2009, 13:49
alexkill

offline
Опыт: 18,872
Активность:
Цитата:
нихт утечек

навскидку: локация и рект )

просьба: обновляй коды в одном посте, не создавая новые
Старый 05.03.2009, 13:51
Igores
НИИ 4А-Во! Кафедра Джасс.
offline
Опыт: 5,325
Активность:
Раз уж зашел вопрос о деревьях, то может ктонибудь подскажет как сделать так, чтобы деревья не просто падали, а еще и горели при этом?
Старый 05.03.2009, 13:53
Hanabishi
COOL STATUS
offline
Опыт: отключен
навсегда горели?

Hanabishi добавил:
alexkill?, так пойдёт?
Старый 05.03.2009, 13:56
alexkill

offline
Опыт: 18,872
Активность:
Цитата:
alexkill?, так пойдёт?

нет, конечно )
в конце функции добавь:
Код:
set r = null
set loc = null

Цитата:
Сообщение от Igores
Раз уж зашел вопрос о деревьях, то может ктонибудь подскажет как сделать так, чтобы деревья не просто падали, а еще и горели при этом?

создавай спецэффект, аттачь его к хэндлу таймера, по истечению которого удаляй его (эффект... да и таймер).
Старый 05.03.2009, 15:03
Hanabishi
COOL STATUS
offline
Опыт: отключен
Igores, держи:

Hanabishi добавил:
alexkill, вот, только не пойму, зачем обнулять удалённые?
Прикрепленные файлы
Тип файла: w3x test.w3x (18.1 Кбайт, 34 просмотров )
Старый 05.03.2009, 15:06
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
Hanabishi, они к сожалению остаются в памяти вара =\
Старый 05.03.2009, 15:09
alexkill

offline
Опыт: 18,872
Активность:
Цитата:
alexkill, вот, только не пойму, зачем обнулять удалённые?

Hanabishi, читай здесь.
Старый 05.03.2009, 15:16
Hanabishi
COOL STATUS
offline
Опыт: отключен
ааа... возьму на заметку, не знал
Старый 05.03.2009, 15:19
aprotos
Йа тигрЪ!
offline
Опыт: 2,222
Активность:
Эмм, ивините, но не лучше ли просто создать "Жар Преисподней", который будет действовать только на деревья??
Старый 12.03.2009, 00:54
9thNerZul
forum/warcraft3
offline
Опыт: 4,869
Активность:
Вместо IsUnitAliveBJ можно сделать (точно код не помню,просто посмотри что значит та функция в Blizzard.j) IsUnitState(твой юнит ,UNIT_STATE_LIFE)>0.405
Старый 12.03.2009, 09:52
Gres
Кораэлестраз
offline
Опыт: 18,575
Активность:
Цитата:
Сообщение от aprotos
Эмм, ивините, но не лучше ли просто создать "Жар Преисподней", который будет действовать только на деревья??

Если я не ошибаюсь... но Жар преисподней не действует же на деревья! 0о
Старый 12.03.2009, 10:07
Ответ

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

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

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

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



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