| Author | 
            Message | 
        
        
			| 
				
				 Dylanhutch 
				
				
					 Joined: Sun Apr 25, 2010 12:04 am Posts: 303 Location: Australia
				 
				 
			 | 
			
				
				  Help with proximity check on actors  
					
						I want to make something happen to an object/actor when in range, I tried to use the homing rocket launcher script but it didn't seem to work at all. This is the script I tried: Code: function Update(self)     local curdist = 100;     for actor in MovableMan.Actors do    local avgx = actor.Pos.X - self.Pos.X;    local avgy = actor.Pos.Y - self.Pos.Y;    local dist = math.sqrt(avgx ^ 2 + avgy ^ 2);    if dist < curdist then    actor.Example = 1    end    end    end
  Also, how would I make the same thing happen to the thing the script is attached to? I tried self.Example = ?.  
					
  
			 | 
		
		
			| Mon Feb 07, 2011 3:17 am | 
			
				
					 
					
					 
				  
			 | 
    	
		
	
	
		  | 
	
	
			| 
				
				 Abdul Alhazred 
				DRL Developer 
				
					 Joined: Tue Aug 11, 2009 5:09 am Posts: 395
				 
				 
			 | 
			
				
				  Re: Help with proximity check on actors  
					
						The homing missile code does not take wrapping maps in to account. Try using ShortestDistance instead, like this: Code:    for Act in MovableMan.Actors do       if SceneMan:ShortestDistance(self.Pos, Act.Pos, false).Magnitude < 100 then          print(Act) -- prints actor name and class to the console       end    end
  Dylanhutch wrote: Also, how would I make the same thing happen to the thing the script is attached to? I tried self.Example = ?. I don't understand your question.  
					
  
			 | 
		
		
			| Mon Feb 07, 2011 9:12 am | 
			
				
					 
					
					 
				  
			 | 
    	
		
	
	
		  | 
	
	
			| 
				
				 Coops 
				
				
					 Joined: Wed Feb 17, 2010 12:07 am Posts: 1545 Location: That small peaceful place called Hell.
				 
				 
			 | 
			
				
				  Re: Help with proximity check on actors  
					
						I think he might be asking how to have whatever happens to the closest Actor that is found, also happen to the scripted object as well, Or vise versa.. 
					
  
			 | 
		
		
			| Mon Feb 07, 2011 9:18 am | 
			
				
					 
					
					 
				  
			 | 
    	
		
	
	
		  | 
	
	
			| 
				
				 Dylanhutch 
				
				
					 Joined: Sun Apr 25, 2010 12:04 am Posts: 303 Location: Australia
				 
				 
			 | 
			
				
				  Re: Help with proximity check on actors  
					
						Abdul Alhazred wrote: The homing missile code does not take wrapping maps in to account. Try using ShortestDistance instead, like this: Code:    for Act in MovableMan.Actors do       if SceneMan:ShortestDistance(self.Pos, Act.Pos, false).Magnitude < 100 then          print(Act) -- prints actor name and class to the console       end    end
  So I Would put it after "print(Act)"? Like  Code:    for Act in MovableMan.Actors do       if SceneMan:ShortestDistance(self.Pos, Act.Pos, false).Magnitude < 100 then          print(Act) -- prints actor name and class to the console          Act.Health = 1      //Health is just for an example.       end    end
  Abdul Alhazred wrote: Dylanhutch wrote: Also, how would I make the same thing happen to the thing the script is attached to? I tried self.Example = ?. I don't understand your question. I meant, I tried to get the command to work only for the thing the script is attached to. In this case I would want to set my projectile's Health to 1. I have tried what should work, self.Health but it doesn't work. EDIT I guess I didn't word that very well, Health is just an example.  
					
							
  
							
    							Last edited by Dylanhutch on Mon Feb 07, 2011 11:10 am, edited 1 time in total. 
    						 
						
  
			 | 
		
		
			| Mon Feb 07, 2011 10:11 am | 
			
				
					 
					
					 
				  
			 | 
    	
		
	
	
		  | 
	
	
			| 
				
				 none 
				
				
					 Joined: Fri Dec 18, 2009 11:00 pm Posts: 167
				 
				 
			 | 
			
				
				  Re: Help with proximity check on actors  
					
						What is the projectile?
  If its an actor you can set that in ini, Health = 1. 
					
  
			 | 
		
		
			| Mon Feb 07, 2011 10:39 am | 
			
				
					 
					
					 
				  
			 | 
    	
		
	
	
		  | 
	
	
			| 
				
				 Coops 
				
				
					 Joined: Wed Feb 17, 2010 12:07 am Posts: 1545 Location: That small peaceful place called Hell.
				 
				 
			 | 
			
				
				  Re: Help with proximity check on actors  
					
						Well first off, Giving an MO health wont really work out well unless its an actor..
  Second, What are you trying to accomplish with giving your projectile health?
  EDIT: Dammit none, beat me to the punch. 
					
  
			 | 
		
		
			| Mon Feb 07, 2011 10:40 am | 
			
				
					 
					
					 
				  
			 | 
    	
		
	
	
		  | 
	
	
			| 
				
				 Dylanhutch 
				
				
					 Joined: Sun Apr 25, 2010 12:04 am Posts: 303 Location: Australia
				 
				 
			 | 
			
				
				  Re: Help with proximity check on actors  
					
						You guys aren't very observant are you.     It was just an example, I said that in the code.  
					
  
			 | 
		
		
			| Mon Feb 07, 2011 11:09 am | 
			
				
					 
					
					 
				  
			 | 
    	
		
	
	
		  | 
	
	
			| 
				
				 none 
				
				
					 Joined: Fri Dec 18, 2009 11:00 pm Posts: 167
				 
				 
			 | 
			
				
				  Re: Help with proximity check on actors  
					
						self is a reference to the thing the script is attached to,  Code: function Create(self)      self.Health = 1; end is the same as ini Health = 1 for an actor of course, as you can't set health for a particle. so as you you put example Code: function Create(self)      self.Example = ? end will effect the thing the script is attached to as long as self.Example is releated to the attached thing, e.g. self.Health won't work if its attached to a particle, just like self.BurstScale won't work if the script is attached to an actor.  
					
  
			 | 
		
		
			| Mon Feb 07, 2011 2:33 pm | 
			
				
					 
					
					 
				  
			 | 
    	
		
	
	
		  | 
	
	
			| 
				
				 Dylanhutch 
				
				
					 Joined: Sun Apr 25, 2010 12:04 am Posts: 303 Location: Australia
				 
				 
			 | 
			
				
				  Re: Help with proximity check on actors  
					
						Well, that worked but it just does it anyway and spams the console with the actor name that it is attached to. I need it to not use itself, it's an actor.
  I want to make an actor make other actors have thing happen to them. Like for example. I might want to make an actor die when in range of my actor.
  I'll try some more things. But help would be appreciated. 
					
  
			 | 
		
		
			| Tue Feb 08, 2011 5:24 am | 
			
				
					 
					
					 
				  
			 | 
    	
		
	
	
		  | 
	
	
			| 
				
				 none 
				
				
					 Joined: Fri Dec 18, 2009 11:00 pm Posts: 167
				 
				 
			 | 
			
				
				  Re: Help with proximity check on actors  
					
						Code: function Update(self) -- Runs code every frame for self      for actor in MovableMan.Actors do -- scrolls through list of actors, "actor" can be anything like bob: "for bob in MovableMan:Actors do" it's a reference           if SceneMan:ShortestDistance(self.Pos, Actor.Pos, false).Magnitude < 100 then -- the distance between the youself and the actor "100" is the range                actor.Health = 1; --  Any actor that is less that 100 pixels away from you will do this           end -- ends the if statement      end -- ends the for statement end -- ends the function
  Hope that clears things up.  
					
  
			 | 
		
		
			| Tue Feb 08, 2011 7:09 am | 
			
				
					 
					
					 
				  
			 | 
    	
		
	
	
		  | 
	
	
			| 
				
				 Dylanhutch 
				
				
					 Joined: Sun Apr 25, 2010 12:04 am Posts: 303 Location: Australia
				 
				 
			 | 
			
				
				  Re: Help with proximity check on actors  
					
						I already know that, I want something to happen to my actor (self) when an actor is close to it. 
					
  
			 | 
		
		
			| Tue Feb 08, 2011 9:01 am | 
			
				
					 
					
					 
				  
			 | 
    	
		
	
	
		  | 
	
	
			| 
				
				 none 
				
				
					 Joined: Fri Dec 18, 2009 11:00 pm Posts: 167
				 
				 
			 | 
			
				
				  Re: Help with proximity check on actors  
					
						Code: function Update(self)      for actor in MovableMan.Actors do           if SceneMan:ShortestDistance(self.Pos, Actor.Pos, false).Magnitude < 100 then                self.Health = 1;           end      end end  
					
  
			 | 
		
		
			| Tue Feb 08, 2011 9:04 am | 
			
				
					 
					
					 
				  
			 | 
    	
		
	
	
		  | 
	
	
			| 
				
				 Dylanhutch 
				
				
					 Joined: Sun Apr 25, 2010 12:04 am Posts: 303 Location: Australia
				 
				 
			 | 
			
				
				  Re: Help with proximity check on actors  
					
						Doesn't seem to work, I don't know why. I just spams something about pos in console. I tried it on a coalition light to test it, but it didn't work: Attachment: 
			
				  
				Test.7z [3.07 KiB]
			
			Downloaded 233 times
		
		
	  
					
  
			 | 
		
		
			| Tue Feb 08, 2011 10:00 am | 
			
				
					 
					
					 
				  
			 | 
    	
		
	
	
		  | 
	
	
			| 
				
				 Coops 
				
				
					 Joined: Wed Feb 17, 2010 12:07 am Posts: 1545 Location: That small peaceful place called Hell.
				 
				 
			 | 
			
				
				  Re: Help with proximity check on actors  
					
						because the actor pointer in the SceneMan function is capitalized.. 
					
  
			 | 
		
		
			| Tue Feb 08, 2011 10:14 am | 
			
				
					 
					
					 
				  
			 | 
    	
		
	
	
		  | 
	
	
			| 
				
				 none 
				
				
					 Joined: Fri Dec 18, 2009 11:00 pm Posts: 167
				 
				 
			 | 
			
				
				  Re: Help with proximity check on actors  
					
						woops my bad
  Actor.Pos
  should be 
  actor.Pos
  EDIT: Beat by the man.. 
					
  
			 | 
		
		
			| Tue Feb 08, 2011 10:15 am | 
			
				
					 
					
					 
				  
			 | 
    	
		
	
	
		  | 
	
	
	
		 |