Página 1 de 2

Porque esse script não funciona????

Enviado: Qua Fev 25, 2009 7:32 am
por Wa59

Código: Selecionar todos

script 27 (void)
{	
	
	if(thingcount(T_ARACHNOTRON, 2) > 0);
	{
		delay (100);
		print(s:"Voces mataram minha outra mastermind tambem ?");
		delay (100);
		print(s:"Faltam as filhas!");
		ACS_execute(28,2,0,0,0);
		terminate;
				
	}
	if(thingcount(T_ARACHNOTRON, 2) == 0);
	{
		print(s:"Ate as filhas?");
		delay (100);
		print(s:"To comecando a gostar de voces..");
		delay (100);
		exit_normal(0);
	}
}

script 28 (void)
{
	while(thingcount(T_ARACHNOTRON, 2) > 0);
	delay(100);
	print(s:"Ate as filhas?");
	delay (100);
	print(s:"To comecando a gostar de voces..");
	delay (100);
	exit_normal(0);
}
Eu quero que quando a mistermind morra, se tiverem arachs vivas ele fala (FALTA AS FILHAS) e aguarda todas morrerem para passar a fase, e se não tiver ele termina a fase sozinha...

O problema é que quando as arachs tão vivas ele trava o script depois de falar que faltam as filhas (runaway script 28 terminated)

E quando elas estão mortas, ele fala que faltam as filhas e logo depois fala que elas morreram... =S

Não manjo de programação por isso peço ajuda,

Enviado: Qua Fev 25, 2009 3:21 pm
por Lord DooM1.666
hmm


Experimenta colocar no script 27

T_SPIDERMASTERMIND ao invés de T_ARACHNOTRON

E além disso tem 2 script ai que faz a mesma coisa
Isso ai é pra fucionar mesmo né? IAHAIHUAHUAHA
Usa só um Pô

Enviado: Qua Fev 25, 2009 5:46 pm
por Logan MTM
Pelo que saquei do seu Script, não há um Loop no codigo que cheque a condição ThingCount().

Acho que o mais correto seria + ou - assim:

Código: Selecionar todos

script 27 (void) 
{    
While(thingcount(T_ARACHNOTRON, 2) > 0); 
 { 
 delay (1);
 }
delay(100);  
print(s:"Voces mataram minha outra mastermind tambem ?"); 
delay (100); 
print(s:"Faltam as filhas!"); 
ACS_execute(28,2,0,0,0); 
}
Esse Script fará com que o print(); só se execute quando todas as Arachnotrons de Tags 2 forem mortas.

Enviado: Qua Fev 25, 2009 5:51 pm
por Rico
Respondido!

Enviado: Qua Fev 25, 2009 6:24 pm
por Wa59
Logan MTM escreveu:Pelo que saquei do seu Script, não há um Loop no codigo que cheque a condição ThingCount().

Acho que o mais correto seria + ou - assim:

Código: Selecionar todos

script 27 (void) 
{    
While(thingcount(T_ARACHNOTRON, 2) > 0); 
 { 
 delay (1);
 }
delay(100);  
print(s:"Voces mataram minha outra mastermind tambem ?"); 
delay (100); 
print(s:"Faltam as filhas!"); 
ACS_execute(28,2,0,0,0); 
}
Esse Script fará com que o print(); só se execute quando todas as Arachnotrons de Tags 2 forem mortas.
Assim funciona, mas não msotra as mensagens do jeito que eu quero... =(

Vou tentar explicar melhor...

Quando a mastermind morre, a morte dela ativa o script 27..

Eu quero que o jogo veja se tem arachs com a tag 2 vivas ou não.

Se tiverem o jogo mostra "mimimi faltam as filhas".
E espera a morte de todas para mostrar "OK!" por exemplo.
Se não tiverem nenhuma arach viva o jogo mostra "OK!" direto.

Enviado: Qua Fev 25, 2009 6:43 pm
por Logan MTM

Código: Selecionar todos

script 27 (void) 
{    
While(thingcount(T_ARACHNOTRON, 2) > 0); 
 { 
 delay(100);  
 print(s:"Voces mataram minha outra mastermind tambem ?"); 
 delay (100); 
 print(s:"Faltam as filhas!");  
 } 
 
//Aqui entra o deve acontecer quando todos voltarem pro inferno!

}

Enviado: Qua Fev 25, 2009 6:46 pm
por Wa59
Logan MTM escreveu:

Código: Selecionar todos

script 27 (void) 
{    
While(thingcount(T_ARACHNOTRON, 2) > 0); 
 { 
 delay(100);  
 print(s:"Voces mataram minha outra mastermind tambem ?"); 
 delay (100); 
 print(s:"Faltam as filhas!");  
 } 
 
//Aqui entra o deve acontecer quando todos voltarem pro inferno!

}
Não é bem isso.

Bom, criei uma versão reduzida (BEM reduzida) do mapa só para ilustrar o objetivo geral da fase...

Acho que fica mais claro assim...

http://rapidshare.com/files/202550981/oi.wad.html

Enviado: Qua Fev 25, 2009 7:07 pm
por Wa59
Acabo de resolver o problema...

o codigo era assim

Código: Selecionar todos

script 4 (void) //quando todos as arachs morrem
{	
	
	if(thingcount(T_ARACHNOTRON, 2) > 0);
	{
		ACS_execute(5,0,0,0,0);
		terminate;				
	}
	if(thingcount(T_ARACHNOTRON, 2) == 0);
	{
		ACS_execute(6,0,0,0,0);
	}
}

script 5 (void)
{
	print(s:"FALTAM AS FILHAS!");
	delay(100);
	while(thingcount(T_ARACHNOTRON, 2) > 0);
        {
	delay(1);
	}
	ACS_execute(6,0,0,0,0);
}

script 6 (void)
{
	delay(100);
	print(s:"Ate as filhas morreram?");
	delay (100);
	print(s:"To comecando a gostar de voces..");
	delay (100);
	exit_normal(0);
}
Tudo que eu fiz foi remover os comas que estavam errados!

Código: Selecionar todos

script 4 (void) //quando todos as arachs morrem
{	
	
	if(thingcount(T_ARACHNOTRON, 2) > 0)
	{
		ACS_execute(5,0,0,0,0);
		terminate;				
	}
	if(thingcount(T_ARACHNOTRON, 2) == 0)
	{
		ACS_execute(6,0,0,0,0);
	}
}

script 5 (void)
{
	print(s:"FALTAM AS FILHAS!");
	delay(100);
	while(thingcount(T_ARACHNOTRON, 2) > 0)
       {
	delay(1);
	}
	ACS_execute(6,0,0,0,0);
}

script 6 (void)
{
	delay(100);
	print(s:"Ate as filhas morreram?");
	delay (100);
	print(s:"To comecando a gostar de voces..");
	delay (100);
	exit_normal(0);
}

Eu sabia que a lógica tava certa.. :lol:

Valeu ai Logan, lendo seu script que eu descobri o problema.

Enviado: Qua Fev 25, 2009 7:13 pm
por Logan MTM
Sim, agora existe um Loop chegando as mortes!

É noix! :mrgreen:

Enviado: Qua Fev 25, 2009 7:14 pm
por Wa59
Logan MTM escreveu:Sim, agora existe um Loop chegando as mortes!

É noix! :mrgreen:
Só sei programar em Basic, e não existe essas coisas de comas de declarar variaveis... :lol:

Agora eu sei que os comandos while e if não usam comas...