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

2 страниц V  1 2 >  
Ответить в эту темуОткрыть новую тему
> Как Поймать Lastmsg...
Forum User
сообщение 19.12.2010, 10:08
Сообщение #1


**

Neophyte
Сообщений: 20
Регистрация: 19.12.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 13.298
Возраст: 25



Скрипт ловит ластмсг

while_not lastmsg you see:
end_while
set $msg lastmsg

И вот когда появилось ластмсг You see он должен сохранить это ластмсг за меткой $msg. В принципе он с задачей справляется, но бывает что это следующее собщение от сферы появляется очень быстро и пилот не успевает сохранить по метке $msg сообщение you see а сохраняет уже следующее появившееся сообщение. И это все при задержке между строк 1. Было бы не плохо конечно в пилоте острочку выдачи поступающих ластмсг делать но такой функции к сожалению для меня нет. Кто подскажет как мне точно словить ластмсг?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 19.12.2010, 11:33
Сообщение #2


***********

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



поставить задержку между строк 0? Чтобы камень не вешало можно в конце цикла написать wait 1.


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


**

Neophyte
Сообщений: 20
Регистрация: 19.12.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 13.298
Возраст: 25



Сделал так:

set linedelay 0
while_not lastmsg you see:
end_while
set $msg lastmsg
set linedelay 10

Попробую, может и прокатит с 0 задержки...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Forum User
сообщение 19.12.2010, 12:31
Сообщение #4


**

Neophyte
Сообщений: 20
Регистрация: 19.12.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 13.298
Возраст: 25



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


***********

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



set linedelay 10
от ета зачем?
если скрипт здоровый, то можешь вынести в отдельную вкладку ловлю последнего сообщения.


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


**

Neophyte
Сообщений: 20
Регистрация: 19.12.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 13.298
Возраст: 25



Цитата
set linedelay 10


Проблема в этом? Может функция записи просто медленно пишет как то или всетаки это слишком быстро меняются сообщения сервера...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 20.12.2010, 6:13
Сообщение #7


***********

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



Это весь скрипт или маленький кусок? Если это кусок, то проблема в том, что пока дальнейший код выполняется ты пропускаешь пришедшее сообщение. В любом случае задержку между строк в 10 миллисекунд надо убрать.


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


**

Neophyte
Сообщений: 20
Регистрация: 19.12.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 13.298
Возраст: 25



Цитата
Если это кусок, то проблема в том, что пока дальнейший код выполняется ты пропускаешь пришедшее сообщение.

Так пока нет сообщения you see
то он бегает по циклу
while_not lastmsg you see:
end_while
И когда сообщение появилось он должен его запомнить и дальше бежать выполнять следующее условие. Как он может его пропустить из за "пока дальнейший код выполняется ты пропускаешь пришедшее сообщение" если пока нет нужного сообщения он к нему не идет?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 20.12.2010, 7:03
Сообщение #9


***********

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



Легко и просто - например пришло с минимальным интервалом несколько искомых сообщений.
В моменты пропуска сообщений визуально видишь что они пришли по порядку, а не 2 сразу?


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


**

Neophyte
Сообщений: 20
Регистрация: 19.12.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 13.298
Возраст: 25



Так искомое сообщение одно, тоесть любое сообщение с текстом you see: которое будет поймано мне подходит, но именно его это пойманное сообщение мне нужно сохранить. И его то скрипт и ловит но вот сохранить за $msg не успевает, хотя команда для сохранения стоит сразу же. Как, по вашему, он может его пропустить если он его ЛОВИТ я так и не понял... Ну оно успевает сохранить его но часто бывают проскоки, и он вместо нужного сообщения сохраняет зачастую следующее которое пришло по очереди сразу после you see.
Ведь скрипт никуда не бежит пока нет искомого сообщения. А когда оно появилось он уже бежит дальше, а раз бежит дальше, то значит он среагировал на то искомое сообщение. Мне и нужно сохранить именно это сообщение, то которое он словил и из-за которого скрипт побежал дальше. Я уже и не знаю как вам обьяснить что бы было понятно о чем я говорю. А вы говорите о чем то другом.

while_not lastmsg you see: - ждем сообщение
end_while
set $msg lastmsg - раз дошли сюда, то сообщение словили, а значит записываем его. И вот тут то и проблема что часто записывает он не то что поймали а следующее сразу же пришедшее сообщение. К примеру поймали you see скрипт конечно среагировал и пошол дальше но вот в запись попало уже не you see a например put the lava ore именно следующее по очереди за поиманным сообщением (проверял по журналу все четко).
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 20.12.2010, 7:53
Сообщение #11


***********

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



можно увидеть бОльший кусок кода? что вы понимаете под сохранением? присвоение занчания переменной?


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


**

Neophyte
Сообщений: 20
Регистрация: 19.12.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 13.298
Возраст: 25



Цитата
что вы понимаете под сохранением? присвоение занчания переменной?


Да. А скрипт в личку кинул.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 20.12.2010, 9:12
Сообщение #13


***********

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



Попробуй вот это. Были непонятные ложные срабатывания при if_not точка/цвет. При простом if подобного замечено не было. Возможно продолжение этого таинственного бага.

:msg
set linedelay 0
:waiting
if lastmsg you see:
goto msgDetected
end_if
goto waiting
:msgDetected
set $msg lastmsg
goto start
end_if

Теоретически может просто не успевать. Чтобы увеличить шанс можно повысить приоритет скрипту:
set priority 3
Но во время перебора с задержкой 0 камень будет полностью загружен в размере одного ядра. Короче лагать может. Чтобы избежать лагов можно выставить wait 1 перед "goto waiting".

Могу предложить попробовать с помощью артмани найти адрес предпоследнего сообщения и проверять его тоже.

Так же есть очень небольшой шанс того, что сервер отсылает сообщения чата не по одному, а сразу несколько в одном пакете. При таком раскладе you see может не быть последнем. Напрмер пришел пакет "добавить сообщения: 1 you see, 2 lava" в итоге лава сразу окажется последней и "успеть" вырвать не получиться. Хотя повторюсь это мало веротяно.


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


**

Neophyte
Сообщений: 20
Регистрация: 19.12.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 13.298
Возраст: 25



Потестирую этот вариант...

Цитата
Могу предложить попробовать с помощью артмани найти адрес предпоследнего сообщения и проверять его тоже.


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


********

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



Цитата
Как, по вашему, он может его пропустить если он его ЛОВИТ я так и не понял...
может. ты же в следующей строке заново опрашиваешь последнее сообщение от сервера, а оно вполне может измениться за доли секунды, что собственно и делает.

вот такая конструкция поможет сохранить для анализа пойманное сообщение
set $msg lastmsg
while_not $msg <= you see:
set $msg lastmsg
end_while
Цитата
Как найти в артмани значение сообщения?
это неблагадарное занятие. сообщения это не хиты или мана, они постоянно ползают по памяти клиента.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Forum User
сообщение 21.12.2010, 13:37
Сообщение #16


**

Neophyte
Сообщений: 20
Регистрация: 19.12.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 13.298
Возраст: 25



Цитата
while_not $msg <= you see:


Эту строчку не понял зачем < перед = и пилот с этим пишет Проверьте праильность скрипта... Убрать?
И еще на строке while_not $msg = you see: пилот выдает Syntax error. (IMG:style_emoticons/default/sad.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
WKnight
сообщение 21.12.2010, 16:48
Сообщение #17


********

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



--v.2.18--
добавил нечеткое сравнение строк. регистронезависимо. поддерживаются операции <, >, =, <>, <= (S2 содержится в S1), >= (S1 содержится в S2)

сорри, на одном слове пробовал...
set $ys you see:
set $msg lastmsg
while_not $msg <= $ys
set $msg lastmsg
end_while
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Forum User
сообщение 21.12.2010, 16:48
Сообщение #18


**

Neophyte
Сообщений: 20
Регистрация: 19.12.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 13.298
Возраст: 25



А нельзя сделать например:

set $msg lastmsg
set $1 you see:
while_not $msg = $1
set $msg lastmsg
end_while

И чтобы тут при проверке $msg = $1 не шло сравнение буква в букву а было бы достаточно этой части (you see:) текста? Совсем никак?


А опередили, у меня стоит 2.15 щас поставлю 2.18...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
WKnight
сообщение 21.12.2010, 16:51
Сообщение #19


********

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



up
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Forum User
сообщение 21.12.2010, 16:57
Сообщение #20


**

Neophyte
Сообщений: 20
Регистрация: 19.12.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 13.298
Возраст: 25



Спасибо с 2.18 работает. Токо проц жрет похлеще (IMG:style_emoticons/default/smile.gif) на 2.15 при 0 задержки между строк ел примерно 40-50%
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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