• Страница 1 из 1
  • 1
Архив - только для чтения
Модератор форума: andycrowz  
Отправка пакетов в клиент
Ranege
Чемпион
Интересует каким кодом в игре при прокачивании лвла даётся Опыт: xxx, само отображение, отправка данных. К примеру при смене уровня что заставляет клиент изменить уровень на единицу. В плане реализации функция - это понятно. Кто может показать код на изменение данных в клиенте, хотя бы на примерах того, что я указал выше? Чтоб если, к примеру, закомментить код, то данного изменения сразу не было, а было бы только после релога персонажа или сервера.
Сообщение # 1 написано 06.02.2014 в 19:38
Givemesmoke
Скаут
Цитата Ranege ()
Кто может показать код на изменение данных в клиенте

Вообще некорректно говорить "изменение в данных в клиенте". Клиент и сервер лишь взаимодействуют посредством передачи пакетов. Сервер фактически не изменяет никаких клиентских данных. Процесс поднятия уровня, процесс отображения полученного опыта по отношению к клиенту выглядят одинаково - клиенту посылается пакет с опкодом и набором отправляемых данных. Клиент считывает пакет и выполняет операции назначенные по этому опкоду... ему лишь по-сути отправляется команда с набором данных. Тоже самое и на стороне сервера - от клиента приходят различные пакеты с опкодами и набором данных - сервер их получает. В зависимости от самого опкода вызывается обработчик (функция) для этого опкода и осуществляются все действия реализованные в этом обработчике.
Сообщение # 2 отредактировано Givemesmoke - Четверг, 06.02.2014, 20:34
Ranege
Чемпион
Цитата Givemesmoke ()
Givemesmoke

Вы человек образованный, владеете грамотным даром речи, знаете многие термины, выражаетесь корректно, а я лишь методом проб и ошибок пытаюсь что-то выучить, добиваться целей, который пытаюсь задать.
Есть вот опкоды
Код
/*0x118*/ { "CMSG_BUSY_TRADE",                    STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBusyTradeOpcode           },

В прототипах, естественно, объявление самого
Код
CMSG_BUSY_TRADE

Как видим ему присвоено в данном случае 0x118. Я так понимаю когда клиент посылает данный пакет, то обрабатывается информация, действие переходит на
Код
HandleBusyTradeOpcode

Если открыть его, то мы увидим только sLog->outDebug ( логирование в случае выставления дебага в worldserver.conf). Обычно из пакета передаются данные, к примеру, recvPacket >> name;
Вызываются какие-либо функции и происходят действия. Это я лично так вижу получение сервером опкода( со стороны ядра).
Как сервер посылает пакеты тоже рассматривал

Код
WorldPacket data(SMSG_LEVELUP_INFO, (4+4+MAX_POWERS*4+MAX_STATS*4));
     data << uint32(level);

     data << uint32(0);
     data << uint32(int32(info.stats[i]) - GetCreateStat(Stats(i)));

     GetSession()->SendPacket(&data);


Создаётся пакет, туда заносятся данные, затем от сессии посылаются пакеты, но куда они посылаются не понимаю.

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

Добавлено (08.02.2014, 00:43)
---------------------------------------------
Вообщем кому интересно, создаётся сам WorldPacket, в него заносится информация и через сессию по сокету отправляются пакеты.

Сообщение # 3 написано 08.02.2014 в 00:43
  • Страница 1 из 1
  • 1
Поиск: