- Fórum
- OTServ
- Recursos
- Linguagens de Programação
- Aulas
- Livraria - Scripting Lua, Funções Básicas
PO
Livraria - Scripting Lua, Funções Básicas
Por Poccnn, 08 de mai. de 2017 em Aulas
scripting
lua
livraria
funções
basicas
1
1.4k
Por Poccnn, 08 de mai. de 2017 em Aulas
info
Grupo: Herói
Registrado: 07/03/16
Posts: 1.4k
Reputação: +385
Gênero: Masculino
As Livrarias de Lua
A livraria base:
print(args)
Imprime cada um dos argumentos passados.
error(msg[,n])
Fecha o programa ou a função chamada em modo protegido.
assert(v[,msg])
Chama à função error caso v seja nil ou false e envia uma mensagem (msg).
type(x)
Retorna o tipo de dado de x.
tostring(x)
Converte x em uma string.
tonumber(x[,b])
Converte uma string com números para números na base b.
unpack(t)
Retorna todos os valores da tabela em separado.
ipairs(t)
Retorna um iterador que pega o index e value de uma array (t) em ordem numérica.
pairs(t)
Retorna um iterador que pega a key e value da tabela (t) sem ordem especifica.
next(t[,inx])
Se inx for nil [default] retorna o primeiro valor index, value da tabela t; se inx for o presente índice, então retorna o próximo index,value ou nil caso tenha terminado.
require (pkgname)
Carrega um pacote.
dofile ([filename])
Carrega e executa o conteúdo de um arquivo.
load (func [, chunkname])
Carrega uma string e executa uma string.
loadfile (filename)
Carrega o arquivo filename.
loadstring (s [, name])
Carrega a string s.
pcall (f [, args ])
Chama a função (f) em modo protegido.
xpcall (f, h)
Exemplos
print(args): imprime os valores declarados.
print(123,”ola”,true,function() return ‘function’end,{}) >> 123 ola true function: 0095B6B8 table: 00959158
error(msg[,nivel]): essa função serve para parar o programa ou a função em modo protegido e enviar uma mensagem de erro.
O nivel da mensagem de erro aloca informações a mais.
· Nível 0 – Não adiciona localização do erro.
· Nível 1 [padrão] – chama para a função o nome do arquivo mais linha do erro.
· Nível 2 – insere a linha onde se encontra a chamada da função que se deu o erro.
abaixo está escrito a mensagem de erro que gera essa função em cada nível.
Nível 0:
wlua: Parametro 'algo' não é um argumento valido.
stack traceback:
[C]: in function 'error'
wxtest.wx.wlua:5: in function 'digaAlgo'
wxtest.wx.wlua:9: in main chunk
[C]: ?
Nível 1:
wlua: wxtest.wx.wlua:5: Parametro 'algo' não é um argumento valido.
stack traceback:
[C]: in function 'error'
wxtest.wx.wlua:5: in function 'digaAlgo'
wxtest.wx.wlua:9: in main chunk
[C]: ?
Nível 2:
wlua: wxtest.wx.wlua:9: Parametro 'algo' não é um argumento valido.
stack traceback:
[C]: in function 'error'
wxtest.wx.wlua:5: in function 'digaAlgo'
wxtest.wx.wlua:9: in main chunk
[C]: ?
assert(v[,msg]):
type(x):
print(type(true)) >> boolean
print(type({})) >> table
print(type(function() end)) >> function
print(type(“ola”)) >> string
print(type(123)) >> number
tostring(x):
tostring(true) >> true
tostring(123) >> 123
tostring({}) >> table
tostring(function()end) >> function
tonumber(x[,b]):
tonumber(“123”) >> 123
tonumber(“12”,8) >> 10
tonumber(“ola”) >> nil
unpack(t):
local str = {84,105,98,105,97}
local a1,a2,a3,a4,a5 = unpack(str)
print(a1,a2,a3,a4,a5) >> 84 105 98 105 97
ipairs(t): É um iterador que funciona progressivamente em ordem numérica.
str = {1,2,3,4,5,6,7,8,9}
for k in ipairs(str) do
print(k)
end
>> 1 2 3 4 5 6 7 8 9
str = {[1] = 1, [2] = 2, [100] = 100, [23] = 23}
for k,v in ipairs(str) do
print(k,v)
end
>> 1 2
pairs(t): É um iterador que não segue uma ordem.
str = {1,2,3,4,5,6,7,8,9}
for k in pairs(str) do
print(k)
end
>> 7 1 2 4 8 9 5 3 6
next(t[,index])
require(pkgname):
package.cpath = package.cpath..";./?.dll;./?.so;../lib/?.so;../lib/vc_dll/?.dll;../lib/bcc_dll/?.dll;../lib/mingw_dll/?.dll;"
require("wx")
dofile ([filename]):
load(func [, chunkname]):
loadfile(filename):
loadstring(s [, name]):
print(loadstring("print \'ola\'")) >> function: -- somente carregou a string
print(loadstring("print \'ola\'")()) >> ola -- executou a função carregada.
pcall(f [, args ]):
pcall(print,"oi", "ola") >> oi ola
xpcall(f, h):
Editado Maio 31 por Poccnn