NazarPunk, получается, что, если переменная может использоваться в замыкающей функции, то она не будет очищена сборщиком мусора?
Также еще заметил, что глобальные переменные можно создавать внутри функции:
function CreateAllForces( )
DEFENSIVE_FORCE = CreateForce( )
OFFENSIVE_FORCE = CreateForce( )
ALL_PLAYERS = CreateForce( )
for i = 0, MAX_PLAYERS_COUNT do
if GetPlayerSlotState( Player( i ) ) == PLAYER_SLOT_STATE_PLAYING then
ForceAddPlayer( ALL_PLAYERS, Player( i ) )
if GetPlayerTeam( Player( i ) ) == 0 then
ForceAddPlayer( DEFENSIVE_FORCE, Player( i ) )
elseif GetPlayerTeam( Player( i ) ) == 1 then
ForceAddPlayer( OFFENSIVE_FORCE, Player( i ) )
end
end
end
end
Можно ли так делать? Если вызвать эту функцию дважды, то при первом вызове глобальная переменная будет создана, а во втором перезаписана?
Если создавать локальные переменные в цикле:
for i = 0, 10 do
local var = i
end
Переменная var будет создана 11 раз или 1 раз, а дальше перезаписываться?
NazarPunk, правильно ли я понимаю, что локальные переменные в Lua обнулять не нужно? Если да, то когда они сами обнулятся?
Просто писал такой код:
function InitDebugTriggers( )
local trig = CreateTrigger( )
local str = "asd"
BlzTriggerRegisterPlayerKeyEvent( trig, Player( 0 ), OSKEY_ESCAPE, 0, true )
TriggerAddAction( trig, function( )
print( str )
end )
end
Если нажать Esc, то на экран высветится "asd" вместо "nil". Почему так происходит, если функция InitDebugTriggers давно завершила свою работу (во время инициализации карты)? А действие триггера происходит уже намного позже, когда локальная переменная должна уже быть обнулена.
Я так полагаю , что работает такой код в тот момент, когда у жасс инициализируются глоб. перменные. Если написать так, то юнит не создается.
Globals
unit u = createUnit( )
endglobals
NazarPunk, функция InitTrig_cast будет вызвана в функции InitCustomTriggers, которая, в свою очередь будет вызвана в main. А здесь не понятно, как происходит инициализация способности.
NazarPunk, ну в jass есть функция для инициализации способности, где создаются триигеры и навешиваются события, а здесь такого нет, из-за этого я не понимаю как это работает.
У меня тоже вопрос по Lua. Почему здесь нету функций (кроме условия и действия триггера)? Этот код как-то самоинициализируется или его нужно вызвать где-то?
Это означает, что тип атаки у "Огня преисподней" - ATTACK_TYPE_NORMAL, тип урона - DAMAGE_TYPE_FIRE и тип оружия - WEAPON_TYPE_WHOKNOWS.
Отловить, что урон исходит именно от рук пока что нельзя, насколько я знаю. Но его можно наверняка угадать, используя функции, что я выше написал.
A.W.K., если используете мемхак, то там есть замечательная функция AddAlwaysVisibleFlag( ), которая работает как во второй доте, где видно только модельку юнита.
» WarCraft 3 / Заклинание: Волна Воды
Ред. scopterectus
» WarCraft 3 / Заклинание: Волна Воды
Просто писал такой код:
» WarCraft 3 / Способность "Сила Льда" и его эффект
» WarCraft 3 / Туман войны, черная маска
» WarCraft 3 / Туман войны, черная маска
Ред. scopterectus
» WarCraft 3 / Призыв юнитов со способность "Перерождение"
» WarCraft 3 / Самый производительный Bullet Hell
» WarCraft 3 / Самый производительный Bullet Hell
» WarCraft 3 / Заклинание: Длань Господня
Ред. scopterectus
» WarCraft 3 / Заклинание: Длань Господня
» WarCraft 3 / Заклинание: Длань Господня
Globals
unit u = createUnit( )
endglobals
» WarCraft 3 / Заклинание: Длань Господня
» WarCraft 3 / Заклинание: Длань Господня
» WarCraft 3 / Заклинание: Длань Господня
» WarCraft 3 / Заклинание: Длань Господня
» WarCraft 3 / Заклинание: Длань Господня
» WarCraft 3 / Заклинание: Длань Господня
Ред. scopterectus
» WarCraft 3 / Постановка иф
» WarCraft 3 / Подсветка в JNGP
» WarCraft 3 / За что отвечает поле в РО WESTRING_UEVAL_ISIT?
» WarCraft 3 / Самая Страшная Утечка
» WarCraft 3 / Как сделать 9 слотов в 1.31?
» WarCraft 3 / Отлов урона на 131 PTR
EVENT_PLAYER_UNIT_DAMAGED - это новый ивент.
Ред. scopterectus
» WarCraft 3 / Отлов урона на 131 PTR
Отловить, что урон исходит именно от рук пока что нельзя, насколько я знаю. Но его можно наверняка угадать, используя функции, что я выше написал.
» WarCraft 3 / Как сделать эффект от пассивки bloodseeker'a?