Ir para conteúdo

Featured Replies

Postado
  • 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.

Exemplo.gif.b7bd02e1bc8d97540e16a116fbcf3087.gif
 

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: 

3.thumb.png.1e0357580ad5f3c2735663df7de67c83.png

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. 

4.thumb.png.23a82e8f18409bd6b4d51db2a5ca79ca.png
 

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. 

5.thumb.png.feb2d695863b385a9626328e053b5211.png

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:

1.thumb.png.b1f21e2b1bbf4260d609b128b31a7c5a.png

Agora se você colocar true, você deve ter algo como isto:

2.thumb.png.88f7ed04c084b4eef3b65159bef5b964.png
 

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 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]

  • Respostas 8
  • Visualizações 2.9k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • @Endless   Precisa corrigir 2coisinha   account.management.html.twig     <form action="{{ getLink('mudavoc') }}" method="post"> esqueceu do r    

  • 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 f

  • 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 10

Posted Images

Postado

@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 por Celulose (veja o histórico de edições)

Postado
  • 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:

image.thumb.png.a13d1ed56fa1644a49c75b841f992d9c.png
 

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

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
  • 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 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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo