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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 20.05.2010, 17:40   #1
Новичок
 
Аватар для Neutron
 
Регистрация: 04.03.2010
Сообщений: 2
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
Neutron пока неопределено
Подмигивание loadLibrary и CallFnc

Есть какие новости по использованию данной функции?
CallFnc(LibHandle:integer;FunctionName:String;Coun t:Integ er;Params:array of variant):String

Или как передавать из DLL строковые параметры.
Способ который используется в Бот DLL (передача по 1 букве в виде индекса в массиве) не расматриваю, так как это связанно с повышенной нагрузкой скрипта. И лагами в игре. Хотя и он имеет право на жизнь.

Мне нужно передавать именно строки целиком. Что снизит нагрузку на скрипт.
У кого либо получилось передавать строки, ктоме как в цифромом виде?
Если да то пожалуйста можно посмотреть на исходник DLL и кусок скрипта в котором это дело происходит.
Использую L2phx 3.5.33.164

Добавлено через 5 часов 39 минут
Не у кого проблем значит нет?
После копания в исходниках и по просторам Интернета передача строк получилась!
В исходниках функция описана следующим образом:
TestFunc: function (ar:array of PChar):Pchar;stdcall;

Отсюда вытекает что и в DLL она должна быть описана аналогично.

В DLL создаем функцию такого вида:
---------------------------------------------------------------
function getr(ar:array of PChar):Pchar;stdcall; {<- только так}
begin
Result :=PAnsiChar(StrPas(Param[0]) +StrPas('Старт 1234567890 ASRTP Конец')); // Результат будет: первый паремерт переданный в функцию + строковая константа
end;
exports getr;
---------------------------------------------------------------
В скрипте:
---------------------------------------------------------------
var
S :string;
begin
lib:=loadLibrary('D:\Temp\test1.dll');
S := CallFnc(lib, 'getr',1,[i]);
SendMessage_Client('Result = '+S);
FreeLibrary(lib);
end;
---------------------------------------------------------------
Работает отлично

Последний раз редактировалось Neutron, 20.05.2010 в 17:40. Причина: Добавлено сообщение
Neutron вне форума   Ответить с цитированием
Старый 20.05.2010, 19:15   #2
Рыцарь
 
Аватар для QaK
 
Регистрация: 28.09.2007
Сообщений: 1,558
Сказал Спасибо: 71
Имеет 351 спасибок в 244 сообщенях
QaK пока неопределено
По умолчанию

Neutron, вообще все тобой описанное - первые попытки подружить пакетхак с дллками, до 83й версии пакетхака имелась возможность использовать плагины, после, ввиду действия непреодолимой силы, плугины, как они есть, поломались, но, если написать свою процедурку для считывания данных, которую добавит плугин, то, по-прежнему можно юзать плагины, хотя, никто, кроме меня, их толком и не счупал, кажется ..
QaK вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack



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

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


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

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

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