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

until несколько условий

Рег
2 Мар 2016
Сообщения
234
Реакции
0
Нужно чтобы цикл завершился при достижении одного из уловий. Не смог найти даже информацию как составить строку.
Код:
begin
repeat
Dead();
Town();
Engine.Settarget(30233); // Таргет Эсмеральда (Esmeralda)
Engine.MoveToTarget(-30);
Engine.Dlgopen;
Engine.DlgSel(1);
Delay(1500);
Engine.DlgSel(7);
Delay(1500);
Engine.MoveTo(71360, 119274, -3670);
Engine.MoveTo(70441, 119420, -3630);
Engine.MoveTo(70401, 119819, -3618);
Engine.MoveTo(70243, 120212, -3544);
Engine.MoveTo(69975, 120761, -3536);
Engine.MoveTo(69971, 120831, -3587);
Engine.MoveTo(70152, 122256, -3598);
Engine.MoveTo(70483, 123891, -3603);
Engine.MoveTo(70916, 124550, -3594);
Engine.Settarget(30557); // Таргет Торай (Torai)
Engine.MoveToTarget(-30);
Engine.Dlgopen;
Engine.DlgSel(1);
Delay(1500);
Engine.DlgSel(1);
Delay(1500);
Engine.DlgSel(1);
Delay(1500);
until Engine.QuestStatus(417,11);                           Нужно чтобы цикл завершился при достижении одного из этих уловий
 CheckItemCount(1645, True) = 1;
end.
 
begin
while not (Engine.QuestStatus(417,11)) or not (CheckItemCount(1645, True) = 1) do
begin
Dead();
Town();
Engine.Settarget(30233); // Таргет Эсмеральда (Esmeralda)
Engine.MoveToTarget(-30);
Engine.Dlgopen;
Engine.DlgSel(1);
Delay(1500);
Engine.DlgSel(7);
Delay(1500);
Engine.MoveTo(71360, 119274, -3670);
Engine.MoveTo(70441, 119420, -3630);
Engine.MoveTo(70401, 119819, -3618);
Engine.MoveTo(70243, 120212, -3544);
Engine.MoveTo(69975, 120761, -3536);
Engine.MoveTo(69971, 120831, -3587);
Engine.MoveTo(70152, 122256, -3598);
Engine.MoveTo(70483, 123891, -3603);
Engine.MoveTo(70916, 124550, -3594);
Engine.Settarget(30557); // Таргет Торай (Torai)
Engine.MoveToTarget(-30);
Engine.Dlgopen;
Engine.DlgSel(1);
Delay(1500);
Engine.DlgSel(1);
Delay(1500);
Engine.DlgSel(1);
Delay(1500);
end;
end.

@sasha282,
 
@SARCAZM, спасибо, сейчас протестирую.

until Engine.QuestStatus(417,11) or not (CheckItemCount(1645, True) = 1) так записал и нету ошибок, может прокатит :) Знаю что лучше использовать while в данном случае, но почему-то данный вариант хорошо себя зарекомендовал в моем опыте.
 
@SARCAZM,
sasha282 написал(а):
begin while not (Engine.QuestStatus(417,11)) or not (CheckItemCount(1645, True) = 1) do begin Dead(); Town(); Engine.Settarget(30233); // Таргет Эсмеральда (Esmeralda) Engine.MoveToTarget(-30); Engine.Dlgopen; Engine.DlgSel(1); Delay(1500); Engine.DlgSel(7); Delay(1500); Engine.MoveTo(71360, 119274, -3670); Engine.MoveTo(70441, 119420, -3630); Engine.MoveTo(70401, 119819, -3618); Engine.MoveTo(70243, 120212, -3544); Engine.MoveTo(69975, 120761, -3536); Engine.MoveTo(69971, 120831, -3587); Engine.MoveTo(70152, 122256, -3598); Engine.MoveTo(70483, 123891, -3603); Engine.MoveTo(70916, 124550, -3594); Engine.Settarget(30557); // Таргет Торай (Torai) Engine.MoveToTarget(-30); Engine.Dlgopen; Engine.DlgSel(1); Delay(1500); Engine.DlgSel(1); Delay(1500); Engine.DlgSel(1); Delay(1500); end; end.
Результаты тестирования. Ваш вариант не сработал, не заканчивался цикл при выполненом условии. Сработала команда :
repeat
until (CheckItemCount(1656, True) = 20) or (Engine.QuestStatus(417,8))
 
repeat
repeat
engine.facecontrol(0, true);
until (inventory.Quest.byid(7597, item) and (Item.count>=10));
BREAK;
until (inventory.Quest.byid(7597, item) and (Item.count>=10));
delay(500);
engine.facecontrol(0, false);

Может поможет)
Быдло код, но работает))
Фарм 10 когтей. Почему я поставил 2 раза, не помню. Помню что с 1м не работало.
 
Назад
Сверху