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

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

Ответ
Опции темы
Непрочитано 25.07.2016, 17:22   #1
Забанен за кидаловo/обман/развод

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

При попытке отправить сообщение в чат, ничего не происходит.
Хотя сервер все отправляет.
 
            public void WriteUnicode(string text, int count)
            {
                if (text != null)
                {
                    WriteB(Encoding.GetEncoding(1200).GetBytes(text));
                    WriteB(new byte[count - (text.Length)]);
                }
            }
 
Code: C#

 
public class PROTOCOL_LOBBY_CHATTING_ACK : ServerPacket
    {
        Player _player;
        ChatType _type;
        string _message;
        public PROTOCOL_LOBBY_CHATTING_ACK(Player player, ChatType type, string message)
        {
            _player = player;
            _type = type;
            _message = message;
        }
 
        public override void WriteImpl()
        {
            Logger.Instance.Info("Message:{0}, Name:{1}", _message, _player.Name);
            WriteD(1);
            WriteC(_player.Name.Length + 1);
            WriteUnicode(_player.Name, _player.Name.Length + 1);
            WriteC(0);
            WriteC(0);
            WriteH(_message.Length);
            WriteUnicode(_message, _message.Length);
 
Code: C#
Boris2105 вне форума Ответить с цитированием
Непрочитано 25.07.2016, 18:44   #2
Аватар для Awiion

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

Boris2105,
Не верная структура.
Awiion вне форума Отправить сообщение для Awiion с помощью Skype™ Ответить с цитированием
Непрочитано 25.07.2016, 18:57   #3
Забанен за кидаловo/обман/развод

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

Цитата:
Сообщение от Awiion Посмотреть сообщение
Boris2105,
Не верная структура.
Да вроде верная.

Boris2105 вне форума Ответить с цитированием
Непрочитано 25.07.2016, 19:20   #4
Аватар для Awiion

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

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);
        }
    }
Awiion вне форума Отправить сообщение для Awiion с помощью Skype™ Ответить с цитированием
Непрочитано 25.07.2016, 20:20   #5
Забанен за кидалов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);
        }
    }
так там же используется ник и + 1 символ
Boris2105 вне форума Ответить с цитированием
Непрочитано 25.07.2016, 20:36   #6
Аватар для Sojang
Пользователь

По умолчанию 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);
        }
    }
оффтоп:
Свернуть ↑Развернуть ↓
Sojang вне форума Ответить с цитированием
Непрочитано 25.07.2016, 21:50   #7
Аватар для PROGRAMMATOR
Администратор

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

partyvan, Write<T> юзаем, этим и похожи.
Я не юзаю модификаторы private и атрибутов [OpCode] у меня нет.
__________________
composer require laravel/framework
yarn add vue
PROGRAMMATOR вне форума Отправить сообщение для PROGRAMMATOR с помощью ICQ Отправить сообщение для PROGRAMMATOR с помощью Skype™ Ответить с цитированием
Непрочитано 25.07.2016, 22:12   #8
Аватар для Sojang
Пользователь

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

Цитата:
Сообщение от PROGRAMMATOR Посмотреть сообщение
partyvan, Write<T> юзаем, этим и похожи.
Я не юзаю модификаторы private и атрибутов [OpCode] у меня нет.
Если память не подводить раньше был у вас атрибут [Packet()] или что то вроде того
Sojang вне форума Ответить с цитированием
Непрочитано 25.07.2016, 22:48   #9
Аватар для PROGRAMMATOR
Администратор

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

Да, но уже давным давно всё переехало в отдельный enum:

namespace PiercingBlow.Common.Network
{
    public enum PacketOpcode : ushort
    {
        PROTOCOL_BASE_LOGIN_REQ = 257,
        PROTOCOL_BASE_LOGIN_ACK = 259,
        PROTOCOL_BASE_CONNECT_ACK = 514,
        PROTOCOL_BASE_LOGOUT_REQ = 515,
        PROTOCOL_BASE_LOGOUT_ACK = 516,
 
        // ...
    }
}
 
Code: C#

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

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

Цитата:
Сообщение от PROGRAMMATOR Посмотреть сообщение
Да, но уже давным давно всё переехало в отдельный enum:

namespace PiercingBlow.Common.Network
{
    public enum PacketOpcode : ushort
    {
        PROTOCOL_BASE_LOGIN_REQ = 257,
        PROTOCOL_BASE_LOGIN_ACK = 259,
        PROTOCOL_BASE_CONNECT_ACK = 514,
        PROTOCOL_BASE_LOGOUT_REQ = 515,
        PROTOCOL_BASE_LOGOUT_ACK = 516,
 
        // ...
    }
}
 
Code: C#

И теперь на лету подхватывает нужны опкод.
Ох, так же не удобно править в случае чего.ну по крайней мере я так считаю)
Sojang вне форума Ответить с цитированием
Ответ


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

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

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

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


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

Вверх