Я знаю про ограничение 100 видимых тексттэгов на игрока, но даже когда игрок видит всего 2-5 плавающих текстов, некоторые из них могут пропадать досрочно.
Практически все тексттэги в моей карте создаются при помощи этой функции:
function CreateTextTagForPlayer takes player owner, unit target, string reward returns nothing
	local texttag text
    local integer i
    local real vel = 40 * 0.071 / 128
    local real velx = vel * Cos(90 * bj_DEGTORAD)
    local real vely = vel * Sin(90 * bj_DEGTORAD)
    
    set text = CreateTextTag()
    call SetTextTagPos(text, GetUnitX(target) - GetRandomReal(-50,50), GetUnitY(target) - GetRandomReal(-50,50), 0)
    call SetTextTagColor(text, 255, 255, 255, 255)
    call SetTextTagText(text, reward, 0.023)
    call SetTextTagVelocity(text, velx, vely) 
    call SetTextTagPermanent(text, false)
    call SetTextTagFadepoint(text, 2)
    call SetTextTagLifespan(text, 5)
    call SetTextTagVisibility(text, false)
    
    if GetLocalPlayer() == owner then
        call SetTextTagVisibility(text, true)
    endif
    
    set text = null
endfunction
В карте ещё создаётся примерно 10-20 тексттэгов, но большинство из них скрыто для игроков при помощи функции SetTextTagVisibility. Я много раз перепроверил, на экране игрока (даже если по всей карте промотать камеру) практически нет тексттэгов, о превышении лимита в 100 и речи не может идти. В чём может быть проблема?

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

goodlyhero, оказывается глобальные массивы тексттэгов надо обнулять после уничтожения. Обалдеть просто, долго промучился с этим.
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
19
2 года назад
0
Похожие вопросы:

ответ
Лимит в 100 текстагов на карте.

0
8
2 года назад
Отредактирован goodlyhero
0
Скрытые тексттаги тоже считаются. И при некоторой осторожномти их можно создавать локально
Ограничение на 100 тексттагов - сколько создано на локальной машине.
Насколько помню, в нем также учавствует текст с рудников, у критов и т.п.
Попробуйте при создании тексттага повыводить хэндл созданного через GetHandleId, если оно нулевое - вероятно, у вас достигнут лимит и нужно что-то делать. Можно например уменьшать время жизни тт.
И в целом, скорее всего, можно заменить установку видимости на дестрой. Не должно повлиять.
Но может я и ошибаюсь.
0
15
2 года назад
0
goodlyhero, оказывается глобальные массивы тексттэгов надо обнулять после уничтожения. Обалдеть просто, долго промучился с этим.
Принятый ответ
0
27
2 года назад
0
call SetTextTagVisibility(text, false)
    
    if GetLocalPlayer() == owner then
        call SetTextTagVisibility(text, true)
    endif
можно заменить на SetTextTagVisibility( text, GetLocalPlayer() == owner )
Чтобы оставить комментарий, пожалуйста, войдите на сайт.