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

3 страниц V  1 2 3 >  
Ответить в эту темуОткрыть новую тему
> Ошибка get scripts
nykep
сообщение 4.3.2019, 2:42
Сообщение #1


****

Apprentice
Сообщений: 233
Регистрация: 1.9.2012
Группа: Пользователи
Наличность: 1200
Пользователь №: 15.246
Возраст: 25



от чего может выдавать такую ошибку?
1:44:31 0 (newbot00.txt, 41): get - (41): Ошибка! Проверьте правильность скрипта! EStringListError List index out of bounds (0)
get scripts %a

за несколько часов работы лишь один раз выдал такую ошибку при первом запуске скриптов после внесенных изменений, и я не уловил в какой момент и при выполнении каких действий и не могу понять что это значит. Всего 5 скриптов, 00 02 03 04 работают постоянно, 00 в котором эта ошибка периодически останавливается и запускается заново скриптом 02.
Код
get scripts %a
if %a[3 3] = runing and #loot.2 = 1
    set #fogx1 #f0x1.2
    set #fogy1 #f0y1.2
    set #fogx2 #f0x2.2
    set #fogy2 #f0y2.2
end_if

Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 4.3.2019, 7:49
Сообщение #2


***********

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



Цитата
if %a[3 3] = runing and #loot.2 = 1

Попробуйте разбить на два условия. Возможно даже при выключенном скрипте идет попытка просчитать второй кусок условия.


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


****

Apprentice
Сообщений: 233
Регистрация: 1.9.2012
Группа: Пользователи
Наличность: 1200
Пользователь №: 15.246
Возраст: 25



Цитата(DarkMaster @ 4.3.2019, 7:49) *

Попробуйте разбить на два условия. Возможно даже при выключенном скрипте идет попытка просчитать второй кусок условия.

однако до того как я узнал о команде get scripts, я использовал условия вроде #loot.2 = 1 чтоб понять работает соответствующий или нет (IMG:style_emoticons/default/smile.gif), чтож все равно попробую разбить потому что ошибка все таки появляется, но очень редко. вообще странно что указывает на get scripts %a, какие в нем могут быть ошибки...
PS именно к этому условию обращается очень часто - каждые несколько секунд и выполняется оно около 10 раз за минуту, а ошибка появляется редко
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 4.3.2019, 12:49
Сообщение #4


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Цитата
Всего 5 скриптов, 00 02 03 04 работают постоянно

Это не очень хорошо. Скрипты работают параллельно, независимо друг от друга, что угодно может случаться. Винда хоть и многозадачна, но это только видимость, запросто может притупить. По логике идёт обращение к ТОМУ, чего ещё НЕТ. Если есть возможность, лучше уменьшить количество параллельных процессов, особенно если мощность компа не является выдающейся.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
xolost
сообщение 4.3.2019, 12:53
Сообщение #5


******

Expert
Сообщений: 517
Регистрация: 17.6.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 15.035



Цитата(sutra @ 4.3.2019, 12:49) *

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

Не уверен что они работают параллельно.
Лет 8 назад тестил, перебирал ~300 картинок в одном скрипте, потом разбил их на 2 скрипта по 150 соответственно. Результат был ровно таким же по времени. Глубину процессов не знаю, так что ничего не утверждаю, кроме данного теста.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 4.3.2019, 13:01
Сообщение #6


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



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

Цитата
перебирал ~300 картинок в одном скрипте, потом разбил их на 2 скрипта по 150 соответственно
Утверждать не стану, но я пробовал разбивать на параллельные процесы. И не получил ощутимого прироста в скорости. Переходите на lua - не пожалеете. Найдёт ваши 300 картинок, моргнуть не успеете. Ну или если лень всё переделывать, сделайте на lua отдельный скрипт поиска картинок, результат пишите в файл, потом в основном скрипте читайте этот файл. Увидите, даже такой вариант будет минимум в 10 раз быстрее. Я сначала так и сделал, всё делалось за 1 сотую секунды.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
xolost
сообщение 4.3.2019, 13:01
Сообщение #7


