Forums » RPG Maker XP

Banco contemporâneo (por pictures)

    • 404 posts
    28 de maio de 2015 12:38:45 ART

    Imagem Postada

     

    Imagem Postada

    Nome do sistema: Banco contemporâneo
    Criador: Axel Steel
    Versão atual: 1.0
    Nível de dificuldade: Intermediário
    Descrição: Como o próprio nome já diz, trata-se de um sistema de banco atual, moderno. A intenção é trazer um pouco da realidade do nosso cotidiano aos jogos através desse sistema de banco que se baseia nos bancos contemporâneos. Para tanto, o sistema conta com algumas funções além de depositar e sacar.


     

    Imagem Postada

    Esse sistema conta com os seguintes componentes:
    - Máquina de banco por pictures (com comentários dentro do evento para orientar quem for ver o evento);
    - Máquina de banco por escolhas 1 (sem comentários dentro do evento);
    - Máquina de banco por escolhas 2 (com comentários dentro do evento para orientar quem for ver o evento);
    - Loja por pictures simples;
    - Uma quest para ilustrar a utilidade de "Transferência bancária";
    - Sistema de calendário simples.

    Sendo que cada máquina de banco dessas possui as seguintes funções:
    - Saque;
    - Depósito;
    - Visualizar saldo;
    - Empréstimo bancário - com dois planos, um em juros simples e outro em juros compostos;
    - Aplicação financeira - com dois planos, um em juros simples e outro em juros compostos;
    - Transferência bancária;
    - Cartão de crédito.


     

    Imagem Postada

    Nº de switchs: 32
    Nº de variáveis: 25
    Nº de eventos comuns: 3
    Itens criados: 7
    Nº de eventos significativos: 7
    Nº de pictures: 69


     

    Imagem Postada


    Vou tentar explicar um pouco (sem entrar muito na parte técnica, isso você vai ver nos comentários dos eventos das máquinas da demo) como funciona cada função do banco. Sugiro que você tenha noções básicas de matemática financeira para entender como funcionam as funções de empréstimo e aplicação.

    Spoiler Saque 

    A operação de saque é bem simples e comum nos sistemas de banco feitos pro RPG Maker. Basicamente, quando o player entra nela, ele deve inserir a quantia que deseja sacar. Após inserir, o evento vai verificar se a variável que indica o capital depositado do player é maior do que a quantia que ele quer sacar. Ou seja, vai verificar se o player possui dinheiro depositado suficiente para sacar quando deseja. Caso ele possua, o dinheiro dele vai aumentar de acordo com quanto ele solicitou e a variável que indica o valor depositado vai reduzir também de acordo com quanto ele solicitou. Caso ele não possua,  a máquina irá comunicar a ele que ele não possui dinheiro depositado suficiente e ele retornará para o menu.



    Spoiler Depósito 

    A operação de depósito também é bem típica e útil. Quando o player acessa ela, ele insere um valor que deseja depositar no banco. Após isso, o banco vai verificar se ele possui dinheiro suficiente para depositar quanto deseja. Caso ele possua, o dinheiro dele vai reduzir conforme solicitou e o valor depositado dele vai aumentar, também conforme solicitou. Caso ele não possua, será informado que não possui dinheiro suficiente e voltará para o menu de operações.



    Spoiler Visualizar saldo 

    Essa operação é bem simples. Ela funciona simplesmente exibindo três variáveis ao player: Valor depositado, Capital disponível e Montante do empréstimo (caso ele tenha um). Para mostrar o valor depositado, eu só exibo por meio de mensagem o valor da variável responsável (no caso, eu digito na mensagem: \v[1]). Já para capital disponível, eu atualizo o valor da variável antes de exibir. Isto é, atribuo a essa variável o dinheiro que o player possui no momento. Sempre que ele for trabalhar com a variável do capital disponível, tem que atualizar com a quantia do player no momento. Por último, o montante do empréstimo pode ser calculado na hora da consulta (no caso de juros simples) ou calculado diariamente (cada dia que passa, sendo atualizado) e só exibido na hora da consulta (no caso de juros compostos). Não vou entrar muito em detalhes sobre isso aqui. Caso queira entender melhor, vá para a parte de Empréstimo bancário.



    Spoiler Empréstimo bancário 

    Aqui já fica um pouco mais complexo. Dentro de empréstimo existem 3 possibilidades: solicitar empréstimo, pagar empréstimo e ver dados do empréstimo.

    Solicitar empréstimo: o player insere a quantia que quer emprestado. Após isso, ele escolhe o plano de empréstimo que quer: juros simples de 1% ou juros compostos de 0,95%, ambos diários. Após escolher, é ativada as switchs que indicam que o player possui um empréstimo e qual seu tipo e aumenta-se o dinheiro do player conforme a quantia que ele pediu emprestado. Nesse momento também iguala o montante do empréstimo com o capital solicitado. Isso porque o montante inicialmente é igual o capital.
    M = C + J, onde M = montante, C = capital e J = juros.
    Se J = 0 (é o caso, ainda não passou tempo para atribuir juros), então
    M = C
    Com o tempo, o valor do montante será alterado conforme a taxa e aí ele vai se diferenciar do capital solicitado para empréstimo. Com isso, o empréstimo já está solicitado. Vale lembrar que após solicitar um empréstimo, o player possui 15 dias para pagar (você pode alterar essa data). Caso chegue o 15º dia e ele possua capital disponível ou depositado suficiente para pagar a quantia automaticamente, será removido do capital disponível ou depositado dele o valor do montante resultante. Caso ele não possua, o jogo dará game over.

    Pagar empréstimo: Caso o player possua um empréstimo do tipo A (juros simples de 1%), o valor do montante a ser pago tem que ser calculado na hora. Na verdade, não temque ser, mas é mais fácil. A maneira de calcular é se baseando na fórmula para cálculo de juros simples:
    J = C x i x t, onde J = juros, C = capital, i = taxa e t = tempo.
    O único valor fixo desses (não significa que você não pode mudar, você pode colocar o valor que quiser) é a taxa, que é 1%, ou seja, 0,01 (1% = 0,01). Como o RPG Maker não aceita fazer operações com números decimais, eu multiplico o capital por 1 (essa operação é desnecessária pra taxa de 1%, eu sei, mas caso você queira alterar, é só você mudar o valor) e depois divido por 100, resultando 0,01. Se a taxa fosse 20%, por exemplo, teria que multiplicar por 20 e depois dividir por 100, chegando a 0,2. Se fosse 0,5%, teria que multiplicar por 5 e depois dividir por 1000, chegando a 0,005, e por aí vai. Após multiplicar o capital pela taxa, agora temos que multiplicar o capital pelo tempo. Aí é simples, só multiplicar as duas variáveis, sendo que a variável de tempo aumenta 1 unidade cada dia. Pronto, já temos o valor dos juros. Mas ainda temos que chegar ao montante. Então, só somamos esses juros ao capital e chegamos (M = C + J).

    Agora, caso o empréstimo seja do tipo B, eu também deveria calcular o valor do montante na hora, certo? A fórmula de juros compostos é:
    M = C x (1+i), sendo (1+i) elevado a t, onde M = montante, C = capital, i = taxa e t = tempo.
    Aí está o problema: (1+i) elevado a t. O RPG Maker não faz potenciação. Mas uma potenciação nada mais é do que multiplicar um número por ele mesmo determinadas vezes. No caso, multiplicar (1+i) por si mesmo t vezes. Logo, toda vez que t aumenta, eu tenho que multiplicar (1+i) por si mesmo e t aumenta quando um dia passa. Ou seja, eu faço (1+i) multiplicar por si mesmo no evento do calendário, quando o player passa um dia no jogo. Ok, então para completar a conta do valor do montante, resta multiplicar (1+i) por C. Eu faço isso também quando o player passa de dia. Então, realizo as duas operações de uma vez só. E aí, quando o player vai ver os dados do empréstimo ou pagar, eu só exibo a ele o valor das variáveis naquele momento. Para exibir o valor dos juros, basta calcular na hora usando a fórmula J = M - C. Ou seja, eu igualo os juros ao montante e depois subtraio o capital, chegando ao valor dos juros. O juros do tipo B, todavia, possui algumas limitações. Para conferir do que estou falando, vá até a parte de "Observações" desse tópico.

    Depois de calcular o valor do montante, basta agora reduzir o dinheiro do player de acordo com o montante, caso ele possua dinheiro suficiente para pagar. Depois é fazer o processo de quitar a dívida, ou seja, restaurar as variáveis e switchs envolvidas às suas condições iniciais. Então, zera-se as variáveis de montante, juros, data do empréstimo (tempo), valor para empréstimo (capital) e desativa as switchs do empréstimo. Assim, o player está apto a solicitar outro empréstimo se quiser.

    Ver dados do empréstimo: não vou explicar como funciona porque é o mesmo procedimento do pagar empréstimo. Então, leia o pagar empréstimo desconsiderando o último parágrafo, já que nessa opção simplesmente exibe o valor das variáveis ao player, não oferece a ele a possibilidade de pagar a dívida.



    Spoiler Aplicação financeira 

    Dentro de aplicação financeira, existem 3 opções:
    Aplicar quantia: o player se quer aplicar a quantia a partir do capital disponível ou do depositado. Após isso, escolhe se quer aplicar num plano de juros simples de 0,75% ou um de juros compostos de 0,73%, ambos diários. Ativa então as switchs responsáveis pela aplicação e iguala a variável de montante à variável de capital, já que no momento da aplicação, M = C (M = C + J, se J = 0, M = C). Também, reduz o capital disponível ou depositado (o que o player escolher) de acordo com quanto ele aplicou.

    Visualizar dados da aplicação: a ideia aqui é a mesma de Ver dados do empréstimo. Então, para entender como funciona, dá uma olhada na parte de Empréstimo desse tópico.

    Mover quantia aplicada para depósito: primeiro, se faz o mesmo procedimento de visualizar dados da aplicação, só para mostrar quanto o player acumulou nesse tempo que deixou, e depois oferece-se a ele a possibilidade de mover o montante acumulado para depósito. Ele pode mover ou deixar para continuar rendendo. Caso ele tenha escolhido mover, aumenta o capital depositado de acordo com o montante acumulado. Depois, desativa as switchs e zera as varáveis da aplicação.



    Spoiler Transferência bancária 

    O player primeiramente insere a conta para qual ele quer transferir.
    Na demo existe uma quest em que o player encontra um amigo dele e decide transferir uma quantia para a conta desse amigo para ajudá-lo financeiramente. A conta do amigo é 12345678. Então, após o player inserir a conta que quer transferir, o evento confere se ela é a conta 12345678. Se não for, confere se é a conta do player (se ele inseriu a sua própria conta), e aí, caso seja, informa que a conta em questão é a própria. Se também não for, aí informa que a conta não existe. Você pode criar mais condições aqui, se criar mais quests. Aí você coloca a condição se o valor inserido é igual o da conta da sua quest.

    Enfim, caso o player tenha inserido 12345678, verifica-se se o player já completou a quest ou se nem pegou ela. Nesse caso, vai dizer que a conta não está recebendo transferência no momento. Caso não tenha completado e  tenha pego a quest, a máquina pede pra ele inserir a quantia que quer transferir. Após inserir, a máquina verifica se ele possui capital depositado suficiente para transferir tal quantia. Caso possua, o capital depositado dele reduz conforme quer transferir e a switch que indica que ele completou a quest se ativa, aí quando ele for falar com o NPC novamente, vai pegar a recompensa. Caso não possua, a máquina irá informar ele.



    Spoiler Cartão de crédito 

    Dentro de cartão de crédito existem 3 opções:
    Solicitar um cartão de crédito: verifica-se primeiro se o player já possui o item cartão de crédito. Caso ele possua, não pode solicitar. Caso ele não possua, a máquina vai só exibir as condições pra ele e dar o item Cartão de crédito a ele. Nas condições está dizendo que o player possui um limite de 15.000 G para gastar com o cartão de crédito e que ele tem que pagar o quanto gastou em até 15 dias. Toda vez que ele paga, o cartão é renovado com a quantia de 15.000 G e a data da renovação zera. Se ele não pagar nos 15 dias, o jogo irá verificar se ele possui capital disponível ou depositado para pagar automaticamente. Caso não possua, dará game over. Caso passe 15 dias e ele não tenha gastado nada, o jogo não informa nada, mas a partir daí, quanto ele for tentar comprar algo no cartão, não conseguirá, pois terá que renovar antes de comprar.

    Pagar faturas do cartão: a máquina primeiro verifica se o limite do cartão do player está 15.000 G. Nesse caso, ele não gastou nada, então não tem o que pagar. A máquina só renova o cartão. Caso seja menor que 15.000 G, então ele tem o que pagar. Para calcular quanto é simples: assume o valor de uma variável como 15.000 e depois subtrair o limite do cartão. Ou seja, subtrai quanto ele gastou de 15.000. Após isso, verifica-se se ele possui capital disponível suficiente para pagar quanto gastou. Caso ele possua, renova o cartão e reduz o dinheiro dele. Caso ele não possua, não é renovado e a máquina informa que ele não possui. Vale lembrar que toda vez que o player opta por comprar com cartão de crédito, a variável do limite do cartão reduz de acordo com o preço do item comprado (caso ele possua saldo no cartão suficiente para comprar o item ainda).

    Visualizar info/Cancelar cartão: calcula-se quanto o player possui de saldo, subtraindo de 15.000 G quanto ele gastou. Exibe essa variável, juntamente com o tempo da aquisição/última renovação, quanto o player gastou (consequentemente, quanto deve pagar) e quanto tempo ele ainda tem pra pagar (que é calculado subtraindo o tempo da aquisição/última renovação de 15 dias).

    Após isso, a máquina oferece a possibilidade de cancelar o cartão. Caso ele opte por isso, ela vai remover o item Cartão de crédito dele, ativar a switch que indica que ele tem um cartão e zerar as variáveis de limite do cartão e data do cartão.



     


     

    Imagem Postada

     

    Spoiler Dentro do banco 

    Imagem Postada

     

    Spoiler Banco por pictures 

    Imagem Postada

     

    Spoiler Banco por escolhas 

    Imagem Postada

     

    Spoiler Loja por pictures 

    Imagem Postada

     


     

    Imagem Postada

    MediaFire (2.13MB): http://www.mediafire...z5o8thcsz6zbhom


     

    Imagem Postada

    Axel Steel - Criar o sistema
    A.M. - Ícones de armas
    Tsukurushirizu - Tileset e charset da máquina do banco
    Sithjester - Chars modernos
    Kauzz - Disponibilizar resource na MRM
    Lucas Kich - Disponibilizar resources na MRM
    Akina - Disponibilizar resources na MRM
    cristianoforce - Disponibilizar resources na MRM
    Fórum Mundo RPG Maker (MRM) - Suporte


     

    Imagem Postada

    Bem, era pra esse sistema ser um pouco mais completo e diversificado, mas como eu estava ficando meio de saco cheio de trabalhar nele e minhas aulas no 3º ano terem começado, eu resolvi publicar ele da maneira que está mesmo. Só consertei umas coisinhas que não estavam prontas e estou colocando aqui. Peço, então, que caso vocês achem algum bug, algo assim, me contactem para eu poder consertar e publicar novamente.

    Só tem um bug que eu achei nessa demo e acho que não é possível consertar:

    Spoiler Bug que achei (texto grande) 
    o sistema de juros compostos no empréstimo dá problema dependendo da quantia que foi solicitada. Isso não é um problema de programação, é um problema das operações matemáticas feitas pelo RPG Maker. O que acontece é o seguinte: quando o plano é de juros compostos, eu coloco para toda vez que o player passa o dia no jogo, atualizar o valor do montante do juros. O motivo disso é porque a fórmula para juros compostos é:
    M = C * (1 + i), sendo (1 + i) elevado a t, onde:
    M = montante
    C = capital
    i = taxa
    t = tempo
    Então, como vocês podem ver, eu preciso elevar a taxa +1 por t. Mas não é possível fazer o processo de potenciação pelo RPG Maker, então, eu multiplico 1 + i por t toda vez que t aumenta. Logo, cada dia que passa, e t aumenta, 1 + i se multiplica por si mesmo. O problema não está aí, estaria tudo certo se fosse por isso, mas o problema é outro. O valor i é decimal, por exemplo: 25% = 0,25; 1% = 0,01; 0,95% = 0,0095. Então, eu tenho que multiplicar um valor decimal por ele mesmo. Só que o RPG Maker não aceita atribuir um valor decimal a uma variável. Então, eu faço o seguinte procedimento: por exemplo, se eu fosse multiplicar pela taxa de 0,95%, eu teria que multiplicar 1 + 0,0095 (1,0095) por si mesmo cada dia. Mas como não é possível multiplicar um número decimal por si mesmo no RPG Maker, o que eu faço é:
    multiplico o valor por 10095 e depois divido por 10000.
    (10095 x 10095)/10000 = 1,0095²
    Aí vem o real problema: o RPG Maker não armazena valores decimais para variáveis. Ou seja, toda vez que ele faz essa operação, ela arredonda o valor do resultado final. Esse arredondamento feito todos os dias dá uma diferença considerável em relação a quanto teria que dar caso não arredondasse.

    Também tem outro problema envolvendo juros compostos no empréstimo. Quando o player solicita um valor alto para empréstimo (como 90000, por exemplo), ele acaba pagando um montante menor do que o valor solicitado e o jogo exibe pra ele um valor de juros negativo. A operação para calcular os juros é subtrair do montante do empréstimo B o valor para empréstimo (capital solicitado). Se os juros estão aparecendo negativos, é porque o valor para empréstimo está sendo maior que o montante do empréstimo. Isso acontece porque quando eu vou atualizar o valor do montante (diariamente), primeiro eu multiplico por 10095 e depois divido por 10000. Mas quando o RM multiplica por 10095, o máximo valor que ele atribui dessa multiplicação é 99999999. Depois ele divide por 10000, resultando em 9999. O que era pra acontecer de fato (caso fosse 90000 o valor para empréstimo, por exemplo) era:
    90000 x 10095 = 908550000
    908550000 / 10000 = 90855
    Mas aí acaba ficando só 9999. Logo, quando o player vai verificar o valor de juros, o RM faz a seguinte operação:
    J = M - C
    J = 9999 - 90000
    J = -80001

    Então, é isso, esse são os dois bugs relacionados a juros compostos que eu achei e acho que não é possível corrigir pelas limitações de cálculo. Você pode remover os juros compostos do seu jogo se quiser ou então deixar apenas valores pequenos para que o player possa solicitar, como por exemplo um máximo de 3 dígitos para o valor que quer solicitar. Assim, vai funcionar (desde que o tempo para pagar os juros não seja muito grande.



    Bem, acho que é isso que tenho para dizer. Caso tenham alguma sugestão, também podem dizer aqui que vou fazer o possível para melhorar.  ^-^