ну факт оно не добавляет, а устанавливает стату на нужное значение если ты хочешь повысить на N от того что уже есть, то надо складывать ( то что есть + число ) так же как с ХПшками
у него там идёт смещение юнита в точку в какую? - возврат точки из под юнита ( GetUnitLoc(u) ) идёт обращение и получение точки... но.. она ж никак не записана и удаляться не будет так?
Добавлено (16 Октября 2015, 19:00:52) --------------------------------------------- ты записываешь старые статы, даёшь новые, а потом возвращаешь старое значение?
это может привести к багу если статы героя с того момента изменятся, либо до того
например герой получит уровень за время действия скилла и +2 Силы за это при завершении скилла он получит Силу до этих +2, т.е. он их потеряет...
тебе надо посчитать сколько ты хочешь дать, записать это число выдать его... а потом уже именно это число снять... всё
BJ не так уж и страшны в основном они сделаны для удобства использования того что внутри точно так же ка мы сами пишемфункции для того что бы не повторять написание одних и тех же нативок по 100500 раз в коде..
Плюс нативки как никак быстрее читаются, чем BJ-функции.
там какие то такие миллионные доли секунд ))
где то на ХГМе видел как мерили разницу между разными подходами счёта предметов в инвентаре в итоге самым быстрым оказалось дерево ИФов, которое поочерёдно спрашивало есть ли предмет в каждом из слотов.. вот это было странно хД
Добавлено (18 Октября 2015, 21:44:36) --------------------------------------------- я б как то так сделал
Код
function EndSupport takes nothing returns nothing local hashtable h = udg_Hash local timer t = GetExpiredTimer() local integer i = GetHandleId(t)
local unit u = LoadUnitHandle(h,i,3) local unit c = LoadUnitHandle(h,i,4)
local unitstate hp = UNIT_STATE_LIFE local unitstate HP = UNIT_STATE_MAX_LIFE
set h = null set t = null set u = null set c = null endfunction
Код
function Trig_Support_Actions takes nothing returns nothing local hashtable h = udg_Hash local timer t = CreateTimer() local integer i = GetHandleId(t)
local unit c = GetTriggerUnit() local unit u = GetSpellTargetUnit()
local real p = I2R(GetUnitAbilityLevel(c,'A03U'))*.25
local integer A0 = GetHeroAgi(u,false) local integer A = R2I(A0*p+.5) local integer S0 = GetHeroStr(u,false) local integer S = R2I(S0*p+.5) local integer I0 = GetHeroInt(u,false) local integer I = R2I(I0*p+.5)
где то на ХГМе видел как мерили разницу между разными подходами счёта предметов в инвентаре в итоге самым быстрым оказалось дерево ИФов, которое поочерёдно спрашивало есть ли предмет в каждом из слотов.