| 
		
			 Page 1 of 1
  | 
			 [ 14 posts ]  | 
			 | 
		
	 
	 
			
	
	 OK, seriously, why doesn't this work?   
	
        
        
            | Author | 
            Message | 
         
        
			| 
				
				 Areku 
				
				
					 Joined: Fri Oct 17, 2008 9:46 pm Posts: 5212 Location: The Grills Locker.
				 
				 
			 | 
			
				
				  OK, seriously, why doesn't this work?  
					
						A small tidbit of script I was making for a friend: (Props to TLB for the garbage dump script)  Code: function Create(self)
     self.SharedHealthPool = self.Health;    self.CurrentState = 1;    self.SecondMode = nil;    self.ThirdMode = nil;    self.ActorsFound = 0;    self.timer = Timer();    self.garbTimer = Timer();
 
 
     local ActorTwo = CreateACrab("Crab");    ActorTwo.Team = self.Team;    ActorTwo.Pos.X = -5;    ActorTwo.Pos.Y = -5;    MovableMan:AddActor(ActorTwo);    self.GetSecondActor = ActorTwo;    local ActorThree = CreateACrab("Dreadnought");    ActorThree.Team = self.Team;    ActorThree.Pos.X = -5;    ActorThree.Pos.Y = -5;    MovableMan:AddActor(ActorThree);    self.GetThirdActor = ActorThree;             end
 
 
  function Update(self)
     if self.timer:IsPastSimMS(25) then
     if self.ActorsFound == 0 then       self.SecondMode = self.GetSecondActor;       print (("Actor Found:") .. (self.SecondMode.PresetName)) ;        self.ThirdMode = self.GetThirdActor;       print (("Actor Found:") .. (self.ThirdMode.PresetName)) ;        self.ActorsFound = 1;    end
     if self.CurrentState > 3 then       self.CurrentState = 1    end
 
     if MovableMan:IsActor(self.SecondMode) and MovableMan:IsActor(self.ThirdMode) then       if self.CurrentState == 1 then          self.SecondMode.Pos.X = -5;          self.SecondMode.Pos.Y = -5;          self.ThirdMode.Pos.X = -5;          self.ThirdMode.Pos.Y = -5;          self.SharedHealthPool = self.Health;          self.SecondMode.Health = self.SharedHealthPool;          self.ThirdMode.Health = self.SharedHealthPool;       elseif self.CurrentState == 2 then          self.Pos.X = -5;          self.Pos.Y = -5;          self.ThirdMode.Pos.X = -5;          self.ThirdMode.Pos.Y = -5;          self.SharedHealthPool = self.SecondMode.Health;          self.Health = self.SharedHealthPool;          self.ThirdMode.Health = self.SharedHealthPool;       elseif self.CurrentState == 3 then          self.Pos.X = -5;          self.Pos.Y = -5;          self.SecondMode.Pos.X = -5;          self.SecondMode.Pos.Y = -5;          self.SharedHealthPool = self.ThirdMode.Health          self.Health = self.SharedHealthPool;          self.SecondMode.Health = self.SharedHealthPool;       end
        if self:IsPlayerControlled() and UInputMan:KeyPressed(26) then          self.CurrentState = self.CurrentState + 1;             if self.CurrentState == 1 then                self.Pos = self.ThirdMode.Pos;                self.Vel = self.ThirdMode.Vel;             elseif self.CurrentState == 2 then                self.SecondMode.Pos = self.Pos;                self.SecondMode.Vel = self.Vel;             elseif self.CurrentState == 3 then                self.ThirdMode.Pos = self.SecondMode.Pos;                self.ThirdMode.Vel = self.SecondMode.Vel;             end       
 
 
     else       if MovableMan:IsActor(self.SecondMode) then          self.SecondMode.ToDelete = true;          print ("Deleted Second actor!");       end       if MovableMan:IsActor(self.ThirdMode) then          self.ThirdMode.ToDelete = true;          print ("Deleted Third actor!");       end       self:GibThis();    end
     self.timer:Reset();    end            if self.garbTimer:IsPastSimMS(10000) then             collectgarbage("collect");             self.garbTimer:Reset();       end end
 
 
  end
 
  So, the purpose of the code is to allow a unit to be replace by other one in real time, cycling through a set of three. However, whenever the starting actor is spawned, it just gibs instantly. Could anyone point me the reason? 'Cause I checked the code several times and still haven't found anything that could be causing this.  
					
  
			 | 
		 
		
			| Sun Apr 25, 2010 5:00 am | 
			
				
					 
					
					 
				    
			 | 
    	
		 
	
	
		  | 
	 
	
			| 
				
				 salt_1219 
				
				
					 Joined: Tue Jan 12, 2010 8:25 pm Posts: 400 Location: mukilteo, wa
				 
				 
			 | 
			
				
				  Re: OK, seriously, why doesn't this work?  
					
						Just curious but what kind of actors are you using? I had a problem like that (likely not the same problem at all) when I made my sandbags using a door actor.   I didn't know that I needed a attachment.
  Anyway I do hope someone who knows lua can help you find the answer. 
					
  
			 | 
		 
		
			| Sun Apr 25, 2010 5:52 am | 
			
				
					 
					
					 
				  
			 | 
    	
		 
	
	
		  | 
	 
	
			| 
				
				 Grif 
				REAL AMERICAN HERO 
				
					 Joined: Sat Jan 27, 2007 10:25 pm Posts: 5655
				 
				 
			 | 
			
				
				  Re: OK, seriously, why doesn't this work?  
					
						um
  it might have to do with the fact that you're positioning and spawning two actors at the same point as the first unit at the instant of creation
  or the fact that you've got a GibThis line without any checks on it in an else statement 
					
  
			 | 
		 
		
			| Sun Apr 25, 2010 6:30 am | 
			
				
					 
					
					 
				  
			 | 
    	
		 
	
	
		  | 
	 
	
			| 
				
				 Areku 
				
				
					 Joined: Fri Oct 17, 2008 9:46 pm Posts: 5212 Location: The Grills Locker.
				 
				 
			 | 
			
				
				  Re: OK, seriously, why doesn't this work?  
					
						Grif wrote: um
  it might have to do with the fact that you're positioning and spawning two actors at the same point as the first unit at the instant of creation
  Eh, no? The first unit stays in place, the others are placed in (-5,-5), outside the map, what turns collisions off for them. I guess.  Grif wrote: or the fact that you've got a GibThis line without any checks on it in an else statement Hrmm. That might be the problem. I thought that the 'if' check was enough to prevent it from gibbing, but it might be running into some kinda snag. Gonna add some more ifs.    EDIT: Oh, and it's just an AHuman and two crabs. No doors this time.  
					
  
			 | 
		 
		
			| Sun Apr 25, 2010 1:47 pm | 
			
				
					 
					
					 
				    
			 | 
    	
		 
	
	
		  | 
	 
	
			| 
				
				 Grif 
				REAL AMERICAN HERO 
				
					 Joined: Sat Jan 27, 2007 10:25 pm Posts: 5655
				 
				 
			 | 
			
				
				  Re: OK, seriously, why doesn't this work?  
					
						oh wait no I see the problem
  you don't have enough ends.
  if self:IsPlayerControlled() and UInputMan:KeyPressed(26) then
  else
  self:GibThis()
  that's how your code reads, because you aren't closing the first statement.
  Which means that, unless you're controlling the actor AND holding Z, it's immediately going to gib itself. 
					
  
			 | 
		 
		
			| Sun Apr 25, 2010 4:37 pm | 
			
				
					 
					
					 
				  
			 | 
    	
		 
	
	
		  | 
	 
	
			| 
				
				 Areku 
				
				
					 Joined: Fri Oct 17, 2008 9:46 pm Posts: 5212 Location: The Grills Locker.
				 
				 
			 | 
			
				
				  Re: OK, seriously, why doesn't this work?  
					
						Oh dang, how did I miss that? At any rate, it's fixed now, thanks.
  And since I'm already here, does anyone know of a way to force the player to switch control to a specific actor?
 
 
 
 
  (On an unrelated sidenote, did anyone else notice that trying to position an actor above the Y-limit of the map causes it to spin out of control and gib after a few seconds?) 
					
  
			 | 
		 
		
			| Mon Apr 26, 2010 9:21 pm | 
			
				
					 
					
					 
				    
			 | 
    	
		 
	
	
		  | 
	 
	
			| 
				
				 CaveCricket48 
				
				
					 Joined: Tue Jun 12, 2007 11:52 pm Posts: 13144 Location: Here
				 
				 
			 | 
			
				
				  Re: OK, seriously, why doesn't this work?  
					
						Code: ActivityMan:GetActivity():SwitchToActor(<target actor> , <player number> , <target actor's team>); That will switch control of the desired player. To get the player number from a spefic actor that is controlled: Code: actor:GetController().Player Be sure to check if it's controlled before you try to get its player number.  
					
  
			 | 
		 
		
			| Mon Apr 26, 2010 9:26 pm | 
			
				
					 
					
					 
				  
			 | 
    	
		 
	
	
		  | 
	 
	
			| 
				
				 Areku 
				
				
					 Joined: Fri Oct 17, 2008 9:46 pm Posts: 5212 Location: The Grills Locker.
				 
				 
			 | 
			
				
				  Re: OK, seriously, why doesn't this work?  
					
						Why, thank ya, mister. Works like a charm. (Well, an unstable, buggy, self-destructing one, but a charm anyways.)
 
  EDIT: OK, seriously, now this is **** ridiculous. I feel I'm doing something terribly wrong here, or the game engine hates me to death. Uploading the mod so that you can take a look, and hopefully, tell what is wrong with it. 
					
						
  
						Attachments: 
						
						
			
				  
				AC.rte.zip [2.87 KiB]
			
			Downloaded 172 times
		
		
	 
						
						 
					
			 | 
		 
		
			| Tue Apr 27, 2010 11:11 pm | 
			
				
					 
					
					 
				    
			 | 
    	
		 
	
	
		  | 
	 
	
			| 
				
				 CaveCricket48 
				
				
					 Joined: Tue Jun 12, 2007 11:52 pm Posts: 13144 Location: Here
				 
				 
			 | 
			
				
				  Re: OK, seriously, why doesn't this work?  
					
						Try setting them to GetsHitByMOs = 0 when the actor isn't being used. 
					
  
			 | 
		 
		
			| Tue Apr 27, 2010 11:20 pm | 
			
				
					 
					
					 
				  
			 | 
    	
		 
	
	
		  | 
	 
	
			| 
				
				 Areku 
				
				
					 Joined: Fri Oct 17, 2008 9:46 pm Posts: 5212 Location: The Grills Locker.
				 
				 
			 | 
			
				
				  Re: OK, seriously, why doesn't this work?  
					
						I reckon that would help, but it still doesn't solve the "mirror image" thing that appears when the units are positioned.
  Also, I think I should have put some instructions: just press Z to switch actors. 
					
  
			 | 
		 
		
			| Tue Apr 27, 2010 11:49 pm | 
			
				
					 
					
					 
				    
			 | 
    	
		 
	
	
		  | 
	 
	
			| 
				
				 CaveCricket48 
				
				
					 Joined: Tue Jun 12, 2007 11:52 pm Posts: 13144 Location: Here
				 
				 
			 | 
			
				
				  Re: OK, seriously, why doesn't this work?  
					
						That do you mean by the "mirror image" thing? 
					
  
			 | 
		 
		
			| Wed Apr 28, 2010 12:01 am | 
			
				
					 
					
					 
				  
			 | 
    	
		 
	
	
		  | 
	 
	
			| 
				
				 Areku 
				
				
					 Joined: Fri Oct 17, 2008 9:46 pm Posts: 5212 Location: The Grills Locker.
				 
				 
			 | 
			
				
				  Re: OK, seriously, why doesn't this work?  
					
						Well, I guess you'll notice that the two unselected units continually shift through two changing positions near the top of the map, essentially being in two places at the same time. No idea on what causes that. Also, if you change units three times, the third one will fall at incredibly high speed and splatter right into the ground. 
					
  
			 | 
		 
		
			| Wed Apr 28, 2010 12:11 am | 
			
				
					 
					
					 
				    
			 | 
    	
		 
	
	
		  | 
	 
	
			| 
				
				 CaveCricket48 
				
				
					 Joined: Tue Jun 12, 2007 11:52 pm Posts: 13144 Location: Here
				 
				 
			 | 
			
				
				  Re: OK, seriously, why doesn't this work?  
					
						That explains alot. Make sure you set the stored actors' velocity to Vector(0,0) every frame, or else gravity will hyper-accelerate them. 
					
  
			 | 
		 
		
			| Wed Apr 28, 2010 1:07 am | 
			
				
					 
					
					 
				  
			 | 
    	
		 
	
	
		  | 
	 
	
			| 
				
				 Areku 
				
				
					 Joined: Fri Oct 17, 2008 9:46 pm Posts: 5212 Location: The Grills Locker.
				 
				 
			 | 
			
				
				  Re: OK, seriously, why doesn't this work?  
					
						Well,  now it works like a charm. Actually, it works so well that I'm even astonished. Thank y'all, guys.     
					
  
			 | 
		 
		
			| Wed Apr 28, 2010 4:02 am | 
			
				
					 
					
					 
				    
			 | 
    	
		 
	
	
		  | 
	 
	
	
		 | 
	 
	
	 
	
	
	
		
			
				  
			 | 
		
			 Page 1 of 1
  | 
			 [ 14 posts ]  | 
			 | 
		
	 
	 
 
	 
	
	
		Who is online | 
	 
	
		Users browsing this forum: No registered users  | 
	 
	 
 
	 | 
	You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum
  | 
 
 
 
	 |