PDA

Просмотр полной версии : L2phx script buff Summnoner


BerkooT
19.06.2012, 19:48
Ребята помогите со скриптом на коня, задача, что бы конь бафал и бегал за ведущим, вот пакеты


2F 34 05 00 00 00 00 00 00 00 - вызов коня
45 F2 03 00 00 00 00 00 00 00 - БАФ С КОНЯ





БАФ КОНЯ НА ПЕРСА КОТОРОМУ НУЖЕН БАФ ( я тут не понял какой именно нужно капировать по этому держи 3 штуки )
================================================== ================================================== ================================
Tип: 0x48 (MagicSkillUse)
Pазмер: 41+2
Время прихода: 14:20:45:250
0002 d charID: 1323344568 (0x4EE0A2B
0006 d targetID: 1323344568 (0x4EE0A2B
000A d skillID: Благословение Серафима ID:4702 (0x125E)
000E d skillLvl: 2 (0x00000002)
0012 d hitTime: 4000 (0x00000FA0)
0016 d reuseDelay: 8000 (0x00001F40)
001A d X: 146305 (0x00023B81)
001E d Y: 46736 (0x0000B690)
0022 d Z: -3432 (0xFFFFF29
0026 h count: 0 (0x0000)

пакет 48 B8 A2 E0 4E B8 A2 E0 4E 5E 12 00 00 02 00 00 00 A0 0F 00 00 40 1F 00 00 81 3B 02 00 90 B6 00 00 98 F2 FF FF 00 00 00 00

================================================== ================================================== ==================================

Tип: 0x76 (MagicSkillLaunched)
Pазмер: 29+2
Время прихода: 14:20:48:593
0002 d charID: 1323344568 (0x4EE0A2B
0006 d skillID: Благословение Серафима ID:4702 (0x125E)
000A d skillLvl: 2 (0x00000002)
000E d failed: 3 (0x00000003)
0012 d targetId: 1341152822 (0x4FF05E36)

пакет 76 B8 A2 E0 4E 5E 12 00 00 02 00 00 00 03 00 00 00 36 5E F0 4F B8 A2 E0 4E 54 A2 70 4F

================================================== ================================================== ====================================

Tип: 0x7F (MagicEffectIcons)
Pазмер: 13+2
Время прихода: 14:20:49:265
0002 h ListCount: 1 (0x0001)
[Начало повторяющегося блока 1/1]
0004 d skillID: Благословение Серафима ID:4702 (0x125E)
0008 h Lvl: 2 (0x0002)
000A d Duration: 120 (0x0000007
[Конец повторяющегося блока 1/1]

пакет 7F 01 00 5E 12 00 00 02 00 78 00 00 00

================================================== ================================================== ====================================


Выручайте друзья

SeregaZ
19.06.2012, 21:28
крут! пакеты смог найти :)

теперь у тебя два пути - или таймер, или реакция на слово "баф" в пати чате. а можно даже совместить, чтоб долбил по таймеру, а еще если кому надо то вручную писуя слово "баф" в пати чате.

goodvin1709
19.06.2012, 23:56
SeregaZ, Что дебил?
что бы конь бафал и бегал за ведущим
1.Нужно пакеты ловить на движение.
2.Фильтровать пакеты проверкой по нику основы.
3.Запомнить X,Y,Z с пакета движения.
4.Бежать x+50,Y+50,Z от основы.
5.и по таймеру бафать коня или сделать проверку по пакету Say ловить пакет с пати чата и проверять текст ReadS(2) вроде,на слово.и вызвать процедуру баффа.
6.Для этого нужно все запомнить.

SeregaZ
20.06.2012, 00:06
а ты не что дебил? выбрать ботом мейна, и нажать кнопку атаки не судьба? умничаешь сидишь...

BerkooT
20.06.2012, 02:50
Друзья не сритесь а лучше помогите, потому что я уже кучу скриптом перепробовал переделать, не чего не получилось, как я понимаю проверка на коня еще нужна, 20минут пройдет что бы он его заново вызывал, и если убъют например, подсобите самый простой вариант сойдет.. SeregaZ я в тебя верю дружище :d

SeregaZ
20.06.2012, 10:14
из древнего вот:
var
a:integer;

j:integer;
nick:string;
text:string;

procedure Init; //Вызывается при включении скрипта
begin
useforconnectname := 'PonyVod';
//useforconnectname := 'SVPONIVOD';
end;

procedure Free; //Вызывается при выключении скрипта
begin

end;

//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
if FromServer and (pck[1]=#$39) then begin //проверка имени пати кидающего и принятие если это я
if (pck[2]+pck[3]+pck[4]+pck[5]=HStr('45 00 6C 00')) or (pck[2]+pck[3]+pck[4]+pck[5]=HStr('53 00 65 00'))
then begin
buf:=HStr('2A 01 00 00 00'); //пати принял
SendToServer;

buf:=HStr('2F 34 05 00 00 00 00 00 00 00'); //вызов коня
SendToServer;

a:=1; //пати принято, значит надо блокануть пакет непринятия пати.
end;
end;

if FromClient and (pck=HStr('2A 00 00 00 00')) and (a = 1) //блок пакета непринятия пати
then begin
pck:='';
end;

if FromServer and (pck[1]=#$50) //если пати распущено, то бот готов принять сл пати
then begin
a:=0;
end;

if FromServer and (pck[1]=#$4A) and (pck[6]=#$03) and //пати чат просят баф
then begin
j:=10; // j - стартовая позиция указателя
//CharOID:=ReadD(j); // -- OID перса
//TextType:=ReadD(j); //-- индекс чата в котором пишется текст
nick:=ReadS(j); //-- считывается ник, и, одновременно, указатель байта сдвигается на его длинну, т.е после выполнения команды будет j:=j+(длинна_блока_оканчивающегося "00 00")
text:=ReadS(j); //-- считываем текст сообщения
if (text='баф') or (text='аф') then begin

buf:=HStr('45 F3 03 00 00 00 00 00 00 00');
SendToServer;

end;
end;
end.
не бегает, нет таймера. вызывал коня по киданию в пати. причем принимал пати только после проверки части ника... не помню что там должно было по "Se" чтоли проверялось... сто летней давности. сам разбирайся, докручивай таймер, проверку на своего коня и все что надо.

BerkooT
20.06.2012, 14:34
из древнего вот:
var
a:integer;

j:integer;
nick:string;
text:string;

procedure Init; //Вызывается при включении скрипта
begin
useforconnectname := 'PonyVod';
//useforconnectname := 'SVPONIVOD';
end;

procedure Free; //Вызывается при выключении скрипта
begin

end;

//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
if FromServer and (pck[1]=#$39) then begin //проверка имени пати кидающего и принятие если это я
if (pck[2]+pck[3]+pck[4]+pck[5]=HStr('45 00 6C 00')) or (pck[2]+pck[3]+pck[4]+pck[5]=HStr('53 00 65 00'))
then begin
buf:=HStr('2A 01 00 00 00'); //пати принял
SendToServer;

buf:=HStr('2F 34 05 00 00 00 00 00 00 00'); //вызов коня
SendToServer;

a:=1; //пати принято, значит надо блокануть пакет непринятия пати.
end;
end;

if FromClient and (pck=HStr('2A 00 00 00 00')) and (a = 1) //блок пакета непринятия пати
then begin
pck:='';
end;

if FromServer and (pck[1]=#$50) //если пати распущено, то бот готов принять сл пати
then begin
a:=0;
end;

if FromServer and (pck[1]=#$4A) and (pck[6]=#$03) and //пати чат просят баф
then begin
j:=10; // j - стартовая позиция указателя
//CharOID:=ReadD(j); // -- OID перса
//TextType:=ReadD(j); //-- индекс чата в котором пишется текст
nick:=ReadS(j); //-- считывается ник, и, одновременно, указатель байта сдвигается на его длинну, т.е после выполнения команды будет j:=j+(длинна_блока_оканчивающегося "00 00")
text:=ReadS(j); //-- считываем текст сообщения
if (text='баф') or (text='аф') then begin

buf:=HStr('45 F3 03 00 00 00 00 00 00 00');
SendToServer;

end;
end;
end.
не бегает, нет таймера. вызывал коня по киданию в пати. причем принимал пати только после проверки части ника... не помню что там должно было по "Se" чтоли проверялось... сто летней давности. сам разбирайся, докручивай таймер, проверку на своего коня и все что надо.

Братан я же объясняю что я даже таймер прикрутить не шарю как ) помоги ты сделать 2 недели уже тут обитаю ) неужели тебе 20минут в падлу потратить.. и помочь

SeregaZ
20.06.2012, 18:51
так надо ж тестировать. а у меня и клиентов линейки не осталось...

Breadfan
21.06.2012, 08:28
принять пати, смотреть список бафа - если нет баф коня и цель не мертва и цель маг - (вызвать коня) - бафнуть. и все. Бег за ведущим - давно рассматривался - и есть алгоритмы. Таймер нафиг не нужен, бо надо бафать по факту. Если б ты прислал именно то что я просил (имеет место быть переписка в личке) - давно написал бы, но ты ж не лог дал, а лишь самовырезаные кусочки.
И не 20 минут. Клиент установить, найти сервер где пх работает...Это далеко не 20 минут. 120 - это офигенно быстро. Ты же сам не говоришь на каком сервере пробовать.

А собсно - найди "Сумасшедший бафер" (кактотак) - так все принципы описаны

BerkooT
21.06.2012, 18:31
принять пати, смотреть список бафа - если нет баф коня и цель не мертва и цель маг - (вызвать коня) - бафнуть. и все. Бег за ведущим - давно рассматривался - и есть алгоритмы. Таймер нафиг не нужен, бо надо бафать по факту. Если б ты прислал именно то что я просил (имеет место быть переписка в личке) - давно написал бы, но ты ж не лог дал, а лишь самовырезаные кусочки.
И не 20 минут. Клиент установить, найти сервер где пх работает...Это далеко не 20 минут. 120 - это офигенно быстро. Ты же сам не говоришь на каком сервере пробовать.

А собсно - найди "Сумасшедший бафер" (кактотак) - так все принципы описаны

Объясните как лог сделать, организую

Добавлено через 4 часа 11 минут
принять пати, смотреть список бафа - если нет баф коня и цель не мертва и цель маг - (вызвать коня) - бафнуть. и все. Бег за ведущим - давно рассматривался - и есть алгоритмы. Таймер нафиг не нужен, бо надо бафать по факту. Если б ты прислал именно то что я просил (имеет место быть переписка в личке) - давно написал бы, но ты ж не лог дал, а лишь самовырезаные кусочки.
И не 20 минут. Клиент установить, найти сервер где пх работает...Это далеко не 20 минут. 120 - это офигенно быстро. Ты же сам не говоришь на каком сервере пробовать.

А собсно - найди "Сумасшедший бафер" (кактотак) - так все принципы описаны

Готово сделал логи, отослал в личку..

BerkooT
24.06.2012, 18:52
Объясните как лог сделать, организую

Добавлено через 4 часа 11 минут


Готово сделал логи, отослал в личку..


Это логи я перелазил ) формат pLog , rawLog

P/s почисти сообщение тебе нельзя пм отсылать, превышен лимит..

Roman32
25.06.2012, 15:41
// Управление вторым окном
// by spiritofsands
// Hellbound version
// © http://coderx.ru/showthread.php?t=3603 - развитие проекта

const
namemain='Zlo11'; // ник главного чара
nameslave='Opasniy11'; // ник второго окна
logmsg=False; // писать лог в приват главе

{ Команды управления начинаются префиксом "-" и оканчиваются статусом "y" или "n" (у-вкл, n-выкл)
Например:
-buy y
Все команды:
-buy y/n - вкл./выкл. синхронная продажа (нпц)
-sell y/n - вкл./выкл. синхронная покупка (у нпц)
-dialog y/n - вкл./выкл. синхронній диалог (с нпц)
-skill y/n - вкл./выкл. синхронное использование скиллов
-go y/n - вкл./выкл. ходьба рядом
-u y/n - синхронный /unstuck
-gorod y/n - уменьшение/увеличение дистанции между чарами
Если написать в пм второму окну, оно напишет в общий чат ваше сообщение }
var
ToX,ToY,ToZ,OrigX,OrigY,OrigZ,i,mid,tid,tx,ty,tz,r and,lenmodif : integer;
com,usedskill:string;
going,skilling:TTimer;
buy,sell,dialog,skill,go:boolean;
procedure sendPM(Msg:string);
begin
buf:=#$4A;
writed(0);
writed(2);
writes('Assist-script'); // ник в чате
writes(' '+msg);
sendtoclientex(namemain);
end;
procedure Init;
begin
sendPM('Вас приветствует скрипт Assist');
sendPM('Возьмите себя в цель');
lenmodif:=100; // расстояние между чарами (лучше оставить как есть)
buy:=true;
sell:=true;
dialog:=true;
skill:=true;
go:=true;
going:=TTimer.Create(nil);
going.OnTimer:=@ongoing;
going.enabled:=false;
skilling:=TTimer.Create(nil);
skilling.OnTimer:=@onskilling;
skilling.enabled:=false;
end;
procedure sendbuf(bufer,name:string);
begin
buf:=bufer;
sendtoserverex(name);
end;
function randlen:integer;
begin
randomize;
case round(random) of
1:
begin
randomize;
result:=round(random*lenmodif);
end;
0:
begin
randomize;
result:=-(round(random*lenmodif));
end;
end;
end;
procedure ongoing(Sender: TObject);
begin
randomize;
going.interval:=1000+round(random()*1000); // спасибо SeregaZ
buf:=#$01; {#$0F}
writemask('ddddddd',[tox+randlen,toy+randlen,toz,origx,origy,origz,1]);
{randlen;
writed(tox+rand);
randlen;
writed(toy+rand);
writed(toz); old method
writed(origx);
writed(origy);
writed(origz);
writed(1);}
sendtoserverEx(nameslave);
going.enabled:=false;
end;
procedure onskilling(Sender: TObject);
begin
randomize;
skilling.interval:=1000+round(random()*1000);
sendbuf(usedskill,nameslave);
skilling.enabled:=false;
end;
procedure Free;
begin
going.Free;
end;
// Начало
begin
if pck='' then exit;
if (pck[1]=#$04) {#$1f} and (connectname=namemain) and (mid=0) then // узнаем ид главного чара
begin
mid:=readd(2);
pck:='';
If logmsg=true then sendPM('Ваш ИД запомнен');
end;

if fromserver and (connectname=nameslave) then
case pck[1] of
#$29: {#$39} // пати
begin
If logmsg=true then sendPM('Принят запрос на группу');
if (reads(2))=namemain then
begin
If logmsg=true then sendPM('Вхожу в группу '+namemain+'а');
sendbuf(hstr('2A01000000'),nameslave); {#$43} // подтверждение пати
end;
end;
end;
if fromclient and (connectname=namemain) then
case pck[1] of
#$04: {#$1f} // главный чар выделил кого-то
begin
i:=2;
tid:=readd(i);
tx:=readd(i);
ty:=readd(i);
tz:=readd(i);
buf:=#$04; {#$1f} // передача данных второму окну
writemask('ddddc', [Tid, Tx, Ty, tz, 0]);
sendtoserverEx(nameslave);
If logmsg=true then sendPM('В цели');
end;
#$21: {#$23} // разговор с npc
begin
if dialog=true then
begin
sendbuf(pck,nameslave);
If logmsg=true then sendPM('Paзговор с нпц');
end;
end;
#$37: {#$48} // отмена цели
begin
sendbuf(pck,nameslave);
If logmsg=true then sendPM('Цель отменена');
end;
#$2F: {#$39} // использование скиллов
begin
usedskill:=pck;
If logmsg=true then sendPM('Скилл использован');
if skill=true then skilling.enabled:=true; // исп. скилл через интервал
end;
#$38: {#$49} // сообщение
begin
i:=2;
com:=reads(i);
if (readd(i)=2) and (reads(i)=nameslave) then
begin
pck:='';
buf:=#$38; {#$49}
writes(com);
writed(0); // в какой чат пишет бот (0=общий)
sendtoserverex(nameslave);
end;
if com[1]='-' then // команда
begin
pck:='';
if com[2]='u' then
begin
sendbuf(hstr('AA34000000'),nameslave); {#$B3}
sendbuf(hstr('AA34000000'),namemain); {#$B3}
end;
if com[2]+com[3]+com[4]+com[5] = 'buy ' then
begin
if com[6] = 'y' then
begin
sendPM('Синхронная покупка разрешена');
buy:=true;
end;
if com[6] = 'n' then
begin
sendPM('Синхронная покупка запрещена');
buy:=false;
end;
end;
if com[2]+com[3]+com[4]+com[5]+com[6] = 'sell ' then
begin
if com[7] = 'y' then
begin
sendPM('Синхронная продажа разрешена');
sell:=true;
end;
if com[7] = 'n' then
begin
sendPM('Синхронная продажа запрещена');
sell:=false;
end;
end;
if com[2]+com[3]+com[4]+com[5]+com[6]+com[7]+com[8] = 'dialog ' then
begin
if com[9] = 'y' then
begin
sendPM('Синхронный диалог с нпц разрешен');
dialog:=true;
end;
if com[9] = 'n' then
begin
sendPM('Синхронный диалог с нпц запрещен');
dialog:=false;
end;
end;
if com[2]+com[3]+com[4]+com[5]+com[6]+com[7] = 'skill ' then
begin
if com[8] = 'y' then
begin
sendPM('Синхронное использование скиллов разрешено');
skill:=true;
end;
if com[8] = 'n' then
begin
sendPM('Синхронное использование скиллов запрещено');
skill:=false;
end;
end;
if com[2]+com[3]+com[4] = 'go ' then
begin
if com[5] = 'y' then
begin
sendPM('Следование за главным персонажем разрешено');
go:=true;
end;
if com[5] = 'n' then
begin
sendPM('Следование за главным персонажем запрещено');
go:=false;
end;
end;
if com[2]+com[3]+com[4]+com[5]+com[6]+com[7] = 'gorod ' then
begin
if com[8]='y' then lenmodif:=40; // уменьшение расстояния между чарами
if com[8]='n' then lenmodif:=100; // восстановление расстояния между чарами
end;
end;
end;
#$01: {#$0F} // обновляем координаты гл. чара
begin
i:=2;
tox:=readd(i);
toy:=readd(i);
toz:=readd(i);
origx:=readd(i);
origy:=readd(i);
origz:=readd(i);
if go=true then going.enabled:=true; // идем через интервал
end;
#$1F: {#$40} // покупка вещей у нпц
begin
if buy=true then
begin
sendbuf(pck,nameslave);
If logmsg=true then sendPM('Покупаю');
end;
end;
#$1E: {#$37} // продажа вещей нпц
begin
if sell=true then
begin
sendbuf(pck,nameslave);
If logmsg=true then sendPM('Продаю');
end;
end;
#$D0: // xz что о_О
begin
sendbuf(pck,nameslave);
end;
end;
end.
/////////////////////////////скрипт что бегал за тобой/////////////////////
2F 34 05 00 00 00 00 00 00 00 - вызов коня
45 F2 03 00 00 00 00 00 00 00 - БАФ С КОНЯ а это поставь в посылку с задержкой сколько надо)

BerkooT
27.06.2012, 18:57
var
Name : string;
a, b, c, i, offset : integer;
myID : integer;
myX, myY, myZ : integer;
n, s : string;

timer1: TTimer;

const
summ_friend = 1403;
buff_skill = 4699;

off_party = false;


procedure Init; //Вызывается при включении скрипта
begin
Name := '';
myID := 0;
myX := 0;
myY := 0;
myZ := 0;
end;

procedure Free; //Вызывается при выключении скрипта
begin

end;

//вызывается при срабатывании таймера
procedure OnTimer1(Sender: TObject);
begin

//say('on shadow timer');
sendmsg('skill ready!');

timer1.enabled := false;
end;


procedure UpdateClassID(class_id : integer);
begin
if (Name <> '') then exit;
//warlock
if (class_id = 92) or (class_id = 14) then
begin
Name := ConnectName;
Say(name, 'kot detected :'+connectname);
end;
end;

procedure OnChatSay;
var
channel : integer;
nick : string;
msg : string;
from_id : integer;
begin
i := 10;
channel := ReadD(6); // channel
nick := ReadS(i); // nick
msg := ReadS(i+4);
from_id := ReadD(2);

// призвать кота
if (channel = 3) and (msg = 'kot!') then
begin
MagicSkillUse(name, 1331); // <----------
end;

// дать бафф с кота
if (channel = 3) and (msg = 'kot') then
begin
SendActionUse(name, 1007); // <-----------
end;

// unsummon kot
if (channel = 3) and (msg = 'kot-') then
begin
SendActionUse(name, 52); // unsummon
end;

// summon friend
if (channel = 3) and
(
(msg = 'summ me') or
(msg = 'summon') or
(msg = 'summ<')
) then begin
SendAction(name, from_id, myX, myY, myZ);
MagicSkillUse(name, summ_friend);
end;

end;



//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
if FromServer then case pck[1] of
// user info
#$32: begin
i := 22;

ReadS(i); // name
ReadD(i); // race
ReadD(i); // sex

// class id
UpdateClassID(ReadD(i));
if (name <> '') and (myID = 0) then begin
myID := ReadD(18);
myX := ReadD(2);
myY := ReadD(6);
myZ := ReadD(10);
Say(name, 'my id='+inttostr(myid));
end;
end;

// sys msg
#$62: if off_party then begin
offset := 2;
// msg id
a := ReadD(offset);
// получили эффект скилла на себя
if (a = 110) then begin
//sendmsg('sys effect');
c := ReadD(offset); // count

for i := 1 to c do begin
// type
if (ReadD(offset) = 4) then begin
i := ReadD(offset); // skill id
if i = buff_skill then SendLeave(name);
end;
end;
end;

end;
end;

if FromServer and (ConnectName = Name) then
case pck[1] of
// validate position
#$59: begin
myX := ReadD(2);
myY := ReadD(6);
myZ := ReadD(10);
end;

// creature say
#$4A: begin
i := 10;
OnChatSay;
end;
end;
end.


Почему не компилится скрипт ?
вот тут вот скрипт не компилится
Say(name, 'kot detected :'+connectname);

BerkooT
29.06.2012, 17:18
всё еще актуально

Pinko
01.07.2012, 01:05
//вызывается при приходе каждого пакета если скрипт включен
begin
if FromServer then case pck[1] of
// user info
#$32: begin
i := 22;

ReadS(i); // name
ReadD(i); // race
ReadD(i); // sex

// class id
UpdateClassID(ReadD(i));

BerkooT
01.07.2012, 14:28
//вызывается при приходе каждого пакета если скрипт включен
begin
if FromServer then case pck[1] of
// user info
#$32: begin
i := 22;

ReadS(i); // name
ReadD(i); // race
ReadD(i); // sex

// class id
UpdateClassID(ReadD(i));

и куда это, я не понимаю

dyh9l
03.07.2012, 20:53
слушай, сделай в таймере в ПХ юзать коня каждые 2 минуты без всяких скриптов)