Snappy
offline
Опыт:
1,335Активность: |
Зависает варкрафт при использование способности
Вот собственно код, как только способность включаться вакрафт зависает
((код jass
function Trig_Byakugan_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A062' endfunction function Trig_Byakugan_Filter takes nothing returns boolean
return IsPlayerEnemy(GetOwningPlayer(GetTriggerUnit()), GetOwningPlayer(GetFilterUnit())) and GetWidgetLife(GetFilterUnit()) > 0.405 and not IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) and not IsUnitType(GetFilterUnit(), UNIT_TYPE_FLYING) endfunction function Trig_Byakugan_Actions takes nothing returns nothing
local timer t = GetExpiredTimer() local integer h = GetHandleId(t) local unit u = LoadUnitHandle(udg_Hash,h,1) local effect e = LoadEffectHandle(udg_Hash,h,2) local integer counter = LoadInteger(udg_Hash,h,3) if counter>0 then call SaveInteger(udg_Hash,h,3,counter-1) else call DestroyEffect(e) call PauseTimer(t) call DestroyTimer(t) call FlushChildHashtable(udg_Hash,h) endif set t = null set u = null set e = null endfunction function Trig_Byakugan_Actions2 takes nothing returns nothing
local unit u = GetSpellAbilityUnit() local timer t = CreateTimer() local integer h = GetHandleId(t) local group g = CreateGroup() local player p = GetLocalPlayer() local real x = GetUnitX(u) local real y = GetUnitY(u) local real x1 local real y1 local string s = "" local unit f local effect e local boolexpr b = Condition(function Trig_Byakugan_Filter) call GroupEnumUnitsInRange(g,x,y,1600,b) if GetLocalPlayer() == GetOwningPlayer(u) then set s = "Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl" endif loop set f = FirstOfGroup(g) exitwhen f == null set x1 = GetUnitX(f) set y1 = GetUnitY(f) set e = AddSpecialEffectTarget(s,f,"origin") endloop call SaveUnitHandle(udg_Hash,h,1,u) call SaveEffectHandle(udg_Hash,h,2,e) call SaveInteger(udg_Hash,h,3,275) call TimerStart(t,0.04,true,function Trig_Byakugan_Actions) set u = null set t = null call DestroyGroup(g) call DestroyBoolExpr(b) set g = null endfunction =========================================================================== function InitTrig_Byakugan takes nothing returns nothing local trigger t = CreateTrigger( ) local integer i = 0 loop call TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT , null) set i = i + 1 exitwhen i == 16 endloop call TriggerAddCondition(t, Condition( function Trig_Byakugan_Conditions ) ) call TriggerAddAction(t, function Trig_Byakugan_Actions2 ) set t = null endfunction )) Отредактировано Кет, 01.07.2014 в 04:11. |
23.06.2014, 20:08 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ZLOY5
offline
Опыт:
912Активность: |
оно? но вар полностью зависать не должен |
23.06.2014, 21:11 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
nvc123
new status
offline
Опыт:
59,284Активность: |
ты забыл убрать юнита из группы в конце цикла
nvc123 добавил:
а вообще код убог по определению nvc123 добавил: ибо криво хэш юзаешь да и не нужен тут хэш 1 таймера с перебором массива структур хватит |
23.06.2014, 23:14 | #3
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|