Думаю есть ли наработка который не плодят тестаг за каждый убитый врагов..
Например способность сразу убил всех 5 врагов, но увидел лишь 1 текстаг который показывает опыт за 1 врага а остальное не видно так как они все одновременно создалось в точки позиции...
Суть наработка это ловить события умирает и заносит в массив число опыта если нет старых массива, если есть то просто увеличиваем
пример 5 опыт за 1 врага то у 5 врагов будет 25 опыта.. Но чтобы работал создаю таймер на 0.03 сек если убийца убил врага увеличиваем если таймер истек то выводим общие опыта, а после чего обнуляем массив убийцу.
пример 5 опыт за 1 врага то у 5 врагов будет 25 опыта.. Но чтобы работал создаю таймер на 0.03 сек если убийца убил врага увеличиваем если таймер истек то выводим общие опыта, а после чего обнуляем массив убийцу.
Итог создаем 1 текстаг за 100 врага одновременно, чем создавать 100 текстаг за 100 монстров...
PS Извини за русский язык... но это создаст оптимальный игру без лагов и фризов
PS Извини за русский язык... но это создаст оптимальный игру без лагов и фризов
Принятый ответ
Сделал за 5 минут не тестировал
library RPGText
globals
private unit array s
private real array d
endglobals
function displayTextExp takes nothing returns nothing
local timer t = GetExpiredTimer()
local unit u = s[GetHandleId(t)]
local real r = d[GetHandleId(u)]
// дальше уже можно шаманить с текстом
// Очишаем утечки
call DestroyTimer(t)
set u = null
// А также очистка массива
//
//
//
endfunction
function createText takes unit u, real r, code c returns nothing
local integer i = GetHandleId(u)
local timer t
if d[i] == 0 then
set t = CreateTimer()
// Записиваем значение
set s[GetHandleId(t)] = u
set d[i] = r
call TimerStart(t, 0.03, false, c)
set t = null
else
set d[i] = d[i] + r // Увеличивает число
endif
set u = null
endfunction
endlibrary
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован 16GB
Ну так там лимит в 100 штук (вроде как) потом баговать начинает. Они как будто начинают переиспользоваться.
тт асинхронны и их не нужно создавать для кого-либо, кроме того, кто должен его увидеть
у меня куча тт и не было проблем, это нужно постараться, чтобы за лимит выйти
чистятся они сами, если все 100 оказались заняты - новый не создастся вообще, вернет null вместо объекта
Отредактирован pro100master