[Piercing Blow] BattleServer (State 3) с чего начать? - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Сообщество Календарь
Вернуться   Форум администраторов игровых серверов > MMO > Point Blank (Piercing Blow)

Point Blank (Piercing Blow)
Общие вопросы по написанию эмулятора. General questions on developing emulator. При поддержке: Lucera 2 - разработка Java Interlude

Ответ
Опции темы
Непрочитано 11.11.2016, 01:41   #1
Аватар для PROGRAMMATOR
Администратор

Автор темы (Топик Стартер) BattleServer (State 3) с чего начать?

BattleServer общается с клиентом игры посредством UDP протокола. Ниже опкоды клиентских пакетов:
  • 0x03 – основной пакет с различными событиями на карте;
  • 0x41 – подключения клиента к бою;
  • 0x43 – отключение клиента от боя;
  • 0x61 – предполагаю, что это так званый «Ping-Pong».

Подробнее узнать о структуре пакетов можно из темы «Структура, крипт и декрипт Tcp и Udp пакетов».

Цитата:
Настройка подключения (State, IP, Port) к BattleServer находится в пакете PROTOCOL_BATTLE_PRESTARTBATTLE_ACK.
Начинается всё с подключения клиента к бою – это первый пакет, приходящий на сервер от игрового клиента. В ответ необходимо отправить (пустой) пакет с опкодом 0x42.

После успешного подключения клиент присылает пакет с опкодом 0x03 в начале тела которого находится так называемый «подзаголовок» - SubHead который помогает определить к какой группе событий отнести эти данные.

Получение всех перечислений SubHead:
Свернуть ↑Развернуть ↓


Рассмотрим стандартную ситуацию. Вы поймали пакет 0x03 от клиента, в теле которого содержится следующая информация:

Код:
00 // SubHead.User
00 00 // Slot 0
15 00 // Size
04 00 00 00 // Events.PosRotation
CA 47 // X
B6 00 // Y
FE 48 // Z
BA 4D // CamX
FB D4 // CamY
03 00 // Area
Первые пять байт - это информация о группе данных, первый байт (00) является тем самым подзаголовком, следующие два байта (00 00) слот игрока которого затронуло данное событие (в моём случае это первый игрок красной команды), последние два байта (15 00) общая длина данных включая эти пять байт.

Следующие четыре байта (04 00 00 00) являются маской флагов событий, я для примера взял пакет с одним событием PosRotation которое содержит координаты игрока, направление взгляда и локацию. Кстати, не лишним будет упомянуть, что координаты данного пакета в формате half float.

Короткая видео запись о том, как найти флаги событий Udp пакетов:



В ответ вам необходимо отправить пакет с опкодом 0x04 и слотом 0xFF (получателями являются все слоты) с обработанными данными которые вы получили от клиента всем игрокам на карте. Если вы отправите полученный PosRotation, то все игроки будут видеть перемещение друг друга.

В State 3 у вас нет ограничений. Например выдать нужное количество HP:

Код:
08 // SubHead.StageInfoChara
00 00 // Slot 0
0b 00 // Size
00 10 00 00 // Events.HpSync
00 1c // HP


Или выдать необходимое оружие:

Код:
00 // SubHead.User
00 00 // Slot 0
0f 00 // Size
40 00 00 00 // Events.WeaponSync
00 // Maybe extensions
DA 97 04 00 // WeaponId


На пакет 0x43 отвечать не требуется, а на 0x61 отправляете то, что получили от клиента.

Будут вопросы, всегда рад помочь, но как всегда, готового ничего нет.
__________________
composer require laravel/framework
yarn add vue
PROGRAMMATOR вне форума Отправить сообщение для PROGRAMMATOR с помощью ICQ Отправить сообщение для PROGRAMMATOR с помощью Skype™ Ответить с цитированием
Сказали спасибо:
Непрочитано 11.11.2016, 23:44   #2
Пользователь

По умолчанию Re: BattleServer (State 3) с чего начать?

What is the structure of event 262144?
TheBestGuy вне форума Ответить с цитированием
Непрочитано 12.11.2016, 01:09   #3
Аватар для PROGRAMMATOR
Администратор

Автор темы (Топик Стартер) Re: BattleServer (State 3) с чего начать?

The Chara_GetWeaponForHost event has 17 data bytes. Look for structure in pb.exe file.
__________________
composer require laravel/framework
yarn add vue
PROGRAMMATOR вне форума Отправить сообщение для PROGRAMMATOR с помощью ICQ Отправить сообщение для PROGRAMMATOR с помощью Skype™ Ответить с цитированием
Непрочитано 12.11.2016, 01:33   #4
Пользователь

По умолчанию Re: BattleServer (State 3) с чего начать?

The event 262144 is the died info, i need more info to complete the structure.
TheBestGuy вне форума Ответить с цитированием
Непрочитано 12.11.2016, 17:27   #5
Аватар для PROGRAMMATOR
Администратор

Автор темы (Топик Стартер) Re: BattleServer (State 3) с чего начать?

262144 = 0x40000 = Chara_GetWeaponForHost (PICKUPWEAPON)
__________________
composer require laravel/framework
yarn add vue
PROGRAMMATOR вне форума Отправить сообщение для PROGRAMMATOR с помощью ICQ Отправить сообщение для PROGRAMMATOR с помощью Skype™ Ответить с цитированием
Непрочитано 12.11.2016, 20:02   #6
Пользователь

По умолчанию Re: BattleServer (State 3) с чего начать?

I tested on my udp3 and event 262144 is death, but ignoring this, can you tell me the structure of a player's death event?
TheBestGuy вне форума Ответить с цитированием
Непрочитано 13.11.2016, 23:39   #7
Аватар для bola
Пользователь

По умолчанию Re: BattleServer (State 3) с чего начать?

UDP 3 Server answer is encrypted with BitShift or only client decrypt require bitshift ?
yeah server answer require bit shift too

i have done a small sniffer to help me in proccess


Последний раз редактировалось bola; 14.11.2016 в 01:39.
bola вне форума Ответить с цитированием
Непрочитано 14.11.2016, 01:15   #8
Аватар для bola
Пользователь

По умолчанию Re: BattleServer (State 3) с чего начать?

Programmator, Session Value is a room identificator ? i mean, all players has the same session ID ? or is like a connection ID ?
bola вне форума Ответить с цитированием
Непрочитано 14.11.2016, 01:42   #9
Аватар для PROGRAMMATOR
Администратор

Автор темы (Топик Стартер) Re: BattleServer (State 3) с чего начать?

bola, it must be id connection. The room id is at the footer of packet (Id matches with that which you had sent in PROTOCOL_BATTLE_PRESTARTBATTLE_ACK packet).
__________________
composer require laravel/framework
yarn add vue
PROGRAMMATOR вне форума Отправить сообщение для PROGRAMMATOR с помощью ICQ Отправить сообщение для PROGRAMMATOR с помощью Skype™ Ответить с цитированием
Непрочитано 14.11.2016, 01:49   #10
Аватар для bola
Пользователь

По умолчанию Re: BattleServer (State 3) с чего начать?

Цитата:
Сообщение от PROGRAMMATOR Посмотреть сообщение
bola, it must be id connection. The room id is at the footer of packet (Id matches with that which you had sent in PROTOCOL_BATTLE_PRESTARTBATTLE_ACK packet).
in official server they don't match, is correct this ID ?

bola вне форума Ответить с цитированием
Ответ

Метки
battleserver udpstate 3


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
eclipse с чего начать Dr_Lector Курилка / Yak floor 3 15.11.2012 17:46
Геодата, с чего начать Dr_Lector Работа с геодатой 62 30.10.2012 13:12
Java - С чего начать? phozik1 Lineage II 1 11.11.2011 20:17
C чего начать xkykish Lineage II 12 27.08.2011 16:09
C чего начать ? wen1k PHP 8 15.01.2011 09:21


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 07:00. Часовой пояс GMT +3.

Вверх