Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.
Avez-vous perdu votre courriel d'activation?
Connexion avec identifiant, mot de passe et durée de la session

 
avancée

254649 Messages dans 14035 Fils de discussion- par 6616 Membres - Dernier membre: louloufcb

21 Mai 2012 à 21:02:13
GTAOnline.frMulti Theft AutoScripting MTA [lua Center] (Modérateur: Citizen)Arme sur les véhicules
Pages: 1 [2]   Bas de page
Imprimer
Auteur Fil de discussion: Arme sur les véhicules  (Lu 525 fois)
0 Membres et 3 Invités sur ce fil de discussion.
Citizen
Scripteur LUA confirmé
Hors ligne Hors ligne


Moderateur
Grand Banditisme
*

Messages: 106


WWWtvrmntcn1

« Répondre #15 le: 21 Décembre 2010 à 14:43:39 »

Ouai c'est bien
C'est se que j'ai fait aussi.
Le problème c'est qu'il faut d'abord lui dire une "target" avec setPedAimTarget( ped, x, y, z ) et après tu peux le faire tirer
Moi je l'ai mis dans un onClientRender aux coordonnées 0, 0, 0 mais je vais faire en sorte qu'il tire tout droit ( fait appelle à la trigo)

Voilà alors moi j'ai réussi à le faire tirer mais a chaque fois il n'avait qu'une munitions même avec 99999 munitions dans le giveWeapon
Alors j'ai fait ceci:
Code: (lua)
setTimer( giveWeapon, 500, 0, ped, 28, 999999, true )

Je te passerais mon code une fois que j'aurais fini ( mais tu peux continuer si tu veux )  Tire la langue

Je pense que j'en ai plus pour très longtemps ...

                             Citizen

Journalisée


The rEvolution is coming ...

Créateur d'un serveur MTA RP
2 ans de scripting
"Ce n'est pas un bug mais une fonctionnalité"
MK
Mapper
Hors ligne Hors ligne

Modérateur Frag'n'Fun
GTAOnline Addict
*

GO - SFTDM

Messages: 1134


« Répondre #16 le: 21 Décembre 2010 à 15:01:57 »

client:
Code:
root = getRootElement()
function target(source, thePed)
setPedAimTarget(thePed, 0,0,0)
end
addEventHandler ( "onClientRender", root, target )

server:
Code:
triggerClientEvent( getRootElement() , "target", getRootElement() )

Journalisée


Citizen
Scripteur LUA confirmé
Hors ligne Hors ligne


Moderateur
Grand Banditisme
*

Messages: 106


WWWtvrmntcn1

« Répondre #17 le: 21 Décembre 2010 à 15:14:04 »

Nan tu n'as pas besoin de faire un triggerClientEvent pour celui la car onClientRender est un event interne à MTA elle est exécuté à chaque render:
Si tu as par exemple 87 FPS, ta fonction sera exécutée 87 fois par secondes.

Mais il ne faut pas l'utiliser finalement car c'est du client et donc pour les autres joueurs, ton ped n'aura pas de target
Je l'ai fait comme sa du coups:
SERVER:
Code: (lua)
function updateRotationAndTarget( thePlayer )
-- outputChatBox("update")
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 )
setElementRotation( thePed, 0, 0, rz )
-------------------- Target -------------------------
local x, y, z = getElementPosition( thePed )
local distance = 0.1
local a = math.rad( getPedRotation(thePed) )
local x2 = x+(distance * math.deg(math.sin(-a)))
local y2 = y+(distance * math.deg(math.cos(-a)))
triggerClientEvent( getRootElement(), "setTargetPosition", getRootElement(), thePed, x2, y2, z+0.5)
end

CLIENT:
Code: (lua)
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)

Mais parcontre mon setElementRotation ne fonctionne pas et je n'est pourtant pas d'erreurs je poursuis mes recherches

                              Citizen

Journalisée


The rEvolution is coming ...

Créateur d'un serveur MTA RP
2 ans de scripting
"Ce n'est pas un bug mais une fonctionnalité"
MK
Mapper
Hors ligne Hors ligne

Modérateur Frag'n'Fun
GTAOnline Addict
*

GO - SFTDM

Messages: 1134


« Répondre #18 le: 21 Décembre 2010 à 15:30:07 »

désolé mais la je suis perdu.
En plus je n'arrive toujours pas  à le faire tirer XD
et m'expliquer le passage ou tu utilise la trigo serait sympa :/
Journalisée


Citizen
Scripteur LUA confirmé
Hors ligne Hors ligne


Moderateur
Grand Banditisme
*

Messages: 106


WWWtvrmntcn1

« Répondre #19 le: 21 Décembre 2010 à 15:50:49 »

Alors j'ai tiré ceci d'un script:

Code: (lua)
local x, y, z = getElementPosition( thePed )
local distance = 0.1
local a = math.rad( getPedRotation(thePed) )
local x2 = x+(distance * math.deg(math.sin(-a)))
local y2 = y+(distance * math.deg(math.cos(-a)))

Cela permet de trouver les coordonnées X, Y, Z d'un point situé à une distance donnée ( la distance ne correspond pas au mètres ) selon la rotation du personnage ( ici le ped )
Tu peux créer un marker aux coordonnées x2 et y2 et z pour voir réellement ce que sa donne et tu peux aussi jouer avec la variable distance pour voir les différences

Voilà

                     Citizen

Journalisée


The rEvolution is coming ...

Créateur d'un serveur MTA RP
2 ans de scripting
"Ce n'est pas un bug mais une fonctionnalité"
MK
Mapper
Hors ligne Hors ligne

Modérateur Frag'n'Fun
GTAOnline Addict
*

GO - SFTDM

Messages: 1134


« Répondre #20 le: 21 Décembre 2010 à 16:04:26 »

ok merci Sourire
bon je vais encore essayé quelques tentatives, j'espère que ca marchera :/
Journalisée


Citizen
Scripteur LUA confirmé
Hors ligne Hors ligne


Moderateur
Grand Banditisme
*

Messages: 106


WWWtvrmntcn1

« Répondre #21 le: 21 Décembre 2010 à 21:10:57 »

Bon je ne peux pas encore te donner mon code donc je t'es envoyé un PM pour savoir comment me rejoindre je pourrais te montrer se que sa donne.  a la tienne
Journalisée


The rEvolution is coming ...

Créateur d'un serveur MTA RP
2 ans de scripting
"Ce n'est pas un bug mais une fonctionnalité"
Citizen
Scripteur LUA confirmé
Hors ligne Hors ligne


Moderateur
Grand Banditisme
*

Messages: 106


WWWtvrmntcn1

« Répondre #22 le: 23 Décembre 2010 à 14:32:15 »

Après t'avoir montré le résultat je te met ici les codes lua qui ont donné le meilleur résultat:

SERVER:
Code: (lua)
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:
Code: (lua)
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



Journalisée


The rEvolution is coming ...

Créateur d'un serveur MTA RP
2 ans de scripting
"Ce n'est pas un bug mais une fonctionnalité"
Pages: 1 [2]   Haut de page
Imprimer
Aller à:  

Theme créé par padexx et modifié par GTAOnline.fr
Page générée en 0.128 secondes avec 22 requêtes.
Forum GTAOnline.fr 2.0 | Design par : Lalu et GtaManiac
Merci a toute la communaute pour son support !
Copyright © 2004-2012 - GTAOnline.fr | GTAPro.com | Contact