function ResetAbilityCooldown takes unit u, integer id returns nothing local integer lvl = GetUnitAbilityLevel(u,id) call UnitRemoveAbility(u,id) call UnitAddAbility(u,id) call SetUnitAbilityLevel(u,id,lvl) endfunction
Сообщение отредактировал [DS] - Пятница, 15 Июль 2011, 16:14:21
function ResetAbilityCooldown takes unit u, integer id returns nothing local integer lvl = GetUnitAbilityLevel(u,id) call UnitRemoveAbility(u,id) call UnitAddAbility(u,id) call SetUnitAbilityLevel(u,id,lvl) endfunction
А еще у тебя абсолютно лишнее объявление локалки. Делай лучше вот так:
Другое дело когда ты используешь параметр больше 1 раза, то вероятно будет работать алгоритм быстрее, если таки вынести результат который возвращает функция в локалку.
Другое дело когда ты используешь параметр больше 1 раза, то вероятно будет работать алгоритм быстрее, если таки вынести результат который возвращает функция в локалку.
У тебя руки растут из 1 места
Добавлено (22-07-2011, 01:36) --------------------------------------------- Мне интересно куда делать старая тема с функциями ? была библиотека с молниями....
Ты удаляешь способность с юнита (допустим 3-лвл способности был) Ты добавляешь способность юниту (ту же самую) Ты приказываешь триггеру установить уровень только что выданной способности на уровень только что выданной способности.
Смекаешь где ошибка и что будет?
*Обвноление от 14.05.2012* Отличный трек: Tricky – Coalition
Вот функция, которая всё-таки поднимает камеру над землёй (без лишнего)
Code
local location loc local real HeroZ set loc = (GetUnitLoc(udg_Hero)) set HeroZ = GetLocationZ(loc) call SetCameraFieldForPlayer( Player(0), CAMERA_FIELD_ZOFFSET, HeroZ, 0 )
NerZul121, Здесь выкладываются функции которые не зависят от игроквых перменных типа udg_Hero. так как я понятия не имею что делает эта функция, но как тебе ее надо было оформить.
function FUNCTION takes real HeroZ, player p return nothing call SetCameraFieldForPlayer( p, CAMERA_FIELD_ZOFFSET, HeroZ, 0 ) endfunction
Добавлено (24 Сентябрь 2011, 17:18:21) --------------------------------------------- Так как не нашел на форуме такую же функцию, вот элементарнийшая функция на сборку двух одинаковых предметов.
function GetDoubleItem takes unit u, item t, integer i returns nothing local integer l = 0 local integer id = GetItemTypeId(t) loop exitwhen l > 5 if (id == GetItemTypeId(UnitItemInSlot(u, l))) and (t != UnitItemInSlot(u, l)) then call RemoveItem(t) call RemoveItem(UnitItemInSlot(u, l)) call UnitAddItemById(u, i) endif set l = l + 1 endloop
lawson, не отвечает описанию, а именно выполняет только часть работы, на входе должны быть юнит и два ИД предметов. И не указано, что предметов не должно быть больше 2.
Не шаришь. Функа берет юнита, тип предмет, нужное количество предметов и возвращает предмет. Количество предметов может быть от двух (а не онли более двух)