Muito bom realmente teve uma boa explicaçao para tal bliblioteca pocha nem sabia que tinha essas opçoes.
Mais acho melhor melhorar a formataçao.
info
Grupo: Infante
Registrado: 04/03/11
Posts: 1.6k
Reputação: +393
Char no Tibia: No Have

Muito bom realmente teve uma boa explicaçao para tal bliblioteca pocha nem sabia que tinha essas opçoes.
Mais acho melhor melhorar a formataçao.
info
Grupo: Infante
Registrado: 13/10/08
Posts: 1.6k
Reputação: +420
Char no Tibia: Demonbholder

Não entendi o motivo das funções istable e isstring, visto que era só ter usado type(arg) == "string" ou type(arg) == "table".
Btw, parabéns pela função.
Editado Julho 5 por Demonbholder
info
Grupo: Conde
Registrado: 30/10/11
Posts: 625
Reputação: +101
Gênero: Masculino

so pra diminui mesmo,é mais rapido pra digitar.
sauhsasuahsauh
obs1:usei essas funções numa outra biblioteca que to fasendo,vai fica muito foda,e bem organizada(se fosse pra posta ela sem a organização ja teria postado a muito tempo)
obs2:a outra lib que citei acima tbm usara essa funções( na verdade fiz elas exatamente para isso).
info
Grupo: Visconde
Registrado: 22/09/10
Posts: 474
Reputação: +47

não intendi muito bem o que essas funções fazem poderia me explicar de alguma outra forma ?
Edite - fui testa a sua função e deu esse erro
Tag usada
<talkaction words="savepos;returnpos" event="script" value="savepos.lua"/>
[1:43:48.302] [Error - TalkAction Interface] [1:43:48.304] data/talkactions/scripts/savepos.lua:onSay [1:43:48.306] Description: [1:43:48.308] data/talkactions/scripts/savepos.lua:3: attempt to call global 'ge tCreaturepos' (a nil value) [1:43:48.312] stack traceback: [1:43:48.313] data/talkactions/scripts/savepos.lua:3: in function <data/talkac tions/scripts/savepos.lua:1> [1:43:50.730] [Error - TalkAction Interface] [1:43:50.733] data/talkactions/scripts/savepos.lua:onSay [1:43:50.736] Description: [1:43:50.737] data/talkactions/scripts/savepos.lua:7: attempt to call global 'ge tCreatureStorageValue' (a nil value) [1:43:50.741] stack traceback: [1:43:50.742] data/talkactions/scripts/savepos.lua:7: in function <data/talkac tions/scripts/savepos.lua:1>
Editado Julho 6 por eduardobean
info
Grupo: Infante
Registrado: 13/10/08
Posts: 1.6k
Reputação: +420
Char no Tibia: Demonbholder

não tem nada a ver com a função dele...
vc usou uma função errada.
é getPlayerStorageValue e getCreaturePosition.
info
Grupo: Conde
Registrado: 30/10/11
Posts: 625
Reputação: +101
Gênero: Masculino

na verdade o erro foi meu,eu coloquei uma letra minuscula no getCreaturePos o 'p' ta va minusculo), e o getCreaturestorageValue é que tava fasendo ums negocio pra pokemon pruncara,dae no pokemon tem essa função(que na verdade é a mesma coisa que com player).
editado la
obs: ele uso o script do exemplo.
Editado Julho 6 por lordbug99
info
Grupo: Infante
Registrado: 13/10/08
Posts: 1.6k
Reputação: +420
Char no Tibia: Demonbholder

ah, não tinha visto o script de exemplo.
info
Grupo: Visconde
Registrado: 22/09/10
Posts: 474
Reputação: +47

veja se estou certo, caso eu queria criar um script para remover a que foi salvada Exemplo "cleanpos" é só remover o storage ?
info
Grupo: Conde
Registrado: 30/10/11
Posts: 625
Reputação: +101
Gênero: Masculino

Sim,so mudar pra qualquer numero ou nil(sem aspas mesmo).
A pos pode ser muda quando quiser,sem nessecidade de remover a antiga posição,ele é feito para sobre por uma nova position emcima da antiga.
info
Grupo: Infante
Registrado: 13/10/08
Posts: 1.6k
Reputação: +420
Char no Tibia: Demonbholder

