[!] recvpackets.txt /для каждого сервака свой? [почти FAQ]

FAQ. Ответы на часто задаваемые вопросы.

Модератор: 4epT

Правила форума
Этот раздел является руководством и тут разрешено оставлять сообщения лишь для уточнения и внесения корректив в существующие материалы. Для вопросов существует ряд других разделов.
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Дополнения к первому потсу для тех, кто отстал от жизни.

Сабж как факт признан. Теперь файлов в "ресив-пакетсами" может быть много.

Например, в \tables текущей версии лежат файлы:

recvpackets-pro.txt
recvpackets-pro-valkyrie.txt
...
recvpackets-rro.txt
recvpackets-euro.txt

И, каждый из них можно подключить, причем без переименования. Вот так:

[Russia - rRO]
ip 81.177.13.7
port 6900
master_version 25
version 1004
serverType 0
serverEncoding Russian
pauseCharServer 1
patchserver web.raggame.ru
patchpath /patch02
recvpackets recvpackets-rro.txt

Добавлено спустя 20 минут 43 секунды:

Еще дополнение. Ну, я в этом вопросе рублю слабо, но попытаюсь объяснить, зачем recvpackets вообще нужен.

Он позволяет разделить влетающий клиенту от сервера поток данных на отдельные пакеты. Пример.

Предположим к нам прилетело вот такое сообщение:

81 00 73 87 01 05 17 33 45 12 B2 B8 35 47 ....

Заглядываем в табличку, я спецом взял пример из самого начала ее:

0187 6
0081 3
01C6 4
...


Начало нашего сообщения 81 00 (двухбайтный заголовок пакета РО). В табличке ему соответствует длина 3. Стало быть:

81 00 73 - первый пакет | и затем - 87 01 05 17 33 45 | C6 01 B8 35 47 .... - блок остальных пакетов, которые надо разгребать далее.
Как так получается, что пакеты "слипаются" в один блок, мне не понятно. Но авторитетные товарищи объяснили что это действительно имеет место быть.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
CineLAB*
Новичок
Сообщения: 3
Зарегистрирован: Пт фев 15, 2008 10:18 am

Сообщение CineLAB* »

сделал из .ехе этот файлик поставил его куда надо прописал в серверс чтобы он и его видел даже просто бывало заменял целиком
всеровно идут УНКНОВ ПАКЕТС
что делать ?
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Вот это еще почитай: viewtopic.php?t=4819 ("[!] После апдейта сервера неверно распознаются мобы и нпц?")
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Вычитал кое-что о "слипающихся" пакетах в статье "SCTP – у «вечного» TCP появился конкурент".

Если я правильно понимаю, "слипаются" у TCP только те байты, которые были получены почти одновременно.
Так что это выходит? - слипаются не все пакеты?
Т.е., теоретически, если мы получаем одиночные неизвестные пакеты, recvpackets может как-бы заполняться самим OpenKore? %)
(но разумеется, если длина неизвестных пакетов > 3 , то мы не можем точно сказать, это один пакет - или кучка из 2х пакетов).
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Аватара пользователя
Jerry
Профессионал
Сообщения: 1047
Зарегистрирован: Сб ноя 04, 2006 12:26 pm
Контактная информация:

Сообщение Jerry »

ээ чувак, если этот пакет неизвестный, откуда ты знаешь, один он там, или 2 или 3 ?:)
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

В свою очередь всё это значит, что если мы (на современной еА) получаем неизвестные двухбайтные (а точно ли 2х?) пакеты, то вероятно это нам засылают два пакета сразу, а мы считаем что длина второго пакета короче на два байта, чем на самом деле - и получаем "еще один неизвестный пакет".
И значит, наш recvpackets неверен (но черт дери, мы его проверяли!) или ... (ну я не знаю, ошибка в ОК?).

Добавлено спустя 2 минуты 50 секунд:
Jerry писал(а):ээ чувак, если этот пакет неизвестный, откуда ты знаешь, один он там, или 2 или 3 ?:)
Всё верно, обрати внимание на мое условие, "> 3". Минимальная длина пакета в RO 2 байта (есть исключения? вроде нет). Т.е., если пакеты "слиплись", получится минимум 4 байта.

Т.е., если прилетел неизвестный пакет, глядя на его длину мы можем сказать:
(длина => 4) --- "хер его знает сколько пакетов"
(длина = 1) --- "у нас где-то явная ошибка в recvpackets"
(длина 2..3) --- "вау, мы поймали новый пакет!" или "ошибка в recvpackets".
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse »

piroJOKE
В действительности, пакеты не слипаются на уровне самого протокола TCP. В действительности, пакеты могут слипаться только на уровне библиотеки формирования, приёма, отправки пакетов. ТЕ, обычно отправка происходит по тайм ауту, всего буфера (те. всё что стоит на отправку).
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Млять, вот это я плуг...

КМ же прямо сказал, что увеличена на два байта длина пакетов переменной длины,
а я сцуко торможу и ловлю ветра в поле. Ну ппц. %)

