CreateProjectile: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
(Updated issues)
Line 65: Line 65:
==Issues==  
==Issues==  
{{Issues|
{{Issues|
{{Issue|8132|Projectile target only allows player element (and a projectile?)}}
{{Issue|584|createProjectile creates one projectile for every person in the vehicle}}
{{Issue|5072|createProjectile creates one projectile for every person in the vehicle}}
{{Issue|616|Projectile rotation is set exactly opposite for creator}}
}}  
}}  



Revision as of 10:11, 30 January 2022

This function creates a projectile of the specified type on the specified coordinates.

[[{{{image}}}|link=|]] Note:
  • Model argument is not synchronized between clients. Clients differs from local player see always standard projectile model.
  • Target argument can only be defined as a player or another projectile.

Syntax

projectile createProjectile ( element creator, int weaponType [, float posX, float posY, float posZ, float force = 1.0, element target = nil, float rotX, float rotY, float rotZ, float velX, float velY, float velZ, int model ] )

OOP Syntax Help! I don't understand this!

Method: Projectile(...)


Required Arguments

  • creator: The element representing creator of the projectile. In case you want the projectile to be synced for everybody creator must be the local player or his vehicle.
  • weaponType: int representing the projectile weaponType (characteristics). Valid IDs are:
ID Name/Description
16 Grenade
17 Tear Gas Grenade
18 Molotov
19 Rocket (simple)
20 Rocket (heat seeking)
21 Air Bomb
39 Satchel Charge
58 Hydra flare

Optional Arguments

NOTE: When using optional arguments, you might need to supply all arguments before the one you wish to use. For more information on optional arguments, see optional arguments.

  • posX, posY, posZ: float starting coordinates for the projectile. They are coordinates of creator by default.
  • force: float representing the starting force for throwable projectiles.
  • target: element target used for heat seeking rockets.
  • rotX, rotY, rotZ: float starting rotation for the projectile.
  • velX, velY, velZ: float starting velocity for the projectile.
  • model: Integer representing the projectile's model, uses default model for weaponType if not specified.

Returns

Returns a projectile element if projectile creation was successful. Returns false if unable to create a projectile (wrong weapon ID or projectiles limit was reached).

Example

This example makes a rocket minigun (minigun shooting with rockets).

-- This function gets triggered everytime player shoots.
function onClientPlayerWeaponFireFunc(weapon,ammo,ammoInClip,hitX,hitY,hitZ,hitElement)
	if weapon == 38 then -- if source is a local player and he uses minigun...
                x,y,z = getElementPosition(getLocalPlayer())
		if not createProjectile(getLocalPlayer(),19,x,y,z,200) then -- then we either create a projectile...
			outputChatBox ( "Rocket minigun overheated! Give it a rest pal!", source ) -- or if projectile limit is reached we output player a chat message
		end
	end
end

-- Don't forget to add the onClientPlayerWeaponFireFunc function as a handler for onClientPlayerWeaponFire.
addEventHandler("onClientPlayerWeaponFire", getLocalPlayer(), onClientPlayerWeaponFireFunc)

This example code shoots a projectile from your occupied vehicle that travels in the direction your vehicle is facing when you press vehicle_fire (left mouse button with default controls)


function shootProjectile()
	local vehicle = getPedOccupiedVehicle(localPlayer)
	-- Only create projectile if we are inside a vehicle
	if(vehicle)then
		local x, y, z = getElementPosition(vehicle)
		createProjectile(vehicle, 19, x, y, z)
	end
end

bindKey("vehicle_fire", "down", shootProjectile)

Issues

Issue ID Description
#584 createProjectile creates one projectile for every person in the vehicle
#616 Projectile rotation is set exactly opposite for creator


See also