Вопросы

qqaaalll
Новичок

Проблема изложена в названии темы.

 

Код из мода

public OnIncomingPacket(playerid, packetid, BitStream:bs)
{
    new data[100], string[100], byteNameLen;

    BS_IgnoreBits(bs, 8);
    BS_ReadValue(bs, PR_STRING, data);

    /* format(string, 10, "%d", packetid);
    SendClientMessage(playerid, -1, string); */

    switch(packetid)
    {
        case PACKET_TEST:
        {
            format(string, 100, "Received %d packet: %s len: %s", packetid, data, byteNameLen);
            SendClientMessage(playerid, -1, string);
            return 1;
        }
    }
    return 1;
}

Код из .lua

PACKET_CUSTOM = 251
PACKET_DATA = "78"
COLOR = 0x00BFFF

function main()

    if not isSampLoaded() or not isSampfuncsLoaded() then
        return
    end

    while not isSampAvailable() do
        wait(100)
    end

    sampAddChatMessage("Скрипт загружен", COLOR)

    while true do

        wait(0)
        if isKeyJustPressed(0x42) then

            bs = raknetNewBitStream()
            raknetBitStreamWriteInt8(bs, PACKET_CUSTOM)
            raknetBitStreamWriteString(bs, PACKET_DATA)
            raknetSendBitStream(bs)

            sampAddChatMessage("Пакет отправлен", COLOR)

        end
    end
end

 

Если передавать число ( в моде указываю PR_INT8, new data[100] меняю на new data, в format меняю %s на %d; в .lua raknetBitStreamWriteString меняю на raknetBitStreamWriteInt8 и передаю число вторым параметром ) то всё получается, и в сампе мне приходит сообщение с цифрой которую я указал в .lua. Также заметил, что если заменить PR_STRING на PR_INT8 и передать строку, то в data записывается ASCII код первого символа из передаваемой строки, подозреваю что здесь проблема в PR_STRING.

Поделиться сообщением


Ссылка на сообщение

1 ответ на этот вопрос

  • 0
qqaaalll
Новичок

Я разобрался - нужно было в BS_ReadValue(bs, PR_STRING, data); четвёртым аргументом передать длину строки в байтах.

Её можно получить в функции BS_GetNumberOfUnreadBits(bs, <переменная в которую нужно записать байты>);

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Korochansky
      От Korochansky
      Настало время объявить о скором выпуске первого релиза среды разработки под названием Spawn.

      В настоящее время программа находится на заключительных этапах доработки кода и локализации интерфейса.
      Таким образом, в течение следующей недели будет выпущена быстрая и современная среда разработки, обладающая следующими возможностями (о которых я расскажу сейчас, а о других — позже):
       
      Полнофункциональный локальный Git: 
      Индексирование, фиксации, индикаторы состояния и мягкий/жесткий сброс до любой точки сохранения одним щелчком мыши. Разрабатывайте свой игровой сервер, не боясь его сломать.
      Новички могут рассматривать это как историю кодовой базы вашего сервера (что и есть на самом деле).
       
      Чистый UTF-8 (без BOM): 
      Полный отказ от устаревшей кодировки Windows-1251 (CP1251) для абсолютной стабильности и идеальной совместимости с Git.
      Реализация поддержки CP1251 привела бы к нестабильному поведению программы и ухудшила бы пользовательский опыт.
       
      История изменений строк: Редактор выделяет измененные строки в реальном времени в полях рядом с номерами строк. Это позволяет мгновенно видеть границы изменений, внесенных с момента открытия файла.
       
      Сопоставление и выделение фигурных скобок: мгновенное выделение открывающих и закрывающих фигурных скобок для быстрой навигации по структуре кода и защиты от ошибок компиляции.
       
      Интеграция с SAMPCTL: готовая к использованию автоматизация процессов. Сборка, запуск сервера и менеджер зависимостей (управление библиотеками и плагинами) работают напрямую из интерфейса редактора.
       
      И многое другое...
       
      И самое главное: проект будет с открытым исходным кодом под лицензией GPLv3!
      Следите за новостями о выпуске в репозитории: https://github.com/daniilkorochansky/spawn
    • KodBi
      От KodBi
      шапка
      по одиночке работают
      нужны оба