Oskom Forums

Oskom Forums


Добро пожаловать на Oskom Forums.
 
 
Сейчас на шардах UO Oskom
 
+ Ответить в теме
Показано с 1 по 7 из 7
  1. #1

    По умолчанию UOScript, CraftMenu - блин, уже каша в голове, может кто зна

    Дообрых суток, опять я гужу... :)
    Суть в чём, хочу написать скрипт с отгрузкой из сундука, производством последующим рекалом, продажей, возвращением назад (опять таки рекал) и повтором до окончания ресурсов в сундуке. Никаких проблем не возникает кроме части с производством. Я хотел сделать его через КрфтМеню, поскольку проверка цвета лично мне неудобна. После некоторых мучений написан следующий кусок, но он зараза не работает, а почему - не могу понять совершенно...
    Общая логика следующая, посылается кнопка, на которую забинден ЛфстОбджэкт (этого хватает, произвожу удочки) после чего в цикле идёт проверка из 3 вариантов. Первое: Если найдено крафт меню карпентри, то проверяет его и если третий пункт - веапон то щёлкает в него, ждёт появления крафтменю веапон и если в нём первым идут удочки, то кликает на них, если не удочки - фэлс, если в течении 15 секунд меню вэапон не возникнет - фэлс. Второе: если появилось сразу крафтменю веапон (логов осталось менее 10) то проверяет есть ли в нём удочки (индекс 0) и если есть то делает, иначе фалс. Третье: если от сервера пришло сообщение о нехватке ресурсов на что-либо то фэлс.
    Ожидание выполнения одного из этих 3 вариантов происходит 15 секунд, после чего - фэлс.
    Очень важно мне чётко доводить производство до конца, потому что я хоть и проверяю перед загрузкой бэкпэк на наличие остатков и гружусь всегда до одного и того же значения вне зависимости от чего-либо, однако появление в бэкпеке лишних непонятных предметов карпентри производства смерти подобно...
    Помогите дураку, а то уже мозги отказывают... :)
    Вот тело функции в проверочном скрипте (k введена для использования внутренних циклов ожидания и уточнения продолжительности основного цикла функции):

    Program UOScriptTest;

    Function Carpentry(): boolean;
    var
    i, j, k: longint;
    MenuIndex: longint;
    ItemName: string;
    begin
    k := 0;
    j := 0;
    sendkey(k_Insert);
    repeat
    if (FindCraftMenu('Carpentry', MenuIndex) = True) then
    begin
    GetMenuItemName(MenuIndex, 2, ItemName);
    if (Pos(ItemName, 'Weapon') = 1) then
    begin
    leftdoubleclick(237,72);
    i := 0;
    repeat
    Delay(500);
    if (i >= 30) then
    begin
    k := 2;
    break;
    end;
    i := i + 1;
    Until (FindCraftMenu('Weapon', MenuIndex) = True);
    GetMenuItemName(MenuIndex, 0, ItemName);
    if (Pos(ItemName, 'fishing') = 1) then
    begin
    leftdoubleclick(117,69);
    Delay(3000);
    k := 1;
    break;
    end;
    // else
    // begin
    // k := 2;
    // break;
    // end
    end;
    end
    else if (FindCraftMenu('Weapon', MenuIndex) = True) then
    begin
    GetMenuItemName(MenuIndex, 0, ItemName);
    if (Pos(ItemName, 'fishing') = 1) then
    begin
    leftdoubleclick(118,68);
    Delay(3000);
    k := 1;
    break;
    end
    else
    begin
    k := 2;
    break;
    end
    end
    else if (Pos(_lastmsg, 'you can') = 1) then
    begin
    k := 2;
    break;
    end
    else
    begin
    Delay(500);
    j := j + 1;
    end;
    Until ((k <> 0) or (j >= 30));
    if (k = 1) then Result := True
    else Result := False
    end;

    begin
    repeat
    Until(Carpentry() = False);
    end.

  2. #2

    По умолчанию

    Слушай, а зачем ты вобще тогда играеш? Чтобы после ТАКОГО макроса подойти к компу через недельку-другую и сказать себе: ух ты карпентри ГМ! как здорово я поиграл! стоолько удовольствия получил!
    Я начал было читать это как его там млин... тело чье-то... скрипта какого-то дак у меня сразу мозги чуть не отказали Не забивай себе голову короче этой шнягой
    Положил вечерком в пак логов 500, запустил простенький макрос с проверкой цвета, скрафтил, продал, купил регов, химии чуток, пошел позажигал - повеселился

  3. #3

    По умолчанию

    Цитата Сообщение от Romis
    Положил вечерком в пак логов 500, запустил простенький макрос с проверкой цвета, скрафтил, продал, купил регов, химии чуток, пошел позажигал - повеселился
    На форуме пофлудил... Даже близко не похоже на ответ... Я в УО играю с 99 года, интересы сместились...
    Вопрос не в карпентри, оно давно гм, вопрос интереса и производительности крафтера...

  4. Master

    Регистрация
    30.12.2002
    Адрес
    Kalb[Bona Fide] (был Mager)
    Сообщений
    1,391
    #4

    По умолчанию

    Что-то я так и не понял проблемы.
    Код:
    //Фукнция ожидания гампа с именем aTitle в течении aTimeOut милисекунд.
    //Если меню не появилось или таймаут истёк, функция возвращает False, иначе True.
    //aTitle - название гампа.
    //aTimeOut - Таймаут в милисекундах.
    //Версия уоскрипта 1.48.
    function WaitGump(aTitle: string; aTimeOut: longint): Boolean;
    var
      fGump, Pause: longint;
    begin
       Pause:=0;
       Repeat
         Delay(200);
         Pause:=Pause+200;
       Until (FindCraftMenu(aTitle, fGump)) or (Pause>aTimeOut);
       Result:=Pause<=aTimeOut;
    end;
    После LastObject дожидаешься меню. Если не дождался, проверяешь ластмесаг. Если в нём говорится о нехватке ресурсов, летишь продавать. Если меню появилось, смотришь сколько в меню итемов(GetMenuItemsCount), перебираешь их все в цикле. Если не найден нужный итем, летишь продавать. Если найден нужный итем (удочки), устанавливаешь его как первый(SetFirstItemIndex) элемент меню и кликаешь на первый итем меню. Ждёшь смены ластмесаджа, чтобы в нём был либо put, либо fail. Никогда такой подход не подводил.
    На сколько я помню при изготовлении удочек открывается одно меню.
    И ещё, юзай набор плотника (а не пилу), он сбивает ластмесаг.

  5. #5

    По умолчанию

    Спасибо, я уже разобрался (проспался для начала, этого оказалось достаточно)... Я просто пытался рассмотреть большее кол-во вариантов чем существовало на самом деле, это меня и губило со страшной силой...

  6. #6

    По умолчанию

    Цитата Сообщение от aspid
    Цитата Сообщение от Romis
    Положил вечерком в пак логов 500, запустил простенький макрос с проверкой цвета, скрафтил, продал, купил регов, химии чуток, пошел позажигал - повеселился
    На форуме пофлудил... Даже близко не похоже на ответ... Я в УО играю с 99 года, интересы сместились...
    Вопрос не в карпентри, оно давно гм, вопрос интереса и производительности крафтера...
    Ну дак сразу бы так и сказал Что интерес к игре уже прошел, и теперь всякая чушь в голову лезет Не знаеш уже чем бы заняться.
    P.S. Old Oskom Free - это Action, а не экономическая стратегия Папа Карло ты наш

  7. #7

    По умолчанию

    Ненавижу вас, долбаных квакеров... Такие как вы и делают из УО экшэн. Это не экшен а РОЛЕВАЯ блин игра, виртуальная реальность, где можно быть хоть пекарем хоть простым путешественником и наслаждаться этим, играйте в контру раз у вас интересы столь ограничены... Материальная сторона это не подпорка для сражений, это другая грань красивой разнообразной игры...

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения