Ir para conteúdo
  • Cadastre-se

(Resolvido)Função verificar storage


Ir para solução Resolvido por Vodkart,

Posts Recomendados

Olá galera, estou desenvolvendo pro meu servidor um sistema o qual não faz diferença dizer qual é, onde engalhei numa parte e gostaria de ver se alguém poderia me ajudar.
Preciso de uma função que checa na minha database, se existe algum player que tenha o valor X na storage Y.
Por exemplo:
 

Citar

function verificar(10023, 54) -- storage, valor
if existe alguém com o valor 54 na storage 10023 then

return true

else

return false

end

end

 

Como sou péssimo quando se fala de query, não consegui fazer essa função, alguém poderia por favor me ajudar?
Se possível, retornar o nome do jogador que possui tal valor na storage.

Obs: Servidor SQlite

Te ajudei? Clique em  Gostei ! 

²²²d¬¬b²²²

 

 

"She's got a smile that it seems to me...."  ♪♪

Link para o post
Compartilhar em outros sites
function getPlayersFromStorage(storage, value)
	local query,t = db.getResult("SELECT `player_id` FROM `player_storage` WHERE `key` = ".. storage .." AND `value` = ".. value),{}
	if (query:getID() ~= -1) then
		repeat
			t[#t+1] = query:getDataInt("player_id")
		until not(query:next())
		query:free()
	end
	return t
end

 

retorna uma tabela com os id dos players

 

mas n tem erro 

 

a query é basica

 

local storage,value = 178901,5
local query = db.getResult("SELECT `player_id` FROM `player_storage` WHERE `key` = ".. storage .." AND `value` = ".. value)
if (query:getID() ~= -1) then
...

 

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

Acho que não entendi muito bem....
Irei explicar como vou usar:

Estaria criando essa função em uma lib, para um NPC chamar ela de acordo com o numero que o player der por exempo:

verificar(10023, ".. numero do player ..")

Se já existir algum player com esse numero na storage 10023, a função retorna o nome do player, se não existir, a função retorna false para que o NPC prossiga e registre esse número no player, ou seja, nunca poderá ter 2 players com o mesmo valor nessa storage.

@Vodkart eu tentei assim, mas não funciona:
 

function jatem(sto, valor)
local query = db.getResult("SELECT `player_id` FROM `player_storage` WHERE `key` = "..sto.." AND 'value' = "..valor.."")
local aa = getPlayerNameByGUID(query:getDataString("player_id"))
if aa then
bb = getPlayerNameByGUID(query:getDataString("player_id"))
else
bb = false
end
return bb
end

 

Te ajudei? Clique em  Gostei ! 

²²²d¬¬b²²²

 

 

"She's got a smile that it seems to me...."  ♪♪

Link para o post
Compartilhar em outros sites
  • Solução
function getPlayersFromStorage(storage, value)
	local query = db.getResult("SELECT `player_id` FROM `player_storage` WHERE `key` = ".. storage .." AND `value` = ".. value)
	if (query:getID() ~= -1) then
		return getPlayerNameByGUID(query:getDataInt("player_id"))
	end
	return false
end

 

 

 

ai pode usar

 

local x = getPlayersFromStorage(10023, getPlayerGUID(cid))
if not x then 
	print("nenhum jogador com este value")
else
	print(x)
end

 

 

Editado por Vodkart
nenhum (veja o histórico de edições)

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
8 minutos atrás, Vodkart disse:

function getPlayersFromStorage(storage, value)
	local query = db.getResult("SELECT `player_id` FROM `player_storage` WHERE `key` = ".. storage .." AND `value` = ".. value)
	if (query:getID() ~= -1) then
		return getPlayerNameByGUID(query:getDataString("player_id"))
	end
	return false
end

 

 

ai pode usar

 


local x = getPlayersFromStorage(10023, getPlayerGUID(cid))
if not x then 
	print("nenhum jogador com este value")
else
	print(x)
end

 

 

 

Funcionou cara! Vlw mesmo!
Obs: você cometeu um pequeno erro ali rsrs
local x = getPlayersFromStorage(10023, getPlayerGUID(cid))
seria
local x = getPlayersFromStorage(10023, 53)

 

Mas funcionou bem como eu precisava!

Te ajudei? Clique em  Gostei ! 

²²²d¬¬b²²²

 

 

"She's got a smile that it seems to me...."  ♪♪

Link para o post
Compartilhar em outros sites

FUNCIONOU COMO? vc trocou o int por string

 

o certo é

 

function getPlayersFromStorage(storage, value)
	local query = db.getResult("SELECT `player_id` FROM `player_storage` WHERE `key` = ".. storage .." AND `value` = ".. value)
	if (query:getID() ~= -1) then
		return getPlayerNameByGUID(query:getDataInt("player_id"))
	end
	return false
end

 

e não cometi erro não

 

a função 'getPlayerGUID(cid)' retorna um ID do jogador, cada jogqador tem um id!

 

então no caso era so pra teste kkk mas valeu!

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
Agora, Vodkart disse:

FUNCIONOU COMO? vc trocou o int por string

 

o certo é

 


function getPlayersFromStorage(storage, value)
	local query = db.getResult("SELECT `player_id` FROM `player_storage` WHERE `key` = ".. storage .." AND `value` = ".. value)
	if (query:getID() ~= -1) then
		return getPlayerNameByGUID(query:getDataInt("player_id"))
	end
	return false
end

 

hehe vc nao entendeu pq n viu como usei.
Segue parte do meu código para que você entenda:

 

		local numero = tonumber(msg)
		if numero >= 101 then
			selfSay("Somente números de {1} a {100}.", cid)
			talkState[talkUser] = 2
			return true
		end
		
		
		local x = getPlayersFromStorage(8449500, numero)
		if not x then 
			if doPlayerRemoveItem(cid, 2159, 1) then
				apostar(cid, numero)
				selfSay("Você apostou no número {".. msg .."}. Boa sorte!", cid)
				talkState[talkUser] = 0
				return true
			else
				selfSay("Você não tem {1 Diamante} para apostar.", cid)
				talkState[talkUser] = 0
				return true
			end
		else
			selfSay("Alguém já apostou nesse número, escolha outro!", cid)
			talkState[talkUser] = 2
			return true
		end

A parte de retornar o nome de quem usou o mesmo número, será usado em outro script do mesmo sistema ^^

Te ajudei? Clique em  Gostei ! 

²²²d¬¬b²²²

 

 

"She's got a smile that it seems to me...."  ♪♪

Link para o post
Compartilhar em outros sites

entendi agr oq tu quis fazer... mas que bom que deu certo! a parte da função que eu tinha te falado era essa q vc alterou

 

 

local aa = getPlayerNameByGUID(query:getDataString("player_id"))

 

'getDataString' está errado pq o "player_id" retorna um  número, então tem que usar 'getDataInt'

return getPlayerNameByGUID(query:getDataInt("player_id"))

 

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
8 minutos atrás, Vodkart disse:

FUNCIONOU COMO? vc trocou o int por string

 

o certo é

 


function getPlayersFromStorage(storage, value)
	local query = db.getResult("SELECT `player_id` FROM `player_storage` WHERE `key` = ".. storage .." AND `value` = ".. value)
	if (query:getID() ~= -1) then
		return getPlayerNameByGUID(query:getDataInt("player_id"))
	end
	return false
end

 

e não cometi erro não

 

a função 'getPlayerGUID(cid)' retorna um ID do jogador, cada jogqador tem um id!

 

então no caso era so pra teste kkk mas valeu!

 

Não foi um erro? rsrs 

Achei estranho pois vc criou a função 
getPlayersFromStorage(storage, value)

e usou de exemplo de uso
local x = getPlayersFromStorage(10023, getPlayerGUID(cid))

 

Ou seja, a função iria buscar por uma storage com o ID do player o.O

Te ajudei? Clique em  Gostei ! 

²²²d¬¬b²²²

 

 

"She's got a smile that it seems to me...."  ♪♪

Link para o post
Compartilhar em outros sites

não estou dizendo essa parte, eu tinha entendi de uma outa forma mas agr entendi oq tu quis dizer

 

só que vc tinha trocado 'getDataInt' por 'getDataString' só isso rsrs sendo que no banco de dados estava para "Select player_id"

 

player_id = number

 

number = getDataInt

 

name = getDataString

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
1 minuto atrás, Vodkart disse:

não estou dizendo essa parte, eu tinha entendi de uma outa forma mas agr entendi oq tu quis dizer

 

só que vc tinha trocado 'getDataInt' por 'getDataString' só isso rsrs sendo que no banco de dados estava para "Select player_id"

 

player_id = number

 

number = getDataInt

 

name = getDataString

 

Acho que funciona da mesma forma, pois meu script ta assim:
 

Citar

function getPlayersFromStorage(storage, value)
    local query = db.getResult("SELECT `player_id` FROM `player_storage` WHERE `key` = ".. storage .." AND `value` = ".. value)
    if (query:getID() ~= -1) then
        return getPlayerNameByGUID(query:getDataString("player_id"))
    end
    return false
end

 

E ta retornando o nome:
aaaaa.png

Te ajudei? Clique em  Gostei ! 

²²²d¬¬b²²²

 

 

"She's got a smile that it seems to me...."  ♪♪

Link para o post
Compartilhar em outros sites
6 minutos atrás, luangop disse:

 

Acho que funciona da mesma forma, pois meu script ta assim:
 

 

E ta retornando o nome:
aaaaa.png

 

vdd então varia de base pra base

no meu baiak se eu n identificar ele da erro.

mas td bem

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
1 minuto atrás, Vodkart disse:

 

vdd então varia de base pra base

no meu baiak se eu n identificar ele da erro.

mas td bem

^^

Bom meu sistema está funcionando graças a você, valeu mesmo!

Te ajudei? Clique em  Gostei ! 

²²²d¬¬b²²²

 

 

"She's got a smile that it seems to me...."  ♪♪

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo