Ir para conteúdo
  • 0

GetResult Erro Database


EvertonDemolay

Pergunta

Estou tentando usar esse script em uma talkaction:

function onSay(cid, words, param)

local coisas = db.getResult("SELECT `level` FROM `global`.`players` WHERE `name` = 'Master Pig';")
player_level = coisas:getDataInt("level")
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Name: " .. player_level)

end

( Já tentei trocar o argumento da função onSay de cid para player, mas o erro continuou)

tentei simplificar o máximo possivel, mas o erro persiste

Lua Script Error: [TalkAction Interface]
data/talkactions/scripts/teste.lua:onSay
data/talkactions/scripts/teste.lua:3: attempt to call field 'getResult' (a nil value)
stack traceback:
        [C]: in function 'getResult'
        data/talkactions/scripts/teste.lua:3: in function <data/talkactions/scripts/teste.lua:1>

Quando eu jogo a Query no phpmyadmin ela da o retorno certo.

 

RSOPe4x.png

Estou Usando o TFS 1.0 para 10.82

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

Troca db.getResult por db.storeQuery. E troca o player por cid mesmo.

function onSay(cid, words, param)

local coisas = db.storeQuery("SELECT `level` FROM `global`.`players` WHERE `name` = 'Master Pig';")
player_level = coisas:getDataInt("level")
cid:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Name: " .. player_level)

end
Editado por MatheusMkalo
Link para o comentário
Compartilhar em outros sites

  • 0

Pode me explicar mais dessa função? Sabe dizer por quê da erro?
Vou testar aqui e mando o resultado, mas gostaria de saber o porquê do erro para conhecimento.

Amigo, deu erro:

Lua Script Error: [TalkAction Interface]
data/talkactions/scripts/teste.lua:onSay
data/talkactions/scripts/teste.lua:4: attempt to index local 'coisas' (a number value)
stack traceback:
        [C]: in function '__index'
        data/talkactions/scripts/teste.lua:4: in function <data/talkactions/scripts/teste.lua:1>

chamo atenção para essa parte: "attempt to index local 'coisas' (a number value)"

Editado por Porktss
Link para o comentário
Compartilhar em outros sites

  • 0

Hmm tenta isso entao:

function onSay(cid, words, param)

local coisas = db.storeQuery("SELECT `level` FROM `global`.`players` WHERE `name` = 'Master Pig';")
player_level = result.getDataInt(coisas, "level")
cid:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Name: " .. player_level)

end

Bem o porque do erro eh bem simples: "attempt to call field 'getResult' (a nil value)" ou seja db.getResult = nil entao nao existe essa funçao, provavelmente mudaram no TFS 1.0.

 

 

Nunca usei query em TFS 1.0, usei o google soh pra ver se achava e vi um cara falando que a funçao tinha mudado.

 

Edit:

 

Não é que mudaram no tfs 1.0 soh que tiraram o 004-database.lua, se adicionar ele direito denovo deve funcionar.

Editado por MatheusMkalo
Link para o comentário
Compartilhar em outros sites

  • 0

Nada ainda icon_rimkuk2.gif

Lua Script Error: [TalkAction Interface]
data/talkactions/scripts/teste.lua:onSay
data/talkactions/scripts/teste.lua:5: attempt to index local 'cid' (a number value)
stack traceback:
        [C]: in function '__index'
        data/talkactions/scripts/teste.lua:5: in function <data/talkactions/scripts/teste.lua:1>
Link para o comentário
Compartilhar em outros sites

  • 0

 

function onSay(player, words, param)
local c = db.storeQuery("SELECT `level` FROM `global`.`players` WHERE `name` = 'Master Pig';")
if c then
return player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE,"Level "..result.getDataInt(c, "level")..".")
end
end
Link para o comentário
Compartilhar em outros sites

  • 0


function onSay(cid, words, param)

 

local coisas = db.getResult("SELECT `level` FROM `global`.`players` WHERE `name` = "Master Pig";")

player_level = coisas:getDataInt("level")

player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Name: " .. player_level)

 

end

Link para o comentário
Compartilhar em outros sites

  • 0
function onSay(player, words, param)
local c = db.storeQuery("SELECT `level` FROM `global`.`players` WHERE `name` = 'Master Pig';")
if c then
return player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE,"Level "..result.getDataInt(c, "level")..".")
end
end

Deu esse erro:

Lua Script Error: [TalkAction Interface]
data/talkactions/scripts/teste.lua:onSay
data/talkactions/scripts/teste.lua:4: attempt to index local 'player' (a number value)
stack traceback:
        [C]: in function '__index'
        data/talkactions/scripts/teste.lua:4: in function <data/talkactions/scripts/teste.lua:1>
Link para o comentário
Compartilhar em outros sites

  • 0

Versão do seu tfs ainda nao ta mandando o cid como player userdata entao voce vai ter que iniciar ele assim

local player = Player(cid)

Assim:

function onSay(cid, words, param)

local player = Player(cid)
local coisas = db.storeQuery("SELECT `level` FROM `global`.`players` WHERE `name` = 'Master Pig';")
if coisas then
player_level = result.getDataInt(coisas, "level")
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Name: " .. player_level)
end

end
Editado por MatheusMkalo
Link para o comentário
Compartilhar em outros sites

  • 0

O parametro "cid" não estava sendo passado como player userdata ainda, e sim como numero, e se voce tentar chamar um numero usando o colon operator ":" ele vai tentar indexar um number value e vai dar error.

http://www.lua.org/pil/5.html

 

Exemplo

local n = 10
print(n.bla)

Isso vai dar erro, e quando voce faz n:bla() ele tenta fazer n.bla(n) que vai dar o mesmo erro.

 

 

Nas versões mais novas do TFS o cid é passado como userdata e nao como numero.

Editado por MatheusMkalo
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...