Après t'avoir montré le résultat je te met ici les codes lua qui ont donné le meilleur résultat:
SERVER:
curentArme = {{ID,Ammos}}
bloquer = 0
attacher = 0
addEvent("buyWeaponl", true)
function buyWeaponl( thePlayer, commandName)
if ( not getPedOccupiedVehicle( thePlayer ) ) then
return
end
local pname = getPlayerName( thePlayer )
if ( getPlayerMoney (thePlayer) >= 150 ) then
takePlayerMoney(thePlayer, 150 )
local veh = getPedOccupiedVehicle( thePlayer ) -- On récupère le veh utiliser par le joueur
local x, y, z = getElementPosition ( thePlayer ) --Get the players position
local ped = createPed ( 120, x, y, z+2)
giveWeapon( ped, 28, 9999, true )
curentArme[thePlayer] = {ID=28,Ammos=500}
-- setElementAlpha(object, 0)
setElementData( veh, "ped", ped ) -- On stock le ped "avec le véhicule"
local timer = setTimer( updateRotationAndTarget, 50, 0, thePlayer)
setElementData( thePlayer, "timer", timer )
-------------- le ctrl droit -------------------
bindKey (thePlayer, "j", "down", startPedFire)
bindKey (thePlayer, "j", "up", stopPedFire)
-------------- le ctrl gauche ------------------
-- bindKey (thePlayer, "lctrl", "down", startPedFire)
-- bindKey (thePlayer, "lctrl", "up", stopPedFire)
outputChatBox("Weapon Obtained", thePlayer, 255, 255, 0)
outputChatBox( "** ALERT WEAPON DETECTED **", 255, 12, 15)
pedViser( ped, true )
faireAcroupir( ped )
else
outputChatBox("Not enough money.", thePlayer, 255, 0, 0)
end
end
addEventHandler("buyWeaponl", getRootElement(), buyWeaponl)
addCommandHandler( "buyarme", buyWeaponl, false, false )
function faireAcroupir( thePlayer )
local veh = getPedOccupiedVehicle( thePlayer ) -- On récupère le veh utiliser par le joueur
local thePed = getElementData( veh, "ped" ) -- On récupère le ped
for k, i in ipairs ( getElementsByType( "player" ) )do
triggerClientEvent( i , "faireAcroupir", getRootElement(), thePed)
end
end
function startPedFire( thePlayer )
local veh = getPedOccupiedVehicle( thePlayer ) -- On récupère le veh utiliser par le joueur
local thePed = getElementData( veh, "ped" ) -- On récupère le ped
for k, i in ipairs ( getElementsByType( "player" ) )do
triggerClientEvent( i , "startPedShoot", getRootElement(), thePed)
end
end
function stopPedFire( thePlayer )
local veh = getPedOccupiedVehicle( thePlayer ) -- On récupère le veh utiliser par le joueur
local thePed = getElementData( veh, "ped" ) -- On récupère le ped
for k, i in ipairs ( getElementsByType( "player" ) )do
triggerClientEvent( i, "stopPedShoot", getRootElement(), thePed) -- On arrête de le faire tirer
end
end
function updateRotationAndTarget( thePlayer )
local veh = getPedOccupiedVehicle( thePlayer ) -- On récupère le veh utiliser par le joueur
local thePed = getElementData( veh, "ped" ) -- On récupère le ped
---------------- Rotation ---------------------------
local rx, ry, rz = getElementRotation( veh )
local x, y, z = getElementPosition( veh )
setElementRotation( thePed, 0, 0, rz )
setElementPosition( thePed, x, y, z+1 )
-------------------- Target -------------------------
local distance2 = 0.4
local a2 = math.rad( rz )
local x3 = x+(distance2 * math.deg(math.sin(-a2)))
local y3 = y+(distance2 * math.deg(math.cos(-a2)))
for k, i in ipairs ( getElementsByType( "player" ) )do
triggerClientEvent( i, "setTargetPosition", getRootElement(), thePed, x3, y3, z+0.2)
end
end
addEvent("pedViser", true )
function pedViser( thePed, bool)
for k, i in ipairs ( getElementsByType( "player" ) )do
triggerClientEvent( i, "setPedViser", getRootElement(), thePed, false)
setTimer( triggerClientEvent, 1000, 1, i, "setPedViser", getRootElement(), thePed, bool)
end
----------------------------------------
end
addEventHandler( "pedViser", getRootElement(), pedViser )
addEvent("retMunitions", true )
function retMunitions( thePlayer, thePed, bool )
local wep = curentArme[thePlayer].ID
local ammos = curentArme[thePlayer].Ammos
outputChatBox( ""..ammos )
if ( ammos <= 0) then
takeWeapon( thePed, wep )
outputChatBox( "Vous n'avez plus de munitions !", thePlayer, 200, 0, 0)
unbindKey( thePlayer, "j" )
killTimer( getElementData( thePlayer, "timer" ) )
destroyElement( thePed )
else
curentArme[thePlayer] = {ID=wep,Ammos=ammos-1}
giveWeapon( thePed, 28, 9999, true )
setWeaponAmmo( thePed, wep, 9999, 999 )
pedViser( thePlayer, bool )
end
end
addEventHandler( "retMunitions", getRootElement(), retMunitions )
CLIENT:
function onPedFire()
triggerServerEvent( "retMunitions", getLocalPlayer(), getLocalPlayer(), source, true)
end
addEventHandler("onClientPedWeaponFire", getRootElement(), onPedFire)
addEvent( "setPedViser", true )
function setPedViser( ped, bool)
if ( ped and bool ) then
setPedControlState ( ped, "aim_weapon", bool )
end
end
addEventHandler("setPedViser", getRootElement(), setPedViser)
addEvent( "setTargetPosition", true )
function setTargetPosition( ped, x, y, z)
if ( ped and x and y and z ) then
setPedAimTarget( ped, x, y, z )
end
end
addEventHandler("setTargetPosition", getRootElement(), setTargetPosition)
addEvent( "faireAccroupir", true )
function faireAccroupir( ped )
if ( ped ) then
setPedControlState ( ped, "crouch", true )
end
end
addEventHandler("faireAccroupir", getRootElement(), faireAccroupir)
addEvent( "startPedShoot", true )
function startPedShoot(ped)
setPedControlState ( ped, "fire", true )
end
addEventHandler("startPedShoot", getRootElement(), startPedShoot)
addEvent( "stopPedShoot", true )
function stopPedShoot(ped)
setPedControlState ( ped, "fire", false )
end
addEventHandler("stopPedShoot", getRootElement(), stopPedShoot)
Voila essaye de faire quelque chose avec ceci.
Citizen