Ir para conteúdo
  • Cadastre-se

[Resolvido] [Pedido] Saque Máximo - NPC Bank


Posts Recomendados

Boa tarde...

Gostaria de saber se alguém sabe e se faria pra mim um Script de NPC que:

Limitasse o Saque Máximo do NPC Bank, como Caixa Eletrônicos comuns, exemplo...

Pedidos:

1- O valor máximo para se sacar é de 10000 gps, que após sacado o valor máximo o player não poder sacar novamente qualquer quantia durante 15 minutos...

2- Fazer com que também, se ir sacando picado, não tenha como burlar o "exhaust" de tempo de próximo saque'..

3- Ao colocar para sacar tudo, (withdraw > all), sacar ou 10000 gps (caso não tenha efetuado nenhum saque)...

ou então sacar o valor restante (caso já tenha efetuado algum saque no período de exhaust).

Ex: Sacou 5000gps, faz 5 minutos, ou seja, está dentro do Exhaust...Aí ele vai lá no NPC e digita para sacar tudo, automaticamente o NPC faz a conta de quanto ele sacou e diz que pode sacar somente 5000gps.

No caso, seria como Storage, o exhaust' (eu_acho)

:x

Caso precisem do Script do NPC, segue o mesmo abaixo:

local keywordHandler = KeywordHandler:new()

local npcHandler = NpcHandler:new(keywordHandler)

NpcSystem.parseParameters(npcHandler)

local talkState = {}

function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end

function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end

function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end

function onThink() npcHandler:onThink() end

function creatureSayCallback(cid, type, msg)

if(not npcHandler:isFocused(cid)) then

return false

end

local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

--------------------MESSAGES------------------------------------------------------------------------------

if (msgcontains(msg, 'deposit') or msgcontains(msg, 'depositar')) then

selfSay('Digite quanto deseja depositar.', cid)

talkState[talkUser] = 1

elseif (msgcontains(msg, 'withdraw') or msgcontains(msg, 'sacar')) then

selfSay('Digite quanto deseja sacar.', cid)

talkState[talkUser] = 3

elseif (msgcontains(msg, 'help') or msgcontains(msg, 'ajuda')) then

selfSay('Digite {balance} ou {extrato} para ver seu saldo em conta.', cid)

selfSay('Digite {deposit} ou {depositar} para depositar dinheiro a sua conta.', cid)

selfSay('Digite {withdraw} ou {sacar} para sacar dinheiro de sua conta (Limite de 100 reais a cada 15 minutos).', cid)

selfSay('Para {transferir}, {trocar notas},{trocar moedas} ou {sacar} sem limite de valor, precisara de um Cartao de Debito.', cid)

talkState[talkUser] = 15

elseif (msgcontains(msg, 'balance') or msgcontains(msg, 'extrato')) then

n = getPlayerBalance(cid)

selfSay('Voce possui '..n..' centavos em sua conta.', cid)

talkState[talkUser] = 0

----------------------DEPOSIT-------------------------------------------------------

elseif talkState[talkUser] == 1 then

if (msgcontains(msg, 'all') or msgcontains(msg, 'tudo')) then

n = getPlayerMoney(cid)

selfSay('Tem certeza que deseja depositar '..n..' centavos?', cid)

talkState[talkUser] = 2

else

n = getNumber(msg)

selfSay('Tem certeza que deseja depositar '..n..' centavos?', cid)

talkState[talkUser] = 2

end

elseif talkState[talkUser] == 2 then

if (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) then

if getPlayerMoney(cid) >= n then

doPlayerDepositMoney(cid,n)

selfSay('Deposito efetuado com sucesso.', cid)

selfSay('EXTRATO BANCARIO: Sua conta possui ' ..getPlayerBalance(cid)..' centavos disponiveis.', cid)

talkState[talkUser] = 0

else

selfSay('Voce nao tem esta quantidade de dinheiro.', cid)

end

else

selfSay('Volte sempre.', cid)

end

----------------------WITHDRAW-------------------------------------------------------------------------------------

elseif talkState[talkUser] == 3 then

if (msgcontains(msg, 'all') or msgcontains(msg, 'tudo')) then

