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

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

Ответ
 
Gold D Dragon

offline
Опыт: 904
Активность:
не понятный баг с кешем=\
  1. в общем делал новый спел в котором мой любимый метод
loop
exiwhen udg_timer[i] == GetExpiredTimer()
i = i + 1
endloop
очень сильно не подходил поєтому я начал писать так
call StoreInteger(udg_cache, I2S(GetHandleId(udg_timer[i])), "arcane", i)
и
local integer i = GetStoredInteger(udg_cache, I2S(GetHandleId(GetExpiredTimer())), "arcane")
i это у меня число массивов, но вот проблема когда начал проверяет дебагом:
function Trig_debug_Actions takes nothing returns nothing
    local timer t = CreateTimer()
    local string s = I2S(GetHandleId(t))
    call DisplayTextToPlayer(Player(0), 0, 0, s)
    call DestroyTimer(t)
    set t = null
endfunction

//===========================================================================
function InitTrig_debug takes nothing returns nothing
    set gg_trg_debug = CreateTrigger(  )
    call TriggerRegisterTimerEvent( gg_trg_debug, 0.1, true )
    call TriggerAddAction( gg_trg_debug, function Trig_debug_Actions )
endfunction
он мне все время показывал одно и тоже значение и только когда спел заканчивал свое действие(а он длится 60 секунд и в это время постоянно что то происходит) показываемое число начинало меняться. При чем я не могу сказать есть ли там утечка или нет=\ В смысле когда идет обнуление данных, но оно по не понятным причинам только возростало.
  1. Еще один баг спелл может работать 100 в тег же условиях точно и при каком то еще тесте вдруг начинает работать не точно.
И я побывал с Hashtable тоже самое.
Как это можно исправить и в чем проблема?

Отредактировано Gold D Dragon, 24.01.2010 в 22:20.
Старый 24.01.2010, 21:21
DioD

offline
Опыт: 45,134
Активность:
не вижу проблемы.
Старый 25.01.2010, 08:05
FunkieFoO

offline
Опыт: 7,159
Активность:
может дебаг тупит? попробуй луп вынести в отдельную функцию и вызывать его из твоей функции
Старый 25.01.2010, 09:14
Gold D Dragon

offline
Опыт: 904
Активность:
добавил дебаг в каждое начало и конец функций, по моему все норм правда мне думается финальное обнуление данных я сделал не правильно. Триггеры предварительно Disable и большая часть данных немного раньше чистится:
function clear takes nothing returns nothing
    local integer s = GetHandleId(GetExpiredTimer())
    local integer i = LoadInteger(udg_cache, s, udg_child)
    local timer t = CreateTimer()
    local string str = I2S(GetHandleId(t))
    call DisplayTextToPlayer(Player(0), 0, 0, str)
    call DestroyTimer(t)
    call FlushChildHashtable(udg_cache, GetHandleId(udg_trig[i]))
    call FlushChildHashtable (udg_cache, GetHandleId(udg_trig_d2[i]))
    call FlushChildHashtable(udg_cache, GetHandleId(udg_trig_d1[i]))
    call FlushChildHashtable(udg_cache, s)
    call TriggerRemoveAction(udg_trig[i], udg_trig_ta[i])
    set udg_trig_ta[i] = null
    call DestroyTrigger(udg_trig[i])
    set udg_trig[i] = null
    call TriggerRemoveAction(udg_trig_d1[i], udg_trig_ta_d1[i])
    set udg_trig_ta_d1[i] = null
    call DestroyTrigger(udg_trig_d1[i])
    set udg_trig_d1[i] = null
    call TriggerRemoveAction(udg_trig_d2[i], udg_trig_ta_d2[i])
    set udg_trig_ta_d2[i] = null
    call DestroyTrigger(udg_trig_d2[i])
    set udg_trig_d2[i] = null
    call DestroyTimer(udg_timer[i])
    set udg_timer[i] = null
    set t = CreateTimer()
    set str = I2S(GetHandleId(t))
    call DisplayTextToPlayer(Player(0), 0, 0, str)
    call DestroyTimer(t)
    set t = null
endfunction
Старый 25.01.2010, 14:46
DioD

offline
Опыт: 45,134
Активность:
перед тем как заниматься поисками утечек выучите наконец что такое утечки.

Утечка !

Отредактировано Toadcop, 25.01.2010 в 19:15.
Старый 25.01.2010, 18:04
Gold D Dragon

offline
Опыт: 904
Активность:
DioD,
  1. Посмотрите на что вы дали ссылку.
  2. Я просто очень редко использую кеш\хештабл по этому хочу знать все ли у меня правильно... По идеи "да" ибо последняя версия дебага показывала значения в зоне ******700 - ******800 при любом кол-во использование спела.
Старый 25.01.2010, 20:23
Ответ

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

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

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

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



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