******

Expert
Сообщений: 517
Регистрация: 17.6.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 15.035



Цитата(sutra @ 4.3.2019, 12:56) *

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

Ну по-скольку тот тест с картинками мне не дал результата быстродействия, я отказался на совсем от разноса по скриптам и делал всё через gosub. Т.е. имею главный цикл, в нем выполняю периодически gosub на поиск различных событий, выполнение операций и т.д.
Т.е. мои скрипты иногда доходили аж до 10000 строчек.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 4.3.2019, 13:09
Сообщение #8


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Цитата
Ну по-скольку тот тест с картинками мне не дал результата быстродействия, я отказался на совсем от разноса по скриптам и делал всё через gosub

Вот-вот, я про это и говорю. У меня аналогичный был результат. Переходите на lua. Помогут освоить, вот и начните с маленького скрипта поиска картинок. При правильном подходе и не гигантской зоне поиска всё будет делаться мгновенно. Вот лично у меня более 1000 картинок ищется ну скажем 1 тысячная секунды.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
xolost
сообщение 4.3.2019, 13:09
Сообщение #9


******

Expert
Сообщений: 517
Регистрация: 17.6.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 15.035



Цитата(sutra @ 4.3.2019, 13:01) *

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

Утверждать не стану, но я пробовал разбивать на параллельные процесы. И не получил ощутимого прироста в скорости. Переходите на lua - не пожалеете. Найдёт ваши 300 картинок, моргнуть не успеете. Ну или если лень всё переделывать, сделайте на lua отдельный скрипт поиска картинок, результат пишите в файл, потом в основном скрипте читайте этот файл. Увидите, даже такой вариант будет минимум в 10 раз быстрее. Я сначала так и сделал, всё делалось за 1 сотую секунды.

Вот и я говорю, что я не ощущал прироста производительности от слова совсем.
Ну конечно на луа быстрее будет всё.
Однако, со временем и компы стали мощнее и если говорить о картинках, то если их делать оч маленькими + маленькую зону для поиска, всё выполняет достаточно быстро. С этим проблем не возникало.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 4.3.2019, 13:19
Сообщение #10


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Цитата
Однако, со временем и компы стали мощнее и если говорить о картинках, то если их делать оч маленькими + маленькую зону для поиска, всё выполняет достаточно быстро. С этим проблем не возникало.

Ну вот, великолепное понимание ситуации. 10000 строк без мозгов тоже бы не появились - переходите - не пожалеете. Не так всё и сложно. Я сам без году неделя пользуюсь lua и не жалею потраченных 3-х месяцев. Сейчас и справка хорошая есть ... удачи!
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
xolost
сообщение 4.3.2019, 13:26
Сообщение #11


******

Expert
Сообщений: 517
Регистрация: 17.6.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 15.035



Цитата(sutra @ 4.3.2019, 13:19) *

Ну вот, великолепное понимание ситуации. 10000 строк без мозгов тоже бы не появились - переходите - не пожалеете. Не так всё и сложно. Я сам без году неделя пользуюсь lua и не жалею потраченных 3-х месяцев. Сейчас и справка хорошая есть ... удачи!

Спасибо за советы!
Хотя на самом деле на луа я тоже кодил в своё время, но уже подзабыл синтаксис. Мне он не понравился, если честно. Но для пилоты выбора особого нету. Так что в своё время вернусь и к нему)
Успехов и вам!
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 4.3.2019, 13:31
Сообщение #12


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Цитата
Не уверен что они работают параллельно.
Только сейчас врубился. Работают они скажем не параллельно, а вместе. Потоками занимается Винда. Если будет работать 2 Пилота - будет быстрее, но тогда только обмен файлами. Короче, есть lua, проблем со скоростью там нет, за редкими исключениями, когда объём действий действительно гигантский.


Цитата
Мне он не понравился, если честно
Да я сам терпеть ненавижу и не только lua. Лень напрягать и без того тугие мозги, изучая что-то новое, но как Вы правильно заметили - альтернативы нет.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
nykep
сообщение 4.3.2019, 15:25
Сообщение #13


****

Apprentice
Сообщений: 233
Регистрация: 1.9.2012
Группа: Пользователи
Наличность: 1200
Пользователь №: 15.246
Возраст: 25



Цитата(sutra @ 4.3.2019, 12:49) *

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


нулевой скрипт ищет цвета - там 3 последовательных findcolor, один IF на проверку цвета и один IF с get scripts. В все действия выполняются внутри этих ифов, пока они выполняются скрипты 02 03 только ищут цвета и если одному из скриптов требуется выполнить действия то он отключает остальные скрипты, кроме 04, в нем только несколько get scripts с ифами. Вообщем параллельно 3 скрипта только проверяют цвета.
Ошибка эта 3 часа не появлялась, жду пока что если опять появится буду переделывать.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
nykep
сообщение 4.3.2019, 15:47
Сообщение #14


****

Apprentice
Сообщений: 233
Регистрация: 1.9.2012
Группа: Пользователи
Наличность: 1200
Пользователь №: 15.246
Возраст: 25



У меня еще вопрос - как мне timer выразить в минутах и секундах? в минутах понятно я делю на 60000, но он сразу отбрасывает дробную часть. Пытался frac(#x) * 60 все равно получается ноль. Или есть способ проще?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
nykep
сообщение 4.3.2019, 18:07
Сообщение #15


****

Apprentice
Сообщений: 233
Регистрация: 1.9.2012
Группа: Пользователи
Наличность: 1200
Пользователь №: 15.246
Возраст: 25



воспользуюсь вычитанием (IMG:style_emoticons/default/smile.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 5.3.2019, 1:19
Сообщение #16


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Цитата
Пытался frac(#x) * 60 все равно получается ноль.

Используйте mod и div
Код
set #Vremya ((hour + 3) * 3600 + min * 60 + sec) * 40                // вычисление текущего времени в игре (течёт в 40 раз быстрее обычного + смещение 3 часа на Гринвинчский меридиан)
set #Vremya mod(#Vremya 86400)                                       // остаток от деления на 24 часа (для определения времени суток в игре)
//...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 5.3.2019, 1:50
Сообщение #17


**********

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



Цитата
как мне timer выразить в минутах и секундах?

Код
while 1 = 1
    hint (20 clPurple 500 500 -1 -1 (timestamp (timer)))
    wait 1
end_while
end_script

Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 5.3.2019, 1:50
Сообщение #18


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Цитата
Пытался frac(#x) * 60 все равно получается ноль.

Просто Пилот оперирует целыми числами и единственной нормальной интерпретацией являются операторы div и mod. Остальные операторы работают (насколько я своим куриным мозгом понял) с константами, видимо интерпретируя параметры как строки. Ещё один повод ПЕРЕЙТИ на lua.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 5.3.2019, 2:02
Сообщение #19


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Цитата
while 1 = 1 hint (20 clPurple 500 500 -1 -1 (timestamp (timer))) wait 1end_while
Вообще-то вопрос был ВЫРАЗИТЬ, а не показать.


Хотя я люблю смотреть как тикают часики, почти также, как на огонь, воду и как другие работают.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
nykep
сообщение 5.3.2019, 2:17
Сообщение #20


****

Apprentice
Сообщений: 233
Регистрация: 1.9.2012
Группа: Пользователи
Наличность: 1200
Пользователь №: 15.246
Возраст: 25



а я сделал так (IMG:style_emoticons/default/smile.gif)
Код
set #secs (timer1 / 1000)
    while #secs >= 0
        set #secs #secs - 60
        if #secs >= 0
        set #mins #mins + 1
        end_if
    end_while
    if #secs < 0
        set #secs #secs + 60
    end_if
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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