Postado Março 12, 2012 13 anos 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 Março 12, 2012 13 anos 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.
Postado Março 12, 2012 13 anos 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 ]
Postado Março 12, 2012 13 anos Autor 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.
Postado Março 12, 2012 13 anos 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 http://baiakuza.com/IP: baiakuza.com TIBIA: 10.96 Baiak Custom [ High Exp Rate ]
Postado Março 12, 2012 13 anos Autor 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 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 Março 12, 2012 13 anos 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.
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.