Ir para conteúdo
  • 0

Talkaction que checa storage


roriscrave

Pergunta

Queria uma talkaction que checasse a storage e a quantidade dela.

como se fosse uma talkaction de !rank, so que ela deve checar a storage 10200 e a quantidade.

ao ser usado o comando !check aparece o livro escrito:

 

[NOME DO PLAYER] [QUANTIDADE STORAGE]

JOAO 10

MARIA 8

JOSE 1

 

Como podem ver, no nome do player deve aparecer os nomes dos jogadores que tem a storage (10200) e no quantidade deve mostrar o value da storage (quantidade de storage ele tem), deve ser ordenado da maior quantidade de storage para menor


consegui montar um script que pega o nome do player que tiver a storage 10200, agora tem que conseguir editar pra pegar o value da storage (quantidade)

script:

function onSay(cid, words, param)

        local query, msg = db.getResult("SELECT name FROM players WHERE id IN (SELECT 

player_id FROM player_storage WHERE key = 10200);"), ""
	

        if (query:getID() ~= -1) then
                while (true) do
                        local name = query:getDataString("name")
                        msg = msg..name.."\n"

                        if not(query:next()) then
                                break
                        end
                end
  end
        return doShowTextDialog(cid, param, msg) and true
end
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

 

function getRankStorage(cid, value, max, RankName) -- by vodka
local str =""
str = "--[".. (RankName == nil and "RANK STORAGE" or ""..RankName.."") .."]--\n\n"
local query = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..value.." ORDER BY cast(value as INTEGER) DESC;")
if (query:getID() ~= -1) then k = 1 repeat if k > max then break end
str = str .. "\n " .. k .. ". "..getPlayerNameByGUID(query:getDataString("player_id")).." - [" .. query:getDataInt("value") .. "]"
k = k + 1 until not query:next() end return doShowTextDialog(cid, 2529, str)
end
function onSay(cid, words, param)
local storage,name =  10200, "Rank Test"
return getRankStorage(cid, storage, 10, name)
end
Link para o comentário
Compartilhar em outros sites

  • 0

Funcionou 100%, vlw vodkart

so um edit, quando o player ganha storage 10200,1 e eu falar !check, vai mostrar que ele tem 0, porque a storage começa em -1

teria como somar +1 no script pra mostrar certinho?

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

  • 0
function getRankStorage(cid, value, max, RankName) -- by vodka
local str =""
str = "--[".. (RankName == nil and "RANK STORAGE" or ""..RankName.."") .."]--\n\n"
local query = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..value.." ORDER BY cast(value as INTEGER) DESC;")
if (query:getID() ~= -1) then k = 1 repeat if k > max then break end
str = str .. "\n " .. k .. ". "..getPlayerNameByGUID(query:getDataString("player_id")).." - [" .. query:getDataInt("value") + 1 .. "]"
k = k + 1 until not query:next() end return doShowTextDialog(cid, 2529, str)
end
function onSay(cid, words, param)
local storage,name =  10200, "Rank Test"
return getRankStorage(cid, storage, 10, name)
end

Identação pra quê, né? =P

Link para o comentário
Compartilhar em outros sites

  • 0

Funcionou 100%, vlw vodkart

so um edit, quando o player ganha storage 10200,1 e eu falar !check, vai mostrar que ele tem 0, porque a storage começa em -1

teria como somar +1 no script pra mostrar certinho?

 

 

é porque o~valor das storages só é mudado na db quando os jogadores deslogam ou quando o dá server save ._.

 

ah não ser que vc coloque para salvar os jogadores qndo usar o comando assim:

 

 

function getRankStorage(cid, value, max, RankName) -- by vodka
local str =""
str = "--[".. (RankName == nil and "RANK STORAGE" or ""..RankName.."") .."]--\n\n"
local query = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..value.." ORDER BY cast(value as INTEGER) DESC;")
if (query:getID() ~= -1) then k = 1 repeat if k > max then break end
str = str .. "\n " .. k .. ". "..getPlayerNameByGUID(query:getDataString("player_id")).." - [" .. query:getDataInt("value") .. "]"
k = k + 1 until not query:next() end return doShowTextDialog(cid, 2529, str)
end
function onSay(cid, words, param)
local storage,name =  10200, "Rank Test"
for _, pid in ipairs(getPlayersOnline()) do
doPlayerSave(pid)
end
return getRankStorage(cid, storage, 10, name)
end

Funcionou 100%, vlw vodkart

so um edit, quando o player ganha storage 10200,1 e eu falar !check, vai mostrar que ele tem 0, porque a storage começa em -1

teria como somar +1 no script pra mostrar certinho?

 

me passa o seu script que e arrumo pra vc ._.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...