Я хочу переделать пару своих скриптов под плагины но конечно в программировании не очень силен, сделал простенький плагин чтоб разобраться он скомпилился но при использовании вылетает ошибка "invalid pointer operation"
вот код плагина
Код:
library plugin;
{$define RELEASE} // ??? ????????????? ? ??????? ?????????, ??? ?????? ????? ???????????????
uses
SysUtils,
Windows,
dialogs,
Classes,
strutils,
usharedstructs in 'usharedstructs.pas';
var
min_ver_a: array[0..3] of Byte = ( 3,5,23, 141 );
min_ver: LongWord absolute min_ver_a; // ??????????? ?????????????? ?????? ?????????
ps: TPluginStruct;
idt:integer;
function GetPluginInfo(const ver: LongWord): PChar; stdcall;
begin
if ver<min_ver then
Result:='???????????????? Plugin ? ????????? l2phx'+sLineBreak+
'??? ?????? 3.5.23.141+'+sLineBreak+
'? ??? ?????? ?????? ?????????! ?????? ?? ?????? ????????? ? ??? ????????!'
else
Result:='???????????????? Plugin ? ????????? l2phx'+sLineBreak+
'??? ?????? 3.5.23.141+'+sLineBreak+
'????????????? ?? ???????';
end;
function SetStruct(const struct: PPluginStruct): Boolean; stdcall;
begin
ps := struct^;
Result:=True;
end;
procedure OnLoad; stdcall;
begin
end;
procedure doskill(ids:integer);
var
buf:string;
begin
buf:=#$D0#$00#$57#$6F#$FF;
ps.writeh(buf,ids);
buf:=buf+#$01#$00;
ps.writed(buf,idt);
buf:=buf+#$18#$01#$A5#$A3#$00#$00;
ps.SendPacketStr(buf,0,True);
end;
procedure OnPacket(const cnt: integer; const fromServer: Boolean; const connectionname:string; var pck: string); stdcall;
begin
if not fromServer then
case pck[1] of
#$ce: idt:=ps.readD(pck,6);
#$b2: if ps.reads(pck,7)='.f1' then doskill(2002);
end;
end;
exports
GetPluginInfo,
OnPacket,
OnLoad,
SetStruct;
begin
end.
Попробуй убрать посылку пакета,а сделать простое действие чтобы не отсылало пакет,например записать лог в стринг лист,а потом сохрани и так на каждое действие ищи ошибку,потом будет понятно где именно тупит плагин.