Vinc 101 Postado Junho 9, 2012 Share Postado Junho 9, 2012 (editado) bom o tilo já explica bastante o problema é que quando chamo por um index de string e um segundo index ele retorna nil nesses dois caso o index ta retornado nil tab = { ["demon"] = { "bla bla" ,12, true,24}, ["hydra"] = {"bla bla", 35,flase,35}} se eu chamao por tab[monster] sendo monster o nome do mostro e i um valor numerico entre 1 e 4 ele retorna index (is a nil value) e no sengudo caso tab = { event = {}, plaayer = {}} se eu seto tab.event[local] = x , sendo local e x um string ou numero ele retorna index (is a nil value) isso é problema no exe? outra coisa pra modifica um arquivo.txt eu posso simpleamenste faser isso abaixo ou devo usar " :write "? file = io.open(file):read() file = " bla bla " file:flush file:close obs: so voltarei para ver as resposta mais tarde por volta das 7 então n fiquem esperamdo eu responder antes disso : ) Editado Junho 9, 2012 por lordbug99 Link para o comentário https://xtibia.com/forum/topic/187655-problema-com-index-de-tabelas-dentro-de-tabelas/ Compartilhar em outros sites More sharing options...
0 Oneshot 732 Postado Junho 9, 2012 Share Postado Junho 9, 2012 (editado) Lua é uma linguagem de programação do tipo case-sensitive. Isso significa que ao fazer isso: local tabela = { ["demon"] = 1234, } Se digamos a função getCreatureName(cid) retornar a string "Demon", você não poderá acessar tabela["Demon"], que é nulo. Em outras palavras: "demon" diferente de "Demon". Isso acho que sana suas duas dúvidas sobre tabelas e strings como index. No segundo caso, apenas com o uso de file:write() e o certo é fazer isso: local file = io.open(arquivo.txt, "a+") -- abre o arquivo com a permissão de atualização preservando os dados antigos. file:write("blabla") Editado Junho 9, 2012 por Oneshot Link para o comentário https://xtibia.com/forum/topic/187655-problema-com-index-de-tabelas-dentro-de-tabelas/#findComment-1274852 Compartilhar em outros sites More sharing options...
0 Vinc 101 Postado Junho 9, 2012 Autor Share Postado Junho 9, 2012 (editado) o monster tem string.lower, eu n cometeria um erro tão bobo ate poque no segundo exemplo ele adiciona o valor e o index,logo n é essse o problema Editado Junho 9, 2012 por lordbug99 Link para o comentário https://xtibia.com/forum/topic/187655-problema-com-index-de-tabelas-dentro-de-tabelas/#findComment-1274994 Compartilhar em outros sites More sharing options...
0 Vodkart 1515 Postado Junho 9, 2012 Share Postado Junho 9, 2012 (editado) o que você ta querendo fazer aí que eu não entendi nada? ta querendo pegar as informações na tabela, certo, mais porque não usa por exemplo: tab[getCreatureName(cid)] ai você chamaria tipo tab[getCreatureName(cid)].index no seu caso não tem index, ai vc faz assim, exemplo: tab[getCreatureName(cid)][1] -- retorna "bla bla" tab[getCreatureName(cid)][2] -- retorna 12 (caso fosse um demon) obs: n usei string.lower Editado Junho 9, 2012 por Vodkart Link para o comentário https://xtibia.com/forum/topic/187655-problema-com-index-de-tabelas-dentro-de-tabelas/#findComment-1275085 Compartilhar em outros sites More sharing options...
0 Vinc 101 Postado Junho 9, 2012 Autor Share Postado Junho 9, 2012 (editado) o caso é que isso ta retornado um erro de index nil value o que eu usei foi +- isso tab = { ["hydra"] = {"demoniac hydra",true, 30}, ["demoniac hydra"] = {"infernal hydra", false,550 } } function onStatsChange(cid,type,combat,value) monster = string.lower(getCreatureName(cid)) if tab[monster][2] then resto do code obs: as creaturas no script foram criadas especialmente para o mesmo e seus nomes estão corretos tanto pela monster.xml quanto pelo xml da propria criatura Editado Junho 9, 2012 por lordbug99 Link para o comentário https://xtibia.com/forum/topic/187655-problema-com-index-de-tabelas-dentro-de-tabelas/#findComment-1275094 Compartilhar em outros sites More sharing options...
0 Vodkart 1515 Postado Junho 9, 2012 Share Postado Junho 9, 2012 (editado) tab = { ["hydra"] = {"demoniac hydra",true, 30}, ["demoniac hydra"] = {"infernal hydra", false,550 } } function onStatsChange(cid,type,combat,value) if (isMonster(cid) and isPlayer(attacker)) then local n = getCreatureName(cid) local monster = tab[string.lower(n)] if (monster) then monster[2] ... se eu não me engano, tem que registra em onCombat tbm '-' Editado Junho 9, 2012 por Vodkart Link para o comentário https://xtibia.com/forum/topic/187655-problema-com-index-de-tabelas-dentro-de-tabelas/#findComment-1275109 Compartilhar em outros sites More sharing options...
0 caotic 393 Postado Junho 9, 2012 Share Postado Junho 9, 2012 Tabela e super chato Tó fazendo uma tabela para ser acessada em outro local usando (dofile) mais e um chato fazer pois a tabela tem que ser totalmente reconfigurada da ate raiva. em questão ao topico o evento function onStatsChange(cid,type,combat,value) e um saco quase não uso da muito erro. Neste tipo de erro o poprio site de LUA ele tem alguns tutoriais de alta qualidade. Link para o comentário https://xtibia.com/forum/topic/187655-problema-com-index-de-tabelas-dentro-de-tabelas/#findComment-1275115 Compartilhar em outros sites More sharing options...
0 Vinc 101 Postado Junho 9, 2012 Autor Share Postado Junho 9, 2012 n ta registado na xml da creatura é parecido com esse script que fiz http://www.xtibia.com/forum/topic/187607-boss-ressuretion/ e esse problema tamben assombra um outro sistema que vai ser muito ultil para scripter,que estou fasendo,e que embreve estara na area de biblioteca e o problema e o index e n statschage ou registra Link para o comentário https://xtibia.com/forum/topic/187655-problema-com-index-de-tabelas-dentro-de-tabelas/#findComment-1275117 Compartilhar em outros sites More sharing options...
0 Oneshot 732 Postado Junho 9, 2012 Share Postado Junho 9, 2012 (editado) Entendo, entendo. E esse creaturescript onStatsChange está registrado onde? Pois acho que já saquei qual é o seu problema... Se você, por ventura, registrou ele no login.lua, está muito claro que a função getCreatureName(cid), no caso, NUNCA vai retornar nomes de monstros e sim o nome do jogador. Desculpe, não vi seu post acima. Faça a postagem do script completo para análise e, de vez em quando, printe as funções para ver o que elas retornam. Veja se ao printar getCreatureName(cid) ela retorna o nome de um monstro. Editado Junho 9, 2012 por Oneshot Link para o comentário https://xtibia.com/forum/topic/187655-problema-com-index-de-tabelas-dentro-de-tabelas/#findComment-1275132 Compartilhar em outros sites More sharing options...
0 Vinc 101 Postado Junho 9, 2012 Autor Share Postado Junho 9, 2012 (editado) acho que deve ser o exe amanha baixo outro e testa a tabela é essa mesmo e ai ta aparte que da erro vo da uma testada na tabela no lua demo se n der erro é o exe mesmo --edit-- no lua demo a tabela funciono perfeitamente, o problema esta no exe mesmo obs: esse problema n da so nese caso(de crearurescript) da em qualquer lugar algum exe pra sugerirem?estou usando no,momento,o do server do alissow que se encontra na area de dowload 8.60 Editado Junho 9, 2012 por lordbug99 Link para o comentário https://xtibia.com/forum/topic/187655-problema-com-index-de-tabelas-dentro-de-tabelas/#findComment-1275146 Compartilhar em outros sites More sharing options...
0 Vodkart 1515 Postado Junho 10, 2012 Share Postado Junho 10, 2012 Tabela e super chato Tó fazendo uma tabela para ser acessada em outro local usando (dofile) mais e um chato fazer pois a tabela tem que ser totalmente reconfigurada da ate raiva. Só colocar a tabela em lib, que ela pode ser acessada em qualquer script Link para o comentário https://xtibia.com/forum/topic/187655-problema-com-index-de-tabelas-dentro-de-tabelas/#findComment-1275215 Compartilhar em outros sites More sharing options...
0 caotic 393 Postado Junho 10, 2012 Share Postado Junho 10, 2012 eu crei umas funçoes aqui em lib e coloquei para acessar as tabelas no direitorio do executavel do otserv eu crei um scripts com a tabela. Depois ultilizei as funçoes para criar scripts Acho que fico bem legal,facilita a configuraçao e alem de abrir uma tabela em outro direitorio modificaçoes não precisa dar reload Link para o comentário https://xtibia.com/forum/topic/187655-problema-com-index-de-tabelas-dentro-de-tabelas/#findComment-1275347 Compartilhar em outros sites More sharing options...
Pergunta
Vinc 101
bom o tilo já explica bastante
o problema é que quando chamo por um index de string e um segundo index ele retorna nil
nesses dois caso o index ta retornado nil
tab = { ["demon"] = { "bla bla" ,12, true,24}, ["hydra"] = {"bla bla", 35,flase,35}}
se eu chamao por tab[monster] sendo monster o nome do mostro e i um valor numerico entre 1 e 4 ele retorna index (is a nil value)
e no sengudo caso
tab = { event = {}, plaayer = {}}
se eu seto tab.event[local] = x , sendo local e x um string ou numero ele retorna index (is a nil value)
isso é problema no exe?
outra coisa pra modifica um arquivo.txt eu posso simpleamenste faser isso abaixo ou devo usar " :write "?
file = io.open(file):read()
file = " bla bla "
file:flush
file:close
obs: so voltarei para ver as resposta mais tarde por volta das 7 então n fiquem esperamdo eu responder antes disso : )
Editado por lordbug99Link para o comentário
https://xtibia.com/forum/topic/187655-problema-com-index-de-tabelas-dentro-de-tabelas/Compartilhar em outros sites
11 respostass a esta questão
Posts Recomendados