Вернуться   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 l2pbxAE.rar (662.6 Кб, 2433 просмотров)
Тип файла: rar Testdll.rar (213.0 Кб, 438 просмотров)
Тип файла: rar Temp_Project.rar (177.3 Кб, 417 просмотров)

Последний раз редактировалось QaK, 17.07.2008 в 11:15.
QaK вне форума   Ответить с цитированием
За это сообщение QaK нажился 7 спасибками от:
Старый 13.07.2008, 14:59   #2
Пользователь
 
Аватар для Emocean
 
Регистрация: 04.02.2008
Сообщений: 63
Сказал Спасибо: 44
Имеет 25 спасибок в 15 сообщенях
Emocean
По умолчанию

В TestDll и в Temp_Project лежит один и тот же проект. Так и должно быть?..
Emocean вне форума   Ответить с цитированием
Старый 14.07.2008, 08:48   #3
Рыцарь
 
Аватар для QaK
 
Регистрация: 28.09.2007
Сообщений: 1,558
Сказал Спасибо: 71
Имеет 351 спасибок в 244 сообщенях
QaK пока неопределено
По умолчанию

Упс, мой косяк =) Щас поправлю.

Добавлено через 5 минут
Перезалил TestDll.

Последний раз редактировалось QaK, 14.07.2008 в 08:48. Причина: Добавлено сообщение
QaK вне форума   Ответить с цитированием
За это сообщение QaK нажился 2 спасибками от:
Старый 17.07.2008, 11:15   #4
Рыцарь
 
Аватар для QaK
 
Регистрация: 28.09.2007
Сообщений: 1,558
Сказал Спасибо: 71
Имеет 351 спасибок в 244 сообщенях
QaK пока неопределено
По умолчанию

От нечего делать в Temp_Project дописал процедурки Write, аналогичные пнх. Если кого-то интересует - могу выложить обновленный Temp_Project. И вообще вопрос, кто-то юзает эту версию пнх для работы с дллками, и если юзают, то что конкретно пытаетесь реализовать?

Добавлено через 1 час 43 минуты
В общем залил новый Temp_project.

Последний раз редактировалось QaK, 17.07.2008 в 11:15. Причина: Добавлено сообщение
QaK вне форума   Ответить с цитированием
За это сообщение QaK нажился 2 спасибками от:
Старый 17.07.2008, 18:04   #5
Рыцарь
 
Аватар для Grinch
 
Регистрация: 29.02.2008
Сообщений: 928
Сказал Спасибо: 127
Имеет 130 спасибок в 93 сообщенях
Grinch пока неопределено
По умолчанию

короче говоря я ток компилил в личку не пишите ) для меня ет тёмный лес пока что ) жду бота )
Grinch вне форума   Ответить с цитированием
Старый 18.07.2008, 18:13   #6
Местный
 
Аватар для PanAm
 
Регистрация: 18.01.2008
Сообщений: 286
Сказал Спасибо: 24
Имеет 133 спасибок в 80 сообщенях
PanAm
По умолчанию

А с 3.2.0 можете это сделать? Пожалуста.
PS. И еще, ну очень нехватает функции посылки нажатий клавишь в окно. )))
PanAm вне форума   Ответить с цитированием
Старый 19.07.2008, 20:41   #7
Рыцарь
 
Аватар для QaK
 
Регистрация: 28.09.2007
Сообщений: 1,558
Сказал Спасибо: 71
Имеет 351 спасибок в 244 сообщенях
QaK пока неопределено
По умолчанию

Цитата:
Сообщение от PanAm Посмотреть сообщение
А с 3.2.0 можете это сделать? Пожалуста.
PS. И еще, ну очень нехватает функции посылки нажатий клавишь в окно. )))
что тебя в 3.1.8 не устраивает? Посылка нажатий клавишь в окно - это не к пнх, существует ряд программ, зачем тебе посылать нажатие клавиши,для какой цели. Теоретичеки сам можешь добавить в 3.2.0 эти функции/процедуры, в первом посте приведен исходный код, и куда его пихать. Просто у меня нет дельфи 2007й =)
QaK вне форума   Ответить с цитированием
Старый 24.07.2008, 00:27   #8
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

Цитата:
Сообщение от QaK Посмотреть сообщение
З.Ы.Ы.Ы. в ПНХ добавлена функция StrToHex, чтоб посылать пакет в дллку нужно обязательно его в хекс перевести иначе возникает проблемма в преобразовании типов и пакет передается не полностью.
Выложи main.pas, чтобы я сделал 3.2.0. Мне не хватает определения для функции StrToHex
Вот пока без нее:

Последний раз редактировалось NLObP, 14.10.2008 в 02:16.
NLObP вне форума   Ответить с цитированием
Старый 24.07.2008, 08:38   #9
Рыцарь
 
Аватар для QaK
 
Регистрация: 28.09.2007
Сообщений: 1,558
Сказал Спасибо: 71
Имеет 351 спасибок в 244 сообщенях
QaK пока неопределено
По умолчанию

В CallMethod добавить
delphi Код:
if MethodName = 'STRTOHEX' then Result:=StringToHex(Params[0],'') else
В RefreshPrecompile добавить
delphi Код:
fsScript.AddMethod('function StrToHex(Str:String):String',CallMethod);

Последний раз редактировалось QaK, 24.07.2008 в 12:53.
QaK вне форума   Ответить с цитированием
Старый 26.07.2008, 06:48   #10
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

Выложил в разделе файлов скомпилированную версию 3.2.1 и 3.1.8 с поддержкой ДЛЛ.

ЗЫЖ В закладке Скрипты по ctrl+s сохраняет скрипт, плюс еще немного незначительных изменений.
NLObP вне форума   Ответить с цитированием
За это сообщение NLObP нажился 4 спасибками от:
Ответ

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



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

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


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

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

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