|
|
|
Autor |
Mensagem |
BielziimSM
Usuário
Registrado: 15/12/13 Mensagens: 190
|
|
Ativar um comando através de variavel |
|
Eu queria fazer o seguinte no 3dgb , Tenho uma variável que indica madeira que inicialmente é 0, ao coletar 1 madeira adicionar esse valor na variável , uma cabana custa 4 madeiras , como faço para só funcionar se a quantidade de madeira existente "valor da variável" for 4 ou acima disso para ativar um comando?
exemplo, vou usar um comando para criar um objeto em tal posição, quando obter as 4 madeiras ou mais, liberar a ação de um código ativado por uma tecla
ai essas 4 madeiras são deletadas apos o uso do código "-4 madeiras" alterando o valor da variável
Alguém poderia ajudar se souber? =D
|
|
Qui Jan 29, 2015 1:14 pm |
|
|
welgomes
Usuário
Registrado: 10/07/11 Mensagens: 827 Localização: São Paulo - Capital |
|
|
|
Amanhã eu posto, estou fazendo um exemplo.
|
|
Qui Jan 29, 2015 7:51 pm |
|
|
BielziimSM
Usuário
Registrado: 15/12/13 Mensagens: 190
|
|
|
Qui Jan 29, 2015 8:08 pm |
|
|
welgomes
Usuário
Registrado: 10/07/11 Mensagens: 827 Localização: São Paulo - Capital |
|
|
|
No evento OnCreate do mapa
| |
//INICIALIZA A VARIÁVEL COM 0 (ZERO)
WriteGlobalVar('acumulador', 0);
//CONSTANTE PARA A TECLA 'G'
Const G = 71;
//QUANDO SOLTAR A TECLA 'G' GetWaitKeyIsUp RETORNARÁ True
//Precisa desta linha senão nunca entra no if, pois GetWaitKeyIsUp sempre retornará false.
SetWaitKeyUp(G);
//Precisa desta linha senão a primeira vez que apertar G nada acontecerá
SendKeys('G');
|
No evento MainLoop do mapa
| |
//CONSTANTE PARA A TECLA 'G'
const G = 71;
//SE APERTOU A TECLA 'G'
if IsKeyPress(G) and GetWaitKeyIsUp then
begin
//SE POSSUI UM VALOR IGUAL OU MAIOR QUE 4
if ReadGlobalVar('acumulador') >= 4 then
begin
//DESCONTA 4 DO ACUMULADOR
WriteGlobalVar('acumulador', ReadGlobalVar('acumulador') - 4);
//MOSTRA NA TELA
SetLabelText('Label1', ReadGlobalVar('acumulador'));
//MENSAGEM
SetLabelText('Label3', '');
end
else
begin
//MENSAGEM
SetLabelText('Label3', 'Você não possui um valor suficiente para gastar!');
end;
SetWaitKeyUp(G);
end;
|
No evento OnInteract do botão
| |
//ACUMULA MAIS 1
WriteGlobalVar('acumulador', ReadGlobalVar('acumulador') + 1);
//MOSTRA NA TELA
SetLabelText('Label1', ReadGlobalVar('acumulador'));
|
Só baixar
http://wsantos.eti.br/3d_game_builder/
O nome do arquivo é VariavelAcumuladora.rar
|
|
Sex Jan 30, 2015 12:05 pm |
|
|
BielziimSM
Usuário
Registrado: 15/12/13 Mensagens: 190
|
|
|
|
Opa valeu mesmo =D muito obrigado
|
|
Sex Jan 30, 2015 4:30 pm |
|
|
BielziimSM
Usuário
Registrado: 15/12/13 Mensagens: 190
|
|
|
|
Quando utilizo o código em um botão ele adiciona +1 a variável, quando utilizo no cubo área o valor não fica 1 , ao invés de adicionar só 1 na variável ele adiciona "32" "59"
muitos valores.
Tenho esse mesmo problema com inimigos , quando o inimigo colide o valor abaixa muito rápido ao invés de ir aos poucos .
| | //ACUMULA MAIS 1
WriteGlobalVar('acumulador', ReadGlobalVar('acumulador') + 1);
//MOSTRA NA TELA
SetLabelText('Label1', ReadGlobalVar('acumulador')); |
|
|
Sáb Jan 31, 2015 1:07 am |
|
|
welgomes
Usuário
Registrado: 10/07/11 Mensagens: 827 Localização: São Paulo - Capital |
|
|
|
O jogo roda no MainLoop ou seja loop principal.
O número aumenta e diminui muito rápido porque no pequeno tempo de colisão o MainLoop executa várias vezes.
Pesquisa colisão no fórum acredito que alguém já deve ter dito este problema e solucionado.
|
|
Sáb Jan 31, 2015 9:14 pm |
|
|
BielziimSM
Usuário
Registrado: 15/12/13 Mensagens: 190
|
|
|
|
No caso eu usei o on interact do cubo area!
|
|
Dom Fev 01, 2015 12:37 am |
|
|
|
|
|
|
|
|