Вернуться   CoderX :: Forums > Lineage II > L2PacketHack
Войти через OpenID

L2PacketHack Форум программы L2PacketHack, всё что с ней связано находится тут.
Правила раздела! Обсуждение багов Lineage ЗАПРЕЩЕНО!

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 19.06.2009, 10:02   #11
Пользователь
 
Аватар для charly911
 
Регистрация: 20.05.2008
Адрес: Arg.
Сообщений: 35
Сказал Спасибо: 2
Имеет 3 спасибок в 2 сообщенях
charly911 пока неопределено
По умолчанию

uses
FastMM4,
usharedstructs; <-- Here
-------
ConnectInfo : tConnectInfo;

tConnectInfo = packed record
ConnectID:integer;
ConnectName:string[200];
end;
------

Последний раз редактировалось charly911, 19.06.2009 в 10:16.
charly911 вне форума   Ответить с цитированием
Старый 19.06.2009, 13:05   #12
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

seems like its crashes here
Код:
with ps do
coz ps = nil..

so.. its mean that you missed that part.
Цитата:
function SetStruct(const struct: PPluginStruct): Boolean; stdcall;
begin
ps := struct^;
Result:=True;
end;
Добавлено через 4 минуты
your plugin must contain this code (every plugin MUST)

delphi Код:
library plugname; uses   FastMM4,   usharedstructs; var ps: TPluginStruct; function GetPluginInfo(const ver: Integer): PChar; stdcall; begin     Result:='Plugindescription'; end; function SetStruct(const struct: PPluginStruct): Boolean; stdcall; begin ps := struct^; Result:=True; end; exports   GetPluginInfo,   SetStruct; begin end.

Добавлено через 11 минут
also. about
ps.ConnectInfo

before using it you must call ps.GoFirstConnection

example
delphi Код:
with ps do begin   if GoFirstConnection then   begin        //now ConnectInfo contains data of first active connection in ph.     //so we can use it.   end else   begin   //ph dont have intercepted connections.   end; end;

Добавлено через 7 минут
we got GoNextConnection function. its used to enumerate all present connections.

example

delphi Код:
buf := 'we want send this data to all intercepted connections'; with ps do   if GoFirstConnection then     repeat       SendPacketStr(buf, ConnectInfo.ConnectID, False);     until GoNextConnection;
__________________
L2Ext - project closed.

Последний раз редактировалось alexteam, 19.06.2009 в 19:55. Причина: Добавлено сообщение
alexteam вне форума   Ответить с цитированием
За это сообщение alexteam нажился спасибкой от:
Старый 19.06.2009, 18:58   #13
Пользователь
 
Аватар для charly911
 
Регистрация: 20.05.2008
Адрес: Arg.
Сообщений: 35
Сказал Спасибо: 2
Имеет 3 спасибок в 2 сообщенях
charly911 пока неопределено
По умолчанию

Hi alexteam, i have in the plugin all you told me, but i still get an error.
I will describe yo step by step what i did:

Open RAD 2007
File -> New -> Other.. -> DLL Wizard
Paste code.
Build -> OK
Compile -> OK
Copy new dll to {L2phDir}/plugins
Start L2ph
Open L2 -> Login
Conection intercepted
Activate plugin
¡¡ Error !!


Charly.
charly911 вне форума   Ответить с цитированием
Старый 19.06.2009, 19:19   #14
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

can you post it's source ?
__________________
L2Ext - project closed.
alexteam вне форума   Ответить с цитированием
Старый 19.06.2009, 19:33   #15
Пользователь
 
Аватар для charly911
 
Регистрация: 20.05.2008
Адрес: Arg.
Сообщений: 35
Сказал Спасибо: 2
Имеет 3 спасибок в 2 сообщенях
charly911 пока неопределено
Сообщение

