Ir para conteúdo

[Função] Dostoragecount(Storage, Guid, Amount, Max, Delay)


Posts Recomendados

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 por Demonbholder
Link para o comentário
Compartilhar em outros sites

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 :thumbsupsmiley:

Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...