Начал писать скрипт. Хочу посмотреть пакеты которые мне приходят через дебаг.Скрин с дебага
Строчка 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, только первая буква