Ir para conteúdo
  • Cadastre-se

Posts Recomendados

O que é?

É um comando de GM para debugaro server in game.

A ideia é a seguinte, tudo o que estiver após o /lua será executado dentro do servidor como lua.

Como usar?

Se você digitar /lua cid, retorna o seu cid.

Se você usar uma função que precisa de um cid, para não ter necessidade de pegar seu cid e copiar e colar na função que deseja, você pode usar da seguinte forma: /lua isPlayer(~cid);, onde todo o momento que ~cid for digitado, será substituido pelo seu cid

O sistema converte o comando escrito em função e executa, antes de executar ele adiciona um "return" no inicio do que foi escrito. Se o seu código for muito grande, você pode colocar o return manualmente, o script identifica que você colocou o return e não coloca o automatico, por exemplo:

/lua local bag = doPlayerAddItem(~cid, 1995); doAddContainerItem(bag, 2383); return true;

Instalando:

Crie um arquivo com o nome de lua.lua em sua pasta talkactions e coloque o seguinte código.

function table.val_to_str ( v )

if "string" == type( v ) then

v = string.gsub( v, "\n", "\\n" )

if string.match( string.gsub(v,"[^'\"]",""), '^"+$' ) then

return "'" .. v .. "'"

end

return '"' .. string.gsub(v,'"', '\\"' ) .. '"'

else

return "table" == type( v ) and table.tostring( v ) or

tostring( v )

end

end

function table.key_to_str ( k )

if "string" == type( k ) and string.match( k, "^[_%a][_%a%d]*$" ) then

return k

else

return "[" .. table.val_to_str( k ) .. "]"

end

end

function table.tostring( tbl )

local result, done = {}, {}

for k, v in ipairs( tbl ) do

table.insert( result, table.val_to_str( v ) )

done[ k ] = true

end

for k, v in pairs( tbl ) do

if not done[ k ] then

table.insert( result,

table.key_to_str( k ) .. "=" .. table.val_to_str( v ) )

end

end

return "{" .. table.concat( result, " | " ) .. "}"

end

function onSay(cid, words, param, channel)

param = string.gsub(param, "~cid", tostring(cid));

if (param == "cid") then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "cid: " .. tostring(cid));

else

if (string.find(param, "return") == nil) then

funcao = loadstring("return " .. param);

else

funcao = loadstring(param);

end

local retorno = funcao();

if (type(retorno) == 'table') then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "retorno: '" .. tostring(table.tostring(retorno)) .. "'")

else

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "retorno: '" .. tostring(retorno) .. "'");

end

end

return true;

end

Depois abra o seu arquivo talkactions.xml e adicione esta linha em algum lugar:

<talkaction log="yes" access="5" words="/lua" event="script" value="lua.lua"/>

Notas:

A função é bem certinha, para evitar o máximo um crash no seu server porém, não é 100% garantido, já que ela te da liberdade de escrever qualquer código dentro do servidor, eu recomendo dar esta função para os programadores programarem num server offline, não no servidor original, para evitar crash de erro de programação.

Créditos:

A conversão de tabela para string eu peguei num site de programação lua, o resto tudo fui eu (Lord Azzi) que fiz (:

Editado por Lord Azzi (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo