PDA

Просмотр полной версии : procedure OnPacket. pck возвращает nil


VitaminPSG
30.06.2014, 01:48
Начал писать скрипт. Хочу посмотреть пакеты которые мне приходят через дебаг.Скрин с дебага

http://s1.hostingkartinok.com/uploads/images/2014/06/ca4cabde889c7581c876b30bbbbbc129.jpg

Строчка 82 возвращает экзепшен.

Может кто-нибудь выложить рабочий пример Dll, со всеми юнитами к ней.
Код DLL
library La2DLL;

uses
FastMM4 in '..\fastmm\FastMM4.pas',
FastMM4Messages in '..\fastmm\FastMM4Messages.pas',
Classes,
Contnrs,
System.SysUtils,
Generics.Defaults,
Generics.Collections,
Windows,
L2Class in 'L2Class.pas',
usharedstructs in 'usharedstructs.pas' ;
//================================================== ============================
//Константы
const
//Список ошибок
RESULT_OK = 0;
RESULT_SESSION_KEY_NOT_FOUND = 2;
RESULT_NPC_KEY_NOT_FOUND = 4;
RESULT_NPC_IS_CONTAIN = 8;
//================================================== ============================
//Переменные
var
min_ver_a: array[0..3] of Byte = ( 3,5,23,141);
min_ver: LongWord absolute min_ver_a; // минимальная поддерживаемая версия программы
ps: TPluginStruct; // структура передаваемая в плагин
ppck: string;


// Обязательно вызываемая функция.
// Должна вернуть описание плагина,
// заодно может проверить версию программы
function GetPluginInfo(const ver: LongWord): PChar; stdcall;
begin
if ver<min_ver then
Result:='MyBotTest'+sLineBreak+
'Old version'
else
Result:='MyBotTest';
end;
// Обязательно вызываемая функция.
// Получает структуру с ссылками на все функции основной программы,
// которые могут вызываться из плагина.
// Если вернёт False то плагин выгружается.
function SetStruct(const struct: PPluginStruct): Boolean; stdcall;
begin
ps := struct^;
Result:=True;
end;
//************************************************** ************************************
// Необязательно вызываемая функция. (может отсутствовать в плагине)
// Вызывается при выгрузке плагине
procedure OnFree; stdcall;
begin
end;

// Необязательно вызываемая функция. (может отсутствовать в плагине)
// Вызывается при загрузке плагине
procedure OnLoad; stdcall;
begin

end;



procedure Say(msg:string; cnt : Integer );
var
buf: string;
begin
with ps do begin
buf:=HexToString('4A 00 00 00 00');
WriteD(buf,2);
WriteS(buf,'AutoHP');
WriteS(buf,msg);
SendPacketStr(buf,cnt,False);
end;
end;
procedure OnPacket(const cnt: Cardinal; const fromServer: Boolean; var pck: TPacket); stdcall;
var id : byte;
begin
if pck.Size < 3 then exit;

end;

//Export function
exports
GetPluginInfo,
SetStruct,
OnFree,
OnLoad,
OnPacket;
//Enter Point
begin
//ssionList:= TDictionary<Integer, TSession>.Create;
end.

Ещё заметил что в описании DLL в L2ph, только первая буква
http://s1.hostingkartinok.com/uploads/images/2014/06/b23fcb2894207dfc2aa741e60154d411.jpg

supernewbie
30.06.2014, 03:56
Компилить на D7 или чём-нибудь похожем если не хочешь геморроя с строками и хз чем ещё

supernewbie
30.06.2014, 03:58
Если охота геморроиться - копать в сторону строк, менять с обычных на Ansi

VitaminPSG
30.06.2014, 04:23
Я тоже подумал, про версию. Но это решило только проблему с описанием плагина. PCK по прежнему 0. Попробую твой плагин скомпилить, и посмотреть.