Для грации эрилог никто не делает Packets*.ini, а если кто и сделал, то не спешит делится с остальными
В ини файле пакетов нету, а значит программа не знает как их читать и называет Unknown.
__________________
В любом из нас спит гений. И с каждым днем все крепче.
var
ItemBase: array[1..4,1..maxitems] of integer; //все предметы в инвентаре
(2)
Код:
procedure CreateItemBase;
var
i : integer;
begin
for i:=1 to maxitems do begin
//очищаем масив
ItemBase[1,i]:=0; //OID
ItemBase[2,i]:=0; //ID
ItemBase[3,i]:=0; //кол-во
ItemBase[4,i]:=0; //isEquipped
end;
...
end;
(3)
Код:
procedure Free;
begin
//ItemBase:=nil;
...
end;
Так вот:
Если в (3) раскомментировать строку, то скрипт первый раз после компиляции работает нормально, потом выключаем скрипт, опять включаем и уже в (2) присваивание не отрабатывает корректно. Пробовал там и до и после присваивания выводить значения:
msg.Lines.Add(VarToStr(ItemBase[1,i]));
Пустые строки выводит.
Причем в пакетхаке 3.5.13.122 это нормально работало.
Как мне удалять массив, если :=nil не работает корректно?
Последний раз редактировалось LiS, 10.07.2010 в 15:27.
Дело в том что массив не требует удаления. Это переменная, а не объект. При выключение скрипта память освободится самостоятельно.
К тому же nil не удаление, это указатель, константа такая
Цитата:
Константа Nil - значение не присвоенного указателя.
Использование нулевого (Nil) указателя приводит к исключению.
Nil используется главным образом как замена параметра Указателя - это говорит программе, что параметру присвоено значение не указателя.
Указательные переменные не установлены на Nil, кроме как в специальных обстоятельствах, типа при создании нового объекта, который содержит указатели. Это потому, что Delphi инициализирует память, взятую для нового объекта с 0-ми. Нулевой (Nil) указатель - тот, который имеет значение 0.
__________________
В любом из нас спит гений. И с каждым днем все крепче.
Приходит пакет: FE1F [FE 1F 00 55 AB 01 10 01] (ExFishingEnd)
Согласно сигнатуре пакета (ExFishingEnd:h(subID)d(CharID)c(isWin)), здесь последний байт - это результат рыбалки: 0 - рыба сорвалась, 1 - рыба поймана.
на счет subID спасибо.
по поводу inttostr - какая разница? то же самое.
Добавлено через 1 минуту
Цитата:
Сообщение от J-Fobos
Есть 2-х айдишные пакеты и одноайдишные. Это связано с нехваткой одноайдиных пакетов. А subID это второй байт в 2-х айдишных пакетах.
По поводу пакета рыбалки: у меня в пакете FE 1F FE 1F 00 55 AB 01 10 01 ReadC(8)=1
зы: гы, опять опоздал с ответом, надо странички обновлять почаще
да, на ХБ тоже самое было - 1 давало при успехе рыбалки.
а теперь вот, в самом пакете вижу, что 1 приходит, а ReadC(8) дает 0.
Причем ReadC(7) нормально читается. Бред...
Последний раз редактировалось LiS, 10.07.2010 в 18:44.
Причина: Добавлено сообщение
разница в присутствии проверки типа передаваемого параметра. и отсуствии в данном случе необходимости конвертировать в вариант перед вызовом функции. на что фастскрипту походу фиолетово.
при вызове этого readc промониторь что лежит в результате length(pck)
если ты пытаешься читать последний байт в пакете - возможно поможет костыль вида:
Цитата:
pck := pck + '!';
if ReadC(8) = 1 then showmessage('емана');
не забудь потом лишний символ с пцк убить. либо заранее пропустить пакет на клиент используя buf := pck; sendtoclient; и после обработки убить содержимое пцк.
__________________
L2Ext - project closed.
Последний раз редактировалось alexteam, 10.07.2010 в 23:24.
не забудь потом лишний символ с пцк убить. либо заранее пропустить пакет на клиент используя buf := pck; sendtoclient; и после обработки убить содержимое пцк.
ага. суть ясна, а убить содержимое - это приравнять к nil?
или можно как-то правильно удалить лишний символ, который я добавлю?