PDA

Просмотр полной версии : Скрипт на определение ГМ'а в игре


lliapk
15.11.2013, 18:20
Здравствуйте!!
Подскажите пожалуйста как реализовать такой скрипт: Нужно периодически (1 раз в 30 сек.) проверять есть ли ГМ в игре на сервере ИЛ. Если ГМ окажется в игре делать релог или эксит с игры.
На сервере где я играю онлайн маленький и админ может легко прилететь ко мне и спалить что я играю ботом. Но он в игру редко заходит. По этому данный скрипт был бы весьма актуален для меня.

Вот что я узнал:
Для проверки ГМ'а в игре нужно послать пакет "81"
Тип: 0x81 (RequestGMList).

В ответ от сервера приходит пакет "64 BE 02 00 00 00 00 00 00".
Тип: 0x64 (SystemMessage)
0002 d MsgID: Сейчас нет Игрового мастера. ID:702 (0x02BE)
0006 d typesCount: 0 (0x00000000)

Я так понимаю нужно теперь узнать пакет когда админ онлайн и пакет на релог, и слепить все это дело в скрипт :)

Ребята помогите это сделать. Или может у кого есть похожий скрипт по проверке ГМ'ов в игре?

Добавлено через 34 минуты
Подскажите кто вкурсе какой должен быть пакет от сервера, про то что ГМ в игре.

Когда отсылаю на сервер пакет 81, приходит вот такой пакет:
"64 BE 02 00 00 00 00 00 00".
Тип: 0x64 (SystemMessage)
0002 d MsgID: Сейчас нет Игрового мастера. ID:702 (0x02BE)
0006 d typesCount: 0 (0x00000000)

Нужно узнать эти данные только когда ГМ онлайн???

Сервер - Интерлюдия.

slavez
15.11.2013, 20:25
Узнай какой пакет приходит когда он онлайн.
Ну в моем понимании скрипт у тебя должен получиться что-то из темы:
Проверка по времени
- отправка пакета что бы узнать если гм
- если от сервера приходит пакет что гм онлайн разрыв соединения.
На форуме куча тем по таймингу, моменты которые у меня вызвали сложность я выкладывал в теме про перебор: http://coderx.ru/showthread.php?t=11087
Там внизу подписаны две темы от куда я брал информацию.

SeregaZ
16.11.2013, 07:34
полагаю можно в файле системных сообщений найти. ID:702 это что его нет онлайн, полагаю в том же районе 701-703 лежат и прочие варианты статуса гм живности.

и вот еще - что-то это как-то слишком просто. думаю должен быть некий способ невидимости для гма, который бы не палился этой фишкой.

Breadfan
16.11.2013, 17:26
Так команда /gmlist показывает лишь тех, кто онлайн+не в инвизе. Если гм в инвизе будет бегать рядом - клиент никаким образом этого не увидит.

lliapk
18.11.2013, 11:12
Попробую запустить свой сервер и посмотреть пакеты через л2пх, когда гм онлайн. Чтоб точно знать - возможно ли будет реализовать такой скрипт )

Добавлено через 2 минуты
полагаю можно в файле системных сообщений найти. ID:702 это что его нет онлайн, полагаю в том же районе 701-703 лежат и прочие варианты статуса гм живности.

Таки да, 703 - отвечает за строку: -----GM List------
а 704 - показывает ники ГМ'ов: GM: xxxxxx

Yegor
18.11.2013, 14:06
Команду gmlist отключают на серверах. Точнее она обычно всегда возвращает - что гмов нет в игре.

lliapk
20.11.2013, 13:08
Значит так. Поставил я свой сервак интерлюдии. Немного потестил и все стало понятно. Таки да, Yegor и другие были правы: Если на сервере в конфиге поставить:
GMStartupAutoList = True, то при прописи /gmlist пишет ники Гм которые в игре. Если "False" то будет писать в любом случае что ГМ'ов нет!!
По этому реализовать такой скрипт не получится(
Остается одна надежда на то, что эта опция на том сервере где я играю, стоит "True". Ибо по-умолчанию она включена) Если админ ее не отключил то можно будет замутить этот скрипт себе)

SeregaZ
20.11.2013, 14:08
а ты бомби в личные сообщения гму: привет.
если сообщение прошло, то логаут, значит гм онлайн.
если гм выключил личные сообщения, то покажет что он отключил, а значит он онлайн, значит логаут.
если данного персонажа не обнаружено - значит он не в сети, и можно играть :)

lliapk
20.11.2013, 14:36
а ты бомби в личные сообщения гму: привет.
если сообщение прошло, то логаут, значит гм онлайн.
если гм выключил личные сообщения, то покажет что он отключил, а значит он онлайн, значит логаут.
если данного персонажа не обнаружено - значит он не в сети, и можно играть :)

Если это действительно так то по такому принципу можно замутить бота:

Делать проверку каждые 1 минуту, о том есть ли гм онлайн -> отправляю "приват.месседж" с текстом "привет ты тут?"). Как только меседж будет доставлен либо придет сообщение что он отключил приватные сообщения - сразу офф с игры.) Админ редко заходит - может по пару дней не заходить в игру.