n = getPlayerBalance(cid)

selfSay('Tem certeza que deseja sacar '..n..' centavos?', cid)

talkState[talkUser] = 4

else

n = getNumber(msg)

selfSay('Tem certeza que deseja sacar '..n..' centavos?', cid)

talkState[talkUser] = 4

end

elseif talkState[talkUser] == 4 then

if (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) then

if getPlayerBalance(cid) >= n then

doPlayerWithdrawMoney(cid, n)

selfSay(''..n..' centavos sacados com sucesso.', cid)

selfSay('EXTRATO BANCARIO: Sua conta possui ' ..getPlayerBalance(cid)..' centavos disponiveis.', cid)

talkState[talkUser] = 0

else

selfSay('Saldo insuficiente.', cid)

end

else

selfSay('Volte sempre.', cid)

end

end

end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

-- function maded by Gesior--

function getNumber(txt) --return number if its number and is > 0, else return 0

x = string.gsub(txt,"%a","")

x = tonumber(x)

if x ~= nill and x > 0 then

return x

else

return 0

end

end

Caso reste alguma dúvida, pergunte-me..

Desde já fico muito grato.

Editado por Adriano SwaTT (veja o histórico de edições)

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites

Esse npc ai ta estranho.

O isso significa?

if getPlayerBalance(cid) &--#62;= n then

 http://baiakuza.com/
IP: baiakuza.com
TIBIA: 10.96
Baiak Custom [ High Exp Rate ]

 

 

 

 

Link para o post
Compartilhar em outros sites

Esse npc ai ta estranho.

O isso significa?

if getPlayerBalance(cid) &--#62;= n then

eu que buguei o tópico qdo editei, vou consertar.

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites

UHAUH,

Percebi.



local keywordHandler = KeywordHandler:new()

local npcHandler = NpcHandler:new(keywordHandler)

NpcSystem.parseParameters(npcHandler)

local talkState = {}


function onCreatureAppear(cid)  npcHandler:onCreatureAppear(cid)  end

function onCreatureDisappear(cid)  npcHandler:onCreatureDisappear(cid)  end

function onCreatureSay(cid, type, msg)  npcHandler:onCreatureSay(cid, type, msg)  end

function onThink()  npcHandler:onThink()  end


function creatureSayCallback(cid, type, msg)

if(not npcHandler:isFocused(cid)) then

return false

end


local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid


--------------------MESSAGES------------------------------------------------------------------------------

if (msgcontains(msg, 'deposit') or msgcontains(msg, 'depositar')) then

selfSay('Digite quanto deseja depositar.', cid)

talkState[talkUser] = 1


elseif (msgcontains(msg, 'withdraw') or msgcontains(msg, 'sacar')) then

selfSay('Digite quanto deseja sacar.', cid)

talkState[talkUser] = 3


elseif (msgcontains(msg, 'help') or msgcontains(msg, 'ajuda')) then

selfSay('Digite {balance} ou {extrato} para ver seu saldo em conta.', cid)

selfSay('Digite {deposit} ou {depositar} para depositar dinheiro a sua conta.', cid)

selfSay('Digite {withdraw} ou {sacar} para sacar dinheiro de sua conta (Limite de 100 reais a cada 15 minutos).', cid)

selfSay('Para {transferir}, {trocar notas},{trocar moedas} ou {sacar} sem limite de valor, precisara de um Cartao de Debito.', cid)

talkState[talkUser] = 15


elseif (msgcontains(msg, 'balance') or msgcontains(msg, 'extrato')) then

n = getPlayerBalance(cid)

selfSay('Voce possui '..n..' centavos em sua conta.', cid)

talkState[talkUser] = 0



----------------------DEPOSIT-------------------------------------------------------

elseif talkState[talkUser] == 1 then

if (msgcontains(msg, 'all') or msgcontains(msg, 'tudo')) then

n = getPlayerMoney(cid)

selfSay('Tem certeza que deseja depositar '..n..' centavos?', cid)

talkState[talkUser] = 2

else

n = getNumber(msg)

