Ir para conteúdo
  • 0

[Resolvido] Selecionar gênero de acordo com vocação ao criar personagens.


Renan Morais

Pergunta

Salve galera, poderiam me ajudar por favor?

Eu gostaria de ocultar o campo "Gênero" na criação de personagens, que atualmente está assim:

 

CreateCharacter.png.ff49f908e9b998af2f95cdc275a38f72.png

 

Sendo assim, ao selecionar uma vocação e clicar no botão "Create", o gênero deverá ser escolhido de acordo com a vocação, por exemplo:

Se for Goku, Vegeta, Trunks... o gênero será masculino;

Se for Bulma, Pan, Videl... o gênero será feminino.

 

Segue o create_character.php:

Spoiler

<?php 
echo "<div class='errors'>";
echo error(validation_errors());
echo "</div>";
echo form_open('character/create_character', array('id'=>'createCharacter')); 
?>
<script>
	function createCharacter() {
		$('.loader').show();
		var form = $('#createCharacter').serialize();
		$.ajax({
			url: '<?php echo WEBSITE; ?>/index.php/character/create_character/1',
			  type: 'post',
			  data: form,
			  success: function(data) {
			  	$('.errors').html(data);
			  	$('.loader').hide();
			  }
		});
	}
</script>
<link rel="stylesheet" type="text/css" href="<?php echo WEBSITE; ?>/public/css/keyboard.css">
<div class='message'>
<div class='title'>Criar Novo Personagem</div>
<br/>
<div class='content'>
<fieldset id="fundo_claro">
<label>Nome:</label><input type='text' value="<?php echo set_value('name'); ?>" name='name'><br>
<label>Vocação:</label><select name='vocation'>
<?php 
	foreach($vocations as $key=>$value) {
		echo '<option value="'.$key.'">'.$value.'</option>';
	}
?>
</select><br>
<label>Cidade:</label><select name='city'>
<?php 
	foreach($cities as $key=>$value) {
		echo '<option value="'.$key.'">'.$value.'</option>';
	}
?>
</select><br>
<label>Gênero:</label><select name='sex'>
	<option value="1">Masculino</option>
	<option value="0">Feminino</option>
</select><br>
<label>World:</label><select name='world'>
<?php 
	foreach($worlds as $key=>$value) {
		echo '<option value="'.$key.'">'.$value.'</option>';
	}
?>
</select><br>
</fieldset>
<br>
<center><input type='submit' value='Criar' name='submit' class='sub'/> </center><?php echo loader();?>
</div></div>
</form>

 

 

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

@dalvorsn Não recomendo dessa forma, assim os players poderiam burlar fácil editando o html, precisando de outras formas de verificação.

 

Você precisa tirar o select, como já disseram, e editar a função create_character no arquivo system\application\controllers\character.php.

La tem um comando assim (ou parecido): $this->form_validation->set_rules('sex', 'Sex', 'required|integer|callback__checkSex');, ele verifica o sexo do personagem.

Antes desse comando você pode fazer algo assim (não testei):

if (in_array($_POST['vocation'], array(1, 2, 3, 4))) {
	$_POST['sex'] = 0;
} else if (in_array($_POST['vocation'], array(5, 6, 7, 8))) {
	$_POST['sex'] = 1;
} else {
	$_POST['sex'] = -1;
}

Dessa forma, se a vocação escolhida for 1, 2, 3 ou 4 terá o sex 0 (feminino), se for 5, 6, 7, 8 terá o sex 1 (masculino). Caso não seja nenhum desses dará erro de sexo inválido e não criará o personagem.

Link para o comentário
Compartilhar em outros sites

  • 0

Basta tirar essa parte:

<label>Gênero:</label><select name='sex'>
	<option value="1">Masculino</option>
	<option value="0">Feminino</option>
</select><br>
Tenho quase certeza que se você tirar essa parte, na hora que o player criar seu personagem ele 
vai vir com a configuração base do personagem (sample)..
Editado por Behmen
Link para o comentário
Compartilhar em outros sites

  • 0
5 horas atrás, Behmen disse:

Basta tirar essa parte:


<label>Gênero:</label><select name='sex'>
	<option value="1">Masculino</option>
	<option value="0">Feminino</option>
</select><br>

Tenho quase certeza que se você tirar essa parte, na hora que o player criar seu personagem ele 
vai vir com a configuração base do personagem (sample)..

 

Não deu certo, o site obriga selecionar o gênero mesmo sem essas tags no código PHP, o site retorna a seguinte mensagem:

The Sex field is required.

Infelizmente não está pegando da base dos personagens (sample) =/

Possui alguma outra ideia?

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

  • 0

Remove o select de genero e altera o script de submissão.

 

function createCharacter() {
                    $('.loader').show();
                    var form = $('#createCharacter').serialize();

                    form.sex = 0;
                    if($.inArray(parseInt(form.vocation), [1,2,3]) != -1 ) {
                        form.sex = 1; 
                    }

                    $.ajax({
                        url: '<?php echo WEBSITE; ?>/index.php/character/create_character/1',
                          type: 'post',
                          data: form,
                          success: function(data) {
                            $('.errors').html(data);
                            $('.loader').hide();
                          }
                    });
                }

