WarCraft 3: 5. Объявление нативных функций

vJass

Данная особенность предназначена для более продвинутых пользователей, поэтому если вы что-либо не поймете в данном параграфе, смело его пропускайте.
Warcraft III поддерживает объявление нативных функций в коде карты. Это должно происходить наверху кода карты, сразу после секции глобальных переменных. JassHelper позволяет объявить нативные функции в любом угодном вам месте, а во время обработки пользовательского кода просто перенесет их туда, где они и должны быть по определению.
Для чего это может быть нужно? Во-первых, они используются в скриптинге AI, позволяя объявлять функции, что не объявлены в common.j (а именно common.j содержит список возможных к использованию нативных функций). Во-вторых - более продвинутые разработчики могут написать расширение или хак для Warcraft III, дополнив его функционал доселе не существовавшими функциями и, в таком случае, автоматический перенос нативных функций позволяет избежать необходимости постоянного ручного редактирования common.j.
JassHelper предусматривает защиту от повторного объявления нативных функций. Если объявление нативной функции ранее было встречено в коде карты, второе ее объявление будет просто удалено. То же самое касается и функций в common.j - функция уже существующая в common.j будет удалена из кода карты - это зависит от версии common.j, который предоставляется пользователем или редактором парсеру, имейте это в виду.
Пример объявления нативной функции
native GetUnitGoldCost takes integer unitid returns integer

function test takes nothing returns nothing
	call BJDebugMsg("A footman consts : "+I2S( GetUnitGoldCost('hfoo')+" gold coins" ) )
endfunction

Просмотров: 381

Комментарии пока отсутcтвуют