Jump to content
  • Sign Up
×
×
  • Create New...

Pablo Enrike

Members
  • Posts

    20
  • Joined

  • Last visited

  • Feedback

    0%

About Pablo Enrike

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Pablo Enrike's Achievements

  1. Home On this page you can find protocol numbers information and download links for clean official game clients used on different branches of Lineage 2. These are not directly usable for private servers. You will need to make a patched system folder if you want to use game client for your server. How to make patched system folders? Have missing clients? Please email links to [email protected] Special thanks to Finn for sharing multiple missing game clients. Lineage 2 Protocols: Main Chronicle NA EU RU KR Prelude 377 - - Harbingers of War 419 - - Age of Splendor 478 - - Rise of Darkness 530 - - Scions of Destiny 656 - - Oath of Blood 693 - - Interlude 737 740 744 746 - - The Kamael 828 - - The Kamael Hellbound 831 - - Gracia Part 1 851 - 19 Gracia Part 2 12 17 - 20 Gracia Final 83 87 - 83 Gracia Plus (Epilogue) 148 152 - 146 148 Freya (High Five) 216 - 216 High Five 267 268 271 273 - 253 268 Awakening 404 414 415 - 404 414 415 Harmony 410 411 - 410 411 Tauti 448 449 - 448 449 Glory Days 479 480 488 - 479 480 488 Lindvior 531 532 533 557 558 - 531 532 533 557 558 Valliance / Epeisodion / Raiders 575 578 580 581 583 - 575 578 580 581 583 Ertheia / Dimensional Strangers 603 606 607 610 - 603 606 607 610 [EP2.0] Infinite Odyssey: Shadows of Light 24 - 24 [EP2.5] Infinite Odyssey: Underground / Hymn of the Soul 28 - 28 [EP3.0] Helios: Lord of Bifrost 64 - 64 55 Helios: Arena (MOBA) - - - 83 Grand Crusade 109 110 - 109 110 Salvation: First Chapter 140 - 140 Salvation: Arena (MOBA) - - 140 - Salvation: The Gathering / Orfen 152 - 152 Fafurion NA RU 166 196 166 196 166 196 Shadow of the Kamael / Prelude Of War 228 228 228 Shadow of the Kamael Pt. 2 / Prelude Of War Ch. 2 235 236 235 236 235 236 Winter of War / Prelude Of War Ch. 3 245 245 245 Dawn of Heroes / Homunculus 272 272 272 269 273 274 275 Tales Untold / Homunculus Ch. 2 286 286 286 285 286 287 289 290 297 Wild Horizons / Return Of The Queen Ant 306 306 306 306 307 308 309 Herald of Light / Return Of The Queen Ant: Ch. 2 311 311 311 314 326 Battle Chronicles / Master Class 338 338 338 332 333 334 336 338 344 347 Vanguard / Master Class Ch. 2 / RE:MEMBER 362 362 362 362 364 365 367 369 371 372 373 377 379 Hore's Tome / Master Class Ch. 3 388 388 388 383 387 388 390 불멸의 무기 (Immortal Weapon) 393 395 어둠이 선택한 자 / The Source of Flame 418 418 418 413 414 415 417 419 422 424 425 426 DEATHKNIGHT REBORN / Aztacan's Temple / DEATHKNIGHT II 430 430 430 430 Shine Maker 437 Lineage 2 Protocols: Classic Chronicle NA EU RU KR Beta 19 19 19 Release 24 24 24 Age of Splendor 28 28 28 Saviors 64 64 64 Saviors: Zaken 110 110 110 Saviors: Antharas 140 140 140 Seven Signs 152 152 152 Secret of Empire: Part 1 166 166 166 Secret of Empire: Part 2 196 196 196 Kamael Ch.1 228 228 228 Kamael Ch.2 235 235 235 Winter of War / Kamael Ch.3 245 245 245 Dawn of Heroes / Kamael Ch.4 272 272 272 Tales Untold / Kamael Ch.5 286 286 286 Wild Horizons / The Collection 306 306 306 Herald of Light / The Collection Ch.2 311 311 311 Battle Chronicles / Castle of Ice 338 338 338 Vanguard / Castle of Ice Ch.2 362 362 362 Crusader / Castle of Ice Ch.3 388 388 388 The Source of Flame 418 418 Death Knight Reborn / Pagan Temple 430 430 Lineage 2 Protocols: Essence/Aden Chronicle NA EU RU KR Release - Kamael - 228 228 Kamael. Part 2 - 236 236 Death Knight - 245 245 Fluffy Reinforcement - 272 270 272 Dwelling of Spirits - 286 286 Sylph - 306 306 Frost Lort 311 311 311 Battle Chronicles 338 338 338 Vanguard 362 362 362 Crusader 388 388 388 Assassin 418 414 418 414 418 Credits Special thanks to Finn for sharing multiple missing game clients.
  2. Автор данной статьи: KyberPrizrak (мылo:) (создана/обновлена: 15.02.07г. - 6.07.07г.) Данная статья не появилась бы на свет, если бы не статья TechnoWiz@rd'a: Packets.htm, являющейся первой подобной статьей-справочником по пакетам Lineage2. Но в ней просто куууча грубейших ошибок, да и очень многих важных пакетов - попросту нету... В связи с чем я решил написать свою статью... Дизайн и структура данной статьи полностью скопированы со статьи TechnoWiz@rd'a. В остальном же все добывалось лично мной: структура пакетов бралась из исходников C4J-сервера, и тщательным образом сверялась с теми пакетами, которыми общаются C4ПТС-сервер и клиент (для этого использовались программы l2proxy и hLaPEx). Все, что находится в фигурных скобках {} - это те данные, в которых я частично или полностью не уверен! Осторожнее! (Все что касается RSA & GG - считайте что оно в фигурных скобках ^_^ ) Содержание 1. Общие сведения 2. Пакеты Client -> Login Server 3. Пакеты Login Server -> Client 4. Пакеты Client -> Game Server 5. Пакеты Game Server -> Client 1. Общие сведения 1.1. Процесс входа в игру: 1) Сразу после установки соединения сервер отправляет клиенту пакет Init 2) С этого момента, все следующие пакеты для/от LS зашифрованны Blowfish'ем, ключем является: Token + символ с кодом ноль (так что длина ключа не 20, а 21!) 3) Клиент отправляет пакет RequestAuthLogin, содержащий логин и пароль 4) Если авторизация прошла успешно, сервер присылает пакет LoginOk, содержащий SessionKey1. Иначе, сервер присылает пакет LoginFail, содержащий информацию о причине неудачной авторизации. 5) Клиент запрашивает список серверов отправляя пакет RequestServerList 6) Сервер присылает пакет ServerList, в котором содержится список доступных гейм серверов, с указанием IP-адресов/портов каждого сервера, его состояния, количеством игроков и некоторой другой информацией 7) Клиент отсылает пакет RequestServerLogin 8) Сервер проверяет, можно ли подключится к выбранному GS, если да - сервер присылает пакет PlayOk, содержащий SessionKey2. Иначе, сервер присылает пакет PlayFail, содержащий информацию почему нельзя подключится. 9) Теперь мы можем попрощатся с LS и закрыть соединение с ним. (мы получили от него все необходимые данные) 10) Открываем соединение с GS. (IP-адресс и порт сервера мы получили в пакете ServerList) 11) Клиент отправляет пакет ProtocolVersion 12) Сервер присылает пакет FirstKey, содержащий первые 4 байта ключа XorKey 13) С этого момента, все следующие пакеты для/от GS зашифрованны! (о шифровании и ключе - будет чуть ниже) 14) Клиент отправляет пакет RequestAuthLogin 15) Сервер присылает CharacterSelectionInfo, содержащий список чаров 16) [тут может идти общение с сервером по управлению чарами - создание, удаление, востановление. Вдаватся не буду, ибо вам это пока не нужно. Просто пропускаем этот пункт.] 17) Клиент отправляет пакет CharacterSelected, содержащий номер чара, которым мы хотим зайти 18) Сервер присылает пакет SSQInfo, он необходим клиенту для выбора цвета неба и луны. 19) Сервер присылает пакет CharacterSelected 20) Клиент отправляет пакет RequestManorList, и сразу же за ним отправляет пакет RequestQuestList 21) Сервер присылает пакет ExSendManorList 22) Сервер присылает пакет QuestList, но обратите внимание - в данный момент нам будет сказанно что квестов/итемов - ноль, даже если это не так 23) Клиент отправляет пакет EnterWorld - Поздравляю, мы в игре! Замечание: GS через определенные интервалы времени (~60сек), присылает пакет NetPing, из которого мы должны сохранить значение, и вставив его в одноименный пакет NetPing, отправить серверу. Дальше могу вас обрадовать - все просто до безобразия! ^_^ Кроме ответа на NetPing мы мы не обязанны чтолибо отсылать серверу. А значит можем бесконечно долго находится в игре и просто слушать то, что нам шлет сервер. Неизвестные пакеты мы просто игнорируем! 1.1.2 Общение с сервером по управлению чарами: Создание: 1) Когда клиент открывает окошко создания чара, серверу отправляется пакет NewCharacter 2) Сервер присылает пакет NewCharacterSuccess, содержащий статы базовых классов в игре 3) При нажатии на кнопку создать, клиент оправляет пакет CharacterCreate 4) Если чар удачно создан, сервер присылает пакет CharacterCreateSuccess, и следом за ним присылает обновленный список чаров: CharacterSelectionInfo. Если же создать чара не удалось, сервер присылает пакет CharacterCreateFail, и возвращаемся в предыдущий пункт Удаление: 1) Клиент отправляет пакет CharacterDelete, содержащий номер чара, которого мы хотим удалить 2) Если чар удачно удален, сервер присылает пакет CharacterDeleteSuccess, если же удалить чара не удалось, сервер присылает пакет CharacterDeleteFail 3) Удалось удалить чара или нет, сервер присылает обновленный список чаров: CharacterSelectionInfo Востановление: 1) Клиент отправляет пакет CharacterRestore, содержащий номер чара, которого мы хотим востановить 2) Если востановление было удачно, сервер присылает обновленный список чаров: CharacterSelectionInfo, если же нет, то ничего. 1.2. Шифрация пакетов GameServer'a: Чтобы не загружать ваши и без того замученные головы, вместо алгоритмов, я дам готовые исходники (немного измененные для наглядности): char key_sc[8]; char key_cs[8]; void Encrypt(char *raw, int size) { int temp = 0; for (int i=0; i<size; i++) { int temp2 = raw[i] &0xff; raw[i] = (char)(temp2 ^ (key_cs[i&7] &0xff) ^ temp); temp = raw[i]; } int old = key_cs[0] &0xff; old |= key_cs[1] << 8 &0xff00; old |= key_cs[2] << 0x10 &0xff0000; old |= key_cs[3] << 0x18 &0xff000000; old += size; key_cs[0] = (char)(old &0xff); key_cs[1] = (char)(old >> 0x08 &0xff); key_cs[2] = (char)(old >> 0x10 &0xff); key_cs[3] = (char)(old >> 0x18 &0xff); } void Decode(char *input, int size) { int i = 0; int j = 0; for(int k=0; k < size; k++) { int i1 = input[k] & 0xFF; input[k] = (char)(i1 ^ key_sc[j++] & 0xFF ^i); i = i1; if(j>7) j=0; } long l = key_sc[0] & 0xFF; l |= key_sc[1] << 8 & 0xFF00; l |= key_sc[2] << 16 & 0xFF0000; l |= key_sc[3] << 24 & 0xFF000000; l += size; key_sc[0] = (char)(l & 255L); key_sc[1] = (char)(l >> 8 & 255L); key_sc[2] = (char)(l >> 16 & 255L); key_sc[3] = (char)(l >> 24 & 255L); } void Key(char* packet, int len) { key_sc[0] = packet[4]; key_sc[1] = packet[5]; key_sc[2] = packet[6]; key_sc[3] = packet[7]; key_sc[4] = (char)0xA1; key_sc[5] = (char)0x6C; key_sc[6] = (char)0x54; key_sc[7] = (char)0x87; for(i=0;i<8;i++) {key_cs[i]=key_sc[i];} } void add_ckecksum(unsigned char *raw, int count) //вычисляет чексумму и вставляет её в пакет { //как пользоватся: add_ckecksum(CelyjPaket+2, DlinaPaketa-(2+4+4)); unsigned long chksum = 0; unsigned long ecx; int i = 0; for(i = 0; i < count; i += 4) { ecx = (unsigned long)raw[i]; ecx |= (unsigned long)raw[i + 1]<<8; ecx |= (unsigned long)raw[i + 2]<<16; ecx |= (unsigned long)raw[i + 3]<<24; chksum ^= ecx; } memcpy(raw+count, (char *)&chksum, 4); } void RSAKeyDecode(char* RSAKey) { for (int i = 0; i < 64; i++) { RSAKey[i + 64] ^= RSAKey[i]; } for (int i = 0; i < 4; i++) { RSAKey[i + 13] ^= RSAKey[i + 52]; } for (int i = 0; i < 64; i++) { RSAKey[i] ^= RSAKey[i + 64]; } for (int i = 0; i < 4; i++) { BYTE tmp = RSAKey[i]; RSAKey[i] = RSAKey[i + 77]; RSAKey[i + 77] = tmp; } } Во первых заметьте, что после каждой шифрации или дешифрации ключ которым мы пользовались, будет изменен! И обратите особое внимание, у нас два ключа!!! Одним мы шифруем пакеты, которые мы отправляем серверу, вторым мы дешифруем пакеты которые сервер присылает нам. Процедура Key из данных пакета FirstKey устанавливает нам оба ключа (изначально ключи равны друг-другу). Да, и забыл сказать - и Blowfish, и Xor-шифрация шифруют пакет начиная с третего байта! (т.е. первые два байта, означающие размер пакета - НЕ ШИФРУЮТСЯ НИКОГДА!!!) P.S. тема "пишем своего бота" - все вопросы по пакетному уровню, или по написанию бота можете задавать туда 2. Пакеты Client -> Login Server 00 - RequestAuthLogin 00 - RequestAuthLogin (RSA) 02 - RequestServerLogin 05 - RequestServerList 07 - RequestGGAuth RequestAuthLogin Формат: 32 00 // Длина 00 // Тип XX XX XX XX XX XX XX XX XX XX XX XX XX XX // Login (учтите, эта строка - массив из 14 символов) XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX // Password (... из 16 символов ...) 08 00 00 00 00 00 00 00 00 XX XX XX XX // чексумма 00 00 00 00 Замечание: Если длина логина/пароля равна длине массива, то строка идет без ноль-терминатора! RequestAuthLogin (RSA) Формат: AA 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 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 20 00 00 XX XX XX XX XX XX XX XX XX XX XX XX XX XX // Login (учтите, эта строка - массив из 14 символов) XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX // Password (... из 16 символов ...) [конец зашифрованного блока] XX XX XX XX // GGAuthResponse из GGAuth XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX 08 00 00 00 00 00 00 00 00 XX XX XX XX // чексумма 00 00 00 00 Замечание: Если длина логина/пароля равна длине массива, то строка идет без ноль-терминатора! RequestGGAuth Формат: 22 00 // Длина 07 // Тип XX XX XX XX // ID сессии 23 92 90 4d 18 30 b5 7c 96 61 41 47 05 07 96 fb 00 00 00 f2 12 ba a9 // чексумма 00 00 00 00 RequestServerLogin Формат: 1A 00 // Длина 02 // Тип XX XX XX XX // SessionKey1_FistPart из LoginOk XX XX XX XX // SessionKey1_SecondPart из LoginOk XX // ID сервера 00 00 00 00 00 00 XX XX XX XX // чексумма 00 00 00 00 RequestServerList Формат: 1A 00 // Длина 05 // Тип XX XX XX XX // SessionKey1_FistPart из LoginOk XX XX XX XX // SessionKey1_SecondPart из LoginOk 04 00 00 00 00 00 00 XX XX XX XX // чексумма 00 00 00 00 3. Пакеты Login Server -> Client 00 - Init 00 - Init (RSA) 01 - LoginFail 03 - LoginOk 04 - ServerList 06 - PlayFail 07 - PlayOk 0B - GGAuth Init Формат: 0B 00 // Длина 00 // Тип XX XX XX XX // ID сессии XX XX XX XX // Ревизия протокола, на моем сервере она равна 0x785A Init (RSA) Формат: 9B 00 // Длина 00 // Тип XX XX XX XX // ID сессии XX XX XX XX // Ревизия протокола [начало зашифрованного RSA-ключа] XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX [конец зашифрованного RSA-ключа] XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX // неизвестно для чего это (в яве тут нули) GGAuth Формат: 12 00 // Длина 0B // Тип XX XX XX XX // GGAuthResponse 00 00 00 00 00 00 00 XX XX XX XX // чексумма Замечание: пакет из С4 ява LoginFail Формат: 12 00 // Длина 01 // Тип XX // причина неудачной авторизации 00 00 00 00 00 00 XX XX XX XX // чексумма 00 00 00 00 Причина: 0x03 - Password does not match this account. 0x07 - The account is already in use. Access denied. 0x12 - Your usage term has expired. Please visit the official Lineage2 website at... Замечание: в байтах 5-10, и последних четырех - часто попадается мусор... LoginOk Формат: 32 00 // Длина 03 // Тип XX XX XX XX // SessionKey1_FistPart XX XX XX XX // SessionKey1_SecondPart 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 XX XX XX XX // чексумма 00 00 00 00 Замечание: в байтах 40-42, и последних четырех - часто попадается мусор... ServerList Формат: XX XX // Длина 04 // Тип XX // Количество серверов XX // {номер LS} [начало повторяющегося блока] XX // ID сервера XX XX XX XX // IP-аддресс GS XX XX XX XX // Port GS XX // возрастной лимит XX // PVP сервер: 1-да, 0 - нет XX XX // Количество игроков онлайн XX XX // Максимальное количество игроков XX // Статус сервера: 1-UP, 0-DOWN XX XX XX XX // {Статус сервера} XX // {Статус сервера} [конец повторяющегося блока] 00 00 00 XX XX XX XX // чексумма 00 00 00 00 Замечание: в последних 4 байтах и 2 байтах перед чексуммой - часто попадается мусор... PlayFail Формат: 12 00 // Длина 06 // Тип XX // Причина 00 00 00 00 00 00 XX XX XX XX // чексумма 00 00 00 00 Причина: { 0x08 - Access failed. Please try again later... } Замечание: в байтах 5-10, и последних четырех - часто попадается мусор... PlayOk Формат: 1A 00 // Длина 07 // Тип XX XX XX XX // SessionKey2_FistPart XX XX XX XX // SessionKey2_SecondPart 01 00 00 00 00 00 00 XX XX XX XX // чексумма 00 00 00 00 Замечание: в байтах 13-18, и последних четырех - часто попадается мусор... 4. Пакеты Client -> Game Server 01 - MoveBackwardToLocation 00 - ProtocolVersion 03 - EnterWorld 08 - RequestAuthLogin 0B - CharacterCreate 0C - CharacterDelete 0D - CharacterSelected 0E - NewCharacter 0F - RequestItemList 11 - RequestUnEquipItem 14 - UseItem 38 - Say2 48 - ValidatePosition 62 - CharacterRestore 63 - RequestQuestList 73 - RequestPrivateStoreManage A8 - NetPing D008 - RequestManorList ProtocolVersion Формат: 07 01 // Длина 00 // Тип XX XX XX XX // ProtocolVersion [далее идет массив-константа, который хз от чего зависит, у меня он такой:] 09 07 54 56 03 09 0B 01 07 02 54 54 56 07 00 02 55 56 00 51 00 53 57 04 07 55 08 54 01 07 01 53 00 56 55 56 01 06 05 04 51 03 08 51 08 51 56 04 54 06 55 08 02 09 51 56 01 53 06 55 04 53 00 56 56 53 01 09 02 09 01 51 54 51 09 55 56 09 03 04 07 05 55 04 06 55 04 06 09 04 51 01 08 08 06 05 52 06 04 01 07 54 03 06 52 55 06 55 55 51 01 02 04 54 03 55 54 01 57 51 55 05 52 05 54 07 51 51 55 07 02 53 53 00 52 05 52 07 01 54 00 03 05 05 08 06 05 05 06 03 00 0D 08 01 07 09 03 51 03 07 53 09 51 06 07 54 0A 50 56 02 52 04 05 55 51 02 53 00 08 54 04 52 56 06 02 09 00 08 03 53 56 01 05 00 55 06 08 56 04 0D 06 07 52 06 07 04 0A 06 01 04 54 04 00 05 02 04 54 00 09 52 53 05 04 01 04 05 05 01 52 51 52 0D 06 51 08 09 54 53 00 0D 01 02 03 54 53 01 05 03 08 56 54 07 02 54 0B 06 Др.названия: VersionCheck, SendProtocolVersion Замечание: кто знает, от чего зависит этот "массив-константа", плз напишите мне на мыло: RequestAuthLogin Формат: XX XX // Длина 08 // Тип XX XX ... 00 00 // Login (Unicode строка) XX XX XX XX // SessionKey2_SecondPart XX XX XX XX // SessionKey2_FistPart XX XX XX XX // SessionKey1_FistPart XX XX XX XX // SessionKey1_SecondPart 01 00 00 00 Др.названия: AuthLogin CharacterSelected Формат: 15 00 // Длина 0D // Тип XX XX XX XX // Номер чара 00 00 00 00 00 00 00 00 00 00 00 00 00 00 RequestManorList Формат: 05 00 // Длина D0 // Тип 08 00 // Подтип RequestQuestList Формат: 03 00 // Длина 63 // Тип EnterWorld Формат: 13 00 // Длина 03 // Тип 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 NetPing Формат: 0F 00 // Длина A8 // Тип XX XX XX XX // {ID пинга}, из пакета NetPing XX XX XX XX // Пинг 00 08 00 00 NewCharacter Формат: 03 00 // Длина 0E // Тип CharacterCreate Формат: XX XX // Длина 0B // Тип XX XX ... 00 00 // Имя создаваемого чара (Unicode строка) XX XX XX XX // Race XX XX XX XX // Sex XX XX XX XX // ClassID XX XX XX XX // INT XX XX XX XX // STR XX XX XX XX // CON XX XX XX XX // MEN XX XX XX XX // DEX XX XX XX XX // WIT XX XX XX XX // HairStyle XX XX XX XX // HairColor XX XX XX XX // Face Замечание: STR,DEX,CON,INT,WIT,MEN - это базовые статы выбранного класса, знаем мы их из пакета NewCharacterSuccess (но на самом деле, сервер их игнорирует!) CharacterDelete Формат: 07 00 // Длина 0C // Тип XX XX XX XX // Номер чара CharacterRestore Формат: 07 00 // Длина 62 // Тип XX XX XX XX // Номер чара Say2 Формат: XX XX // Длина 38 // Тип XX XX ... 00 00 // Отправляемое сообщение (Unicode строка) XX XX XX XX // Тип сообщения (аналогичен Say2) XX XX ... 00 00 // Имя получателя (Unicode строка) Замечание: Имя получателя - присутсвует только если "Тип сообщения" = 2 (т.е. только если это приватное сообщение!) RequestItemList Формат: 03 00 // Длина 0F // Тип UseItem Формат: 0B 00 // Длина 14 // Тип XX XX XX XX // ObjectID 00 00 00 00 RequestUnEquipItem Формат: 07 00 // Длина 11 // Тип XX XX XX XX // BodyPart: 1 - Under 2 - REar 4 - LEar 8 - Neck 16 - RFinger 32 - LFinger 64 - Head 128 - RHand 256 - LHand 512 - Gloves 1024 - Chest 2048 - Legs 4096 - Feet 8192 - Back 16384- LRHand 32768- Hair MoveBackwardToLocation Формат: 1F 00 // Длина 01 // Тип XX XX XX XX // DestX XX XX XX XX // DestY XX XX XX XX // DestZ XX XX XX XX // CurX XX XX XX XX // CurY XX XX XX XX // CurZ XX XX XX XX // Для передвижения используем клаву или мышь? (0-клава 1-мышь) ValidatePosition Формат: 17 00 // Длина 48 // Тип XX XX XX XX // CurX XX XX XX XX // CurY XX XX XX XX // CurZ XX XX XX XX // Heading 00 00 00 00 // ??? RequestPrivateStoreManage Формат: 03 00 // Длина 73 // Тип Др.названия: RequestPrivateStoreManageSell, TradeRequest 5. Пакеты Game Server -> Client 00 - FirstKey 01 - MoveToLocation 03 - CharInfo ◙ 04 - UserInfo ◙ 0B - SpawnItem 0C - DropItem 12 - DeleteObject 13 - CharacterSelectionInfo 15 - CharacterSelected 16 - NpcInfo ◙ 17 - NewCharacterSuccess 19 - CharacterCreateSuccess 1A - CharacterCreateFail 1B - ItemList 23 - CharacterDeleteSuccess 24 - CharacterDeleteFail 27 - InventoryUpdate 4A - Say2 80 - QuestList ◙ 9C - PrivateStoreMsg B9 - PrivateStoreMsgBuy D3 - NetPing DB - RecipeShopMsg F8 - SSQInfo FE1B - ExSendManorList FirstKey Формат: 10 00 // Длина 00 // Тип XX // Неизвестно XX XX XX XX // XorKey_FistPart 01 00 00 00 01 00 00 00 Др.названия: KeyPacket, XorKey CharacterSelectionInfo Формат: XX XX // Длина 13 // Тип XX XX XX XX // количество чаров [начало повторяющегося блока] XX XX ... 00 00 // Name (Unicode строка) XX XX XX XX // Char ID XX XX ... 00 00 // Login (Unicode строка) XX XX XX XX // Session ID XX XX XX XX // Clan ID 00 00 00 00 XX XX XX XX // Sex XX XX XX XX // Race XX XX XX XX // BaseClass ID 01 00 00 00 XX XX XX XX // X XX XX XX XX // Y XX XX XX XX // Z XX XX XX XX XX XX XX XX // HP (вещественный тип - Double) XX XX XX XX XX XX XX XX // MP (вещественный тип - Double) XX XX XX XX // SP XX XX XX XX // EXP XX XX XX XX // lvl XX XX XX XX // Karma 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 XX XX XX XX // ItemObjectID Under XX XX XX XX // ItemObjectID REar XX XX XX XX // ItemObjectID LEar XX XX XX XX // ItemObjectID Neck XX XX XX XX // ItemObjectID RFinger XX XX XX XX // ItemObjectID LFinger XX XX XX XX // ItemObjectID Head XX XX XX XX // ItemObjectID RHand XX XX XX XX // ItemObjectID LHand XX XX XX XX // ItemObjectID Gloves XX XX XX XX // ItemObjectID Chest XX XX XX XX // ItemObjectID Legs XX XX XX XX // ItemObjectID Feet XX XX XX XX // ItemObjectID Back XX XX XX XX // ItemObjectID LRHand XX XX XX XX // ItemObjectID Hair XX XX XX XX // ItemID Under XX XX XX XX // ItemID REar XX XX XX XX // ItemID LEar XX XX XX XX // ItemID Neck XX XX XX XX // ItemID RFinger XX XX XX XX // ItemID LFinger XX XX XX XX // ItemID Head XX XX XX XX // ItemID RHand XX XX XX XX // ItemID LHand XX XX XX XX // ItemID Gloves XX XX XX XX // ItemID Chest XX XX XX XX // ItemID Legs XX XX XX XX // ItemID Feet XX XX XX XX // ItemID Back XX XX XX XX // ItemID LRHand XX XX XX XX // ItemID Hair XX XX XX XX // HairStyle XX XX XX XX // HairColor XX XX XX XX // Face XX XX XX XX XX XX XX XX // MaxHP (вещественный тип - Double) XX XX XX XX XX XX XX XX // MaxMP (вещественный тип - Double) XX XX XX XX // Delete (количество секунд до удаления) XX XX XX XX // Class ID XX XX XX XX // Last Used? (for auto-select char) XX // Enchant Effect (на сколько заточенна пушка) [конец повторяющегося блока] Др.названия: CharSelectInfo SSQInfo Формат: 05 00 // Длина F8 // Тип XX XX // кто победил в Seven Signs: 258: Dawn 257: Dusk { 256: None } Др.названия: SignsSky CharacterSelected Формат: XX XX // Длина 15 // Тип XX XX ... 00 00 // CharName (Unicode строка) XX XX XX XX // Char ID XX XX ... 00 00 // { Title (Unicode строка) } XX XX XX XX // Session ID XX XX XX XX // Clan ID 00 00 00 00 XX XX XX XX // Sex XX XX XX XX // Race XX XX XX XX // { Class ID } 01 00 00 00 XX XX XX XX // X XX XX XX XX // Y XX XX XX XX // Z XX XX XX XX XX XX XX XX // HP (вещественный тип - Double) XX XX XX XX XX XX XX XX // MP (вещественный тип - Double) XX XX XX XX // SP XX XX XX XX // EXP XX XX XX XX // lvl XX XX XX XX // Karma 00 00 00 00 XX XX XX XX // STR XX XX XX XX // DEX XX XX XX XX // CON XX XX XX XX // INT XX XX XX XX // WIT XX XX XX XX // MEN [дальше идет муть какаято, в которой я так и не разобрался (зависит от ProtocolVersion)] 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 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 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 XX XX 00 00 // { in-game time??? } 00 00 00 00 XX 00 00 00 // неизвестно 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Др.названия: CharSelected ExSendManorList Формат: XX XX // Длина FE // Тип 1B 00 // Подтип XX XX XX XX // количество территорий, где можно манорить [начало повторяющегося блока] XX XX XX XX // номер XX XX ... 00 00 // имя территории (Unicode строка) [конец повторяющегося блока] QuestList !!! этот пакет не доделан!!! Формат: XX XX // Длина 80 // Тип XX XX // Количество незавершенных квестов [начало повторяющегося блока 1] XX XX XX XX // Quest ID XX XX XX XX // Stage of quest progress [конец повторяющегося блока 1] XX XX // {Количество какихто итемов} [начало повторяющегося блока 2] XX XX XX XX // dropItemObjID XX XX XX XX // dropItemID XX XX XX XX // dropItemCount XX XX XX XX // неизвестно [конец повторяющегося блока 2] !!! этот пакет не доделан!!! NetPing Формат: 07 00 // Длина D3 // Тип XX XX XX XX // {ID пинга} NewCharacterSuccess Формат: XX XX // Длина 17 // Тип XX XX XX XX // Количество базовых классов в игре [начало повторяющегося блока] XX XX XX XX // расса XX XX XX XX // класс 46 00 00 00 XX XX XX XX // STR 0a 00 00 00 46 00 00 00 XX XX XX XX // DEX 0a 00 00 00 46 00 00 00 XX XX XX XX // CON 0a 00 00 00 46 00 00 00 XX XX XX XX // INT 0a 00 00 00 46 00 00 00 XX XX XX XX // WIT 0a 00 00 00 46 00 00 00 XX XX XX XX // MEN 0a 00 00 00 [конец повторяющегося блока] Др.названия: CharTemplates CharacterCreateSuccess Формат: 07 00 // Длина 19 // Тип 01 00 00 00 Др.названия: CharCreateOk CharacterCreateFail Формат: 07 00 // Длина 1A // Тип XX XX XX XX // Причина: 0x02 - Name already exists. Др.названия: CharCreateFail CharacterDeleteSuccess Формат: 03 00 // Длина 23 // Тип Др.названия: CharDeleteOk CharacterDeleteFail Формат: 07 00 // Длина 24 // Тип XX XX XX XX // Причина Др.названия: CharDeleteFail UserInfo !!! этот пакет не доделан!!! Формат: XX XX // Длина 04 // Тип XX XX XX XX // X XX XX XX XX // Y XX XX XX XX // Z 00 00 00 00 XX XX XX XX // ObjectId XX XX ... 00 00 // Name (Unicode строка) XX XX XX XX // Race XX XX XX XX // Sex XX XX XX XX // ClassId XX XX XX XX // lvl XX XX XX XX // Exp XX XX XX XX // STR XX XX XX XX // DEX XX XX XX XX // CON XX XX XX XX // INT XX XX XX XX // WIT XX XX XX XX // MEN XX XX XX XX // MaxHP XX XX XX XX // CurrentHP XX XX XX XX // MaxMP XX XX XX XX // CurrentMP XX XX XX XX // SP XX XX XX XX // CurrentLoad XX XX XX XX // MaxLoad 28 00 00 00 XX XX XX XX // ItemObjectID Under XX XX XX XX // ItemObjectID REar XX XX XX XX // ItemObjectID LEar XX XX XX XX // ItemObjectID Neck XX XX XX XX // ItemObjectID RFinger XX XX XX XX // ItemObjectID LFinger XX XX XX XX // ItemObjectID Head XX XX XX XX // ItemObjectID RHand XX XX XX XX // ItemObjectID LHand XX XX XX XX // ItemObjectID Gloves XX XX XX XX // ItemObjectID Chest XX XX XX XX // ItemObjectID Legs XX XX XX XX // ItemObjectID Feet XX XX XX XX // ItemObjectID Back XX XX XX XX // ItemObjectID LRHand XX XX XX XX // ItemObjectID Hair XX XX XX XX // ItemID Under XX XX XX XX // ItemID REar XX XX XX XX // ItemID LEar XX XX XX XX // ItemID Neck XX XX XX XX // ItemID RFinger XX XX XX XX // ItemID LFinger XX XX XX XX // ItemID Head XX XX XX XX // ItemID RHand XX XX XX XX // ItemID LHand XX XX XX XX // ItemID Gloves XX XX XX XX // ItemID Chest XX XX XX XX // ItemID Legs XX XX XX XX // ItemID Feet XX XX XX XX // ItemID Back XX XX XX XX // ItemID LRHand XX XX XX XX // ItemID Hair XX XX XX XX // P.Atk XX XX XX XX // P.Atk Speed XX XX XX XX // P.Def XX XX XX XX // EvasionRate XX XX XX XX // Accuracy XX XX XX XX // CriticalHit XX XX XX XX // M.Atk XX XX XX XX // Casting Speed XX XX XX XX // P.Atk Speed XX XX XX XX // M.Def XX XX XX XX // Чар в режиме PvP? XX XX XX XX // Karma [дальше идет муть, в которой я пока не разобрался] ?? ?? ... ?? ?? !!! этот пакет не доделан!!! Say2 Формат: XX XX // Длина 4A // Тип XX XX XX XX // Object Id того чара, от кого это сообщение XX XX XX XX // Тип сообщения XX XX ... 00 00 // Имя чара, от кого это сообщение (Unicode строка) XX XX ... 00 00 // Само сообщение (Unicode строка) Тип сообщения: 0x00 - General 0x01 - Shout 0x02 - Whisper 0x03 - Party 0x04 - Clan 0x08 - Trade 0x09 - Alliance 0x0A - Announcement Др.названия: CreatureSay NpcInfo !!! этот пакет не доделан!!! Формат: XX XX // Длина 16 // Тип XX XX XX XX // Object Id XX XX XX XX // NpcTypeId (NpcID + 1000000) XX XX XX XX // Можно ли атаковать этого NPC? XX XX XX XX // X XX XX XX XX // Y XX XX XX XX // Z XX XX XX XX // Heading (угол относительно вида сверху, перевод_в_градусы=Heading/65536*360) [дальше идет муть, в которой я пока не разобрался] ?? ?? ... ?? ?? !!! этот пакет не доделан!!! MoveToLocation Формат: 1F 00 // Длина 01 // Тип XX XX XX XX // Object Id XX XX XX XX // DestX XX XX XX XX // DestY XX XX XX XX // DestZ XX XX XX XX // CurX XX XX XX XX // CurY XX XX XX XX // CurZ Замечание: Dest - в какую точку движется объект, Cur - текущее положение объекта Обратите внимание, что клиент сам определяет положение объекта пока тот движется между этими двумя точками. (надеюсь все помнят: Расстояние = Скорость * Время) CharInfo !!! этот пакет не доделан!!! Формат: XX XX // Длина 03 // Тип XX XX XX XX // X XX XX XX XX // Y XX XX XX XX // Z XX XX XX XX // Heading (угол относительно вида сверху, перевод_в_градусы=Heading/65536*360) XX XX XX XX // ObjectID XX XX ... 00 00 // Name (Unicode строка) XX XX XX XX // Race XX XX XX XX // Sex XX XX XX XX // Class ID XX XX XX XX // XX XX XX XX // [дальше идет муть, в которой я пока не разобрался] ?? ?? ... ?? ?? !!! этот пакет не доделан!!! DeleteObject Формат: 0B 00 // Длина 12 // Тип XX XX XX XX // Object Id 00 00 00 00 SpawnItem Формат: 23 00 // Длина 0B // Тип XX XX XX XX // Object ID XX XX XX XX // Item ID XX XX XX XX // X XX XX XX XX // Y XX XX XX XX // Z XX XX XX XX // Stackable XX XX XX XX // Count 00 00 00 00 ItemList Формат: XX XX // Длина 1B // Тип XX XX // ShowWindow (Надо открыть окно инвентаря?) XX XX // ItemCount [начало повторяющегося блока] XX XX // ItemType1 XX XX XX XX // ObjectID XX XX XX XX // ItemID XX XX XX XX // Count XX XX // ItemType2 XX XX // ??? XX XX // isEquipped (1-да, 0-нет) XX XX XX XX // BodyPart (параметр бесполезен - не различает положение R/L бижи) XX XX // EnchantLevel XX XX // ??? [конец повторяющегося блока] ItemType1: 0-Weapon/Earring/Ring/Necklace 1-Helmet/Chest/Legs/Boots/Gloves 2-Shield 4-Item/QuestItem/Adena ItemType2: 0-Weapon 1-Helmet/Chest/Legs/Boots/Gloves/Shield 2-Earring/Ring/Necklace 3-QuestItem 4-Adena 5-Item DropItem Формат: 27 00 // Длина 0C // Тип XX XX XX XX // Object ID того, кто дропнул предмет (игрок/Npc) XX XX XX XX // Object ID предмета XX XX XX XX // Item ID XX XX XX XX // X XX XX XX XX // Y XX XX XX XX // Z XX XX XX XX // Stackable XX XX XX XX // Count 00 00 00 00 PrivateStoreMsgBuy Формат: XX XX // Длина B9 // Тип XX XX XX XX // ObjectID торговца XX XX ... 00 00 // StoreMsg (Unicode строка) Др.названия: PrivateStoreBuyMsg PrivateStoreMsg Формат: XX XX // Длина 9C // Тип XX XX XX XX // ObjectID торговца XX XX ... 00 00 // StoreMsg (Unicode строка) Др.названия: PrivateStoreMsgSell RecipeShopMsg Формат: XX XX // Длина DB // Тип XX XX XX XX // ObjectID торговца XX XX ... 00 00 // StoreMsg (Unicode строка) InventoryUpdate Формат: XX XX // Длина 27 // Тип XX XX // ItemCount [начало повторяющегося блока] XX XX // Update type (1-add, 2-modify, 3-remove) XX XX // ItemType1 XX XX XX XX // ObjectID XX XX XX XX // ItemID XX XX XX XX // Count XX XX // ItemType2 XX XX // ??? XX XX // isEquipped (1-да, 0-нет) XX XX XX XX // BodyPart (параметр бесполезен - не различает положение R/L бижи) XX XX // EnchantLevel XX XX // ??? [конец повторяющегося блока] Замечание: ItemType1, ItemType2 - аналогично ItemList Сервер, на котором проводились исследования: 1) ПТС C4 сервер 2) RSA - нету 3) GG - нету (убит) 4) антиботы - никаких 5) ProtocolVersion=656 6) данные которые идут в пакете ProtocolVersion указанны тут. 7) Protocol=30810 (в пакете Init) Все, что находится в фигурных скобках {} - это те данные, в которых я частично или полностью не уверен! Осторожнее! Copyright (C) 2007 La2Kings (KyberPrizrak) Копирование материала без ссылок на эту страницу, ЗАПРЕЩАЕТСЯ!
  3. package l2j.loginserver.crypt; import java.io.IOException; import l2j.util.Rnd; import l2j.util.crypt.Checksum; import l2j.util.crypt.NewCrypt; public class LoginCrypt { private static final byte[] STATIC_BLOWFISH_KEY = { (byte) 0x6b, (byte) 0x60, (byte) 0xcb, (byte) 0x5b, (byte) 0x82, (byte) 0xce, (byte) 0x90, (byte) 0xb1 // TODO C6 // (byte) 0xcc, // (byte) 0x2b, // (byte) 0x6c, // (byte) 0x55, // (byte) 0x6c, // (byte) 0x6c, // (byte) 0x6c, // (byte) 0x6c }; private NewCrypt staticCrypt; private NewCrypt crypt; private boolean isStatic = false;// TODO true public void setKey(byte[] key) { staticCrypt = new NewCrypt(STATIC_BLOWFISH_KEY); crypt = new NewCrypt(key); } public boolean decrypt(byte[] raw, final int offset, final int size) throws IOException { crypt.decrypt(raw, offset, size); return Checksum.verify(raw, offset, size); } public int encrypt(byte[] raw, final int offset, int size) throws IOException { // reserve checksum size += 4; if (isStatic) { // reserve for XOR "key" size += 4; // padding size += 8 - (size % 8); NewCrypt.encXORPass(raw, offset, size, Rnd.nextInt()); staticCrypt.crypt(raw, offset, size); isStatic = false; } else { // padding size += 8 - (size % 8); Checksum.append(raw, offset, size); crypt.crypt(raw, offset, size); } return size; } } source: [Hidden Content]
  4. Протокол Lineage II Автор: TechnoWiz@rd Последнее редактирование: 23 ноября 2007 Содержание 1. Общие сведения 2. Пакеты Client -> Login Server 3. Пакеты Login Server -> Client 4. Пакеты Game Server -> Client 5. Пакеты Client -> Game Server 1. Общие сведения Каждый пакет состоит из размера пакета(2 байта), типа пакета(1 байт) и блока параметров(переменная длина). В дополнение к этому, в пакетах сервера авторизации, в конце добавляется контрольная сумма и дополняется нулями так, чтобы размер пакета был кратен 8-ми байтам. Контрольная сумма может быть рассчитана следующей функцией: unsigned long checksum( unsigned char *packet, int count ) { long chksum = 0L; for( int i = 0; i < count; i += 4 ) chksum ^= *((unsigned long *)&raw[i]); return chksum; }; Протокол lineage использует 6 разных типов данных: char – может принимать значение от -128 до 127. Имеет длину 1 байт short – может принимать значение от -32768 до 32767. Имеет длину 2 байта int – может принимать значение от -2147483648 до 2147483647. Имеет длину 4 байта int64 – может принимать значение от -9223372036854775808 до 9223372036854775807. Имеет длину 8 байт. float – может принимать значение от 2.22507e-308 до 1.79769e+308. Имеет длину 8 байт string – текстовая строка в юникоде(UTF8). Каждая буква представлена двумя байтами, первый байтом код буквы, а второй – номер кодовой таблицы. Индикатором конца строки служит символ с кодом 0. Примечание: Для тех кто незнаком с принципом хранения данных в памяти ПК уточню, байты идут в обратном порядке. Т.е. если нам нужно записать в пакет число 10 представленное типом int, то мы должны: 1) перевести его в шестнадцатеричную систему счисления – получим 00 00 00 0a 2) обратить порядок байт в слове – получаем 0a 00 00 00 Пакеты сервера авторизации шифруются по алгоритму Blowfish. Стандартный ключ по умолчанию в 4-х хрониках: 5F 3B 35 2E 5D 39 34 2D 33 31 3D 3D 2D 25 78 54 21 5E 5B 24. К концу ключа прибавляется символ с кодом 0. В Interlude тип шифрования был изменен - пакет Init содержит динамический Blowfish ключ случайно генерируемый для каждого клиента. Этот пакет сначала шифруется по алгоритму XOR(ключ генерируется случайным образом и помещается в конце пакета), а потом шифруется по алгоритму Blowfish, статическим ключом. По умолчанию статический ключ - 6B 60 CB 5B 82 CE 90 B1 CC 2B 6C 55 6C 6C 6C 6C. Все последующие пакеты будут шифроваться динамическим Blowfish ключом. Пакет LoginRequest дополнительно шифруется по алгоритму RSA. Ключ состоит из следующих частей: B = 1024, E = 65537, N = передается в пакете Init. Вместе эти 3 части составляют целый RSA ключ. Байты N в пакете зашифрованы функцией: void scrambleMod( char *n ) { typedef unsigned char byte; int i; for( i=0; i<4; i++ ) { byte temp = n[0x00 + i]; n[0x00 + i] = n[0x4d + i]; n[0x4d + i] = temp; }; // step 2 xor first 0x40 bytes with last 0x40 bytes for( i=0; i<0x40; i++ ) { n[i] = (byte)(n[i] ^ n[0x40 + i]); }; // step 3 xor bytes 0x0d-0x10 with bytes 0x34-0x38 for( i=0; i<4; i++ ) { n[0x0d + i] = (byte)(n[0x0d + i] ^ n[0x34 + i]); }; // step 4 xor last 0x40 bytes with first 0x40 bytes for( i=0; i<0x40; i++ ) { n[0x40 + i] = (byte)(n[0x40 + i] ^ n[i]); }; }; Для расшифровки можно воспользоваться следующей функцией: void unscrambleMod( char *n ) { typedef unsigned char byte; int i; // step 4 xor last 0x40 bytes with first 0x40 bytes for( i=0; i<0x40; i++ ) { n[0x40 + i] = (byte)(n[0x40 + i] ^ n[i]); }; // step 3 xor bytes 0x0d-0x10 with bytes 0x34-0x38 for( i=0; i<4; i++ ) { n[0x0d + i] = (byte)(n[0x0d + i] ^ n[0x34 + i]); }; // step 2 xor first 0x40 bytes with last 0x40 bytes for( i=0; i<0x40; i++ ) { n[i] = (byte)(n[i] ^ n[0x40 + i]); }; for( i=0; i<4; i++ ) { byte temp = n[0x00 + i]; n[0x00 + i] = n[0x4d + i]; n[0x4d + i] = temp; }; }; Также есть сервера использующие старый протокол авторизации(ревизия 785a) который не шифрует пакет Init, а остальные шифрует Blowfish ключом длинной 21 байт. При этом пакет LoginRequest шифруется только по алгоритму Blowfish, без дополнительного шифрования RSA. Для шифрования пакетов гейм сервера используется алгоритм XOR. Ключ XOR генерируется случайно и передается клиенту в пакете CryptInit. Функции шифрования и дешифрации приведены ниже: /* Декодирует данные */ void decrypt( unsigned char *data, unsigned int len, unsigned char *Key ) { int temp = 0; for( unsigned int i = 0; i < len; ++i ) { int temp2 = data[i] & 0xff; data[i] = (temp2 ^ (Key[i & 15] & 0xff) ^ temp); temp = temp2; }; int old = Key[8] & 0xff; old |= (Key[9] << 0x08) & 0xff00; old |= (Key[10] << 0x10) & 0xff0000; old |= (Key[11] << 0x18) & 0xff000000; old += len; Key[8] = old &0xff; Key[9] = (old >> 0x08) & 0xff; Key[10] = (old >> 0x10) & 0xff; Key[11] = (old >> 0x18) & 0xff; }; /* Кодирует данные */ void encrypt( unsigned char *data, unsigned int len, unsigned char *Key ) { int temp = 0; for( unsigned int i = 0; i < len; i++) { int temp2 = data[i] & 0xff; data[i] = (temp2 ^ (Key[i & 15] & 0xff) ^ temp); temp = data[i]; }; int old = Key[8] & 0xff; old |= (Key[9] << 0x08) & 0xff00; old |= (Key[10] << 0x10) & 0xff0000; old |= (Key[11] << 0x18) & 0xff000000; old += len; Key[8] = old &0xff; Key[9] = (old >> 0x08) & 0xff; Key[10] = (old >> 0x10) & 0xff; Key[11] = (old >> 0x18) & 0xff; }; С каждым кодированным/декодированным пакетом ключ изменяется на длину пакета, поэтому нужно использовать два отдельных экземпляра ключа – один для шифрования исходящих пакетов, второй для расшифровки входящих. Все пакеты шифруются начиная с 3-го байта, т.е. размер пакета никогда не шифруется. Порядок авторизации на логин сервере Во первых сразу замечу что существует две ревизии протокола использующиеся на данный момент(может и больше но мне о них не известно) - c621 и 785a. Отличие их в том что в c621 используется дополнительное шифрование и авторизация GameGuard. Пакеты Init и RequestAuthLogin также отличаются. Определить версию можно по размеру пакета Init, для ревизии 785a он составляет 11 байт, для c621 – 170. 1. Сразу после установки соединения сервер отправляет клиенту пакет Init 2. В ответ на него клиент отправляет пакет RequestGGAuth(в ревизии протокола 785a этот пакет не высылается) 3. Сервер отвечает на него пакетом GGAuth (в ревизии протокола 785a этот пакет не высылается) 4. Если сервер ответил, что авторизация прошла успешно, то клиент высылает пакет RequestAuthLogin, содержащий логин и пароль. 5. Проверка логина и пароля, в случае неудачи, сервер высылает пакет LoginFail содержащий причину неудачи, инатче высылается пакет LoginOk, содержащий session key #1. 6. Далее клиент запрашивает список серверов пакетом RequestServerList 7. В ответ на этот пакет сервер высылает клиенту ServerList, в нем содержиться список серверов и их IP адреса с номерами портов. 8. После выбора game-сервера, и нажатия на ОК, клиент отсылает пакет RequestServerLogin 9. Сервер авторизации выполняет проверки на максимальное количество игроков, доступность сервера и т.п., если все проверки пройдены, то высылает пакет PlayOk,содержащий session key #2, этот ключь генерируется из текущего времени системы в мс, номера сокета и еще всякой лабуды. После этого клиент отключается от логин сервера и подключается к гейм серверу. Порядок авторизации на гейм сервере 1. После установки соединения, клиент высылает пакет ProtocolVersion, содержащий версию протокола. 2. Сервер высылает пакет CryptInit, содержащий XOR ключ которым будут шифроваться все следующие пакеты. 3. Клиент высылает пакет AuthLogin выбраному серверу, содержащий session key #1, session key #2 и логин. При несовпадении с теми ключами и логином, что храняться на сервере авторизации клиент отключается. 4. Сервер высылает пакет CharList, содержащий список всех чаров на аккаунте. 5. Тут идет процесс создания/удаления и выбора чара, после того как чар выбран и нажата кнопка Start, клиент отправляет пакет CharacterSelected 6. Клиент отправляет 2 пакета - RequestQuestList и RequestExManorList 7. Сервер высылает пакет ExSendManorList 8. Сервер высылает пакет QuestList 9. Клиент отправляет пакет EnterWorld 10. Сервер отправляет пакет UserInfo, который также служит сигналом окончания загрузки. 11. Все мы в игре. Сервер с периодичностью 60 секунд высылает пакет NetPingRequest, на который клиент должен ответить пакетом NetPing В описании пакетов будут встречаться ObjectID и ItemID, ItemID это идентификатор типа предмета, например у авадон робы он 2406. А ObjectID это уникальный идентификатор самого предмета в игре. Например у двух чаров есть авадон роба, ItemID робы у каждого из них будет одинаковый - 2406, тогда как ObjectID будет уникальным. 2. Пакеты от клиетна серверу (Login Server) 00 - RequestAuthLogin 02 - RequestServerLogin 05 - RequestServerList 07 - RequestGGAuth RequestAuthLogin Назначение: запрашивает авторизацию на логин сервере Формат для ревизии 0x785a: 00 XX XX XX XX 00 // строка содержащая логин. Имеет длинну 14 байт и храниться в формате ASCII а не UNICODE !!! XX XX XX XX 00 // строка содержащая пароль. Имеет длинну 16 байт и храниться в формате ASCII а не UNICODE !!! 08 // маркер конца секции логин/пароль 00 00 00 00 // не используется 00 00 00 00 // не используется Формат для ревизии 0xc621: 00 00 00 00 00 ... // Начало массива из 128 байт содержащих логин и пароль, и шифрующихся по алгоритму RSA ... (байты 94-107) // строка содержащая логин. Имеет длинну 14 байт и храниться в формате ASCII а не UNICODE !!! ... (байты 108-124) // строка содержащая пароль. Имеет длинну 16 байт и храниться в формате ASCII а не UNICODE !!! ... 00 00 00 00 // не используется. Конец массива Примичание: Некоторые сервера сверяют логин и пароль как массивы данных а не как строки, т.е. сверяются байты содержащиеся за символом с кодом 0(признаком конца строки) поэтому убедитесь что неиспользуемые байты переменных где храняться логин и пароль содержат нули. RequestServerLogin Назначение: запрашивает подключение к гейм серверу Формат: 02 XX XX XX XX // SessionKey1 первая часть XX XX XX XX // SessionKey1 вторая часть XX // номер сервера RequestServerList Назначение: запрашивает список game серверов Формат: 05 XX XX XX XX // SessionKey1 часть 1 XX XX XX XX // SessionKey1 часть 2 04 00 00 00 // хз RequestGGAuth Назначение: запрашивает Game Guard авторизицию Формат: 07 XX XX XX XX // ID сессии XX XX XX XX // неизвестно XX XX XX XX // неизвестно XX XX XX XX // неизвестно XX XX XX XX // неизвестно 3. Пакеты от сервера клиенту (Login Server) 00 - Init 01 - LoginFail 02 - AccountKicked 03 - LoginOk 04 - ServerList 06 - PlayFail 07 - PlayOk 0B - GGAuth Init Назначение: передает клиенту номер сессии и номер соединения, в случае ревизии c621 передается также модуль RSA ключа, и динамический токен (Используеться в Interlude, но по идее возможно и в более старых версиях хроник) Формат для ревизии протокола 0x785a: 00 XX XX XX XX // ID сессии XX XX XX XX // Версия протокола 0x785a Формат для ревизии протокола 0xc621: 00 XX XX XX XX // ID сессии XX XX XX XX // Версия протокола 0xc621 XX XX XX XX ... // 128 байт публичного ключа, которым в последствии клиент шифрует пакет RequestAuthLogin 29 DD 95 4E // \ 77 C3 9C FC // | хз что 97 AD B6 20 // | 07 BD E0 F7 // / XX XX XX XX ... // 16 байт blowfish ключа которым шифруются все последующие пакеты 00 XX XX XX XX // контрольная сумма пакета Пакет для Interlude содержит дополнительные 4 байта: XX XX XX XX // XOR ключ которым зашифрован пакет LoginFail Назначение: сообщает о неудачной попытке подключения к логин серверу Формат: 01 XX XX XX XX // причина неудачи: // 0x01 - системная ошибка // 0x02 - неправельный пароль // 0x03 - логин или пароль неверен // 0x04 - доступ запрещен // 0x05 - информация на аккаунте неверна(хз, наверно имеется ввиду ошибка в БД) // 0x07 - аккаунт уже используется // 0x09 - аккаунт забанен // 0x10 - на сервере идут сервисные работы // 0x12 - срок действия истек // 0x13 - на аккаунте не осталось больше времени (видимо NCSoft собирается или собиралось заморочить и почасовую оплату :) AccountKicked Назначение: сообщает клиенту, что аккаунт заблокирован Формат: 02 XX XX XX XX // причина неудачи: // 0x01 - data stealer // 0x08 - generic violation // 0x10 - прошло 7 дней (для trial акков ?) // 0x20 - Аккаунт забанен LoginOk Назначение: высылается в подтсверждение на пакет RequestAuthLogin, в случае успешной проверки логина и пароля. Формат: 03 XX XX XX XX // SessionKey1 первая часть XX XX XX XX // SessionKey1 вторая часть 00 00 00 00 00 00 00 00 EA 03 00 00 00 00 00 00 00 00 00 00 02 00 00 00 XX XX XX XX ... // массив из 16 байт, назначение неизвестно ServerList Назначение: передает клиенту список серверов и их состояние Формат: 04 XX // количество серверов в списке 00 // неиспользуется или зарезервировано // Следующий блок повторяется для каждлого сервера в списке XX // ID сервера XX XX XX XX // IP аддрес гейм сервера XX XX XX XX // порт сервера XX // возрастной лимит XX // PVP сервер: 00 - нет, 01 - да XX XX // количество игроков онлайн XX XX // максимальное количество игроков XX // тестовый сервер: 00 - нет, 01 - да // Конец повторяющегося блока PlayFail Назначение: ответ на запрос авторизации на game-сервере Формат: 06 XX XX XX XX // причина отказа // 0x00000003 - Пароль не подходит к аккаунту // 0x00000004 - Access failed. Please try agen later // 0x0000000f - Слишком много пользователей PlayOk Назначение: ответ на запрос авторизации на game-сервере Формат: 07 XX XX XX XX // SessionKey2 первая часть XX XX XX XX // SessionKey2 вторая часть GGAuth Назначение: ответ на запрос GameGuard авторизации Формат: 0B XX XX XX XX // ответ: // 0x0B - Пропустить авторизацию 4. Пакеты от сервера клиенту (Game Server) 00 - CryptInit 01 - MoveToLocation 04 - UserInfo 0E - StatusUpdate 13 - CharList 14 - AuthLoginFail 19 - CharCreateOk 1A - CharCreateFail 23 - CharDeleteOk 24 - CharDeleteFail 25 - ActionFailed 2F - ChangeWaitType 38 - TeleportToLocation 3E - ChangeMoveType 7E - LogoutOK 80 - QuestList D3 - NetPingRequest AF - ServerSocketClose E1 - ChairSit FE:1B - ExSendManorList CryptInit Назначение: передает клиенту ключ шифрования(XOR) Формат: 00 01 // неизветсно XX XX XX XX ... // Массив длинной 16 байт - ключ XOR 01 00 00 00 // неизветсно 01 00 00 00 // неизветсно MoveToLocation Назначение: сообщает клиенту что чар переместился Формат: 01 XX XX XX XX // ID объекта XX XX XX XX // Точка назначения X XX XX XX XX // Точка назначения Y XX XX XX XX // Точка назначения Z XX XX XX XX // Текущее положение X XX XX XX XX // Текущее положение Y XX XX XX XX // Текущее положение Z UserInfo Назначение: сообщает клиенту статы персоонажа Формат: 04 XX XX XX XX // координата x местоположения чара XX XX XX XX // координата y местоположения чара XX XX XX XX // координата z местоположения чара XX XX XX XX // угол поворота головы XX XX XX XX // ObjectID чара XX XX XX XX 00 00 // строка с именем чара XX XX XX XX // идентификатор рассы XX XX XX XX // пол чара 0 - Male 1 - female XX XX XX XX // идентификатор класса XX XX XX XX // уровень XX XX XX XX // Exp XX XX XX XX // STR XX XX XX XX // DEX XX XX XX XX // CON XX XX XX XX // INT XX XX XX XX // WIT XX XX XX XX // MEN XX XX XX XX // Максимальное HP XX XX XX XX // Текущее HP XX XX XX XX // Максимальное MP XX XX XX XX // Текущее MP XX XX XX XX // SP XX XX XX XX // Текущий вес загрузки XX XX XX XX // Максимальный вес загрузки 28 00 00 00 // неизвестно XX XX XX XX // ObjectID Underware XX XX XX XX // ObjectID Rear XX XX XX XX // ObjectID Left rear XX XX XX XX // ObjectID Neckless XX XX XX XX // ObjectID Right ring XX XX XX XX // ObjectID Left ring XX XX XX XX // ObjectID Helmate XX XX XX XX // ObjectID Right hand XX XX XX XX // ObjectID Left hand XX XX XX XX // ObjectID Gloves XX XX XX XX // ObjectID Main armor XX XX XX XX // ObjectID Leggings XX XX XX XX // ObjectID Boots XX XX XX XX // ObjectID Back XX XX XX XX // ObjectID Left right hand XX XX XX XX // ObjectID Hair XX XX XX XX // ObjectID Face XX XX XX XX // ItemID Underware XX XX XX XX // ItemID Rear XX XX XX XX // ItemID Left rear XX XX XX XX // ItemID Neckless XX XX XX XX // ItemID Right ring XX XX XX XX // ItemID Left ring XX XX XX XX // ItemID Helmate XX XX XX XX // ItemID Right hand XX XX XX XX // ItemID Left hand XX XX XX XX // ItemID Gloves XX XX XX XX // ItemID Main armor XX XX XX XX // ItemID Leggings XX XX XX XX // ItemID Boots XX XX XX XX // ItemID Back XX XX XX XX // ItemID Left right hand XX XX XX XX // ItemID Hair XX XX XX XX // ItemID Face ... // массив из 136 нулей, назначение неизвестно XX XX XX XX // PAtk XX XX XX XX // PAtk speed XX XX XX XX // PDef XX XX XX XX // Evasion XX XX XX XX // Accuracy XX XX XX XX // Critical XX XX XX XX // MAtk XX XX XX XX // CastSpeed XX XX XX XX // Atk speed (?) XX XX XX XX // MDef XX XX XX XX // Состояние ПВП (0=нефлагнутый 1=флагнутый) XX XX XX XX // Карма XX XX XX XX // скорость бега XX XX XX XX // скорость шага XX XX XX XX // скорость плаванья с включеным режимом бега XX XX XX XX // скорость плаванья с включеным режимом ходьбы XX XX XX XX // _flRunSpd XX XX XX XX // _flWalkSpd XX XX XX XX // Скорость полета с включеным режимом бега XX XX XX XX // Скорость полета с включеным режимом ходьбы XX XX XX XX XX XX XX XX // Move x (тип float) XX XX XX XX XX XX XX XX // Atk speed x (тип float) XX XX XX XX XX XX XX XX // Радиус чара - по этой величине сервер проверяет столкнивение с другими объектами (тип float) XX XX XX XX XX XX XX XX // Высота чара - по этой величине сервер проверяет столкнивение с другими объектами (тип float) XX XX XX XX // Стиль прически XX XX XX XX // Цвет волос XX XX XX XX // Тип лица XX XX XX XX // уровень доступа (0 - обычный чар, 1 и выше - ГМ) XX XX XX XX 00 00 // строка с титулом чара XX XX XX XX // идентификатор клана XX XX XX XX // идентификатор значка клана XX XX XX XX // идентификатор альянса XX XX XX XX // идентификатор значка альянса XX XX XX XX // флаги осады XX XX XX XX // 0=нет 1=на страйдере 2=на виверне XX XX XX XX // тип магазина(Private Store Type) XX XX XX XX // может ли чар крафтить вещи ? (0=нет, 1=да) XX XX XX XX // Количество PK XX XX XX XX // Количество PVP XX XX // Количество зассамоненых кубиков // Данный блок повторяется в зафисимости от количества кубиков XX XX // ID кубика // конец повторяющегося блока XX // 1-find party members? XX XX XX XX // Набор флагов состояния персоонажа(Abnormal effect) 00 // XX XX XX XX // Клановые привилегии XX XX // Количество оставшихся рекомендаций XX XX // Количество очков рекомендаций у персоонажа 00 00 00 00 // XX XX XX XX // Размер инвентаря(максимальное кол-во предметов) XX XX XX XX // ID класса персоонажа XX XX XX XX // Эффект вокруг игрока (Effect arround player) XX XX XX XX // Максимальное CP XX XX XX XX // CP XX // Уровень заточки XX // Круг указывающий на команду, вокруг игрока (0=нету, 1=синий, 1=красный) XX XX XX XX // ID большой иконки клана(используется на клановых щитах) XX // Нублес ? XX // Геройство ? XX // Рыбачим ? XX XX XX XX // Fish x XX XX XX XX // Fish y XX XX XX XX // Fish z XX XX XX XX // Цвет имени в формате RGB(0x00RRGGBB, где R-уровень красного, G-зеленого, а B-синего цвета) XX // Бег включен ? XX XX XX XX // Clan class 00 00 00 00 // XX XX XX XX // Цвет титула в формате RGB(0x00RRGGBB, где R-уровень красного, G-зеленого, а B-синего цвета) XX XX XX XX // Уровень проклятого оружия StatusUpdate Назначение: сообщает клиенту об изменении статов объекта Формат: 0E XX XX XX XX // ID объекта у которого изменились статы XX XX XX XX // количество статов в списке // Следующий блок повторяется столько раз, сколько статов в списке XX XX XX XX // идентификатор стата, может принимать следующие значения: // 0x00000001 - Уровень // 0x00000002 - Exp // 0x00000003 - STR // 0x00000004 - DEX // 0x00000005 - CON // 0x00000006 - INT // 0x00000007 - WIT // 0x00000008 - MEN // 0x00000009 - Текущее HP // 0x0000000a - Максимальное HP // 0x0000000b - Текущее MP // 0x0000000c - Максимальное MP // 0x0000000d - SP // 0x0000000e - Текущий уровень переносимого веса // 0x0000000f - Максимальный уровень переносимого веса // 0x00000010 - ? // 0x00000011 - PAtk // 0x00000012 - Patk Speed // 0x00000013 - PDef // 0x00000014 - Evasion // 0x00000015 - Accuracy // 0x00000016 - Critical // 0x00000017 - MAtk // 0x00000018 - Cast speed // 0x00000019 - MDef // 0x0000001a - Флаг PVP // 0x0000001b - Карма // 0x00000021 - Текущее CP // 0x00000022 - Максимальное CP XX XX XX XX // Новое значение стата // конец повторяющегося блока Прмичание: Чтобы клиент обновил статы, нужно отправить как минимум 2 параметра(проверялось на клиенте Interlude) AuthLoginFail Назначение: сообщает клиенту game-сервер отверг запрос на подключение Формат: 14 // и/или 12 ??? XX XX XX XX // Причина: // 0x00 - Текста нет // 0x01 - Системная ошибка // 0x02 - Пароль не соответствует аккаунту (причем тут тут game server ??? ему пароль даже не высылается Oo) // 0x03 - Пароль не соответствует аккаунту (опять 25, корейцы млин) // 0x04 - Попытка доступа неудачна, попробуйте позже. // 0x05 - Неверный аккаунт, свяжитесь с службой поддержки // 0x06 - Попытка доступа неудачна, попробуйте позже.(что-то у них многовато кодов на одну ошибку) // 0x07 - Аккаунт уже используется(это вроде тоже логин сервер проверять должен) // 0x08 - Попытка доступа неудачна, попробуйте позже. // 0x09 - Попытка доступа неудачна, попробуйте позже. // 0x10 - Попытка доступа неудачна, попробуйте позже. CharList Назначение: содержит список всех чаров на аккаунте Формат: 13 XX XX XX XX // Количество чаров на аккаунте // <<<<< Следующий блок повторяется столько раз, сколько чаров на акке. XX XX XX XX 00 00 // строка содержащее ник чара XX XX XX XX // ID чара XX XX XX XX 00 00 // строка с логином XX XX XX XX // ID чара XX XX XX XX // SessionID XX XX XX XX // ID клана 00 00 00 00 // неизвестно XX XX XX XX // пол (0x00 - мужчина, 0х01 - женщина XX XX XX XX // расса XX XX XX XX // класс XX XX XX XX // активный.(?) XX XX XX XX // X - не используется XX XX XX XX // Y - не используется XX XX XX XX // Z - не используется XX XX XX XX XX XX XX XX // текущее HP (число храниться в формате double) XX XX XX XX XX XX XX XX // текущее МP (число храниться в формате double) XX XX XX XX // SP XX XX XX XX XX XX XX XX // EXP (тип __int64) XX XX XX XX // уровень XX XX XX XX // карма XX XX XX XX ... // массив из 36 нулей, назначение неизвестно XX XX XX XX // ItemObjectID Under XX XX XX XX // ItemObjectID REar XX XX XX XX // ItemObjectID LEar XX XX XX XX // ItemObjectID Neck XX XX XX XX // ItemObjectID RFinger XX XX XX XX // ItemObjectID LFinger XX XX XX XX // ItemObjectID Head XX XX XX XX // ItemObjectID RHand XX XX XX XX // ItemObjectID LHand XX XX XX XX // ItemObjectID Gloves XX XX XX XX // ItemObjectID Chest XX XX XX XX // ItemObjectID Legs XX XX XX XX // ItemObjectID Feet XX XX XX XX // ItemObjectID Back XX XX XX XX // ItemObjectID LRHand XX XX XX XX // ItemObjectID Hair XX XX XX XX // ItemID Under XX XX XX XX // ItemID REar XX XX XX XX // ItemID LEar XX XX XX XX // ItemID Neck XX XX XX XX // ItemID RFinger XX XX XX XX // ItemID LFinger XX XX XX XX // ItemID Head XX XX XX XX // ItemID RHand XX XX XX XX // ItemID LHand XX XX XX XX // ItemID Gloves XX XX XX XX // ItemID Chest XX XX XX XX // ItemID Legs XX XX XX XX // ItemID Feet XX XX XX XX // ItemID Back XX XX XX XX // ItemID LRHand XX XX XX XX // ItemID Hair XX XX XX XX // прическа XX XX XX XX // цвет волос XX XX XX XX // тип лица XX XX XX XX XX XX XX XX // максимальное HP (число храниться в формате double) XX XX XX XX XX XX XX XX // максимальное МP (число храниться в формате double) XX XX XX XX // время до удаления чара в секундах. Если 0, то чар не поставлен на удаление XX XX XX XX // ID класса(базового ?) XX XX XX XX // используется клиентом для определения чара которым последний раз заходили, у него тут 1, у остальных - 0 XX // уровень заточки пушки XX XX XX XX // augmentation id CharCreateOk Назначение: сообщает клиенту что создание чара успешно завершено Формат: 19 01 CharCreateFail Назначение: сообщает клиенту что попытка создания чара завершилась неудачей Формат: 1A XX XX XX XX // Причина: // Creation Failed // Слишком много чаров на акке // Имя чара уже существует // Имя слишком длинное или содержит запрещенные символы CharDeleteOk Назначение: сообщает клиенту что удаление чара прошло успешно Формат: 23 CharDeleteFail Назначение: сообщает клиенту что удаление чара завершилось неудачей Формат: 24 ActionFailed Назначение: уведомляет клиента что его последний запрос не может быть удовлетворен Формат: 25 ChangeWaitType Назначение: сообщает клиенту что чар изменил wait тип(незнаю как это лучше на русский перевести :-/ Короче по параметрам понятоно что это такое) Формат: 2F XX XX XX XX // ID чара XX XX XX XX // wait тип: // 00 - сидеть // 01 - стоять // 02 - fake death // 03 - отменить fake death XX XX XX XX // X XX XX XX XX // Y XX XX XX XX // Z TeleportToLocation Назначение: сообщает клиенту что чар телепортировался Формат: 38 XX XX XX XX // ID чара XX XX XX XX // X XX XX XX XX // Y XX XX XX XX // Z ChangeMoveType Назначение: сообщает клиенту что чар изменил тип перемещения Формат: 3E XX XX XX XX // ID чара XX XX XX XX // 00 - хотьба, 01 - бег 00 00 00 00 // C2 LogoutOK Назначение: сообщает клиенту что разрешение покинуть игру дано. Служит ответом на пакет клиента Logout Формат: 7E QuestList Назначение: сообщает клиенту список квестов и квестовых предметов Формат: 80 XX XX // Количество квестов // Этот блок повторяется столько раз, сколько взятых квестов у чара XX XX XX XX // ID квеста 00 00 00 00 // число показывающее стадию выполнения, на которой находится квест // конец повторяющегося блока XX XX // Количество квестовых предметов // Этот блок повторяется столько раз, сколько квестовых предметов у чара XX XX XX XX // ItemID предмета XX XX XX XX // ObjectID предмета XX XX XX XX // Количество предметов этого типа 05 00 00 00 // неизвестно // конец повторяющегося блока ServerSocketClose Назначение: сообщает клиенту что сервер закрывает подключение Формат: AF 00 00 00 00 // NetPingRequest Назначение: пингует клиента. Примерно раз в минуту, если клиент не ответил на этот пакет, пакетом NetPing, клиент отключаеться. Формат: D3 XX XX XX XX // идентификатор пинга. Вроде как генерируется случайно ChairSit Назначение: сообщает клиенту что чар сел Формат: E1 XX XX XX XX // ID объекта XX XX XX XX // Static object ID ExSendManorList Назначение: сообщает клиенту зоны манора Формат: FE 1B 00 XX XX XX XX // Количество зон манора // Следующий блок повторяется столько раз, сколько зон манора XX XX XX XX // ID зоны манора XX XX XX XX 00 00 // Строка содержащая название зоны манора // конец повторяющегося блока 5. Пакеты от клиетна серверу (Game Server) 00 - ProtocolVersion 01 - MoveBackwardToLocation 02 - Say 03 - EnterWorld 04 - Action 08 - AuthRequest 09 - Logout 0A - AttackRequest 0B - CharacterCreate 0C - CharacterDelete 0D - CharacterSelected 0F - RequestItemList 11 - RequestUnEquipItem 12 - RequestDropItem 14 - UseItem 15 - TradeRequest 16 - AddTradeItem 17 - TradeDone 1B - RequestSocialAction 1C - ChangeMoveType // устарел. Теперь юзается 'RequestActionUse' 1D - ChangeWaitType // устарел. Теперь юзается 'RequestActionUse' 1E - RequestSellItem 1F - RequestBuyItem 21 - RequestBypassToServer 24 - RequestJoinPledge 25 - RequestAnswerJoinPledge 26 - RequestWithdrawalPledge 27 - RequestOustPledgeMember 29 - RequestJoinParty 2A - RequestAnswerJoinParty 2B - RequestWithDrawalParty 2C - RequestOustPartyMember 2F - RequestMagicSkillUse 30 - Appearing 33 - RequestShortCutReg 35 - RequestShortCutDel 37 - RequestTargetCanceld 38 - Say2 3С - RequestPledgeMemberList 3F - RequestSkillList 40 - AnswerTradeRequest 45 - RequestActionUse 46 - RequestRestart 48 - ValidatePosition 4A - StartRotating 4B - FinishRotating 4D - RequestStartPledgeWar 4F - RequestStopPledgeWar 55 - RequestGiveNickName 58 - RequestEnchantItem 59 - RequestDestroyItem 5E - RequestFriendInvite 5F - RequestAnswerFriendInvite 60 - RequestFriendList 61 - RequestFriendDel 62 - CharacterRestore 63 - RequestQuestList 64 - RequestQuestAbort 66 - RequestPledgeInfo 68 - RequestPledgeCrest 6A - RequestRide 6B - RequestAquireSkillInfo 6C - RequestAquireSkill 6D - RequestRestartPoint 6E - RequestGMCommand 6F - RequestPartyMatchConfig 70 - RequestPartyMatchList 71 - RequestPartyMatchDetail 72 - RequestCrystallizeItem 77 - SetPrivateStoreMsgSell 81 - RequestGmList 82 - RequestJoinAlly 83 - RequestAnswerJoinAlly 84 - AllyLeave 85 - AllyDismiss 88 - RequestAllyCrest 89 - RequestChangePetName 8A - RequestPetUseItem 8B - RequestGiveItemToPet 8C - RequestGetItemFromPet 8E - RequestAllyInfo 8F - RequestPetGetItem 94 - SetPrivateStoreMsgBuy 98 - RequestStartAllianceWar 9А - RequestStopAllianceWar A0 - RequestBlock A2 - RequestSiegeAttackerList A4 - RequestJoinSiege A8 - NetPing AС - RequestRecipeBookOpen B9 - RequestEvaluate BA - RequestHennaList BB - RequestHennaItemInfo BС - RequestHennaEquip C1 - RequestMakeMacro C2 - RequestDeleteMacro CF - RequestAutoSoulShot D0:06 - RequestExEnchantSkillInfo D0:07 - RequestExEnchantSkill D0:08 - RequestExManorList D0:10 - RequestExPledgeCrestLarge D0:11 - RequestExSetPledgeCrestLarge EE - RequestChangePartyLeader ProtocolVersion Назначение: передает версию протокола используемого клиентом серверу Формат: 00 XX XX XX XX // Версия протокола MoveBackwardToLocation Назначение: запрос на перемещение чара Формат: 01 XX XX XX XX // Координата X точки назначения XX XX XX XX // Координата Y точки назначения XX XX XX XX // Координата Z точки назначения XX XX XX XX // Координата X текущего положения чара XX XX XX XX // Координата Y текущего положения чара XX XX XX XX // Координата Z текущего положения чара XX XX XX XX // 00 - для движения используеться клавиатура, 01 - для движения используется мышь Say Назначение: отправляет сообщение другим игрокам Формат: 02 XX XX XX XX 00 00 // Cтрока сообщения XX XX XX XX // Тип сообщение // 0x00 - ALL // 0x01 - SHOUT ( ! ) // 0x02 - TELL ( " ) // 0x03 - PARTY ( # ) // 0x04 - CLAN ( @ ) // 0x05 - GM // 0x06 - PETITION_PLAYER // 0x07 - PETITION_GM // 0x08 - TRADE ( + ) // 0x09 - ALLIANCE ( $ ) // 0x0A - ANNOUNCEMENT // 0x0F - PARTYROOM_ALL ( желтый ) // 0x10 - PARTYROOM_COMMANDER ( синий ) // 0x11 - Голос героя XX XX XX XX 00 00 // Для приватных сообщений. Содержит ник чара которому предназначено сообщение. EnterWorld Назначение: пакет, который отсылается клиентом когда клиент закончил загрузку мира Формат: 03 Action Назначение: пакет, который отсылается клиентом при клике мышью по НПЦ или другому чару Формат: 04 XX XX XX XX // ID объекта XX XX XX XX // Координата X положения чара XX XX XX XX // Координата Y положения чара XX XX XX XX // Координата Z положения чара XX // 00 - просто клик, 01 - клик с зажатым шифтом AuthRequest Назначение: запрос авторизации на game сервере Формат: 08 XX XX XX XX // SessionKey2 часть 2(дается логин сервером) XX XX XX XX // SessionKey2 часть 1(дается логин сервером) XX XX XX XX // SessionKey1 часть 2(дается логин сервером) XX XX XX XX // SessionKey1 часть 1(дается логин сервером) Logout Назначение: запрашивает у сервера разрешение на выход из игры Формат: 09 AttackRequest Назначение: запрос на атаку Формат: 0A XX XX XX XX // ID того, кого собираемся атаковать XX XX XX XX // X координата позиции чара XX XX XX XX // Y координата позиции чара XX XX XX XX // Z координата позиции чара XX XX XX XX // 0 - Ctrl не нажат, 1 - Ctrl нажат CharacterCreate Назначение: запрос на создание чара Формат: 0B XX XX XX XX 00 00 // Строка с именем чара XX XX XX XX // Расса XX XX XX XX // Пол XX XX XX XX // Класс XX XX XX XX // INT XX XX XX XX // STR XX XX XX XX // CON XX XX XX XX // MEN XX XX XX XX // DEX XX XX XX XX // WIT XX XX XX XX // Стиль волос XX XX XX XX // Цвет волос XX XX XX XX // Тип лица CharacterDelete Назначение: ставит чара на удаление Формат: 0C XX XX XX XX // Номер слота с чаром CharacterSelected Назначение: выбирает чара. Отсылается при клике на чара в меню выбора чара. Формат: 0D XX XX XX XX // Номер слота с чаром RequestItemList Назначение: запросить список вещей находящихся в инвентаре.(клиент открывает инвентарь, когда сервер высылает этот список) Формат: 0F RequestUnEquipItem Назначение: Снимает эквип с чара Формат: 11 XX XX XX XX // Номер слота RequestDropItem Назначение: запрос за дроп итема. Отправляется клиентом, при попытке выбросить из инвентаря какую-либо вещь Формат: 12 XX XX XX XX // ID итема который хотим выбросить XX XX XX XX // количество итемов которое мы хотим выбросить XX XX XX XX // X кордината места в которое выбрасываем итем XX XX XX XX // Y кордината места в которое выбрасываем итем XX XX XX XX // Z кордината места в которое выбрасываем итем UseItem Назначение: запрос на использование итема Формат: 14 XX XX XX XX // ID объекта TradeRequest Назначение: запрос торговлю. Формат: 15 XX XX XX XX // ID объекта с которым хотим торговать AddTradeItem Назначение: добавляет итем в трейд лист. Формат: 16 XX XX XX XX // ID трейда XX XX XX XX // ID объекта XX XX XX XX // количество TradeDone Назначение: запрос на завершение торговли. Формат: 17 XX XX XX XX // 0 - отменить сделку, 1 - подтвердить сделку RequestSocialAction Назначение: вызывает анимацию социальных действий вроде смеха и т.п. Формат: 1B XX XX XX XX // Номер экшина // 0x02 - Greeting // 0x03 - Victory // 0x04 - Advance // 0x05 - No // 0x06 - Yes // 0x07 - Bow // 0x08 - Unaware // 0x09 - Social Waiting // 0x0A - Laugh // 0x0B - Applaud // 0x0C - Dance // 0x0D - Sorrow // 0x0F - Анимация как при lvl-up // 0x10 - Анимация героев ChangeMoveType Назначение: включает/выключает бег Формат: 1C XX XX XX XX // 0 - бег выключен, 1 - бег включен ChangeWaitType Назначение: сесть/встать Формат: 1D XX XX XX XX // 0 - сесть, 1 - встать RequestTargetCanceld Назначение: Отменяет таргет Формат: 1D RequestSellItem Назначение: Запрос на продажу вещей Формат: 1E XX XX XX XX // ID списка покупок (list id) XX XX XX XX // количество вещей которые нужно продать // <<< Блок повторяется столько раз, сколько разных вещей нужно купить XX XX XX XX // ObjectID предмета который нужно продать XX XX XX XX // ItemID предмета который нужно продать XX XX XX XX // количество предметов которые нужно продать // конец повторяющегося блока RequestBuyItem Назначение: Запрос на покупку вещей Формат: 1F XX XX XX XX // ID сиска покупок XX XX XX XX // количество вещей которые нужно купить // <<< Блок повторяется столько раз, сколько разных вещей нужно купить XX XX XX XX // ID предмета который нужно купить XX XX XX XX // количество предметов которые нужно купить ... RequestBypassToServer Назначение: передает "bypass"(содержаться в HTML) команду серверу. Формат: 21 XX XX XX XX 00 00 // строка с коммандой RequestJoinPledge Назначение: отправляет чару предложение вступить в клан. Формат: 24 XX XX XX XX // ID чара, которому высылается предложение RequestAnswerJoinPledge Назначение: ответ на предложение о вступлении в клан Формат: 25 XX XX XX XX // ответ: 00 - нет, 01 - да RequestWithdrawalPledge Назначение: выйти из клана Формат: 26 RequestOustPledgeMember Назначение: удалить чара из клана Формат: 27 XX XX XX XX 00 00 // строка с именем чара RequestJoinParty Назначение: предложить вступить в пати Формат: 29 XX XX XX XX 00 00 // ник чара, которому отсылается предложение XX XX XX XX // тип распределения предметов: // 0x00 - дроп получает подобравший его чар, споил - достается спойлеру // 0x01 - дроп распределяется случайным образом, споил - достается спойлеру // 0x02 - дроп и споил, распределяется случайным образом // 0x03 - дроп дается чарам по очереди, споил - достается спойлеру // 0x04 - дроп и споил, дается чарам по очереди RequestAnswerJoinParty Назначение: ответ на предложение вступить в пати Формат: 2A XX XX XX XX // ответ: 00 - нет, 01 - да RequestWithDrawalParty Назначение: выйти из пати Формат: 2B RequestOustPartyMember Назначение: удалить чара из пати Формат: 2C XX XX XX XX 00 00 // строка с именем чара которого следует удалить RequestMagicSkillUse Назначение: использовать магический скилл Формат: 2F XX XX XX XX // ID скилла XX XX XX XX // состояние CTRL : 00 - отпущен, 01 - нажат XX XX XX XX // состояние SHIFT: 00 - отпущен, 01 - нажат Appearing Назначение: Запрашивает возрождение чара после смерти. Вызывается после пакетов RequestRestartPoint и ValidatePosition Формат: 30 RequestShortCutReg Назначение: Регестрирует ярлык на панеле быстрого доступа. Формат: 33 XX XX XX XX // Тип ярлыка // 0x01 - итем // 0x02 - скилл // 0x03 - действие // 0x04 - макрос XX XX XX XX // идентификатор объекта выносимого на панель XX XX XX XX // номер слота XX XX XX XX // номер закладки XX XX XX XX // неизвестно RequestShortCutDel Назначение: Удаляет ярлык с панели быстрого доступа. Формат: 35 XX XX XX XX // номер слота XX XX XX XX // номер закладки Say2 Назначение: отправляет сообщение другим игрокам Формат: 38 XX XX XX XX 00 00 // Cтрока сообщения XX XX XX XX // Тип сообщение // 0x00 - ALL // 0x01 - SHOUT ( ! ) // 0x02 - TELL ( " ) // 0x03 - PARTY ( # ) // 0x04 - CLAN ( @ ) // 0x05 - GM // 0x06 - PETITION_PLAYER // 0x07 - PETITION_GM // 0x08 - TRADE ( + ) // 0x09 - ALLIANCE ( $ ) // 0x0A - ANNOUNCEMENT // 0x0F - PARTYROOM_ALL ( желтый ) // 0x10 - PARTYROOM_COMMANDER ( синий ) // 0x11 - Голос героя XX XX XX XX 00 00 // Для приватных сообщений. Содержит ник чара которому предназначено сообщение. RequestPledgeMemberList Назначение: запросить список членов клана Формат: 3C RequestSkillList Назначение: запрашивает список изученных скилов Формат: 3F AnswerTradeRequest Назначение: ответ на трейд Формат: 40 XX XX XX XX // Ответ на трейд: 00 - отклонить, 01 - подтвердить RequestActionUse Назначение: выполняет действие Формат: 45 XX XX XX XX // Action ID (список не полный, экшинов там дофига) // 0x00 - Сесть/встать // 0x01 - Идти/бежать // 0x19 - Ансаммонить пета // 0x33 - General manufacture // 0x38 - Зазезть/слезть с страйдера (вирна ???) XX XX XX XX // 00 - CTRL не нажат, 01 - CTRL нажат XX // 01 - SHIFT не нажат, 01 - SHIFT нажат RequestRestart Назначение: возвращает в меню выбора чара Формат: 46 ValidatePosition Назначение: вызывает перезагрузку данных, НПЦ, других игроков и прочее. Фактически вызывает телепортацию в текущие координаты игрока. Формат: 48 XX XX XX XX // X XX XX XX XX // Y XX XX XX XX // Z XX XX XX XX // Направление взгляда XX XX XX XX // ??? StartRotating Назначение: Включает вращение чара вокруг своей оси Формат: 4A XX XX XX XX // Угол (принимает значения от 0 до 65535) XX XX XX XX // сторона ( 01 00 00 00 - вращение вправо, FF FF FF FF - вращение влево ) FinishRotating Назначение: прекращает вращение чара вокруг своей оси Формат: 4B XX XX XX XX // Неизвестно XX XX XX XX // Неизвестно RequestStartPledgeWar Назначение: начать кланвар Формат: 4D XX XX XX XX 00 00 // строка с названием клана, которому объявляется кланвар RequestStartPledgeWar Назначение: закончить клан вар Формат: 4F XX XX XX XX 00 00 // строка с названием клана RequestGiveNickName Назначение: устанавить титул. Формат: 55 XX XX XX XX 00 00 // строка содержащая ник чара которому требуется установить титул XX XX XX XX 00 00 // строка содержащая титул RequestEnchantItem Назначение: запрашивает энчат интема. Формат: 58 XX XX XX XX // ID итема который хотим заэнчатить RequestDestroyItem Назначение: запрос на уничтожение итема Формат: 59 XX XX XX XX // ID итема XX XX XX XX // количество итемов? RequestFriendInvite Назначение: занести чара в френд лист Формат: 5E XX XX XX XX 00 00 // строка с именем чара, которого следует добавить RequestAnswerFriendInvite Назначение: ответ на предложение добавления в список друзей Формат: 5F XX XX XX XX // 00 - нет, 01 - да RequestFriendList Назначение: запрос френдлиста Формат: 60 RequestFriendDel Назначение: запрос на удаление чара из френд листа Формат: 61 XX XX XX XX 00 00 // строка с именем чара, которого следует удалить CharacterRestore Назначение: отменяет удаление чара Формат: 62 XX XX XX XX // номер слота с чаром RequestQuestList Назначение: запросить список квестов Формат: 63 RequestQuestAbort Назначение: прервать выполнение квеста Формат: 64 XX XX XX XX // ID квеста CharacterRestore Назначение: запрос информации о клане Формат: 66 XX XX XX XX // ID клана RequestPledgeCrest Назначение: устанавливает иконку клана Формат: 68 XX XX XX XX // ID иконки RequestRide Назначение: залезть/слезть на страйдера/вирна Формат: 6A XX XX XX XX // 0 - слезть, 1 - залезть XX XX XX XX // 1 - страйдер, 2 - вивирен RequestAquireSkillInfo Назначение: запрос информации о скилле Формат: 6B XX XX XX XX // ID скилла XX XX XX XX // уровень скилла RequestAquireSkill Назначение: запрос на изучение скилла Формат: 6C XX XX XX XX // ID скилла XX XX XX XX // уровень скилла RequestRestartPoint Назначение: запрашивает рестарт после смерти чара Формат: 6D XX XX XX XX // точка в которую будет возвращен игрок // 0x00 - Город // 0x01 - Клан холл // 0x02 - Замок // 0x03 - Флаг (при осаде замка) // 0x04 - Ресс на месте на котором умер игрок, используется на фестивале RequestGMCommand Назначение: отсылает запрос на GM комманду Формат: 6E XX XX XX XX 00 00 // строка с именем чара - цели XX XX XX XX // идентификатор комманды // 0x01 - статус игрока // 0x02 - клан игрока // 0x03 - скилы игрока // 0x04 - квесты игрока // 0x05 - инвентарь игрока // 0x06 - вархаус игрока XX XX XX XX // неизвестно RequestPartyMatchConfig Назначение: открыть окно поиска пати Формат: 6F XX XX XX XX // автомтическая регистрация: 00 - нет, 01 - да XX XX XX XX // показывать уровень: 00 - нет, 01 - да XX XX XX XX // показывать класс: 00 - нет, 01 - да RequestPartyMatchList Назначение: запросить список чаров ищущих пати Формат: 70 XX XX XX XX // статус может быть 1 и 3. Что значит наверняка, я не знаю. RequestPartyMatchDetail Назначение: запросить подробную информуцию о чаре ищущем пати Формат: 71 XX XX XX XX // ID чара RequestCrystallizeItem Назначение: запрос на кристализацию итема Формат: 72 XX XX XX XX // ID итема который нужно кристализовать XX XX XX XX // количество итемов, которые нужно кристализовать SetPrivateStoreMsgSell Назначение: устанавливает сообщение на продажу для PrivateStore Формат: 77 XX XX XX XX 00 00 // строка с сообщением RequestGmList Назначение: запрос списка GMов Формат: 81 RequestJoinAlly Назначение: предложить вступить в альянс Формат: 82 XX XX XX XX // ID лидера клана, который преглашается в алли RequestAnswerJoinAlly Назначение: ответ на предложение вступления в альянс Формат: 83 XX XX XX XX // ответ: 00 - нет, 01 - да AllyLeave Назначение: покинуть альянс Формат: 84 XX XX XX XX 00 00 // строка с названием клана AllyDismiss Назначение: запрос на роспуск альянса Формат: 85 XX XX XX XX 00 00 // строка с именем клана RequestAllyCrest Назначение: запрос на установку иконки альянса Формат: 88 XX XX XX XX // ID иконки RequestChangePetName Назначение: меняет имя пета Формат: 89 XX XX XX XX 00 00 // строка с новым именем пита RequestPetUseItem Назначение: команда питу использовать итем Формат: 8A XX XX XX XX // ID объекта которых нужно использовать RequestGiveItemToPet Назначение: переместить итем из своего инвентаря в инвентарь пита Формат: 8B XX XX XX XX // ID итема XX XX XX XX // количество RequestGetItemFromPet Назначение: переместить итем из инвентаря пита к себе в инвентарь Формат: 8С XX XX XX XX // ID итема XX XX XX XX // количество XX XX XX XX // фиг его знает. В большинстве случаев - 0 RequestAllyInfo Назначение: запрос информации об альянсе. Формат: 8E RequestPetGetItem Назначение: команда питу поднять итем. Формат: 8F XX XX XX XX // ID который надлежит поднять SetPrivateStoreMsgBuy Назначение: устанавливает сообщение на покупку для PrivateStore Формат: 94 XX XX XX XX 00 00 // строка с сообщением RequestStartAllianceWar Назначение: объявить алли вар Формат: 98 XX XX XX XX 00 00 // строка с именем альянса RequestStopAllianceWar Назначение: запрос о прекращении алли вар'а Формат: 9A XX XX XX XX 00 00 // строка с именем альянса RequestBlock Назначение: запрос операции над черным списком Формат: A0 XX XX XX XX // тип запроса: // 0x00 - добавить чара в игнор // 0x01 - удалить чара из игнора // 0x02 - вывесли список чаров занесенных в игнор // 0x03 - игнор всех // 0x04 - отменить игнор всех XX XX XX XX 00 00 // строка с именем чара которого надо занести в игнор RequestSiegeAttackerList Назначение: запрашивает список записаных на осаду замка атакующих кланов Формат: A2 XX XX XX XX // ID замка RequestJoinSiege Назначение: добавить/удалить клан в список осады замка Формат: A4 XX XX XX XX // ID замка XX XX XX XX // 00 - присоедениться к защитникам, 01 - присоедениться к атакующим XX XX XX XX // 00 - удалить клан из списка, 01 - добавить клан в список RequestRecipeBookOpen Назначение: открыть книгу рецептов Формат: AС NetPing Назначение: Отвечает на пакет сервера RequestNetPing Формат: A8 XX XX XX XX // Это число берется из пакета RequestNetPing, отправляемого сервером XX XX XX XX // Пинг RequestRecipeBookOpen Назначение: открыть книгу рецептов Формат: AС RequestEvaluate Назначение: запрос на рекомендацию игрока Формат: B9 XX XX XX XX // ID цели RequestHennaList Назначение: запросить список доступных татуировок Формат: BA XX XX XX XX // неизвестно RequestHennaItemInfo Назначение: получить информацию о татуировке Формат: BB XX XX XX XX // ID татуировки RequestHennaEquip Назначение: запрос на нанесение татуировки Формат: BС XX XX XX XX // ID татуировки которую нужно нанести RequestMakeMacro Назначение: запрос на создание макроса Формат: С1 XX XX XX XX // ID макроса XX XX XX XX 00 00 // строка содержащая имя макроса XX XX XX XX 00 00 // строка с описанием макроса XX XX XX XX 00 00 // строка с текстом на иконке XX // ID иконки XX // количество строк // <<<<< Следующий блок повторяется столько раз, сколько строк в макросе. XX // строка XX // тип XX // ID скилла XX // ID ярлыка на панели XX XX XX XX 00 00 // имя комманды // конец повторяющегося блока RequestDeleteMacro Назначение: запрос на удаление макроса Формат: C2 XX XX XX XX // ID макроса RequestAutoSoulShot Назначение: включает/выключает использование AutoSS Формат: CF XX XX XX XX // идентификатор итема XX XX XX XX // 1 - включить : 0 - выключить RequestExEnchantSkillInfo Назначение: запросить информацию о заточке скила Формат: D0 06 00 XX XX XX XX // ID скила XX XX XX XX // уровень скила RequestExEnchantSkill Назначение: запросить заточку скила Формат: D0 07 00 XX XX XX XX // ID скила XX XX XX XX // уровень скила RequestExManorList Назначение: запросить заточку скила Формат: D0 08 00 RequestExPledgeCrestLarge Назначение: запросить данные изображения большой иконки клана(те что размещаються на вещах клана типа щитов) клана Формат: D0 10 XX XX XX XX // ID иконки RequestExSetPledgeCrestLarge Назначение: отправить данные изображения большой иконки клана(те что размещаються на вещах клана типа щитов) на сервер Формат: D0 11 XX XX XX XX // размер данных // <<<<< Следующий блок повторяется столько раз, сколько байт в данных изображения XX // данные изображения // конец повторяющегося блока RequestChangePartyLeader Назначение: передает лидерство в пати Формат: EE XX XX XX XX 00 00 // строка с именем чара, которому передается лидерство Copyright (C) 2006-2007 by TechnoWiz@rd
  5. 1. Interface por Celestine MxC This interface, I believe, was created by celestino, it is one of the most beautiful and leanest works I have ever seen, it does not contain a bug, but it is not as "complete" as the others today (ex: Wellinton Interface V3). Download the installer: [Hidden Content] or download .rar files: [Hidden Content] 2. Interface Classic Ona Latest (Damage on Screen Classic): Damage claims on the OpalSnow screen and celestino & @Iordanov the rest work! Download the installer: [Hidden Content] or Download .rar files: [Hidden Content] 3. Interface Iardonov 3.6.10 Credits to @Iordanov and thanks for improving my accuracy with the mouse pointer, because these small and confusing buttons on the man bar hahaha! ... Other than that, your work here is fantastic, as always! Download Installer: [Hidden Content] or Download .rar files: [Hidden Content] 4. Interface Iardonov Full Functions Cracked Credits for @Iordanov, this is my favorite! Download Installer: [Hidden Content] or Download .rar files: [Hidden Content] 5. Interface Wellinton V3 - 2020 Credits for codes: Sanyol and assembly of the Interface and Animations and skill.grp: WELLINTON SOUZA Download Installer: [Hidden Content] or Download .rar files: [Hidden Content] 6. Interface Essence 2.0 by AikoN Credits for AikoN Download Installer: [Hidden Content] or Download .rar files: [Hidden Content] 7 Essence Interface Interlude Cracked Very beautiful interface but very poorly optimized. Credits for Sanyou Download Installer: [Hidden Content] or Download .rar files: [Hidden Content] 9. Recompiled Interface More the 80 Custom Skills with animations like Songs-Dances-Chants. Here is a preview for some of the skills! Credits for fakosgr(LumosDH), @lordanov, Celestine, OpalSnow, Asuki, GLO, Aikon, Hool1gan Download Installer: [Hidden Content] or Download .rar files: [Hidden Content] Note: After installation, you will notice the presence of a file called a low FPS PC. This folder contains the lineageffect.u and skillgrp.dat files edited without any visual effects and edits. (Not even the overhead buffs). Install only if you want a lighter experience (It is for weak PC). 10. Iordanov Interface Version 3.6.9 A quick preview Credits for lordanov Download Installer: [Hidden Content] or Download .rar files: [Hidden Content] UPDATE 27/04/2021. 11. Dandilo, Personal Editions: More Imagens: [Hidden Content] Credits for Dandilo, viRUS, Neophron, Celestine, Wellinton Souza, AikoN, L2Sublimity, Penacho, CriticalError. Download Installer: [Hidden Content] or Download .rar files: [Hidden Content] 12 Neophron Classic [Start Edition]: More info: [Hidden Content] Credits for Neophron Download Installer: [Hidden Content] or Download .rar files: [Hidden Content] 12 Silent Interface V2 (Visual Essence) 2021: Credits for Silent Download .rar files: [Hidden Content] You may need to reinstall Lineage to have a tamper-free folder. The Interface may malfunction if it is installed in a folder that has several previously installed interfaces. BONUS: Finally, I share some textures by Aden, Giran and Goddard. Download the installer: [Hidden Content] or download .rar files: [Hidden Content] To install just select the game folder selection and click "yes to all". The installer was created using Winrar. I assure everyone that the installers do not have a virus. But if someone has doubts about my suitability as a person, and wants the files in .rar and not in an installer, here are the links. I leave the files in an installer format because it makes work easier when installing an interface. Thanks to all the creators of the Interfaces!
  6. Hi! By request of many users asking me if I have compiler for interface.u, here are my share of my collection. I hope this will be useful for anyone of this forum. Enjoy it!! Interlude Compiler: DOWNLOAD Hellbound Compiler: DOWNLOAD Gracia Final Compiler: DOWNLOAD Epilogue Compiler: DOWNLOAD Freya Compiler: DOWNLOAD High Five Compiler: DOWNLOAD Ertheia Compiler: DOWNLOAD Grand Crusade Compiler: DOWNLOAD Salvation Compiler: DOWNLOAD Now, if you want to have all in one pack with a basic menu like this: Download HERE Credit for share in maxcheaters Akar0
  7. Hello, this is the functional ADVEXT user panel for all chronicles, from interlude to h5 L2off of course, I made small changes to it so that it also works with Vanganth and the Eressea extender (MyExt64) The information of the panel is here: [Hidden Content] It costs 165 Dollars You can download it here: Download To configure it is very simple, you just have to edit the conf.php file that is in the root folder. Its functions are: Changing password Password recovery Ip binding Account logs Inventory viewer Changing character name, or color name/title Function "I'm stucked", which gives ability to teleport to nearest town.
  8. Após sua licença estar ativa será necessário baixar seu servidor via SVN, isso é importante porque vai te ajudar com updates quando preciso. 1. Baixe o cliente SVN - [Hidden Content] 2. Crie uma pasta no seu computador exemplo C:\Lucera\ e dentro dela clique com o botão direito do mouse e escolha a opção SVN CHECKOUT. 3. Em URL of repository coloque: [Hidden Content] - para Interlude [Hidden Content] - para Cassic 4. Clique em OK e aguarde os arquivos serem baixados dentro da sua pasta. Você pode usar a opção SVN Update para atualizar sua revisão sempre que disponível Lucera Patch Interlude: [Hidden Content]
  9. Este tutorial é um guia de instalação básica para qualquer ambiente de instalação Windows, recomendamos que esteja limpo sem instalações anteriores de MySQL ou java para garantir seu sucesso, portanto os requisitos mínimos para iniciar é: Possui um computador, vps ou dedicado com Windows Server 2012 ou posterior ou Windows 7 Posterior. Ter baixado via SVN o seu servidor, conforme este guia. As configurações recomendadas mínimas pelo desenvolvedor, recomendo mais para Windows, encontre alguns planos de VPS em: [Hidden Content] ou [Hidden Content]-ssd VPS Linux: 1vCore, 2GB RAM, 20GB HD. VPS Windows: 2vCore, 4GB RAM, 20GB HD. ATENÇÃO: SE VOCÊ ESTA SEGUINDO ESTE GUIA COM AS REVISÕES DE AVALIAÇÃO DO TÓPICO PRINCIPAL NÃO ESQUEÇA DE ADQUIRIR UMA LICENÇA PARA SERVIDOR ONLINE, LIMITE DE 20 PLAYERS PARA AVALIAÇÃO. 1 - Baixe e instale o Java 8 JDK: Você pode baixar o JDK 8 através do Google Driver da L2JBrasil ou diretamente na oracle: [Hidden Content] 2 - Baixe o MySQL 8 através do Google Driver da L2JBrasil ou diretamente pelo site do MySQL: [Hidden Content] 3 - Baixe um gerenciador de banco de dados, use o que você preferir, HeidiSQL (Grátis) ou Navicat (Pago, pare de se entupir de vírus com cracks). [Hidden Content] [Hidden Content] Baixou tudo? Vamos iniciar a instalação. JAVA Abra o instalador do java e siga o next, next, next básico para instalar. , MYSQL Selecione a 2° opção: "USE LEGACY AUTHENTICATION METHOD" caso contrario vai da problema. No campo MySQL Root Password você precisa criar uma senha para seu usuário, insira uma senha que não seja a palavra root também e não esqueça! Instalando o servidor e banco de dados. Antes de iniciar as configurações você precisa acessar a pasta default_english que fica dentro da pasta config do game/login server e colocar dentro da pasta config. Isso porque a revisão pode ser usada em duas linguagens . Agora vamos restaurar o banco de dados, a Lucera faz o carregamento automaticamente do banco quando você liga o servidor pela primeira vez, mas antes você precisa criar o banco de dados. Vamos usar o HeidSQL abaixo: Em network type confirme se a opção MySQL está selecionada, na sessão user mantenha root se sua instalação do MySQL foi a padrão do guia e em password a senha que criou durante a instalação e clique em open. , Ao abrir, clique com o botão direito do mouse sobre a conexão criada, selecione a opção Create New -> Database. Na sessão Collation certifique que a opção: utf8_general_ci está selecionada e clique em Ok. * Você pode criar o banco de dados normalmente como conhece pelo navicat. Depois disso, você deve especifica o usuário, senha, nome do banco de dados nos arquivos server.propertiers e authserver.propeties que se encontram respectivamente dentro da pasta config do Login e Gameserver. A instalação do banco de dados ocorre automaticamente. Você não precisa fazer nada, o servidor instalará a base sozinho ao ligar! # Database Host DatabaseHost = 127.0.0.1 # Database Port DatabasePort = 3306 # Database Name DatabaseName = lucera2 # Database User DatabaseUser = root # Database Password DatabasePassword = senha que você definiu IP CONFIG SERVER Para conectar-se no mesmo PC você não precisa realizar nenhuma configuração adicional de IP. Para conectar-se em VPS ou Dedicado inclua apenas o IP externo o que você se conecta pela área remota do windows ou acesse algum site que mostra seu IP externo como myip.com, meuip.com.br e simplesmente troque na linha ExternalHostname presente no arquivo server.properties. Pronto, certifique-se que as portas 7777 e 2106 estejam abertas no seu firewall e já estará pronto para conectar. IP CONFIG CLIENTE (JOGO) Para conectar-se no mesmo PC você não precisa realizar nenhuma configuração adicional de IP apenas mantenha o valor 127.0.0.1 na linha ServerAddr=127.0.0.1 ou se estiver em um VPS ou Dedicado, coloque o mesmo IP que configurou no ExternalHostname anterior. Agora vamos restaurar o banco de dados, a Lucera faz o carregamento automaticamente do banco quando você liga o servidor pela primeira vez, mas antes você precisa criar o banco de dados. Vamos usar o HeidSQL abaixo: Em network type confirme se a opção MySQL está selecionada, na sessão user mantenha root se sua instalação do MySQL foi a padrão do guia e em password a senha que criou durante a instalação e clique em open. , Ao abrir, clique com o botão direito do mouse sobre a conexão criada, selecione a opção Create New -> Database. Na sessão Collation certifique que a opção: utf8_general_ci está selecionada e clique em Ok. * Você pode criar o banco de dados normalmente como conhece pelo navicat. Depois disso, você deve especifica o usuário, senha, nome do banco de dados nos arquivos server.propertiers e authserver.propeties que se encontram respectivamente dentro da pasta config do Login e Gameserver. A instalação do banco de dados ocorre automaticamente. Você não precisa fazer nada, o servidor instalará a base sozinho ao ligar! # Database Host DatabaseHost = 127.0.0.1 # Database Port DatabasePort = 3306 # Database Name DatabaseName = lucera2 # Database User DatabaseUser = root # Database Password DatabasePassword = senha que você definiu IP CONFIG SERVER Para conectar-se no mesmo PC você não precisa realizar nenhuma configuração adicional de IP. Para conectar-se em VPS ou Dedicado inclua apenas o IP externo o que você se conecta pela área remota do windows ou acesse algum site que mostra seu IP externo como myip.com, meuip.com.br e simplesmente troque na linha ExternalHostname presente no arquivo server.properties. Pronto, certifique-se que as portas 7777 e 2106 estejam abertas no seu firewall e já estará pronto para conectar. IP CONFIG CLIENTE (JOGO) Para conectar-se no mesmo PC você não precisa realizar nenhuma configuração adicional de IP apenas mantenha o valor 127.0.0.1 na linha ServerAddr=127.0.0.1 ou se estiver em um VPS ou Dedicado, coloque o mesmo IP que configurou no ExternalHostname anterior. LIGANDO O SERVIDOR Navege até as pastas Authserver\StartAuthServer.bat e Gameserver\StartGameServer.bat para ligar o Login e Server respectivamente. Pronto, seu servidor L2 Lucera Interlude/Classic está 100% instalado.
  10. L2jOrion Updates List: --> [Hidden Content] Programas necessários para self-dev ou ajudar o projeto Orion: Java 8 -> BELLSOFT Liberica JDK: DOWNLOAD Eclipse for Java 8 -> Eclipse 4.16 for JAVA 8: DOWNLOAD MariaDB -> Maria Database (MySQL): DOWNLOAD HeidiSQL -> HeidiSQL (Interface de usuário para MySQL gratuito): DOWNLOAD Source do projeto no GITHUB: ACESSAR Projeto Compilado: DOWNLOAD COMPILADO (Obrigado SayMon Cordeiro) SERVER INFO L2jOrion supports all Lineage 2 Interlude official features and has many own additional unique features. Just a few mentioned below for now and i will update it later. Also, any feature can be turned off inside pack config. All quests fully working and updated by Lineage 2 Interlude official information. Everything can be checked in test server with full npcs and special commands for testers. Events Team vs Team (Possible add more than 2 teams) Deathmatch Capture the Flag Special NPCS Buffer - Possible use like simple or mixed mode with schemes (save/load). Buffs for pets and players. Cancellation of buffs can be one by one or all at once. Also, buffer has a heal function, premium buffs, auto buff lists (fighter/mage), and buffs for special item. Available special command for player and add to Community Board too. Global gatekeeper - player can use simple, premium and for special item teleports. Available special command for player and add to Community Board too. Also, possible to change the time of gk animation. GM Shop - it has special donate item and special functions for donators like: no karma, clan functions, premium time, name/tile colors and etc. Available special command for player and add to Community Board too. Marketer - It's selling/buying system where player can add any item for special item (unlimited currency) and also possible add enchanted or augmented items. Available special command for player and add to Community Board too. Class Manager - Can be like npc or pop up menu. Possible add price or reward for class, pets upgrade. Special command available. Wedding Manager. Geo-Engine Added newest geo-engine which works like Lineage 2 official. Special Player Commands .menu - Additional player functions in one place: exp on/off, title with pvp/pk (live update), block buffs, auto pick up on/off, trade on/off, private messages on/off, screen text pop up like critical, damage and etc on/off, falling to textures auto correction, change password, repair character and auto potions (working with all potions). .boss - Simple and epic bosses in one place. Possible see alive status, dead time, boss lvl and clicked on boss name you can get location to boss.- .votereward - Vote system for reward . Added Topzone, Hopzone, L2network and L2jBrasil). .bank - Adena and your chosen item exchanger. .sub - All sub-classes in one place. .sellbuffs - Possible sell your own buffs. UPDATES Some imports corrections by L2OFF information. Our priority is L2OFF and all updates are doing by this info except some modifications which possible easy turn off. Added a new test server system 1.05 which is closer to L2OFF and it doesn't have modifications from the newer l2 clients. Geo-engine: Re-worked character movement in the water. Fixed falling damage and hard dipping. This issue worked mostly in catacomb or necropolis when character moves in/out, because of geo-data. Updated synchronization system between client<->server. Updated character update position system. Updated geo-engine system. Misc Class Master updates: added lvl checking on the class change and heal's config., Geo-engine: a little more corrections for better performance., Fixed a bug report: (Server w/o Auto Learn skill) For Example: If you have toggle Skill LvL1 in USE, and learn LvL2, then you cant shut down Skill (and still is use lvl1) Only RR help. Boats system Re-worked entire system and fixed characters movement to in/out the boat. Added all L2OFF system messages, routes and etc. Totally re-worked from core side with L2BoatAI, L2Vehicle, vehicle stats and fully updated client/server packets (For now to test it is available only in TEST server) AI Re-worked castle siege guards AI system. Old system had lots issues and made a lag for players in the some castles. Re-worked Faenor system and added medals.xml, valentines.xml events. In this case we don't need these files in libs folder anymore: bsh-2.0b6.jar, bsh-engine.jar Re-worked python/java engines and we don't need these files in libs folder anymore: java-engine-1.8.jar, jython-engine-2.2.1.jar Other implements ADDED: a premium account teleport system. Just change one word „...goto..“ to „...premium_goto...“for example: „bypass -h custom_dotele premium_goto 2503“. CORRECTED: character movement issues on attack mode. Re-worked - .boss command. Added: Raid Bosses list by levels. Also, possible see death time, aggro, level and location on map. Fixed - some small issues in Queen Ant AI. Added - Some donate functions. Possible to add more colors for name and title. All prices you can change inside config - ljstudio.ini FIXED - Some FOG mobs which had wrong locations on random spawn after kill. UPDATED - Seven Sings teleport locations to the hunting zones which haven't correct locations. UPDATED - knownlist system and improved performance. Also, decreased CPU usage. RE-WORKED - command: .votereward. From now on, you can get reward for each one vote. Also, I added a new top - L2jbrasil. All configs are inside pack - ljstudio.ini. Up there you can to put your item id and set up min/max items in random for each vote. UPDATED - mobs AI knownlist system. Some mobs which have faction ID (clan) need a faster reaction to help each other. Now they have it. UPDATED - powerpack system and re-worked global gk, gm shop and buffer. Since this made, from gmshop, gatekeeper and buffer folders htm files are using same for NPC and player commands. Also, possible use in community board. Added a new global gk. Available menus: All towns + noble menu, catacombs, necropolises, teleportation to cursed weapon for special item, teleportation to any zone for special item or just only for premium accounts. UPDATED - Buffer menu and added possibility remove buff one by one. UPDATED - Class balance system and added classes balance control by second class (damages - to/by fighters and mages). 3rd class was before. ADDED - A new command: .bank and also, possible use like additional selection in any menu. All configs inside powerpack.ini: UPDATED - our synchronization system CLIENT<->SERVER and improved performance. Don't forget use a config option: CoordSynchronize = 3 in geodata.ini FIXED - Skill: Lucky. Impossible get Death Penalty when you are 1-9lv by L2OFF. CLEANED - many unnecessary code/configs for better performance. UPDATED - option : MaxDriftRange and added geodata checking which doesn't allow mobs go to wall if they are nearby wall. ADDED - option: MaxRespawnRange. From now on, all mobs can be re-spawned by random loc like L2OFF. Also, added geodata checking for those mobs which can be re-spawned to wall. ADDED - new MMO core system and removed unnecessary protection configs. RE-WORKED - flood protection system and now it has better performance. ADDED - new protection for multisell of .shop command which doesn't allow use any mulltisell id by PHX. It wil be added for all multisells later. CLEAN UP - multisells which are not default and unusing. FIXED - 1000+ bugged creatures which had wrong loc or were underground (under textures) and that's all what our system found which means no more bugged mobs. This happened after a new geo-data system installation when some mobs had a bad Z loc before and later get bugged. Also, some were left since very old time. UPDATED - MaxDriftRange and MaxRespawnRange functions for better geo-data checking and it doesn't allow walk or be re-spawned to wall on bigger range. FIXED - character heading. From now on, you can see correctly character direction on spawn (teleport, enter to world and etc.). basically, on first seeing character will show correctly direction, not the same like always was before. ADDED - a new command .sellbuffs and .cancelsellbuffs with some additional configs (BETA) ADDED - New logging system. ADDED - New Game Time Controller system. ADDED - New Geo-Engine which works much better than old. ADDED - New DeadLock system with auto server restart. UPDATED - Auto Save Manager. CLEAN UP - Unnecessary imports, configs and settings. UPDATED - Command .gk/Global teleport and added possibility turn off teleport animation (animation = same like /unstuck, escape or etc.) RE-WORKED - Grand Bosses system and from now on possible add separate Fix Time. Also, changed time settings. FIXED - All town pets which were missed. RE-WORKED - Buffer and improved system. From now on all buffs in one place. Possible save your buffs as scheme. Added more nice features. Available to check on the test server. RE-WORKED - Market and improved system - added special command: .market, added special configurations to pack side, possible sell augmented items, money sending directly to inventory (offline player included), email notifications (in game), search system, latest items and etc. UPDATED - Community Board and fixed some menus which weren't work correctly before: all search systems, paging, clan management, clan mail, region menu, favorites menu and etc. UPDATED - siege system to make this work better. UPDATED - boss: Benom (siege boss), fixed some small issues and added missing drop. CLEAN UP - imports/unused codes and configs for better performance. FIXED - Can not see target bug for doors. After a new geo-engine installing this had a small mistake which is fixed now. ADDED - Custom config for market . From now on you can add any item like a currency (unlimited). ADDED - Premium buff time multiplier. ADDED - Random enchanted items to drop list. Possible add enchanted items with min and max options. CORRECTED - Walking speed. Some creatures had wrong speed. (Based on Lineage 2 Interlude Official information) CORRECTED - All pets skills, some of them were generating aggro what is wrong. (Based on Lineage 2 Interlude Official information) CORRECTED - Skill: Break Duress, it must remove effect of Root, not only Slow. (Based on Lineage 2 Interlude Official information) CORRECTED - Skills: Noblesse Blessing and Salvation. They can not work together. (Based on Lineage 2 Interlude Official information) REWORKED - Buylist system. and fixed some small issues. FIXED - Devastated Castle issue; FIXED - Castle's doors bug. All doors must be attackable for all players on the siege progress and not only for castle's attackers. (Based on Lineage 2 Interlude Official information) FIXED - Pet's bug. If pet gets a stun he doesn't come back to owner when stun is gone. Now it comes back. FIXED - From now on all pets can get herbs and if player has summoned the pet the time of herbs is dividing. (Based on Lineage 2 Interlude Official information) FIXED - Soul Crystals levelling up. Before it did not work correctly and now it works like L2OFF. FIXED - Skill: EarthQuake. It did not work in the Olympiad before the match. Now works. FIXED - Alliance ketra/varka quest. It shouldn't remove an alliance level on quest abortion. ADDED - A new geo-data to some regions to fix some issues. CORRECTED - SP and EXP, some creatures had wrong SP and EXP numbers. (Based on Lineage 2 Interlude Official information) CORRECTED - SKill: Corpse Burst. Before skill's explosion didn't do a damage for creatures around and now it does. CORRECTED - SKill: Frost Bolt. Before it worked like a de-buff, but also it must does a damage for target. (Based on Lineage 2 Interlude Official information) RE-WORKED - Resurrection system and fixed 2 bugs on siege. 1. If attacker clan has a siege flag - they can use a resurrection for a clan members. 2. If defender clan has a control crystal - they can use a resurrection for clan members. (Based on Lineage 2 Interlude Official information) RE-WORKED - All grand bosses instances and fixed some small issues. (Based on Lineage 2 Interlude Official information) RE-WORKED - The Raid Boss: Ice Fairy Sirra. (Based on Lineage 2 Interlude Official information) ADDED - A new config for special teleport. From now on you can to choose which item you want to use for teleportation (Config inside PowerPack.ini). Also, you need to change a text inside htm file „goto“ -> „custom_goto“. ADDED - A new config to Premium Account System for Seal stones rates. RE-WORKED - All core platform and increased performance. Faster loading and less CPU usage. [Hidden Content] Pack + Backup PSC Source Orion
  11. Introdução O sistema ICPNetworks V3 não é somente um site, ele é um painel administrativo onde tudo é gerenciado através dele. Nesse novo sistema, vocês encontrarão uma variedade imensa de funções. Entre elas está a mais cobiçada, a entrega automática de doações! (APIs atualizadas!!) O sistema conta com 4 formas de pagamentos, sendo 3 delas automáticas: Depósito/transferencia para sua conta bancária (Entrega manual) PagSeguro (PIX incluído e entrega automática) MercadoPago (PIX incluído e entrega automática) PayPal (Entrega automática) Outra ferramenta muito interessante é o sistema de templates, com ele você pode rodar qualquer site de lineage 2 dentro do sistema ICPNetworks V3. Você se lembra daquele site antiiiiigo que você sempre quis recolocar online e ele está com a programação desatualizada/insegura? Agora você pode colocar ele online novamente com o sistema ICPNetworks V3! Alem disso, qualquer pessoa poderá adicionar ou editar qualquer template de forma simples e fácil, sabendo apenas o basico de HTML, CSS e JavaScript. VOCÊ NÃO PRECISA SABER PROGRAMAÇÂO!!! Compatibilidade O sistema foi criado para ser compatível com a grande maioria dos servidores de lineage 2 da atualidade. O sistema foi testado nas seguintes crônicas e projetos: Interlude: Frozen aCis (versão nova e antiga) Mobius Dream V2 (Precisa criar a coluna accesslevel na tabela characters, com default = '0') Lucera L2OFF AdvExt64 Classic: L2-scripts (Versão Antharas precisa de mais testes) L2jOrg Mobius Lucera Gracia Final: L2jServer High Five: L2-scripts Revolt-Team (Versão do Alex (CCCP)) L2jPS Sunrise Tutoriais Instalação Configuração Apresentação Templates Arquivos Requisitos para usar o sistema: Java (L2j): MySQL MariaDB 10+ PHP 7.4.19+ (com o Driver PDO MySQL instalado) C++ (L2OFF): SQL Server 2012+ PHP 7.4.19+ (com o Driver PDO Sql Serv instalado) Download Senha: ByIvanPires Créditos Antes de tudo, eu gostaria de agradecer ao fórum L2jBrasil e os administradores @Kelvin e @Grundor pelo carinho de ter criado uma área exclusiva só para os conteúdos da ICPNetworks, fiquei muito feliz e lisonjeado. Agradeço a todos que ajudaram de todas as formas para que esse projeto pudesse ser concluído. Agradeço também a L2jCenter por sempre estar patrocinando os meus projetos. Os templates disponibilizados nesse sistema são de autoria dos meus grandes amigos e parceiros @HugoFelipe, @lucasdanilo e meus. Não vou nomear todo mundo para não correr o risco de esquecer o nome de ninguém. Mas agradeço a todos de coração! Sem a colaboração de todos, não teríamos chegado até aqui. Um forte abraço a todos os membros da L2jBrasil e até a próxima!
  12. L2jMegaPack Source + Pack Various current mods. Balancing PvP | Olly Class_x_Class, Anti-Zerg Zone Limit Panel Skin | Skin Item, Fake Players. Events: TvT/CTF/Tournament,Party farm/Mission Daily/ reward Pc bang Official project repository [Hidden Content] Patch [Hidden Content] Java used by review, Java 17 [Hidden Content] Credits for Creation : L2jMegaPark Credits for Share : Carlinhos L2j Credits for updating and fixing the bugs and removing the Backdoors: @Sarada
  13. Hey guys, sharing with you a C1 interface, it works until Interlude! Below is a link with images! LINK: [Hidden Content]
  14. English Client GoogleDrive Fex.net MediaFire.com Cloud.mail.ru Torrent Русский Клиент GoogleDrive Fex.net MediaFire.com Cloud.mail.ru Torrent
  15. English Client GoogleDrive Fex.net MediaFire.com Cloud.mail.ru Torrent Русский Клиент GoogleDrive Fex.net MediaFire.com Cloud.mail.ru Torrent

Important Information

Privacy Notice: We utilize cookies to optimize your browsing experience and analyze website traffic. By consenting, you acknowledge and agree to our Cookie Policy, ensuring your privacy preferences are respected.