Ir para conteúdo

[Pedido] Saque Máximo - Npc Bank


gonorreiaswat

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.

 

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) &--#62;= 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) &--#62;= 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 &--#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

 

 

 

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

 

Desde já fico muito grato.

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

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
SAQUES = SAQUES or {}

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 doCleanSaques(cid)
if SAQUES[cid] ~= nil then
SAQUES[cid] = nil
return true
end
return false
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
SAQUES[cid] = SAQUES[cid] or 0

--------------------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) &--#62;= 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 SAQUES[cid] >= 10000 then
selfSay('Voce nao pode mais sacar nada, espere ate sua conta ser liberada novamente', cid)
return true
end
if (msgcontains(msg, 'all') or msgcontains(msg, 'tudo')) then
n = math.max(10000 - SAQUES[cid], getPlayerBalance(cid))
selfSay('Tem certeza que deseja sacar '..n..' centavos?', cid)
talkState[talkUser] = 4 
else
n = math.max(10000 - SAQUES[cid], 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
doPlayerWithdrawMoney(cid, n)
SAQUES[cid] = SAQUES[cid] and SAQUES[cid] + n or n
if SAQUES[cid] == 10000 then
selfSay('Voce exedeu seu limite de saque, aguarde 15 minutos para poder sacar novamente.', cid)
addEvent(doCleanSaques, 15 * 60 * 1000, cid)
end
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 &--#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

 

Nao testei.

Link para o comentário
Compartilhar em outros sites

Ficou alguns erros no Script, mas não é culpa sua, é porque o meu post bugou...

Enfim, eu arrumei eles..

 

No entanto, o Script funfou até...

Ele faz um saque por vez e tals... mas da pra por pra sacar tudo'

:T

 

Eu queria limitar o saque..

Mas creio que não precise, se conseguir por para quando o player falar "all" ou "tudo" ser como se ele tivesse falado 5000, já está ótimo pra mim...

De resto eu fiz.

 

Pode postar só a parte do Withdraw, nem precisa postar o Script inteiro

 

@@EDIT'

Não precisa mais, já consegui limitar...

MUITO OBRIGADO'

 

abraços e obrigado'

 

TÓPICO RESOLVIDO'

 

PODEM FECHÁ-LO'

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

×
×
  • Criar Novo...