Добавлено спустя 3 минуты 26 секунд:

2All: Вы поняли, в чём прикол? При такого рода изменении sakexe сам файл recvpackets не изменяется,
потому что пакетам переменной длины как соответствовала цифра 0, так она нулем и осталась. Но! На самом деле длина этих пакетов изменилась!
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Sinistrem
Новичок
Сообщения: 4
Зарегистрирован: Чт июл 03, 2008 4:15 pm

Сообщение Sinistrem »

Cannot find the packet length function. :cry: Не моглибы выложить эти
файл(ы) для рус офа Chaos.Пожалуйста :(
З.Ы.
Если гдето есть решение( я по крайней мере не нашол) дайте пинок под зад и ссылку плз
Я бот? о.О
Энтузиаст
Сообщения: 63
Зарегистрирован: Ср апр 04, 2007 4:46 pm

Сообщение Я бот? о.О »

Вот эта тема, читал оторваться не мог..
А вот навязывается наивный вопросик.

Как сервер узнает, убил я моба или нет?
Скажем отправить через ВПЕ, все тот же А002 (к примеру)

А сервер должен проверить, так ли это?
Все-таки интересно, как он это определяет.
Действительно ты моба убил? Или пытаешься его наебать.

Может кто-то из больших и умных дядек, типа Джерри,Пирожка или Мауса разрулит эту тему? Дабы просвятить мою тупую как дуб голову.

Буду благодарен!
:)
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Ха-ха, ты путаешь причину и следствие. Это не сервер "узнаёт" что произошло, это клиент "узнаёт" истинное положение вещей у сервера. Все расчеты выполняются на стороне сервера, целиком.

Всё, что делает клиент, это передаёт серверу "желания" игрока - что-то вроде "наш болван-юзер хочет пойти на юг". Сервер принимает это, смотрит, а можно ли игроку туды ходить? Ага можно. Но не убили ли его по дороге мобы? Обана, таки убили! И присылает нам "вы мертвы, валяетесь в точке такой-то". Клиент RO это всё аккуратно показывает, делая из скупых цифр описания ситуации мультик. Ну это я так, на пальцах объясняю.

А главное тут то, что к сабжу это вообще отношения не имеет! :evil:

Ну разумеется, если клиент получит фальшивое описание ситуации - он так ее и отобразит: моб валяется дохлым, мы живые. Однако, уже через секунду-две моб "на самом деле", по данным сервера убъет игрока. И тогда сервер пришлет описание: "чувак, ты труп". Со стороны клиента это будет выглядить как неожиданная смерть от непонятно чего. Стоял - и упал, как при сильных лагах. Вот и всё.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Я бот? о.О
Энтузиаст
Сообщения: 63
Зарегистрирован: Ср апр 04, 2007 4:46 pm

Сообщение Я бот? о.О »

Да,конечно, я понимаю, что к сабжу это не имеет никакого отношение, простое любопытство.

Одно время на офф. клиенте, в папочке дата\sclientinfo
Были вписаны ИД гмов, я ради любопытства посмотрел ИД своего аккаунта через бота и вписал туда.
Вуаля,во время следующего захода в игру, у меня был гмский спрайт, но отнюдь команды не работали.
Вот и стало интересно, как же сервер определяет, гм - я, или все-таки "пиздабол".

Спасибо, что обрисовал всю ситуацию. Удовлетворил любопытство, в полном объеме. :)

ПЫСЫ а через что можно открывать файлы формата .dll ну и грфки?
Через блокнот если открыть, появляется кириллица вместо текста,но все-таки интересно посмотреть содержимое..
Быть может можно сделать, что нибудь более интересное, кроме сыкульки, позволяющей отодвигать камеру чуть дальше чем обычно))
romych2004
Новичок
Сообщения: 5
Зарегистрирован: Пт июл 25, 2008 7:26 pm

Сообщение romych2004 »

то что ты вписал свое ИД - это у тебя клиент отображает тебя ГМ'ом, к серверу это никакого отношения не имеет) ты можешь хоть все ИД на ГМ'ом выставить) все будут "гмами") точнее они будут только отображаться)
на сервере есть файлик, там записаны ИД и их "уровень"
чем выше уровень, тем больше возможностей, у самых главных ГМ-ов 99-й уровень, если не ошибаюсь))
поставь домашний сервер, все станет понятно :)

а вот что делать с "Unknown #2012644: **" допустим?
рсвпакетс я сделал, добавил 001Е 2 и все равно они флудят весь лог..
swat321
Новичок
Сообщения: 3
Зарегистрирован: Сб дек 20, 2008 12:58 am

Re: [!] recvpackets.txt /для каждого сервака свой? [почти FAQ]

Сообщение swat321 »

недумаю что для каждого сервак свой. Я играл на 4 серверах с одним recvpackets.txt даже и не трогал.! связано с айпи может както?? :no:
Ответить