Ir para conteúdo

Bank Class Lib


Nostradamus

Posts Recomendados

Como todos já sabem por meio de meu keynote, estou saindo do OpenTibia, e resolvi preparar um último release, e claro, sem deixar tudo pronto, incentivando o desenvolvimento e para que as pessoas se virem um pouco sozinhas, resolvi criar um sistema de banco dinâmico, funcional em qualquer servidor, e sem uso de I/O ou mesmo LuaSQL.

 

Features

 

  • Função para depósito
  • Função para saque
  • Função para depositar tudo
  • Função para sacar tudo
  • Conversão dinâmica de dinheiro para a forma mais fácil (concedida de Jovial)
  • Transferência de quantias
  • Função para balanço bancário
  • Função de checagem de valor (para ver se é válido)
  • Função para pegar a quantidade de dinheiro que o jogador possui

 

Vamos então a essa classe:

 

Bank = {}
Bank.__index = Bank

STORAGE_BANK = 666


function Bank:getPlayerMoney(cid)
return ((getPlayerItemCount(cid, ITEM_CRYSTAL_COIN) * 10000) + (getPlayerItemCount(cid, ITEM_PLATINUM_COIN) * 100) + getPlayerItemCount(cid, ITEM_GOLD_COIN))
end

function Bank:isValidValue(value)
if ((type(value) == "number") and (value > 0)) then
	return TRUE
end
return FALSE
end

function Bank:getBalance(cid)
return getPlayerStorageValue(cid, STORAGE_BANK)
end

function Bank:doConvertMoney(value)
local crystal, platinum, gold
if (value >= 10000) then
	crystal = math.floor(value / 10000)
	value = value - (crystal * 10000)
else
	crystal = 0
end
if (value >= 100) then
	platinum = math.floor(value / 100)
	value = value - (platinum * 100)
else
	platinum = 0
end
if (value >= 0) then
	gold = value
else
	debug('[Bank:doConvertMoney] Unknown Error')
end
return gold, platinum, crystal
end

function Bank:doWithdraw(cid, value)
if ((self:isValidValue(value) == TRUE) and (self:getBalance(cid) >= value)) then	
	doPlayerAddMoney(cid, value)
	setPlayerStorageValue(cid, STORAGE_BANK, self:getBalance(cid) - value)
end
return FALSE
end

function Bank:doWithdrawAll(cid)
self:doWithdraw(cid, self:getPlayerMoney(cid))
return TRUE
end

function Bank:doDeposit(cid, value)
if ((self:isValidValue(value) == TRUE) and (self:getPlayerMoney(cid) >= value)) then
	doPlayerRemoveMoney(cid, value)
	setPlayerStorageValue(cid, self:getBalance(cid) + value)
end
return FALSE
end

function Bank:doDepositAll(cid)
self:doDeposit(cid, self:getPlayerMoney(cid))
return TRUE
end

function Bank:doTransfer(cid, name, value)
local target = getPlayerByName(name)
if ((self:isValidValue(value) == TRUE) and (self:getPlayerMoney(cid) >= value) and (isPlayer(target) == TRUE)) then
	self:doWithdraw(cid, self:getBalance(cid) - value)
	self:doDeposit(target, self:getBalance(target) + value)
end
return FALSE
end

 

Aqui vai um exemplo de pig bank que você dá use no mesmo e depois no dinheiro e este então, é depositado.

 

function onUse(cid, item, frompos, item2, topos)
local coins = {ITEM_GOLD_COIN, ITEM_PLATINUM_COIN, ITEM_CRYSTAL_COIN}
local coinValue = {[ITEM_GOLD_COIN] = 1, [ITEM_PLATINUM_COIN] = 100, [ITEM_CRYSTAL_COIN] = 10000}

if ((item2.type >= 0) and (isInArray(coins, item2.itemid) then
	Bank:doDeposit(cid, item2.type * coinValue[item2.itemid])
	doRemoveItem(item2.itemid, item2.type)
end
return FALSE
end

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

  • 2 weeks later...

Ja vi outros tópicos seus aqui e você é realmente um ótimo scripter... Mas nem todo mundo nasce sabendo; eu sei as pessoas devem aprender o um pouco sozinhas, mas não tem como aprender bem se aqueles que sabem não explicarem certo?

 

Legal da sua parte postar o script, mas parece meio egocentrico da sua parte simplesmente postar o script sem mais explicações como se fosse obrigação geral saber como proceder... desculpa, minha opinião.

Link para o comentário
Compartilhar em outros sites

Não é egocêntrismo de minha parte, acho até que é falta de vontade de sua, já que eu pelo menos quando não sei algo, não critico a pessoa que colaborou por não ter dado as devidas explicações, procuro saber como fazer em sites de busca até encontrar. Isso são apenas aplicações de funções, que as mesmas, se auto explicam por seus nomes claros (basta ter uma noção mínima de inglês). Além disso, eu já faz muito tempo que não posto nada 100% pronto, eu dou as ferramentas necessárias para se efetuar uma ação, e se a pessoa não possui o conhecimento para a utilização da mesma e nem mesmo quer ter, sugiro que nem use o que eu estou postando. É por isso que a comunidade OpenTibia brasileira não vai pra frente, querem tudo pronto, e isso, eu nunca irei dar, é como diz o ditado, ao invés de dar o peixe a um faminto, dê uma vara de pescar e o ensine a usá-la.

 

E não, não é obrigação de ninguém ter tais conhecimentos, mas se quer usar algo, tem que ao menos saber do que se trata ao invés de ficar dizendo coisas sem nexo algum.

Link para o comentário
Compartilhar em outros sites

Nostradamus,

você está 100% correto na parte em que diz:

É por isso que a comunidade OpenTibia brasileira não vai pra frente, querem tudo pronto, e isso, eu nunca irei dar

 

e nessa parte tb:

é como diz o ditado, ao invés de dar o peixe a um faminto, dê uma vara de pescar e o ensine a usá-la.

 

Bom eu seria muito grato a você se pudesse "me ensinar a pescar com a sua vara de pesca" pois eu gostaria e muito usar algo seu no meu OT, mas se for um incomodo, ou não for possível, eu me viro aqui e quem sabe eu aprendo a usar seu Script...

 

E galera,

com esse script do PIG BANK que ele fez para agente, ja explica uma boa parte, pois eu aprendi a fazer scripts foi olhando, e "decifrando" alguns scripts daqui mesmo do Xtibia...

 

 

FLWs e Nostradamus, boa sorte com seu emprego e que Deus ilumine seu caminho!

Link para o comentário
Compartilhar em outros sites

São questões de pontos de vista diferentes, a questão é que você sequer ensinou a usar a vara de pescar, jogo ela e falo "se virem", é seu jeito, eu entendo mas na minha opinião isso é egocêntrismo, se você não acha isso, a opinião é sua, não se pode fazer nada. Minha critica não foi com intenção de te ofender, isso é um fórum e procurei dar a minha opinião. Ninguém nasce sabendo, você também ja recebeu muita ajuda, esse papo "sempre fui auto-suficiente" não cola, seu braço não ia cair se você explicasse um pouco mais sobre como colocar o script em ação, e ali, nao falei por mim, eu to usando o script desde a primeira vez que eu vi, substitui pelo do Conde, que também era bom, mas nao se encaixou no meu Ot, falei porque mesmo pessoas iniciantes têm direito de usar bons scripts, mas qualquer um desanima quando procurar mais informações sobre como proceder e não acha... Enfim, o script é ótimo, ja agradeci por ter postado, mas ainda acho que ajuda nunca é de mais ;)

Link para o comentário
Compartilhar em outros sites

A questão é que eu não "joguei" as informações e pronto, eu apenas não fiz um script pronto de um NPC por exemplo, dei as funções para se realizar tal ato, assim como tem se as funções normais que você provavelmente conheçe pelo menos uma dezena.

 

Se quiser aprofundar no assunto, assim como eu fiz (uso Lua para muito mais coisa do que simplesmente OpenTibia), sugiro ler o conteúdo desses sites:

 

Site oficial da linguagem Lua

Lua em OpenTibia (textos por Nostradamus)

Link para o comentário
Compartilhar em outros sites

  • 1 year later...

ae manow valeu mesmo ae esse script eu ja colquei no meu ot 100% aprovado,voce devia de continuar investindo em ots

e os caras que querendo tudo pronto:

aprenda a usa e simplesmente faciu,porisso que existe o google

muito obrigado a todos fuis

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...