Форум работает в тестовом режиме. Все данные были перенесены со старого сайта 2018 года. Некоторая информация может быть недоступна, например вложения или хайды. Просьба сообщать о данных случаях через функционал "Жалоба", прямо под постом, где отсуствуют данные из хайда или проблемы с вложением.
Могут быть проблемы в "выкидыванием" с форума (слетевшей авторизацией). Нужно собрать статистику таких случаев.
Есть Тема, куда можете сообщить о проблемах с сайтом либо просто передать привет.

Возможно объединить эти скрипты?

Рег
7 Авг 2016
Сообщения
4
Реакции
0
Здравствуйте. Меня интересует такой вопрос.

Есть скрипт на капчу (найденный на этом сайте) и есть скрипт который баффается и тпшится к требуемому месту. Перепробовал все , возможно их как- то объединить?

Собственно сами скрипты :

1)

uses SysUtils;

var tmpDialog,tmpString:string;
var posCaptcha, num1, count:integer;
begin
while Engine.Status = lsOnline do begin
tmpDialog := Engine.DlgText;
if (Pos('Активирован штраф', tmpDialog) <> 0) then
begin
tmpString:='';
tmpDialog:='';
tmpDialog:=Engine.DlgText;
posCaptcha:=pos('<font color=LEVEL>',tmpDialog);
posCaptcha:=posCaptcha+18;

while not (tmpDialog[posCaptcha] = '<') do begin
tmpString:=tmpString + tmpDialog[posCaptcha];
posCaptcha:=posCaptcha + 1;
end;
num1:=StrToInt(tmpString);


print (IntToStr(num1));
Engine.BypassToServer('00 '+IntToStr(num1), True);
count:=count+1;
print ('Капча выскакивала -->'+IntToStr(count)+'<-- раз, но мы ее обошли =)');
end;
Delay (150000);
end;
end.

2)
procedure onn;
begin
Engine.FaceControl(0,true);
end;



procedure atak2;
begin
onn;
Engine.LoadConfig('xxx.xml');
delay(300);
while 1<>2 do begin
if User.Dead then
begin
Engine.GoHome;
Engine.FaceControl(0,False);
Delay(1500);
buff;
tp1;
onn;
end;
delay(500);
end;
end;


procedure buff;

begin
Engine.SetTarget('Баффер');
Engine.DlgOpen;
Engine.DlgSel(9);
end;



procedure tp1;
begin
Engine.SetTarget('Татьяна');
Engine.DlgOpen;
Engine.DlgSel(1);
delay (100);
Engine.DlgSel(1);
end;

begin
while 1<>2 do begin
buff;
tp1;
atak2;
end;
end.
 
вынести в разные потоки и запустить.
Код:
procedure RestoreHP;
begin
  while engine.status=lsonline do
  begin
    if((user.hp<90) and not(user.incombat) and (user.cast.endtime=0) and not(user.dead)) then engine.say('.buff player heal');
    delay(1000);
  end;
end;

begin
    script.newthread(@RestoreHP);
    delay(-1);
end.
 
Если объединить их через разные потоки, то адреналин ругается на uses SysUtils; , а без него не работает ничего.
 
Ololosha написал(а):
Если объединить их через разные потоки, то адреналин ругается на uses SysUtils; , а без него не работает ничего.
а в чем проблема вынести до процедур?
Код:
uses sysutils;

var
    control:TL2Control;
    SecondChar:String;
    
const
    ID_Charge:integer=788;
    ID_Trigger:integer=5564;
    ID_Icon:integer=789;
    d:integer=333;

function CanUseIcon:boolean;
var i:integer;
begin
    result:=true;
    for i:=0 to party.chars.count-1 do
    begin
        if((party.chars.items(i).classid=113) and (party.chars.items(i).dead)) then result:=false;
    end;
end;

function GetNick2ndTank:string;
var i:integer;
begin
    for i:=0 to party.chars.count-1 do
    begin
        if(party.chars.items(i).classid=user.classid) then result:=party.chars.items(i).name;
    end;
end;

procedure SetControl;

end;

procedure AutoIcon;

end;

procedure opb_buff;

end;

procedure RestoreHP;
begin
  while engine.status=lsonline do
  begin
    if((user.hp<90) and not(user.incombat) and (user.cast.endtime=0) and not(user.dead)) then engine.say('.buff player heal');
    delay(1000);
  end;
end;

begin
    script.newthread(@AutoIcon);
    script.newthread(@opb_buff);
    script.newthread(@RestoreHP);
    delay(-1);
end.
 
Спасибо за подсказку, но он все равно выдает ошибку в коде. Я где-то переборщил?

uses SysUtils;
procedure capcha;


var tmpDialog,tmpString:string;
var posCaptcha, num1, count:integer;
begin
while Engine.Status = lsOnline do begin
tmpDialog := Engine.DlgText;
if (Pos('Активирован штраф', tmpDialog) <> 0) then
begin
tmpString:='';
tmpDialog:='';
tmpDialog:=Engine.DlgText;
posCaptcha:=pos('',tmpDialog);
posCaptcha:=posCaptcha+18;

while not (tmpDialog[posCaptcha] = '<') do begin
tmpString:=tmpString + tmpDialog[posCaptcha];
posCaptcha:=posCaptcha + 1;
end;
num1:=StrToInt(tmpString);


print (IntToStr(num1));
Engine.BypassToServer('00 '+IntToStr(num1), True);
count:=count+1;
print ('Капча выскакивала -->'+IntToStr(count)+'<-- раз, но мы ее обошли =)');
end;
Delay (250000);
end;
end;


procedure bufftp;


procedure onn;
begin
Engine.FaceControl(0,true);
end;



procedure atak2;
begin
onn;
Engine.LoadConfig('onlyfarm.xml');
delay(300);
while 1<>2 do begin
if User.Dead then
begin
Engine.GoHome;
Engine.FaceControl(0,False);
Delay(1500);
buff;
tp1;
onn;
end;
delay(500);
end;
end;


procedure buff;

begin
Engine.SetTarget('Баффер');
Engine.DlgOpen;
Engine.DlgSel(9);
end;



procedure tp1;
begin
Engine.SetTarget('Татьяна');
Engine.DlgOpen;
Engine.DlgSel(1);
delay (100);
Engine.DlgSel(1);
end;

begin
while 1<>2 do begin
buff;
tp1;
atak2;
end;






begin
script.newthread(@capcha);
script.newthread(@bufftp);
delay(100)
end. (ругается в этом месте)
 
Ну если языка не знаете - то хоть скачайте Notepad++ и включите там подсветку синтаксиса Паскаль, чтобы совсем глупых ошибок не допускать.
(N++ позволяет сворачивать правильно оформленные конструкции, чтобы легче ориентироваться в коде. На скрине показано, что у процедуры bufftp нет тела, поэтому и сворачивать нечего. А так быть не должно).

c6c7c9236e7949c88ff41e8156bc1caf.png
 
SARCAZM написал(а):
Ну если языка не знаете - то хоть скачайте Notepad++ и включите там подсветку синтаксиса Паскаль, чтобы совсем глупых ошибок не допускать. (N++ позволяет сворачивать правильно оформленные конструкции, чтобы легче ориентироваться в коде. На скрине показано, что у процедуры bufftp нет тела, поэтому и сворачивать нечего. А так быть не должно).
С синтаксисом разобрался, спасибо.
Но скрипт на капчу не работает.(просто ничего не происходит при выскакивании окна с капчей, будто у меня 1 скрипт на бафф+тп внесен)
 
Назад
Сверху