Перейти к содержанию

Рекомендуемые сообщения

Здравствуйте, уважаемый администратор. В настоящее время на сервере запущен ивент "Сердечки". С учётом реалий объёма фарма на нашем ботосервере, прошу рассмотреть возможность добавить у ивент-менеджера кнопку "сыграть все игры сразу" , чтобы все сердечки в инвентаре были обменяны на награды (согласен даже на пониженный шанс выиграть). А то ну совсем не интересно стоять тыкать тысячи раз на диалоги. Многие игроки (вроде меня) не сильны в создании скриптов, поэтому думаю будут за это благодарны администрации!

Ссылка на сообщение
Поделиться на другие сайты

begin
while engine.delay(600) do
Begin
 Delay(200);
 Engine.Settarget(31227);
 delay(100);
 Engine.DlgOpen;
 Delay(100);
 Engine.DlgSel(1);
 Delay(500);
 Engine.DlgSel('камень');
end;
end.

 

Держи скрипт друже)

 

Ссылка на сообщение
Поделиться на другие сайты

Скрипт недоработан. Изначально тыкает один раз и на повтор уходит. А там подразумевается, что можно 10 попыток.

 

begin
while engine.delay(600) do
Begin
 Delay(200);
 Engine.Settarget(31227);
 delay(100);
 Engine.DlgOpen;
 Delay(100);
 Engine.DlgSel(1);
 Delay(500);
 Engine.DlgSel('камень');
 Delay(100);
 Engine.DlgSel('ножницы');
 Delay(100);
 Engine.DlgSel('ножницы');
 Delay(100);
 Engine.DlgSel('бумага');
 Delay(100);
 Engine.DlgSel('камень');
 Delay(100);
 Engine.DlgSel('ножницы');
 Delay(100);
 Engine.DlgSel('камень');
 Delay(100);
 Engine.DlgSel('бумага');
 Delay(100);
 Engine.DlgSel('бумага');
 Delay(100);
 Engine.DlgSel('ножницы');
 Delay(100);
end;
end.

Такой допилил, чтобы биться с ним до победного конца)) варианты можно любые накидать

 

Ссылка на сообщение
Поделиться на другие сайты

Ну раз пошла такая пьянка, то можно еще вот так

var
  i: integer;

begin
  engine.SetTarget(31227);
  engine.DlgOpen;
  engine.delay(100);
  engine.DlgSel(1);

  while engine.delay(100) do
  begin
    engine.DlgSel('Play again!');
    engine.delay(100);
    engine.DlgSel(i mod 3 + 1);
  end;
end.


 

Ссылка на сообщение
Поделиться на другие сайты
17 hours ago, Selivar said:

Ну раз пошла такая пьянка, то можно еще вот так


var
  i: integer;

begin
  engine.SetTarget(31227);
  engine.DlgOpen;
  engine.delay(100);
  engine.DlgSel(1);

  while engine.delay(100) do
  begin
    engine.DlgSel('Play again!');
    engine.delay(100);
    engine.DlgSel(i mod 3 + 1);
  end;
end.


 

не понял как это работает? что в i? остаток от деления на 3 и что дальше?

 

uses sysutils,classes;

const Amount:integer = 10;
var   Current:integer;

procedure Choice(iRnd:integer);
begin
    Engine.ByPassToServer('scripts_events.heart.heart:play ' + IntToStr(iRnd));
    Delay(500);
end;

function ContainsBeforeEnd(const str, substr: string): Boolean;
var
  P: Integer;
begin

  P := Pos(substr, str);
  if P = 0 then
    Result := False
  else
    Result := P + Length(substr) - 1 <> Length(str);
end;

begin
  while True do begin
    Engine.SetTarget(31227);
    Delay(500);
    Engine.DlgOpen;
    Delay(500);
    Engine.ByPassToServer('scripts_events.heart.heart:letsplay');
    Delay(500);
    
    for Current:=1 to Amount do begin
      Choice(Random(3));
      if ContainsBeforeEnd(Engine.DlgText, 'A tie! ') then begin
        Delay(500);
        print('A tie, step#' + IntToStr(Current));
        Choice(Random(3));
      end;
      if ContainsBeforeEnd(Engine.DlgText, 'I win! So sorry! ') then begin
        Delay(500);
        Engine.ByPassToServer('scripts_events.heart.heart:letsplay');
        Current:=0;
      end;
    end;
    Delay(500);
  end;
end.

 

Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
×
×
  • Создать...