Исходники здесь
Вот такие скомпилированные версии есть у меня.
Ниже данные устарели.
Репозиторий находится тут (открывать через SVN клиент)
Удобный просмотр репозитория через браузер тут
Скомпилированные версии тут Пароль к архиву: coderx.ru
Есть ли предложения по модернизации существующего кода с описанием как должно и что хотелось бы заменить/добавить?
Дополнительные компоненты брать тут. (<-- TPerlRegEx есть только там)
/upd:
для компиляции последних ревизий понадобятся JCL, JVCL (ссылки выше) а так же:
jwapi2.2a, SyntEdit, TRichView.v11.0+ScaleRichView.v2.0, TsiLang (letitbit / upload.com.ua)
Немного подправленный FastScript искать в файловом архиве.
Последний раз редактировалось NLObP, 17.10.2016 в 00:02.
RoZ, пакетхак поидее в лог пустые пакеты и не пишет...
Поидее да...но вот записал...хз даже почему...
Мои действия были стандартные, нашёл очередной сервер. Всё включил, создал персонажа. При загрузке мира ПКХ начал ругаться, лог сохранил и начал разбираться.
//проверяем на выход за границу пакетаif PosInPkt>Size+10thenraise ERangeError.CreateFmt(result+' is not within the valid range of %d', [Size]);
Revision: 60
Author: nlobp
Date: 1:17:05, 26 октября 2008 г.
Message:
[*] изменил реагирование на ошибку выхода за границу пакета, пишем в расшифровку пакета 'range error'
[*] на вкладке "просмотр" и "посылка" добавил показ места, где расположены данные, по клику мыши и нажатию клавиш (стрелок) вверх/вниз.
NLObP, хм, обосную плиз позицию строк
if value='range error' then exit;
потому как по хорошему они должны следовать сразу за вызовом value:=GetValue(...)
а у тебя получается что могут сработать строки типа
if param1='FUNC01' then value:=GetFunc01(strtoint(value))
когда value='range error' а это приведёт к ошибке...
__________________
Я здесь практически не появляюсь!, Skype - ikskor
NLObP, хм, обосную плиз позицию строк
if value='range error' then exit;
потому как по хорошему они должны следовать сразу за вызовом value:=GetValue(...)
а у тебя получается что могут сработать строки типа
if param1='FUNC01' then value:=GetFunc01(strtoint(value))
когда value='range error' а это приведёт к ошибке...
Моё мнение эта ошибка появляется при несоответствии расшифровки пакета в packets.ini и содержимым пакета. Например пакет от грации, а расшифровка от С4.
Обычно эта ошибка пакетов содержащих циклы, типа таких
18=StatusUpdate(ObjectID)d(ListSize:Loop.1.2)d(ID)d(Value)
или
0E=StatusUpdate:d(ObjectID)d(AttribCount:For.0002)d(AttrID:Get.FSup)d(AttrValue)
для примера:
Код:
Tип: 0x5F (SkillList)
Pазмер: 122+2
Время прихода: 01:50:44:234
0002 d ListSize: 9 (0x00000009)
[Начало повторяющегося блока 1/9]
0006 d isPassive: 0
000A d Level: 1
000E d skillID: Escape: 5 minutes ID:2099 (0x0833)
0012 c c: 0
[Конец повторяющегося блока 1/9]
[Начало повторяющегося блока 2/9]
0013 d isPassive: 1
0017 d Level: 1
001B d skillID: Create Common Item ID:1320 (0x0528)
001F c c: 0
[Конец повторяющегося блока 2/9]
[Начало повторяющегося блока 3/9]
0020 d isPassive: 1
0024 d Level: 1
0028 d skillID: Magician's Movement ID:118 (0x0076)
002C c c: 0
[Конец повторяющегося блока 3/9]
[Начало повторяющегося блока 4/9]
002D d isPassive: 0
0031 d Level: 1
0035 d skillID: Common Craft ID:1322 (0x052A)
0039 c c: 0
[Конец повторяющегося блока 4/9]
[Начало повторяющегося блока 5/9]
003A d isPassive: 0
003E d Level: 1
0042 d skillID: Self Heal ID:1216 (0x04C0)
0046 c c: 0
[Конец повторяющегося блока 5/9]
[Начало повторяющегося блока 6/9]
0047 d isPassive: 1
004B d Level: 1
004F d skillID: Spellcraft ID:163 (0x00A3)
0053 c c: 0
[Конец повторяющегося блока 6/9]
[Начало повторяющегося блока 7/9]
0054 d isPassive: 0
0058 d Level: 1
005C d skillID: Wind Strike ID:1177 (0x0499)
0060 c c: 0
[Конец повторяющегося блока 7/9]
[Начало повторяющегося блока 8/9]
0061 d isPassive: 1
0065 d Level: 1
0069 d skillID: Mana Recovery ID:214 (0x00D6)
006D c c: 0
[Конец повторяющегося блока 8/9]
[Начало повторяющегося блока 9/9]
006E d isPassive: 1
0072 d Level: 1
0076 d skillID: Lucky ID:194 (0x00C2)
007A c c: 0
[Конец повторяющегося блока 9/9]
Но может конечно я и ошибаюсь с местом расположения проверки.
Моё мнение эта ошибка появляется при несоответствии расшифровки пакета в packets.ini и содержимым пакета. Например пакет от грации, а расшифровка от С4.
угу а ещё при ручном наборе пакета на вкладке отправка так как туда не всегда просто копируют пакет, а ещё могут и полностью или частично его воодить ручками, а поскольку пакетхак его анализирует прямо в процессе ввода то вылазиет ошибка
__________________
Я здесь практически не появляюсь!, Skype - ikskor