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

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

Ответ
 
Toadcop

offline
Опыт: 54,313
Активность:
Cache = ?
короче вот. я делай карту и вней офк. юзаю кашу ну вот при определёных нагрузках кеш (или что то еще) начинает выдавать не то что надо т.е. происходит путаница что фатально для работы карты ! т.е. приведу пример который в 99% работает коректно а иногда происходит что то и еффект не удаляетьса !
Код:
function DestrEff takes nothing returns nothing
       local timer t=GetExpiredTimer()
       call DestroyEffect(i2effect(GetStoredInteger(udg_cache,I2S(h2i(t)),"eff")))
       call DestroyTimer(t)
       set t=null   
  endfunction

  function AddEffect takes string path,real x,real y,real timeout returns nothing
        local timer t=CreateTimer()
        local effect e=AddSpecialEffect(path,x,y)
        call StoreInteger(udg_cache,I2S(h2i(t)),"eff",h2i(e))
        call TimerStart(t,timeout,false,function DestrEff)
        set t=null
        set e=null
  endfunction


могу быть ошибки писал так... ну короче идея понятна. ну вот а иногда еффект постоянно весит т.е. не удаляетьса ! как это объяснить. и кстати FlushStoredMission() ни где не используетьса ! хотя и когда они былт были тоже косяки !

1) кеш при сильных нагрузках (т.е. не только этот алгортм и другие работуют с кешем) бывают косяки
2) при большом количестве кешей на карте происходит такая фигня т.е. у меня около 6
3) я не умею програмировать на джасс...
4) свой вариант


я очень разочарован этой фигней можно сказать вся моя работа застыла ! а то и хуже =(
Старый 02.06.2006, 12:06
remal
нечто
offline
Опыт: 2,087
Активность:
не может быть того, что РБ-ссылка каким-то раком повторяется для другого объекта? может, если много объектов, то где-то и как-то.....?
Старый 02.06.2006, 13:16
DioD

offline
Опыт: 45,134
Активность:
Лучше посетить джазком и скачать нормальный аддтаймдсфх да хэндлер там неплохой, даже самому думать не надо.
function AddTimedEffectDestroy takes nothing returns nothing
call DestroyEffect(GetHandleEffect(GetExpiredTimer(),"e"))
call FlushHandleLocals(GetExpiredTimer())
call DestroyTimer(GetExpiredTimer())
endfunction
function AddTimedEffectLoc takes string modelname,location where,real duration returns nothing
local timer t = CreateTimer()
local effect e
set e =AddSpecialEffectLoc(modelname,where)
call SetHandleHandle(t,"e",e)
call TimerStart(t,duration,false,function AddTimedEffectDestroy)
set e = null
set t = null
endfunction
Вот от катаны с приветом
Старый 02.06.2006, 15:08
Toadcop

offline
Опыт: 54,313
Активность:
DioD имхо... это то что ты написал тоже самое что и я =) т.е. мое подозрения что ты ламер оправдались =) а твой ну, принципиально не нравится он мне
remal - вот у меня подобные мысли тоже были... хотя на 100% я доказать не смог ! страно это всё это чем больше углубляешься тем более страшные вещи находишь ! хммм... мне действительно кажетьса что это что с РБ... т.к. и с массивами у меня нереальные глюки ! и кстати эта вся история начилась после того когда я начел всё идиально обнулять !!!
слухайте у меня есть теория ! если в данный момент (работы) нету нигде ссылки типа локальной переменной или т.п. то вар думает что этот хандле (может) пустой и кидает на него еще один объект ! хотя наверно это фигня ! но короче я советовал бы чуть над этим задуматьса... т.е. если юзать массивы то так сильно можно и не обнулять.

т.к. вот сидел я два дня подрят и переводил ТРС полностью на массивы ! и если бы вы видели какие глюки были !!! у вас точно бы шифер съехал ! =) не такие не понятные приколы что просто появлялось чуство что во время работы у триггера менялса хендл или что то вроде ! короче полная жопа ! сейчас сижу и плачу =) и думаю что я самый нулячий джасс програмист мира !

Отредактировано NETRAT, 04.06.2006 в 17:24.
Старый 04.06.2006, 15:47
MapMan
Corey 8 Taylor
offline
Опыт: 21,554
Активность:
Нулячей меня??)))
Старый 04.06.2006, 16:14
Toadcop

offline
Опыт: 54,313
Активность:
MapMan не ! =) я полный нулячий дауно-отрафированый-идиот ! т.к. не могу сделать систему которая при любих условиях бы не выдавала глюков !
Старый 04.06.2006, 16:24
exploder
iOS zealot
offline
Опыт: 19,394
Активность:
Toadcop попробуй весь процесс отлаживать... Выводи на экран хэндл в момент создания и в момент удаления... может они реально разные...

