SetWeaponTarget: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
(Added OOP syntax and improved the page)
(Remove obsolete Requirements section)
 
(12 intermediate revisions by 4 users not shown)
Line 2: Line 2:
{{Client function}}
{{Client function}}
This function sets the target of a [[Element/Weapon|custom weapon]]. There are 3 different targeting modes, which are explained below.
This function sets the target of a [[Element/Weapon|custom weapon]]. There are 3 different targeting modes, which are explained below.
{{Note|[[Element/Weapon|Custom weapons]] fire targets with no recoil (so they never miss a shot). If you want a custom weapon to take into account recoil, you will have to script it by firing at fixed coordinates.}}


{{Note|[[Element/Weapon|Custom weapons]] target its target (assigned by this function) with no recoil. If you want a custom weapon to take into account recoil, you will have to script it by firing at a fixed coordinates.}}
{{OOP|Variable is read only.|[[Element/Weapon|weapon]]:setTarget|target|getWeaponTarget}}
 
==Syntax (target an element)==
Fires the weapon at a physical [[element]].


{{OOP|Variable is read only.|[[Element/Weapon|weapon]]:setTarget|target|getWeaponTarget}}
<syntaxhighlight lang="lua">bool setWeaponTarget ( weapon theWeapon, element theTarget [, int theComponent = 255 ] )</syntaxhighlight>
==Syntax (target an entity)==
<syntaxhighlight lang="lua">bool setWeaponTarget ( weapon theWeapon, element theTarget, int theComponent )</syntaxhighlight>


===Required Arguments===
===Required arguments===
* '''theWeapon:''' The weapon to set the target of.
* '''theWeapon:''' The weapon to set the target of.
* '''theTarget:''' The target entity of the shot to shoot at.
* '''theTarget:''' The [[element]] to shoot at. It can be a [[player]], [[ped]], [[vehicle]] or [[object]].
* '''theComponent:''' The component of the target to shoot at:
 
** Vehicles:
===Optional arguments===
* '''theComponent:''' The component of the target to shoot at. This argument is only relevant when used in the following element types:
** '''[[Vehicle|Vehicles]]''':
*** '''0''': front left tire.
*** '''0''': front left tire.
*** '''1''': front right tire.  
*** '''1''': front right tire.  
Line 19: Line 23:
*** '''3''': rear right tire.
*** '''3''': rear right tire.
*** '''255''': center of the car (position returned by [[getElementPosition]]).
*** '''255''': center of the car (position returned by [[getElementPosition]]).
** Peds only (see [[getPedBonePosition]] to know where is located each bone):
** '''[[Ped|Peds]]''' (players '''not''' included; see [[getPedBonePosition]] to know where each bone is located):
***'''1:''' shoots at ''BONE_PELVIS1''.
***'''1:''' ''BONE_PELVIS1'' position.
***'''2:''' shoots at ''BONE_PELVIS''.
***'''2:''' ''BONE_PELVIS'' position.
***'''3:''' shoots at ''BONE_SPINE1''.
***'''3:''' ''BONE_SPINE1'' position.
***'''4:''' shoots at ''BONE_UPPERTORSO''.
***'''4:''' ''BONE_UPPERTORSO'' position.
***'''5:''' shoots at ''BONE_NECK''.
***'''5:''' ''BONE_NECK'' position.
***'''6:''' shoots at ''BONE_HEAD2''.
***'''6:''' ''BONE_HEAD2'' position.
***'''7:''' shoots at ''BONE_HEAD1''.
***'''7:''' ''BONE_HEAD1'' position.
***'''8:''' shoots at ''BONE_HEAD''.
***'''8:''' ''BONE_HEAD'' position.
***'''21:''' shoots at ''BONE_RIGHTUPPERTORSO''.
***'''21:''' ''BONE_RIGHTUPPERTORSO'' position.
***'''22:''' shoots at ''BONE_RIGHTSHOULDER''.
***'''22:''' ''BONE_RIGHTSHOULDER'' position.
***'''23:''' shoots at ''BONE_RIGHTELBOW''.
***'''23:''' ''BONE_RIGHTELBOW'' position.
***'''24:''' shoots at ''BONE_RIGHTWRIST''.
***'''24:''' ''BONE_RIGHTWRIST'' position.
***'''25:''' shoots at ''BONE_RIGHTHAND''.
***'''25:''' ''BONE_RIGHTHAND'' position.
***'''26:''' shoots at ''BONE_RIGHTTHUMB''.
***'''26:''' ''BONE_RIGHTTHUMB'' position.
***'''31:''' shoots at ''BONE_LEFTUPPERTORSO''.
***'''31:''' ''BONE_LEFTUPPERTORSO'' position.
***'''32:''' shoots at ''BONE_LEFTSHOULDER''.
***'''32:''' ''BONE_LEFTSHOULDER'' position.
***'''33:''' shoots at ''BONE_LEFTELBOW''.
***'''33:''' ''BONE_LEFTELBOW'' position.
***'''34:''' shoots at ''BONE_LEFTWRIST''.
***'''34:''' ''BONE_LEFTWRIST'' position.
***'''35:''' shoots at ''BONE_LEFTHAND''.
***'''35:''' ''BONE_LEFTHAND'' position.
***'''36:''' shoots at ''BONE_LEFTTHUMB''.
***'''36:''' ''BONE_LEFTTHUMB'' position.
***'''41:''' shoots at ''BONE_LEFTHIP''.
***'''41:''' ''BONE_LEFTHIP'' position.
***'''42:''' shoots at ''BONE_LEFTKNEE''.
***'''42:''' ''BONE_LEFTKNEE'' position.
***'''43:''' shoots at ''BONE_LEFTANKLE''.
***'''43:''' ''BONE_LEFTANKLE'' position.
***'''44:''' shoots at ''BONE_LEFTFOOT''.
***'''44:''' ''BONE_LEFTFOOT'' position.
***'''51:''' shoots at ''BONE_RIGHTHIP''.
***'''51:''' ''BONE_RIGHTHIP'' position.
***'''52:''' shoots at ''BONE_RIGHTKNEE''.
***'''52:''' ''BONE_RIGHTKNEE'' position.
***'''53:''' shoots at ''BONE_RIGHTANKLE''.
***'''53:''' ''BONE_RIGHTANKLE'' position.
***'''54:''' shoots at ''BONE_RIGHTFOOT''.
***'''54:''' ''BONE_RIGHTFOOT'' position.
*** '''255''': shoots at the center of the ped (position returned by [[getElementPosition]]).
*** '''255''': center of the ped (position returned by [[getElementPosition]]).


===Returns===
===Returns===
Line 58: Line 62:
<syntaxhighlight lang="lua">bool setWeaponTarget ( weapon theWeapon, float targetX, float targetY, float targetZ )</syntaxhighlight>
<syntaxhighlight lang="lua">bool setWeaponTarget ( weapon theWeapon, float targetX, float targetY, float targetZ )</syntaxhighlight>


===Required Arguments===
===Required arguments===
* '''theWeapon:''' The weapon to set the target of.
* '''theWeapon:''' The weapon to set the target of.
* '''targetX:''' The target X.
* '''targetX:''' The target X.
Line 68: Line 72:


==Syntax (rotational target)==
==Syntax (rotational target)==
Sets the weapon back to rotation based targeting.
Sets the weapon back to rotation based targeting. It will fire to its front.


<syntaxhighlight lang="lua">bool bool setWeaponTarget ( weapon theWeapon, nil )</syntaxhighlight>
<syntaxhighlight lang="lua">bool setWeaponTarget ( weapon theWeapon, nil )</syntaxhighlight>


===Required Arguments===
===Required arguments===
* '''theWeapon:''' The weapon to clear the target of.
* '''theWeapon:''' The weapon to clear the target of.


Line 78: Line 82:
Returns ''true'' on success, ''false'' otherwise.
Returns ''true'' on success, ''false'' otherwise.


==Requirements==
==Example==
{{Requirements|n/a|1.3.0-9.04555|}}
This example creates a Uzi and a pedestrian in the center of the map when the resource which contains it starts and makes the weapon fire the new ped's head non-stop.
<syntaxhighlight lang="lua">local function createWeaponFiringPedHead()
    -- Create the weapon and set a flag of it
    local weapon = createWeapon("uzi", 0, 0, 10)
    setWeaponFlags(weapon, "instant_reload", true)
    -- Set the weapon target to a ped and fire it forever
    setWeaponTarget(weapon, createPed(8, 0, 0, 5), 8)
    setWeaponState(weapon, "firing")
