Data Realms Fan Forums
http://forums.datarealms.com/

SWAT Kats, the Radical Squadron. Lua help needed.
http://forums.datarealms.com/viewtopic.php?f=75&t=15474
Page 3 of 3

Author:  Sean Mirrsen [ Tue Jun 30, 2009 6:00 am ]
Post subject:  Re: SWAT Kats, the Radical Squadron. Lua help needed.

Thankfully, the Glovatrix are plot-powered. I mean, seriously, just how many useful devices are stashed into them? Cement guns, grappling hooks, normal missiles, octopus missiles, net missiles, turboblades, boomerangs, blowtorch, buzzsaw (launchable buzzsaw), and that's only as much as I can remember off the top of my head. So, it won't be too bad if the weaponry is infinite, with cooldown times for every specific weapon.

Another thing occured to me - another version of the 'Kats could be made, specifically the 'Kats flying in Ejektor seats. It'd have to be an AHuman, most likely, but something akin to the Lua armed drones could also work.

Author:  Sean Mirrsen [ Tue Jun 30, 2009 6:48 pm ]
Post subject:  Re: SWAT Kats, the Radical Squadron. Lua help needed.

Ok, numgun, I took your harpoon code and bastardized it so that it has actor:AttachEmitter(self,DifX,DifY) and self.Pinstrength=100 but it doesn't work right. It does work somewhat, because the projectile is HitsMOs=0 but interacts with actors, seemingly bouncing away. What am I missing? The projectile is now low-mass, and comparably low-power, so it shouldn't be able to break away. Help?

Edit: so, it wasn't working after all. Some weird stuff with GetsHitByMOs caused it to bounce off. Maybe it's impossible for an emitter to just attach itsef? I tried to just call an " actor:AttachEmitter(CreateAEmitter("Mini Octopus Open","SWAT Kats.rte"),DifX, DifY) ", but it still won't register. DifX and DifY are locals holding the X and Y difference in position. What am I doing wrong?
Code:
function Create(self)
    self.LTimer = Timer();
   --local isAttached = false
end

function Update(self)
    if self.LTimer:IsPastSimMS(5) then
      for actor in MovableMan.Actors do
         if (math.abs(actor.Pos.X - self.Pos.X) < 18) and (math.abs(actor.Pos.Y - self.Pos.Y) < 18) and (actor.PinStrength <= 50) then
         --Pin the ship and place it nicely in the docking unit.
            --if isAttached = false then
            local DifX = self.Pos.X - actor.Pos.X;
            local DifY = self.Pos.Y - actor.Pos.Y;
            --local DifA = self.RotAngle - actor.RotAngle;
            self.PinStrength = 0;
            actor:AttachEmitter(CreateAEmitter("Mini Octopus Open","SWAT Kats.rte"),DifX,DifY);
            self.PinStrength = 10;
            --isAttached = true;
            --else
            --self.RotAngle = actor.RotAngle + DifA;
            --end
         end   
      end
   end
   if self.LTimer:IsPastSimMS(5000) then
      self:GibThis() ;
   end
end

The isAttached var is my attempt at streamlining the code execution (since I don't want the missile to grab several actors at once), and it's commented out until I can get the main thing working.

Author:  numgun [ Wed Jul 01, 2009 12:20 am ]
Post subject:  Re: SWAT Kats, the Radical Squadron. Lua help needed.

PinStrength variable does not attach an object to another. What it does is it pins an object (itself or someone else like: self.PinStrgh and actor.PinStrgh respectively).

What my harpoon gun did is scan for an actor within the area of 18 pixels around the harpoon and then if an actor was in that little area, he would be dragged by the harpoon by moving to the harpoon's position and inheriting its velocity.

Code:
            actor.PinStrength = 0;
            actor.Pos = self.Pos;
            actor.Vel = self.Vel;
            actor.PinStrength = 5;


This code unpins the actor first so it can inherit velocity.
The second part moves the actor to the harpoon's own position. Do note, the Update() function repeats EVERY FRAME while its active.
The 3rd line sets the caught actor's velocity to be the same as harpoon's own.

Finally the last line gives pinstrength of 5 to the actor. I used this for my harpoon gun so after the harpoon came to an end, it would sort of "pin" the actor where it was, making him not able to move unless a small force of 5 impulses were hit by it and then it would become free.

Mass, velocity and anything else the harpoon has is no matter. The code will always do the same.

I suggest you take the Lua stuff to Lua section of the forum since I am a total newbie at Lua myself.
At the section, more experienced people will be able to help you out.


Or heck, ask an admin to move your topic to mod making since more traffic of people come by there.
Mainly because this is a mod in making and you've done considerable work already.

Author:  Sean Mirrsen [ Wed Jul 01, 2009 9:17 am ]
Post subject:  Re: SWAT Kats, the Radical Squadron. Lua help needed.

I don't like having threads moved. I'll rather start another thread in Mod Making, because then it will only contain things relevant to the mod in progress.

Figuring out Lua would be easier if it cared to dump errors somewhere. As far as I can see, if there is an error in the script, it won't run, and this seems to be what's happening with mine.

Author:  mail2345 [ Wed Jul 01, 2009 9:20 am ]
Post subject:  Re: SWAT Kats, the Radical Squadron. Lua help needed.

AttachEmitter is broken. Data really needs to clean up his bindings.

Author:  Sean Mirrsen [ Wed Jul 01, 2009 9:34 am ]
Post subject:  Re: SWAT Kats, the Radical Squadron. Lua help needed.

Well, broken or no, I actually found the error. I couldv'e sworn I checked the console after using the things, but it seems I need an AEmitter* instead of an AEmitter, and a vector instead of two coords. Who would've thunk it? What's the difference between an AEmitter and an AEmitter*, anyway?

edit: ok, object and object pointer. Well, it works now, in the sense that it doesn't generate any errors by itself. But it crashes CC as soon as I try to attach the thing, so yeah, it must be broken. Any other way I can attach anything with a force applied, without resorting to manually calculating thrust-to-weight ratios?

Author:  Sean Mirrsen [ Wed Jul 01, 2009 10:19 pm ]
Post subject:  Re: SWAT Kats, the Radical Squadron. Lua help needed.

Zuxxezz! :D

Hmm, forgot to take a pic. Anyway, it really works now. The mini-octopus works by casting a short MORay in front of it, and attaching itself to the first thing it identifies as a viable target. Currently, that means any items or attachables - strangely, does not work on dropships or unarmed dummies, but these can be fixed. After attaching, it applies a small amount of force (using AddForce) to the item in question, propelling it somewhere.

I also have an idea for the Glovetrix, but it needs some experimenting first.

If the weapon constantly emits a short-lived (really short-lived, a few milliseconds) MOSParticle that happens to be very close to the center of the actor holding it, the actor could detect the presence of the particle and identify that the weapon is currently in its hands, without shuffling through the entire MO list. Better yet, by simply using the fixed offset as a guide, you could use GetMOAtPixel (or what was that function?) to get a bead on the weapon itself, and work with its frame of reference. After that, spawning projectiles is relatively easy.

Page 3 of 3 All times are UTC [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/