Fala pessoal, tava um tempo sem postar aqui, mas fiz uma função que eu tava precisando e decidi compartilhar com vocês.
Sabe quando você precisa adicionar um item ou fazer qualquer outra coisa a um jogador mas ele está offline? Então, eu fiz uma função que vai resolver esse problema.
Para começar, você adiciona uma nova tabela na sua database:
CREATE TABLE `functions` (`player_guid` int(11), `function` text);
Depois, você adiciona na lib estas duas funções:
function doAddNewFunc(guid, func)
db.executeQuery("INSERT INTO `functions` (`player_guid`, `function`) VALUES (" .. guid .. ", '" .. func .. "');")
end
function getNewFunc(guid)
local query = db.getResult("SELECT `function` FROM `functions` WHERE `player_guid` = " .. guid .. ";")
while query:getID() ~= -1 do
loadstring(query:getDataString('function'))()
db.executeQuery("DELETE FROM `functions` WHERE `player_guid` = " .. guid .. " LIMIT 1;")
query = db.getResult("SELECT `function` FROM `functions` WHERE `player_guid` = " .. guid .. ";")
end
end
Identado no pastebin.
Por último, vá no login.lua e coloque getNewFunc(getPlayerGUID(cid)).
Sempre que você quiser usar uma função e não puder porque o jogador está offline, você usa, por exemplo:
doAddNewFunc(getPlayerGUID(cid), 'doPlayerAddItem(getPlayerByGUID(' .. getPlayerGUID(cid) .. '), 2160, 100)')
Ai quando o jogador entrar, a função getNewFunc vai executar a função acima. Lembrando que você não deve colocar variáveis dentro da string, sempre fora.
O script adiciona na tabela da database, uma coluna com o guid e a função em forma de string que você colocou. Depois, quando o jogador entrar no jogo, ele pega a função que foi colocada na database e executa ela.
É isso, agradeço ao kydrai por me ajudar com as querys. Valeu.