XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
YellowStar
poon
offline
Опыт: 15,144
Активность:
Обнуление блин!
Короче, у меня не удаляются dummy unit, timer и group, встроена годная система recycle.

Стоит ли в таком случае обнулять переменные с ними? Или ну это все нак?
[+] 3 пункта от Fa: 1.1 (ненормативная лексика) Иностранный мат в названии темы.
Старый 28.08.2012, 16:11
ScorpioT1000
Работаем
offline
Опыт: отключен
что за система не понял
Старый 28.08.2012, 16:33
Xipxop
Круче варика, только c++!
offline
Опыт: 7,646
Активность:
судя по названию использование использованого несколько раз.?! если локалки то да.
Старый 28.08.2012, 17:21
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
Код в студию, нефига непонятно.
Старый 28.08.2012, 17:41
YellowStar
poon
offline
Опыт: 15,144
Активность:
Нет ну ок.

Код:
function GetTimer takes nothing returns timer
        if (FC==0) then
            set FT[0]=CreateTimer()
        else
            set FC=FC-1
        endif
        return FT[FC]
    endfunction
    
    function RecycleTimer takes timer t returns nothing
        if t==null then
            return
        elseif FC==8191 then
            call DestroyTimer(t)
            return
        endif
        call PauseTimer(t)
        if HaveSavedInteger(F_HASH,GetHandleId(t),0) then
            call RemoveSavedInteger(F_HASH,GetHandleId(t),0)
        endif
        set FT[FC]=t
        set FC=FC+1
    endfunction

sample:
Код:
function Local takes nothing returns nothing
    local timer time = GetTimer()
    call RecycleTimer(time)
endfunction


нужно ли обнулять, ведь в сущности таймер не удаляется, также как и дамми юниты, и группы
Старый 28.08.2012, 19:10
Nerevar
I'll be back!
offline
Опыт: 18,352
Активность:
нужно
Старый 28.08.2012, 19:33
YellowStar
poon
offline
Опыт: 15,144
Активность:
Цитата:
Сообщение от Nerevar
нужно

но таймер же не удалён, и "мертвой" ссылки в памяти не будет
Старый 28.08.2012, 19:34
ScorpioT1000
Работаем
offline
Опыт: отключен
local timer time = GetTimer()
call RecycleTimer(time)
вот тут надо обнулять, таймер мертв, а хендл нет
ScorpioT1000 добавил:
ну или переопредели как интежеры и все будет окай =)
function Local takes nothing returns nothing
    local int time = GetTimer()
    call RecycleTimer(time)
endfunction
и все что их юзает юзает через инты =)
Старый 28.08.2012, 20:01
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
YellowStar, паузить таймер перед удалением - обязательно :\
Старый 28.08.2012, 20:02
ScorpioT1000
Работаем
offline
Опыт: отключен
Faion, он не перед удалением паузит. Удаление в другой условной ветке.
ScorpioT1000 добавил:
Я так понял тут суть в том что юзается 1 таймер пока нужен только 1, если нужно более 1 одновременно, выделяются ещё.
Старый 28.08.2012, 20:12
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
ScorpioT1000, так в том то и дело, что так:
elseif FC==8191 then
            call DestroyTimer(t)
            return
        endif
нельзя делать.
Если не поставить на паузу таймер, то он может не удалиться.
Старый 28.08.2012, 20:22
ScorpioT1000
Работаем
offline
Опыт: отключен
лолшто
Старый 28.08.2012, 20:37
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
лолто
Старый 28.08.2012, 20:45
YellowStar
poon
offline
Опыт: 15,144
Активность:
Я не заюзаю 8190 таймеров лол, это очевидно же.

Скорп все правильно понял, система выдаёт мне ровно столько таймеров, сколько будет задействовано одновременно. То есть учитывая некоторые спеллы, итд, там в среднем не больше 30-40 таймеров на 6х6 выделиться, предельная нагрузка была в -wtf, там выделилось порядком 70 таймеров.
Старый 28.08.2012, 20:59
ScorpioT1000
Работаем
offline
Опыт: отключен
мне кажется, таймеры нормально удаляются и создаются и так, или у тебя чтото очень часто создавающее таймеры было?
Старый 28.08.2012, 21:04
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
YellowStar, имхо костыльная идея :\
Faion добавил:
ScorpioT1000:
мне кажется, таймеры нормально удаляются и создаются и так, или у тебя чтото очень часто создавающее таймеры было?
Я лично не проверял. Кто то давно мне сказал о такой фиче, док подтвердил. Можно у тоада или свдна уточнить.
Старый 28.08.2012, 21:12
YellowStar
poon
offline
Опыт: 15,144
Активность:
Цитата:
Сообщение от Faion
YellowStar, имхо костыльная идея :\

Это лучше чем постоянно создавать и удалять таймеры, в моем случае, количество хендлов скакать явно не будет. Групп, у меня так вообще, создаётся не более 10, DummyCaster примерно не более 30. При этом мне не приходится удалять их, и заново создавать, я создаю их единожды, и держится все в нормальном количестве...

Ну имхо, это шустрее, чем всякие постоянные создания, удаления, паузища.

(у меня только один таймер создаётся вне системы, и тот отвечает просто за посекундные действия)
Старый 28.08.2012, 21:19
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
YellowStar:
Это лучше чем постоянно создавать и удалять таймеры, в моем случае, количество хендлов скакать явно не будет.
На самом деле нет, у тебя всегда в памяти будет висеть пачка объектов, даже когда этого не нужно.
Старый 28.08.2012, 21:26
YellowStar
poon
offline
Опыт: 15,144
Активность:
Цитата:
Сообщение от Faion
~YellowStar:
> Это лучше чем постоянно создавать и удалять таймеры, в моем случае, количество хендлов скакать явно не будет.

На самом деле нет, у тебя всегда в памяти будет висеть пачка объектов, даже когда этого не нужно.

100 объектов, которые переодически используются, так как магии кастуются, миньоны воскрешаются. То есть, сугубо, они постоянно задействованы, и висеть будет 2-5 объекта, которые на случай большей нагрузки. Так что, таки мой метод быстрее, в несколько десятков может даже раз чем ты предлагаешь
Старый 28.08.2012, 22:28
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
В промышленных масштабах не быстрее.
Старый 28.08.2012, 23:21
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 20:16.