end
addEventHandler("onClientResourceStart", resourceRoot, createWeaponFiringPedHead)</syntaxhighlight>


==See also==
==See also==
{{Client weapon creation functions}}
{{Client weapon creation functions}}

Latest revision as of 17:06, 7 November 2024

This function sets the target of a custom weapon. There are 3 different targeting modes, which are explained below.

[[{{{image}}}|link=|]] Note: Custom weapons fire targets with no recoil (so they never miss a shot). If you want a custom weapon to take into account recoil, you will have to script it by firing at fixed coordinates.


OOP Syntax Help! I don't understand this!

Note: Variable is read only.
Method: weapon:setTarget(...)
Variable: .target
Counterpart: getWeaponTarget


Syntax (target an element)

Fires the weapon at a physical element.

bool setWeaponTarget ( weapon theWeapon, element theTarget [, int theComponent = 255 ] )

Required arguments

Optional arguments

  • theComponent: The component of the target to shoot at. This argument is only relevant when used in the following element types:
    • Vehicles:
      • 0: front left tire.
      • 1: front right tire.
      • 2: rear left tire.
      • 3: rear right tire.
      • 255: center of the car (position returned by getElementPosition).
    • Peds (players not included; see getPedBonePosition to know where each bone is located):
      • 1: BONE_PELVIS1 position.
      • 2: BONE_PELVIS position.
      • 3: BONE_SPINE1 position.
      • 4: BONE_UPPERTORSO position.
      • 5: BONE_NECK position.
      • 6: BONE_HEAD2 position.
      • 7: BONE_HEAD1 position.
      • 8: BONE_HEAD position.
      • 21: BONE_RIGHTUPPERTORSO position.
      • 22: BONE_RIGHTSHOULDER position.
      • 23: BONE_RIGHTELBOW position.
      • 24: BONE_RIGHTWRIST position.
      • 25: BONE_RIGHTHAND position.
      • 26: BONE_RIGHTTHUMB position.
      • 31: BONE_LEFTUPPERTORSO position.
      • 32: BONE_LEFTSHOULDER position.
      • 33: BONE_LEFTELBOW position.
      • 34: BONE_LEFTWRIST position.
      • 35: BONE_LEFTHAND position.
      • 36: BONE_LEFTTHUMB position.
      • 41: BONE_LEFTHIP position.
      • 42: BONE_LEFTKNEE position.
      • 43: BONE_LEFTANKLE position.
      • 44: BONE_LEFTFOOT position.
      • 51: BONE_RIGHTHIP position.
      • 52: BONE_RIGHTKNEE position.
      • 53: BONE_RIGHTANKLE position.
      • 54: BONE_RIGHTFOOT position.
      • 255: center of the ped (position returned by getElementPosition).

Returns

Returns true on success, false otherwise.

Syntax (target a position)

Fires the weapon at the specified position.

bool setWeaponTarget ( weapon theWeapon, float targetX, float targetY, float targetZ )

Required arguments

  • theWeapon: The weapon to set the target of.
  • targetX: The target X.
  • targetY: The target Y.
  • targetZ: The target Z.

Returns

Returns true on success, false otherwise.

Syntax (rotational target)

Sets the weapon back to rotation based targeting. It will fire to its front.

bool setWeaponTarget ( weapon theWeapon, nil )

Required arguments

  • theWeapon: The weapon to clear the target of.

Returns

Returns true on success, false otherwise.

Example

This example creates a Uzi and a pedestrian in the center of the map when the resource which contains it starts and makes the weapon fire the new ped's head non-stop.

local function createWeaponFiringPedHead()
    -- Create the weapon and set a flag of it
    local weapon = createWeapon("uzi", 0, 0, 10)
    setWeaponFlags(weapon, "instant_reload", true)
    -- Set the weapon target to a ped and fire it forever
    setWeaponTarget(weapon, createPed(8, 0, 0, 5), 8)
    setWeaponState(weapon, "firing")
end
addEventHandler("onClientResourceStart", resourceRoot, createWeaponFiringPedHead)

See also