Vinc 101 Postado Julho 5, 2012 Share Postado Julho 5, 2012 (editado) 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 = loadstringtable exexemplo 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 end obs: lembre-se quer tab.x == tab["x"] (então todos vão ficar da forma ['x']) Editado Julho 6, 2012 por lordbug99 Link para o comentário Compartilhar em outros sites More sharing options...
caotic 393 Postado Julho 5, 2012 Share Postado Julho 5, 2012 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. Link para o comentário Compartilhar em outros sites More sharing options...
Demonbholder 420 Postado Julho 5, 2012 Share Postado Julho 5, 2012 (editado) 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, 2012 por Demonbholder Link para o comentário Compartilhar em outros sites More sharing options...
Vinc 101 Postado Julho 5, 2012 Autor Share Postado Julho 5, 2012 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). Link para o comentário Compartilhar em outros sites More sharing options...
eduardo190696 47 Postado Julho 6, 2012 Share Postado Julho 6, 2012 (editado) 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, 2012 por eduardobean Link para o comentário Compartilhar em outros sites More sharing options...
Demonbholder 420 Postado Julho 6, 2012 Share Postado Julho 6, 2012 não tem nada a ver com a função dele... vc usou uma função errada. é getPlayerStorageValue e getCreaturePosition. Link para o comentário Compartilhar em outros sites More sharing options...
Vinc 101 Postado Julho 6, 2012 Autor Share Postado Julho 6, 2012 (editado) 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, 2012 por lordbug99 Link para o comentário Compartilhar em outros sites More sharing options...
Demonbholder 420 Postado Julho 6, 2012 Share Postado Julho 6, 2012 ah, não tinha visto o script de exemplo. Link para o comentário Compartilhar em outros sites More sharing options...
eduardo190696 47 Postado Julho 6, 2012 Share Postado Julho 6, 2012 veja se estou certo, caso eu queria criar um script para remover a que foi salvada Exemplo "cleanpos" é só remover o storage ? Link para o comentário Compartilhar em outros sites More sharing options...
Vinc 101 Postado Julho 6, 2012 Autor Share Postado Julho 6, 2012 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. Link para o comentário Compartilhar em outros sites More sharing options...
Demonbholder 420 Postado Julho 7, 2012 Share Postado Julho 7, 2012 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. Link para o comentário Compartilhar em outros sites More sharing options...
Vinc 101 Postado Julho 7, 2012 Autor Share Postado Julho 7, 2012 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. Link para o comentário Compartilhar em outros sites More sharing options...
Oneshot 732 Postado Julho 13, 2012 Share Postado Julho 13, 2012 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. Link para o comentário Compartilhar em outros sites More sharing options...
Demonbholder 420 Postado Julho 13, 2012 Share Postado Julho 13, 2012 (editado) Mas não é uma função que existe em lua pura... Editado Julho 13, 2012 por Demonbholder Link para o comentário Compartilhar em outros sites More sharing options...
Oneshot 732 Postado Julho 14, 2012 Share Postado Julho 14, 2012 (editado) 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, 2012 por Oneshot Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados