Jump to content

He doesn't drop a bullet instead of a bullet.


Recommended Posts

 

 

bomb throws bullets type how do i codes below

SERVER:

function ExplosionAmmo ( hitX, hitY, hitZ, Texp )
			createExplosion ( hitX, hitY, hitZ, Texp, source )
end
addEvent( "ExplosiveAmmo", true )
addEventHandler( "ExplosiveAmmo", root, ExplosionAmmo )


function ExplosiveLaser (muzzleX, muzzleY, muzzleZ, hmx, hmy, hmz, colorR, colorG, colorB)
			for x,p in ipairs(getElementsByType("player")) do
				if p ~= source then
					triggerClientEvent ("DrawLaserForAll", p, muzzleX, muzzleY, muzzleZ, hmx, hmy, hmz, colorR, colorG, colorB)
				end
			end
end
addEvent( "ExplosiveLaser", true )
addEventHandler( "ExplosiveLaser", root, ExplosiveLaser )

Client:

reloadTime = 2000 		-- for Hunter
range = 2 				-- To increase range, set this value to 1. To decrease range, use 3. My code is optimized for 2.

event = nil
fired = false
drawHandler = nil
armedVehicles = {[601]=true}
w, h = guiGetScreenSize()
height = nil
endY = nil
r, g = 255, 0
time = 0
local hmx, hmy, hmz 

function getPositionFromElementOffset(element,offX,offY,offZ)
	local m = getElementMatrix ( element )  -- Get the matrix
	local x = offX * m[1][1] + offY * m[2][1] + offZ * m[3][1] + m[4][1]
	local y = offX * m[1][2] + offY * m[2][2] + offZ * m[3][2] + m[4][2]
	local z = offX * m[1][3] + offY * m[2][3] + offZ * m[3][3] + m[4][3]
	return x, y, z
end

function onStart()
	height = math.ceil(h / 50)
	if height < 19 then
		height = 19
	end
	endY = math.ceil((h/100)*6)
	corona = createMarker (0, 0, -10, "corona", 1.0, 200, 100, 0, 150)
	bindKey ( "mouse1", "down", toggleHunter )
	color = tocolor(255, 255, 255, 200)
end
addEventHandler("onClientResourceStart", resourceRoot, onStart)

function entering( thePlayer, seat )
if thePlayer == localPlayer then
	toggleControl ( "vehicle_fire", true )
	toggleControl ( "vehicle_secondary_fire", true )
	local model = getElementModel ( source )
	if model == 601 then
		drawHandler = addEventHandler("onClientRender", root, reloadFinished)
	end
	if model == 601 then
		toggleControl ( "vehicle_fire", false )
		toggleControl ( "vehicle_secondary_fire", false )
		addEventHandler("onClientRender", root, marker)
		event = true
    end
end
end
addEventHandler("onClientVehicleEnter", getRootElement(), entering)

function exit( thePlayer, seat )
if thePlayer == localPlayer then
	local model = getElementModel ( source )
	if model == 601 then
		if event ~= nil then
			removeEventHandler("onClientRender", root, marker)
			event = nil
		end
		toggleControl ( "vehicle_fire", true )
		toggleControl ( "vehicle_secondary_fire", true )
	end
end
end
addEventHandler("onClientVehicleExit", getRootElement(), exit)

addEventHandler("onClientElementDestroy", getRootElement(), function ()
if (getElementModel(source) == 601 and getVehicleController(source) == localPlayer) then
	if event ~= nil then
		removeEventHandler("onClientRender", root, marker)
		event = nil
	end
	toggleControl ( "vehicle_secondary_fire", true )
end
end)

function wasted()
	if source == localPlayer then
		if event ~= nil then
			removeEventHandler("onClientRender", root, marker)
			event = nil
		end
		toggleControl ( "vehicle_fire", true )
		toggleControl ( "vehicle_secondary_fire", true )
	end
end
addEventHandler ( "onClientPlayerWasted", getLocalPlayer(), wasted )

function clientResourceStop()
	toggleControl ( "vehicle_fire", true )
	toggleControl ( "vehicle_secondary_fire", true )
end
addEventHandler( "onClientResourceStop", getResourceRootElement(getThisResource()), clientResourceStop )

local muzzleX, muzzleY, muzzleZ
local turX, turY, turZ
function toggleHunter()
if fired == false then
	if isPedInVehicle ( localPlayer ) and not isCursorShowing() then
		local veh = getPedOccupiedVehicle ( localPlayer )
		if (veh) then
			if ( getElementModel ( veh ) == 601 ) then
				fired = true
				turX, turY, turZ = getElementPosition(veh)
				local cx,cy,cz = getVehicleComponentPosition( veh, "misc_a" )
				local x, y, z = getVehicleComponentPosition( veh, "misc_c" )
				local barrelX, barrelY, barrelZ = getPositionFromElementOffset(veh,cx,cy,cz)
				muzzleX, muzzleY, muzzleZ = getPositionFromElementOffset(veh,x,y,z)
				local velX = (muzzleX - barrelX) /range
				local velY = (muzzleY - barrelY) /range
				local velZ = (muzzleZ - barrelZ) /range
				local vx, vy, vz = getElementVelocity(veh)
				setElementVelocity (veh, vx+(((velX/3)*(-1))/50), vy+(((velY/3)*(-1))/50), vz+(((velZ/3)*(-1))/50) )
				addEventHandler("onClientRender", root, drawLine)

				removeEventHandler("onClientRender", root, reloadFinished)
				drawHandler = nil
				start = getTickCount()
				drawHandler = addEventHandler("onClientRender", root, reload)
				time = 2000
				soundTimer = setTimer(function() 
					local sound = playSound("LaserSound.wav")
					setSoundVolume(sound, 1)
					end,
				50, 1)
			end
		end
	end
end
end

local colorR, colorG, colorB = 255, 0, 0

function colorsLasersHunter (command, dataR, dataG, dataB)
	if dataR and dataG and dataB then
		if (type(tonumber(dataR)) == "number") and (type(tonumber(dataG)) == "number") and (type(tonumber(dataB)) == "number") then
			if tonumber(dataR) then
				if tonumber(dataR) >= 0 and  tonumber(dataR) <= 255 then
					colorR = tonumber(dataR)
				end
			end
			if tonumber(dataG) then
				if tonumber(dataG) >= 0 and  tonumber(dataG) <= 255 then
					colorG = tonumber(dataG)
				end
			end
			if tonumber(dataB) then
				if tonumber(dataB) >= 0 and  tonumber(dataB) <= 255 then
					colorB = tonumber(dataB)
				end
			end
		end
	end
end
addCommandHandler ("SClaser", colorsLasersHunter)

								local Texp = 2
								function drawLine()  
										dxDrawLine3D ( muzzleX, muzzleY, muzzleZ, hmx, hmy, hmz, tocolor ( colorR, colorG, colorB, 255 ), 10)
										triggerServerEvent ( "ExplosiveAmmo", localPlayer, hmx, hmy, hmz, Texp )
										triggerServerEvent ( "ExplosiveLaser", localPlayer, muzzleX, muzzleY, muzzleZ, hmx, hmy, hmz, colorR, colorG, colorB )
										removeEventHandler("onClientRender", root, drawLine)
								end
								
								addEvent ("DrawLaserForAll", true)
								function DrawLaserForAllPlayers (xi, yi, zi, xf, yf, zf, crL, cgL, cbL)
										dxDrawLine3D ( xi, yi, zi, xf, yf, zf, tocolor ( crL, cgL, cbL, 255 ), 10)
										soundTimer2 = setTimer(		function() 
																		local sound = playSound3D("LaserSound.wav", xf, yf, zf, true)
																		setSoundVolume(sound, 4)
																		setTimer (function () if sound then stopSound ( sound ) end end, 500, 1)
																	end, 50, 1)				
								end
								addEventHandler ("DrawLaserForAll", getLocalPlayer(), DrawLaserForAllPlayers)

function reload()
if not isPedInVehicle(localPlayer) then
	removeEventHandler("onClientRender", root, reload)
	drawHandler = nil
end
setMarkerColor ( corona, 255, 0, 0, 100 )
local getTime = (getTickCount()) - start
local height = math.ceil(h / 50)
if height < 19 then
	height = 19
end
dxDrawRectangle (0, h-endY-height-6, height+6, endY, tocolor(0,0,0,150), false)
local endY = math.ceil((h/100)*6)
endY = endY - 4
	if getTime <= time then
		endY = (getTime/time)*endY
	else
		removeEventHandler("onClientRender", root, reload)
		drawHandler = nil
		drawHandler = addEventHandler("onClientRender", root, reloadFinished)
		if getElementModel(getPedOccupiedVehicle(localPlayer)) ~= 425 then
			local sfx = playSFX ( "genrl", 136, 72 )
			setSoundVolume (sfx, 1)
		end
		setMarkerColor ( corona, r, g, 0, 150 )
		start = nil
		fired = false
	end
	dxDrawRectangle (2, h-endY-height-8, height+2, endY, tocolor(220,0,0,150), false)
end

function reloadFinished()
if not isPedInVehicle(localPlayer) then
	removeEventHandler("onClientRender", root, reloadFinished)
	drawHandler = nil
