Ir para conteúdo
  • 0

Problema Com Index De Tabelas Dentro De Tabelas


Vinc

Pergunta

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 lordbug99
Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

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 por Oneshot
Link para o comentário
Compartilhar em outros sites

  • 0

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 por lordbug99
Link para o comentário
Compartilhar em outros sites

  • 0

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 por Vodkart
Link para o comentário
Compartilhar em outros sites

  • 0

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 por lordbug99
Link para o comentário
Compartilhar em outros sites

  • 0

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 por Vodkart
Link para o comentário
Compartilhar em outros sites

  • 0

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
Compartilhar em outros sites

  • 0

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
Compartilhar em outros sites

  • 0

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 por Oneshot
Link para o comentário
Compartilhar em outros sites

  • 0

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 por lordbug99
Link para o comentário
Compartilhar em outros sites

  • 0

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
Compartilhar em outros sites

  • 0

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
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...