Demonbholder 420 Postado Maio 7, 2011 Share Postado Maio 7, 2011 (editado) Faaala pessoal, tudo bem? Fiz uma função hoje a tarde a pedido de um amigo, e também vi que muita gente pedia algo assim, logo eu resolvi faze-la. Como funciona: A função faz um storage aumentar de tanto em tanto até um certo valor de tantos em tantos segundos. Você deve usar a função de seguinte maneira: doStorageCount(storage, guid, amount, max, time) Azul: Escolha um storage. Exemplo: 40000 Vermelho: Guid do jogador, ou seja, o número dele na database. Caso o jogador esteja online, o guid pode ser descoberto a partir da função getPlayerGUID(cid) Verde: Escolha de quanto em quanto o storage vai aumentar/diminuir. Laranja: Escolha o máximo que o storage vai chegar. Cinza: Escolha de quanto em quanto tempo vai aumentar/diminuir o storage. *Sim, você pode usar número negativos! OBS: O storage vai partir do número 0. Função: function doStorageCount(storage, guid, count, max, time, twi) cid = nil if (type(storage) or type(guid) or type(count) or type(max) or type(time)) ~= "number" or time <= 0 then return error("Wrong param.") end if isOnline(guid) then for _, pid in pairs(getPlayersOnline()) do if getPlayerGUID(pid) == guid then cid = pid break end end alfa = twi == 1 and getPlayerStorageValue(cid, storage) or 0 setPlayerStorageValue(cid, storage, alfa + count) else beta = twi == 1 and tonumber(db.getResult("SELECT `value` FROM `player_storage` WHERE `player_id` = ".. guid .." AND `key` = ".. storage ..";"):getDataString("value")) or 0 db.executeQuery("UPDATE `player_storage` SET `value` = ".. beta + count .." WHERE `player_id` = ".. guid .." AND `key` = ".. storage ..";") end local data = isOnline(guid) and alfa or beta if math.abs(data) + math.abs(count) < math.abs(max) then addEvent(doStorageCount, time*1000, storage, guid, count, max, time, 1) end return TRUE end OBS: twi não é usado ao usar a função, apenas no addEvent da própria função. Exemplo de uso: function onSay(cid, words, param) return TRUE, doStorageCount(40000, getPlayerGUID(cid), 2, 10, 1) end Vai ser executada assim: Segundos Valor Inicio 0 1 2 2 4 3 6 4 8 *Cuidado para não usá-la duas vezes antes dela finalizar o máximo, pois pode causar bugs. Bom, então é isso galera, espero que usem. Até mais. Editado Maio 20, 2011 por Demonbholder Link para o comentário Compartilhar em outros sites More sharing options...
thalia 280 Postado Maio 8, 2011 Share Postado Maio 8, 2011 AEE, demonbholder. OPAKSDOKAOKDHUAUHDAUHD (: Voce merece milhões de rep XD :button_ok: Link para o comentário Compartilhar em outros sites More sharing options...
Slicer 1070 Postado Maio 8, 2011 Share Postado Maio 8, 2011 UHAUHAUH tava atras de uma function assim semana passada -pro sistema de food '-'-.. e como nao achei tive q criar ela eu ms uU muito bem feita a sua function.. a minha ta bem mais simples e um pouco diferente mas acaba dando no ms '-' Good Job Link para o comentário Compartilhar em outros sites More sharing options...
Demonbholder 420 Postado Maio 8, 2011 Autor Share Postado Maio 8, 2011 Hmm valeu, se alguém precisar de alguma função me comunique por mensagem privada e se eu conseguir, a farei. Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados