Здравствуйте, гость ( Вход | Регистрация )

9 страниц V « < 2 3 4 5 6 > »   
Ответить в эту темуОткрыть новую тему
> Игровой бот Небеса: уникальная игра!
DarkMaster
сообщение 1.7.2015, 10:27
Сообщение #61


***********

Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27708
Пользователь №: 11.279



Цитата
Но объем уменьшился в 2-4 раза.

Т.е. у вас на 1 строку приходится 1-3 строки wait'ов? (IMG:style_emoticons/default/shok.gif)

Цитата
Тормоза соответственно.

Тормоза, простите, чего? От подобных действий скорость работы может только упасть. Размер скрипта имеет значение только при объеме скрипта более 2-3к строк и то не шибко сильно.

Сообщение отредактировал DarkMaster - 1.7.2015, 10:27


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dimоn
сообщение 1.7.2015, 13:27
Сообщение #62


***

Novice
Сообщений: 97
Регистрация: 24.10.2014
Группа: Пользователи
Наличность: 0
Пользователь №: 17.079
Возраст: 27



Цитата(DarkMaster @ 1.7.2015, 10:27) *

Т.е. у вас на 1 строку приходится 1-3 строки wait'ов? (IMG:style_emoticons/default/shok.gif)


На блоке разбора после боя много вариантов действий, состоящих, соответственно, только из "тыков" и ожидания + проверки, выполнилось ли действие.

сколько это дополнительных строк?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 1.7.2015, 14:55
Сообщение #63


***********

Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27708
Пользователь №: 11.279



Цитата
сколько это дополнительных строк?

Вам виднее. Из того, что вы написали выше (размер стал меньше в 2-4 раза), то у вас на каждый оператор в среднем приходится 1-3 wait'a. Если же у вас эти задержки были только после кликов, а клики занимают, например, 25% скрипта, то у вас непосредственно после каждого клика идет 4-12 строк из одних wait'ов.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dimоn
сообщение 2.7.2015, 1:25
Сообщение #64


***

Novice
Сообщений: 97
Регистрация: 24.10.2014
Группа: Пользователи
Наличность: 0
Пользователь №: 17.079
Возраст: 27



в 4 раза он уменьшится, если использовать вариант задержек к вайлом.
из учета на строку клика, 3 строки вайла.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 2.7.2015, 7:50
Сообщение #65


***********

Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27708
Пользователь №: 11.279



Цитата
в 4 раза он уменьшится, если использовать вариант задержек к вайлом.
из учета на строку клика, 3 строки вайла.

В скрипте нет ни одной строки кроме кликов что ли?

// Примитивная подпрограмма на ожидание будет 5 строк, вызов будет занимать 2 строки.
// Процедура 5 строк, вызов 1 строка.

Сообщение отредактировал DarkMaster - 2.7.2015, 7:51


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dimоn
сообщение 2.7.2015, 10:45
Сообщение #66


***

Novice
Сообщений: 97
Регистрация: 24.10.2014
Группа: Пользователи
Наличность: 0
Пользователь №: 17.079
Возраст: 27



Цитата(DarkMaster @ 2.7.2015, 7:50) *

В скрипте нет ни одной строки кроме кликов что ли?



Ну почему нет то?
Я же пояснил - скрипт блока разбора дропа после боя.

если в луте "одно"
продаем (клик продать, подтвердить, выход, новый бой и т.д.)
если "другое"
забрать, убрать в сундук
если "третье"
разобрать (разбор, подтверждение, объединить, убрать в сундук, выход, новый бой и т.д.)

при чем, все это еще и с кликом на вызов доп. менюшки.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dimоn
сообщение 2.7.2015, 10:55
Сообщение #67


***

Novice
Сообщений: 97
Регистрация: 24.10.2014
Группа: Пользователи
Наличность: 0
Пользователь №: 17.079
Возраст: 27



