Пара багов впф.
1: 'a' должен возвращать строку оканчивающийся 0. Заставить работать этот параметр у меня не получилось.
2: Все еще стоит вопрос о разборе пакетов динамической длинны например BuyStoreRequest. Параметр(по которому можно разбирать количество купленных аитемов) найден вопрос в том как его применить. //s: данных багов не наблюдается. Все работает как и должно работать.
необходимый функционал параметров присутствует и работает.
Последний раз редактировалось Sauron; 30.03.2009 в 07:42.
Программирование сегодня — это гонка разработчиков программ, стремящихся писать программы больше и с лучшей идиотоустойчивостью, и вселенной, которая пытается создавать больших и лучших идиотов. Пока вселенная побеждает.
— Rick Cook
История России — борьба невежества с несправедливостью. (c) МихМих
после "for" стоит точка и число - количество блоков в каждой итерации цикла. в данном случае сервер выдает нам список друзей количеством CountBuddy и для каждого из них - 2 параметра, имя и что-то еще.
Последний раз редактировалось Джони; 26.01.2009 в 10:05.
'd' : integer (размер 4 байта)
'D' : back_int (integer обратный (4 байта, первый байт - старший)
'c' : byte / char (размер 1 байт)
'f' : double (размер 8 байт, float)
'p' : single (размер 4 байта, float)
'h' : word (размер 2 байта)
'q' : int64 (размер 8 байта)
's' : WideString (размер - до первых нулевых байт)
'b' : array[int] // массив, первый инт (первые 4 байта) - размер. общий размер = +4 байта.
'x' : array[byte] // массив, первый байт - размер, общий размер = +1 байт
'-' : пропуск размером '0000' '-(0000Desc)'
'z' : array[const] // блок фикс. размером '0000'. 'z(0000Desc)'
'a' : AsciiString // ANSI фикс. размером '0000'. 'a(0000Desc)'
't' : Ascii[byte] // ANSI, первый байт - размер, общий размер= +1 байт
'l': AsciiZ // 'l(0000Desc)'
// ANSI до первого нулевого символа
// либо до максимальной фиксированной длины '0000',
// если макс. = 0 то максимальная фиксированная длина ограничена размером пакета.
'v': vardat' // размер и цвет аргумента зависит от ф-ции GT2.name(ar1,pos,psize,pcol):res;
// см арг-ф-ции 'GET','GT2','FOR','VFR'
'R' : remark // R(любая строка отображаемая ниже описания пакета)
else : 'unknown';
циклы:
на примерах:
d(Count:For.0065) - здесь: берется WORD (d) как значение для цикла следущих 65 аргументов. 'Count' - название данного аргумента.
c(Счетчик:For.0004) - здесь: берется BYTE (c) как значение для цикла следущих 4 аргументов. 'Счетчик' - название данного аргумента.
c(Счетчик:For.0104) - здесь: берется BYTE (c) как значение для цикла следущих 4 аргументов пропуская один следущий аргумент.
динамика маркера GT2 сложнее, опишу потом.
^_O
(15.10.09)
Злой и Жестокий критик и баголов. Вижу очень далеко, насквозь.
Быстрей наслаждайся иллюзией, пока кто нибудь не растоптал твои грезы.
и в T3Packets.fsc function GetAukSort(ar1 : integer) : string; // внешняя ф-ция, вызывается не из скрипта, а по аргументу // :Get.AukSort begin case ar1 of 0 : result := 'Vozrastanie Ceny'; 1 : result := 'Ubyvanie Ceny'; 2 : result := 'Vozrastabie Urovnya'; 3 : result := 'Ubyvanie Urovnya'; else result := 'unknown' end; result := #2#3'23'+result+#15; end;
function GetAukP1(ar1 : integer) : string; // внешняя ф-ция, вызывается не из скрипта, а по аргументу // :Get.AukP1 begin case ar1 of 0 : result := 'Oruzhie'; 1 : result := 'Bronya'; 2 : result := 'Akcessuary'; 3 : result := 'Shit'; 4 : result := 'Predmety modifikacii'; 5 : result := 'Predmety proizvodstva'; 6 : result := 'Silovoy mayak'; 7 : result := 'Doping'; 8 : result := 'Eventovy predmet'; 9 : result := 'Boepripasy'; else result := 'unknown' end; result := #2#3'23'+result+#15; end;