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

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

Ответ
Опции темы
Непрочитано 25.07.2016, 22:55   #11
Аватар для PROGRAMMATOR
Администратор

По умолчанию Re: PROTOCOL_LOBBY_CHATTING_ACK

Ну да, если опкоды поменяются, то куда лучше по каждому файлу лазить. )
__________________
composer require laravel/framework
yarn add vue
PROGRAMMATOR вне форума Отправить сообщение для PROGRAMMATOR с помощью ICQ Отправить сообщение для PROGRAMMATOR с помощью Skype™ Ответить с цитированием
Непрочитано 25.07.2016, 23:00   #12
Аватар для Sojang
Пользователь

По умолчанию Re: PROTOCOL_LOBBY_CHATTING_ACK

Цитата:
Сообщение от PROGRAMMATOR Посмотреть сообщение
Ну да, если опкоды поменяются, то куда лучше по каждому файлу лазить. )
> ПБ
> Поменяются опкоды

Я еще не помню такого случая что бы все иды под чистую изменили, разве что с выходом пирсинга все "глобально" изменили.
Когда клиент с новым интерфейсом на арабском сервере только вышел(в году 2011), там вообще по моему отличий на пакетном уровне не было от старых версий
Sojang вне форума Ответить с цитированием
Непрочитано 25.07.2016, 23:28   #13
Аватар для PROGRAMMATOR
Администратор

По умолчанию Re: PROTOCOL_LOBBY_CHATTING_ACK

Ну вот, раз уже было.

Да норм всё, добавил пакет, внес его имя, опкод и забыл.
__________________
composer require laravel/framework
yarn add vue
PROGRAMMATOR вне форума Отправить сообщение для PROGRAMMATOR с помощью ICQ Отправить сообщение для PROGRAMMATOR с помощью Skype™ Ответить с цитированием
Непрочитано 25.07.2016, 23:31   #14
Аватар для Sojang
Пользователь

По умолчанию Re: PROTOCOL_LOBBY_CHATTING_ACK

Цитата:
Сообщение от PROGRAMMATOR Посмотреть сообщение
Ну вот, раз уже было.

Да норм всё, добавил пакет, внес его имя, опкод и забыл.
Приходит пакет -> Ищем ид в enum списке -> По иду вытаскиваем название -> По названию ищем и вызываем класс с логикой пакета

Я верно понял вашу систему?
Sojang вне форума Ответить с цитированием
Непрочитано 26.07.2016, 00:46   #15
Аватар для Awiion

По умолчанию Re: PROTOCOL_LOBBY_CHATTING_ACK

partyvan,
Да так и есть. Другие варианты просто извращены тогда......
Хотя у меня так же HandlePacket клиентский построен
Awiion вне форума Отправить сообщение для Awiion с помощью Skype™ Ответить с цитированием
Непрочитано 26.07.2016, 04:44   #16
Аватар для PROGRAMMATOR
Администратор

По умолчанию Re: PROTOCOL_LOBBY_CHATTING_ACK

PacketOpcode Id;
 
if (Enum.TryParse(GetType().Name, out Id))
{
	// ...
}
else
{
	// ...
}
 
Code: C#
__________________
composer require laravel/framework
yarn add vue
PROGRAMMATOR вне форума Отправить сообщение для PROGRAMMATOR с помощью ICQ Отправить сообщение для PROGRAMMATOR с помощью Skype™ Ответить с цитированием
Непрочитано 26.07.2016, 12:16   #17
Забанен за кидаловo/обман/развод

Автор темы (Топик Стартер) Re: PROTOCOL_LOBBY_CHATTING_ACK

Цитата:
Сообщение от Awiion Посмотреть сообщение
Boris2105, Смотри лучше.
Во первых, в Unicode один символ, равен двум.

Во вторых, включи рассудок,

Код:
   WriteH(_message.Length);
   WriteUnicode(_message, _message.Length);
Код:
Write<ushort>(Text.Leneth)
WriteUnicode(Text);
У тебя первый указывает массив, второй столбец записывает.
Записываешь ты не правильно, WriteUnicode по этому используешь +1

Код:
  [OpCode(3087)]
    class SM_LOBBY_CHATTING : WriterPacket
    {
        private Player player;
        private ChatType type;
        private string text;

        public SM_LOBBY_CHATTING(Player player, ChatType type, string text)
        {
            this.player = player;
            this.type = type;
            this.text = text;
        }

        public override WriteImpl()
        {
            Write<int>(player.Id);
            Write<byte>(player.Name.Length);
            WriteUnicode(player.Name);
            Write<byte>(player.Color);
            Write<byte>(type);
            Write<ushort>(text.Length);
            WriteUnicode(text);
        }
    }
Почему то к нику прибавляются китайские иероглифы .


 
        public void WriteUnicode(string text, int count)
            {
                if (text != null)
                {
                    WriteB(Encoding.GetEncoding(1200).GetBytes(text));
                    WriteB(new byte[count - (text.Length)]);
                }
            }
 
 
            Logger.Instance.Info("Message:{0}, Name:{1}", _message, _player.Name);
            WriteD(_player.Id);
            WriteC(_player.Name.Length);
            WriteUnicode(_player.Name, _player.Name.Length);
            WriteC(0);
            WriteC(0);
            WriteH(_message.Length);
            WriteUnicode(_message, _message.Length);
 
Code: C#
Boris2105 вне форума Ответить с цитированием
Непрочитано 26.07.2016, 12:51   #18
Аватар для Awiion

По умолчанию Re: PROTOCOL_LOBBY_CHATTING_ACK

Boris2105, WriteUnicode не верный, в твоем случае тогда так:
Код:
WriteC((byte)(_player.Name.Length + 1));
WriteUnicode(_player.Name, _player.Name.Length + 2);
Awiion вне форума Отправить сообщение для Awiion с помощью Skype™ Ответить с цитированием
Непрочитано 26.07.2016, 13:24   #19
Забанен за кидаловo/обман/развод

Автор темы (Топик Стартер) Re: PROTOCOL_LOBBY_CHATTING_ACK

Цитата:
Сообщение от Awiion Посмотреть сообщение
Boris2105, WriteUnicode не верный, в твоем случае тогда так:
Код:
WriteC((byte)(_player.Name.Length + 1));
WriteUnicode(_player.Name, _player.Name.Length + 2);
а ты не мог бы дать верный?
Boris2105 вне форума Ответить с цитированием
Ответ


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

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

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

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


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

Вверх