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:

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!







info
Grupo: Marquês
Registrado: 05/07/09
Posts: 1.3k
Reputação: +732
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 enddata/talkactions/talkactions.xml
Abraços
Editado Dezembro 24 por Oneshot