Нашёл JNGP такую вещь как лист функций, но я не до конца понимаю, что значать константы, где можно найти материал по теме ли кто объяснит?

Константа - постоянная, переменная которая не меняется в процессе игры.
Технически переменная которая не меняется, из за флага.
constant integer SPELL_ID = 'A000' // для переменной
constant function GetSpellId takes nothing returns integer // для функции
	return 'A000'
endfunction
Это мало что дает, обычно юзают для выделения переменных или функций которые нужны для настроек кода, очень широко применяется во всяких "заклинаниях на заказ" где целая туча параметров.

Никакой скорости и прочего бреда это недает, все тоже самое что и простые переменные \ функции.
`
ОЖИДАНИЕ РЕКЛАМЫ...
23
Похожие вопросы:

ответ
в моей карте лимит пищи 300, но всегда стоит "нет расходов"
я не совсем понимаю что тебе нужно
ответ
Если по игроку то массив переменных по игроку, если прям каждого конкретного героя каждого игрока - то через custom value или прочий регистратор юнитов.
Чета типа так, для ознакомления с CV
ответ
нету такой
можно узнать сколько урона нанёс юнит за определённую атаку с помощью события юнит получает урон
а узнать урон нельзя
ответ
Ответ выше - для стандартного редактора WE. Однако, рекомендуется использовать с Lua внешний редактор кода и внешний же сборщик карты. Это чревато маленьким неудобством в виде необходимости запускать карту на проверку только из внешней программы т.к. запуск из WE будет без значительной части кода в карте, но дает огромное преимущество в виде несравнимо более удобной работы с кодом.
К сожалению, пока слишком мало информации об этом на сайте.
Вариант NazarPunk, пока без сборки карты, код придется копировать в карту вручную.

Мой вариант, пока не рабочий т.к. перед релизом нужно исправить несколько багов, но включает в себя и работу с кодом и сборку карты, не нужно вручную копировать код в карту.
Даже здесь на сайте есть еще пара вариантов, но мне лень их искать
И немного саморекламы, как выглядели бы ответы на вопрос выше при использовании моего тулсета
  1. Использовать макрос RAW('A0E5'), который превратит равкод в число при сборке карты.
  2. Инжект в функцию main, с заменой оригинальной функции main на свою и вызовом оригинальной функции изнутри нашей.
  3. Аналогично ответу на этот вопрос для чистого WE, но без объявления переменных в WE т.к. то уже не так удобно становится когда код во внешнем редакторе.

Теперь о точках входа и инжекте.
Луа позволяет делать такой финт ушами
do
  local f = FunctionName -- записываем функцию в переменную
  function FunctionName() -- заменяем оригинальную функцию своей
   f() -- вызываем оригинальную функцию из переменной
   -- здесь могла быть ваша реклама или ваш код
  end
end
Это позволит нам сохранить оригинальную функцию в переменную, заменить оригинал своей функцией и вызвать оригинал из переменной. Применимо к любой функции, которая была объявлена раньше, не работает если функция объявлена после выполнения этого кода. Для создания точки входа отлично подходит InitGlobals, она всегда объявляется раньше кастомного кода в WE и вызывается из main.

У себя в коде я пользуюсь немного более сложным способом, этот код не будет работать в WE т.к. цепляет main, а не InitGlobals и не дает серьеных преимуществ перед описаным выше, привожу просто для расширения кругозора
local function InjectMain()
    local alpha_main = main
    return function()
        local alpha_init = RunInitializationTriggers
        RunInitializationTriggers = function() end
        alpha_main()
        InitLibraries() --моя функция, которая должна быть выполнена после всего, но до триггеров инициализации карты
        alpha_init()
    end
end
main = InjectMain()

32
Константа - постоянная, переменная которая не меняется в процессе игры.
Технически переменная которая не меняется, из за флага.
constant integer SPELL_ID = 'A000' // для переменной
constant function GetSpellId takes nothing returns integer // для функции
	return 'A000'
endfunction
Это мало что дает, обычно юзают для выделения переменных или функций которые нужны для настроек кода, очень широко применяется во всяких "заклинаниях на заказ" где целая туча параметров.

Никакой скорости и прочего бреда это недает, все тоже самое что и простые переменные \ функции.
Принятый ответ
12
quq_CCCP:
Константа - постоянная, переменная которая не меняется в процессе игры.
Технически переменная которая не меняется, из за флага.
constant integer SPELL_ID = 'A000' // для переменной
constant function GetSpellId takes nothing returns integer // для функции
	return 'A000'
endfunction
Это мало что дает, обычно юзают для выделения переменных или функций которые нужны для настроек кода, очень широко применяется во всяких "заклинаниях на заказ" где целая туча параметров.

Никакой скорости и прочего бреда это недает, все тоже самое что и простые переменные \ функции.
А что означает конкретная константа? Я думал она считает полученный урон или срабатывает в момент нанесения оного
32
Стас Орлов, Причем тут урон?
constant - в JASS флаг, указывающий что данный обьект можно только читать, а не записывать, если тебе так проще. Других функций у него нет.
12
quq_CCCP:
Стас Орлов, Причем тут урон?
constant - в JASS флаг, указывающий что данный обьект можно только читать, а не записывать, если тебе так проще. Других функций у него нет.
constant native GetEventDamage takes nothing returns real
Что означает данная константа?
32
Стас Орлов, это нативная функция игры, она возвращает кол-во полученного урона только в пределах потока триггера, который сработал на получение урона.

Если не дошло

local trigger trg = CreateTrigger() // создадим некий триггер
call TriggerRegisterUnitEvent( trg, unit, EVENT_UNIT_DAMAGED ) // повесим на триггер новое событие, юнит который уже создан и стоит на карте получает урон, важно события вешаются на существующие обьекты а не переменные,  и схитрить тут нельзя.
call TriggerAddAction( trg, function OnDamage ) // добавляем триггеру действие, это указатель на функцию.. для читабельности функцию опишу ниже.

function OnDamage takes nothing returns nothing
	local real damage = GetEventDamage() // записываем в локальную переменную кол-во полученного урона.
	Так вот, если триггер сработает не на событие урона, а на атаку или смерть юнита - эта функция вернет 0, тоже самое если ты её вызовешь вне функции которая указана  в TriggerAddAction.
	Функции этого типа -это реакция на события!
endfuction
Чтобы оставить комментарий, пожалуйста, войдите на сайт.