| 
 
 
 
	
			
	
	
	
        
        
            | Author | Message |  
			| carriontrooper 
					Joined: Mon Apr 13, 2009 12:27 pm
 Posts: 813
 Location: Yogyakarta, Indonesia. A slice o' paradise.
   |   Lua on shield help?So I got this code: Code: function Create(self)for i = 1, MovableMan:GetMOIDCount()-1 do
 local shield = MovableMan:GetMOFromID(i);
 if shield.ClassName == "HeldDevice" and shield.PresetName == "Blast Shield" then
 self.parent = MovableMan:GetMOFromID(shield.RootID);
 if MovableMan:IsActor(self.parent) then
 self.parent = ToAHuman(self.parent);
 end
 end
 end
 
 --self.walltimer = Timer();
 
 end
 
 function CreateBeamWall(self, n)
 for i = -n, n do
 self.wall.n = CreateMOPixel("shieldbeam");
 self.wall.n.HFlipped = self.HFlipped;
 if self.HFlipped == true then
 self.wall.n.Pos = self.Pos + Vector(10,n):RadRotate(self.RotAngle);
 else
 self.wall.n.Pos = self.Pos - Vector(10,n):RadRotate(self.RotAngle);
 end
 self.wall.n.Vel = self.Vel + Vector(5,n):RadRotate(self.RotAngle);
 MovableMan:AddParticle(self.wall.n);
 end
 end
 
 function Update(self)
 if self.parent.PresetName == "'Anubis'-class Unit" and self.parent.actionphase == 2 then
 --   if self.Vel == Vector(60,0):RadRotate(self.RotAngle) then
 self.RotAngle = self.parent.RotAngle;
 CreateBeamWall(self, 50);
 
 end
 end
but it spams errors that self.parent is nil. How do I fix it? How do I find its parent without resorting to distance checks? BTW, it's so that when it's held by an 'Anubis'-class Unit, and the actor activates a Lua 'skill', it emits a blastwave in front of itself.
 
 |  
			| Sat Oct 22, 2011 5:53 pm | 
					
					       |  
		|  |  
			| CaveCricket48 
					Joined: Tue Jun 12, 2007 11:52 pm
 Posts: 13144
 Location: Here
   |   Re: Lua on shield help?This script is directly attached to the shield, yes?
 Edit: Goddamn ninja.
 
 
 
    							Last edited by CaveCricket48 on Sat Oct 22, 2011 6:00 pm, edited 1 time in total. 
 
 |  
			| Sat Oct 22, 2011 5:59 pm | 
					
					   |  
		|  |  
			| carriontrooper 
					Joined: Mon Apr 13, 2009 12:27 pm
 Posts: 813
 Location: Yogyakarta, Indonesia. A slice o' paradise.
   |   Re: Lua on shield help?CaveCricket48 wrote: This script is directly attached to the shield, yes?Yep.
 
 |  
			| Sat Oct 22, 2011 5:59 pm | 
					
					       |  
		|  |  
			| CaveCricket48 
					Joined: Tue Jun 12, 2007 11:52 pm
 Posts: 13144
 Location: Here
   |   Re: Lua on shield help?Alright, Non's script should work then. 
 
 |  
			| Sat Oct 22, 2011 6:00 pm | 
					
					   |  
		|  |  
			| carriontrooper 
					Joined: Mon Apr 13, 2009 12:27 pm
 Posts: 813
 Location: Yogyakarta, Indonesia. A slice o' paradise.
   |   Re: Lua on shield help?Allright, Non's script generates no errors... but the shield wall doesn't appear at all. Here's the new code. Code: --[[function Create(self)for i = 1, MovableMan:GetMOIDCount()-1 do
 local shield = MovableMan:GetMOFromID(i);
 if shield.ClassName == "HeldDevice" and shield.PresetName == "Blast Shield" then
 self.parent = MovableMan:GetMOFromID(shield.RootID);
 if MovableMan:IsActor(self.parent) then
 self.parent = ToAHuman(self.parent);
 end
 end
 end
 
 --self.walltimer = Timer();
 
 end
 ]]
 function CreateBeamWall(self, n)
 for i = -n, n do
 self.wall.n = CreateMOPixel("shieldbeam");
 self.wall.n.HFlipped = self.HFlipped;
 if self.HFlipped == true then
 self.wall.n.Pos = self.Pos + Vector(20,n):RadRotate(self.RotAngle);
 else
 self.wall.n.Pos = self.Pos - Vector(20,n):RadRotate(self.RotAngle);
 end
 self.wall.n.Vel = self.Vel + Vector(5,n):RadRotate(self.RotAngle);
 MovableMan:AddParticle(self.wall.n);
 end
 end
 
 function Update(self)
 self.actor = MovableMan:GetMOFromID(self.RootID);
 if MovableMan:IsActor(self.actor) then
 self.parent = ToActor(self.actor);
 self.Work = true;
 else
 self.Work = false;
 end
 
 if self.Work == true then
 if self.parent.PresetName == "'Anubis'-class Unit" and self.parent.actionphase == 2 then
 --   if self.parent.PresetName == "'Anubis'-class Unit" and self.Vel == Vector(60,0):RadRotate(self.RotAngle) then
 --   if self.Vel == Vector(60,0):RadRotate(self.RotAngle) then
 self.RotAngle = self.parent.RotAngle;
 CreateBeamWall(self, 50);
 
 end
 end
 end