else
	dxDrawRectangle (0, h-endY-height-6, height+6, endY, tocolor(0,0,0,150), false)
	dxDrawRectangle (2, h-endY-height-4, height+2, endY-4, tocolor(220,0,0,150), false)
end
end

function marker()
if not isPedInVehicle(localPlayer) then
	removeEventHandler("onClientRender", getRootElement(), marker)
	if isTimer(soundTimer) then
		killTimer(soundTimer)
	end
	fired = false
	drawHandler = nil
	setElementPosition (corona, 0, 0, -10)
else
	local vx, vy, vz = nil, nil, nil
	local cx, cy, cz = nil, nil, nil
	local veh = getPedOccupiedVehicle ( localPlayer )
	if veh then
		local x, y, z = getVehicleComponentPosition( veh, "misc_a" )
		cx, cy, cz = getPositionFromElementOffset( veh, x, y, z )
		x, y, z = getVehicleComponentPosition( veh, "misc_c" )
		vx, vy, vz = getPositionFromElementOffset( veh, x, y, z )
		if vx ~= nil then
		local velX = (vx - cx) /range
		local velY = (vy - cy) /range
		local velZ = (vz - cz) /range
		
		local vx1, vy1 = cx + (velX * 50 * 0.1), cy + (velY * 50 * 0.1)
		local vx2, vy2 = cx + (velX * 50 * 0.2), cy + (velY * 50 * 0.2)
		local vx3, vy3 = cx + (velX * 50 * 0.3), cy + (velY * 50 * 0.3)
		local vx4, vy4 = cx + (velX * 50 * 0.5), cy + (velY * 50 * 0.5)
		local vx5, vy5 = cx + (velX * 50 * 0.6), cy + (velY * 50 * 0.6)
		local vx6, vy6 = cx + (velX * 50 * 0.7), cy + (velY * 50 * 0.7)
		local vx7, vy7 = cx + (velX * 50 * 0.8), cy + (velY * 50 * 0.8)

		local m1 = cz + (velZ * 50 * 0.1) - ((getGravity()*2400*0.01)/2)
		local m2 = cz + (velZ * 50 * 0.2) - ((getGravity()*2400*0.04)/2)
		local m3 = cz + (velZ * 50 * 0.3) - ((getGravity()*2400*0.09)/2)
		local m4 = cz + (velZ * 50 * 0.5) - ((getGravity()*2400*0.25)/2)
		local m5 = cz + (velZ * 50 * 0.6) - ((getGravity()*2400*0.36)/2)
		local m6 = cz + (velZ * 50 * 0.7) - ((getGravity()*2400*0.49)/2)
		local m7 = cz + (velZ * 50 * 0.8) - ((getGravity()*2400*0.64)/2)
		
		local hit, mx, my, mz, elementHit = processLineOfSight (cx, cy, cz, vx1, vy1, m1, true, true, true, true, true, false, false, false, veh)
		if hit == false then
			hit, mx, my, mz, elementHit = processLineOfSight (vx1, vy1, m1, vx2, vy2, m2, true, true, true, true, true, false, false, false, veh)
			if hit == false then
				hit, mx, my, mz, elementHit = processLineOfSight (vx2, vy2, m2, vx3, vy3, m3, true, true, true, true, true, false, false, false, veh)
				if hit == false then
					hit, mx, my, mz, elementHit = processLineOfSight (vx3, vy3, m3, vx4, vy4, m4, true, true, true, true, true, false, false, false, veh)
					if hit == false then
						hit, mx, my, mz, elementHit = processLineOfSight (vx4, vy4, m4, vx5, vy5, m5, true, true, true, true, true, false, false, false, veh)
						if hit == false then
							hit, mx, my, mz, elementHit = processLineOfSight (vx5, vy5, m5, vx6, vy6, m6, true, true, true, true, true, false, false, false, veh)
							if hit == false then
								hit, mx, my, mz, elementHit = processLineOfSight (vx6, vy6, m6, vx7, vy7, m7, true, true, true, true, true, false, false, false, veh)
								if hit == false then
									mx, my, mz = vx7, vy7, m7
								end
							end
						end
					end
				end
			end
		end
		local dist = getDistanceBetweenPoints3D ( vx, vy, vz, mx, my, mz )
		if dist < 50 then
			r = 5.1 * dist
			g = 255
		elseif dist >= 50 then
			r = 255
			g = 255 - ((dist-50) * 5.1)
		end
		hmx, hmy, hmz = mx, my, mz
		setElementPosition (corona, mx, my, mz)
		setMarkerColor ( corona, r, g, 0, 150 )
		if not drawHandler then
			drawHandler = addEventHandler("onClientRender", root, reloadFinished)
		end
	end
	end
end
end

PLS HELP

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...