Lua - Identificando versão

96 views
Skip to first unread message

Jonathan [MU ONLINE - LUA]

unread,
Sep 13, 2020, 5:13:50 PM9/13/20
to Lua BR
Olá, boa noite! 

Estou criando scripts pra um jogo chamado mu online, mas preciso saber a versão que é utilizada para poder compilar os arquivos utilizando luac.
Alguém saberia me dizer se se há alguma forma de executar um código que me retorna a versão que está sendo utilizada do lua script no gameserver?

Luiz Henrique de Figueiredo

unread,
Sep 13, 2020, 5:23:49 PM9/13/20
to lua...@googlegroups.com
> preciso saber a versão que é utilizada para poder compilar os arquivos utilizando luac.

Em Lua, a variável global _VERSION contém essa informação.
Em C, use LUA_VERSION_NUM.

Mas não entendi o que isso tem a ver com luac.

jonatha...@gmail.com

unread,
Sep 13, 2020, 5:28:59 PM9/13/20
to Lua BR
luac compila um bytecode específico da versão utilizada para gerar o arquivo. Se não compilar com a versão certa acaba dando que o bytecode é incompatível. Pelo menos é isso que estou entendendo.

Luiz Henrique de Figueiredo

unread,
Sep 13, 2020, 5:34:40 PM9/13/20
to lua...@googlegroups.com
> luac compila um bytecode específico da versão utilizada para gerar o arquivo. Se não compilar com a versão certa acaba dando que o bytecode é incompatível. Pelo menos é isso que estou entendendo.

Sim, é verdade. Mas isso só é necessário se você quiser distribuir
código précompilado. Não é preciso usar luac para executar scripts
Lua: eles são compilados ao serem carregados.

jonatha...@gmail.com

unread,
Sep 13, 2020, 5:50:08 PM9/13/20
to Lua BR
Irei sim distribuir e disponibilizar alguns eventos para a comunidade, mas quero proteger meu trabalho e por isso preciso pré compilar. Pode me dar uma luz caso não consiga aqui? Vou fazer uns testes agora que descobri a versão. Muito obrigado, sua resposta até agora já ajudou bastante!

jonatha...@gmail.com

unread,
Sep 13, 2020, 6:19:06 PM9/13/20
to Lua BR
No bin2c contém essa descrição:
"Grave um arquivo de origem C na saída padrão. Quando este arquivo de origem C é incluído em outro arquivo de origem C, tem o efeito de carregar e executando o arquivo especificado naquele ponto do programa. O arquivo nomeado por 'filename' contém código de bytes Lua ou fonte Lua. Seu conteúdo é usado para gerar a saída C. Se + for usado, então o o conteúdo de 'nome do arquivo' é compilado antes de ser usado para gerar a saída C..."

Como consigo fazer isso? Não tenho experiencia o suficiente pra entender, to quebrando a cabeça aqui. 

Denis Dos Santos Silva

unread,
Sep 14, 2020, 12:25:05 PM9/14/20
to Lua BR
===================================  
como identificar a versão do bytecode lua
===================================

se for pra identificar a versão do bytecode lua (binário)  uma forma seria essa...



$ echo "print('hello world')" > hello.lua
$ luac51.exe -o hello.51 hello.lua
$ luac52.exe -o hello.52 hello.lua
$ luac54.exe -o hello.54 hello.lua

apesar de termos a definição lua.h:#define LUA_SIGNATURE     "\x1bLua"

$ xxd hello.51
00000000: 1b4c 7561 5100 0104 0804 0800 0b00 0000  .LuaQ...........
00000010: 0000 0000 4068 656c 6c6f 2e6c 7561 0000  ....@ hello.lua..
00000020: 0000 0000 0000 0000 0002 0204 0000 0005  ................
00000030: 0000 0041 4000 001c 4000 011e 0080 0002  ...A@...@.......
00000040: 0000 0004 0600 0000 0000 0000 7072 696e  ............prin
00000050: 7400 040c 0000 0000 0000 0068 656c 6c6f  t..........hello
00000060: 2077 6f72 6c64 0000 0000 0004 0000 0001   world..........
00000070: 0000 0001 0000 0001 0000 0001 0000 0000  ................
00000080: 0000 0000 0000 00                        .......

$ xxd hello.52
00000000: 1b4c 7561 5200 0104 0804 0800 1993 0d0a  .LuaR...........
00000010: 1a0a 0000 0000 0000 0000 0001 0204 0000  ................
00000020: 0006 0040 0041 4000 001d 4000 011f 0080  ...@.A@...@.....
00000030: 0002 0000 0004 0600 0000 0000 0000 7072  ..............pr
00000040: 696e 7400 040c 0000 0000 0000 0068 656c  int..........hel
00000050: 6c6f 2077 6f72 6c64 0000 0000 0001 0000  lo world........
00000060: 0001 000b 0000 0000 0000 0040 6865 6c6c  ...........@ hell
00000070: 6f2e 6c75 6100 0400 0000 0100 0000 0100  o.lua...........
00000080: 0000 0100 0000 0100 0000 0000 0000 0100  ................
00000090: 0000 0500 0000 0000 0000 5f45 4e56 00    .........._ENV.

$ xxd hello.54
00000000: 1b4c 7561 5400 1993 0d0a 1a0a 0408 0878  .LuaT..........x
00000010: 5600 0000 0000 0000 0000 0000 2877 4001  V...........(w@.
00000020: 8b40 6865 6c6c 6f2e 6c75 6180 8000 0102  .@ hello.lua.....
00000030: 8551 0000 000b 0000 0083 8000 0044 0002  .Q...........D..
00000040: 0146 0001 0182 0486 7072 696e 7404 8c68  .F......print..h
00000050: 656c 6c6f 2077 6f72 6c64 8101 0000 8085  ello world......
00000060: 0100 0000 0080 8081 855f 454e 56         ........._ENV

jonatha...@gmail.com

unread,
Sep 14, 2020, 1:01:03 PM9/14/20
to Lua BR
Está escrito LJ em um arquivo aqui que já está encriptado corretamente. Pelo que parece preciso compilar usando o lua jit, sabe me dizer se meu pensamento está correto?

jonatha...@gmail.com

unread,
Sep 14, 2020, 1:02:42 PM9/14/20
to Lua BR
Segue o trecho inicial:  LJ @Compilar\Abrir Evento.lua¦
Reply all
Reply to author
Forward
0 new messages