30

» WarCraft 3 / Подсветка синтаксиса 1.31

а каким образом файлы .lua передаются в карту?
На данный момент Ctrl+C Ctrl+V
30

» WarCraft 3 / Заклинание: Вихрь Иллюзий

Кстати, а почему для перевода равкода везде используется хитрая функция AbilityId
А какая разница, если в обоих случаях идёт работа со строками?
30

» WarCraft 3 / [lua] Математические функции

PornoMishka, это я себе шпаргалку оставляю, как напримерс приказами. А так сам подумал о фрэймворке, который бы реализовал нужный функционал. Но пока нет IDE, которая бы из него подтягивала справку.
30

» WarCraft 3 / Способности и алгоритмы на заказ

Bergi_Bear, я пытался наиболее кратко от фонаря написать. Так бы я создал группу и For Group одним таймером ганял.
30

» WarCraft 3 / Способности и алгоритмы на заказ

а если потом книгу забвения использовать, ммм =) неоднократно
Не для публикации же готовил, зачем тестить))
PT153:
Так на 1.26 проще простого сделать
Можно вообще в лоб перебирать всех юнитов на карте и регенить по способности)
30

» WarCraft 3 / Способности и алгоритмы на заказ

Вот блин, я на 1.26. Как мне быть тогда?
  • Переходить на 1.31
  • Ждать, пока кто-то напишет для 1.26
  • Почитать статьи и реализовать самому
30

» WarCraft 3 / Способности и алгоритмы на заказ

Даже MUI получилось
//! beginusercode
do
    -- На момент патча 1.31 эта функция всегда возвращает 0. Поэтому создадим её локальный аналог.
    local function AbilityId(id)
        return id:byte(1) * 0x1000000 + id:byte(2) * 0x10000 + id:byte(3) * 0x100 + id:byte(4)
    end

    -- Настройки
    local ABILITY_ID = AbilityId('AEev')

    -- Код
    local trigger = CreateTrigger()
    for i = 0, bj_MAX_PLAYER_SLOTS - 1, 1 do
        TriggerRegisterPlayerUnitEvent(trigger, Player(i), EVENT_PLAYER_HERO_SKILL)
    end
    TriggerAddAction(trigger, function()
        local caster = GetTriggerUnit()
        TimerStart(CreateTimer(), 1, true, function()
            if 
                not UnitAlive(caster)
                or
                BlzGetUnitMaxHP(caster) == GetWidgetLife(caster)
            then return end
            local hp = 0.01 * GetUnitAbilityLevel(caster, ABILITY_ID) * GetHeroStr(caster, true) * (100 - GetWidgetLife(caster)/BlzGetUnitMaxHP(caster)*100)
            SetWidgetLife(caster, GetWidgetLife(caster) + hp)
        end)
    end)
end
//! endusercode
Сделал из Змеиной ловкости.
Загруженные файлы
30

» WarCraft 3 / Способности и алгоритмы на заказ

1 - PercentHP
Отрицательный реген?
Zikok247:
Я немного не знаю как его добавить в формулу
А зачем тогда заказываете, если даже ТЗ описать не можете?
30

» WarCraft 3 / Способности и алгоритмы на заказ

Пассивка дает герою регенерацию за каждый потерянный процент здоровья равную (0.01*AbilityLvl*str)
Где в этой формуле потерянный процент здоровья?
30

» WarCraft 3 / Заклинание: Молитва

А, я думал это бафф.
Дык и бафф наложить можно, только стандартный канал этого не умеет(
30

» WarCraft 3 / Возможности Lua относительно JASS\vJASS

в шарпе тоже можно переопределять)
Не знаком с шарпом, но врятли он позволит из строки сделать функцию
30

» WarCraft 3 / Возможности Lua относительно JASS\vJASS

Я имею в виду что-то вроде Action в шарпе
В шарпе статическая типизация и посему там нужен этот тип. А в lua всё является объектами, которые можно свободно переопределять и возвращать:
local function sum(a)
    return function(b)
        return a+b
    end
end
print(sum(2)(3)) --> 5
sum = 'new value'
print(sum) --> new value
а статей еще не предвидится
Предвидятся))
30

» WarCraft 3 / Возможности Lua относительно JASS\vJASS

Steal nerves, так изучайте, я вот наработочки для этого пилю))
И как говорилось выше, луа много где используется, так что навык может пригодиться.