Advertisement
Dudugz-Contistente

Untitled

Oct 14th, 2017
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.84 KB | None | 0 0
  1. ByteArray = function(packet)
  2. local binary,packet,packet2 = {}, packet;if packet == nil then packet = ""; end
  3.  
  4. binary.encode = function(str)local out = {};for k in string.gmatch(str, ".") do local value = k:byte();local bin = "";repeat bin = (value % 2) .. bin;value = math.floor(value / 2);until value == 0 table.insert(out, ("0"):rep(8 - #bin) .. bin) end return table.concat(out); end
  5. binary.decode = function(str)local out = {};if #str % 8 ~= 0 then error("Invalid binary input", 0);end for k in string.gmatch(str, "........") do table.insert(out, tonumber(k, 2)) end return string.char(table.unpack(out)); end
  6. local split=function(t,s)local a={};for i,v in string.gmatch(t,string.format("[^%s]+",s or "%s")) do table.insert(a,i);end return a; end
  7. local readUTF=function()packets = split(packet,"");packet="";packet2="";for i=2,#packets do packet=packet..packets[i].."";end packet2 = packet2..binary.decode(packets[1]);return {packet=tostring(packet2),readUTF=ByteArray(packet).readUTF,readInt=ByteArray(packet).readInt}; end
  8. local readInt=function()packets = split(packet,"");packet="";packet2="";for i=2,#packets do packet=packet..packets[i].."";end packet2 = packet2..binary.decode(packets[1]);return {packet=tonumber(packet2),readUTF=ByteArray(packet).readUTF,readInt=ByteArray(packet).readInt}; end
  9. local write=function(str)packet = packet..""..binary.encode(str);return {toByteArray=packet,write=ByteArray(packet).write,readUTF=ByteArray(packet).readUTF,readInt=ByteArray(packet).readInt};end
  10. return {toByteArray=packet,write=write,readUTF=readUTF,readInt=readInt}
  11. end
  12.  
  13. -- Exemplo 1:
  14. packet = ByteArray()
  15. packet = packet.write('Test 1')
  16. packet = packet.write(2)
  17. packet = packet.toByteArray
  18.  
  19. print (packet) -- printa o packet
  20.  
  21. packet = ByteArray(packet)
  22. value_1 = packet.readUTF() -- Para retornar string (Vai pegar o Test 1 que é o primeiro write)
  23. value_2 = packet.readInt() -- Para retornar int (Vai pegar o 2 que é o segundo write)
  24.  
  25. value_1 = value_1.packet -- Agora ele pega a string após ler
  26. value_2 = value_2.packet
  27.  
  28. print(value_1..'('..type(value_1)..') - '..value_2..'('..type(value_2)..')')
  29.  
  30. --[[
  31. O print acima vai imprimir no chat #lua:
  32.  
  33. Test 1(string) - 2(number)
  34. ]]--
  35.  
  36. -- Exemplo 2:
  37. packet = ByteArray().write('Test 2').write(4).toByteArray -- ByteArray().escrever('Test 2').escrever(4).para bytearray(pega a string convertida para byte)
  38.  
  39. print (packet) -- printa o packet
  40.  
  41. packet = ByteArray(packet)
  42. value_1 = packet.readUTF().packet -- Para retornar string (Vai pegar o Test 1 que é o primeiro write) ele agora vai ler também
  43. value_2 = packet.readInt().packet -- Para retornar int (Vai pegar o 2 que é o segundo write) ele agora vai ler também
  44.  
  45. print(value_1..'('..type(value_1)..') - '..value_2..'('..type(value_2)..')')
  46.  
  47. --[[
  48. O print acima vai imprimir no chat #lua:
  49.  
  50. Test 2(string) - 4(number)
  51. ]]--
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement