PDA

Просмотр полной версии : надо подобрать шмотку.


destructor
29.09.2009, 19:43
var
oID:integer;


procedure Init; //will be called on script initialization
begin
end;

procedure Free;
begin
end;

begin
if fromserver then
if pck[1] = #$16 then //если выпал дроп.
begin
oID:= ReadD(10);
if oID = 6656 then //серяем дроп с необходимым мне ИД
begin
WriteC($A5); //собираем пакет "подобрать"
WriteD(ReadD(6));
WriteD(ReadD(14));
WriteD(ReadD(18));
WriteD(ReadD(22));
WriteC(0);

SendToServer; //отправляем
end;
end;
end.
проверил , вроде все работает

но возможно сервер этот пакет не обработает,
как мне заставить спамить этот пакет постоянно , пока юзер не отключит скрипт?

alexteam
29.09.2009, 19:52
бла...

1. ты уверен что в акшин это пакет с инд А5 а не 1F
2. ты уверен что в него лепятся координаты шмотки ? )))

Добавлено через 1 минуту
исправь.. и спамить не прийдеццо.

destructor
29.09.2009, 20:01
тут в "полезностях" тестовый сервер,
сами пакеты брал оттуда.

входящие с сервера в пакет.ини прописаны красиво,
а вот исходящие из клиента все через жопу... я хз может чо там одмин заодминил.

на счет координат, тоже уверен, я оригинальные пакеты какбы видел, 99% координаты.

и вообще проверил, все работает.

alexteam
29.09.2009, 20:02
var
Myx, MyY, Myz : integer;
maskval : array [0..100] of variant;
PickupOid:integer;
pickuptimer : ttimer;


procedure OnTimerHandler(sender:tobject);
begin
pickup(PickupOid);
end;

procedure Init; //will be called on script initialization
begin
Myx := 0;
Myy := 0;
Myz := 0;
pickuptimer := ttimer.create(nil);
pickuptimer.interval := 1000;
pickuptimer.enabled := false;
pickuptimer.ontimer := @OnTimerHandler;
end;

procedure Free; //This method calls when script don't need anymore
begin
pickuptimer.free;
end;



procedure Pickup(Oid:integer);
begin
if (myx = 0) and (myy = 0) and (myz = 0) then exit;

//1F=Action:d(ObjectID)d(OrigX)d(OrigY)d(OrigZ)c(Act ionID)
WriteMask('cddddc',[$1F, oid, myx, myy, myz, 0]);
SendToServer;
end;

//Primary part of dcript
//calls alltime when l2ph got new packet
begin

if fromserver then
case pck[1] of
#$0C://DropItem:d(PlayerID)d(ObjectID)d(ItemID:Get.Func01 )d(X)d(Y)d(Z)d(Stackable)d(Count)d(1)
begin
ReadMask('ddddddddd',2,maskval);
if maskval[2] = 6656 then
begin
pickupoid := maskval[1];
pickuptimer.enabled := true;
OnTimerHandler(nil);
end;

end;
#$12 : //(DeleteObject)
begin
if readd(2) = pickupoid then
begin
pickupoid := 0;
pickuptimer.enabled := false;
end;
end;

end;

if fromclient then
case pck[1] of
#$59:// 59=ValidatePosition:d(X)d(Y)d(Z)d(Heading)d(Data)
begin
ReadMask('ddddd',2,maskval);
myx := maskval[0];
myy := maskval[1];
myz := maskval[2];
end;
end;

end.

destructor
29.09.2009, 20:07
исправь.. и спамить не прийдеццо.вдруг передомажила не моя пати, и дроп 5 секунд подобрать нельзя => пакет не обработается.

Добавлено через 4 минуты
так туда нужны свои координаты? :)

alexteam
29.09.2009, 20:17
переделал. смотри выше.

из бота локомотива. в нем атака и подьем вещи одной процедурой оформлены (пакет один и тот же)


procedure PhisicalAttack; // команда атаки
begin
buf:=#$04; //action
WriteD(TargetID);
WriteD(MyX);
WriteD(MyY);
WriteD(MyZ);
WriteC(0);
SendToServerEx(NickName);
end;


так же по идее, при команде атаки серверу важнее знать где находишся ты а не таргет (где таргет то он и так знает)
а вот твои координаты то как они в клиенте "отрисованы" ему интересней..

Добавлено через 58 секунд
правда в идеале.. надо эти Оайди в тлист совать... и выдергивать оттуда поочереди.. ибо если вывалиццо несколько штук - подымать будет последнюю онли.
так же обрабатывать ситуаци когда лут невозможно поднять (из за гео) либо по другой причине, и при акшине чар остаеться стоять на месте..
и т.д. и т.п.

destructor
29.09.2009, 20:21
во, круть, спасибо,
а то у знакомых задротов уже 2 раза антарас серьгу увели:)

Добавлено через 3 минуты
так же по идее, при команде атаки серверу важнее знать где находишся ты а не таргет (где таргет то он и так знает)
а вот твои координаты то как они в клиенте "отрисованы" ему интересней..сервер знает мои координаты, ему не пофик что мне отбразил клиент?

