Пилил диалоги, вдруг задумался об оптимизации (на свою голову)
Изначальный вариант был такой:
function speech4 takes nothing returns nothing
    local timer t = CreateTimer()  
    call TimerStart(t,4,false,function speech5)
    call CreateTextTagUnitBJ( "Я слышу топот!", gg_unit_h000_0014, 0, 15, 100, 100, 100, 0 )
    call SetTextTagLifespan(bj_lastCreatedTextTag,4)
    call SetTextTagPermanent(bj_lastCreatedTextTag, false)
    set t = null
endfunction
Решил немного пошаманить с локалками, получилось вот такое:
function speech5 takes nothing returns nothing
    local texttag tt
    call CreateTextTagUnitBJ( "УУУУ СУУКА", gg_unit_h000_0016, 0, 15, 100, 100, 100, 0 )
    set tt = bj_lastCreatedTextTag
    call SetTextTagLifespan(tt,5)
    call SetTextTagPermanent(tt, false)
    call BJDebugMsg(I2S(GetHandleId(tt)))
    set tt = ""
    set tt = null
endfunction
Стоит ли оно того?

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

нет, достаточно одной глобалки bj_lastCreatedTextTag на все. И тогда не нужна никакая локалка. Так использую во многих системах, и работает. Глобалка bj_lastCreatedTextTag является темповой - ну то есть временной ссылкой, чтобы что-то там сделать дальше: цвета прозрачность настроить, время жизни и так далее.
Раньше давно-давно тоже думал, что нужно прям везде и на всё локалки ставить для мультиплеера. А как оказалось нет. Работает и глобалка. Дело в том, что у тебя задержек никаких нет, то и локалки не нужны. Потому что делаешь лишние операции - объявить - обнулить. Ну и во-вторых, у текстагов можно задавать время жизни, сами удаляться.
`
ОЖИДАНИЕ РЕКЛАМЫ...
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 и его знания.

1
27
6 лет назад
Отредактирован MpW
1
нет, достаточно одной глобалки bj_lastCreatedTextTag на все. И тогда не нужна никакая локалка. Так использую во многих системах, и работает. Глобалка bj_lastCreatedTextTag является темповой - ну то есть временной ссылкой, чтобы что-то там сделать дальше: цвета прозрачность настроить, время жизни и так далее.
Раньше давно-давно тоже думал, что нужно прям везде и на всё локалки ставить для мультиплеера. А как оказалось нет. Работает и глобалка. Дело в том, что у тебя задержек никаких нет, то и локалки не нужны. Потому что делаешь лишние операции - объявить - обнулить. Ну и во-вторых, у текстагов можно задавать время жизни, сами удаляться.
Принятый ответ
0
18
6 лет назад
0
Ты в function speech5 не удалил таймер
Вставь туда это:
call DestroyTimer( GetExpiredTimer() )
0
17
6 лет назад
Отредактирован N1ghtSiren
0
Steal nerves, Спасибо
0
27
6 лет назад
0
PyCCKuu_4eJl, прочитай вот этк тему xgm.guru/p/100/192427 особенно про то что макс число на каждого игрока, и что их обнулять нет смысла
Чтобы оставить комментарий, пожалуйста, войдите на сайт.