Supondo que as vocações que são masculinas sejam 1, 2 e 3

Link para o comentário
Compartilhar em outros sites

  • 0
4 horas atrás, dalvorsn disse:

Remove o select de genero e altera o script de submissão.

 


function createCharacter() {
                    $('.loader').show();
                    var form = $('#createCharacter').serialize();

                    form.sex = 0;
                    if($.inArray(parseInt(form.vocation), [1,2,3]) != -1 ) {
                        form.sex = 1; 
                    }

                    $.ajax({
                        url: '<?php echo WEBSITE; ?>/index.php/character/create_character/1',
                          type: 'post',
                          data: form,
                          success: function(data) {
                            $('.errors').html(data);
                            $('.loader').hide();
                          }
                    });
                }

Supondo que as vocações que são masculinas sejam 1, 2 e 3

 

Removi o select de gênero e substitui a function, mas infelizmente não funcionou... =/

O site ainda apresenta a seguinte mensagem: The Sex field is required.

 

Identei o código pra ficar mais fácil a visualização, mas atualmente está assim:

Spoiler

<?php 
	echo "<div class='errors'>";
		echo error(validation_errors());
	echo "</div>";
	echo form_open('character/create_character', array('id'=>'createCharacter')); 
?>

<script>
	function createCharacter() {
		$('.loader').show();
		var form = $('#createCharacter').serialize();

		form.sex = 0;
		if($.inArray(parseInt(form.vocation), [1,17,32]) != -1 ) {
			form.sex = 1; 
		}

		$.ajax({
			url: '<?php echo WEBSITE; ?>/index.php/character/create_character/1',
			type: 'post',
			data: form,
			success: function(data) {
				$('.errors').html(data);
				$('.loader').hide();
			}
		});
	}
</script>

<link rel="stylesheet" type="text/css" href="<?php echo WEBSITE; ?>/public/css/keyboard.css">
<div class='message'>
	<div class='title'>Criar Novo Personagem</div>
	<br/>
	<div class='content'>
		<fieldset id="fundo_claro">
			<label>Nome:</label>
			<input type='text' value="<?php echo set_value('name'); ?>" name='name'><br>
			
			<label>Vocação:</label>
			<select name='vocation'>
				<?php 
					foreach($vocations as $key=>$value) {
						echo '<option value="'.$key.'">'.$value.'</option>';
					}
				?>
			</select>
			<br>
			
			<label>Cidade:</label>
			<select name='city'>
				<?php 
					foreach($cities as $key=>$value) {
						echo '<option value="'.$key.'">'.$value.'</option>';
					}
				?>
			</select>
			<br>
			
			<label>Mundo:</label>
			<select name='world'>
				<?php 
					foreach($worlds as $key=>$value) {
						echo '<option value="'.$key.'">'.$value.'</option>';
					}
				?>
			</select>
			<br>
		</fieldset>
		<br>
		
		<center>
			<input type='submit' value='Criar' name='submit' class='sub'/>
		</center>
		<?php echo loader();?>
	</div>
</div>
</form>

 

 

Link para o comentário
Compartilhar em outros sites

  • 0
1 hora atrás, Kydrai disse:

@dalvorsn Não recomendo dessa forma, assim os players poderiam burlar fácil editando o html, precisando de outras formas de verificação.

 

Você precisa tirar o select, como já disseram, e editar a função create_character no arquivo system\application\controllers\character.php.

La tem um comando assim (ou parecido): $this->form_validation->set_rules('sex', 'Sex', 'required|integer|callback__checkSex');, ele verifica o sexo do personagem.

Antes desse comando você pode fazer algo assim (não testei):


if (in_array($_POST['vocation'], array(1, 2, 3, 4))) {
	$_POST['sex'] = 0;
} else if (in_array($_POST['vocation'], array(5, 6, 7, 8))) {
	$_POST['sex'] = 1;
} else {
	$_POST['sex'] = -1;
}

Dessa forma, se a vocação escolhida for 1, 2, 3 ou 4 terá o sex 0 (feminino), se for 5, 6, 7, 8 terá o sex 1 (masculino). Caso não seja nenhum desses dará erro de sexo inválido e não criará o personagem.

 

Resolvido, muito obrigado a todos que contribuíram!

No arquivo character.php deixei a validação das vocações da seguinte forma:

if (in_array($_POST['vocation'], array(140,256,280,364))) {
	$_POST['sex'] = 0;
} else {
	$_POST['sex'] = 1;
}

E neste mesmo arquivo, tive que remover (deixei apenas em comentário) a checagem de gênero:

/*$this->form_validation->set_rules('sex', 'Sex', 'required|integer|callback__checkSex');*/

Pois mesmo com a validação das vocações, o site ainda apresentava a mensagem: The Sex field is required.

Link para o comentário
Compartilhar em outros sites

  • 0
A questão neste tópico de suporte foi respondida e/ou o autor do tópico resolveu o problema. Este tópico está fechado e foi movido para Suporte - Resolvidos. Se você tiver outras dúvidas, crie um novo tópico.
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...