Controlar trabalhadores de um recurso Tópico resolvido

Perguntas? A comunidade te ajuda a resolver.
Wallace
Novato
Novato
Mensagens: 13

Controlar trabalhadores de um recurso

Mensagem por Wallace » Qui Nov 17, 2016 6:41 pm

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");
}
}
}
Editado pela última vez por Markito em Qui Nov 17, 2016 6:52 pm, em um total de 1 vez.
Razão: Título e formatação

Avatar do usuário
Markito
Colaborador
Colaborador
Mensagens: 50

Re: ajuda com variaveis

Mensagem por Markito » Qui Nov 17, 2016 6:47 pm

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.

Wallace
Novato
Novato
Mensagens: 13

Re: Controlar trabalhadores de um recurso

Mensagem por Wallace » Qui Nov 17, 2016 7:38 pm

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?

Avatar do usuário
Markito
Colaborador
Colaborador
Mensagens: 50

Re: Controlar trabalhadores de um recurso  Tópico resolvido

Mensagem por Markito » Qui Nov 17, 2016 8:25 pm

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.

Wallace
Novato
Novato
Mensagens: 13

Re: Controlar trabalhadores de um recurso

Mensagem por Wallace » Qui Nov 17, 2016 9:07 pm

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

Avatar do usuário
Markito
Colaborador
Colaborador
Mensagens: 50

Re: Controlar trabalhadores de um recurso

Mensagem por Markito » Qui Nov 17, 2016 9:26 pm

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!

Wallace
Novato
Novato
Mensagens: 13

Re: Controlar trabalhadores de um recurso

Mensagem por Wallace » Qui Nov 17, 2016 9:34 pm

show mano obrigado!! :D

Avatar do usuário
Markito
Colaborador
Colaborador
Mensagens: 50

Re: Controlar trabalhadores de um recurso

Mensagem por Markito » Qui Nov 17, 2016 9:36 pm

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é:

Wallace
Novato
Novato
Mensagens: 13

Re: Controlar trabalhadores de um recurso

Mensagem por Wallace » Qui Nov 17, 2016 9:49 pm

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

Avatar do usuário
Markito
Colaborador
Colaborador
Mensagens: 50

Re: Controlar trabalhadores de um recurso

Mensagem por Markito » Qui Nov 17, 2016 9:54 pm

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.

Wallace
Novato
Novato
Mensagens: 13

Re: Controlar trabalhadores de um recurso

Mensagem por Wallace » Qui Nov 17, 2016 10:10 pm

Blz mano e muito obrigado! quando eu tiver uma jogabilidade legal eu lanço um "beta" aqui no fórum :D

Trancado

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante