Помогите, пожалуйста, макет заклинания сделать. Принцип такой: На юнита накладывается заклинание. Если этот не технический юнит наносит урон другому не техническому юниту, то на него накладывается проклятие.
function Trig_M_Attack takes nothing returns nothing unit d = GetEventDamageSource() unit u = GetTriggerUnit() real la = GetUnitState( d, UNIT_STATE_LIFE ) if not IsUnitType( d, UNIT_TYPE_STRUCTURE ) and GetUnitAbilityLevel( d, 'A021' ) > 0 then //Проклятие endif d = null u = null endfunction
function Trig_M_Actions takes nothing returns nothing trigger g = CreateTrigger() unit d = GetAttacker() unit u = GetTriggerUnit() if not IsUnitType( u, UNIT_TYPE_STRUCTURE ) and GetUnitAbilityLevel( d, 'A021' ) > 0 then TriggerAddAction( g, function Trig_M_Attack ) TriggerRegisterUnitEvent( g, u, EVENT_UNIT_DAMAGED ) endif d = null u = null TriggerSleepAction( 15.00 ) DestroyTrigger( g ) g = null endfunction
//=========================================================================== function InitTrig_M takes nothing returns nothing set gg_trg_M = CreateTrigger( ) DisableTrigger( gg_trg_M ) call TriggerRegisterAnyUnitEventBJ( gg_trg_M, EVENT_PLAYER_UNIT_ATTACKED ) call TriggerAddAction( gg_trg_M, function Trig_M_Actions ) endfunction
С этим кодом игра сразу вылетает с фатальной ошибкой.
Я в контакте и на warcraft3ft.info. Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
Сообщение отредактировал CHLSN - Суббота, 25 Декабря 2010, 18:14:58
function Trig_M_Attack takes nothing returns nothing local unit d = GetEventDamageSource() local unit u = GetTriggerUnit() local real la = GetUnitState( d, UNIT_STATE_LIFE ) if not IsUnitType( d, UNIT_TYPE_STRUCTURE ) and GetUnitAbilityLevel( d, 'A021' ) > 0 then endif set d = null set u = null endfunction
function Trig_M_Actions takes nothing returns nothing local trigger g = CreateTrigger() local unit d = GetAttacker() local unit u = GetTriggerUnit() if not IsUnitType( u, UNIT_TYPE_STRUCTURE ) and GetUnitAbilityLevel( d, 'A021' ) > 0 then call TriggerAddAction( g, function Trig_M_Attack ) call TriggerRegisterUnitEvent( g, u, EVENT_UNIT_DAMAGED ) endif set d = null set u = null call TriggerSleepAction( 15.00 ) call DestroyTrigger( g ) set g = null endfunction
//=========================================================================== function InitTrig_M takes nothing returns nothing set gg_trg_M = CreateTrigger( ) call DisableTrigger( gg_trg_M ) call TriggerRegisterAnyUnitEventBJ( gg_trg_M, EVENT_PLAYER_UNIT_ATTACKED ) call TriggerAddAction( gg_trg_M, function Trig_M_Actions ) endfunction
Я в контакте и на warcraft3ft.info. Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
Я в контакте и на warcraft3ft.info. Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
EdiTTORR, cJass рулит. На этот счет тема закрыта. Иначе бы у меня даже код не откомпилировал.
Я в контакте и на warcraft3ft.info. Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
Добавлено (25-12-2010, 18:26) --------------------------------------------- EdiTTORR, cJass при сохранении карты добавляет и local и set и прочую лабуду автоматически.
Я в контакте и на warcraft3ft.info. Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
EdiTTORR, Т_Т cJass не cJass, разница только во внешнем виде. Закрыли флуд.
Я в контакте и на warcraft3ft.info. Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
Большая просьба тупо кинуть код в тему, а не ссылку на карту на файлообменнике, умоляю Вас.
Я в контакте и на warcraft3ft.info. Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
Большая просьба тупо кинуть код в тему, а не ссылку на карту на файлообменнике, умоляю Вас.
Code
function Delete takes nothing returns nothing local timer t=GetExpiredTimer() local unit u=LoadUnitHandle(udg_Hash,GetHandleId(t),1) call RemoveUnit(u) call DestroyTimer(t) set t = null set u = null endfunction function Trig_trg_Actions takes nothing returns nothing local unit u = GetEventDamageSource() local unit a = GetTriggerUnit() local real x = GetUnitX(a) local real y = GetUnitY(a) local player p = GetOwningPlayer(u) local unit d local timer t = CreateTimer() if IsUnitType(u, UNIT_TYPE_MECHANICAL) == false and IsUnitType(a, UNIT_TYPE_MECHANICAL) == false and UnitHasBuffBJ(a,'Bcrs') == false and IsPlayerEnemy(GetOwningPlayer(a), GetOwningPlayer(u)) == true then set d = CreateUnit(p,'e000',x,y,0) call IssueTargetOrder( d, "curse", a ) call SaveUnitHandle(udg_Hash,GetHandleId(t),1,d) call TimerStart(t,2,false,function Delete) set d = null endif set t = null set p = null set u = null set a = null endfunction
//=========================================================================== function InitTrig_trg takes nothing returns nothing set gg_trg_trg = CreateTrigger( ) call TriggerAddAction( gg_trg_trg, function Trig_trg_Actions ) endfunction
Добавлено (25-12-2010, 18:59) --------------------------------------------- CHLSN, в ините
Code
set udg_Hash=InitHashtable()
Действие: Отряд - выбрать каждого юнита в зоне Игровая карта Триггер - Добавить к trg <gen> Боевая еденица(Выбранный юнит) Получает урон
//=========================================================================== function Trig_trg_Actions takes nothing returns nothing local unit u = GetEventDamageSource() local unit a = GetTriggerUnit() local real x = GetUnitX(a) local real y = GetUnitY(a) local player p = GetOwningPlayer(u) local unit d local timer t = CreateTimer() if IsUnitType(u, UNIT_TYPE_MECHANICAL) == false and IsUnitType(a, UNIT_TYPE_MECHANICAL) == false and UnitHasBuffBJ(a,'Bcrs') == false and IsPlayerEnemy(GetOwningPlayer(a), GetOwningPlayer(u)) == true then set d = CreateUnit(p,'e000',x,y,0) call IssueTargetOrder( d, "curse", a ) call UnitApplyTimedLife(d,'BTLF',2) set d = null endif set t = null set p = null set u = null set a = null endfunction
//=========================================================================== function InitTrig_trg takes nothing returns nothing set gg_trg_trg = CreateTrigger( ) call TriggerAddAction( gg_trg_trg, function Trig_trg_Actions ) endfunction
При инициализации пикай всех юнитов и добовляй выбранных юнитов к событию "Боевая еденица - получает урон" Так же при создании новых тоже добовляй.
При инициализации пикай всех юнитов и добовляй выбранных юнитов к событию "Боевая еденица - получает урон" Так же при создании новых тоже добовляй.
+100500 юнитов за всю игру. Лагать не будет?
Я в контакте и на warcraft3ft.info. Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
А подчищать юнитов не учили? Создай группу. Добовляй туда юнитов. Делай проверку есть выбранный юнит там или нет(по необходимости если не хочеш парится добовлять после каждого созданного юнита. Тупо переодическим событием) Юнит умирает, удаляем из группы.И всё будет нормально.По мне так лучше лок тригеров.
Я в контакте и на warcraft3ft.info. Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
function F3 takes nothing returns nothing local timer Tmr = GetExpiredTimer() local trigger Trg = LoadTriggerHandle(udg_Hash, GetHandleId(Tmr), 1) call FlushChildHashtable(udg_Hash, GetHandleId(Tmr)) call DestroyTimer(Tmr) set Tmr = null call DestroyTrigger(Trg) set Trg = null endfunction //=========================================================================== function F2 takes nothing returns nothing local unit u = GetEventDamageSource() local unit a = GetTriggerUnit() local real x = GetUnitX(a) local real y = GetUnitY(a) local player p = GetOwningPlayer(u) local unit d local timer t = CreateTimer() if IsUnitType(u, UNIT_TYPE_MECHANICAL) == false and IsUnitType(a, UNIT_TYPE_MECHANICAL) == false and UnitHasBuffBJ(a,'Bcrs') == false and IsPlayerEnemy(GetOwningPlayer(a), GetOwningPlayer(u)) == true then set d = CreateUnit(p,'e000',x,y,0) call IssueTargetOrder( d, "curse", a ) call UnitApplyTimedLife(d,'BTLF',2) set d = null endif set t = null set p = null set u = null set a = null endfunction //=========================================================================== function Trig_trg2_Actions takes nothing returns nothing local trigger Trg = CreateTrigger() local timer Tmr = CreateTimer() call TriggerRegisterUnitEvent(Trg, GetTriggerUnit(), EVENT_UNIT_DAMAGED) call TriggerAddAction(Trg, function F2) call SaveTriggerHandle(udg_Hash, GetHandleId(Tmr), 1, Trg) call TimerStart(Tmr, 7, false, function F3) set Trg = null set Tmr = null endfunction
//=========================================================================== function InitTrig_trg2 takes nothing returns nothing set gg_trg_trg2 = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_trg2, EVENT_PLAYER_UNIT_ATTACKED ) call TriggerAddAction( gg_trg_trg2, function Trig_trg2_Actions ) endfunction