да, его.
начал встраивать это дело в пакетхак. хочется чтобы осталось и соцк5 и апи пехеват...и чтоб еще лса работало..
переделывать чужой код - зло..
(пипец, нет чтобы в процедуру экземпляр класа передевать, так они айди передают, и потом по этому айди ищут екземпляр класса в масиве.. чертешо и с боку бантик -( хочеш добавить свое - надо переписать чужое.. хоть и хорошо написаное.. но, не поддающееся наращиванию так как этого бы хотелось. )
не в косяках дело. и не в этих перлах с условием и мега присваиванием.
все мы писали if babla=true then
все мы писали if i=2 then b:=true else b := false вместо b := (i=2)
все мы когдато начинали... но блин. вроде же профи.. мне до вас как небес во всяком случае я только недавно оседлал волшебный символ ^.
проблема а в общей организации.
почему нельзя было оформить КЛАССАМИ ?
не структурой а именно классами. с процедурками и функциями, с методами креейт и дестрой.
наращивание такого кода - это просто прелесть... создал екземпляр класа ответственного за перекодировку. свзал его с теми же выходами плагинов - и делов.
а не то как сейчас (
я вообще модуль контроля ЛСП как компоненту невизуальную оформил.
думал "щааа.. кину компоненту.. в пару функций добавлю пару условий и все... ".. фигу там -(
все мы писали if i=2 then b:=true else b := false вместо b := (i=2)
А где про такое в учебниках пишут? То-то и оно. Только первый вариант и приведут. Хорошо, если сам допрешь, как второе работает.
PS: может общими усилиями приведем код к приемлимому виду, а?!
PPS: я к сожалению академиев не кончал - самоучка. Поэтому в классах, перехватах, шифровании плохо разбираюсь. =(
как ни странно. я тоже. самоучка.
пытаюсь ассорти имеющееся сейчас и связаное с математикой (крипт/декрип) как класс оформить. и вынести в отдельный модуль.
глядишь и кода в основном юните будет не 2кс гаком строчек а 500-600.
продвигаюсь медленно и крайне осторожно, ибо нарушу чтото - потом фиг найду где накосячил. а нарушить могу.. ибо работаю в основном без запуска. иногда по 3-4 минуты колупаю 2 строчки в попытках выяснить "что оно делает" %)
"у я бы не сказал что пакетхак хорошо написанное.., косяков там много"
кхе.. кхе.. лишнего кода там много, включая неиспользуемый вообще. а так норм. -)
ну и .. остальные перлы Оффтоп
delphi Код:
case PacketB[2] of
...ляляля...
$15: beginifnot isKamael thenbegin//and (Thread[id].pckCount=7)
sendMSG('Считываем имя соединения...');
ii:=1;
whilenot((Packet.DataB[ii]=0)and(Packet.DataB[ii+1]=0))doInc(ii);
SetLength(WStr, ii div2);
Move(Packet.DataB[1], WStr[1], ii);
EnterCriticalSection(_cs);
Thread[id].Name:=WideStringToString(WStr, 1251);
sendMSG('Имя соединения:'+Thread[id].Name);
LeaveCriticalSection(_cs);
//обновляем Список соединений
SendMessage(L2PacketHackMain.Handle, WM_UpdateComboBox1, 0, 0);
end;
end;
//CharSelected
$0B: beginif isKamael thenbegin// and (Thread[id].pckCount=6)
sendMSG('Считываем имя соединения...');
ii:=1;
whilenot((Packet.DataB[ii]=0)and(Packet.DataB[ii+1]=0))doInc(ii);
SetLength(WStr, ii div2);
Move(Packet.DataB[1], WStr[1], ii);
EnterCriticalSection(_cs);
Thread[id].Name:=WideStringToString(WStr, 1251);
if isGraciaOff then
Corrector(Packet.Size,id,False,True); // инициализация корректора
sendMSG('Имя соединения:'+Thread[id].Name);
LeaveCriticalSection(_cs);
//обновляем Список соединений
SendMessage(L2PacketHackMain.Handle, WM_UpdateComboBox1, 0, 0);
end;
...ляляля...
или.. вот...
function AddDateTime : string;
var
msg: string;
x : Integer;
begin
msg:=datetostr(now)+' '+timetostr(time);
x:=pos(':', msg); // ищем подстрокуif x>0thenbeginDelete(msg, x, length(':')); // удаляем еёInsert('.', msg, x); // вставляем новуюend;
x:=pos(':', msg); // ищем подстрокуif x>0thenbeginDelete(msg, x, length(':')); // удаляем еёInsert('.', msg, x); // вставляем новуюend;
result:=msg;
end;
эх :(function AddDateTime : string;
begin
result := FormatDateTime('dd.mm.yyy hh.nn.ss' , now);
end;
+бага
в сендпакете в вот таких вот местах.
//проверка на длину лога пакетовif Thread[tid].Dump.Count<MaxLinesInPktLog thenbegin
Thread[tid].Dump.Add('03'+ByteArrayToHex(TimeStepB,8)+ByteArrayToHex(Packet.PacketB,Packet.Size));
PostMessage(L2PacketHackMain.Handle,WM_PrnPacket_Log,Integer(tid and $FF),Thread[tid].Dump.Count-1);
endelsebegin//сохраняем и очищаем лог пакетов
sendMSG('Сохраняем лог пакетов...');
Thread[tid].Dump.SaveToFile(PChar(ExtractFilePath(Application.ExeName))+'logs\'+Thread[tid].Name+' '+AddDateTime+'.txt');
Thread[tid].Dump.Clear;
SendMessage(L2PacketHackMain.Handle, WM_ClearPacketsLog, 0, 0);
end;
заменить на
Thread[tid].Dump.Add('03'+ByteArrayToHex(TimeStepB,8)+ByteArrayToHex(Packet.PacketB,Packet.Size));
PostMessage(L2PacketHackMain.Handle,WM_PrnPacket_Log,Integer(tid and $FF),Thread[tid].Dump.Count-1);
//проверка на длину лога пакетовif Thread[tid].Dump.Count<MaxLinesInPktLog thenbegin//сохраняем и очищаем лог пакетов
sendMSG('Сохраняем лог пакетов...');
Thread[tid].Dump.SaveToFile(PChar(ExtractFilePath(Application.ExeName))+'logs\'+Thread[tid].Name+' '+AddDateTime+'.txt');
Thread[tid].Dump.Clear;
SendMessage(L2PacketHackMain.Handle, WM_ClearPacketsLog, 0, 0);
end;
т.к. при превышении MaxLinesInPktLog мы упускаем пакет.
NLObP, стукнул в аську. ибо вопросы все таки есть.
__________________
L2Ext - project closed.
Последний раз редактировалось alexteam, 25.03.2009 в 17:49.
ну, до такого мы не доходили.. но избавится от багнутого лсп модуля можно из под безопасного режима. (БЕЗ поддержки сети) с помошью, скажем вотэтого, либо вручную, регедитом.