Вернуться   CoderX :: Forums > Lineage II > L2PacketHack > Разработка
Войти через OpenID

Разработка Раздел для совместной разработки/доработки программы

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 01.08.2008, 06:48   #1
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию L2PacketHack 3.5.x

Исходники здесь
Вот такие скомпилированные версии есть у меня.

Ниже данные устарели.
Репозиторий находится тут (открывать через SVN клиент)
Удобный просмотр репозитория через браузер тут
Скомпилированные версии тут Пароль к архиву: coderx.ru

Есть ли предложения по модернизации существующего кода с описанием как должно и что хотелось бы заменить/добавить?

Программа пишется в среде Delphi 2007 и Delphi 7 с использованием следующих дополнительных библиотек компонентов:
- FastScript (http://fast-report.com/ru/products/fast-script.html)
- JCL (http://sourceforge.net/projects/jcl/)
- JVCL (http://sourceforge.net/projects/jvcl/)

Дополнительные компоненты брать тут. (<-- TPerlRegEx есть только там)

/upd:
для компиляции последних ревизий понадобятся JCL, JVCL (ссылки выше) а так же:
jwapi2.2a, SyntEdit, TRichView.v11.0+ScaleRichView.v2.0, TsiLang (letitbit / upload.com.ua)
Немного подправленный FastScript искать в файловом архиве.

Последний раз редактировалось NLObP, 17.10.2016 в 00:02.
NLObP вне форума   Ответить с цитированием
За это сообщение NLObP нажился 111 спасибками от:
-=Ma}{imuS=-, 4erteg, Agat, ak47, Alan, alexsl, alexteam, AoWpwnz, APXAHGEJI, Asmalaa Asrety, Benefit, BISMARCK_555, boy200007, boypush, Breadfan, BuKbI4, CCCP, Crypto, Curious, cutter, DashKAaa, Denis63RUS, dyh9l, Elecktron, Emocean, Evgeniy, FatalHistori, Fer123, Ferrari3200, FFALL777, Fim, freeworld, GameCoder, gavr1l0, gexiss, goodvin1709, Green, Grinch, HacPaTyc, INFERION, isya, Johnson, Keeper, Keisei, Kotyara2014, lomoWAR, lordka), LostQ, Lotar, Ma3aXakA, march, marslem, mat1s, MHz, micoach, MiRoN, mirt, MoD_Hanes, MrIICUX, Mulder, Murdoc, neonv1, nezabudkin, Nigga, Niros, NoFear, OleSha, OMOH8787, PanAm, pascalpwnz, PerioH, PIONER, QaK, rastaman_228, ratvier, RockTeam, RoZ, Rubicosha, Rysis, Ryth, saxa24111, shunder, skaner, skiner4119, Snowbars, StekloReZ, stopicot, TAMBIK, Tchep, Therapyst, TryLaw, vahes, Velizarx, victor_rvm, Vilson, Vklu4atel^^, vlad00777, vovanchik, vul-test, wanick, wasabi_100, WhiteDevil, Xelat, xkor, Yegor, Yellowboy, zDiablik, АлисаХочетСекс, Арти, женька
Старый 01.08.2008, 09:03   #2
Рыцарь
 
Аватар для QaK
 
Регистрация: 28.09.2007
Сообщений: 1,558
Сказал Спасибо: 71
Имеет 351 спасибок в 244 сообщенях
QaK пока неопределено
По умолчанию

Цитата:
Сообщение от NLObP Посмотреть сообщение
- модернизированный разбор пакетов (в работе);
это что, конкретно?

Добавлено через 4 минуты
А и еще тут обсуждение где-то на форуме было - и предложили грузить расшифровку пакетов в начале загрузки ПНХ и при нажатии кнопочки - "перечитать из инишек"

Добавлено через 1 минуту
Можно сделать возможность выбора инишек, т.е. сделать менюшку, в которой будет отображаться все Packet.ini, и выбирать из нее, ну и для ItemID, и прочих инишек можно то же самое.

Последний раз редактировалось QaK, 01.08.2008 в 09:03. Причина: Добавлено сообщение
QaK вне форума   Ответить с цитированием
За это сообщение QaK нажился 5 спасибками от:
Старый 01.08.2008, 12:17   #3
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

Цитата:
Сообщение от QaK Посмотреть сообщение
это что, конкретно?
Теперь не надо писать длинные строчки в packets.ini, понимает циклы и функции в нем. Расшифровывает коды беря значения из items.ini, sysmsg.ini, skills.ini и т.д.

Цитата:
Сообщение от QaK Посмотреть сообщение
А и еще тут обсуждение где-то на форуме было - и предложили грузить расшифровку пакетов в начале загрузки ПНХ и при нажатии кнопочки - "перечитать из инишек"
Вот мне бы таких предложений и развернутых поподробнее. Чтобы воплотить можно было полегче. Многого даже в мыслях нет, а по готовой подсказке додумать могу.

Цитата:
Сообщение от QaK Посмотреть сообщение
Можно сделать возможность выбора инишек, т.е. сделать менюшку, в которой будет отображаться все Packet.ini, и выбирать из нее, ну и для ItemID, и прочих инишек можно то же самое.
Уже сейчас есть выбор, если стоит галочка Камаель, то при загрузке программы считывается packetst1.ini, иначе packets.ini. В принципе можно как у Саурона расписано в его ВПП по коду протокола линейки выбор сделать. Может даже одновременно разные загруженные попробовать сделать.

Вот была тема от OllyDebug про правку HookCode, так и заглохла.
Цитата:
Цитата:
Цитата:HookCode исправленный не выложишь тут ?
Хорошо, как домой дойду.
Ну на самом деле там не сложно:
проверка на опкод $E9 и длину инструкции 5 байт, затем вычисляем абсолютный адрес прыжка, вычитаем из него то куда сохраняем тру функцию и записываем $E9 + dword(результат).

delphi Код:
function HookCode(TargetProc, NewProc: pointer; var OldProc: pointer): boolean; var   Address: dword;   OldProtect: dword;   OldFunction: pointer;   Proc: pointer; begin   Result := False;   try     Proc := TargetProc;     //вычисляем адрес относительного (jmp near) перехода на новую функцию     Address := dword(NewProc) - dword(Proc) - 5;     if not VirtualProtect(Proc, 5, PAGE_EXECUTE_READWRITE, OldProtect) then begin       Exit;     end;     //создаем буффер для true функции     GetMem(OldFunction, 255);     //копируем первые 4 байта функции     dword(OldFunction^) := dword(Proc);     byte(pointer(dword(OldFunction) + 4)^) := SaveOldFunction(Proc, pointer(dword(OldFunction) + 5));         byte(Proc^) := $e9; //устанавливаем переход     dword(pointer(dword(Proc) + 1)^) := Address;     VirtualProtect(Proc, 5, OldProtect, OldProtect);     OldProc := pointer(dword(OldFunction) + 5);   except     Exit;   end;   Result := True; end;
Я так понял здесь надо изменять?
Код:
//вычисляем адрес относительного (jmp near) перехода на новую функцию
    Address := dword(NewProc) - dword(Proc) - 5;
Кто разъяснит, что именно надо в HookCode поправить, чтобы более корректно работало?

Добавлено через 57 секунд
Цитата:
Сообщение от Amorality Посмотреть сообщение
На абиссе пофиксили ПНХ дллкой под названием blinkw32.dll , хотелось бы увидеть в твоем ПНХ возможность обхода фикса если это возможно .. Жаль конечно
На х300 работает.

Последний раз редактировалось NLObP, 01.08.2008 в 12:19. Причина: Добавлено сообщение
NLObP вне форума   Ответить с цитированием
За это сообщение NLObP нажился 7 спасибками от:
Старый 01.08.2008, 14:08   #4
Местный
 
Аватар для PanAm
 
Регистрация: 18.01.2008
Сообщений: 286
Сказал Спасибо: 24
Имеет 133 спасибок в 80 сообщенях
PanAm
По умолчанию

Цитата:
Сообщение от QaK Посмотреть сообщение
А и еще тут обсуждение где-то на форуме было - и предложили грузить расшифровку пакетов в начале загрузки ПНХ и при нажатии кнопочки - "перечитать из инишек"
Жто я предлогал сделать ini фалы по папкам и на главной странице загружать инишки присетами, или сделать выпадающие списки для каждого ini, фактически нужна переменная для пути к набору файлов или набор переменных для каждого из INI, КомбоБокс, и кнопка загрузить, устанавливающая переменную... и незабыть сделать аналог "По умолчанию"

Добавлено через 9 минут
кстати, очень неплохо получилось, даже без подсветки - логи вполне читаемы
Только вот что-то со скилами у мну не фурычит
d skillID: 1204 Unknown Skill

Последний раз редактировалось PanAm, 01.08.2008 в 14:08. Причина: Добавлено сообщение
PanAm вне форума   Ответить с цитированием
За это сообщение PanAm нажился 5 спасибками от:
Старый 01.08.2008, 14:26   #5
Местный
 
Аватар для PanAm
 
Регистрация: 18.01.2008
Сообщений: 286
Сказал Спасибо: 24
Имеет 133 спасибок в 80 сообщенях
PanAm
По умолчанию

значения dword надо бы в HEX типа - (0h4B4) 1204
или даже в самом packets.ini предусмотреть как выводить в логах.

Добавлено через 9 минут
И npcID.ini можно добавить

Последний раз редактировалось PanAm, 01.08.2008 в 14:26. Причина: Добавлено сообщение
PanAm вне форума   Ответить с цитированием
За это сообщение PanAm нажился 5 спасибками от:
Старый 02.08.2008, 17:07   #6
Местный
 
Аватар для Breadfan
 
Регистрация: 29.04.2008
Сообщений: 830
Сказал Спасибо: 80
Имеет 230 спасибок в 169 сообщенях
Breadfan пока неопределено
По умолчанию

Что то странное происходит с перехватом у меня: пакеты расшифровываются верно, но в списке соединений пусто.Как возможно это исправить? Вот полученные пакеты от серва в расшифрованном виде:
Код:
Tип: 0x09 (CharSelectionInfo)
Pазмер: 301+2
Время прихода: 15:36:56:156
d ListSize: 1
d 7: 0
b 0: 
s Name: ?????
d CharID: 51083776
s LoginName: ??????
d SessionID: 715892224
d ClanID: 234
d 0: 0
d Sex: 256
d Race: 768
d ClassID: 11264
d 1: 256
d 0: 0
d 0: 0
d 0: 0
f CurrentHP: 5,20938627568739E238
f CurrentMP: 1,74980057982643E100
d SP: 19776
f Exp: 1,99207268403191E-317
d Level: 1792
d Karma: 0
d PkKills: 0
d 0: 0
d 0: 0
d 0: 0
d 0: 0
d 0: 0
d 0: 0
d 0: 0
d 0: 0
i Unknown: 
i RightEarring: 
i LeftEarring: 
i Necklace: 
i RightRing: 
i LeftRing: 
i Head: 
i RightHand: 
i LeftHand: 
i Gloves: 
i Chest: 
i Legs: 
i Boots: 
i Unknown: 
i Unknown: 
i Hair: 
i Face: 
i Unknown: 
i Unknown: 
d 0: 0
d 0: 0
d 0: 28672
d 0: 0
d 0: 0
d 0: 29696
d HairStyle: 0
d HairColor: 606464
d Face: 0
f MaxHP: 1,14078493722293E-310
f MaxMP: 1,45073483719657E-318
d DeleteDays: 0
d ClassID: 0
d ActiveID: 0
b EnchantEffect: 
w AugmentationID: 
w 0: 
d TransformID: 0
как видите здесь сумбур, но в пакете данных байты содержащие ник перса верные(
а вот следующий пакет от сервера:
Код:
Tип: 0x0B (CharSelected)
Pазмер: 280+2
Время прихода: 15:36:58:812
s Name: Laska
d CharID: 199546
s Title: 
d SessionID: -366302298
d ClanID: 0
d 0: 0
d Sex: 1
d Race: 3
d ClassID: 44
d 1: 1
d X: -45278
d Y: -111875
d Z: -265
f CurrentHP: 280
f CurrentMP: 83
d SP: 77
f Exp: 7,78153392199963E-320
d Level: 7
d Karma: 0
d 0: 0
d INT: 18
d STR: 40
d CON: 47
d MEN: 27
d DEX: 26
d WIT: 12
d 0: 0
d 0: 0
d ClassID: 0
d 0: 0
d 0: 0
d 0: 0
d 0: 0
b Empty:
Вобщем поразмыслив догнал что в первом пакете неверно считываются данные (по крайней мере в моем случае) например SP=19776 что есть 40 4D однако, т.к. байты пишутся в обратном порядке и сп фактически 77, должна имется строка 4D 00 которую я и нашел в виде: 40 4D 00...вот такой вот баг( как поправить?

Добавлено через 32 минуты
Пробовал заменить файл packets.ini на packetst1.ini в исходном пнх, обрабатывает верно, но соединение все равно не создается. Пишет Создано новое соединение - 0 но список пуст

Последний раз редактировалось Breadfan, 02.08.2008 в 17:07. Причина: Добавлено сообщение
Breadfan вне форума   Ответить с цитированием
За это сообщение Breadfan нажился 4 спасибками от:
Старый 02.08.2008, 19:32   #7
Пользователь
 
Аватар для Emocean
 
Регистрация: 04.02.2008
Сообщений: 63
Сказал Спасибо: 44
Имеет 25 спасибок в 15 сообщенях
Emocean
По умолчанию

Цитата:
Сообщение от NLObP Посмотреть сообщение
Теперь не надо писать длинные строчки в packets.ini, понимает циклы и функции в нем
В при выделении пакетов CharInfo и UserInfo пакетхак зацикливается вот в этом месте: h(cubics:For.0001)h(cubID).
Наверное это происходит из-за того, что если h(cubics:For.0001) равно нулю, то h(cubID) отсутствуют.

Последний раз редактировалось Emocean, 02.08.2008 в 19:34.
Emocean вне форума   Ответить с цитированием
За это сообщение Emocean нажился 4 спасибками от:
Старый 03.08.2008, 00:24   #8
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

Вот так получаем в пакетхаке имя соединения:
delphi Код:
$04: if Thread[id].Name='' then begin      ii:=5*4+1;      while not((Packet.DataB[ii]=0)and(Packet.DataB[ii+1]=0)) do Inc(ii);      Dec(ii,5*4);      SetLength(WStr,ii div 2);      Move(Packet.DataB[5*4+1],WStr[1],ii);      Thread[id].Name:=WideStringToString(WStr,1251);      L2PacketHackMain.ComboBox1.Items.BeginUpdate;      iii:=L2PacketHackMain.ComboBox1.ItemIndex;      L2PacketHackMain.ComboBox1.Items.Clear;      for h1:=0 to MaxThr-1 do      if not Thread[h1].NoUsed         then L2PacketHackMain.ComboBox1.Items.Add(IntToStr(h1)+' - '+Thread[h1].Name)         else L2PacketHackMain.ComboBox1.Items.Add(IntToStr(h1)+' - пусто');      L2PacketHackMain.ComboBox1.ItemIndex:=iii;      L2PacketHackMain.ComboBox1.Items.EndUpdate; end;

То есть если имя не читаемое, то значит неверно расшифровывается трафик.
NLObP вне форума   Ответить с цитированием
За это сообщение NLObP нажился 6 спасибками от:
Старый 04.08.2008, 04:10   #9
Местный
 
Аватар для Breadfan
 
Регистрация: 29.04.2008
Сообщений: 830
Сказал Спасибо: 80
Имеет 230 спасибок в 169 сообщенях
Breadfan пока неопределено
По умолчанию

Да нет, в том то и дело, что сами данные отображены верно, т.е. сверяя значения пришедших данных я получаю верные значения (ник, лвл и т.д.), удалось запустить SkyBot (ессно переправив ID пакетов в скрипте и длл), но вот не создает соединение и все тут! То есть работать с двумя и более клиентами не получится(
Потому и интересно, как принудительно присвоить соединению имя...
Вот пример пакета CharSelectionInfo
Код:
09 01 00 00 00 00 00 00 00 01 4C 00 61 00 73 00
6B 00 61 00 00 00 7A 0B 03 00 73 00 6C 00 65 00 
73 00 61 00 72 00 00 00 A7 3A 41 1B 96 2F 07 10 
00 00 00 00 01 00 00 00 03 00 00 00 2E 00 00 00 
01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
4B EA 04 34 51 2D A9 40 00 00 00 00 00 40 85 40 
FD 2C 1E 00 49 82 0F 02 00 00 00 00 30 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 70 00 00 00 
53 03 00 00 91 03 00 00 72 03 00 00 72 03 00 00 
2F 00 00 00 8E 22 00 00 00 00 00 00 5D 02 00 00 
60 01 00 00 4A 09 00 00 78 09 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 
02 00 00 00 02 00 00 00 00 00 00 00 00 B2 AA 40 
00 00 00 00 00 40 85 40 00 00 00 00 2E 00 00 00 
01 00 00 00 00 00 00 00 00 00 00 00 00
Выделенный кусок легко переводится в ник перса, однако пнх не принимает это, а просто вывел в описании:
Tип: 0x09 (CharSelectionInfo)
Pазмер: 301+2
Время прихода: 03:17:05:187

И вот еще выявленные недочеты:
1. Выдает ошибку при запуске, если загружено окно Л2
2. Иногда без всяких сообщений прекращает работу и закрывается
3.Нет ограничения на кол-во запоминаемых пакетов, что приводит к ошибке после некоторго времени с этой опцией
4. Кстати, по крайней мере в Камаеле вылетает при переключении на вкладку Посылка

Последний раз редактировалось Breadfan, 04.08.2008 в 22:15.
Breadfan вне форума   Ответить с цитированием
За это сообщение Breadfan нажился 5 спасибками от:
Старый 04.08.2008, 18:29   #10
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

Цитата:
Сообщение от Breadfan Посмотреть сообщение
Каким образом можно принудительно присвоить соединению имя?
Есть как оказалась процедура, при помощи которой можно присвоить имя соединению:
Код:
SetName(Name: string);
Добавлено через 2 минуты
Цитата:
Сообщение от Emocean Посмотреть сообщение
В при выделении пакетов CharInfo и UserInfo пакетхак зацикливается вот в этом месте: h(cubics:For.0001)h(cubID).
Наверное это происходит из-за того, что если h(cubics:For.0001) равно нулю, то h(cubID) отсутствуют.
Проверил. Надо для Интерлюдии в packets.ini поправить пакет UserInfo он отличается от C4. На цикле кубиков зацикливается.
Наверно надо такие, попробуй
Код:
03=CharInfo:d(X)d(Y)d(Z)d(Heading)d(ObjectID)s(Name)d(Race)d(Sex)d(ClassID:Get.ClassID)d(DHair)d(Head:Get.Func01)d(RHand:Get.Func01)d(LHand:Get.Func01)d(Gloves:Get.Func01)d(Chest:Get.Func01)d(Legs:Get.Func01)d(Feet:Get.Func01)d(Back:Get.Func01)d(LRHand:Get.Func01)d(Hair:Get.Func01)d(Face)z(0048)d(PvpFlag)d(Karma)d(MSpeed)d(PSpeed)d(PvpFlag)d(Karma)d(runSpd)d(walkSpd)d(swimRSpd)d(swimWSpd)d(flRunSpd)d(flWalkSpd)d(flyRSpd)d(flyWSpd)f(SpdMul)f(ASpdMul)f(collisRadius)f(collisHeight)d(HairStyle)d(HairColor:Get.FCol)d(Face)s(Title)d(clanID)d(clanCrest)d(allyID)d(allyCrest)d(siegeFlag)c(isStand)c(isRun)c(isInFight)c(isAlikeDead)c(Invis)c(Mount)c(shop)h(cubics:For.0001)h(cubID)c(findparty)d(abnEffects)c(RecomLeft)h(RecomHave)d(classID:Get.ClassID)d(maxCP)d(curCP)c(isMounted)c(Team)d(clanBigCrestId)c(isNoble)c(isHero)c(isFishing)d(fishX)d(fishY)d(fishZ)d(NameColor:Get.FCol)d(isRun)d(PledgeClass)d(PledgeColor:Get.FCol)d(TitleColor:Get.FCol)d(d)d(Cursed)
04=UserInfo:d(X)d(Y)d(Z)d(Heading)d(ObjectID)s(Name)d(Race)d(Sex)d(ClassID:Get.ClassID)d(Level)q(Exp)d(STR)d(DEX)d(CON)d(INT)d(WIT)d(MEN)d(MaxHP)d(CurHP)d(MaxMP)d(CurMP)d(SP)d(CurLoad)d(MaxLoad)d(d)d(DHair)d(Rear)d(Lear)d(Neck)d(RFinger)d(LFinger)d(Head)d(RHand)d(LHand)d(Gloves)d(Chest)d(Legs)d(Feet)d(Back)d(LRHand)d(Hair)d(Face)d(DHair:Get.Func01)d(Rear:Get.Func01)d(Lear:Get.Func01)d(Neck:Get.Func01)d(RFinger:Get.Func01)d(LFinger:Get.Func01)d(Head:Get.Func01)d(RHand:Get.Func01)d(LHand:Get.Func01)d(Gloves:Get.Func01)d(Chest:Get.Func01)d(Legs:Get.Func01)d(Feet:Get.Func01)d(Back:Get.Func01)d(LRHand:Get.Func01)d(Hair:Get.Func01)d(Face)z(0068)d(Patk)d(Paspd)d(Pdef)d(evasion)d(accur)d(crithit)d(Matk)d(Maspd)d(Paspd)d(Mdef)d(PvpFlag)d(Karma)d(runSpd)d(walkSpd)d(swimRSpd)d(swimWSpd)d(flRSpd)d(flWSpd)d(flyRSpd)d(flyWSpd)f(MoveMul)f(aspdMul)f(collisRadius)f(collisHeight)d(HairStyle)d(HairColor:Get.FCol)d(Face)d(AccessLvl)s(Title)d(clanID)d(clanCrestId)d(AllyID)d(AllyCrestId)d(ClanLeader)c(Mount)c(shop)c(DwarfCraft)d(PKkills)d(PVPkills)h(cubics:For.0001)h(cubID)c(findparty)d(abnEffects)c(c)d(clanPrivil)h(RecomLeft)h(RecomHave)d(d)h(InventLimit)d(classId:Get.ClassID)d(sEff)d(maxCP)d(curCP)c(Mount)c(Team)d(clanBigCrestId)c(Noble)c(Hero)c(Fishing)d(fishX)d(fishY)d(fishZ)d(NameColor:Get.FCol)c(isRun)d(PledgeClass)d(d)d(TitleColor:Get.FCol)d(d)d(CurseWeap)

Добавлено через 17 минут
Цитата:
Сообщение от Breadfan Посмотреть сообщение
Да нет, в том то и дело, что сами данные отображены верно, т.е. сверяя значения пришедших данных я получаю верные значения (ник, лвл и т.д.), удалось запустить SkyBot (ессно переправив ID пакетов в скрипте и длл), но вот не создает соединение и все тут! То есть работать с двумя и более клиентами не получится(
Потому и интересно, как принудительно присвоить соединению имя...
Вот пример пакета CharSelectionInfo

Выделенный кусок легко переводится в ник перса, однако пнх не принимает это, а просто вывел в описании:
Tип: 0x09 (CharSelectionInfo)
Pазмер: 301+2
Время прихода: 03:17:05:187
Запиши лог и выложи здесь. Я буду настраивать.

Это Камаель. Попробуй нормальную расшифровку 09 и 0B пакета подсунуть. Я основываюсь на Сауроновских packets.ini

Код:
09=CharSelectInfo:d(Count:For.0065)d(d)c(c)s(Name)d(CharID)s(LoginName)d(SessionID)d(ClanID)d(d)d(Sex)d(Race)d(ClassID:Get.ClassID)d(active)d(X)d(Y)d(Z)f(cur_HP)f(cur_MP)d(SP)q(Exp)d(Level)d(Karma)z(0036)d(Under)d(Rear)d(Lear)d(Neck)d(RFinger)d(LFinger)d(Head)d(RHand)d(LHand)d(Gloves)d(Chest)d(Legs)d(Feet)d(Back)d(LRHand)d(Hair)d(Face)d(Under:Get.Func01)d(Rear:Get.Func01)d(Lear:Get.Func01)d(Neck:Get.Func01)d(RFinger:Get.Func01)d(LFinger:Get.Func01)d(Head:Get.Func01)d(RHand:Get.Func01)d(LHand:Get.Func01)d(Gloves:Get.Func01)d(Chest:Get.Func01)d(Legs:Get.Func01)d(Feet:Get.Func01)d(Back:Get.Func01)d(LRHand:Get.Func01)d(Hair:Get.Func01)d(Face)d(HairStyle)d(HairColor:Get.FCol)d(Face)f(Max_HP)f(Max_MP)d(DELdays)d(ClassID:Get.ClassID)d(autSel)c(EnchEffect)h(face)h(face)
0B=CharSelected:s(Name)d(CharID)s(Title)d(SessionID)d(ClanID)d(d)d(Sex)d(Race)d(ClassID:Get.ClassID)d(active)d(X)d(Y)d(Z)f(Cur_HP)f(Cur_MP)d(SP)q(EXP)d(Level)d(Karma)d(d)d(INT)d(STR)d(CON)d(MEN)d(DEX)d(WIT)z(0128)d(inGameTime)z(0072)
Добавлено через 19 минут
{Minor and major changes by NLObP
Что уже есть:
-------------
3.2.1
+ поддержка ДЛЛ by QaK
+ небольшая оптимизации кода by OllyDebug;

3.2.3 от 01.08.2008
+ при запуске программы загрузка packets.ini или packetst1.ini в зависимости от галочки Камаель;
+ при установки/снятии галочки Камаель перечитываем packets.ini или packetst1.ini;
+ парсер понимает одно и двухбайтные коды пакетов;
+ в редакторе скриптов горячие клавиши: ctrl-S - сохранение, ctrl+F9 проверка скрипта;

3.2.4 от 02.08.2008
+ парсер пакетов использует циклы и функции в packets.ini by Sauron
Get.Skill - возвращает название скила по его ID из значения аргумента
Get.MsgID - возвращает текст по его ID из значения аргумента
Get.Func01 - возвращает название Item'а по его ID из значения аргумента
Get.Func02 - возвращает тип Say2
Get.Func09 - разное

3.2.5 от 04.08.2008
+ сохраняет размеры окна в конфиге
+ парсер пакетов использует циклы и функции в packets.ini by Sauron
+ kID=1000000 в конфиге для Get.NpcID - возвращает текст по его ID из значения аргумента
+ Get.ClassID - профа
+ Get.FSup - Status Update ID
}

Добавлено через 8 минут
ЗЫЖ 50 минут на Абиссе рыбу ловит.

Добавлено через 12 часов 37 минут
Сделал
3.2.6 от 04.08.2008
+ по ProtocolVersion грузим разные packets.ini

С Интерлюдией и С4, с packets.ini, которые у меня есть вроде работает нормально, а для Камаеля пакетхак фигню всякую показывает и подвисает в циклах.
Есть у кого правильный packets.ini для Камаеля и лог пакетов для тестов?

Последний раз редактировалось NLObP, 04.08.2008 в 18:33. Причина: Добавлено сообщение
NLObP вне форума   Ответить с цитированием
За это сообщение NLObP нажился 8 спасибками от:
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack > Разработка


Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 04:33.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!