Цитата(DarkMaster @ 2.7.2015, 7:50) *

// Примитивная подпрограмма на ожидание будет 5 строк, вызов будет занимать 2 строки.
// Процедура 5 строк, вызов 1 строка.


Все это хорошо, но один момент - в варианте, вида while_not x y color
параметр color разве будет постоянным???
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 2.7.2015, 11:01
Сообщение #68


***********

Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27708
Пользователь №: 11.279



Цитата
если в луте "одно"

Это уже не клик, а условие. Соответственно оно потянет за собой как минимум end_if.
Цитата
если "другое"

аналогично
Цитата
если "третье"

аналогично

Цитата
Все это хорошо, но один момент - в варианте, вида while_not x y color
параметр color разве будет постоянным???

Что мешает передавать параметр?


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dimоn
сообщение 2.7.2015, 11:52
Сообщение #69


***

Novice
Сообщений: 97
Регистрация: 24.10.2014
Группа: Пользователи
Наличность: 0
Пользователь №: 17.079
Возраст: 27



Цитата(DarkMaster @ 2.7.2015, 11:01) *
Цитата
если в луте "одно"

Это уже не клик, а условие. Соответственно оно потянет за собой как минимум end_if.
Цитата
если "другое"

аналогично
Цитата
если "третье"

аналогично


А-а-а (IMG:style_emoticons/default/viking.gif) (IMG:style_emoticons/default/russian_roulette.gif) ))))) (IMG:style_emoticons/default/crazy.gif)

То ли я никак не могу доходчиво донести, о чем пытаюсь пояснить... то ли все всё поняли и цепляются до слов?..

типичный вариант куска скрипта
Код

if ***
   left x y
         left  x y  
          if ***
            left  x y
            left  x y
            left  x y
            left  x y
            left  x y
          end_if
                       if $rb > 0
            left  x y
            left  x y
            left  x y
            left  x y
                           else
         left  x y
         left  x y
         left  x y
            left  x y
            left  x y
         end_if
                           end_if
           left  x y     //bez1
  
      
       if (***) or (***)
          left  x y
          left  x y
            left  x y
            left  x y
        left  x y
         left  x y
          left  x y
       end_if
      
       left  x y
            left  x y
            left  x y
       left  x y   //prodat
        left  x y
            left  x y
            left  x y
        wait 1000
       left  x y
       left  x y    //noviy boy
                          start_script 1
                          stop_script
        left  x y
        left  x y
            left  x y
            left  x y
            left  x y
            left  x y
        wait 1000      //разобран
        left  x y
        left  x y
            left  x y
            left  x y
        left  x y
        left  x y
  end_if


Что я пытаюсь сказать - сопостовление строк с условиями и с кликами. Преобладание очевидно.
Если добавить еще и ожидание, после клика на обработку его сервером, объем вырастет в 2-4 раза.
Поступил по другому, решил вопрос увеличением межстрочного интервала.

Вот (IMG:style_emoticons/default/biggrin.gif) (IMG:style_emoticons/default/biggrin.gif) (IMG:style_emoticons/default/biggrin.gif)


Цитата(DarkMaster @ 2.7.2015, 11:01) *

Что мешает передавать параметр?


хм.. его изменение.. Т.е. если менюха должна вылезти в одном месте, он параметр в заданной точке один. Если в другой, то и, соответственно, + изменение координат
+ их определение.

Или я опять пошел не по тому пути?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 2.7.2015, 12:07
Сообщение #70


***********

Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27708
Пользователь №: 11.279



Цитата
то ли все всё поняли и цепляются до слов?..

Цепляюсь и цепляюсь оправданно. Потому, что ваши слова при точном и буквальном воспроизведении создают картинку сюрреалистического бреда. Цифры не сходятся.
Цитата
хм.. его изменение.. Т.е. если менюха должна вылезти в одном месте, он параметр в заданной точке один. Если в другой, то и, соответственно, + изменение координат
+ их определение.

Ну вы же кликаете? Значит координаты известны.
Кстати можно и вовсе создать подпрограмму-комбайн либо несколько подпрограмм, которые будут друг друга вызывать. При этом сохранится весь функционал, объем и вовсе может не изменится за исключением добавления самих подпрограмм. А если координаты из серии кликов завернуть в массив и for, то тело скрипта и вовсе может уменьшится(шапка правда увеличится соразмерно).
Мы же можем передать любой набор параметров, включая координаты клика, координаты и цвет контрольной точки. Т.е. передав 5 параметров нам и кликать то в скрипте не надо будет - это сделает подпрограмма.

Сообщение отредактировал DarkMaster - 2.7.2015, 12:08


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dimоn
сообщение 2.7.2015, 14:08
Сообщение #71


***

Novice
Сообщений: 97
Регистрация: 24.10.2014
Группа: Пользователи
Наличность: 0
Пользователь №: 17.079
Возраст: 27



Цитата(DarkMaster @ 2.7.2015, 12:07) *

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


Во-во-во, это уже интересно..
То есть, у нас есть точка клика, вернее ее координаты, каким нибудь геткалором, мы берем ее цвет и отправляем на цикл вайла, до его изменения?




Массив...
i0 j0 i1 j1

x y
    [i0] x(нач) последовательность координат операций по х
    [j0]у(нач) -//-//-
    [i1]х(кон) -//-//-
    [j1]у(кон) -//-//-
for i=[начало серии кликов] to [конец серии]
for j=[коорд.по х(нач)] to [у(кон)]
х(нач) + random ([разница между нач. и кон.])
y(нач) + random ([разница между нач. и кон.])
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 2.7.2015, 14:40
Сообщение #72


***********

Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27708
Пользователь №: 11.279



Цитата
То есть, у нас есть точка клика, вернее ее координаты, каким нибудь геткалором, мы берем ее цвет и отправляем на цикл вайла, до его изменения?

Можно и так, но я бы просто задал некоторую точку и координату, которую необходимо контролировать. Можно сделать достаточно большой массив под все это дело:
Код

// Образец вызова с произвольными данными.
init_arr %a 1 2 0 3 4 5 // clickX; clickY; while|not(>0|0); checkX; chekY; checkColor.
gosub clickAndWait
stop_script


:clickAndWait
    left %a [ 1 ] %a [ 2 ]
    if  %a [ 3 ] > 0
        while %a [ 4 ] %a [ 5 ] %a [ 6 ]
            wait 10
        end_while
    else
        while_not %a [ 4 ] %a [ 5 ] %a [ 6 ]
            wait 10
        end_while
    end_if
return

Вызов с произвольными данными можно легко завернуть в for, двуразмерный массив и т.д.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sefi
сообщение 14.7.2015, 9:29
Сообщение #73


*

Registred
Сообщений: 1
Регистрация: 21.4.2015
Группа: Пользователи
Наличность: 0
Пользователь №: 17.425



Прочитал данную дискуссию ... увидел, что автор делает СИСТЕМНУЮ ОШИБКУ !!!
Впрочем это чисто мое мнение - и если что, то можно наплевать на него :-)
Сейчас попробую объяснить его:
Наверное это быстро смогут понять те кто программирует промышленные контроллеры ..
Дело в том, что вы делаете скрипт - как классический программист ... то есть программа стартует, что то считает и потом выдает результат. Да же не первой странице нарисовали красивые картинки в виде графов, как это считается. Обсуждаете что надо использовать while что бы дождаться появления менюшки, ну и так далее.
На самом деле - надо сломать себе мозг ... и понять что СКРИПТ СУЩЕСТВУЕТ (ВЫПОЛНЯЕТСЯ) ВСЕГДА !!!
И на самом деле - одно действие можно выполнять на одном цикле, а другое например на следующем.
ТО есть - если появился зеленый цвет в определенной области экрана - значит твой ход, надо брать манну и бить ... и квадратом и крестом!!! Если на одном цикле ударило квадратом, на следующем ударит крестом.
Если в каком то месте экрана появился фон менюшки - значит нажимаем в такую то точку, что бы забрать в рюкзак, или продать.
Возможно не понятно объяснил ... извиняюсь но поверьте - таким образом получаются короткие, надежные и быстро работающие скрипты.
:-)
Удачи
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dimоn
сообщение 14.7.2015, 13:01
Сообщение #74


***

Novice
Сообщений: 97
Регистрация: 24.10.2014
Группа: Пользователи
Наличность: 0
Пользователь №: 17.079
Возраст: 27



Ну да, понял не особо...
То есть, Вы хотите сказать, что ошибка самого скрипта в том, что он не имеет завершения? И если что-то слетит, он не перестанет работать?
Да, работать он не перестанет, но и "тыкать" он тоже никуда не будет. скорее всего будет ждать появления хода.
Но, для чего все это делается?
Вопрос, возможно, больше риторический. Основная задача создателей - увлечь пользователя и, в определенный момент, призвать его купить ресурсы. То есть, основная цель, все-таки имеет маркетинговый характер.
В то же время, пользователю, не интересно платить кому-то, за что-то, на самом деле не существующее. Но, на то, что бы набить ресурсы самостоятельно, понадобится очень много, по сути, бесполезно потраченного, времени.
Скрипты решают этот вопрос, тем, что работают самостоятельно и в принципе, я не вижу смысла, подводить их к завершению. Если это кому-то необходимо, то селать это не так сложно. Самое простое - поставить заданное число повторов или рубануть по времени работы.
Наконец, можно настроить параметры управления питанием и время простоя до перехода в спящий режим.

Или есть какие-то предложения, по изменению строения или принципа работы?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 14.7.2015, 19:39
Сообщение #75


***********

Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27708
Пользователь №: 11.279



Цитата
Прочитал данную дискуссию ... увидел, что автор делает СИСТЕМНУЮ ОШИБКУ !!!
Впрочем это чисто мое мнение - и если что, то можно наплевать на него :-)
Сейчас попробую объяснить его:
Наверное это быстро смогут понять те кто программирует промышленные контроллеры ..
Дело в том, что вы делаете скрипт - как классический программист ... то есть программа стартует, что то считает и потом выдает результат. Да же не первой странице нарисовали красивые картинки в виде графов, как это считается. Обсуждаете что надо использовать while что бы дождаться появления менюшки, ну и так далее.
На самом деле - надо сломать себе мозг ... и понять что СКРИПТ СУЩЕСТВУЕТ (ВЫПОЛНЯЕТСЯ) ВСЕГДА !!!
И на самом деле - одно действие можно выполнять на одном цикле, а другое например на следующем.
ТО есть - если появился зеленый цвет в определенной области экрана - значит твой ход, надо брать манну и бить ... и квадратом и крестом!!! Если на одном цикле ударило квадратом, на следующем ударит крестом.
Если в каком то месте экрана появился фон менюшки - значит нажимаем в такую то точку, что бы забрать в рюкзак, или продать.
Возможно не понятно объяснил ... извиняюсь но поверьте - таким образом получаются короткие, надежные и быстро работающие скрипты.
:-)

В этом есть смысл, но в плане скриптов и объемных скриптов получается ужас. Поэтому я где-то выше рекомендовал (вроде в этой теме) делать несколько "стандартных" положений и приходить к ним при старте скрипта.
Я делал описанную вами конструкцию в чуть измененном виде - по сути это был набор вложенных ифов в обратном порядке. Т.е. если есть возможность сделать конечный ход, то он делается, иначе проверяется возможность перейти к конечному ходу, если есть возможность перейти к конечному ходу то переходим, иначе проверяем возможность перейти к предконечному ходу и т.д.
В реалиях - это очень запутанный и неудобный ход, возможны очень большие проблемы с производительностью, если требуется хорошая реакция.
По факту в реалиях проще делать контролирующий скрипт сателит, который проверяет счетчик успешных законченных действий, в случае проблем идет перезапуск скрипта и приход к стандартному положению. При этом полностью сохраняется адекватный читаемый вид скрипта, стабильность на практике не сильно страдает и при средне отработанном скрипте кпд страдает на 1-2% при одинаковом времени выполнения. У меня был скрипт который за минимальное количество времени (4-8 секунд обычно) должен был проработать по менюшкам и перейти к началу. Переход к схеме со скриптом сателитом дал выигрыш по скорости работы примерно в 40%, обернулось это перезапуском скрипта 2-3 раза в сутки, т.е. потерей в 2-3 минуты (так был настроен датчик подвисания) в сутки, что просто не серьезно. При этом часть проблем по факту была единичными случаями которые просто невозможно было предвидеть, например, краш сервера с никогда ранее не возникавшей ошибкой. Сателиту же при этом не составляло труда перезапустить основной скрипт, который успешно стартовал заново приложение и цеплялся к серверу.
В целом идейно ваше мнение очень правильное, но зачастую приводящее к очень большим проблемам при объемных скриптах, которые необходимо редактировать.
Цитата
Или есть какие-то предложения, по изменению строения или принципа работы?

Об этом и речь. Человек предлагает не иметь глобальной логике в скрипте. По большому счету предлагается сделать набор координат+цвет со всеми использующимися действиями и перебирать их постоянно. Т.е. весь скрипт в таком случае будет выглядеть примерно так:
Код
:start
if  x1 y1 c1
    left x1 y1
end_if
if  x2 y2 c2
    left x2 y2
end_if
if  x3 y3 c3
    left x3 y3
end_if
goto start


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Triniti
сообщение 26.7.2015, 23:05
Сообщение #76


**

Neophyte
Сообщений: 40
Регистрация: 2.10.2014
Группа: Пользователи
Наличность: 0
Пользователь №: 17.033



Всем утро/день/вечер/другое (нужное подчеркнуть) (IMG:style_emoticons/default/blink.gif)
Собсна тема всё ещё актуальна, и хотелось бы увидеть варианты упрощения сего скрипта:
Код

move 607, 437 abs // окно игра справа    
set #win windowfromcursor
set workwindow #win
set #t 200 + random (400) // быстрый клик
set #w 2200 + random (800) // переход
set #d 4000 + random (800) // дракон
set #o 600 + random (500) // клик
set #q 1300 + random (400) // сбор

set $path C:\острова\
// мобы
set %mobs[1] глад
set %mobs[2] джига
set %mobs[3] курл
set %mobs[4] матаз

// кнопки
set %button[1] напасть
set %button[2] обед
set %button[3] продать
set %button[4] отдать
set %button[4] забрать

// элики (исп-ся в этом порядке)
set %elik[1] култ
set %elik[2] зелмана
set %elik[3] вино
set %elik[4] крест
set %elik[5] молния
set %elik[6] наручи
set %elik[7] куб

// остальное
set %etc[1] ход
set %etc[2] ворота
set %etc[3] победа

set #koll 0 // убито мобов  
GOTO poisk

:select
move 607, 437 abs // мышь на игру
set #win windowfromcursor
set workwindow #win
set #koll 0 // убито после обновления
set $ostrov findimage (0 0 320 490 ($path%etc[2].bmp) %crds workwindow)
if $ostrov > 0 // ворота найдены
wait #w
else
wait #d
end_if

