Тема: igExt
Показать сообщение отдельно
Старый 07.12.2009, 10:25   #26
Новичок
 
Регистрация: 10.09.2009
Сообщений: 5
Сказал Спасибо: 7
Имеет 3 спасибок в 2 сообщенях
ZaN пока неопределено
По умолчанию

мб кому пригодиться:
Долгое время не мог понять источника "Unknown" пакетов. Недавно нашел.
Для лечения надо:
в функции CallActionFunc добавить проверку на правильную сборку пакетов. Например:
Код:
...
  'callnpcinfo':
        begin       
            //params = [ObjId, x,y,z, npcname]
            buf := #$0c;     
            WriteMask('ddddddddddddddddddffffdddcccccssddddddddccffdddd',[params[0], npcconst+PathNodeNpc,0,params[1],params[2],params[3],5000,0,10,10,10,10,10,10,10,10,10,10,1,1,1,22,0,0,0,1,0,0,0,0,params[4],'',0,0,0,0,0,0,0,0,0,0,1,22,0,0,0,0]);                           
            if buf[1] := #$0c then SendToClientCheck;
        end;
...
фишка в том что IgExt.dll оч шустрый =) Пока выполняется WriteMask происходит очередное обращение к CallActionFunc и выполняется строчка "buf := '';". Соответсвенно нарушается сборка пакета и получившийся мусор идет на сервер, который отключает флудера.

ПС: Недостаток решения - потеря пакетов, но вроде IgExt "держит руку на пульсе" и имеет от этого защиту. Можно еще конечно поиграть с локальными и глобальными переменными - будет надо напишу пример.

Последний раз редактировалось ZaN, 07.12.2009 в 10:31.
ZaN вне форума   Ответить с цитированием
За это сообщение ZaN нажился 2 спасибками от: