1. C# / Говнокод #15280

    +130

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    static void npcMove(string npcid, string posX, string posZ, string posY, int localsid)
            {
                byte[] opcode = { 0x4d, 0x00, 0x16, 0x23, 0x00 };
                byte[] npcid_in_bytes = new byte[4];
                npcid_in_bytes = Enumerable.Range(0, npcid.Length).Where(x => x % 2 == 0).Select(x => Convert.ToByte(npcid.Substring(x, 2), 16)).ToArray();
                Array.Reverse(npcid_in_bytes);
                byte[] posX_in_bytes = PackFloatStringArrayOfBytes(posX);
                byte[] posZ_in_bytes = PackFloatStringArrayOfBytes(posZ);
                byte[] posY_in_bytes = PackFloatStringArrayOfBytes(posY);
                byte[] unknown = { 0x00, 0x0f, 0x5c, 0x01, 0x01 };
                byte[] roleid_in_bytes = packint(16);
                byte[] localdsid_in_bytes = packint(localsid);
                byte[] buffer = opcode.Concat<byte>(npcid_in_bytes)
                    .Concat<byte>(posX_in_bytes).Concat<byte>(posZ_in_bytes).Concat<byte>(posY_in_bytes)
                    .Concat<byte>(unknown).Concat<byte>(roleid_in_bytes).Concat<byte>(localdsid_in_bytes).ToArray<byte>();
                buffer[1] = Convert.ToByte(buffer.Length - 2);
                Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                socket.Connect(localhost, GProviderPort);
                socket.Send(buffer);
                socket.Close();
            }

    Запостил: VityaPW, 01 Марта 2014

    Комментарии (6) RSS

    • Сурово. Код сериализации, код отправки пакетов, байтоебство на линке. И все в одной куче. Надеюсь хоть протокол был сторонний, иначе просто беспредельное говноедство.
      Ответить
    • npcid_in_bytes = Enumerable.Range... (npcid)
      никто не заметил что это преобразование энкодинга из Unicode в UTF8? Берется каждый чётный индекс. Encoding.UTF8.GetBytes(npcid)!
      А байтоёбство на линке, это не самое плохое... Если это не горячая точка. Хотя бы легче читать и изменять. Помоему proёб энкодинга здесь куда важнее.
      Ответить

    Добавить комментарий