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

Creating a Re-Gbulator?
http://forums.datarealms.com/viewtopic.php?f=1&t=45219
Page 1 of 1

Author:  Jackslancer [ Fri Apr 05, 2013 9:39 am ]
Post subject:  Creating a Re-Gbulator?

Has ANYONE ever figure out if there was a way to add gibs back onto an actor? I mean Arms, and Lost limbs?

I was thinking there could be a way to overwrite the Arm status of someone with some kind of lua so they get new arms.

Possible or no?

I mean the ZomBots use a complex lua with a chance that upon the death and the head is intact that the head generates a new body with a nice animation and everything....

but i just want a smaller version and i need it to be used onto any actors the item is used on, etc.

Author:  helifreak [ Fri Apr 05, 2013 1:03 pm ]
Post subject:  Re: Creating a Re-Gbulator?

That won't work as there is no function exposed to lua. The zombot works by spawning a new actor in its place.

Author:  Jackslancer [ Fri Apr 05, 2013 2:49 pm ]
Post subject:  Re: Creating a Re-Gbulator?

helifreak wrote:
That won't work as there is no function exposed to lua. The zombot works by spawning a new actor in its place.


I was afraid of this, is it possible then to create a rebirth vehicle that kills an actor off screen, and then when selected again re-spawn that actor again?

Meaning, if I did create such a device, would I need to define the actor specifically by list, or would I just look for the appropriate Lua hooks to add to my device so it will take any actor, and then respawn last actor used on the device.

Author:  CaveCricket48 [ Fri Apr 05, 2013 3:11 pm ]
Post subject:  Re: Creating a Re-Gbulator?

Not entirely sure what you're asking, but recreating actors is a simple matter of copying the actor's PresetName and creating a new actor later using that PresetName. What isn't simple is inventory copying, but it's still possible.

Here's a script of my repair kit, which is a particle fired from a device that completely "repairs" the user:
Code:
function Create(self)
   self.maxcopyitems = 15; -- maximum number of items to copy from the original actor
   self.sameitem = false;

   self.curdist = 20;
   for i = 1,MovableMan:GetMOIDCount()-1 do
      self.gun = MovableMan:GetMOFromID(i);
      if self.gun.PresetName == "Repair Kit Mk2" and self.gun.ClassName == "HDFirearm" and SceneMan:ShortestDistance(self.Pos,self.gun.Pos,SceneMan.SceneWrapsX).Magnitude < self.curdist then
         self.actor = MovableMan:GetMOFromID(self.gun.RootID);
         if MovableMan:IsActor(self.actor) then
            self.parent = ToActor(self.actor);
            self.parentname = self.parent.PresetName;
            self.repairedactor = CreateAHuman(self.parentname);
            self.repairedactor:AddInventoryItem(CreateHDFirearm("Repair Kit Mk2"));

            self.itemblocker = CreateTDExplosive("Stone","Ronin.rte");
            self.itemblocker.PresetName = "Repair Kit Blocker Rock";
            self.parent:AddInventoryItem(self.itemblocker);

            self.parent:GetController():SetState(Controller.WEAPON_CHANGE_PREV,true);

--            self.inventorychecker = self.parent:Inventory();
--            if self.inventorychecker ~= nil then
--               self.parent:SwapNextInventory(self.inventorychecker,true);
--            end

            for i = 1, self.maxcopyitems do

               self.potentialwep = self.parent:Inventory();
               if self.potentialwep ~= nil and self.potentialwep.PresetName ~= "Repair Kit Blocker Rock" then

                  if self.potentialwep.ClassName == "HDFirearm" then
                     self.repairedactor:AddInventoryItem(CreateHDFirearm(self.potentialwep.PresetName));
                  elseif self.potentialwep.ClassName == "TDExplosive" then
                     self.repairedactor:AddInventoryItem(CreateTDExplosive(self.potentialwep.PresetName));
                  elseif self.potentialwep.ClassName == "HeldDevice" then
                     self.repairedactor:AddInventoryItem(CreateHeldDevice(self.potentialwep.PresetName));
                  end

                  self.parent:SwapNextInventory(self.potentialwep,true);
               else
                  break;
               end
            end

            if self.parent:IsPlayerControlled() == true then
               self.parentplayer = self.parent:GetController().Player;
            end

            self.repairedactor.HFlipped = self.parent.HFlipped;
            self.repairedactor:SetAimAngle(self.parent:GetAimAngle(false));
            self.repairedactor.Pos = self.parent.Pos;
            self.repairedactor.Team = self.parent.Team;
            self.repairedactor.AIMode = Actor.AIMODE_SENTRY;
            self.parent.ToDelete = true;
            MovableMan:AddActor(self.repairedactor);
            if self.parentplayer ~= nil then
               ActivityMan:GetActivity():SwitchToActor(self.repairedactor,self.parentplayer,self.repairedactor.Team);
            end
            local sparticle = CreateAEmitter("Repair Kit Mk2 Sound Repair");
            sparticle.Pos = self.repairedactor.Pos;
            MovableMan:AddParticle(sparticle);
            self.repairedactor:FlashWhite(610);
            ActivityMan:GetActivity():ReportDeath(self.repairedactor.Team,-1);

         end
      end
   end

   self.ToDelete = true;
end

Mod is here if you want to play around with it.

Author:  Jackslancer [ Fri Apr 05, 2013 6:56 pm ]
Post subject:  Re: Creating a Re-Gbulator?

Ah, I have that mod already and didnt see that.


Well, is it possible to create a mod that works like this mod's mechs?

viewtopic.php?f=61&t=19665

I was going to have a within range on use icon if condition that will teleport the actor


So I see how you got the actor

self.parent = ToActor(self.actor);
self.parentname = self.parent.PresetName;
self.repairedactor = CreateAHuman(self.parentname);
self.repairedactor:AddInventoryItem(CreateHDFirearm("Repair Kit Mk2"));

self.itemblocker = CreateTDExplosive("Stone","Ronin.rte");
self.itemblocker.PresetName = "Repair Kit Blocker Rock";
self.parent:AddInventoryItem(self.itemblocker);

Thanks alot.

But how would I apply this to say, another actor or craft, and not just the device?


Also, what is this lua for?


self.parent:GetController():SetState(Controller.WEAPON_CHANGE_PREV,true);

-- self.inventorychecker = self.parent:Inventory();
-- if self.inventorychecker ~= nil then
-- self.parent:SwapNextInventory(self.inventorychecker,true);
-- end

for i = 1, self.maxcopyitems do

self.potentialwep = self.parent:Inventory();
if self.potentialwep ~= nil and self.potentialwep.PresetName ~= "Repair Kit Blocker Rock" then

if self.potentialwep.ClassName == "HDFirearm" then
self.repairedactor:AddInventoryItem(CreateHDFirearm(self.potentialwep.PresetName));
elseif self.potentialwep.ClassName == "TDExplosive" then
self.repairedactor:AddInventoryItem(CreateTDExplosive(self.potentialwep.PresetName));
elseif self.potentialwep.ClassName == "HeldDevice" then
self.repairedactor:AddInventoryItem(CreateHeldDevice(self.potentialwep.PresetName));
end

self.parent:SwapNextInventory(self.potentialwep,true);
else
break;
end
end

if self.parent:IsPlayerControlled() == true then
self.parentplayer = self.parent:GetController().Player;
end

self.repairedactor.HFlipped = self.parent.HFlipped;
self.repairedactor:SetAimAngle(self.parent:GetAimAngle(false));
self.repairedactor.Pos = self.parent.Pos;
self.repairedactor.Team = self.parent.Team;
self.repairedactor.AIMode = Actor.AIMODE_SENTRY;
self.parent.ToDelete = true;
MovableMan:AddActor(self.repairedactor);
if self.parentplayer ~= nil then
ActivityMan:GetActivity():SwitchToActor(self.repairedactor,self.parentplayer,self.repairedactor.Team);
end
local sparticle = CreateAEmitter("Repair Kit Mk2 Sound Repair");
sparticle.Pos = self.repairedactor.Pos;
MovableMan:AddParticle(sparticle);
self.repairedactor:FlashWhite(610);
ActivityMan:GetActivity():ReportDeath(self.repairedactor.Team,-1);

end
end
end

self.ToDelete = true;
end

is that to control the amount of repair kits in any given inventory so more dont accidentally spawn when the actor is recreated?


I want to make a actor, or a craft, without legs called a "Cybernetics Lab". If I "borrowed" the type of lua from the apocalypse mod, where when an actor selects a pie function actor is added to the inventory and killed and then respawned, how would I do that?

Author:  CaveCricket48 [ Fri Apr 05, 2013 7:05 pm ]
Post subject:  Re: Creating a Re-Gbulator?

Jackslancer wrote:
Also, what is this lua for?

That is what actually copies the actor's inventory.

And to actually get a pointer to other actors, it depends on how you'd want it to work. You'd either need to do an area scan or a ray cast of some sort.

Author:  Jackslancer [ Fri Apr 05, 2013 7:10 pm ]
Post subject:  Re: Creating a Re-Gbulator?

CaveCricket48 wrote:
Jackslancer wrote:
Also, what is this lua for?

That is what actually copies the actor's inventory.

And to actually get a pointer to other actors, it depends on how you'd want it to work. You'd either need to do an area scan or a ray cast of some sort.


hmmmmm ok I will go read up on my lua and report back later..... hopefully...

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