На счёт первого способа, я делю строку на пополам и это никак не влияет, т.к. ошибка возникает именно при записи в переменную
msg = raknetBitStreamReadString(bs, len) -- Проблемная строка (string too long)
n = 500
first = string.sub(msg, 1, n)
second = string.sub(msg, n + 1)
На счёт второго, я честно, ничего не понял