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

LUA: Using JoyButtonReleased for burst mode
http://forums.datarealms.com/viewtopic.php?f=1&t=45548
Page 1 of 1

Author:  numanair [ Fri Jan 17, 2014 8:50 am ]
Post subject:  LUA: Using JoyButtonReleased for burst mode

I am trying to create a burst mode pistol that is not fully automatic. This means when you hold the trigger it will only fire one burst (3 rounds). I am using UInputMan:JoyButtonReleased in a modified version of the Burst.lua from the coalition autopistol.

The problem is getting it to work with the current player's controller instead of only player 1's controller.

Code:
if self.canBurst == false then
   self:Deactivate();
   if UInputMan:JoyButtonReleased(0,5) then
      self.canBurst = true;

Author:  Vlads [ Fri Jan 17, 2014 12:45 pm ]
Post subject:  Re: LUA: Using JoyButtonReleased for burst mode

Umm....Isn't there's already a burst-fire script for the Coalition auto pistol?

Author:  Bad Boy [ Fri Jan 17, 2014 4:18 pm ]
Post subject:  Re: LUA: Using JoyButtonReleased for burst mode

This seems like a very silly way of doing it, using only the joybutton means it'll only work for controllers, whereas if you use the actor's lua controller (the lua interface rather not the physical controller) you can probably make it work with any control scheme.
Either way, you'd need to get the actor holding the gun and get his player or controller. So something like the following would probably help:
Code:
function Create(self)
self.Parent = nil;
self.ParentPlayer = nil;
function Update(self)
  --If it's not being held by an actor, set its parent and parent player to nil
  if self.ID == self.RootID then
    self.Parent = nil;
    self.ParentPlayer = nil;
  --If it is being held, give it a parent and find the parent's player
  else
    if self.Parent == nil or self.ParentPlayer == nil then
    self.Parent = MovableMan:GetMOFromID(self.ID);
    self.ParentPlayer = self.Parent:GetController().Player;
  end
  --Your stuff follows, except the 0 in joybuttonreleased is changed to self.ParentPlayer
  --Also, you should consider using self.Parent:GetController():IsState(Controller.RELEASE_PRIMARY) instead of uinputman stuff
end

By the way, this should probably have been in the lua scripting subforum.

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