Yoko
http://forum.yoko.com.ua/

Различие сообщений в журнале.
http://forum.yoko.com.ua/viewtopic.php?f=20&t=7733
Page 1 of 1

Author:  alconst [ 2006-05-21 12:47:33 ]
Post subject:  Различие сообщений в журнале.

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

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

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

Author:  Kynep [ 2006-05-21 13:03:29 ]
Post subject:  Re: Различие сообщений в журнале.

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

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

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


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

Author:  alconst [ 2006-05-21 13:13:54 ]
Post subject:  Re: Различие сообщений в журнале.

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

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

Я прост новичек в этом деле, поэтому и обращаюсь за помощью

Author:  Edred [ 2006-05-21 13:44:29 ]
Post subject: 

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

Author:  alconst [ 2006-05-21 13:53:53 ]
Post subject: 

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

Спасибо, но не могли бы вы объяснить/показать это на примере?

Author:  Edred [ 2006-05-21 14:30:31 ]
Post subject: 

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

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


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

Code:
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.

Author:  1a2a3a4a5a6a [ 2006-05-21 15:28:17 ]
Post subject: 

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

Тут.

Author:  Destruction [ 2006-05-21 17:03:53 ]
Post subject: 

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

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

Author:  Edred [ 2006-05-21 18:45:47 ]
Post subject: 

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

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


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

Author:  Destruction [ 2006-05-21 19:42:48 ]
Post subject: 

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

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


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

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

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

Как раз надо в первую очередь проверять такой вариант, а затем изобретать гимор. Еще можно графический тип получить, побаловаться.

Author:  alconst [ 2006-05-21 20:25:26 ]
Post subject: 

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

А где взять ServerID?

пробвал
Code:
UO.Print(UO.JournalSerial(uo.InJournal("сообщение...")))
UO.Print(UO.JournalSerial( uo.InJournal() ) )
UO.Print(UO.JournalSerial(uo.InJournal(-1)))

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

Page 1 of 1 All times are UTC+02:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/