Страница 2 из 2

Добавлено: Вт янв 08, 2008 1:02 pm
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 .... - блок остальных пакетов, которые надо разгребать далее.
Как так получается, что пакеты "слипаются" в один блок, мне не понятно. Но авторитетные товарищи объяснили что это действительно имеет место быть.

Добавлено: Вс фев 17, 2008 11:55 am
CineLAB*
сделал из .ехе этот файлик поставил его куда надо прописал в серверс чтобы он и его видел даже просто бывало заменял целиком
всеровно идут УНКНОВ ПАКЕТС
что делать ?

Добавлено: Вс фев 17, 2008 12:30 pm
piroJOKE
Вот это еще почитай: viewtopic.php?t=4819 ("[!] После апдейта сервера неверно распознаются мобы и нпц?")

Добавлено: Пт фев 29, 2008 4:34 pm
piroJOKE
Вычитал кое-что о "слипающихся" пакетах в статье "SCTP – у «вечного» TCP появился конкурент".

Если я правильно понимаю, "слипаются" у TCP только те байты, которые были получены почти одновременно.
Так что это выходит? - слипаются не все пакеты?
Т.е., теоретически, если мы получаем одиночные неизвестные пакеты, recvpackets может как-бы заполняться самим OpenKore? %)
(но разумеется, если длина неизвестных пакетов > 3 , то мы не можем точно сказать, это один пакет - или кучка из 2х пакетов).

Добавлено: Пт фев 29, 2008 4:39 pm
Jerry
ээ чувак, если этот пакет неизвестный, откуда ты знаешь, один он там, или 2 или 3 ?:)

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

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

Т.е., если прилетел неизвестный пакет, глядя на его длину мы можем сказать:
(длина => 4) --- "хер его знает сколько пакетов"
(длина = 1) --- "у нас где-то явная ошибка в recvpackets"
(длина 2..3) --- "вау, мы поймали новый пакет!" или "ошибка в recvpackets".

Добавлено: Пт фев 29, 2008 4:46 pm
kLabMouse
piroJOKE
В действительности, пакеты не слипаются на уровне самого протокола TCP. В действительности, пакеты могут слипаться только на уровне библиотеки формирования, приёма, отправки пакетов. ТЕ, обычно отправка происходит по тайм ауту, всего буфера (те. всё что стоит на отправку).

Добавлено: Сб мар 01, 2008 8:21 pm
piroJOKE
Млять, вот это я плуг...

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

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

2All: Вы поняли, в чём прикол? При такого рода изменении sakexe сам файл recvpackets не изменяется,
потому что пакетам переменной длины как соответствовала цифра 0, так она нулем и осталась. Но! На самом деле длина этих пакетов изменилась!

Добавлено: Чт июл 03, 2008 8:16 pm
Sinistrem
Cannot find the packet length function. :cry: Не моглибы выложить эти
файл(ы) для рус офа Chaos.Пожалуйста :(
З.Ы.
Если гдето есть решение( я по крайней мере не нашол) дайте пинок под зад и ссылку плз

Добавлено: Пт июл 25, 2008 9:31 pm
Я бот? о.О
Вот эта тема, читал оторваться не мог..
А вот навязывается наивный вопросик.

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

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

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

Буду благодарен!
:)

Добавлено: Пт июл 25, 2008 11:33 pm
piroJOKE
Ха-ха, ты путаешь причину и следствие. Это не сервер "узнаёт" что произошло, это клиент "узнаёт" истинное положение вещей у сервера. Все расчеты выполняются на стороне сервера, целиком.

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

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

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

Добавлено: Сб июл 26, 2008 2:17 am
Я бот? о.О
Да,конечно, я понимаю, что к сабжу это не имеет никакого отношение, простое любопытство.

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

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

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

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

а вот что делать с "Unknown #2012644: **" допустим?
рсвпакетс я сделал, добавил 001Е 2 и все равно они флудят весь лог..

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

Добавлено: Сб дек 27, 2008 1:09 am
swat321
недумаю что для каждого сервак свой. Я играл на 4 серверах с одним recvpackets.txt даже и не трогал.! связано с айпи может както?? :no: