|
Page 1 of 1
|
[ 4 posts ] |
|
Author |
Message |
x50mmboy
Joined: Wed Sep 28, 2011 2:35 am Posts: 8
|
force shield
hi, some time ago someone post the force shield like the protoos units, there is a little problem with that the shield by some weapons can be penetrated before it's break, the missiles can penetrate it, slowly but they can and some gun shots like the shot of the sjg-4 of the werhmacht mod, the missiles suppose to explode in the surface of the shield, no transpassing it, so i'm wandering if it's a propertie that change this or some command line in the lua script or in the ini file this is the lua script: i'm already modificate it, only the resistence of the shield. function Create(self) self.shieldmult = 0.8 --set the multiplier to slow particles with self.counter = 0; --set shield damage to 0 self.countertime = Timer() --set the regen timer local curdist = 80; --find the closest actor, set it to be self.parent 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 curdist = dist; self.parent = actor; end end
self.yellow = CreateAEmitter("forceshieldwall2b") --create the yellow glow emitter self.red = CreateAEmitter("forceshieldwall3") --and the red self.yellow.Pos = self.Pos --and place them on self self.red.Pos = self.Pos MovableMan:AddParticle(self.yellow) --and add them on scene MovableMan:AddParticle(self.red)
if self.parent ~= nil then --if parent was found calculate offset vector to it self.offset = Vector(self.parent.Pos.X - self.Pos.X , self.parent.Pos.Y - self.Pos.Y) end
self.disptime = Timer() --set the print timer
end
function Update(self) if MovableMan:IsActor(self.parent) then --make sure parent is accessible to avoid crashing self.Pos = self.parent.EyePos --set the center of the shield and coloured emitters to the parent's head self.yellow.Pos = self.parent.EyePos self.red.Pos = self.parent.EyePos self.impulse = Vector(0,0) --reset impulse for particle in MovableMan.Particles do --cycle through particles if particle.HitsMOs == true then --if the particle is dangerous dist = SceneMan:ShortestDistance(self.Pos , particle.Pos , true) --get a vector pointing to the particle if dist.Magnitude < 60 and (not(self.PresetName == particle.PresetName)) then --if the particle is close if math.abs(particle.Vel.AbsRadAngle - dist.AbsRadAngle) > math.pi / 4 then --if the particle is headed towards parent self.impulse = Vector(self.impulse.X + particle.Vel.X * self.shieldmult * particle.Mass , self.impulse.Y + particle.Vel.Y * self.shieldmult * particle.Mass) --add the force caused by the particle to impulse --self.impulse:CapMagnitude(1200) particle.Vel = Vector(particle.Vel.X * self.shieldmult , particle.Vel.Y * self.shieldmult) --slow down the particle self.counter = self.counter + math.abs(particle.Mass) * particle.Vel.Magnitude / self.shieldmult --decrease the strength of the shield self.countertime:Reset() --reset the shield recharge time self.glow = CreateMOSParticle("Shield glow") --create a glow on the particle self.glow.Pos = particle.Pos MovableMan:AddParticle(self.glow) end end end end for particle in MovableMan.Items do --do the same thing to items dist = SceneMan:ShortestDistance(self.Pos , particle.Pos , true) if dist.Magnitude < 60 and (not(self.PresetName == particle.PresetName)) and particle.Vel.Magnitude > 5 then if math.abs(particle.Vel.AbsRadAngle - dist.AbsRadAngle) > math.pi / 4 then self.impulse = Vector(self.impulse.X + particle.Vel.X * self.shieldmult * particle.Mass , self.impulse.Y + particle.Vel.Y * self.shieldmult * particle.Mass) --self.impulse:CapMagnitude(2200) particle.Vel = Vector(particle.Vel.X * self.shieldmult , particle.Vel.Y * self.shieldmult) self.counter = self.counter + math.abs(particle.Mass) * particle.Vel.Magnitude / self.shieldmult self.countertime:Reset() self.glow = CreateMOSParticle("Shield glow") --create a glow on the particle self.glow.Pos = particle.Pos MovableMan:AddParticle(self.glow) end end end self.impulse:SetMagnitude(self.impulse.Magnitude * 2) self.parent:AddAbsImpulseForce(self.impulse , self.parent.Pos) --give parent a jolt else --if parent is dead, gib the shield and the colour emitters self:GibThis() self.yellow:GibThis() self.red:GibThis() end
if self.counter < 20500 then --if the shield is strong disable non-blue emitters, enable blue, set shield velocity multiplier to be small self:EnableEmission(true) self.yellow:EnableEmission(false) self.red:EnableEmission(false) self.shieldmult = 50 end if self.counter > 20500 and self.counter < 30000 then --if the shield has taken some damage, enable yellow emitter, disable others, set shield velocity multiplier to be medium self:EnableEmission(false) self.yellow:EnableEmission(true) self.red:EnableEmission(false) self.shieldmult = 0.5 end if self.counter > 30000 then --if the shield is weak, enable red, disable others, set shield velocity multiplier to be large self:EnableEmission(false) self.yellow:EnableEmission(false) self.red:EnableEmission(true) self.shieldmult = 0.7 end if self.counter > 50000 then --if the shield is too damaged, gib it and the emitters self:GibThis() self.yellow:GibThis() self.red:GibThis() end
if self.countertime:IsPastSimMS(3000) and self.counter > 0 then --if the shield hasn't taken hits in 3 seconds start regenerating it self.counter = self.counter - 600 * TimerMan.DeltaTimeSecs end
if self.disptime:IsPastSimMS(500) then --print shield strength every half a second print(math.floor(self.counter)) self.disptime:Reset() end
end
function Destroy(self) endplz help thnks
|
Sat Mar 17, 2012 3:25 am |
|
|
carriontrooper
Joined: Mon Apr 13, 2009 12:27 pm Posts: 813 Location: Yogyakarta, Indonesia. A slice o' paradise.
|
Re: force shield
Whoa nelly, that code bit could be spoilered and put in the code tag. So that people could 1) easily read it 2) easily copy it Because if you just pasted it on like that, people would have trouble copying it into a .lua file, because forum formatting does things to text like that. If you're feeling more adventurous, try attaching the .lua file, or a .rar of the .rte here. Good luck!
|
Sat Mar 17, 2012 4:01 pm |
|
|
MesoTroniK
Joined: Mon Dec 07, 2009 12:56 am Posts: 36
|
Re: force shield
Sorry I cannot help you with this scripting, but I did want to mention that your shield if it works as advertised interests me greatly. Some of Mehman's units that have a shield stop bullets, but reflect things like launched grenades and rockets. That type while extemely entertaining, can be a bit OP. A version that takes a rocket in the chin and can also stop all the particles spewed from the blast, but lose alot of it's energy sounds like something I would add to this robot soldier I'm making.
|
Mon Apr 09, 2012 1:24 am |
|
|
Skeggy
Joined: Mon Aug 22, 2011 3:12 am Posts: 102
|
Re: force shield
Where could I find the original script?
|
Sat Apr 14, 2012 7:47 pm |
|
|
|
|
Page 1 of 1
|
[ 4 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
|
|