Is it the CreateBeamWall that didn't work? should I add ToDelete and ToSettle = false?
 
 |  
			| Sat Oct 22, 2011 6:18 pm | 
					
					       |  
		|  |  
			| CaveCricket48 
					Joined: Tue Jun 12, 2007 11:52 pm
 Posts: 13144
 Location: Here
   |   Re: Lua on shield help?I don't think you made your CreateBeamWall function correctly. Functions are (roughly) formatted like: Code: FunctionName(argument1, argument2, [...])<stuff>
 return <value>
 end
 
Edit: Disregard this, I misread the code.
 
 
    							Last edited by CaveCricket48 on Sat Oct 22, 2011 10:47 pm, edited 1 time in total. 
 
 |  
			| Sat Oct 22, 2011 6:30 pm | 
					
					   |  
		|  |  
			| zoidberg 
					Joined: Fri Feb 25, 2011 3:52 pm
 Posts: 39
   |   Re: Lua on shield help?Code: function CreateBeamWall(self, n)for i = -n, n do
 local wall = CreateMOPixel("shieldbeam")
 if self.HFlipped then
 wall.Pos = self.Pos + Vector(20, n):RadRotate(self.RotAngle)
 else
 wall.n.Pos = self.Pos - Vector(20, n):RadRotate(self.RotAngle)
 end
 wall.Vel = self.Vel + Vector(5, n):RadRotate(self.RotAngle)
 MovableMan:AddMO(wall)
 end
 end
this should work. (i don't think that pixels can be hflipped, and that's not the only thing) edit: also, you can't access parent's variables (actionphase, in your case) this way, afaik. store var in sharpness, or anything else, or use kyred's method.
 
 |  
			| Sat Oct 22, 2011 9:36 pm | 
					
					   |  
		|  |  
			| carriontrooper 
					Joined: Mon Apr 13, 2009 12:27 pm
 Posts: 813
 Location: Yogyakarta, Indonesia. A slice o' paradise.
   |   Re: Lua on shield help?zoidberg wrote: also, you can't access parent's variables (actionphase, in your case) this way, afaik. store var in sharpness, or anything else, or use kyred's method.Hmm, weird, since in another mod-in-development I can successfully 'inherit' a missile's team to its lua-generated splinters, which meant I could 'write' from one lua code into another lua code. But just in case, I wanna know of kyred's method; care to point me in the thread's direction?
 
 |  
			| Sun Oct 23, 2011 5:55 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: Lua on shield help?Kyred's method is detailed here . It involves sifting through large tables, so it's not exactly the fastest, but it does let you access variables in other scripted objects. The only variables you can access "normally" are ones defined by the game itself, like Sharpness, HFlipped, Mass, or, as mentioned, Team.
 
 |  
			| Sun Oct 23, 2011 7:15 am | 
					
					     |  
		|  |  
			| carriontrooper 
					Joined: Mon Apr 13, 2009 12:27 pm
 Posts: 813
 Location: Yogyakarta, Indonesia. A slice o' paradise.
   |   Re: Lua on shield help?Hmm, thanks... I think I'll make it activate if it goes over a certain speed, but just doing Code: if self.Vel >= Vector(n,0):RadRotate(self.RotAngle) thenspams error about vectors. Any way to fix this part?
 
 |  
			| Sun Oct 23, 2011 8:03 am | 
					
					       |  
		|  |  
			| zoidberg 
					Joined: Fri Feb 25, 2011 3:52 pm
 Posts: 39
   |   Re: Lua on shield help?Nonsequitorian wrote: zoidberg wrote: (i don't think that pixels can be hflipped, and that's not the only thing)
Why not, Zoidberg?errr... fliping a pixel... it has no front, no back, no rotangle. i can't believe that it could be flipped. carriontrooper wrote: Hmm, thanks... I think I'll make it activate if it goes over a certain speed, but just doing Code: if self.Vel >= Vector(n,0):RadRotate(self.RotAngle) thenspams error about vectors. Any way to fix this part?if you put it in update function, then you just haven't "n" defined. and i don't get the point of this check.also, i don't remember correctly, but i think you can't compare vectors like that
 
 |  
			| Sun Oct 23, 2011 9:36 am | 
					
					   |  
		|  |  
			| carriontrooper 
					Joined: Mon Apr 13, 2009 12:27 pm
 Posts: 813
 Location: Yogyakarta, Indonesia. A slice o' paradise.
   |   Re: Lua on shield help?Yeah, I got it working now. It will generate loads of awesome when I release it in my SET mod, thanks all!one hint: OOH YEEEAH!
 
 
 |  
			| Sun Oct 23, 2011 9:50 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: Lua on shield help?No, that's not how it works. Zoidberg is right. Take a look at the Lua documentation for MOSprite . HFlipped and RotAngle are defined as properties of an MOSprite. MOSParticles  descend from MOSprite (hence the "MOS" instead of "MO"), meaning they inherit those properties. On the other hand, MOPixels  descend directly from MovableObject, meaning that they don't have those properties. You can set those properties, but it stores them in the same way as if you did "self.myVariable = 4" - that is, it won't be accessible by other scripted objects because it's a user-defined property instead of a hardcoded one.
 
 |  
			| Sun Oct 23, 2011 7:50 pm | 
					
					     |  
		|  |  
			| Kyred 
					Joined: Sun May 31, 2009 1:04 am
 Posts: 308
   |   Re: Lua on shield help?TheLastBanana wrote: Kyred's method is detailed here . It involves sifting through large tables, so it's not exactly the fastest, but it does let you access variables in other scripted objects. The only variables you can access "normally" are ones defined by the game itself, like Sharpness, HFlipped, Mass, or, as mentioned, Team. Well, if you want to be technical, referencing most variables in LUA involves tables.  Also, that took a while to figure out  
 
 |  
			| Mon Nov 07, 2011 7:27 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: Lua on shield help?Heh, true, although (at least as far as I remember) those tables don't empty themselves, so as the game goes on, it gets slower to look up objects in it. Maybe that was only when PresetMan:ReloadAllScripts is called, though - it's been a while since I've used that technique. 
 
 |  
			| Mon Nov 07, 2011 6:51 pm | 
					
					     |  
		|  |  
		|  |  
 
	
		| 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
 
 |  
   |