Here you are:
delphi Код:
library PruebaPlugin; {$define Release} // для совместимости с релизом пакетхака, при дебуге можно закоментировать uses   FastMM4,   usharedstructs; const PlayerName = 'PentA'; var                                {version} {revision}   min_ver_a: array[0..3] of Byte = ( 3,4,1,      46   );   min_ver: Integer absolute min_ver_a; // минимальная поддерживаемая версия программы   ps: TPluginStruct; // структура передаваемая в плагин // Обязательно вызываемая функция. // Должна вернуть описание плагина, // заодно может проверить версию программы function GetPluginInfo(const ver: Integer): PChar; stdcall; begin   if 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; // с сервером? begin end; // Необязательно вызываемая функция. (может отсутствовать в плагине) // Вызывается при разрыве соединения (cnt) с клиентом (withServer=False) // или сервером (withServer=True) procedure OnDisconnect(const cnt: Cardinal; // номер соединения                        const withServer: Boolean); stdcall; // с сервером? begin end; // Необязательно вызываемая функция. (может отсутствовать в плагине) // Вызывается при выгрузке плагине procedure OnFree; stdcall; begin end; // Необязательно вызываемая функция. (может отсутствовать в плагине) // Вызывается при загрузке плагине procedure OnLoad; stdcall; var buf : string; begin with ps do   begin   if GoFirstConnection then         begin                 buf:=HexToString('4A 00 00 00 00');                 WriteD(buf,2);                 WriteS(buf,'Hola');                 SendPacketStr(buf,ConnectInfo.ConnectID,False);         end;   endend; // Необязательно вызываемая функция. (может отсутствовать в плагине) // Вызывается при вызове скриптовой функции обьявленной в RefreshPrecompile function OnCallMethod(const MethodName: String; // имя функции в верхнем регистре                       var Params, // параметры функции                       FuncResult: Variant // результат функции          ): Boolean; stdcall; // если вернёт True то дальнейшая                               // обработка функции прекратиться begin   Result:=False; // передаём обработку функции программе   if MethodName='PI' then begin     Result:=True; // запрещаем дальнейшую обработку функции в программе     FuncResult:=Pi;   end; end; // Необязательно вызываемая функция. (может отсутствовать в плагине) // Вызывается перед компиляцией скриптов function OnRefreshPrecompile(var funcs: TStringArray): Integer; stdcall; begin   SetLength(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; begin   if pck.size<3 then exit; // на случай если предыдущие плагины обнулили пакет end; // экспортируем используемые программой функции exports   GetPluginInfo,   SetStruct,   OnPacket,   OnConnect,   OnDisconnect,   OnLoad,   OnFree,   OnCallMethod,   OnRefreshPrecompile; begin end.

Charly.
charly911 вне форума   Ответить с цитированием
Старый 19.06.2009, 19:50   #16
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

one thing... my fail....
delphi Код:
function SetStruct(const struct: PPluginStruct): Boolean; stdcall; begin ps := struct^; Result:=True; end;
__________________
L2Ext - project closed.
alexteam вне форума   Ответить с цитированием
Старый 19.06.2009, 19:58   #17
Пользователь
 
Аватар для charly911
 
Регистрация: 20.05.2008
Адрес: Arg.
Сообщений: 35
Сказал Спасибо: 2
Имеет 3 спасибок в 2 сообщенях
charly911 пока неопределено
Вопрос

ps := struct^; Error : pointer type required o.O

Charly.
charly911 вне форума   Ответить с цитированием
Старый 19.06.2009, 20:00   #18
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

SetStruct(const struct: PPluginStruct)
__________________
L2Ext - project closed.
alexteam вне форума   Ответить с цитированием
Старый 19.06.2009, 20:12   #19
Пользователь
 
Аватар для charly911
 
Регистрация: 20.05.2008
Адрес: Arg.
Сообщений: 35
Сказал Спасибо: 2
Имеет 3 спасибок в 2 сообщенях
charly911 пока неопределено
По умолчанию

Compiled, built, but still getting error, im going crazy

Код:
Access violation at address 013952C4 in module 'PruebaPlugin.dll'. Write of address 1325C4A0.

Exception class: EAccessViolation
Exception message: Access violation at address 013952C4 in module 'PruebaPlugin.dll'. Write of address 1325C4A0.
Exception address: 013952C4
Charly.
charly911 вне форума   Ответить с цитированием
Старый 19.06.2009, 21:43   #20
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

procedure OnPacket(const cnt: Cardinal; const fromServer: Boolean; const connectionname:string; var pck: TPacket); stdcall;

Добавлено через 3 минуты
fully work project.
http://ifile.it/qfbtl7c
i hope its will be usefull.
__________________
L2Ext - project closed.

Последний раз редактировалось alexteam, 19.06.2009 в 21:47. Причина: Добавлено сообщение
alexteam вне форума   Ответить с цитированием
За это сообщение alexteam нажился спасибкой от:
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 17:27.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!