selfSay('Tem certeza que deseja depositar '..n..' centavos?', cid)

talkState[talkUser] = 2

end


if getPlayerMoney(cid) >= n then

elseif talkState[talkUser] == 2 then

if (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) then

doPlayerDepositMoney(cid,n)

selfSay('Deposito efetuado com sucesso.', cid)

selfSay('EXTRATO BANCARIO: Sua conta possui ' ..getPlayerBalance(cid)..' centavos disponiveis.', cid)

talkState[talkUser] = 0

else

selfSay('Voce nao tem esta quantidade de dinheiro.', cid)

end

else

selfSay('Volte sempre.', cid)

end


----------------------WITHDRAW-------------------------------------------------------------------------------------


elseif talkState[talkUser] == 3 then

if (msgcontains(msg, 'all') or msgcontains(msg, 'tudo')) then

n = getPlayerBalance(cid)

selfSay('Tem certeza que deseja sacar '..n..' centavos?', cid)

talkState[talkUser] = 4

else

n = getNumber(msg)

selfSay('Tem certeza que deseja sacar '..n..' centavos?', cid)

talkState[talkUser] = 4

end


elseif talkState[talkUser] == 4 then

if (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) then

if getPlayerBalance(cid) >= n then

if (n < 10000) then

doPlayerWithdrawMoney(cid, n)

selfSay(''..n..' centavos sacados com sucesso.', cid)

selfSay('EXTRATO BANCARIO: Sua conta possui ' ..getPlayerBalance(cid)..' centavos disponiveis.', cid)

talkState[talkUser] = 0

else

selfSay('Voce só pode retirar 10000 por vez',cid)

end

else

selfSay('Saldo insuficiente.', cid)

end

else

selfSay('Volte sempre.', cid)

end



end



end


npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())




-- function maded by Gesior--

function getNumber(txt) --return number if its number and is > 0, else return 0

x = string.gsub(txt,"%a","")

x = tonumber(x)

if x ~= nill and x > 0 then

return x

else

return 0

end

end

toma ;D

 http://baiakuza.com/
IP: baiakuza.com
TIBIA: 10.96
Baiak Custom [ High Exp Rate ]

 

 

 

 

Link para o post
Compartilhar em outros sites

UHAUH,

Percebi.

local keywordHandler = KeywordHandler:new()

local npcHandler = NpcHandler:new(keywordHandler)

NpcSystem.parseParameters(npcHandler)

local talkState = {}


function onCreatureAppear(cid)  npcHandler:onCreatureAppear(cid)  end

function onCreatureDisappear(cid)  npcHandler:onCreatureDisappear(cid)  end

function onCreatureSay(cid, type, msg)  npcHandler:onCreatureSay(cid, type, msg)  end

function onThink()  npcHandler:onThink()  end


function creatureSayCallback(cid, type, msg)

if(not npcHandler:isFocused(cid)) then

return false

end


local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid


--------------------MESSAGES------------------------------------------------------------------------------

if (msgcontains(msg, 'deposit') or msgcontains(msg, 'depositar')) then

selfSay('Digite quanto deseja depositar.', cid)

talkState[talkUser] = 1


elseif (msgcontains(msg, 'withdraw') or msgcontains(msg, 'sacar')) then

selfSay('Digite quanto deseja sacar.', cid)

talkState[talkUser] = 3


elseif (msgcontains(msg, 'help') or msgcontains(msg, 'ajuda')) then

selfSay('Digite {balance} ou {extrato} para ver seu saldo em conta.', cid)

selfSay('Digite {deposit} ou {depositar} para depositar dinheiro a sua conta.', cid)

selfSay('Digite {withdraw} ou {sacar} para sacar dinheiro de sua conta (Limite de 100 reais a cada 15 minutos).', cid)

selfSay('Para {transferir}, {trocar notas},{trocar moedas} ou {sacar} sem limite de valor, precisara de um Cartao de Debito.', cid)

talkState[talkUser] = 15


elseif (msgcontains(msg, 'balance') or msgcontains(msg, 'extrato')) then

n = getPlayerBalance(cid)

selfSay('Voce possui '..n..' centavos em sua conta.', cid)

