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

52 страниц V « < 2 3 4 5 6 > »   
Ответить в эту темуОткрыть новую тему
> Упростить скрипт
DarkMaster
сообщение 7.8.2013, 9:52
Сообщение #61


***********

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



реквизиты в пм


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


***********

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



Вспомнил я тут про свой локальный ад под НГ. https://forum.uokit.com/index.php?showtopic=25243&hl=sto
Та же проблема. Сейчас через удаленку разбирался и нашел очень и очень интересные закономерности. Если сделать вывод ошибок в лог + dev/null, то все проскакивает и бежит дальше. Ошибка сыпится, но скрипт не останавливается. Дальше интереснее. Если врубить log commands, то ошибка вообще не возникает. Т.е. врубаешь отладку - исчезает ошибка. Кнайт, я уже предчувствую как тебе будет весело. Причем хочу напомнить, что у меня эта проблема была аж в 2.17, проблема старая. И там таких прелестей не было, чтобы скрипт продолжил работать при сбоях...

Цитата
Переиграл ты немножечко в линейку))

это не присущее только л2 сокращение.


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


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 0
Из: Белоруссии
Пользователь №: 14.972



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


***********

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



Кнайт ты чиркни, если добавил в список багов. А то не понятно видел ты или нет.


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


********

Разработчик UO Pilot'а
Сообщений: 1.639
Регистрация: 9.1.2006
Группа: Пользователи
Наличность: 0
Пользователь №: 4.688



Цитата
лог + dev/null
Добавил.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
veiron
сообщение 8.8.2013, 17:46
Сообщение #66


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 0
Из: Белоруссии
Пользователь №: 14.972



Код

set #q1 0
set #kt 0
:start
for #i 1 #sz
    if %a[#i 1] %a[#i 2] #color
        set #x %a[#i 1] + 41
        set #y %a[#i 2]    
        get color #colorN #x #y  
             if #colorN = #color    
                    if #x #y #color      
                       log НАШЕЛ В  %a[#i 1] %a[#i 2]  #color
                       set #q1 #q1 + 1      
                       set %zhe[#q1 1] %a[#i 1] %a[#i 2]
                       save_array %zhe c:\logs\pravo.txt
             end_if
    end_if
end_for
for #i 1 #sz
     if %a[#i 1] %a[#i 2] #color
         set #x1 %a[#i 1]
        set #y1 %a[#i 2] + 41  
        get color #colorN1 #x1 #y1  
             if #colorN1 = #color    
                 if #x1 #y1 #color    
                      log НАШЕЛ В  %a[#i 1] %a[#i 2]  #color
                     set #kt #kt + 1  
                     set %zhe1[#kt 1] %a[#i 1] %a[#i 2]
                     save_array %zhe1 c:\logs\niz.txt
                 end_if
             end_if          
    end_if
end_for
wait 5s
goto start


Подскажите, почему при новом старте, ИНОГДА файл куда надо записать данные, не перезаписывается, а просто добавляется новые данные. И скажите можно как то упростить и увеличить работоспособность этого скрипта. Принцип работы: на поле нахожу точку с нужным цветом и смотрю есть справа или вверху точка с таким же цветом.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 8.8.2013, 18:01
Сообщение #67


***********

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



Цитата
get color #colorN1 #x1 #y1
if #colorN1 = #color

if #x1 #y1 #color
Я уже об этом говорил. Дальше пока в логику не вникал.


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


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 0
Из: Белоруссии
Пользователь №: 14.972



Цитата(DarkMaster @ 8.8.2013, 18:01) *

if #x1 #y1 #color
Я уже об этом говорил. Дальше пока в логику не вникал.

Я помню, почему то, если делаю одной строкой тогда проскакивает в иф другой цвет.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
veiron
сообщение 8.8.2013, 18:33
Сообщение #69


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 0
Из: Белоруссии
Пользователь №: 14.972



Кстати по поводу ошибки в таймере. При добавлении только строчки log commands проблема полностью не исчезает, а только оттягивает время вылета ошибки.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 8.8.2013, 18:37
Сообщение #70


***********

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



какие-то чудеса у тебя творятся. Сделай, как я говорю - ифом, а после ифа сделай гет колор с выводом в лог. Хоть посмотрю на это чудо. Вдруг еще какой-то баг.
Цитата
ИНОГДА файл куда надо записать данные, не перезаписывается, а просто добавляется новые данные.

странно... я вообще мечтал о таком функционале, но его вроде так и не сделали. Перед записью проверь размер массива. Возможно он в себе содержит лишние данные.

В первом цикле ошибка - три ифа открываются, но только два закрываются.

Цитата
if #colorN1 = #color
if #x1 #y1 #color

можно заменить на:
if #x1 #y1 #color and #colorN1 = #color

не очень понятно откуда берется #sz и каким образом она изменяется в ходе работы скрипта. Так же не очень понятно что в себе содержит массив. Теоретически, если сетка статичная, то можно чуть-чуть сэкономить время на вычислении:
Цитата
set #x1 %a[#i 1]
set #y1 %a[#i 2] + 41

забив координаты один раз в массив. Но толку от этого будет не очень много. Если счет не идет на миллисекунды, то смысла заморачиваться нет.

Достаточно интересный прирост производительности может дать проверка внутри одного цикла и правой стороны и верха. Да и как-то логично это в один цикл запихать.

Если нужны совпадения только с обоих сторон, то можно вообще одним ифом ограничиться с несколькими условиями через and.


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


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 0
Из: Белоруссии
Пользователь №: 14.972



Цитата(DarkMaster @ 8.8.2013, 18:37) *
странно... я вообще мечтал о таком функционале, но его вроде так и не сделали. Перед записью проверь размер массива. Возможно он в себе содержит лишние данные.


В начале скрипта стоит:
Код
set size (%a)
init_arr %zhe1 2)
save_array %zhe c:\logs\niz.txt
// Перезаписать файл с пустым массивом, . Запускаю скрипт, все перезаписывается, но иногда не перезаписывается заново, а с прошлого массива остается 1 строчка с координатами. Хотя как я понимаю строка set size (%a) должна очищать массив.


Цитата(DarkMaster @ 8.8.2013, 18:37) *
не очень понятно откуда берется #sz и каким образом она изменяется в ходе работы скрипта. Так же не очень понятно что в себе содержит массив.

Код
set $a1 findcolor (238, 115 489, 374 1 1 (576495) %a 2 -1)

Вот отсюда берется. Массив содержит найденные координаты цвета.
Цитата(DarkMaster @ 8.8.2013, 18:37) *

Если нужны совпадения только с обоих сторон,
то можно вообще одним ифом ограничиться с несколькими условиями через and.
Нужно с 4 сторон. Вообще искать надо с 4 сторон, но если начинаю искать с 4 у меня, если цвет находится в двух соседних клетках, засчитывает 2 раза(слева направо и справа налево). Уже пол года бьюсь над созданием этого скрипта, который будет искать камня одного цвета на поле и соединять их в 3 в ряд и ни чего не выходит. Даже топик когда то про это создавал.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 8.8.2013, 19:29
Сообщение #72


***********

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



че-нить придумаем.


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


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 0
Из: Белоруссии
Пользователь №: 14.972



Цитата(DarkMaster @ 8.8.2013, 19:29) *

че-нить придумаем.

Это вы о чем?

Код
странно... я вообще мечтал о таком функционале, но его вроде так и не сделали. Перед записью проверь размер массива. Возможно он в себе содержит лишние данные.

Проверил, массив был пуст. А произошло вот что, в файле были записаны координаты 424 350, при следующем запуске скрипта, скрипт нашел координаты 301 309 и просто взял и сместил старые координаты на 2 строку, а последние записал 1 строкой.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
veiron
сообщение 8.8.2013, 20:27
Сообщение #74


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 0
Из: Белоруссии
Пользователь №: 14.972



Нашел почему появляется лишняя строчка, только не понял как с этим бороться.
Код
:start
set #q1 0
save_array %zhe c:\logs\zheltie_poisk_2\niz.txt
for #i 1 #sz
    if #x #y #color and #colorN = #color
         set #q1 #q1 + 1      
         set %zhe[#q1 1] %a[#i 1] %a[#i 2]
             save_array %zhe c:\logs\zheltie_poisk_2\zheltie_pravo.txt
    end_if
end_for
pause_script
goto start

Если запускать пилот и в конце цикла после паузы делать стоп, сколько бы я так не делал, что будет прописано в файле, все удалится, после каждого запуска. А вот если я буду просто снимать с паузы, не делая старт/стоп, будет происходить что. первый цикл: нашли 1 координаты и записали в 1 строку, пошли выполнять второй цикл и нашли 2 координаты, теперь уже в файле записано 2 строки, а вот на 3 цикл нашли всего 1 координату, ее то и пропишет пилот 1 строкой, а вот 2 строка с прошлого раза, как была так и останется. Может подскажете как это вылечить ? И почему если делать старт/стоп, 3 строка скрипта, полностью очищает файл. Даже просто если написать три строчки то они будут очищать файл:
Код
:b
save_array %zhe c:\logs\zheltie_poisk_2\niz.txt
wait 1s
pause_script
goto start


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


***********

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



хз. надо ковырять почему оно так себя ведет. уже утром.


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


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 0
Из: Белоруссии
Пользователь №: 14.972



Цитата(DarkMaster @ 8.8.2013, 20:33) *

хз. надо ковырять почему оно так себя ведет. уже утром.

Может вы разберетесь.


Код
set #kt 0 
:a
save_array %zhe1 c:\logs\zheltie_poisk_2\niz.txt
// пример 7 - посчитаем количество точек заданного цвета из перечисленных в скрипте
// set linedelay 1 // раскомментировать эту строку, если нужно чтобы скрипт работал быстро
init_arr %a(1 2) 39 24, 16 14, 25 30, 23 48, 45 89, 34 33, 12 32 // перечисляем после скобок пары координат всех проверяемых точек
set #color 32768 // искомый цвет точки
set #sz size (%a) // определили число пар точек в массиве %a
set #n 0 // тут будем считать число точек нужного цвета
for #i 1 #sz // в цикле проверяем цвет всех точек
  if %a[#i 1] %a[#i 2] #color // проверяем цвет в #i-й точке
     set #n #n + 1 // если цвет совпал с заданным, то увеличиваем счетчик найденных точек
  end_if
               set #kt #kt + 1    
             set %zhe1[#kt 1] %a[#i 1] %a[#i 2]
             save_array %zhe1 c:\logs\zheltie_poisk_2\niz.txt
end_for
msg Найдено #n точек с цветом #color
pause_script
goto a


Вот скрипт с Вики, я только добавил запись в файл. Пишу в файл что нибудь, делаю старт пилота, после завершения цикла, делаю стоп пилот. И в файле моя запись удалится, а запишется только то, что будет в массиве. Теперь из массива удаляю половину координат и делаю старт и после завершения цикла стоп. В файле будут только оставшиеся в массиве координаты. Теперь делаю старт, цикл завершился пилот стал на паузу, я удаляю половину координат из массива, и снимаю с паузы, а вот теперь в файле будет записаны все старые координаты, только начиная с первой строки поменяются на те которые вы оставите. Почему перестает работать перезапись файла.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
veiron
сообщение 9.8.2013, 10:24
Сообщение #77


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 0
Из: Белоруссии
Пользователь №: 14.972



Вроде разобрался. Теперь не путает строчки.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
veiron
сообщение 9.8.2013, 11:21
Сообщение #78


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 0
Из: Белоруссии
Пользователь №: 14.972



(IMG:http://s55.radikal.ru/i149/1308/e5/2a551e95d2ee.jpg)

Хотел перетянут мышкой пилот вниз и весь скрипт заменился на эти иероглифы. Как теперь скрипт вернуть обратно в нормальный вид ?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
WKnight
сообщение 9.8.2013, 11:52
Сообщение #79


********

Разработчик UO Pilot'а
Сообщений: 1.639
Регистрация: 9.1.2006
Группа: Пользователи
Наличность: 0
Пользователь №: 4.688



Цитата
Хотел перетянут мышкой пилот вниз и весь скрипт заменился на эти иероглифы. Как теперь скрипт вернуть обратно в нормальный вид

Что-то перетащил в пилот, он это загрузил.
Вообще отмена последних изменений в скрипте, также как и везде Ctrl+Z. Но вероятно теперь уже поздно. Если ничего подозрительного не делал, то найти файл скрипта и скопировать куданить, или в пилоте открыть.
Цитата
Нужно с 4 сторон. Вообще искать надо с 4 сторон, но если начинаю искать с 4 у
Я так понимаю что точки ищутся на фиксированном растоянии от исходной. А если сделать финдимидж с узенькой картинкой, в которой на прозрачном фоне помечены нужные точки?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
veiron
сообщение 9.8.2013, 12:34
Сообщение #80


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 0
Из: Белоруссии
Пользователь №: 14.972



Цитата(WKnight @ 9.8.2013, 11:52) *

Что-то перетащил в пилот, он это загрузил. Вообще отмена последних изменений в скрипте, также как и везде Ctrl+Z. Но вероятно теперь уже поздно.

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

Да на фиксированном. Что я только не пробовал за пол года. Найти я нахожу и финимеджем и фколором, у меня получается найти и собрать три шара в одну линию, что бы произошел ход. Сделал скрипт на одних ифах, так пока мой скрипт проверял, у меня уже ход закончился, я до конца и найти все цвета не успел.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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