L2PacketHackФорум программы L2PacketHack, всё что с ней связано находится тут.
Правила раздела!
Категорически запрещено:
* Просить пакеты/скрипты на шмот/адену/другие вещи;
* Просить (помочь) взломать/сломать сервак/аккаунт или раздеть/наказать кого-то на любом серваке;
* Просить научить работать с программой, если не понимаете элементарных вещей в отношениях клиент-сервер (так как, если вы их понимаете, то вопросов по основным возможностям программы быть недолжно);
* Все посты не удовлетворяющие этим запретам, а так же не относящиеся к теме будут удаляться при первой возможности.
* Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы.
* Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
* Данные запреты неподлежат обсуждению.
Узнаем ObjectID и координаты персонажа из пакета CharInfo для игрока и NpcInfo для мобов и создаем пакет Action. Шлем его на сервер. Первый пакет Action берет в таргет персонажа, второй такой же пакет дает результат атаки на персонажа.
Подскажите как персонажа барть в таргет ? Хоть систему подскжите , я ее не пойму.Тойсть я сам все могу написать , но не могу понять с чего нужно начинать .
И подскажите еще , каким образом добовляються пакеты ? потому как у меня все галочки включены на прием от сервера и от клиента .
//J-Fobos: еще следует добавить пакеты
4E=PartySmallWindowAll
4F=PartySmallWindowAdd
50=PartySmallWindowDeleteAll
51=PartySmallWindowDelete
52=PartySmallWindowUpdate
Так они у меня есть правдо я скопирывал это из PacketsFreya.ini Но играю я на lineage goddess of destruction
Спасибо за ответ .
Но этот пакет CharInfo приходит один раз , когда персонаж появляетсья в локации.
Может им нужно работать в связке с MoveToLocation?
Все правильно, сначала смотрим CharInfo, записываем в переменную ObjectID персонажа, а потом отслеживаем координаты этого персонажа по пакету MoveToLocation. При получении пакета DeleteObject персонажа можно удалять.
__________________
В любом из нас спит гений. И с каждым днем все крепче.
Пакеты берутся из строковой переменной 'buf'. Поэтому создав переменную например:
Код:
test: string;
можно ей присвоить пакет из переменной buf
Код:
test:=buf;
Подправте плз.
Часть скрипта
Код:
var
PAName: String;
BafNaBibor: String;
Lider: integer;
begin
if FromServer and (ConnectName=Name) and (pck[1]=#$39) then begin //от сервера получен пакет $39
Lider:= 2;
PAName:= ReadS(Lider);
if (PAName = 'Сэд') then begin
buf:=Hstr('43 01 00 00 00');
end else
buf:=hstr('43 00 00 00 00'); //Создаем пакет "Отказать от пати"
pck :=''; //убиваем этот пакет
SendToServer;
end;
if FromServer and (pck[1] = #$4A) and (ConnectName=name) then begin //Кто то написал
BafNaBibor:= ReadS(Lider+5);
if (BafNaBibor='4') then begin //Если нам в чат написали 4-ре , то выполняем действие дельше
timer.enabled:=true;
TimerStep:=606;
end;
end;
Подскажите , как переменную BafNaBibor , увиличить на длину ника и плюс еще на 5-ть байт ?
вот этот пакет
4A 33 D8 20 10 03 00 00 00 21 04 4D 04 34 04 40 04 38 04 3A 04 00 00 FF FF FF FF 34 00 00 00
Часть обозначеная синем - Эта часть постоянно меняеться , так как это есть Ник игрока .
Мне нужно начать читать с 34 00 00 00
Последний раз редактировалось semiromid, 07.10.2011 в 15:15.
var
PAName, Name: String;
BafNaBibor: String;
Lider, Index: integer;
procedure Init; //Вызывается при включении скриптаbeginend;
procedure Free; //Вызывается при выключении скриптаbeginend;
//основная часть скрипта//вызывается при приходе каждого пакета если скрипт включенbeginif FromServer and(ConnectName=Name)and(pck[1]=#$39)thenbegin//от сервера получен пакет s39=AskJoinParty:s(requestorName)d(itemDistribution)
Lider:= 2;
PAName:= ReadS(Lider);
if(PAName = 'Сэдрик')then
buf:=Hstr('43 01 00 00 00')//Создаем пакет "Принять пати" c43=RequestAnswerJoinParty:d(Response) else
buf:=hstr('43 00 00 00 00'); //Создаем пакет "Отказать от пати" c43=RequestAnswerJoinParty:d(Response)
pck :=''; //убиваем пакет s39
SendToServer;
end;
if FromServer and(pck[1] = #$4A)and(ConnectName=name)then//s4A=CreatureSay:d(ObjectID)d(textType:Get.FSay2)s(charName)d(npcString)s(Message)begin//Кто-то написал в чат
Index:=10; //смещение для charName
ReadS(Index); //Index - начальная позиция чтения, которая модифицируется функцией (сдвигается на число считанных байт)
ReadD(Index); //читаем в никуда, чтобы пропустить ещё 4 байта
BafNaBibor:=ReadS(Index); //считываем Messageif(BafNaBibor='4')thenbegin//Если нам в чат написали 4-ре, то выполняем действие дельше
timer.enabled:=true;
TimerStep:=606;
end;
end;
end.
Код:
Tèï: 0x4A (CreatureSay)
Размер: 31+2
Время прихода: 14:32:27:024
0002 d ObjectID: 270587955 (0x1020D833)
0006 d textType: # PARTY ID:3 (0x0003)
0010 s charName: Сэдрик
0024 d npcString: -1 (0xFFFFFFFF)
0028 s Message: 4