L2PacketHackФорум программы L2PacketHack, всё что с ней связано находится тут.
Правила раздела!
Категорически запрещено:
* Просить пакеты/скрипты на шмот/адену/другие вещи;
* Просить (помочь) взломать/сломать сервак/аккаунт или раздеть/наказать кого-то на любом серваке;
* Просить научить работать с программой, если не понимаете элементарных вещей в отношениях клиент-сервер (так как, если вы их понимаете, то вопросов по основным возможностям программы быть недолжно);
* Все посты не удовлетворяющие этим запретам, а так же не относящиеся к теме будут удаляться при первой возможности.
* Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы.
* Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
* Данные запреты неподлежат обсуждению.
Yes, when i compile it everything seems ok, no errors...
Code:
delphi Код:
library PruebaPlugin;
{$define Release}// для совместимости с релизом пакетхака, при дебуге можно закоментироватьuses
FastMM4,
usharedstructs;
const PlayerName = 'PentA';
var{version}{revision}
min_ver_a: array[0..3] ofByte = (3,4,1, 46);
min_ver: Integer absolute min_ver_a; // минимальная поддерживаемая версия программы
ps: TPluginStruct; // структура передаваемая в плагин// Обязательно вызываемая функция.// Должна вернуть описание плагина,// заодно может проверить версию программыfunction GetPluginInfo(const ver: Integer): PChar; stdcall;
beginif ver<min_ver then
Result:='Демонстрационный Plugin к программе l2phx'+sLineBreak+
'Для версий 3.4.0+'+sLineBreak+
'У вас старая версия программы! Плагин не сможет корректно с ней работать!'else
Result:='Демонстрационный Plugin к программе l2phx'+sLineBreak+
'Для версий 3.4.0+';
end;
// Обязательно вызываемая функция.// Получает структуру с ссылками на все функции основной программы,// которые могут вызываться из плагина.// Если вернёт False то плагин выгружается.function SetStruct(const struct: TPluginStruct): Boolean; stdcall;
begin
ps:=struct;
Result:=True;
end;
// Необязательно вызываемая функция. (может отсутствовать в плагине)// Вызывается при установки соединения (cnt) с клиентом (withServer=False) // или сервером (withServer=True)procedure OnConnect(const cnt: Cardinal; // номер соединенияconst withServer: Boolean); stdcall; // с сервером?beginend;
// Необязательно вызываемая функция. (может отсутствовать в плагине)// Вызывается при разрыве соединения (cnt) с клиентом (withServer=False)// или сервером (withServer=True)procedure OnDisconnect(const cnt: Cardinal; // номер соединенияconst withServer: Boolean); stdcall; // с сервером?beginend;
// Необязательно вызываемая функция. (может отсутствовать в плагине)// Вызывается при выгрузке плагинеprocedure OnFree; stdcall;
beginend;
// Необязательно вызываемая функция. (может отсутствовать в плагине)// Вызывается при загрузке плагинеprocedure OnLoad; stdcall;
var buf : string;
beginwith ps dobegin
buf:=HexToString('4A 00 00 00 00');
WriteD(buf,2);
WriteS(buf,'Hola');
SendPacketStr(buf,ConnectInfo.ConnectID,False);
end;
end;
// Необязательно вызываемая функция. (может отсутствовать в плагине)// Вызывается при вызове скриптовой функции обьявленной в RefreshPrecompilefunction OnCallMethod(const MethodName: String; // имя функции в верхнем регистреvar Params, // параметры функции
FuncResult: Variant// результат функции): Boolean; stdcall; // если вернёт True то дальнейшая// обработка функции прекратитьсяbegin
Result:=False; // передаём обработку функции программеif MethodName='PI'thenbegin
Result:=True; // запрещаем дальнейшую обработку функции в программе
FuncResult:=Pi;
end;
end;
// Необязательно вызываемая функция. (может отсутствовать в плагине)// Вызывается перед компиляцией скриптовfunction OnRefreshPrecompile(var funcs: TStringArray): Integer; stdcall;
beginSetLength(funcs,1); // указываем количество добавляемых в скрипт функций
funcs[0]:='function Pi:Extended'; // одна из добавляемых функцийend;
// Необязательно вызываемая функция. (может отсутствовать в плагине)// Вызывается при приходе пакета, параметры:// cnt - номер соединения// fromServer - если пакет от сервера равна True, если от клиента то False// pck - собственно пакет (в виде массива)procedure OnPacket(const cnt: Cardinal; const fromServer: Boolean; var pck:
TPacket); stdcall;
beginif pck.size<3thenexit; // на случай если предыдущие плагины обнулили пакетend;
// экспортируем используемые программой функции
exports
GetPluginInfo,
SetStruct,
OnPacket,
OnConnect,
OnDisconnect,
OnLoad,
OnFree,
OnCallMethod,
OnRefreshPrecompile;
beginend.
library PruebaPlugin;
{$define Release}// для совместимости с релизом пакетхака, при дебуге можно закоментироватьuses
FastMM4,
usharedstructs;
const PlayerName = 'PentA';
var{version}{revision}
min_ver_a: array[0..3] ofByte = (3,4,1, 46);
min_ver: Integer absolute min_ver_a; // минимальная поддерживаемая версия программы
ps: TPluginStruct; // структура передаваемая в плагин// Обязательно вызываемая функция.// Должна вернуть описание плагина,// заодно может проверить версию программыfunction GetPluginInfo(const ver: Integer): PChar; stdcall;
beginif ver<min_ver then
Result:='Демонстрационный Plugin к программе l2phx'+sLineBreak+
'Для версий 3.4.0+'+sLineBreak+
'У вас старая версия программы! Плагин не сможет корректно с ней работать!'else
Result:='Демонстрационный Plugin к программе l2phx'+sLineBreak+
'Для версий 3.4.0+';
end;
// Обязательно вызываемая функция.// Получает структуру с ссылками на все функции основной программы,// которые могут вызываться из плагина.// Если вернёт False то плагин выгружается.function SetStruct(const struct: TPluginStruct): Boolean; stdcall;
begin
ps:=struct;
Result:=True;
end;
// Необязательно вызываемая функция. (может отсутствовать в плагине)// Вызывается при установки соединения (cnt) с клиентом (withServer=False) // или сервером (withServer=True)procedure OnConnect(const cnt: Cardinal; // номер соединенияconst withServer: Boolean); stdcall; // с сервером?beginend;
// Необязательно вызываемая функция. (может отсутствовать в плагине)// Вызывается при разрыве соединения (cnt) с клиентом (withServer=False)// или сервером (withServer=True)procedure OnDisconnect(const cnt: Cardinal; // номер соединенияconst withServer: Boolean); stdcall; // с сервером?beginend;
// Необязательно вызываемая функция. (может отсутствовать в плагине)// Вызывается при выгрузке плагинеprocedure OnFree; stdcall;
beginend;
// Необязательно вызываемая функция. (может отсутствовать в плагине)// Вызывается при загрузке плагинеprocedure OnLoad; stdcall;
var buf : string;
beginwith ps dobeginif GoFirstConnection thenbegin
buf:=HexToString('4A 00 00 00 00');
WriteD(buf,2);
WriteS(buf,'Hola');
SendPacketStr(buf,ConnectInfo.ConnectID,False);
end;
end;
end;
// Необязательно вызываемая функция. (может отсутствовать в плагине)// Вызывается при вызове скриптовой функции обьявленной в RefreshPrecompilefunction OnCallMethod(const MethodName: String; // имя функции в верхнем регистреvar Params, // параметры функции
FuncResult: Variant// результат функции): Boolean; stdcall; // если вернёт True то дальнейшая// обработка функции прекратитьсяbegin
Result:=False; // передаём обработку функции программеif MethodName='PI'thenbegin
Result:=True; // запрещаем дальнейшую обработку функции в программе
FuncResult:=Pi;
end;
end;
// Необязательно вызываемая функция. (может отсутствовать в плагине)// Вызывается перед компиляцией скриптовfunction OnRefreshPrecompile(var funcs: TStringArray): Integer; stdcall;
beginSetLength(funcs,1); // указываем количество добавляемых в скрипт функций
funcs[0]:='function Pi:Extended'; // одна из добавляемых функцийend;
// Необязательно вызываемая функция. (может отсутствовать в плагине)// Вызывается при приходе пакета, параметры:// cnt - номер соединения// fromServer - если пакет от сервера равна True, если от клиента то False// pck - собственно пакет (в виде массива)procedure OnPacket(const cnt: Cardinal; const fromServer: Boolean; var pck:
TPacket); stdcall;
beginif pck.size<3thenexit; // на случай если предыдущие плагины обнулили пакетend;
// экспортируем используемые программой функции
exports
GetPluginInfo,
SetStruct,
OnPacket,
OnConnect,
OnDisconnect,
OnLoad,
OnFree,
OnCallMethod,
OnRefreshPrecompile;
beginend.