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

Скриптинг Форум посвещенный созданию скриптов для L2PacketHack

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 04.01.2008, 04:40   #1
Пользователь
 
Аватар для skymanrus
 
Регистрация: 28.12.2007
Сообщений: 54
Сказал Спасибо: 0
Имеет 40 спасибок в 10 сообщенях
skymanrus пока неопределено
По умолчанию Запуск dll или exe из L2PacketHack

Собственно вот в чем вопрос:
возможно ли запускать с помощью какой то функции или команды из L2PacketHack другие экзешники
скажем я поставил скрипт бота на ночь а ночью бот ступил и сдох и в целях экономии электроэнергии мне хочется запустить экзешник который вырубает комп :)
или другой случай: в L2PacketHack конечно скрипты шустро пашут но если в скрипте больше 1000 строк и куча циклов то начинает несколько подтормаживать вот чтоб не загружать по уши работой L2PacketHack почему бы не написать на С++ или делфи екзешник для выполнения всех расчётов и всех циклов

в общем возможно ли это? если да то примерчик скриптика скиньте полиз :)
__________________
На людей сердишся, когда чувсивуешь, что их поступки важны. Ничего подобного я больше не чувствую...
skymanrus вне форума   Ответить с цитированием
Старый 04.01.2008, 13:32   #2
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию Re: Запуск exe из L2PacketHack

Вроде ДЛЛ подключать можно было. Что-то сейчас найти не могу, где видел.
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни


NLObP вне форума   Ответить с цитированием
Старый 04.01.2008, 13:50   #3
Пользователь
 
Аватар для skymanrus
 
Регистрация: 28.12.2007
Сообщений: 54
Сказал Спасибо: 0
Имеет 40 спасибок в 10 сообщенях
skymanrus пока неопределено
По умолчанию

если б можно было подключить длл это было бы вообще замечательно! :)
жду примера скрипта с нетерпением :)

я сам уже весь форум обыскал но ничего об длл подключении и экзешниках не нашел
__________________
На людей сердишся, когда чувсивуешь, что их поступки важны. Ничего подобного я больше не чувствую...
skymanrus вне форума   Ответить с цитированием
Старый 04.01.2008, 15:11   #4
Гость
 
Сообщений: n/a
По умолчанию

Код:
//sample.c
#define UNICODE
#include <windows.h>
#define DLL_EXPORT __declspec(dllexport) __stdcall
void DLL_EXPORT FromClient(wchar_t* pck)
{
    if (pck[0]==0x38 && pck[1]==0x78 && pck[3]==0x78)
        MessageBox(0,L"medved",L"preved",0);
}
BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved)
{
return TRUE;
}
Код:
//samplescript.txt
var
 lib:Integer;

procedure Init;
begin
 lib:=loadLibrary('sample.dll');
end;

procedure Free;
begin
 FreeLibrary(lib);
end;

begin
if FromClient then
 begin
  CallFunction(lib,'FromClient',1,[pck]);
 end;
end.
примерно вот так :D
  Ответить с цитированием
Старый 05.01.2008, 18:29   #5
Пользователь
 
Аватар для skymanrus
 
Регистрация: 28.12.2007
Сообщений: 54
Сказал Спасибо: 0
Имеет 40 спасибок в 10 сообщенях
skymanrus пока неопределено
По умолчанию

спасибо за пример rateg
но чёт в dll MessageBox(0,L"medved",L"preved",0); не пашет
я скрипт запускаю и ничего не происходит
а я так понял должно сообщение выскочить "medved preved" с кнопкой ок
ну это не так важно на самом деле

скажите а можно передать из dll файла переменные в L2PacketHack

к примеру есть такой код

в С++
Код:
//sample.c
#define UNICODE
#include <windows.h>
#define DLL_EXPORT __declspec(dllexport) __stdcall

int DLL_EXPORT FromClient(int i)
{
  int dda=133;
  return 56;
}

int DLL_EXPORT APIENTRY DllMain (int i )
{
    i=i+123;
    return 34;
}
а в L2PacketHack
Код:
//samplescript.txt
var
Res:variant; lib:Integer; timer1:TTimer;

procedure Init;
begin
timer1:=TTimer.Create(nil);
timer1.OnTimer:=@OnTimer;
timer1.enabled:=true; 
timer1.interval:=1000; 
lib:=loadLibrary('Project62.dll');
end;

procedure Free;
begin
FreeLibrary(lib);
timer1.Free;
end;

procedure OnTimer(Sender: TObject);  
begin
Res:=CallFunction(lib,'DllMain',1,[2]);
ShowMessage('!'+VarToStr(Res)+'!');
end;
begin
end.
эти два кода не к чему не ведут :(
переменные не передаются из dll

как передать при вызове dll значение переменной dda из dll в L2PacketHack ???

Добавлено спустя 23 часа 18 минут 16 секунд:
ну народ помогите плиз !!!
я не верю что здесь никто ничего не знает о подключении dll файлов :(
__________________
На людей сердишся, когда чувсивуешь, что их поступки важны. Ничего подобного я больше не чувствую...
skymanrus вне форума   Ответить с цитированием
Старый 06.01.2008, 03:38   #6
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию Re: Запуск dll или exe из L2PacketHack

Вот что нашел, может подойдет тебе.
Цитата:
Merdek 16 ноя 2007, 11:10
Проблема использования DLL написанной в Delphi.

Скомпелированная DLL лежит в той же папке, что и PacketHack 1.3.8
При вызове "CallFunction" вылетает ошибка "Invalid Argument".
Подскажите что не так...

Код:
Код DLL-ки в Delphi
library DLL;

uses
SysUtils,Classes;

function Str1(b:integer): string;
stdcall;
begin
if b=0 then
result := '1!'
else
result := '2!';
end;

exports
Str1 index 1 name 'op';

begin
end.
Код:
Код скрипта
var
lib, lib1:Integer;
Res:variant;
ar:array of variant;
str1: string;

procedure Init;

begin
str1:='0';

lib := loadLibrary('User32.dll');
lib1 := loadLibrary('DLL.dll');

Res:= CallFunction(lib1,'op',1,[0]);
str1:=Res;
Res := CallFunction(lib,'MessageBoxW',4,[nil,str1,'text2',0]);

FreeLibrary(lib);
FreeLibrary(lib1);
end;

begin
end;
dmitry501 16 ноя 2007, 12:24
Это кто тебя учил использовать дельфийские стринги без sharemem?
Почитай, что пишет Делфи, когда создаешь пустую dll
а лучше используй array of char с ручным управление памятью, как в классическом С.
Посмотри, как используются системные .dll, сначала подготавливаются буфера, а потом вызываются dll, причем передаются указатели на буфер.

Br1nk 11 дек 2007, 12:00
Если твоя строка будет меньше 256 символов, ты можешь вместо string использовать shortstring, не изменяя более ничего в программе.

function Str1(b:integer): shortstring;

Код:
//by Angel
Да дело не в сложности, а в удобо читаемости и в скорости работы.
dll не так уж сложно привязать (подгрузить к процесу).
пример привязки dll от xkor
Код:
var
lib,Lib1:Integer;
Res:variant;
ar:array of variant;
begin
lib := loadLibrary('User32.dll'); <--- -- привязка dll
|
lib1 := loadLibrary('GDI32.dll'); <---
Res := CallFunction(lib,'MessageBoxW',4,[nil,'Text1','text2',0]);
Res := CallFunction(lib,'GetDC',1,[0]);
CallFunction(lib1,'LineTo',3,[Res,100,100]);
CallFunction(lib,'ReleaseDC',2,[0,Res]);
FreeLibrary(lib);
FreeLibrary(lib1);
end.
главно dll нармально сделать, с нормальными названиями функций, процедур и тд
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни


NLObP вне форума   Ответить с цитированием
Старый 06.01.2008, 14:35   #7
Пользователь
 
Аватар для skymanrus
 
Регистрация: 28.12.2007
Сообщений: 54
Сказал Спасибо: 0
Имеет 40 спасибок в 10 сообщенях
skymanrus пока неопределено
По умолчанию

скопировал из system32 в директорию пакет хака 2 файла User32.dll и GDI32.dll
написал код в пакет хаке
Код:
var
lib,Lib1:Integer;
Res:variant;
ar:array of variant;
procedure Init;
begin
lib := loadLibrary('User32.dll');
lib1 := loadLibrary('GDI32.dll');
Res := CallFunction(lib,'MessageBoxW',4,[nil,'Text1','text2',0]);
Res := CallFunction(lib,'GetDC',1,[0]);
ShowMessage('!'+VarToStr(Res)+'!');
CallFunction(lib1,'LineTo',3,[Res,100,100]);
CallFunction(lib,'ReleaseDC',2,[0,Res]);
FreeLibrary(lib);
FreeLibrary(lib1);
end;
begin
end.
и все заработало
потом пытаюсь подключить какую то из своих dll и ничего не происходит :(((
можете исходный код на с++ работающего dll показать
который можно к пакет хаку подключить ?
тут с++ программеры есть ?

Добавлено спустя 11 минут 50 секунд:
Re: Запуск dll или exe из L2PacketHack
можете хотябы на делфи пример длл показать
вот я к примеру пишу такой код в делфи
Код:
library DLL;

uses
SysUtils,Classes;

function Str1: integer; stdcall;
begin
result := 2;
end;

exports
Str1 index 1;

begin
end.
а в пакет хаке такой
Код:
var
lib,Lib1:Integer;
Res:variant;
ar:array of variant;
procedure Init;
begin
lib := loadLibrary('Project2.dll');
Res := CallFunction(lib1,'Str1',1,[0]);
ShowMessage('!'+VarToStr(Res)+'!');
FreeLibrary(lib);
end;
begin
end.
мне все равно от длл приходит пустота :((
что не так то делаю ???
__________________
На людей сердишся, когда чувсивуешь, что их поступки важны. Ничего подобного я больше не чувствую...
skymanrus вне форума   Ответить с цитированием
Старый 06.01.2008, 16:06   #8
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию Re: Запуск dll или exe из L2PacketHack

{ Important note about DLL memory management: ShareMem must be the
first unit in your library's USES clause AND your project's (select
Project-View Source) USES clause if your DLL exports any procedures or
functions that pass strings as parameters or function results. This
applies to all strings passed to and from your DLL--even those that
are nested in records and classes. ShareMem is the interface unit to
the BORLNDMM.DLL shared memory manager, which must be deployed along
with your DLL. To avoid using BORLNDMM.DLL, pass string information
using PChar or ShortString parameters. }
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни


NLObP вне форума   Ответить с цитированием
Старый 07.01.2008, 19:29   #9
Пользователь
 
Аватар для skymanrus
 
Регистрация: 28.12.2007
Сообщений: 54
Сказал Спасибо: 0
Имеет 40 спасибок в 10 сообщенях
skymanrus пока неопределено
По умолчанию

я конечно не силён в техническом английском и тем более в делфи но мне кажется модуль ShareMem необходим, чтобы экспортировать длинные строки
а я пытаюсь экспортировать integer тоесть числа :(
строки кстати пытался с этим модулем экспортировать получил ту же пустоту :(
единственная длл которая у меня заработала это
Код:
library FIRSTDLL;

uses  ShareMem, Dialogs, Classes, SysUtils, Windows;

begin
 ShowMessage ('Initialization Code Called');
end
табличка выскакивает а переменные не передаются и не экспортируются :((((((((
HELP!!!!!!!!!!!!

Добавлено спустя 1 день 1 час 19 минут 42 секунды:
люди ну я внатуре себе уже мозги поломал над этой фигнёй :( мож поможете?
я прост хочу сделать надстройку к пакет хаку тоесть написать длл который будет связан с экзешником написанном на делфях который будет очень похож на валкера
ну в общем хочу сделать вариант ин гейм бота но без знания как связать длл с пакет хаком ничё не выйдет :((
__________________
На людей сердишся, когда чувсивуешь, что их поступки важны. Ничего подобного я больше не чувствую...
skymanrus вне форума   Ответить с цитированием
Старый 07.01.2008, 19:41   #10
Гость
 
Сообщений: n/a
По умолчанию

А в пакетхаке судя по всему не работает нормально вызов DLL.
Проверил твою DLL в WP PPC - вызов из скриптов там работает нормально, а вот в пакетхаке нет.
  Ответить с цитированием
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг


Опции темы
Опции просмотра

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

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


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

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

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