Ir para conteúdo

Search Item


Oneshot

Posts Recomendados

Nome: Search Item

Tipo: Talkaction

Autor: Oneshot

 


 

Essa é uma talkaction que percorre todo o banco de dados a procura de um certo item X e retorna uma lista dos jogadores, tanto online como offline que possuam esse item.

 


 

data/talkactions/scripts/searchitem.lua


function onSay(cid, words, param, channel)
param = tonumber(param) or ""
if param == "" then
	return doPlayerSendCancel(cid, words .." [itemid]")
end

local result = db.getResult("SELECT name, online FROM players WHERE id IN (SELECT player_id FROM player_items WHERE itemtype = ".. param ..");")

local msg = "Resultados da busca pelo item ".. param .." em seu banco de dados:\n\n"
if result:getID() ~= -1 then
	while true do
		local name = result:getDataString("name")
		local online = result:getDataInt("online")

		msg = msg .. name .." [".. (online == 1 and "Online" or "Offline") .."]\n"
		if not result:next() then
			break
		end
	end
else
	msg = msg .. "O item não foi encontrado em nenhum jogador."
end
doShowTextDialog(cid, param, msg)
return true
end

 

data/talkactions/talkactions.xml

<talkaction words="/searchitem" access="5" event="script" value="searchitem.lua"/>

 


 

Abraços

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

Nome: Search Item

Tipo: Talkaction

Autor: Oneshot

 


 

Essa é uma talkaction que percorre todo o banco de dados a procura de um certo item X e retorna uma lista dos jogadores, tanto online como offline que possuam esse item.

 


 

data/talkactions/scripts/searchitem.lua


function onSay(cid, words, param, channel)
param = tonumber(param) or ""
if param == "" then
	return doPlayerSendCancel(cid, words .." [itemid]")
end

local result = db.getResult("SELECT name, online FROM players WHERE id = (SELECT player_id FROM player_items WHERE itemtype = ".. param ..");")

local msg = "Resultados da busca pelo item ".. param .." em seu banco de dados:\n\n"
if result:getID() ~= -1 then
	while true do
		local name = result:getDataString("name")
		local online = result:getDataInt("online")

		msg = msg .. name .." [".. (online == 1 and "Online" or "Offline") .."]\n"
		if not result:next() then
			break
		end
	end
else
	msg = msg .. "O item não foi encontrado em nenhum jogador."
end
doShowTextDialog(cid, param, msg)
return true
end

 

data/talkactions/talkactions.xml

<talkaction words="/searchitem" access="5" event="script" value="searchitem.lua"/>

 


 

Abraços

 

 

Ola, eu testei seu script e o mesmo esta dando erro quando eu faço a busca do item, aparece essa tela:

 

demonshieldq.png

 

 

E no console aparece esse erro.

[24/12/2012 13:28:57] mysql_real_query(): SELECT name, online FROM players WHERE id = (SELECT player_id FROM player_items WHERE itemtype = 2463); - MYSQL ERROR: Subquery returns more than 1 row (1242)

 

ja testei outros itens e todos nao localizam, abraços!

Link para o comentário
Compartilhar em outros sites

Eu cometi um erro extremamente grotesco quanto a query de busca no banco de dados. Agora está consertado.

 

Abraços.

 

Fico no aguardo, obrigado!

 

No momento da postagem, eu já havia consertado rsrs.

 

Abraços.

Link para o comentário
Compartilhar em outros sites

Funcionou perfeitamente!

 

+REP assim que liberar... cara você é muito foda!

 

Por favor, quando você tiver um tempo livre da uma passadinha no meu tópico, creio que seja coisa simples pra você, preciso muito da sua ajuda.

 

http://www.xtibia.co...epois-de-3-min/

 

Abraços e parabéns pelo script!

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

×
×
  • Criar Novo...