Page 1 of 1
Различие сообщений в журнале.
Posted: 2006-05-21 12:47:33
by alconst
Как заставить инжу отличать сообщения сервера от речи игроков?
Я имею ввиду сообщения типа "There is no ore..." или "You are frozen..." и т.п.
P.S.
на пример, скрипте:
Code: Select all
if uo.injournal("There is no ore") then
uo.exec.......
так вот, это сработает даже если какой-нить чар напишет эту строку. Как сделать, чтобы обрабатывались только сообщения, посланные сервером?
Re: Различие сообщений в журнале.
Posted: 2006-05-21 13:03:29
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.......
так вот, это сработает даже если какой-нить чар напишет эту строку. Как сделать, чтобы обрабатывались только сообщения, посланные сервером?
ИМХО Никак...

Re: Различие сообщений в журнале.
Posted: 2006-05-21 13:13:54
by alconst
Cooper wrote:ИМХО Никак...

Я где-то видел, что можно, но тогда не обратил внимания.. А сейчас не могу найти...
Может быть как-то по цвету различать, или еще что-то? Например, если это пишет чар, то в журнале перед текстом пишется ник
(типа Player: ...) Так вот н-пр не реагировать, если перед сообщением двоеточие стоит?
Я прост новичек в этом деле, поэтому и обращаюсь за помощью
Posted: 2006-05-21 13:44:29
by Edred
Только так и можно. Написать собственную функцию в скрипте по поиску строки в журнале, где дополнительной проверкой ввести проверку на многоточие в строке. В принципе, ничего сложного.
Posted: 2006-05-21 13:53:53
by alconst
Edred wrote:Только так и можно. Написать собственную функцию в скрипте по поиску строки в журнале, где дополнительной проверкой ввести проверку на многоточие в строке. В принципе, ничего сложного.
Спасибо, но не могли бы вы объяснить/показать это на примере?
Posted: 2006-05-21 14:30:31
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.
Posted: 2006-05-21 15:28:17
by 1a2a3a4a5a6a
Edred wrote:Поищи, тут на форуме кто-то где-то клал функцию поиска подстроки в строке. Кроме того такую функцию легко слепить на основе GetWord.
Тут.
Posted: 2006-05-21 17:03:53
by Destruction
Эмм, а journalserial отменили?
Сервер обычно с одного серийника рисует..
Posted: 2006-05-21 18:45:47
by Edred
Destruction wrote:Эмм, а journalserial отменили?
Сервер обычно с одного серийника рисует..
Гимор это. Нет гарантий никаких что сервер будет с одного серийника "рисовать" все время...
Posted: 2006-05-21 19:42:48
by Destruction
Edred wrote:Destruction wrote:Эмм, а journalserial отменили?
Сервер обычно с одного серийника рисует..
Гимор это. Нет гарантий никаких что сервер будет с одного серийника "рисовать" все время...
Ну хз, у меня с одного рисует, и гемора никакого..
if uo.journalserial(uo.injournal( "My Message" )) == ServerID then
...
endif
Как раз надо в первую очередь проверять такой вариант, а затем изобретать гимор. Еще можно графический тип получить, побаловаться.
Posted: 2006-05-21 20:25:26
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 (как о большинстве серверных сказано в хелпе), тож не пашет.