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

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

Ответ
 
godleonid

offline
Опыт: 73
Активность:
Как можно ещё оптимизировать этот код
Пожалуйста скажи как можно ещё оптимизировать данный код
Я оптимизировал его как мог использование хэш таблицы сократил до минимума.
function Katon_Saske_Act takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer h = GetHandleId(t)
local unit b = LoadUnitHandle(hash,h,1)
local real d = GetUnitFacing(b)
local unit n = null
local group g = CreateGroup()
local real dd = GetUnitState(b,UNIT_STATE_MANA)
call SetUnitX(b,GetWidgetX(b)+ 20 *Cos(d*bj_DEGTORAD))
call SetUnitY(b,GetWidgetY(b)+ 20 *Sin(d*bj_DEGTORAD))
call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Other\\Doom\\DoomDeath.mdl",GetUnitX(b)​,GetUnitY(b)))
call GroupEnumUnitsInRange(g,GetUnitX(b),GetUnitY(b),250,null)
loop
set n = FirstOfGroup(g)
exitwhen n == null
if IsUnitEnemy(n,GetOwningPlayer(b)) == true and IsUnitType(n,UNIT_TYPE_DEAD) == false
call UnitDamageTarget(b,n,dd,false,false,null,null,null)
endif
call GroupRemoveUnit(g,n)
endloop
call DestroyGroup(g)
set t = null
set h = 0
set b = null
set g = null
set n = null
set d = 0
endfunction
function Katon_Saske takes nothing returns nothing
local unit a = GetSpellAbilityUnit()
local timer t = CreateTimer()
local integer h = GetHandleId(t)
local real d = bj_RADTODEG*Atan2(GetSpellTargetY()-GetUnitY(a),GetSpellTargetX()-GetUnitX(a))
local unit b = CreateUnit(GetOwningPlayer(a),'h001',GetUnitX(a),GetUnitY(a),d)
call SetUnitState(b, UNIT_STATE_MANA, 0)
local real dd = (GetUnitAbilityLevel(a,GetSpellAbilityId())*(GetHeroInt(a,true)/6))
call SetUnitState(b, UNIT_STATE_MANA, dd)
call SaveUnitHandle(hash,h,1,b)
call TimerStart(t,0.02,true,function Katon_Saske_Act)
set a = null
set d = 0
set dd = 0
call TriggerSleepAction(1.10)
call FlushChildHashtable(hash,h)
set h = 0
call PauseTimer(t)
call DestroyTimer(t)
call RemoveUnit(b)
set t = null
set b = null
endfunction
function Katon_Saske_Cond takes nothing returns boolean
return GetSpellAbilityId() == 'A000'
endfunction
===========================================================================
function InitTrig_Katon_Saske takes nothing returns nothing
local trigger t = CreateTrigger()
local integer index = 0
set index = 0
loop
call TriggerRegisterPlayerUnitEvent(t, Player(index), EVENT_PLAYER_UNIT_SPELL_EFFECT, null)
set index = index + 1
exitwhen index == 16
endloop
call TriggerAddCondition(t, Condition( function Katon_Saske_Cond ) )
call TriggerAddAction(t, function Katon_Saske )
set index = 0
set t = null
endfunction
globals
hashtable hash = InitHashtable()
endglobals
Старый 04.09.2014, 19:40
Melissa
Я всегда хочу как лучше!
offline
Опыт: 31,696
Активность:
Как-то всё страшно, мб хоть скажешь что должно происходить?
Старый 04.09.2014, 19:43
godleonid

offline
Опыт: 73
Активность:
Melissa, Создаётся огненный шар и летит в указанном направлении
Старый 04.09.2014, 19:49
Hate
конь вакуумный
online
Опыт: 43,033
Активность:
call TriggerSleepAction(1.10)
IsUnitEnemy(n,GetOwningPlayer(b)) == true
set d = 0
set dd = 0
set h = 0
оптимизировал
Старый 04.09.2014, 19:50
godleonid

offline
Опыт: 73
Активность:
Hate, объясни подробнее что не так.
Старый 04.09.2014, 19:52
Hate
конь вакуумный
online
Опыт: 43,033
Активность:
Старый 04.09.2014, 20:14
Buulichkaa
Делаю спеллы за еду
offline
Опыт: 20,146
Активность:
использование хэш таблицы сократил до минимума
читаем вджасс туториал, разбираем структуры, делаем нормальный муи, если сам вджасс пугает, в переводе адика есть примеры, можно все писать на простом джассе используя те же методы
Старый 04.09.2014, 20:47
godleonid

offline
Опыт: 73
Активность:
Buulichkaa, Кинь мне ссылку на этот вджазз туториал.
Старый 04.09.2014, 21:46
Ответ

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

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

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

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



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