Цитата:
Сообщение от 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#