talkState[talkUser] = 0



----------------------DEPOSIT-------------------------------------------------------

elseif talkState[talkUser] == 1 then

if (msgcontains(msg, 'all') or msgcontains(msg, 'tudo')) then

n = getPlayerMoney(cid)

selfSay('Tem certeza que deseja depositar '..n..' centavos?', cid)

talkState[talkUser] = 2

else

n = getNumber(msg)

selfSay('Tem certeza que deseja depositar '..n..' centavos?', cid)

talkState[talkUser] = 2

end


if getPlayerMoney(cid) &--#62;= n then

elseif talkState[talkUser] == 2 then

if (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) then

doPlayerDepositMoney(cid,n)

selfSay('Deposito efetuado com sucesso.', cid)

selfSay('EXTRATO BANCARIO: Sua conta possui ' ..getPlayerBalance(cid)..' centavos disponiveis.', cid)

talkState[talkUser] = 0

else

selfSay('Voce nao tem esta quantidade de dinheiro.', cid)

end

else

selfSay('Volte sempre.', cid)

end


----------------------WITHDRAW-------------------------------------------------------------------------------------


elseif talkState[talkUser] == 3 then

if (msgcontains(msg, 'all') or msgcontains(msg, 'tudo')) then

n = getPlayerBalance(cid)

selfSay('Tem certeza que deseja sacar '..n..' centavos?', cid)

talkState[talkUser] = 4

else

n = getNumber(msg)

selfSay('Tem certeza que deseja sacar '..n..' centavos?', cid)

talkState[talkUser] = 4

end


elseif talkState[talkUser] == 4 then

if (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) then

if getPlayerBalance(cid) &--#62;= n then

if (n &--#60; 10000) then

doPlayerWithdrawMoney(cid, n)

selfSay(''..n..' centavos sacados com sucesso.', cid)

selfSay('EXTRATO BANCARIO: Sua conta possui ' ..getPlayerBalance(cid)..' centavos disponiveis.', cid)

talkState[talkUser] = 0

else

selfSay('Voce só pode retirar 10000 por vez',cid)

end

else

selfSay('Saldo insuficiente.', cid)

end

else

selfSay('Volte sempre.', cid)

end



end



end


npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())




-- function maded by Gesior--

function getNumber(txt) --return number if its number and is &--#62; 0, else return 0

x = string.gsub(txt,"%a","")

x = tonumber(x)

if x ~= nill and x &--#62; 0 then

return x

else

return 0

end

end

toma ;D

Não testei ainda... porém, olhando por cima, você fez só o de Saque Máximo né?

Ja testo e edito.

Abraços e muito obrigado, na volta te dou REP+'

@@EDIT'

Então, ficou certo só o primeiro, de sacar só valores menores que 10000gps, no entanto pode efetuar o saque deste valores várias vezes seguidas...

O que eu queria é tipo um Storage que sumisse após o tempo, e esta bloqueá-se o player de sacar dinheiro enquanto estivesse ativa no mesmo'

Abraços & valeu mesmo ae a intenção'

Editado por Adriano SwaTT (veja o histórico de edições)

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites

Toma preguiçosinho uhauh,



local keywordHandler = KeywordHandler:new()

local npcHandler = NpcHandler:new(keywordHandler)

NpcSystem.parseParameters(npcHandler)

local talkState = {}


function onCreatureAppear(cid)  npcHandler:onCreatureAppear(cid)  end

function onCreatureDisappear(cid)  npcHandler:onCreatureDisappear(cid)  end

function onCreatureSay(cid, type, msg)  npcHandler:onCreatureSay(cid, type, msg)  end

function onThink()  npcHandler:onThink()  end


function creatureSayCallback(cid, type, msg)

if(not npcHandler:isFocused(cid)) then

return false

end


local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid




--------------------MESSAGES------------------------------------------------------------------------------

if (msgcontains(msg, 'deposit') or msgcontains(msg, 'depositar')) then

selfSay('Digite quanto deseja depositar.', cid)

talkState[talkUser] = 1


elseif (msgcontains(msg, 'withdraw') or msgcontains(msg, 'sacar')) then

selfSay('Digite quanto deseja sacar.', cid)

talkState[talkUser] = 3


elseif (msgcontains(msg, 'help') or msgcontains(msg, 'ajuda')) then

selfSay('Digite {balance} ou {extrato} para ver seu saldo em conta.', cid)

selfSay('Digite {deposit} ou {depositar} para depositar dinheiro a sua conta.', cid)

selfSay('Digite {withdraw} ou {sacar} para sacar dinheiro de sua conta (Limite de 100 reais a cada 15 minutos).', cid)

selfSay('Para {transferir}, {trocar notas},{trocar moedas} ou {sacar} sem limite de valor, precisara de um Cartao de Debito.', cid)

talkState[talkUser] = 15


elseif (msgcontains(msg, 'balance') or msgcontains(msg, 'extrato')) then

n = getPlayerBalance(cid)

selfSay('Voce possui '..n..' centavos em sua conta.', cid)

talkState[talkUser] = 0



----------------------DEPOSIT-------------------------------------------------------

elseif talkState[talkUser] == 1 then

if (msgcontains(msg, 'all') or msgcontains(msg, 'tudo')) then

n = getPlayerMoney(cid)

selfSay('Tem certeza que deseja depositar '..n..' centavos?', cid)

talkState[talkUser] = 2

else

n = getNumber(msg)

selfSay('Tem certeza que deseja depositar '..n..' centavos?', cid)

talkState[talkUser] = 2

end


if getPlayerMoney(cid) >= n then

elseif talkState[talkUser] == 2 then

if (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) then

doPlayerDepositMoney(cid,n)

selfSay('Deposito efetuado com sucesso.', cid)

selfSay('EXTRATO BANCARIO: Sua conta possui ' ..getPlayerBalance(cid)..' centavos disponiveis.', cid)

talkState[talkUser] = 0

else

selfSay('Voce nao tem esta quantidade de dinheiro.', cid)

end

else

selfSay('Volte sempre.', cid)

end


----------------------WITHDRAW-------------------------------------------------------------------------------------


local storage = 25000



elseif talkState[talkUser] == 3 then

if (msgcontains(msg, 'all') or msgcontains(msg, 'tudo')) then

n = getPlayerBalance(cid)

selfSay('Tem certeza que deseja sacar '..n..' centavos?', cid)

talkState[talkUser] = 4

else

n = getNumber(msg)

selfSay('Tem certeza que deseja sacar '..n..' centavos?', cid)

talkState[talkUser] = 4

end


elseif talkState[talkUser] == 4 then

if (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) then

if getPlayerBalance(cid) >= n then

if (n < 10000) then

if (getPlayerStorageValue(cid, storage) <= os.time()) then

doPlayerWithdrawMoney(cid, n)

setPlayerStorageValue(cid, storage, os.time()+60)

selfSay(''..n..' centavos sacados com sucesso.', cid)

selfSay('EXTRATO BANCARIO: Sua conta possui ' ..getPlayerBalance(cid)..' centavos disponiveis.', cid)

talkState[talkUser] = 0

else

selfSay('Você só pode retirar outro valor daqui 60 segundos',cid)

end

else

selfSay('Voce só pode retirar 10000 por vez',cid)

end

else

selfSay('Saldo insuficiente.', cid)

end

else

selfSay('Volte sempre.', cid)

end



end



end


npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())




-- function maded by Gesior--

function getNumber(txt) --return number if its number and is > 0, else return 0

x = string.gsub(txt,"%a","")

x = tonumber(x)

if x ~= nill and x > 0 then

return x

else

return 0

end

end

Tava com preguiça, de fazer perfeito .. ai eu fiz de qualquer jeito ;D

 http://baiakuza.com/
IP: baiakuza.com
TIBIA: 10.96
Baiak Custom [ High Exp Rate ]

 

 

 

 

Link para o post
Compartilhar em outros sites

Opaah, muito bom man'

Muito obrigado mesmo, rep+ :accept:

[PODEM FECHAR AQUI]

Abraços'

Editado por Adriano SwaTT (veja o histórico de edições)

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo