Postado Janeiro 16, 2021 4 anos Este é um post popular. Olá senhores, hoje vim disponibilizar um Sistema desenvolvido por mim para o MyAAC onde a função dele é vender a Troca de Vocação para o jogador. Explicando como funciona: O desenvolvedor(você) vai definir 1 preço para o jogador pagar para trocar a vocação de seu personagem. Exemplo: Eu sou 1 Naruto e quero mudar minha vocação para 1 Sasuke, eu vou pagar X valor e minha vocação irá ser alterada. Abaixo 1 gif exemplificando o sistema. Como instalar em seu site: É muito simples, vou dividir por passos onde o 1° passo será a inserção do código e o 2° passo a configuração dele. Vamos lá? 1° Passo (Inserção do código) Acesse o diretório system/pages/ e ali dentro você vai criar 2 arquivos. Crie 1 arquivo com nome mudarvoc.php e adicione o seguinte código dentro dele. (Esse arquivo será o responsável por tratar as requisições e irá fazer toda a parte lógica do sistema) Código mudarvoc.php: Spoiler <?php /** * Characters * * @package MyAAC * @author Endless <[email protected]> * @copyright 2017 MyAAC * @link http://my-aac.org */ defined('MYAAC') or die('Direct access not allowed!'); $title = 'Trocar Vocação'; $player_id = isset($_POST['player_id']) ? (int)$_POST['player_id'] : NULL; $vocation = isset($_POST['vocation']) ? stripslashes(ucwords(strtolower($_POST['vocation']))) : NULL; // Testa se está online if($logged) { $points = $account_logged->getCustomField('premium_points'); } else { $points = generateLink(getLink('?subtopic=accountmanagement') . '&redirect=' . urlencode(BASE_URL . '?subtopic=gifts'), 'Login first'); } // Confere se a opção de Mudar Vocação está ativada, se estiver desativada, não vai deixar rodar e vai avisar que está desativado.. if((!$config['mudar_vocacao'])) echo 'Mudar de vocação por pontos está desativado.'; // Se estiver ativada, irá permitir rodar o código else { $show_form = true; if(isset($_POST['changevocsave']) && $_POST['changevocsave'] == 1) { if($points < $config['mudar_vocacao_points']){ $errors[] = 'Você precisa de <font color="red">' . $config['mudar_vocacao_points'] . ' pontos</font> para mudar de vocação. Atualmente você possui <b><font color="green">'.$points.'<b> pontos </font>em sua conta.'; } // Confere se não ocorreu nenhum erro, caso não tenha ocorrido, irá deixar trocar a vocação. if(empty($errors)) { $player = new OTS_Player(); $player->load($player_id); if($player->isLoaded()) { $player_account = $player->getAccount(); if($account_logged->getId() == $player_account->getId()) { if($player->isOnline()) { $errors[] = 'This character is online.'; } if(empty($errors)) { $show_form = false; $old_vocation = $player->getVocation(); $player->setVocation($vocation); $player->save(); $account_logged->setCustomField("premium_points", $points - $config['mudar_vocacao_points']); $account_logged->logAction('Vocação trocada de <b>' . $old_vocation . '</b> para <b>' . $player->getVocation() . '</b>.'); echo $twig->render('success.html.twig', array( 'title' => 'Troca de vocação concluída!!', 'description' => 'Seu personagem trocou da vocação <b>'.ucfirst(nomeiavoc($old_vocation)).'</b> para <b>' . ucfirst(nomeiavoc($player->getVocation())) . '</b>.' )); } } else { $errors[] = 'Character <b>' . $player_name . '</b> is not on your account.'; } } else { $errors[] = "Vocação não existe."; } } } if($show_form) { if(!empty($errors)) { echo $twig->render('error_box.html.twig', array('errors' => $errors)); } echo $twig->render('mudarvoc.html.twig', array( 'points' => $points, 'errors' => $errors //'account_players' => $account_logged->getPlayersList() )); } } ?> Agora dentro da mesma página crie 1 arquivo chamado mudarvocacao.php (Ele será responsável por renderizar a parte visual do sistema em seu site), adicione o seguinte código dentro dele: Código mudarvocacao.php: Spoiler <?php /** * Characters * * @package MyAAC * @author Endless <[email protected]> * @copyright 2017 MyAAC * @link http://my-aac.org */ defined('MYAAC') or die('Direct access not allowed!'); $title = 'Trocar Vocação'; echo $twig->render('mudarvoc.html.twig'); ?> Agora acesse o diretório system/templates/ e ali dentro você vai criar 1 arquivo chamado mudarvoc.html.twig (Ele será a parte visual que vai enviar os dados para o sistema gerenciar e tratar eles), adicione o seguinte código dentro dele: Código mudarvoc.html.twig: Spoiler <br> <center style="font-weight: bold; font-size: 16px;"> Para alterar um nome de personagem, selecione o jogador e escolha uma nova vocação.<br/><br> <font color="Darkred">Mudar de vocação custa {{ config.mudar_vocacao_points }} Pontos.</font> </center> <br/><br/> <form action="{{ getLink('mudavoc') }}" method="post"> <input type="hidden" name="changevocsave" value="1"> <div class="TableContainer"> <table class="Table1" cellpadding="0" cellspacing="0"> <div class="CaptionContainer"> <div class="CaptionInnerContainer" > <span class="CaptionEdgeLeftTop" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span> <span class="CaptionEdgeRightTop" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span> <span class="CaptionBorderTop" style="background-image:url({{ template_path }}/images/content/table-headline-border.gif);"></span> <span class="CaptionVerticalLeft" style="background-image:url({{ template_path }}/images/content/box-frame-vertical.gif);"></span> <div class="Text"> <center style="font-weight: bold; font-size: 20px;">Mudar Vocação:</center><br><br> </div> <span class="CaptionVerticalRight" style="background-image:url({{ template_path }}/images/content/box-frame-vertical.gif);"></span> <span class="CaptionBorderBottom" style="background-image:url({{ template_path }}/images/content/table-headline-border.gif);"></span> <span class="CaptionEdgeLeftBottom" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span> <span class="CaptionEdgeRightBottom" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span> </div> </div> <tr> <td> <div class="InnerTableContainer" > <table style="width:100%;" border="0"> <tr> <td class="LabelV" > <center> <span style="font-weight: bold;">Personagem:</span> </center> </td> <td style="width:90%;" > <select name="player_id"> {% for player in account_logged.getPlayersList() %} <option value="{{ player.getId() }}">{{ player.getName() }}</option> {% endfor %} </select> </td> </tr> <tr> <td class="LabelV" > <span style="font-weight: bold;"> </span> </td> <td> <br/> <font size="1" face="verdana,arial,helvetica"> <div id="character_error"> <center><b>Selecione sua nova vocação:</b></center> </div> </font> {% if config.character_samples|length > 1 %} {% for key, sample_char in config.personagens_liberados %} <table style="float: left; text-align: center;"> <tr> <td> <tr style="text-align: center;"> <td> {% if vocation is not null and vocation == key %} checked="checked"{% endif %} <label for="vocation{{ key }}"><img src="/ntofalcon/templates/loleslav/imagens/personagens/{{ config['vocations'][key] }}.png"></label> </td> </tr> <tr style="text-align: center;"> <td> <input type="radio" name="vocation" id="vocation{{ key }}" value="{{ key }}"> {{ config['vocations'][key] }} </td> </tr> </td> </tr> </table> {% endfor %} {% endif %} </td> </tr> </table> </div> </td> </tr> </table> </div> <br/> <table style="width:100%" > <tr align="center"> <td> <table border="0" cellspacing="0" cellpadding="0"> <tr> <td style="border:0px;"> <input type="submit" name="" value="Mudar" class='btn'> </td> </tr> </form> </table> </td> <td> <table border="0" cellspacing="0" cellpadding="0"> <form action="{{ getLink('account/manage') }}" method="post"> <tr> <td style="border:0px;"> <input type="submit" name="" value="Voltar" class='btn'> </td> </tr> </form> </table> </td> </tr> </table> Agora no diretório system/templates/ acesse o arquivo account.management.html.twig e adicione o seguinte código dentro dele na parte final dele, esse código vai checar se está ativo a opção de mudar vocação no config.php, se estiver false, ele não vai exibir o botão. Código para adicionar no arquivo account.management.html.twig: Spoiler {% if config.mudar_vocacao %} <td> <form action="{{ getLink('mudarvoc') }}" method="post" > <input type="Submit" name="Mudar Vocacao" value="Mudar Vocacao" /> </form> </td> {% endif %} Ficando +/- assim: 2° Passo (Configuração do código): Agora acesse o arquivo config.php que está no diretório raiz de seu site. E vamos adicionar o seguinte código: Spoiler //mudar vocação 'mudar_vocacao' => true, // Colocar false se quiser deixar desativado o sistema 'mudar_vocacao_points' => 15, // Preço para trocar de vocação Com estas 2 linhas de código nós já podemos controlar o sistema, a 1ª linha será responsável por ativar e desativar o sistema. A 2ª linha é responsável pelo preço que será cobrado para trocar a vocação. Agora coloque este código: Spoiler // Lista de personagens para Trocar 'personagens_liberados' => array ( //Vocação, fomato: ID da vocação => 'Nome do Personagem para Copiar') //0 => 'Chouji Sample', 560 => 'Haku Sample', 95 => 'Shikamaru Sample', 57 => 'Shino Sample', 680 => 'Temari Sample', 140 => 'Rock Lee Sample', 71 => 'Hinata Sample', 127 => 'Ino Sample' ), Basicamente aqui estamos definindo quais vocações serão disponibilizadas para o jogador poder trocar pela sua. Exemplo: Com essa configuração estamos definindo que as vocações que você pode pegar ao pagar para trocar a sua são: Chouji, Haku, Shikamaru, Shino, Temari, Rock lee, Hinata e Ino. Fique a vontade para configurar a seu gosto. Agora no diretório system/ abre o arquivo chamado functions.php e adicione a seguinte função: Spoiler function nomeiavoc($a){ // $a recebe o ID da vocação do jogador // $nomevoc recebe o nome da vocação baseada no ID dela // 1 Exemplo logo abaixo de como usar // else if ($a >= 10 && $a < 32) $nomevoc = "a"; if ($a <= 16) $nomevoc = "naruto"; else if ($a >= 17 && $a < 32) $nomevoc = "sasuke"; else if ($a >31 && $a < 45) $nomevoc = "sakura"; else if ($a >44 && $a < 57) $nomevoc = "kiba"; return $nomevoc; } Nessa função você vai configurar os ID das suas vocações, exemplo: $a > 10 && $a < 20, nessa situação você está conferindo se o ID da vocação este entre 11 até 19, pois ele precisa ser maior que 10 e menor do que 20. Sempre que você for adicionar 1 nova vocação nessa função, basta adicionar o else if ($a > TAL && $a < TAL) $nomevoc = "TAL"; Pronto, configurado!! Repare que se você deixar a opção 'mudar_vocacao' => false lá no config.php, ele não vai exibir nada no Gerenciamento de sua conta: Agora se você colocar true, você deve ter algo como isto: Pronto, sistema instalado!! Agora você pode disponibilizar para seus jogadores a opção de trocar de vocação pagando um valor X de pontos. Editado Janeiro 17, 2021 4 anos por Endless Adicionado função que estava faltando. (veja o histórico de edições) Quem eu sou? Meu nome é Waliston, mais conhecido como Endless, estudante de Análise e Desenvolvimento de Sistemas, e desenvolvedor da Falcon Games. Atuo no Ramo de OtServer desde 2017, porém desde 2019 venho me especializando em Desenvolvimento Web e Segurança Web.. Meus Projetos: Falcon Games Meu Github: https://github.com/WalistonBelles Meu Discord: Endless#5410 Minhas Contribuições atualmente pra Comunidade: [SHOWOFF] OTClient Showoff Módules [DESIGN] 3 FREE Game Ui Design [TUTORIAL] Instalando MyAAC em sua máquina [TUTORIAL] Restringindo a Listagem de Diretórios(URL) do Servidor Apache [TUTORIAL] Proteção contra DDoS utilizando Mod-evasive no Apache [SISTEMA] Plugin MyAAC Listagem de Items automática [SISTEMA] Gerador de Outfits Automática para o Site [SISTEMA] Sistema de Troca de Vocação para MyAAC [SISTEMA] Plugin MyAAC Auction System [SISTEMA] Sistema de Exibir Monstros por Level Algum trabalho meu te ajudou? Quer apoiar meu trabalho? Faça uma doação!! Picpay: @walistonbelles Paypal: [email protected]
Postado Janeiro 17, 2021 4 anos @Endless Precisa corrigir 2coisinha account.management.html.twig <form action="{{ getLink('mudavoc') }}" method="post"> esqueceu do r <form action="{{ getLink('mudarvoc') }}" method="post"> nomeiavoc() Call to undefined function nomeiavoc() Editado Janeiro 17, 2021 4 anos por Celulose (veja o histórico de edições)
Postado Janeiro 17, 2021 4 anos Autor 18 minutos atrás, Celulose disse: @Endless Precisa corrigir 2coisinha account.management.html.twig <form action="{{ getLink('mudavoc') }}" method="post"> esqueceu do r <form action="{{ getLink('mudarvoc') }}" method="post"> nomeiavoc() Call to undefined function nomeiavoc() Boa noite meu caro, adicionei a função nomeiavoc que estava faltando e expliquei já como utilizar a mesma, obrigado por reportar, realmente havia passado batido e acabei não percebendo. Em relação a falta do r no código do account.management.html.twig confere se você não escreveu errado, pois está certinho no código: Quem eu sou? Meu nome é Waliston, mais conhecido como Endless, estudante de Análise e Desenvolvimento de Sistemas, e desenvolvedor da Falcon Games. Atuo no Ramo de OtServer desde 2017, porém desde 2019 venho me especializando em Desenvolvimento Web e Segurança Web.. Meus Projetos: Falcon Games Meu Github: https://github.com/WalistonBelles Meu Discord: Endless#5410 Minhas Contribuições atualmente pra Comunidade: [SHOWOFF] OTClient Showoff Módules [DESIGN] 3 FREE Game Ui Design [TUTORIAL] Instalando MyAAC em sua máquina [TUTORIAL] Restringindo a Listagem de Diretórios(URL) do Servidor Apache [TUTORIAL] Proteção contra DDoS utilizando Mod-evasive no Apache [SISTEMA] Plugin MyAAC Listagem de Items automática [SISTEMA] Gerador de Outfits Automática para o Site [SISTEMA] Sistema de Troca de Vocação para MyAAC [SISTEMA] Plugin MyAAC Auction System [SISTEMA] Sistema de Exibir Monstros por Level Algum trabalho meu te ajudou? Quer apoiar meu trabalho? Faça uma doação!! Picpay: @walistonbelles Paypal: [email protected]
Postado Janeiro 17, 2021 4 anos Muito bom, parabens. Bastante interessante, mas servidores não organizados podem ter alguns problemas. Um dos bugs: se o jogador criar um char distance e subir sua skill pra 100 e mudar pra uma voc melee, ele ira travar o servidor na hora q atacar, pq a maioria dos servidores separam as "classes" pelo vocations.xml aumentando a dificuldade de upar a skill.
Postado Janeiro 17, 2021 4 anos Autor 11 horas atrás, ernaix69 disse: Muito bom, parabens. Bastante interessante, mas servidores não organizados podem ter alguns problemas. Um dos bugs: se o jogador criar um char distance e subir sua skill pra 100 e mudar pra uma voc melee, ele ira travar o servidor na hora q atacar, pq a maioria dos servidores separam as "classes" pelo vocations.xml aumentando a dificuldade de upar a skill. Obrigado!! Em relação a servidores "travar" por conta da skill, para isso acontecer o jogo em si tem que conter algum problema já. Por padrão indiferente se teu vocations.xml tua vocação tem dano reduzido na skill distance, e tu tiver skill alta de distance a única coisa que vai acontecer é você não causar muito dano. Pra "crashar" o problema não vai estar no sistema de trocar a vocação pelo site, mas sim o problema pode estar na hora de calcular o dano final do seu personagem, se for o seu caso, da 1 olhada em weapons.cpp. No final de tudo, o sistema não vai influenciar em nada nesse caso. Editado Janeiro 17, 2021 4 anos por Endless (veja o histórico de edições) Quem eu sou? Meu nome é Waliston, mais conhecido como Endless, estudante de Análise e Desenvolvimento de Sistemas, e desenvolvedor da Falcon Games. Atuo no Ramo de OtServer desde 2017, porém desde 2019 venho me especializando em Desenvolvimento Web e Segurança Web.. Meus Projetos: Falcon Games Meu Github: https://github.com/WalistonBelles Meu Discord: Endless#5410 Minhas Contribuições atualmente pra Comunidade: [SHOWOFF] OTClient Showoff Módules [DESIGN] 3 FREE Game Ui Design [TUTORIAL] Instalando MyAAC em sua máquina [TUTORIAL] Restringindo a Listagem de Diretórios(URL) do Servidor Apache [TUTORIAL] Proteção contra DDoS utilizando Mod-evasive no Apache [SISTEMA] Plugin MyAAC Listagem de Items automática [SISTEMA] Gerador de Outfits Automática para o Site [SISTEMA] Sistema de Troca de Vocação para MyAAC [SISTEMA] Plugin MyAAC Auction System [SISTEMA] Sistema de Exibir Monstros por Level Algum trabalho meu te ajudou? Quer apoiar meu trabalho? Faça uma doação!! Picpay: @walistonbelles Paypal: [email protected]
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.