Ir para conteúdo

Doaddnewfunc(Guid, Func), Getnewfunc(Guid)


Posts Recomendados

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.

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

×
×
  • Criar Novo...