первое этих катонов уже по сто штук на всех сайтах и на этом то же второе зачем jass им мало пользуется и мало кто это всё понимает да ещё и устанавливал этот jass на редактор это всё можно без особых усилий на гуи сделать.
Да тут не только от не грамотности читать не приятно, но и от содержания чем-то положительным не охватывает. По сути, не тебе судить работу Вольфа, только лишь по той причине, что ты не видишь, что код и дает то самое качество, который ты не ценишь.
боже я не ценю jass по коду ) я ценю его по качеству ... я бы если увидел иё как наработку а то ты всё время говоришь я лудчше то , сё сделаю а на деле ты нечего мне не показал кроме карты ... из наруто у тебя там 4 персонажа и джирайа берд полный ... хаку не дальше от него ...
function MistEnergyCast2 takes void returns void timer t = GetExpiredTimer() integer id = GetHandleId(t) integer level = LoadInteger(h, id, 0) group g = LoadGroupHandle(h, id, 1) real x = LoadReal(h, id, 2) real y = LoadReal(h, id, 3) real dur = LoadReal(h, id, 4) + 0.05 real speed = LoadReal(h, id, 5) real dist = LoadReal(h, id, 6) + speed real tx real ty real a G = CopyGroup(g) if dur < 1.7 { loop E = FirstOfGroup(G) exitwhen E == null tx = GetUnitX(E) ty = GetUnitY(E) a = Atan2(ty - y, tx - x) if GetUnitState(E, UNIT_STATE_LIFE) > 0.405 and not IsTerrainPathable(tx + speed * Cos(a), ty + speed * Sin(a), PATHING_TYPE_FLYABILITY) then SetUnitX(E, tx + speed * Cos(a)) SetUnitY(E, ty + speed * Sin(a)) DestroyEffect(AddSpecialEffect("Objects\\Spawnmodels\\Undead\\ImpaleTargetDust\\ImpaleTargetDust.mdl", tx, ty)) else GroupRemoveUnit(g, E) endif GroupRemoveUnit(G, E) endloop SaveReal(h, id, 4, dur) SaveReal(h, id, 5, speed - 1) SaveReal(h, id, 6, dist) else GroupClear(g) DestroyGroup(g) PauseTimer(t) DestroyTimer(t) FlushChildHashtable(h, id) } t = null g = null endfunction
function MistEnergyCast takes void returns void unit u = GetTriggerUnit() real x = GetUnitX(u) real y = GetUnitY(u) boolexpr b = Condition(function Tornado_Filter) group g = CreateGroup() timer t = CreateTimer() integer id = GetHandleId(t) player p = GetOwningPlayer(u) real dmg = (GetUnitAbilityLevel(u, 'A09W') + 1) * GetHeroInt(u, true) UnitApplyTimedLife(CreateUnit(p, 'e050', x, y, 0), 1, 1) UnitApplyTimedLife(CreateUnit(p, 'e051', x, y, 0), 1, 1) UnitApplyTimedLife(CreateUnit(p, 'e04Z', x, y, 0), 1, 1) GroupEnumUnitsInRange(g, x, y, 400, b) G = CopyGroup(g) loop E = FirstOfGroup(G) exitwhen E == null UnitDamageTarget(u, E, dmg, false, false, null, null, null) GroupRemoveUnit(G, E) endloop SaveGroupHandle(h, id, 1, g) SaveReal(h, id, 2, x) SaveReal(h, id, 3, y) SaveReal(h, id, 5, 60.) TimerStart(t, 0.05, true, function MistEnergyCast2) u = null DestroyBoolExpr(b) b = null g = null t = null endfunction
//=========================================================================== void MistEnergyInit() { trigger t = CreateTrigger() integer i = 0 loop TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT, null) i++ exitwhen i == bj_MAX_PLAYER_SLOTS endloop TriggerAddAction(t, function MistEnergyCast) TriggerAddCondition(t, Condition(function MistEnergyCond)) t = null }
Это не константа, константа это bj_PI,bj_DEGTORAD,bj_RADTODEG и т.д. Это просто переменная, которую ты сам можешь использовать как хочешь, ее значение не будет обновляться, если использовать нативки.