:poisk // мобы
// в цикле ищем любого моба из списка
for #mob 1 size(%mobs)
set $mob findimage (0 0 200 600 ($path%mobs[#mob].bmp) %crds workwindow)
if $mob > 0
  left %crds[1 1] %crds[1 2] // клик на моба
  wait 400
  GOTO ataka   // атакуем
end_if
end_for
   GOTO next // идём дальше

:next
left 673, 262 // след остров
wait #w
GOTO poisk // ищем

:ataka
left 89,477
wait #t
set $vboy findimage (0 0 600 420 ($path%button[1].bmp) %crds workwindow)
if $vboy > 0 // напасть
left %crds[1 1] %crds[1 2]
   else
   wait 100
   GOTO ataka // пробуем снова
end_if


set #time 0
while #time < 30
:xod // ждём переход хода к нам
set $xod findimage (0 0 400 130 ($path%etc[1].bmp) %crds workwindow)
if $xod > 0
gosub bitva // если ход наш, атакуем
    else
    wait 1000
    set #time #time + 1
    hint ([42] (ждём #time с))
      if #time = 30 // если зависло
      alarm
      alarm
      GOTO reboot  // обновляемся
      end_if
    GOTO xod
end_if
end_while  
    
:bitva
wait 150
// в цикле ищем любой доступный закл
for #zakl 1 size(%elik)
set $elik findimage (0 0 710 600 ($path%elik[#zakl].bmp) %crds workwindow)
if $elik > 0
  left %crds[1 1] %crds[1 2] // элик
  wait 400
if %elik[#zakl ] = крест            
                  Call Rand
            end_if
            
if %elik[#zakl ] = куб          
                  Call Rand
            end_if
end_if
end_for

Proc Rand
     :Rand
     set $rand Random(10)

     if $rand < 1
        Goto Rand
     end_if

     set %r[1] 304, 148 //1.2
     set %r[2] 432, 357 //5.6
     set %r[3] 461, 262 //6.4
     set %r[4] 348, 228 //3.3
     set %r[5] 341, 307 //3.5
     set %r[6] 343, 354 //3.6
     set %r[7] 426, 267 //5.4  
     set %r[8] 299, 272 //2.4  
     set %r[9] 345, 266 //3.4
     set %r[10] 383, 347 //4.6
    
     left %r[$rand]
     wait 10s // после удара фигурой ждём 10 сек

End_Proc

set $trof findimage (0 0 500 400 ($path%etc[3].bmp) %crds workwindow)
if $trof > 0 // поле пропало
GOTO drop_okno
else
GOTO xod // повторяем ход
end_if

:drop_okno // ждём пока поле пропадёт
set #time 0
while #time < 30
set #trof findimage (0 0 500 400 ($path%etc[3].bmp) %crds workwindow)
if #trof > 0 // поле пропало
GOTO drop_sbor
else
  wait 200
  set #time #time + 1
  hint ([42] (#time))
    if #time = 40  
    alarm
    alarm
    GOTO reboot // обновляемся
    end_if
end_if
end_while

:drop_sbor
wait #q
// тут если надо собираем дроп, иначе продаём
GOTO prodat


:prodat
wait #t
left 330, 379 // продать всё
wait #o
set $proda findimage (0 0 670 680 ($path%button[3].bmp) %crds workwindow)
if $proda > 0
left %crds[1 1] %crds[1 2] // продать
else
   set $otdat findimage (0 0 670 680 ($path%button[4].bmp) %crds workwindow)
   if $otdat > 0
   left %crds[1 1] %crds[1 2] // отдать
   end_if
end_if
wait #w
left 414, 382 // выйти
wait #o

:end_attack // после манипуляций с дропом
set #koll #koll + 1
hint ([42] (убито #koll)) // убито
if #koll > 50
  GOTO reboot
   else
   GOTO next
end_if

:reboot // перезагрузка страницы
left 1682, 68 abs
wait 20s
GOTO select


Исходные картинки здесь (drive.google)
Запутался всё читать, потому спрошу так: решен ли вопрос с движением камней на поле для завершения хода?
И совсем странный вопрос: каковы могут быть причины неработоспособности скрипта? На виртуальной машине (Win XP) работает корректно, на реальном ПК (Win 8.1 pro VL) отказывается искать картинки в plugin-container'e, хотя у других работает (но тоже не у всех). Flash при этом у всех последний, браузеры FF/Seamonkey.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 27.7.2015, 0:10
Сообщение #77


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
И совсем странный вопрос: каковы могут быть причины неработоспособности скрипта? На виртуальной машине (Win XP) работает корректно, на реальном ПК (Win 8.1 pro VL) отказывается искать картинки в plugin-container'e, хотя у других работает (но тоже не у всех). Flash при этом у всех последний, браузеры FF/Seamonkey.

Причин может быть множество. Зависит от того в каком месте перестает работать.
Картинки сделанные на разных компьютерах могут отличатся. Соответственно картинки сделанные на одном компьютере могут не находится на другом. Так что не удивительно что не у всех работает.
Работает ли поиск картинок в 8.1 в вообще? Имеется ввиду в других браузерах или приложениях? При поиске workwindow привязка должна быть к родительскому окну.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 27.7.2015, 0:25
Сообщение #78


***********

Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27708
Пользователь №: 11.279



Цитата
Собсна тема всё ещё актуальна, и хотелось бы увидеть варианты упрощения сего скрипта:

Выкинуть к чертям собачьим ВСЕ goto, кроме зацикливания тела скрипта (все, что после объявления переменных, массивов и т.д. в шапке). Построить всю логику на gosub.
В процедуре рандома ошибка:
Код
set #a random (10)

вернет значение от 0 до 9. Там уже прилеплен костыль, чтобы не было вылетов при обращении к несуществующей нулевой ячейке массивов. Так же 10 ячейка никогда не будет использована в текущей реализации кода. ,Для фикса достаточно сделать:
Код
set #a random (10) + 1

Так же абсолютно не понятно зачем при каждом вызове процедуры рандома каждый раз заново объявляется массив %r. Место таким объявлениям в шапке скрипта.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Triniti
сообщение 27.7.2015, 0:25
Сообщение #79


**

Neophyte
Сообщений: 40
Регистрация: 2.10.2014
Группа: Пользователи
Наличность: 0
Пользователь №: 17.033



Цитата(cirus @ 27.7.2015, 2:10) *

Причин может быть множество. Зависит от того в каком месте перестает работать.
Картинки сделанные на разных компьютерах могут отличатся. Соответственно картинки сделанные на одном компьютере могут не находится на другом. Так что не удивительно что не у всех работает.
Работает ли поиск картинок в 8.1 в вообще? Имеется ввиду в других браузерах или приложениях? При поиске workwindow привязка должна быть к родительскому окну.

В 8.1 не работает именно в plugin-container вообще (ни в одном браузере), картинки сделаны на компе, до зимы кстати всё работало (и привязывал всегда именно к контейнеру, при привязке к firefox.exe работать ясно-понятно не будет; на виртуалке также к контейнеру привязывается и работает как часы). В других приложениях поиск на 8.1 работает.
На компе работают только клики, т.е. если даже в poisk есть совпадения на экране, пилот их не видит и просто идёт на next и зацикливается poisk-next-poisk...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 27.7.2015, 0:29
Сообщение #80


***********

Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27708
Пользователь №: 11.279



А зачем вы привязываетесь к конейнеру? Это фактически песочница для плагинов в которой запускается песочница флэша в которой запускается флэш. И через все эти песочницы идет проброс в браузер. Песочницы сделаны для того, чтобы как раз невозможно было общаться напрямую с фэшем и другими плагинами с целью безопасности и изоляции от системы. Привязывайтесь к браузеру. Уже пару лет как и хендлов то отдельных нет под флэш.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

9 страниц V « < 2 3 4 5 6 > » 
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 28.3.2024, 16:16
Designed by Nickostyle