exploder добавил:
Можно еще через попку сделать... создавать дамми юнита, на него вешать эффект и давать бафф временной жизни...
Старый 04.06.2006, 16:54
DioD

offline
Опыт: 45,134
Активность:
Тот механизм что осветил я работает везде и без глюков, достаточно взять доту и кастер систему, там таких багов нету.
А если ты хочешь сделать что-то исключительно сам, то мой тебе совет, не обнулять то что ты собираешься в последствии удалять, ссылка на объект может потеряться.
Старый 04.06.2006, 18:36
Celebrate

offline
Опыт: 849
Активность:
DioD в том то и дело, что в этом механизме (а написал ты то же самое, что и Тоадкоп) появились глюки, которых в принципе быть не должно. Просто Toadcop тестил более подробно, чем ты.

Цитата:
достаточно взять доту

Дота - образец правильного кодинга? О_о

Toadcop а какие глюки появляютсся при работе с массивами?
Цитата:
слухайте у меня есть теория ! если в данный момент (работы) нету нигде ссылки типа локальной переменной или т.п. то вар думает что этот хандле (может) пустой и кидает на него еще один объект ! хотя наверно это фигня ! но короче я советовал бы чуть над этим задуматьса... т.е. если юзать массивы то так сильно можно и не обнулять.

Но ведь если вызвать такую функцию несколько раз, то спецэффекты должны перепутаться, а нифига.
Значит, там более сложный механизм.
Может есть лимит на макс число "безпеременных" объектов, после которых вар начинает повторять указатели?
Старый 04.06.2006, 20:50
DioD

offline
Опыт: 45,134
Активность:
Дас, в доте вовсе не идеальный кодинг, но спецефекты точно не зависают.
Старый 04.06.2006, 21:35
Celebrate

offline
Опыт: 849
Активность:
Цитата:
в доте вовсе не идеальный кодинг

DioD да уж, далеко не идеальный :)

Часто ли тма используется конструкция спецэффект+таймер?

Да и потом, ТОадкоп писал, что у него больше глюков стало появляться при обнулении всего, что можно (и нужно). В аффтор Доты такой фигнёй (:D) вроде бы не страдает.
Старый 04.06.2006, 22:35
DioD

offline
Опыт: 45,134
Активность:
Там есть куча гуи конструкций и мягко говоря многое не обнуляется, про что я и написал выше, что не стоит обнулять то что впоследствии будет использовано.
Старый 04.06.2006, 23:20
Celebrate

offline
Опыт: 849
Активность:
DioD тогда будет дыра в памяти.
Старый 04.06.2006, 23:35
DioD

offline
Опыт: 45,134
Активность:
Зато бага не будет, а если учесть размер памяти в 256 или 1024 метра (как у меня) то этим вовсе можно принебречь.
Старый 04.06.2006, 23:47
remal
нечто
offline
Опыт: 2,087
Активность:
Цитата:
Сообщение от DioD
а если учесть размер памяти в 256 или 1024 метра (как у меня) то этим вовсе можно принебречь.

вот не надо! уж я-то при своих 256 хорошо знаю что такое лаги.
Старый 05.06.2006, 00:52
DioD

offline
Опыт: 45,134
Активность:
O_o если учесть что только икспи требует 128 то на вар тебе даже не хватает по минимальным требованиям.
Старый 05.06.2006, 10:35
Toadcop

offline
Опыт: 54,313
Активность:
Ура ! я нашел одну из причины глюков !!! короче смотрите здесь и откройте карту в ВЕ и посмотрите триггер Cleaner GAVNO =) вот может что то поймёте хотя... я очень много не понял !
http://xgm.guru/forum/showthread.php?t=3944
Старый 05.06.2006, 16:40
DioD

offline
Опыт: 45,134
Активность:
Ты же вроде обновил карту?
Старый 05.06.2006, 16:49
Toadcop

offline
Опыт: 54,313
Активность:
DioD - да ! там есть одна из причин глюков (этот триггер выключен) ! все что надо написано... !!!
Старый 05.06.2006, 16:54
DioD

offline
Опыт: 45,134
Активность:
Ну это было 2.3 гига памяти за 12 минут, увидев числа в мэнеджере приложений чуть не упал, я так понял что этот тригер неожиданно стирал данные для других войнов.
Старый 06.06.2006, 22:36
Ответ

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

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

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

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



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