Будет ли смысл от добавления локалок в такие функции?
Если юнитов через gg_rct_NotrhHome проходит немало (~30 в минуту)
function Trig_Death_Conditions takes nothing returns boolean
    local unit u = GetEnteringUnit() /<-----
    if ( not ( GetOwningPlayer(u) == Player(8) ) ) then
	// Изначально стояло GetEnteringUnit() вместо u
        return false
    endif
    return true
    set u = null // <----
endfunction

function Trig_Death_Actions takes nothing returns nothing
    local unit u = GetEnteringUnit() // <------
    call IssuePointOrderLoc( u, "attack", GetRectCenter(gg_rct_NotrhHome) )
	// Изначально стояло GetEnteringUnit() вместо u
    set u = null // <----
endfunction

//===========================================================================
function InitTrig_Death takes nothing returns nothing
    set gg_trg_Death = CreateTrigger(  )
    call TriggerRegisterEnterRectSimple( gg_trg_Death, gg_rct_NorthStart )
    call TriggerAddCondition( gg_trg_Death, Condition( function Trig_Death_Conditions ) )
    call TriggerAddAction( gg_trg_Death, function Trig_Death_Actions )
endfunction

Принятый ответ

Если нет задержек, то локалки нет смысла использовать - в основном для удобства.
Там все потоки выполняются последовательно. Друг за другом идут потоки - переменные никогда не могут перезаписаться. Такое не видел. Например, запустилось событие - пустили поток: сработало условие, действие. Все. Запускается следующий поток - либо событием либо таймером. Короче потоки одновременно не могут в одно и то время работать. Иначе бы триггеры в варе не работали из-за станд варкрафтоских переменных - тогда бы значения в варкрафтовских переменных перезаписывали в ходе потоков.
Потоки мгновенно срабатывают, за одно мгновение можно много потоков запустить можно - и вам будет казаться, что сработало сразу или одновременно. Это можно проверить дебагом, выводи текстом в какой последовательности выходят потоки, и тут увидите, что потоки последовательны. Вам могут еще помочь эти функции ссылка
Обычно риск есть только во время паузы или задержки, ибо глобалки перезаписываются во время задержки, например через 5 минут в одной переменной может оказать другой юнит. Поэтому локалки и используют. Еще локалки используют тем, кому лень глобалки плодить
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
19
6 лет назад
0
Похожие вопросы:

ответ
Спасибо всем за ответы и пояснения! Закрываю флудильню :с
ответ
Друга зачем? Нинада, так толку не будет...
Просто используешь Inject main (vjass) или Define (Cjass) чтобы убрать 1 только строчку из main
//***************************************************************************
//*
//*  Map Configuration
//*
//***************************************************************************

//***************************************************************************
//*
//*  Main Initialization
//*
//***************************************************************************

//===========================================================================
function main takes nothing returns nothing
    call SetCameraBounds(- 3328.0 + GetCameraMargin(CAMERA_MARGIN_LEFT), - 3584.0 + GetCameraMargin(CAMERA_MARGIN_BOTTOM), 3328.0 - GetCameraMargin(CAMERA_MARGIN_RIGHT), 3072.0 - GetCameraMargin(CAMERA_MARGIN_TOP), - 3328.0 + GetCameraMargin(CAMERA_MARGIN_LEFT), 3072.0 - GetCameraMargin(CAMERA_MARGIN_TOP), 3328.0 - GetCameraMargin(CAMERA_MARGIN_RIGHT), - 3584.0 + GetCameraMargin(CAMERA_MARGIN_BOTTOM))
    call SetDayNightModels("Environment\\DNC\\DNCLordaeron\\DNCLordaeronTerrain\\DNCLordaeronTerrain.mdl", "Environment\\DNC\\DNCLordaeron\\DNCLordaeronUnit\\DNCLordaeronUnit.mdl")
    call NewSoundEnvironment("Default")
    call SetAmbientDaySound("SunkenRuinsDay")
    call SetAmbientNightSound("SunkenRuinsNight")
    call SetMapMusic("Music", true, 0)
    call InitBlizzard() // вот и все, удалим и не будет бж объектов.


    call InitGlobals()
    call InitCustomTriggers()
    call RunInitializationTriggers()

endfunction
Совсем забыл, функция main генерируется при сохранении карты в редакторе
Без cjass или vjass придется выколупывать war3map.j (код карты) файл из карты и править ручками в блокнотике, геморойно до безобразия, за то ненужен c\vjass и его знания.

0
18
6 лет назад
0
Разве что для удобства, в остальном особой роли не играет.
1
27
6 лет назад
Отредактирован MpW
1
Если нет задержек, то локалки нет смысла использовать - в основном для удобства.
Там все потоки выполняются последовательно. Друг за другом идут потоки - переменные никогда не могут перезаписаться. Такое не видел. Например, запустилось событие - пустили поток: сработало условие, действие. Все. Запускается следующий поток - либо событием либо таймером. Короче потоки одновременно не могут в одно и то время работать. Иначе бы триггеры в варе не работали из-за станд варкрафтоских переменных - тогда бы значения в варкрафтовских переменных перезаписывали в ходе потоков.
Потоки мгновенно срабатывают, за одно мгновение можно много потоков запустить можно - и вам будет казаться, что сработало сразу или одновременно. Это можно проверить дебагом, выводи текстом в какой последовательности выходят потоки, и тут увидите, что потоки последовательны. Вам могут еще помочь эти функции ссылка
Обычно риск есть только во время паузы или задержки, ибо глобалки перезаписываются во время задержки, например через 5 минут в одной переменной может оказать другой юнит. Поэтому локалки и используют. Еще локалки используют тем, кому лень глобалки плодить
Принятый ответ
0
17
6 лет назад
0
Steal nerves, И снова спасибо :3
0
27
6 лет назад
Отредактирован MpW
0
PyCCKuu_4eJl, прочитай вот этк тему xgm.guru/p/100/192427 особенно про то что макс число на каждого игрока, и что их обнулять нет смысла
блин не в эту тему. ну ладно
0
16
6 лет назад
0
Смотря что достичь хочешь, если два и более вызова одной и той же функции - уже можно задуматься о локалке. По скорости вычислений локалка всегда в приоритете, если используется более одного раза в функции.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.