Page 1 of 1

Mining Pol 95 Client 2.0.0b

Posted: 29.12.2016 15:50
by Respik
Проблема заключается в том, что на некоторые слова из журнала он реагирует, а некоторые просто пропускает

Code: Select all

WaitJournalLine(Now, 'Select a place', 10000);
WaitTargetSelf; 
WaitJournalLine(Now, 'far away|You stop|your tool|no more ore|breaks|stop mining|cannot see|cannot mine|already doing', 30000);
end;
far away,cannot see,already doing
Выделенные и подчеркнутые это те на которые не реагирует.
Может будут идеи у кого-то ?

Re: Mining Pol 95 Client 2.0.0b

Posted: 01.01.2017 18:30
by GeeZeR
Если слово появилось в журнале до начала выполнения WaitJournalLine с аттрибутом "Now", то команда его не найдёт, потому что благодаря "Now" начнёт искать с момента начала своей работы, т.е. уже после появления слова. Она просто стопнет скрипт на те 10 или 30 секунд и если слово за это время не появится снова, то скрипт пойдёт дальше. Переделай алгоритм. Очищай журнал, совершай действие а затем юзай что-то типа:

Code: Select all

	if InJournal('test') > -1 then begin
	AddToSystemJournal('нашёл test');
	end;

Re: Mining Pol 95 Client 2.0.0b

Posted: 02.01.2017 9:32
by Vizit0r
GeeZeR wrote:Переделай алгоритм. Очищай журнал, совершай действие а затем юзай что-то типа:

Code: Select all

	if InJournal('test') > -1 then begin
	AddToSystemJournal('нашёл test');
	end;
Зачем тянуть инжект-стайл в стелс? Ну я понимаю, там кроме ClearJournal мало чего было, но тут...


Не проще ли сделать

WaitJournalLine(Now, 'Select a place', 10000);
тут делать то, что выдаст строку в журнал

либо использовать InJournalBetweenTimes ?

Re: Mining Pol 95 Client 2.0.0b

Posted: 02.01.2017 13:23
by GeeZeR
Vizit0r wrote: WaitJournalLine(Now, 'Select a place', 10000);
тут делать то, что выдаст строку в журнал
WaitJournalLine тут будет ждать 10 сек а потом только скрипт выполнит действие с которого будет месседж и не вловит этот месседж если всё происходит последовательно в одном потоке. Короче автор, алгоритм в студию! Гадать тут бессмысленно, надо смотреть где у тебя проскакивает месседж.

Re: Mining Pol 95 Client 2.0.0b

Posted: 02.01.2017 15:54
by drabadan
GeeZeR wrote:
Vizit0r wrote: WaitJournalLine(Now, 'Select a place', 10000);
тут делать то, что выдаст строку в журнал
WaitJournalLine тут будет ждать 10 сек а потом только скрипт выполнит действие с которого будет месседж и не вловит этот месседж если всё происходит последовательно в одном потоке. Короче автор, алгоритм в студию! Гадать тут бессмысленно, надо смотреть где у тебя проскакивает месседж.
чо чо? скрипт как увидит Select a place тут же завершит выполнение метода WaitJournalLine

Re: Mining Pol 95 Client 2.0.0b

Posted: 02.01.2017 16:14
by GeeZeR
ну если "Select a place" будет до или в течение работы WaitJournalLine, то увидит, но автор говорит, что не всегда ловит, значит "Select a place" порождается уже после завершения работы WaitJournalLine я так думаю. Надо скрипт смотреть.

Re: Mining Pol 95 Client 2.0.0b

Posted: 04.01.2017 18:36
by Respik

Code: Select all

procedure mining;
begin
If TargetPresent Then CancelTarget;
if (GetType(ObjAtLayer(RhandLayer)) <> PickType) then
   begin
   UseObject(FindType(PickType, Backpack));
   end;
if (GetType(ObjAtLayer(RhandLayer)) = PickType) then
   begin
   UseObject(ObjAtLayer(RhandLayer));
   end;
WaitJournalLine(Now, 'Select a place', 10000);
WaitTargetSelf; 
WaitJournalLine(Now, 'is attacking|You stop|your tool|no more ore|breaks|stop mining|see that|That is too far away|cannot mine|', 30000);
end;
Вот вся процедура и суть в том, что он частично отрабатывает данную строчку

Code: Select all

WaitJournalLine(Now, 'is attacking|You stop|your tool|no more ore|breaks|stop mining|see that|far away|cannot mine|', 30000);
на что-то реагирует на что-то нет.
Суть в том, что когда он находит слова see that , far away он должен переключится на следующую точку так же как и при любых других словах, а не тратить 30 секунд на то чтобы ждать.

Re: Mining Pol 95 Client 2.0.0b

Posted: 04.01.2017 19:51
by GeeZeR
Значит слова see that , far away приходят уже после того как WaitJournalLine начала работу, прождала 30 сек и завершилась. Или они вообще не приходят. Она не может не ловить.
ВОт так ловит:

