Ir para conteúdo

Pesquisa Refinada


Posts Recomendados

Faaala pessoal, estive um pouco ausente, pois estava bem ocupado, tanto com as novidades que estão por vir no XTibia, quanto com a minha vida pessoal. Enfim, o que importa é que eu fiz esse script agora pouco, e eu acho que pode ser útil no seu OT Serv.

 

Como funciona: É um sistema de busca melhorado, você fala a talkaction junto com dois ou um parâmetro.

 

No caso de um único parâmetro é para checar quais são as possíveis buscas. Você poderá editar o script para adicionar mais buscas, mas eu fiz apenas de nome, nível e sexo. Então você fala !search check e isso aparecerá:

 

First param:

 

name

level

sex

 

Second param: Match result

 

Exemple: !search level,100

 

O que esta em negrito é o que você vai poder adicionar mais no script. Ensinarei no final como adicionar mais.

 

Quando você usar dois parâmetros, deve ser como o exemplo ali em cima. No exemplo acima, esta !search level,100 isso quer dizer que o script vai mostrar o nome dos jogadores que possuem o level 100.

 

Exemplos:

 

!search name,Demonbholder

 

Comentário: Inútil, pois só vai mostrar Demonbholder, caso ele exista, claro.

 

!search level,100

 

Comentário: Vai mostrar o nome dos jogadores nível 100.

 

!search sex,1

 

Comentário: Vai mostrar o nome dos jogadores do sexo masculino.

 

 

Talkaction

 

function getInformation(pa)

local n = {}
local pla = tonumber(db.getResult("SELECT `id` FROM `players` ORDER BY `id` DESC;"):getDataString("id"))
local t = {}

for i = 1, pla do
info = {"name", "level", "sex"}
for a, b in pairs(info) do
local data = db.getResult("SELECT `"..b.."` FROM `players` WHERE `id` = "..i..";"):getDataString(b)
table.insert(n, data)
end
table.insert(t, n)
n = {}
end

return pa and info or t
end

function onSay(cid, words, param)

local str = nil

if param == "" then
return TRUE, doPlayerSendCancel(cid, "Wrong param.")
end

if param == "check" then
for _, da in pairs(getInformation(TRUE)) do
str = str == nil and "First param: \n\n" .. da or str .. "\n" .. da
end
str = str .. "\n\nSecond param: Match result \n\nExemple: "..words.." level,100"
return doShowTextDialog(cid, 2160, str), TRUE
end

local par = string.explode(param, ",")

if par[2] == nil or par[2] == "" then
return TRUE, doPlayerSendCancel(cid, "Wrong param.")
end

local ta = {}

for z, a in pairs(getInformation()) do
for b, c in pairs(a) do
if table.find(getInformation(TRUE), par[1]) == b and c == par[2] then
table.insert(ta, getInformation()[z][1])
end
end
end

for _, d in pairs(ta) do
str = str == nil and d or str .. "\n" .. d
end

return str and doShowTextDialog(cid, 2160, str) or doPlayerSendTextMessage(cid, 4, "No players found."), TRUE
end

 

Crie um arquivo .lua em data/talkactions/scripts e cole o script acima. Depois vá em data/talkactions, abra o arquivo talkactions.xml e cole esta tag:

 

<talkaction words="!search" script="NomeDoArquivo.lua" />

 

 

Refinando ainda mais sua busca:

 

Ache esta linha no script:

 

{"name", "level", "sex"}

 

Para adicionar mais quesitos para a busca, siga o exemplo:

 

{"name", "level", "sex", "vocation", "cap"}

 

Os nomes dos quesitos são de acordo com a database do seu OT Serv.

 

 

Espero que tenha ficado claro, obrigado.

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

×
×
  • Criar Novo...