Сейчас 07:41:58 Пятница, 3 мая, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Когда юнит умирает выходит фатал.
Когда юнит умирает выходит фатал.
demon_nrtДата: Воскресенье, 18 Августа 2013, 22:34:59 | Сообщение # 1
6 уровень
Группа: Проверенные
Сообщений: 193
Награды: 0
Репутация: 2
Блокировки:
Помогите разобраться в коде. Смысл в том что пока именно герой направляющий способность жив то все нормально, но если он умирает под этой магией то выскакивает Fatal Eror

Вот код :

function Trig_Dusha_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A04B' ) ) then
return false
endif
return true
endfunction
function Timer_dush_Func009C takes nothing returns boolean
local timer Dt = GetExpiredTimer()
local integer h = GetHandleId(Dt)
local unit Du = LoadUnitHandle(udg_Hash,h,1)
local unit Du1 = LoadUnitHandle(udg_Hash,h,2)
local location Dl = GetUnitLoc (Du)
local location Dl1 = GetUnitLoc (Du1)
if ( not ( R2I(DistanceBetweenPoints(Dl,Dl1)) >= 1000 )) then
return false
endif
call RemoveLocation (Dl)
call RemoveLocation (Dl1)
set Dl = null
set Dl1 = null
return true
endfunction

function Timer_dush_Func010C takes nothing returns boolean
local timer Dt = GetExpiredTimer()
local integer h = GetHandleId(Dt)
local unit Du = LoadUnitHandle(udg_Hash,h,1)
local unit Du1 = LoadUnitHandle(udg_Hash,h,2)
if ( not ( IsUnitDeadBJ(Du) == true ) ) then
return false
endif
if ( not ( IsUnitDeadBJ(Du1) == true ) ) then
return false
endif
return true
endfunction

function Timer_dush_Actions takes nothing returns nothing
local timer Dt = GetExpiredTimer()
local integer h = GetHandleId(Dt)
local unit Du = LoadUnitHandle(udg_Hash,h,1)
local unit Du1 = LoadUnitHandle(udg_Hash,h,2)
local unit Du2
local location Dl = GetUnitLoc (Du)
local real Di = LoadReal(udg_Hash,h,3)
set Di = Di + 0.20
call SaveReal(udg_Hash,h,3,Di)
set Di = LoadReal (udg_Hash,h,3)
call CreateNUnitsAtLoc( 1, 'e007', GetOwningPlayer(Du), Dl, bj_UNIT_FACING )
set Du2 = GetLastCreatedUnit()
call UnitApplyTimedLifeBJ( 1.00, 'BTLF', Du2 )
call UnitAddAbilityBJ( 'A04C', Du2 )
call IssueTargetOrderBJ( Du2, "shadowstrike", Du1 )
call UnitDamageTargetBJ( Du, Du1, I2R(GetUnitAbilityLevelSwapped('A04B', Du)), ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL )
call UnitAddAbilityBJ( 'A04D', Du )
call SetUnitAbilityLevelSwapped( 'A04D', Du, R2I(Di ))
if ( Timer_dush_Func009C() ) then
call PauseTimer (Dt)
call UnitRemoveAbilityBJ( 'A04D', Du )
set Du = null
set Du1 = null
set Du2 = null
call RemoveLocation (Dl)
set Dl = null
else
endif
if ( Timer_dush_Func010C() ) then
call DisplayTextToForce( GetPlayersAll(), "TRIGSTR_2622" )
call PauseTimer (Dt)
call UnitRemoveAbilityBJ( 'A04D', Du )
set Du = null
set Du1 = null
set Du2 = null
call RemoveLocation (Dl)
set Dl = null
else
endif
set Du = null
set Du1 = null
set Du2 = null
call RemoveLocation (Dl)
set Dl = null
endfunction
function Trig_Dusha_Actions takes nothing returns nothing
local timer Dt = CreateTimer()
local integer h = GetHandleId(Dt)
local unit Du = GetSpellAbilityUnit()
local unit Du1 = GetSpellTargetUnit()
local real Di = 0
call SaveUnitHandle(udg_Hash,h,1,Du)
call SaveUnitHandle(udg_Hash,h,2,Du1)
call SaveReal(udg_Hash,h,3,Di)
call TimerStart(Dt,0.20,true, function Timer_dush_Actions )
call PolledWait( ( 2.00 + I2R(GetUnitAbilityLevelSwapped('A04B', Du)) ) )
call UnitRemoveAbilityBJ( 'A04D', Du )
call PauseTimer (Dt)
call DestroyTimer (Dt)
set Dt = null
set Du = null
set Du1 = null
set Di = 0.00
call FlushChildHashtable(udg_Hash,h)
endfunction

//===========================================================================
function InitTrig_Dusha_____________________u takes nothing returns nothing
set gg_trg_Dusha_____________________u = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Dusha_____________________u, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Dusha_____________________u, Condition( function Trig_Dusha_Conditions ) )
call TriggerAddAction( gg_trg_Dusha_____________________u, function Trig_Dusha_Actions )
endfunction


Сообщение отредактировал demon_nrt - Воскресенье, 18 Августа 2013, 22:48:24
 

ReckitДата: Понедельник, 19 Августа 2013, 07:52:32 | Сообщение # 2
3 уровень
Группа: Проверенные
Сообщений: 74
Награды: 0
Репутация: 7
Блокировки:
Что то ты намудрил там..
Это всё можно на гуи сделать.
;) <_<
 

[SeKtOR]Дата: Понедельник, 19 Августа 2013, 08:59:30 | Сообщение # 3
Группа: Проверенные
Сообщений: 1143
Награды: 0
Репутация: 1168
Блокировки:
Скажи что ты хочешь сделать тут всё очень страшно...

 

demon_nrtДата: Понедельник, 19 Августа 2013, 13:19:02 | Сообщение # 4
6 уровень
Группа: Проверенные
Сообщений: 193
Награды: 0
Репутация: 2
Блокировки:
Спасибо за столь великодушную помощь, но это то что я пока могу)) А смысл в том что появляется связь между нацеленным врагом и кастером в виде льда( снега) и ежесекундно наноситься до 50/100/150/200/250 ед. связь с каждой секундной увеличивает скорость атаки до 30/40/50/60/70%, уменьшает скорость движения врага до 10/20/30/40/50% в течении 7 сек. Если враг отойдет от цели на 1000 ед. то цепь разрушается. Длительность цепи 3/4/5/6/7 сек.
Если сможете сделать с комментариями буду при много благодарен.
 

[SeKtOR]Дата: Вторник, 20 Августа 2013, 14:28:55 | Сообщение # 5
Группа: Проверенные
Сообщений: 1143
Награды: 0
Репутация: 1168
Блокировки:
На днях если не будет влом постараюсь сделать...

Добавлено (20 Августа 2013, 14:28:55)
---------------------------------------------
Цитата (demon_nrt)
Спасибо за столь великодушную помощь, но это то что я пока могу)) А смысл в том что появляется связь между нацеленным врагом и кастером в виде льда( снега) и ежесекундно наноситься до 50/100/150/200/250 ед. связь с каждой секундной увеличивает скорость атаки до 30/40/50/60/70%, уменьшает скорость движения врага до 10/20/30/40/50% в течении 7 сек. Если враг отойдет от цели на 1000 ед. то цепь разрушается. Длительность цепи 3/4/5/6/7 сек.
Если сможете сделать с комментариями буду при много благодарен.

Баф продолжает висеть(понижение мс и повышение ас) если цепи кирдык?
P.S. Если да то сколько?




Сообщение отредактировал [SeKtOR] - Вторник, 20 Августа 2013, 14:29:07
 

abidinДата: Вторник, 20 Августа 2013, 15:19:45 | Сообщение # 6
7 уровень
Группа: Проверенные
Сообщений: 330
Награды: 0
Репутация: 305
Блокировки:
вообще этот код был написано не на jass (ну если написан то меньше половины) это можно заметить по названию функций

и по условиям

зачем конвертировать в текст GUI если можно показать код на gui????


Сообщение отредактировал abidin - Вторник, 20 Августа 2013, 15:20:20
 

demon_nrtДата: Среда, 21 Августа 2013, 06:36:51 | Сообщение # 7
6 уровень
Группа: Проверенные
Сообщений: 193
Награды: 0
Репутация: 2
Блокировки:
Цитата (|SeKtOR|)
Баф продолжает висеть(понижение мс и повышение ас) если цепи кирдык?
P.S. Если да то сколько?
Бафф сразу уничтожается. Юнит полностью восстанавливается от цепи.
 

abidinДата: Среда, 21 Августа 2013, 20:10:03 | Сообщение # 8
7 уровень
Группа: Проверенные
Сообщений: 330
Награды: 0
Репутация: 305
Блокировки:
demon_nrt, сможешь кинуть оригинальный код,а не исковерканный?Так ничего не понятно
 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Когда юнит умирает выходит фатал.
  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz