| Author | Message | 
        
			| Pantera1993 
					Joined: Wed Jul 06, 2011 5:11 pm
 Posts: 226
   |   Dropship HoveringI got a problem with a script. I'm trying to have it keep my dropship at a certain altitude which is working fine but only when the AI is in control of the ship. I'd like to have it stay at that altitude  even when I'm controlling the ship. Am I doing something wrong here or am I just missing a variable in the script? Code: function Create(self)self.Hover = 2; --The height it should hover.
 end
 
 function Update(self)
 
 self.Altitude = self.Hover;
 
 end
 
I'm also having a problem with setting up the altitude of the ship. The script doesn't care what value I set to self.Hover, it keeps the ship hovering at some other value it likes. The altitude doesn't change if I change the variable...
 
 
    							Last edited by Pantera1993 on Fri Jan 20, 2012 1:05 am, edited 3 times in total. 
 
 | 
		
			| Sun Jan 15, 2012 8:12 pm | 
					
					   | 
	
	
		|  | 
	
			| Abdul Alhazred DRL Developer 
					Joined: Tue Aug 11, 2009 5:09 am
 Posts: 395
   |   Re: Making a lua script run constantlyThats because there is no property called "Altitude" in the ACraft class or in the classes it inherits from. All you did was create a variable. If you want to know what properties you can manipulate with Lua, check the documentation . One possible solution would be to check the current altitude with FindAltitude  and then move the ship up or down slightly if it is not close to the desired value.
 
 | 
		
			| Mon Jan 16, 2012 8:54 pm | 
					
					   | 
	
	
		|  | 
	
			| Pantera1993 
					Joined: Wed Jul 06, 2011 5:11 pm
 Posts: 226
   |   Re: Making a lua script run constantlyWell I've been using this code courtesy of Roast Veg... Code: function Create(self)self.Hover = 2;
 end
 
 function Update(self)
 
 self.Altitude = SceneMan:FindAltitude(self.Pos, 0, 2);
 if self.Altitude < self.Hover then
 self.Altitude = self.Altitude+1;
 elseif self.Altitude > self.Hover then
 self.Altitude = self.Altitude-1;
 end
 end
 
...and it does the exact same thing. I'm attaching the code to the engines of the dropship as well,  not the ship itself.
 
 | 
		
			| Tue Jan 17, 2012 9:18 pm | 
					
					   | 
	
	
		|  | 
	
			| Abdul Alhazred DRL Developer 
					Joined: Tue Aug 11, 2009 5:09 am
 Posts: 395
   |   Re: Making a lua script run constantlyThe scrips you have posted do the same thing because they are equivalent. All they do is create a new variable called altitude, and then change the value of that variable. You should change the value of self.Pos.Y instead.
 About the engines; I'm not sure that will work because the engines are positioned relative to the body, not the other way around. So moving the engines might affect the body. If it does not work you could perhaps measure the altitude from two positions on the ship's body, calculate the angle and rotate the ship manually.
 
 
 | 
		
			| Wed Jan 18, 2012 12:51 am | 
					
					   | 
	
	
		|  | 
	
			| Pantera1993 
					Joined: Wed Jul 06, 2011 5:11 pm
 Posts: 226
   |   Re: Making a lua script run constantlyYup you were right, attaching to engines doesn't do it. I attached this to the dropship, and it just shoots it up into space. Code: function Create(self)self.Hover = 1;
 end
 
 function Update(self)
 
 self.Altitude = SceneMan:FindAltitude(self.Pos, 0, 1)
 if self.Altitude > self.Hover then
 self.Vel.Y = self.Vel.Y - 1;
 elseif self.Altitude < self.Hover then
 self.Vel.Y = self.Vel.Y + 1;
 end
 end
The thing is I set the engines Particles Per Minute to 10, so it has to be the code doing this.
 
 | 
		
			| Wed Jan 18, 2012 4:17 am | 
					
					   | 
	
	
		|  | 
	
			| Abdul Alhazred DRL Developer 
					Joined: Tue Aug 11, 2009 5:09 am
 Posts: 395
   |   Re: Making a lua script run constantlyThe script says "lower Pos.Y, if the craft is more than one pixel above the ground". Since a Y-position of zero is at the top of the scene, the craft moves up. 
 
 | 
		
			| Wed Jan 18, 2012 8:31 am | 
					
					   | 
	
	
		|  | 
	
			| Pantera1993 
					Joined: Wed Jul 06, 2011 5:11 pm
 Posts: 226
   |   Re: Making a lua script run constantlyBut I'm not setting the hover level according to any X or Y variable. I'm trying to set it via how many pixels findAltitude is finding. 
 To me this script says "If I finds that the dropship is hovering at more than 2 pixels above ground, change the velocity it's traveling vertically to negative 1 until it reaches 2 pixels above ground and then do the same the other way around if that's the case."
 
 Am I reading this wrong?
 
 Edit: I also changed the post title to better suit the topic being discussed.
 
 
 | 
		
			| Fri Jan 20, 2012 1:01 am | 
					
					   | 
	
	
		|  | 
	
			| TheLastBanana DRL Developer 
					Joined: Wed Dec 13, 2006 5:27 am
 Posts: 3138
 Location: A little south and a lot west of Moscow
   |   Re: Dropship HoveringNegative vertical velocity causes objects to move up. Positive vertical velocity causes objects to move down. When the altitude is greater than 1, you are decreasing vertical velocity. As a result, if the ship is hovering higher than 1 pixel above the ground, it moves upward. Your numbers are backward. 
 
 | 
		
			| Fri Jan 20, 2012 1:37 am | 
					
					     | 
	
	
		|  | 
	
			| Pantera1993 
					Joined: Wed Jul 06, 2011 5:11 pm
 Posts: 226
   |   Re: Dropship HoveringAhhhhh makes so much sense. Thanks!!!
 Edit: Alright, I got this code working well now. Thanks so much guys!
 
 
 | 
		
			| Fri Jan 20, 2012 5:56 am | 
					
					   | 
	
	
		|  | 
	
	
		|  |