Доброго времени суток, решил попробовать делать скрипты, но, начать не получается)
Хочу сделать чтото вроде бесплатного баф НПС из своего чара
Впринципе я примерно себе представляю как это можно сделать, но чтото никак, помогите пожалуста!
Например чтобы еслиб мне кинули пати, скрипт принял пати, использовал 4 скилла, вышел из пати.
В дальнейшем попробую усовершенствовать если например мп<20% сел использовать баночку,на все приёмы в пати отклонял и говорил в пм/в чат что мало МП, при наборе 100%мп встал и снова делал своё дело. Ну или впринципе если вы сможете такое сделать, не откажусь от помощи)
для автоприёма пати я использую такой кусочек:
//******************************АВТОСОГЛАШЕНИЕ НА ВСТУПЛЕНИЕ В ПАТИ************************
//******************************ПРИ УСЛОВИИ ЧТО ПАТИ ДАЕТ- КОМАНДИР************************
if FromServer and (ConnectName=NameBot1) and (pck[1]=#$39) then
if ReadS(2)=NameKom then
begin
buf:=hstr('2A 01 00 00 00');
sendtoserverex(NameBot1);
end;
if FromServer and (pck[1]=#$39) then
begin
buf:=Hstr('2A 01 00 00 00 ');
sendtoserver;
buf:=Hstr(b1);
sendtoserver;
buf:=Hstr(b2);
sendtoserver;
buf:=Hstr(b3);
sendtoserver;
buf:=Hstr(b4);
sendtoserver;
buf:=Hstr('2B');
SendToServer;
end;
end.
но он чтото очень быстро всё пробегает пару песен споётсам для себя и всё... надо задержки сделать только не пойму куда и сколько)
Добавлено спустя 2 минуты 11 секунд:
задержку бы секунды 2 после того как примет пати, начнёт первую песню пока поёт чобы была задержка секунды 2 начинает песть вторую опять задержка 2 сек
ну когда люди начнут грамотно вопросы задавать?
париш моск а тебе всеголиш надо 10 бафов наложить? поочереди? с задержкой?
есть 2 варианта если бафов 2 штуки то используй то что ты написал...
2 пкета посланые на баф подряд- норм ощитываются серваком..
если 3 бафа то меду вторым и 3-м используй delay(6000) 6 секунд...
если бафов больше чем 3.. то используется таймер.. типа такого:
Добавлено спустя 2 минуты 55 секунд:
Вроде это не на то чтобы в пати бафал.
Добавлено спустя 1 час 53 минуты 15 секунд:
Пытаюсь использовать этот скрипт
Код:
//исходник by mks | переработан boyan
//Prophet бафае
const //баффы профета
b1='2F 30 01 00 00 00 00 00 00 00 '; //shield
b2='2F 0E 01 00 00 00 00 00 00 00 '; //mental shield
b3='2F 0D 01 00 00 00 00 00 00 00 '; //acumen
b4='2F 0C 01 00 00 00 00 00 00 00 '; //blessHP
b5='2F B4 04 00 00 00 00 00 00 00 '; //ww
b6='2F 0C 04 00 00 00 00 00 00 00 '; //magic barier
b7='2F 30 01 00 00 00 00 00 00 00 '; //bers
var
Target1: string;
Target: string;
prof,x: integer;
timer1: TTimer;
procedure Init;
begin
timer1:=TTimer.Create(nil);
timer1.OnTimer:=@OnTimer;
timer1.enabled:=true;
timer1.interval:=2000;
end;
procedure OnTimer(Sender: TObject);
begin
case x of
1: begin
buf:=hstr(b1);
sendtoserver;
x:=x+1;
end;
2: begin
buf:=hstr(b2);
sendtoserver;
x:=x+1;
end;
3: begin
buf:=hstr(b3);
sendtoserver;
x:=x+1;
end;
4: begin
buf:=hstr(b4);
sendtoserver;
x:=x+1;
end;
5: begin
buf:=hstr(b5);
sendtoserver;
x:=x+1;
end;
6: begin
buf:=hstr(b6);
sendtoserver;
x:=0;
buf:=#$38;
WriteS('text');
WriteD(0);
SendToServer;
end;
end;
end;
procedure Free;
begin
timer1.Free;
end;
///////////////////////////////////////////////////////////////////
begin
if FromServer and (pck[1]=#$5E) and (x=0) then //подкорректил немного, что б бот не принимал трэйд когда кого-то уже баффает 06.08.07
begin
Target:=#$04+pck[2]+pck[3]+pck[4]+pck[5];
buf:=hstr('44 01 00 00 00');
sendtoserver; //если кидают трэйд, то принимать
end;
if fromclient and (pck[1]=#$44) then
begin
pck:=''; {клиент почему-то иногда автоматом отылает кэнсл трэйд, поэтому убиватю этот пакет}
sendtoserver;
end;
if fromserver and (pck[1]=#$21) then
begin
if pck[14]+pck[15]+pck[16]=#$E8#$03#$00 then {если в трэйд положили 1000}
begin
buf:=hstr('17 01 00 00 00');//подтвердить трэйд
prof:=1;
end;
if prof=0 then buf:=hstr('17 00 00 00 00');//отмена трэйда
sendtoserver;
end;
if FromServer and (pck[1]+pck[2]=#$22#$01) then
begin
buf:=hstr('29');
sendtoserver;
if FromServer and (pck[1]+pck[2]=#$3A#$01) then
buf:=target;
sendtoserver;
if prof=1 then
begin
x:=1;
prof:=0;
end;
end;
if FromServer and (pck[1]=#$39) then //если кидают пати - берет ее, бафает берс, и выходит из пати
begin
buf:=Hstr('2A 01 00 00 00 ');
sendtoserver;
buf:=Hstr(b1);
sendtoserver;
delay(1000);
buf:=Hstr(b2);
sendtoserver;
delay(1000);
buf:=Hstr(b3);
sendtoserver;
delay(1000);
buf:=Hstr(b4);
sendtoserver;
delay(2000);
buf:=Hstr('2B');
SendToServer;
end;
end.
Посе получения денег не знаю как сделать так тчобы выделил цель и послал предложение пати, после входа в пати продолжил скрипт по оригиналу, тоесть надо просто вставить чтобы после получения денег предлогал пати.
Добавлено спустя 1 час 5 минут 1 секунду:
Сделал вот так
Код:
//???????? by mks | ??????????? boyan
//Prophet ?????
const //????? ???????
b1='2F 30 01 00 00 00 00 00 00 00 '; //shield
b2='2F 0E 01 00 00 00 00 00 00 00 '; //mental shield
b3='2F 0D 01 00 00 00 00 00 00 00 '; //acumen
b4='2F 0C 01 00 00 00 00 00 00 00 '; //blessHP
b5='2F B4 04 00 00 00 00 00 00 00 '; //ww
b6='2F 0C 04 00 00 00 00 00 00 00 '; //magic barier
b7='2F 30 01 00 00 00 00 00 00 00 '; //bers
var
Target: string;
prof,x: integer;
timer1: TTimer;
procedure Init;
begin
timer1:=TTimer.Create(nil);
timer1.OnTimer:=@OnTimer;
timer1.enabled:=true;
timer1.interval:=2000;
end;
procedure OnTimer(Sender: TObject);
begin
case x of
1: begin
buf:=hstr('29');
sendtoserver;
x:=x+1;
end;
2: begin
buf:=hstr(b1);
sendtoserver;
x:=x+1;
end;
3: begin
buf:=hstr(b2);
sendtoserver;
x:=x+1;
end;
4: begin
buf:=hstr(b3);
sendtoserver;
x:=x+1;
end;
5: begin
buf:=hstr(b4);
sendtoserver;
x:=x+1;
end;
6: begin
buf:=hstr(b5);
sendtoserver;
x:=x+1;
end;
7: begin
buf:=hstr(b6);
sendtoserver;
x:=0;
buf:=#$38;
WriteS('Spasibo i udachi! Nuzhen bers? invite to party');
WriteD(0);
SendToServer;
end;
end;
end;
procedure Free;
begin
timer1.Free;
end;
///////////////////////////////////////////////////////////////////
begin
if FromServer and (pck[1]=#$5E) and (x=0) then //???????????? ???????, ??? ? ??? ?? ???????? ????? ????? ????-?? ??? ??????? 06.08.07
begin
Target:=#$04+pck[2]+pck[3]+pck[4]+pck[5];
buf:=hstr('44 01 00 00 00');
sendtoserver; //???? ?????? ?????, ?? ?????????
end;
if fromclient and (pck[1]=#$44) then
begin
pck:=''; {?????? ??????-?? ?????? ????????? ??????? ????? ?????, ??????? ??????? ???? ?????}
sendtoserver;
end;
if fromserver and (pck[1]=#$21) then
begin
if pck[14]+pck[15]+pck[16]=#$E8#$03#$00 then {???? ? ????? ???????? 2000000}
begin
buf:=hstr('17 01 00 00 00');//??????????? ?????
prof:=1;
end;
if prof=0 then buf:=hstr('17 00 00 00 00');//?????? ??????
sendtoserver;
end;
if FromServer and (pck[1]+pck[2]=#$22#$01) then
begin
buf:=target;
sendtoserver;
if prof=1 then
begin
x:=1;
prof:=0;
end;
end;
if FromServer and (pck[1]=#$39) then //???? ?????? ???? - ????? ??, ?????? ????, ? ??????? ?? ????
begin
buf:=Hstr('2A 01 00 00 00 ');
sendtoserver;
buf:=Hstr(b1);
sendtoserver;;
buf:=Hstr(b2);
sendtoserver;
buf:=Hstr(b3);
sendtoserver;
buf:=Hstr(b4);
sendtoserver;
buf:=Hstr('2B');
SendToServer;
end;
end.
Но пати не кидает, пишет неправельная цель...
Добавлено спустя 8 минут 55 секунд:
Вобщем не понимаю как сделать так чтобы скрипт послал покет запроса пати тому кто дал деньги
Код:
case x of
1: begin
buf:=hstr('29');
sendtoserver;
x:=x+1;
end;
здесь кажется точно не просто 29, надо тчото ещё вписать, но что...
м я не знаю в чем у тебя проблем- но проблемы пока я неуслыхал..
хотя я щас пьян извени уж тут.. что поделать голова плохо варит но.. думаю..
bnfr
итак для отправки пати нужно:
buf:=hstr('29');
writeS(namebot1);
buf:=buf + hstr('00 00 00 00');
SendToServerEX(NameKom);
используется имя а не ИД
для того чтобы пати порвать:
buf:=hstr('2B');
SendToServerEX(NameKom);
для автоприёма пати нужно:
//******************************АВТОСОГЛАШЕНИЕ НА ВСТУПЛЕНИЕ В ПАТИ************************
//******************************ПРИ УСЛОВИИ ЧТО ПАТИ ДАЕТ- КОМАНДИР************************
if FromServer and (ConnectName=NameBot1) and (pck[1]=#$39) then
if ReadS(2)=NameKom then
begin
buf:=hstr('2A 01 00 00 00');
sendtoserverex(NameBot1);
end;
Добавлено спустя 2 минуты 5 секунд:
так как нажно имя- то его нужно знать... узнать имя можно из массива который мы сохраним в памяти- из пакета ЧАР ИНФО.. соответствие ИД- живым чарам...
__________________
Цитата:
Сообщение от pybukon
прежде чета попросить я немнога раскажу чтоб вы понили как мне плоха
Цитата:
Сообщение от Byrger
А как сделать мой скрипт бесконечным?
Цитата:
Сообщение от XKOR
.. каждый день ионизированной ногой протирает больную)
Цитата:
Сообщение от PsyR
Вылоджите пожалуйста скрипт на рыбалку желательно что бы сам в ВХ клал адаптированый под шоки и так же скрипт на ТТ рец, тоже с диалогами
// Если изменилась строка бафов то бафать следующий
if FromServer and (ConnectName=CharName) and (i>0) and (Ready=true) and (pck[1]=#$76) and (ReadD(2)=ObjectID) then
begin
if(i=N) then
begin
Timer.enabled:=true;
i:=0;
exit;
end;
if(i<N) then
begin
buf:=Skills[i];
SendToServerEx(CharName);
say('Юзаем скилл N'+inttostr(i+1));
Inc(i);
end;
end;
Поясню, этот кусок позволяет делать задержку между бафами НЕ статической, т.е. когда боту(баферу) приходит пакет об окончании каста, ложить следующий баф. if(i=N) - а это потому что пакет о конце каста приходит немного рановато, скилы при этом все равно срабатывают как надо, а из пати выходит ДО наклабывания последнего бафа. Поэтому выход из пати делаю по таймеру с задержкой 1 секунду. Как и где это испольховать додумывайте сами.
Иеще, если уж бот принимает пати, то надо убивать пакет от клиента на отказ пати(который шлется автоматом через секунд 10 примерно), чтоб лишний раз не палиться...
NEOXP, у тебя бот сам кидает пати, и начинает бафать.. сделай так, чтобы ему кидали пати, и как только кидают пати он начинает бафать.. в моей перетедлке скрипта mks, это сделано.. если ему заплатили за баф, и если тот кто заплатил кинет пати, бот ее возьмет и бафнет берс