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 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Melissa
Я всегда хочу как лучше!
offline
Опыт:
30,496Активность: |
Как-то всё страшно, мб хоть скажешь что должно происходить? |
04.09.2014, 19:43 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
godleonid
offline
Опыт:
73Активность: |
Melissa, Создаётся огненный шар и летит в указанном направлении |
04.09.2014, 19:49 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hate
конь вакуумный
offline
Опыт:
43,117Активность: |
|
04.09.2014, 19:50 | #4
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
godleonid
offline
Опыт:
73Активность: |
Hate, объясни подробнее что не так. |
04.09.2014, 19:52 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hate
конь вакуумный
offline
Опыт:
43,117Активность: |
|
04.09.2014, 20:14 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Buulichkaa
Делаю спеллы за еду
offline
Опыт:
20,171Активность: |
читаем вджасс туториал, разбираем структуры, делаем нормальный муи, если сам вджасс пугает, в переводе адика есть примеры, можно все писать на простом джассе используя те же методы |
04.09.2014, 20:47 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
godleonid
offline
Опыт:
73Активность: |
Buulichkaa, Кинь мне ссылку на этот вджазз туториал. |
04.09.2014, 21:46 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|