L2PacketHackФорум программы L2PacketHack, всё что с ней связано находится тут.
Правила раздела!
Категорически запрещено:
* Просить пакеты/скрипты на шмот/адену/другие вещи;
* Просить (помочь) взломать/сломать сервак/аккаунт или раздеть/наказать кого-то на любом серваке;
* Просить научить работать с программой, если не понимаете элементарных вещей в отношениях клиент-сервер (так как, если вы их понимаете, то вопросов по основным возможностям программы быть недолжно);
* Все посты не удовлетворяющие этим запретам, а так же не относящиеся к теме будут удаляться при первой возможности.
* Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы.
* Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
* Данные запреты неподлежат обсуждению.
//QaK:отдельная тема по подкючению пакетхака к серверу >>>>>>>>тут
любые вопросы по данной тематике в этом топе будут удаляться без предупреждения.
Код:
const
mp='8A 1B 15 01 10';
hp='8A 1A 15 01 10';
begin
if fromclient and (pck[1]=#$38#$F5#$00#$EF#$00#$00#$00#$03#$00#$00#$00) then
begin
buf:=hstr(hp);
SendToServer;
end;
if fromclient and (pck[2]=#$33#$F5#$00#$EF#$00#$40#$00#$03#$00#$00#$00) then
begin
buf:=hstr(mp);
SendToServer;
end;
end.
где я ошибся?
Последний раз редактировалось QaK, 30.08.2010 в 18:56.
procedure SendMsc(msc:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(msc);
SendToClientEx(Name);
end;
Без этой функции в процедуре Инит тоже ничего не работает, не создается экземпляр таймера. Пока обошел этот лаг написав буквальный вызов процедуры Init в основном коде обработки пакетов. При первом её вызове она выставляет параметр в труе и больше не запускается, а как быть с функцией запускаемой при остановке скрипта - Free?
Вот весь код скрипта:
Код:
const
//======================================
Name='BOPOH'; //<-----Ник Персонажа
//======================================
var
//a:integer;
//x:integer;
//MyID:string;
//y:integer;
//z:integer;
//ValidatePosition:string;
b:boolean;
InitStart:boolean;
timer:TTimer;
procedure Init; //Вызывается при включении скрипта
begin
SendMsc('Скрипт стартовал');
UseForConnectName:=Name;
timer:=TTimer.Create(nil);
timer.interval:=500; //Скорость распития ЦП в мили. сек., чем меньше число тем быстрее
timer.OnTimer:=@OnTimer;
timer.enabled:=false;
InitStart:=true;
end;
procedure OnTimer(Sender: TObject);
begin
SendMsc('Съел ЦП баночку)');
end;
procedure SendMsc(msc:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(msc);
SendToClientEx(Name);
end;
procedure UseCP;
begin
buf:=#$19;
WriteD(268907985);
WriteD(0);
SendToServerEx(Name);
end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
if InitStart<>true then Init();
//Нечитаем пустые пакеты
if pck='' then exit;
//Если Имя соединения Name
//И Пакет Action от клиента то
if FromClient and (ConnectName=Name)
and (pck=hstr('49 2E 00 61 00 75 00 74 00 6F 00 63 00 70 00 00 00 00 00 00 00')) //пакет сказать в чат .autocp
then begin
if b=true then begin
b:=false;
timer.enabled:=false;
SendMsc('режим autocp выключен'); //Оповещаем юзера
end
else begin
b:=true;
timer.enabled:=true;
SendMsc('режим autocp включен'); //Оповещаем юзера
end;
pck:='';
end;
if FromServer and (ConnectName=Name) and (pck[0]='#$18') then
begin
SendMsc('Пакет пойман!');
end;
end.
procedure Free; //Вызывается при выключении скрипта
begin
timer.free;
end;
Это недоделка для автохаванья ЦП банок, пока только по таймеру выводит надпись "Съел ЦП баночку)"
Последний раз редактировалось Velizarx, 17.05.2011 в 21:19.
Как обычно и узнают) запускаю скрипт и смотрю на состояние переменных, экземпляр класса таймер и прочее даже не существует, хотя если буквально вызывать функцию (как у меня в коде выше) то все нормально работает и в списке переменных видно что значения заполнились и всё в порядке. Функция печати тут не причем, туда что не запихни все не пашет. Например инкримент переменной со значением 1 делал в этой функции, и смотрел результат, инкримент не выполнялся тоже.
На всякий случай попробую добавить эту строчку щас.
Добавлено через 14 минут
Ооо, заработала на удивление после вписывания строки SendMsg(' Init start '); в процедуру Инит, не могли бы вы пояснить как это работает, ведь по моему вызов такой строки всего лишь должен был вывести в чат фразу "Init start"? и как можно осушествить запуск процедуры Free?
Мммм методом тыка определил что функция работает даже если удалить строку совсем, может дело было в том что на этой строке возникала ошибка? в связи с тем что функция SendMsc не была инициализирована еще? (Просто я слабовато паскаль знаю, пишу на Си подобных языках)
Последний раз редактировалось Velizarx, 18.05.2011 в 00:32.
Причина: Добавлено сообщение
Процедура Free выполняется при снятии галочки с скрипта (выключение скрипта). Процедура SendMsc выводит сообщения в лог пакетхака, но если объявить ее в скрипте с другими командами (как было сделано выше), то она будет выполнять эти команды.
А процедура Init не выполнялась раньше именно из за того, что останавливалась на этой строке и завершалась, не успев создать таймер.
__________________
В любом из нас спит гений. И с каждым днем все крепче.
Ок, спасибо, а можно ли в пакетхаке скриптом реализовать отправку игровой почты, версия Л2 - Freya, отлавливал пакеты но там бред какой-то не расшифрованный.
__________________ На фразы в аську типа "слух карочь 1)как точить 2)как раскачаться за 5 мин" - игнор. ИМХО идиотизм
Дай голодному рыбу - он будет один день сыт. Покажи ему, как удить рыбу - он пошлёт тебя и скажет, что у него есть более интересные занятия, чем забрасывать снасти в воду
David Kastrup @ de.comp.text.tex.
"Приобретенные навыки общения с маленькими детьми - сильно упрощают взаимопонимание на форумах..."
А вы знаете, что для качественной сварки - место шва нужно протереть спиртом?
Да действительно в инишке PacketsFreya.ini пакет D066=BR_ProductList:h(subID) лежит, но у меня версия пакетхака и так последняя 166 с форума. Может где выкладывались нормальные ини под фрею, или не могли бы вы скинуть мне такую инишку)
Добавлено через 2 минуты
Пока попробую скопировать вашу строку расшифровки в ини, но все равно буду очнь благодарен за "прямую" инишку
Уважаемые, подскажите.
Задача такая: Нужно в L2phx реализовать проигрывание звукового файла.
Не важно как, главное что бы пошел звук с колонок.
Попробовал чез вин. dll-ки
ну примерно так:
Код:
var
lib:Integer;
Res:variant;
begin
lib := loadLibrary('c:\WINMM.DLL');
Res := CallFunction(lib,'mciSendString',1,['"play c:\test.wav wait"', 'NULL',1,'NULL']);
FreeLibrary(lib);
end.
Но глухо, нечего не происходит, даже не материться.
Подскажите, как возможно реализовать данную задачу!?
//J-Fobos: Вот в этой теме как раз обсуждается проигрывание звука. Я пользуюсь функцией MessageBeep из user32.dll
Последний раз редактировалось J-Fobos, 21.05.2011 в 14:47.
Подскажите из какого пакета можно узнать что моего чара взяли в таргет?
//Breadfan: для Freya - 23=TargetSelected:d(ObjectID)d(TargetID)d(X)d(Y)d( Z)d(unk)
Спс, ммм там все таргеты посылаются от то всех чаров которые вокруг.
//Breadfan: d(ObjectID) - кто выделяет, d(TargetID) - кого выделяет. Сравнивай TargetID с OID своего перса - и так выяснишь взял ли ктото тебя в таргет.
Последний раз редактировалось Breadfan, 21.05.2011 в 20:18.