Página 1 de 1

Controlar trabalhadores de um recurso

Enviado: Qui Nov 17, 2016 6:41 pm
por Wallace
então pessoal eu to em um empasse no meu projeto, queria fazer um centro de mineração com limite de trabalhadores, tipo: em um recurso eu quero que tenha no máximo 1 trabalhador e quando eu quiser colocar mais que apareça uma mensagem dizendo que ja esta cheio.. pois bem, já tentei de tudo e o setup que eu criei eh o seguinte: criei uma global chamada "global.trabalhador" e no recurso pedra sempre que eu clico com o mouse um trabalhador eh debitado da global e aparece uma mensagem escrito "minerando" mais quando não tem trabalhador aparece uma mensagem dizendo que "não tem trabalhadores o suficiente" simples assim! ate ae eu consegui mais não consigo fazer com que a pedra saiba que já tem um cara la trabalhando nela e no caso apareceria "limite de trabalhadores atingido" alguém ae pode me ajuda com isso? estarei muto grato em continuar com meu projeto! :D qualquer coisa ta ae o codigo que fiz no step da instancia pedra:

Código: Selecionar todos

if (trabpedra) = 0{
//-----------------------------------------------------------
if mouse_check_button(mb_left)and global.trabalhador >= 1{
var pedra = instance_position(mouse_x, mouse_y, obj_pedra);
if (pedra){
show_message("mineirando");
global.trabalhador -= 1;
(trabpedra) += 1;
}
}
//-----------------------------------------------------------
if mouse_check_button(mb_left)and global.trabalhador < 1{
var pedra = instance_position(mouse_x, mouse_y, obj_pedra);
if (pedra){
show_message("trabalhadores insuficientes");
(trabpedra) = 0;
}
}
//----------------------------------------------------------
if (trabpedra) > 0{
if mouse_check_button(mb_left){
var pedra = instance_position(mouse_x, mouse_y, obj_pedra)
if (pedra)
show_message("limite de trabalhadores atingido");
}
}
}

Re: ajuda com variaveis

Enviado: Qui Nov 17, 2016 6:47 pm
por Markito
O que seria exatamente trabpedra? Uma variável que controla quantos estão trabalhando atualmente na pedra? O negócio era cada pedra ter variáveis trabalhadores e trabalhadores_totais criadas no Create. Quando você adicionasse um trabalhador na pedra você aumentava a primeira variável, checando primeiro que o valor atual dela é menor do que o da segunda.

Re: Controlar trabalhadores de um recurso

Enviado: Qui Nov 17, 2016 7:38 pm
por Wallace
Sim mano o trabpedra checaria se a pedra ja tivesse um trabalhador lá. Então eu crio as duas tipo trabalhador = 0 e trabalhador_total = 1 e no step checar se o trabalhador < trabalhador_total?

Re: Controlar trabalhadores de um recurso  Tópico resolvido

Enviado: Qui Nov 17, 2016 8:25 pm
por Markito
Isso mesmo. Seu código seria melhor sendo estruturado assim:

Código: Selecionar todos

//-----------------------------------------------------------
if mouse_check_button(mb_left) and global.trabalhador >= 1 {
var pedra = instance_position(mouse_x, mouse_y, obj_pedra);
// Se a pedra retornada da função é a instância atual e os trabalhadores estão dentro do limite
if (pedra == self and trabalhadores < trabalhadores_total){ 
show_message("mineirando");
global.trabalhador -= 1;
trabalhadores += 1;
}
}
E daí você adapta pra as outras partes. Aquele primeiro if poderia ser removido. Fica muito mais fácil você definir tudo no Create pra o caso de criar mais tipos de pedra, ao invés de usar um valor estático no Step.

Re: Controlar trabalhadores de um recurso

Enviado: Qui Nov 17, 2016 9:07 pm
por Wallace
mano deu tudo certo! obrigado por me ajudar vejo que ainda ha "caminhos mais fáceis" pra atingir meu objetivo.. mais mano so me lembre de duas coisinhas que eu me esqueci me perdoe pelo meu nível de noobice mais oque significa o "==" e o "self" mesmo? só isso e não lhe perturbo mais kkkk

Re: Controlar trabalhadores de um recurso

Enviado: Qui Nov 17, 2016 9:26 pm
por Markito
Ah, claro! O == é um operador de igualdade, pra você checar se o valor de algo é igual a outro. O self é uma variável especial que tem o número único da sua instância. Como eu coloquei lá no comentário é para ter certeza de que o que você clicou era a instância certa, porque do jeito que estava se você clicasse em uma pedra todas iam ser mudadas. Espero que tenha entendido. Abraços e bons estudos!

Re: Controlar trabalhadores de um recurso

Enviado: Qui Nov 17, 2016 9:34 pm
por Wallace
show mano obrigado!! :D

Re: Controlar trabalhadores de um recurso

Enviado: Qui Nov 17, 2016 9:36 pm
por Markito
Perdão, na verdade você deveria usar a variável id no lugar de self para o código funcionar, já que o self não é o número em si e sim uma referência de valor interno -1, quando o valor retornando pelo instance_position é um número maior que 10000 (e o id se encaixa nesse quesito). Mas você disse que funcionou... funcionou mesmo? :ué:

Re: Controlar trabalhadores de um recurso

Enviado: Qui Nov 17, 2016 9:49 pm
por Wallace
sim mano ta perfeito, já até editei o código e coloquei sua funcionalidade agora quando a mina de alumínio (pedra enquanto estava em fase de teste) tem um ou mais trabalhadores eh mostrado quantos trabalhadores ela contem. Para esclarecer tudo estou construindo um jogo de estrategia de exploração de marte onde você constrói sua base e tenta prosperar uma colonia em marte onde o objetivo eh terraformar marte para a população da terra :D

Re: Controlar trabalhadores de um recurso

Enviado: Qui Nov 17, 2016 9:54 pm
por Markito
Bacana cara! Quero ver esse jogo pronto ;)

Só mais uma dica: usar mouse_check_button faz com que o clique seja registrado muitas vezes, enquanto você segura o botao do mouse. Use mouse_check_button_pressed para registrar apenas um clique e evitar certos problemas.

Re: Controlar trabalhadores de um recurso

Enviado: Qui Nov 17, 2016 10:10 pm
por Wallace
Blz mano e muito obrigado! quando eu tiver uma jogabilidade legal eu lanço um "beta" aqui no fórum :D