Postado Agosto 5, 2020 4 anos Este é um post popular. Lua demo in-game Quando me deparei com a necessidade de ter que fazer e registrar uma talkaction sempre quando fosse testar algum algoritmo ou função Lua, eu decidi fazer esse sisteminha. Ele permite executar códigos e instruções Lua in-game sem a necessidade de dar reload ou sequer sair do client do Tibia, também é possivel executar qualquer função Lua existente na engine em execução no servidor. Algumas imagens Citar >>>>>>>>> >>>>>>>>> A declaração de variáveis, uso de loops e condicionais também é possivel desde que todas instruções estejam na mesma linha (escrever sem dar enter): >>>>>>>>> Alem disso, em caso de erros, também é exibido in-game (erro proposital cometido na linha 2): Instalação Crie um arquivo chamado lua.lua dentro do seguinte diretório e com o conteúdo exibido abaixo: data/talkactions/scripts/ function onSay(cid, words, param) registerCreatureEvent(cid, "luaDemo") doShowTextDialog(cid, 1947, true) return true end Após isso crie um outro arquivo, dessa vez chamado lua_demo.lua dentro do seguinte diretório e com o conteúdo exibido abaixo: data/creaturescripts/scripts/ function onTextEdit(cid, item, newText) if item.itemid == 1947 then _G.cid = cid local lines = {} for line in newText:gmatch("[^\n]+") do table.insert(lines, line) end for i = 1, #lines do local func = loadstring(lines[i]) if func then local ret, err = pcall(func) if not ret then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "[Lua error]:\nline "..i..": "..err) end end end unregisterCreatureEvent(cid, "luaDemo") end return true end Depois basta registrar ambos os scripts conforme indicado abaixo: data/talkactions/talkactions.xml <talkaction log="yes" words="/lua" access="5" event="script" value="lua.lua"/> data/creaturescripts/creaturescript.xml <event type="textedit" name="luaDemo" event="script" value="lua_demo.lua"/> É isso... o sistema da grandes possibilidades aos administradores que souberem Lua e praticidade pra quem for desenvolver ou debugar algum código Lua. Editado Agosto 5, 2020 4 anos por WooX (veja o histórico de edições)
Postado Agosto 5, 2020 4 anos Show! Bem interessante, o @VitorSubhi trouxe um semelhante uma vez. Obs: Utilizar doShowTextDialog é bem mais gostozin do que utilizar o proprio parametro do console ksksks Editado Agosto 5, 2020 4 anos por Yan Liima (veja o histórico de edições)
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.