Code: Select all

UOSay('see that');
WaitJournalLine(Now, 'is attacking|You stop|your tool|no more ore|breaks|stop mining|see that|That is too far away|cannot mine|', 30000);
А так не ловит:

Code: Select all

WaitJournalLine(Now, 'is attacking|You stop|your tool|no more ore|breaks|stop mining|see that|That is too far away|cannot mine|', 30000);
UOSay('see that');

Re: Mining Pol 95 Client 2.0.0b

Posted: 04.01.2017 20:27
by drabadan
GeeZeR wrote:Значит слова see that , far away приходят уже после того как WaitJournalLine начала работу, прождала 30 сек и завершилась. Или они вообще не приходят. Она не может не ловить.
ВОт так ловит:

Code: Select all

UOSay('see that');
WaitJournalLine(Now, 'is attacking|You stop|your tool|no more ore|breaks|stop mining|see that|That is too far away|cannot mine|', 30000);
А так не ловит:

Code: Select all

WaitJournalLine(Now, 'is attacking|You stop|your tool|no more ore|breaks|stop mining|see that|That is too far away|cannot mine|', 30000);
UOSay('see that');

Code: Select all

WaitJournalLineSystem

Re: Mining Pol 95 Client 2.0.0b

Posted: 04.01.2017 22:18
by GeeZeR
Блин я сам запутался и всех запутал, короче

Code: Select all

function WaitJournalLine(StartTime : TDateTime; Str : String; MaxWaitTimeMS : Integer) : Boolean
WaitJournalLine(Now, 'is attacking|You stop|your tool|no more ore|breaks|stop mining|see that|That is too far away|cannot mine|', 30000);
будет ловить только если фраза появилась в промежутке между StartTime (по журналу) и следующими 30 секундами (тоже по журналу). Ни до StartTime ни после StartTime+30 сек (по журналу) она уже ничё не вловит.
Можно использовать и WaitJournalLineSystem и WaitJournalLine, WaitJournalLineSystem удобна тем что следит только за системными сообщениями в журнале типа:

Code: Select all

[18:47:24:314] System: System You can't dig while riding or flying.
Короче Respik, твои фразы возникают до момента StartTime : TDateTime или не возникают вообще. Добавь переменную для даты, засеки время перед действием, соверши действие и лови фразу:

Code: Select all

procedure mining;

var
Start : TDateTime;

begin
If TargetPresent Then CancelTarget;
if (GetType(ObjAtLayer(RhandLayer)) <> PickType) then
   begin
   UseObject(FindType(PickType, Backpack));
   end;
if (GetType(ObjAtLayer(RhandLayer)) = PickType) then
   begin
   UseObject(ObjAtLayer(RhandLayer));
   end;
WaitJournalLine(Now, 'Select a place', 10000);

Start := Now; // допустим это 19:14:30 по журналу

WaitTargetSelf;

// будет просматривать все мессаги с 19:14:30 до 19:15:00 по журналу, а если найдёт раньше 19:15:00, то закончит свою работу раньше.
WaitJournalLine(Start, 'is attacking|You stop|your tool|no more ore|breaks|stop mining|see that|That is too far away|cannot mine', 30000);
end;

Re: Mining Pol 95 Client 2.0.0b

Posted: 05.01.2017 10:51
by Respik
Хорошо спасибо попробую что из этого выйдет

Re: Mining Pol 95 Client 2.0.0b

Posted: 08.01.2017 19:38
by Respik

Code: Select all

[17:05:21:897] System: Select a place to mine.
[17:05:21:997] System: You cannot see that
[17:05:53:314] System: Select a place to mine.
[17:05:53:383] System: That is too far away
[17:06:25:530] System: Select a place to mine.
[17:06:25:627] System: That is too far away
[17:06:56:845] System: Select a place to mine.
[17:06:56:974] System: That is too far away
[17:06:59:320] System: Select a place to mine.
[17:06:59:412] System: That is too far away
[17:07:01:341] System: Select a place to mine.
[17:07:01:444] System: That is too far away
[17:07:03:315] System: Select a place to mine.
[17:07:03:407] System: That is too far away
Не помогает всеравно ждет, но если всмотреться раз на раз, иногда срабатывает нормально иногда нет

Re: Mining Pol 95 Client 2.0.0b

Posted: 13.01.2017 22:43
by GeeZeR
засекай (Start := Now;) перед использованием кирки (т.е. перед конструкцией с if)

Re: Mining Pol 95 Client 2.0.0b

Posted: 10.03.2017 8:09
by Respik
GeeZeR wrote:засекай (Start := Now;) перед использованием кирки (т.е. перед конструкцией с if)
Спасибо, это помогло. Теперь прямо летает по шахте )))

Re: Mining Pol 95 Client 2.0.0b

Posted: 12.03.2017 14:54
by GeeZeR
обращайся )