tava testando aqui e a sua func não funciona com meta tabelas.
n = {i=3}
a = setmetatable({}, n)
print(tabletostring(a))
>> {}
n = {i=3}
a = setmetatable({}, n)
print(tabletostring(getmetatable(a)))
>> {['i'] = 3}
falo.
info
Grupo: Conde
Registrado: 30/10/11
Posts: 625
Reputação: +101
Gênero: Masculino

n tinha lenbrado de metatables,mais vo ve o que da pra fase
e a segundo eu deixei uma observação no fim tab.x é igual a tab['x'],(em meta table eu n sei,mas em tables normais é assim)
exemplo se vc usa pos['x'] vai retorna x da tabela,eu ate queria diferencia um do outro so pra fica bunitinho mais n achei nenhuma diferença entre os dois.
Não é querendo ser chato não, mas essas funções já existem e se chamam table.serialize e table.unserialize.
Um grande abraço.
info
Grupo: Infante
Registrado: 13/10/08
Posts: 1.6k
Reputação: +420
Char no Tibia: Demonbholder

Mas não é uma função que existe em lua pura...
Editado Julho 13 por Demonbholder
Sim, não são nativas da linguagem Lua, mas existem nas bibliotecas de praticamente qualquer servidor atual.
Observação: Notei que você adora me contrariar em tudo rsrs.
Editado Julho 14 por Oneshot
info
Grupo: Conde
Registrado: 30/10/11
Posts: 625
Reputação: +101
Gênero: Masculino
bom essa duas funções são bem simples de entder o que elas fazem .
tabletostring comverte tabelas em strings iguais a elas(mas desordenadas pela função pairs)
loadtablestring transforma uma string de table em uma table comun
antes que venham pergunta ou criticar leiam as respostas abaixo
random noob:lord, ja n existe a função table.concat?pra que essa?
lordbug99: a funçao concat n ser pra isso,ela apenas pegas os elemtos de uma tabela e os junta numa string separados pelo sep que vc escolher ela excui os index, deixa sem as chaves(pois n fas parte da função dela),e se um dos elementos dessa tabela for uma tabela ela retorna um erro,já minha função tranforma em uma replica da tabela(com index,aceita tabelas dentro de tabelas).
random noob2:mas n é so usar tosting?
lordbug99:n se vc fiser isso ele vai so comverter a alocação da tabela em string(algo tipo 3xx2547)
aki vão as funções(nessesario copiar tudo),assim já ia esqucendo de fala tem mais duas funçoes de bonus(istable e isstring)
obs:obrigatoriamente tem que copiar as funções istring e istable(elas saõ usadas na tabletostring)
para adiconalas basta ir a pasta lib e em qualque um dos arquivos, apos o final adicionalas(de preferencia adicioneas no arquivo 050-functions para ficar organizado)
function tabletostring(tab) st = "{" k = 0 for x,y in pairs(tab) do if istable(x) then st = st.."["..tabletostring(x).."] = " k =1 elseif isstring(x) then st = st.."['"..x.."'] = " k =1 else st = st.."["..x.."] = " k =1 end if istable(y) then st = st..""..tabletostring(y).."," k =1 elseif isstring(y) then st = st.."'"..y .."'," k =1 else st = st..""..y.."," k =1 end end if k == 1 then st = st:sub(1,-2) end st = st.."}" return st end function istable(t) if type(t) == "table" then return true else return false end end function isstring(t) if type(t) == "string" then return true else return false end end function loadstringtable(str) if isstring(str) then t = loadstring('return'..str) tab = t() return tab end return false end table.tostring = tabletostring string.loadtable = loadstringtableexexemplo de uso(bem simples)
function onSay(cid,words,param) if words:lower() == "savepos" then pos = getCreaturePos(cid) storagepos = tabletostring(pos) setPlayerStorageValue(cid,5754,storagepos) elseif words:lower() == "returnpos" then stroagepos = getPlayerStorageValue(cid,5754) pos = {} if isstring(storagepos) then pos = loadstringtable(storagepos) if pos then doTeleportThing(cid, pos) end end end return true endobs: lembre-se quer tab.x == tab["x"] (então todos vão ficar da forma ['x'])
Editado Julho 6 por lordbug99