alexteam
29.09.2009, 20:21
хай проверят на аденке (57) сначала..
ибо еще что меня настораживает это тип пакета А5 (WriteC($A5); //собираем пакет "подобрать")

destructor
29.09.2009, 20:24
ибо если вывалиццо несколько штук - подымать будет последнюю онли.несколько на абисе не падает

так же обрабатывать ситуаци когда лут невозможно поднять (из за гео) либо по другой причине, и при акшине чар остаеться стоять на месте..
и т.д. и т.п.ну тоже какбы уже лишнии понты:)

Добавлено через 1 минуту
ибо еще что меня настораживает это тип пакета А5 (WriteC($A5); //собираем пакет "подобрать")по месту допилим,
да и образец серьги есть

alexteam
29.09.2009, 20:32
ааа, ты про абисс... вот те http://coderx.ru/showpost.php?p=39042&postcount=20
там действительно издевательство с пакетами.

Добавлено через 1 минуту
поправил скрипт в соответствии с абиссом

Добавлено через 1 минуту
образец серьги не над..
измени 6656 на 57 и потыкайте мобов, на предмет подымает он аденку или нет.
интервал таймера тоже можешь изменить с 1000мс до скажем 200мс. будет спамить пока она не исчезнет с пола.
ах.. да.. после включения скрипта надо сдвинуцца хоть чуть чуть.. только тогда он станет подымать упавшее на землю..

destructor
18.11.2009, 03:08
\l2phx.3.5.24.142\settings\PacketT2.ini
A5=PickItem:d(objID)d(x)d(y)d(z)b(?)
эт чо?:D

alexteam
18.11.2009, 12:20
во первых... обновись до 151. она как бы вылизана до блеска.. ну.. почти до блеска..
во вторых... де ты это нарыл ? -)
в третих.. то что ты отрыл - по формату очень смахивает на пакет
Action:d(ObjectID)d(OrigX)d(OrigY)d(OrigZ)c(Action ID)

destructor
18.11.2009, 14:41
во вторых... де ты это нарыл ? -)
тут:
\l2phx.3.5.24.142\settings\PacketT2.ini
//////////////////////////////////////////////////////////////////////////////////
//для L2PacketHack 3.4.1+ //
//////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////
// //
// правка пакетов Gracia Final by NLObP по данным www.l2jserver.com //
// //
//////////////////////////////////////////////////////////////////////////////////

Добавлено через 3 минуты
в третих.. то что ты отрыл - по формату очень смахивает на пакет
Action:d(ObjectID)d(OrigX)d(OrigY)d(OrigZ)c(Action ID)сматри там как,
я могу подобрать дроп, кликнув по нему мышкой, будет #1F Action
а могу спец кнопкой /pickup, тогда будет #A5=PickItem

Добавлено через 2 минуты
по данным www.l2jserver.com
да, на русофе эти пакеты тож работают

alexteam
18.11.2009, 15:23
мла... не повериш..
у меня этого объявления в пх нет...
т.к. пишу бота то ошиваюсь очень часто тут (http://www.l2jserver.com/trac/browser/trunk/L2_GameServer/java/net/sf/l2j/gameserver/network/L2GamePacketHandler.java) и не поверишь... там тоже нет -)

destructor
18.11.2009, 15:36
http://l2phx.pp.ru/wsvn/filedetails.php?repname=l2phx3&path=%2F3.5.x%2FBuild%2Fsettings%2FPacketsT2.ini
и правда нет... может я ее сам добавил?...

alexteam
18.11.2009, 15:37
кстати, незнаю что ты там рисуешь.. но если у тебя есть возможность манипулировать с пакетами в клиенте.. ты можешь подсоединить пх.
как ? - легко, дело в том что лсп провайдер общаеться с пх через мапфайл и оконное сообщение, ничто не мешает сэмулировать это "общение" в стороннем софте -)

destructor
18.11.2009, 15:43
да вот ибусь ручками:(

где мануал смотреть? желательно не исходниками на делфях :D

alexteam
18.11.2009, 15:53
к твоему сожелению там по идее только на делфи и получиться...ибо используеться class(tobject)... либо писать переходник.. опять же..

destructor
18.11.2009, 16:36
через мапфайл и оконное сообщениепогоди, а делфи причем?

alexteam
18.11.2009, 17:43
э.. глянул.. действительно.. не при чем...
там тобжект есть, но он используеться внутри библиотеки. для своих нужд. взаимодействие с пх только на рекордах и мессагах.
в общем.
структуры которые юзает пх для обмена с дллкой данными:
http://l2phx.pp.ru/wsvn/filedetails.php?repname=l2phx3&path=%2F3.5.x%2FComponents%2FLSP%2Fstructures%2FLS PStructures.pas

сама дллка:
http://l2phx.pp.ru/wsvn/filedetails.php?repname=l2phx3&path=%2F3.5.x%2FComponents%2FLSP%2Fdll%2FLSPprovid er.dpr

порядок действий (авторизации на ПХ если так это можно назвать) смотреть в WSPConnect дллки там создаеться мапфайл, к нему крепиться рецайвер (невидимая форма в которую шлет сообщения пх если нужно отправить пакет вручную либо отсоединить клиент).. и т.д. для снифинга к стати эта форма не обязательна.
...сейчас смотрю на этот бредокод и глаза ломаю... а вроде же я писал %)
следует учесть что если ты будеш слать пх некриптованые данные (в голом виде) то нужно пх подсунуть вместо ньюксора пустышку которая не кодирует/декодирует траффик

destructor
18.11.2009, 18:07
ну попытаюсь осилить