Различие сообщений в журнале.

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
alconst
Posts: 4
Joined: 2006-05-17 10:16:25

Различие сообщений в журнале.

Post by alconst »

Как заставить инжу отличать сообщения сервера от речи игроков?

Я имею ввиду сообщения типа "There is no ore..." или "You are frozen..." и т.п.

P.S.
на пример, скрипте:

Code: Select all

if uo.injournal("There is no ore") then 
uo.exec.......
так вот, это сработает даже если какой-нить чар напишет эту строку. Как сделать, чтобы обрабатывались только сообщения, посланные сервером?
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Re: Различие сообщений в журнале.

Post by Kynep »

alconst wrote:Как заставить инжу отличать сообщения сервера от речи игроков?

Я имею ввиду сообщения типа "There is no ore..." или "You are frozen..." и т.п.

P.S.
на пример, скрипте:

Code: Select all

if uo.injournal("There is no ore") then 
uo.exec.......
так вот, это сработает даже если какой-нить чар напишет эту строку. Как сделать, чтобы обрабатывались только сообщения, посланные сервером?


ИМХО Никак... :roll:
alconst
Posts: 4
Joined: 2006-05-17 10:16:25

Re: Различие сообщений в журнале.

Post by alconst »

Cooper wrote:ИМХО Никак... :roll:

Я где-то видел, что можно, но тогда не обратил внимания.. А сейчас не могу найти...
Может быть как-то по цвету различать, или еще что-то? Например, если это пишет чар, то в журнале перед текстом пишется ник (типа Player: ...) Так вот н-пр не реагировать, если перед сообщением двоеточие стоит?

Я прост новичек в этом деле, поэтому и обращаюсь за помощью
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Только так и можно. Написать собственную функцию в скрипте по поиску строки в журнале, где дополнительной проверкой ввести проверку на многоточие в строке. В принципе, ничего сложного.
Ни один скрипт не работает? Пора обновить Инжект...
Все работает, но хочется большего? Пора переходить на стелс...
alconst
Posts: 4
Joined: 2006-05-17 10:16:25

Post by alconst »

Edred wrote:Только так и можно. Написать собственную функцию в скрипте по поиску строки в журнале, где дополнительной проверкой ввести проверку на многоточие в строке. В принципе, ничего сложного.

Спасибо, но не могли бы вы объяснить/показать это на примере?
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Что именно? Делай в скрипте так:

Code: Select all

if MyInJournal("There is no ore") then 
uo.exec.......


А дальше в файл добавь функции:

Code: Select all

Sub MyInJournal( mes )
   VAR nom, st
   nom = uo.InJournal( mes )
   If mes > 0 Then
      ; найдена строка в журнале
      st = UO.Journal( nom - 1 )
      ; тут уже проверяем, есть ли в строке двоеточие.
      If CheckColon( st )  == 1 Then
         return 0
      else
         return 1
      endif
   endif
   return 0
endsub

Sub CheckColon( st )
   ; Функция ищет в переданной строке двоеточие и возвращает 1 если найдено, 0 если нет.
.........
endsub


ЗЫ: естественно, не забудь написать последнюю функцию. Поищи, тут на форуме кто-то где-то клал функцию поиска подстроки в строке. Кроме того такую функцию легко слепить на основе GetWord.
Ни один скрипт не работает? Пора обновить Инжект...
Все работает, но хочется большего? Пора переходить на стелс...
1a2a3a4a5a6a
Posts: 173
Joined: 2006-02-10 13:26:37

Post by 1a2a3a4a5a6a »

Edred wrote:Поищи, тут на форуме кто-то где-то клал функцию поиска подстроки в строке. Кроме того такую функцию легко слепить на основе GetWord.

Тут.
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Эмм, а journalserial отменили?

Сервер обычно с одного серийника рисует..
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Destruction wrote:Эмм, а journalserial отменили?

Сервер обычно с одного серийника рисует..


Гимор это. Нет гарантий никаких что сервер будет с одного серийника "рисовать" все время...
Ни один скрипт не работает? Пора обновить Инжект...
Все работает, но хочется большего? Пора переходить на стелс...
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Edred wrote:
Destruction wrote:Эмм, а journalserial отменили?

Сервер обычно с одного серийника рисует..


Гимор это. Нет гарантий никаких что сервер будет с одного серийника "рисовать" все время...

Ну хз, у меня с одного рисует, и гемора никакого..

if uo.journalserial(uo.injournal( "My Message" )) == ServerID then
...
endif

Как раз надо в первую очередь проверять такой вариант, а затем изобретать гимор. Еще можно графический тип получить, побаловаться.
alconst
Posts: 4
Joined: 2006-05-17 10:16:25

Post by alconst »

Destruction wrote:if uo.journalserial(uo.injournal( "My Message" )) == ServerID then
...
endif

А где взять ServerID?

пробвал

Code: Select all

UO.Print(UO.JournalSerial(uo.InJournal("сообщение...")))
UO.Print(UO.JournalSerial( uo.InJournal() ) )
UO.Print(UO.JournalSerial(uo.InJournal(-1)))

Всегда выдает 0x00000000, но с ним не пашет.
Еще пробвал 0x01010101 (как о большинстве серверных сказано в хелпе), тож не пашет.
Post Reply