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

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

Ответ
 
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
ZLOY5

offline
Опыт: 912
Активность:
loop
set f = FirstOfGroup(g)
exitwhen f == null
set x1 = GetUnitX(f)
set y1 = GetUnitY(f)
set e = AddSpecialEffectTarget(s,f,"origin")
endloop
оно?
но вар полностью зависать не должен
Старый 23.06.2014, 21:11
nvc123
new status
offline
Опыт: 59,284
Активность:
ты забыл убрать юнита из группы в конце цикла
nvc123 добавил:
а вообще код убог по определению
nvc123 добавил:
ибо криво хэш юзаешь
да и не нужен тут хэш
1 таймера с перебором массива структур хватит
Старый 23.06.2014, 23:14
Ответ

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

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

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

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



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