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

Разработка Раздел для совместной разработки/доработки программы

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
 
 
Опции темы Опции просмотра
Старый 10.07.2008, 09:24   #1
Рыцарь
 
Аватар для QaK
 
Регистрация: 28.09.2007
Сообщений: 1,558
Сказал Спасибо: 71
Имеет 351 спасибок в 244 сообщенях
QaK пока неопределено
По умолчанию L2PacketHack 3.1.8 AE (Advanced Edition)

Итак после ряда терзаний мозга и т.д. получилось сваять ПНХ с поддержкой длл, более-менне стабильно. Разработано совместно с Гринчем. Итак приступим:

Теперь в ПНХ (весия 3.1.8) исть 2 штуки для работы с длл - процедура и функция. Обо всем по-порядку:

Процедура: CallPr
Исходный текст:
delphi Код:
if MethodName = 'CALLPR' then begin     @TestProc := nil;     @TestProc := GetProcAddress(Cardinal(Params[0]),PAnsiChar(VarToStr(Params[1])));     if @TestProc <> nil then begin       Count := Params[2];       setLength(popa,count);       for i:=0 to Count-1 do       popa[i]:=PChar(VarToStr(Params[3][i]));       TestProc(popa);     end;        @TestProc:=nil;   end else //еще в раздел переменных функции TL2PacketHackMain.CallMethod добавить //TestProc: procedure (ar:array of PChar);stdcall;  
Добавление метода в фаст скрипт:
delphi Код:
fsScript.AddMethod('procedure CallPr(LibHandle:integer;FunctionName:String;Count:Integer;Params:array of variant)',CallMethod);

Функция: CallFnc
Исходный текст:
delphi Код:
if MethodName = 'CALLFNC' then begin       @TestFunc := nil;       @TestFunc := GetProcAddress(Cardinal(Params[0]),PAnsiChar(VarToStr(Params[1])));        if @TestFunc <> nil then begin         Count := Params[2];         setLength(popa,count);         for i:=0 to Count-1 do         popa[i]:=PChar(VarToStr(Params[3][i]));         Result:=StrPas(TestFunc(popa));       end;          @TestFunc:=nil;     end else //еще в раздел переменных функции TL2PacketHackMain.CallMethod добавить //TestFunc: function (ar:array of PChar):Pchar;stdcall;  
Добавление метода в фаст скрипт:
delphi Код:
fsScript.AddMethod('function CallFnc(LibHandle:integer;FunctionName:String;Count:Integer;Params:array of variant):string',CallMethod);

использование: при создании дллки описание должно выглядеть
для процедуры
delphi Код:
procedure MyNazvanie(s:array of PChar);stdcall;export; var param1:integer; param2:string; begin param1:=StrToInt(StrPas(s[0])); param2:=StrPas(s[1]); end;

для функции
delphi Код:
function MyNazvanie(s:array of PChar):PChar;stdcall;export; var param1:integer; param2:string; begin param1:=StrToInt(StrPas(s[0])); param2:=StrPas(s[1]); Result:=PChar(IntToStr(param1)+' '+param2); end;

З.Ы. CallFnc возвращает string;

З.Ы.Ы. TestDLL - тестовая дллка и скрипт для передачи/приема различных данных, Temp_Project - для передачи пакета в дллку (полностью) и разбор пакета уже непосредственно в дллке.

З.Ы.Ы.Ы. в ПНХ добавлена функция StrToHex, чтоб посылать пакет в дллку нужно обязательно его в хекс перевести иначе возникает проблемма в преобразовании типов и пакет передается не полностью.

З.Ы.Ы.Ы.Ы. Большое спасибо модерам и админу за помощь в создании сего продукта =) Гринч, выкинь сюда весь исходник и перекомпиленную пнх, последнюю, ну ты знаешь какую =)
Вложения
Тип файла: rar Testdll.rar (213.0 Кб, 438 просмотров)
Тип файла: rar Temp_Project.rar (177.3 Кб, 417 просмотров)
Тип файла: rar l2pbxAE.rar (662.6 Кб, 2431 просмотров)

Последний раз редактировалось QaK, 17.07.2008 в 11:15.
QaK вне форума   Ответить с цитированием
За это сообщение QaK нажился 7 спасибками от:
 

  CoderX :: Forums > Lineage II > L2PacketHack > Разработка



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

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


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

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

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