Zokrar   
 
 
		
			Member 
			
			
			
 
			
	Posts: 85 
	Threads: 16 
	Joined: May 2013
	
 Reputation: 
0  
		 
	 
	
		
			
Script help required 
  
			 
			
				What I'm trying to accomplish is this:
There are two grunts at first. gruntOne, gruntTwo. If you look at one, it disappears, a sound plays, and a particle system appears where the grunt disappeared. I have this much working so far. 
What's NOT working is when I try and add a timer between when the other one can spawn. In this case, say gruntOne is active, and gruntTwo is not. I want it so that when I look at gruntOne, it'll disappear, do all the particles/sounds etc., and 3 seconds after it disappears, gruntTwo spawns in, and vice versa. Could someone take a look at my script to see if they can fix it please?
Spoiler below!   
void OnStart() 
{ 
    if(ScriptDebugOn()) 
    { 
        GiveItemFromFile("lantern", "lantern.ent"); 
    } 
     
     
    //****** ATTACKING GRUNTS ********* 
    SetEntityPlayerLookAtCallback("gruntOne", "GruntOne", false); 
    SetEntityPlayerLookAtCallback("gruntTWo", "GruntTwo", false); 
    //****** ATTACKING GRUNTS ********* 
     
     
    SetSkyBoxActive(true); 
       SetSkyBoxTexture("nighttime.dds"); 
        
        
       PlayMusic("ending_alexander.ogg", true, 0.30, 2.00, 5, true); 
} 
 
 
 
 
//****** ATTACKING GRUNTS ********* 
void GruntOne(string &in asEntity, int alState)  
{ 
    if(alState == 1) 
    { 
        SetEntityActive("gruntOne", false); 
        CreateParticleSystemAtEntity("electro1", "ps_electro_charge.ps", "gruntOne", true); 
        PlaySoundAtEntity("grunt1", "15_bang.snt", "Player", 0, false); 
         
         
        AddTimer("GruntTwoSpawnDelay", 3.00, ""); 
        GetTimerTimeLeft("GruntTwoSpawnDelay"); 
        if(GetTimerTimeLeft("GruntTwoSpawnDelay") > 0) 
        { 
            GetTimerTimeLeft("GruntTwoSpawnDelay"); 
        } 
        else if(GetTimerTimeLeft("GruntTwoSpawnDelay") == 0) 
        { 
            SetEntityActive("gruntTwo", true); 
            DestroyParticleSystem("electro2"); 
        } 
    } 
} 
 
void GruntTwo(string &in asEntity, int alState)  
{ 
    if(alState == 1) 
    { 
        SetEntityActive("gruntTwo", false); 
        CreateParticleSystemAtEntity("electro2", "ps_electro_charge.ps", "gruntTwo", true); 
        PlaySoundAtEntity("grunt2", "15_bang.snt", "Player", 0, false); 
         
         
        AddTimer("GruntOneSpawnDelay", 3.00, ""); 
        if(GetTimerTimeLeft("GruntOneSpawnDelay") > 0) 
        { 
            GetTimerTimeLeft("GruntOneSpawnDelay"); 
        } 
        else if(GetTimerTimeLeft("GruntOneSpawnDelay") == 0) 
        { 
            SetEntityActive("gruntOne", true); 
            DestroyParticleSystem("electro1"); 
        } 
    } 
} 
//****** ATTACKING GRUNTS *********
 
 
 
 
UPDATED SCRIPT: Still not working, but closer to solution I think.
Spoiler below!   
void OnStart() 
{ 
    if(ScriptDebugOn()) 
    { 
        GiveItemFromFile("lantern", "lantern.ent"); 
    } 
     
     
    //****** ATTACKING GRUNTS ********* 
     
    SetEntityPlayerLookAtCallback("gruntOne", "GruntOne", false); 
    SetEntityPlayerLookAtCallback("gruntTWo", "GruntTwo", false); 
    AddLocalVarInt("Grunt1State", 1); 
    AddLocalVarInt("Grunt2State", 1); 
     
    //****** ATTACKING GRUNTS ********* 
     
     
    SetSkyBoxActive(true); 
       SetSkyBoxTexture("nighttime.dds"); 
        
        
       PlayMusic("ending_alexander.ogg", true, 0.30, 2.00, 5, true); 
} 
 
 
 
 
//****** ATTACKING GRUNTS ********* 
void GruntOne(string &in asEntity, int alState)  
{ 
    if(alState == 1) 
     { 
          SetEntityActive("gruntOne", false); 
          CreateParticleSystemAtEntity("electro1", "ps_electro_charge.ps", "gruntOne", true); 
          PlaySoundAtEntity("grunt1", "15_bang.snt", "Player", 0, false); 
          AddTimer("GruntOneSpawnDelay", 3.00, ""); 
          SetLocalVarInt("Grunt1State", 0);  
   
     } 
    else if(alState == -1) 
     { 
          if(GetLocalVarInt("Grunt1State") == 0) 
          { 
               if(GetTimerTimeLeft("GruntOneSpawnDelay") <= 0) 
               { 
                SetEntityActive("gruntTwo", true); 
                DestroyParticleSystem("electro1"); 
                SetLocalVarInt("Grunt1State", 1); 
               } 
          } 
     } 
} 
 
void GruntTwo(string &in asEntity, int alState)  
{ 
    if(alState == 1) 
    { 
        SetEntityActive("gruntTwo", false); 
        CreateParticleSystemAtEntity("electro2", "ps_electro_charge.ps", "gruntTwo", true); 
        PlaySoundAtEntity("grunt2", "15_bang.snt", "Player", 0, false); 
        AddTimer("GruntTwoSpawnDelay", 3.00, ""); 
        SetLocalVarInt("Grunt2State", 0); 
     
    } 
    else if(alState == -1) 
    { 
        if(GetLocalVarInt("Grunt2State") == 0) 
        { 
            if(GetTimerTimeLeft("GruntTwoSpawnDelay") <= 0) 
            { 
                SetEntityActive("gruntOne", true); 
                DestroyParticleSystem("electro2"); 
                SetLocalVarInt("Grunt2State", 1); 
            } 
        } 
    } 
} 
//****** ATTACKING GRUNTS *********
 
 
 
 
			 
			
			
 
			
				
(This post was last modified: 06-23-2013, 02:32 AM by Zokrar .) 
 
				
			 
		  
	
 
 
	06-22-2013, 09:14 PM   
	
		
	 
 
	
		 
		PutraenusAlivius   
 
 
		
			Posting Freak 
			
			
			
 
			
	Posts: 4,713 
	Threads: 75 
	Joined: Dec 2012
	
 Reputation: 
119  
		 
	 
	
		
			
RE: Script help required 
  
			 
			
				AddTimer("GruntOneSpawnDelay", 3, "GruntOneTimer");
AddTimer("GruntTwoSpawnDelay", 3, "GruntTwoTimer");
You forgot to add a function to the AddTimer functions. Third argument. If you're using full numbers (such as 1, 2, 3, 4, etc.), you don't need to add .00. Just write it as the number.
EXTRA PROBLEM
SetEntityPlayerLookAtCallback("gruntTwo", "GruntTwo", false);
Found a typo there, in the first argument.  You wrote "gruntTWo" instead of "gruntTwo".
			
 
			
			
 
"Veni, vidi, vici." 
"I came, I saw, I conquered." 
			
		  
	
 
 
	06-23-2013, 02:05 AM   
	
		
	 
 
	
		 
		Zokrar   
 
 
		
			Member 
			
			
			
 
			
	Posts: 85 
	Threads: 16 
	Joined: May 2013
	
 Reputation: 
0  
		 
	 
	
		
			
[SOLVED] Script help required 
  
			 
			
				What would I do with the GruntOneTimer and GruntTwoTimer? The big problem for me with this code is that I don't know how to go about organizing it to flow properly with the timer included. I tried using variables and alState, and for reasons I can't see it didn't work. I fixed the typo too, thanks for catching that.
EDIT: Got it working! I feel stupid now, lol. I went about it the hard way.
Here's the code, incase anyone's wondering.
Spoiler below!   
void OnStart() 
{ 
    if(ScriptDebugOn()) 
    { 
        GiveItemFromFile("lantern", "lantern.ent"); 
    } 
     
     
    //****** ATTACKING GRUNTS ********* 
     
    SetEntityPlayerLookAtCallback("gruntOne", "GruntOne", false); 
    SetEntityPlayerLookAtCallback("gruntTwo", "GruntTwo", false); 
    AddLocalVarInt("Grunt1State", 1); 
    AddLocalVarInt("Grunt2State", 1); 
     
    //****** ATTACKING GRUNTS ********* 
     
     
    SetSkyBoxActive(true); 
       SetSkyBoxTexture("nighttime.dds"); 
        
        
       PlayMusic("ending_alexander.ogg", true, 0.30, 2.00, 5, true); 
} 
 
 
 
 
//****** ATTACKING GRUNTS ********* 
void GruntOne(string &in asEntity, int alState)  
{ 
    if(alState == 1) 
     { 
         if(GetLocalVarInt("Grunt1State") == 1) 
        { 
              SetEntityActive("gruntOne", false); 
              CreateParticleSystemAtEntity("electro1", "ps_electro_charge.ps", "gruntOne", true); 
              PlaySoundAtEntity("grunt1", "15_bang.snt", "Player", 0, false); 
              AddTimer("GruntOneSpawnDelay", 3, "GruntOneTimer"); 
              SetLocalVarInt("Grunt1State", 0);  
         }  
    } 
} 
 
void GruntTwo(string &in asEntity, int alState)  
{ 
    if(alState == 1) 
    { 
        if(GetLocalVarInt("Grunt2State") == 1) 
        {     
            SetEntityActive("gruntTwo", false); 
            CreateParticleSystemAtEntity("electro2", "ps_electro_charge.ps", "gruntTwo", true); 
            PlaySoundAtEntity("grunt2", "15_bang.snt", "Player", 0, false); 
            AddTimer("GruntTwoSpawnDelay", 3, "GruntTwoTimer"); 
            SetLocalVarInt("Grunt2State", 0); 
        } 
    } 
} 
 
void GruntOneTimer(string &in asTimer) 
{ 
    SetEntityActive("gruntTwo", true); 
    DestroyParticleSystem("electro2"); 
    SetLocalVarInt("Grunt1State", 1); 
} 
 
void GruntTwoTimer(string &in asTimer) 
{ 
    SetEntityActive("gruntOne", true); 
    DestroyParticleSystem("electro1"); 
    SetLocalVarInt("Grunt2State", 1); 
} 
//****** ATTACKING GRUNTS *********
 
 
 
 
			 
			
			
 
			
				
(This post was last modified: 06-23-2013, 02:32 AM by Zokrar .) 
 
				
			 
		  
	
 
 
	06-23-2013, 02:21 AM