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

254653 Messages dans 14036 Fils de discussion- par 6616 Membres - Dernier membre: louloufcb

21 Mai 2012 à 21:34:03
GTAOnline.frMulti Theft AutoScripting MTA [lua Center] (Modérateur: Citizen)[Résolu]Deux ou trois problemes
Pages: [1]   Bas de page
Imprimer
Auteur Fil de discussion: [Résolu]Deux ou trois problemes  (Lu 423 fois)
0 Membres et 1 Invité sur ce fil de discussion.
~CG~FatalTerror
Hors ligne Hors ligne

Criminel entrainé
*

Messages: 38


« le: 04 Avril 2011 à 14:05:39 »

Bonjour

Ce matin je fessait une petite map dans le thème de Mario Bros   Embarrassé

Mon premier probleme c'est la camera:

Code: (lua)
root = getRootElement ()
function updateCamera ()
local x, y, z = getElementPosition ( getLocalPlayer () )
setCameraMatrix ( x, y, z + 10, x, y, z, 90, 90 )
end
addEventHandler ( "onClientPreRender", root, updateCamera )
addEventHandler ( "onResourceStart", getRootElement(), updateCamera )

J'ai passé plus d'une heure sur la camera et j'ai pas réussi a la régler  wallbash
Je ne sais pas comment la mettre sur la vu de coté, comme quand on appui sur E.


Et mon deuxième problème c'est le push:

Code: (lua)
function pushBouton()
local targetPlayerName = getPlayerName(source)
local hisCar = getPedOccupiedVehicle( targetPlayerName )
local x, y, z = getElementVelocity ( hisCar )
setElementVelocity ( hisCar, x , y, z + 0.4 )
end
function press()
bindKey ( "m", "down", pushBouton )
end
addEventHandler ("onResourceStart",getRootElement(),press)

Ce que je veux faire c'est quand on appui sur M le joueur est poussé vers le haut, mais la ça ne marche pas  wallbash


Si quelqu'un pouvais m'aider, sa serait super  Très souriant


Thx, FatalTerror Blink
« Dernière édition: 20 Juin 2011 à 17:22:25 par ~CG~FatalTerror » Journalisée
Citizen
Scripteur LUA confirmé
En ligne En ligne


Moderateur
Grand Banditisme
*

Messages: 108


WWWtvrmntcn1

« Répondre #1 le: 04 Avril 2011 à 19:35:01 »

Salut FatalTerror,
Alors pour commencer il faut savoir que dans un serveur MTA il y a 2 parties, la partie serveur( server-side ) et la partie client ( client-side )
Donc tu n'as pas le droit de mélanger des events clients ( je penses à ton onClientPreRender ) et des events serveurs ( ton onResourceStart ) ceci est aussi valable pour les fonctions
D'après ce que je vois, c'est du client-side voici ce que j'ai fais:

Code: (lua)
root = getRootElement ()
function updateCamera ()
local veh = getPedOccupiedVehicle( getLocalPlayer() ) -- on récupère le véhicule dans lequel est le joueur
if ( veh ~= false ) then -- si le joueur n'est pas sans vehicule ( => donc s'il est dans un véhicule ) sinon sa sert à rien
local distance = 0.2 -- on dit à quelle distance on veut mettre la caméra par rapport au véhicule
local x, y, z = getElementPosition( veh ) -- on récupère la position du véhicule
local rx, ry, rz = getElementRotation( veh )
local a = rz-90 -- on dit de quel coté on veut mettre la caméra ( ici à droite )
-- on se met en radian pour utiliser math.sin et math.cos
local a2 = math.rad(a)
-- on écarte la caméra du véhicule
local x2 = x+(distance * math.deg(math.sin(-a2)))
local y2 = y+(distance * math.deg(math.cos(-a2)))
-- on place la caméra
setCameraMatrix ( x2, y2, z, x, y, z )
end
end
addEventHandler ( "onClientPreRender", root, updateCamera )
A toi de régler la distance comme tu le souhaites.

Ensuite pour ton 2ème code, il faut savoir que la majorité des fonctions requièrent ( en argument ) le joueur en tant qu’élément ( playerElement )! En client, on le récupère avec getLocalPlayer()
Dans le wiki, lorsqu'une fonction a besoin du playerElement en argument, il est mentionné comme ceci ( exemple concret ):


ou alors si la fonction peut s'utiliser sur un ped ou un player:


ou encore si une fonction peut s'utiliser sur un element quelconque ( objet, véhicule, player, ped, marker, pickup, blip ou encore un sond ):

Voilà ce que ça donne:
Code: (lua)
function pushBouton( )
local hisCar = getPedOccupiedVehicle( getLocalPlayer() ) -- ici on veut le playerElement et non pas son nom ( en client on peut le récupérer avec [b]getLocalPlayer()[/b] )
local x, y, z = getElementVelocity ( hisCar )
setElementVelocity ( hisCar, x , y, z+0.4 )
end
bindKey ( "m", "down", pushBouton ) -- lorsque le bindkey est comme ceci ( en-dehors d'une fonction quelconque ) le [b]bindKey [/b]est exécuté lorsque le script est "chargé"

A mon avis pour se que tu veux obtenir, ton +0.4 en velocity z est parfait ( j'ai testé  Tire la langue )

Si tu as des questions n'hésite pas  Clin d'oeil
« Dernière édition: 04 Avril 2011 à 19:38:27 par 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é"
~CG~FatalTerror
Hors ligne Hors ligne

Criminel entrainé
*

Messages: 38


« Répondre #2 le: 04 Avril 2011 à 21:31:06 »

Cool Grand merci  laugh

Mais il y a un probleme, comment on limite les sauts ?
Parceque la je peux faire toute la mappe en appuiant sur M  ...

J'ai essayé de faire des setTimer() mais je ne sais pas comment on l'utilise  Pleurs


Thx, FatalTerror
« Dernière édition: 05 Avril 2011 à 13:27:29 par ~CG~FatalTerror » Journalisée
Citizen
Scripteur LUA confirmé
En ligne En ligne


Moderateur
Grand Banditisme
*

Messages: 108


WWWtvrmntcn1

« Répondre #3 le: 09 Avril 2011 à 12:12:34 »

Je te conseil d'utiliser un setElementData avec un setTimer comme ceci:
Code: (lua)
function pushBouton( )
if ( getElementData( getLocalPlayer(), "jumping" ) ~= true ) then
local hisCar = getPedOccupiedVehicle( getLocalPlayer() ) -- ici on veut le playerElement et non pas son nom ( en client on peut le récupérer avec [b]getLocalPlayer()[/b] )
local x, y, z = getElementVelocity ( hisCar )
setElementVelocity ( hisCar, x , y, z+0.4 )
setElementData( getLocalPlayer(), "jumping", true )
setTimer( ssetElementData, 3000, 1, getLocalPlayer(), "jumping", true )
end
end
bindKey ( "m", "down", pushBouton )

Si tu as des questions n'hèsite pas  Clin d'oeil
( PS: ton server RPG est fini ? Je pourrais le voir ? )
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é"
~CG~FatalTerror
Hors ligne Hors ligne

Criminel entrainé
*

Messages: 38


« Répondre #4 le: 09 Avril 2011 à 22:42:27 »

WoW vous êtes trop fort  bangin

(Pour mon serveur RPG: Bientot  fini)
Journalisée
Citizen
Scripteur LUA confirmé
En ligne En ligne


Moderateur
Grand Banditisme
*

Messages: 108


WWWtvrmntcn1

« Répondre #5 le: 09 Avril 2011 à 22:44:17 »

Merci
Le mien aussi est pratiquement terminé, je compte l'ouvrir fin juillet.

EDIT:Mais tu es seul pour coder ? Tu as pris un GM déjà existant ( je pense notamment à Paradise ) parce que si tu as fait un server RPG, tu aurais été capable de faire sans sans aucun problème. Blink
« Dernière édition: 09 Avril 2011 à 22:49:10 par 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é"
~CG~FatalTerror
Hors ligne Hors ligne

Criminel entrainé
*

Messages: 38


« Répondre #6 le: 09 Avril 2011 à 23:05:31 »

Je suis le leader de mon clan et mon co-admin est un gros noob avec tout ce qui est script  boulz

Et non, je modifie pas le script Paradise  Indécis, Je fait mon propre gamemode et il marche bien  king

PS: Vivement Juillet  laugh
Journalisée
~CG~FatalTerror
Hors ligne Hors ligne

Criminel entrainé
*

Messages: 38


« Répondre #7 le: 15 Juin 2011 à 22:05:41 »

Euh me revoila  Huh?

Merci a Citzen pour toute ses réponses  a la tienne .

Voila,
Dans ce script la:
Code:
root = getRootElement ()
function updateCamera ()
local veh = getPedOccupiedVehicle( getLocalPlayer() ) -- on récupère le véhicule dans lequel est le joueur
if ( veh ~= false ) then -- si le joueur n'est pas sans vehicule ( => donc s'il est dans un véhicule ) sinon sa sert à rien
local distance = 0.2 -- on dit à quelle distance on veut mettre la caméra par rapport au véhicule
local x, y, z = getElementPosition( veh ) -- on récupère la position du véhicule
local rx, ry, rz = getElementRotation( veh )
local a = rz-90 -- on dit de quel coté on veut mettre la caméra ( ici à droite )
-- on se met en radian pour utiliser math.sin et math.cos
local a2 = math.rad(a)
-- on écarte la caméra du véhicule
local x2 = x+(distance * math.deg(math.sin(-a2)))
local y2 = y+(distance * math.deg(math.cos(-a2)))
-- on place la caméra
setCameraMatrix ( x2, y2, z, x, y, z )
end
end
addEventHandler ( "onClientPreRender", root, updateCamera )

Enfait il marche parfaitement, mais quand le joueur meurt la caméra est n'importe ou.
Alors ce que je voudrai savoir c'est comment on fait quand le joueur est mort mettre la camera par default. (meme chose quand le joueur prend le Hunter  Tire la langue )

Voila Voilou Très souriant

Si vous connaisez la réponce merci de me le faire savoir  Indécis
Journalisée
Citizen
Scripteur LUA confirmé
En ligne En ligne


Moderateur
Grand Banditisme
*

Messages: 108


WWWtvrmntcn1

« Répondre #8 le: 19 Juin 2011 à 00:41:54 »

Salut FatalTerror,
Citation
mais quand le joueur meurt la caméra est n'importe ou.
Ah bon ? je viens de le tester et ça marche  Huh?
J'ai utilisé ça à la place car je n'avais pas race de lancé ( essaye pour voir ):
Code: (lua)
addEventHandler ( "onClientPreRender", getRootElement(), updateCamera )

Citation
meme chose quand le joueur prend le Hunter
C'est très simple, il suffit de rajouter la condition: "si le joueur n'est pas dans le hunter(ID: 425)"
Code: (lua)
if ( veh ~= false and veh ~= 425 ) then

Après si tu veux aussi l'enlever si un joueur est mort: "... et(and) si le joueur n'est pas( not ) mort "
Code: (lua)
if ( veh ~= false and veh ~= 425 and not isPlayerDead ( getLocalPlayer() )) then

Voila voila et désoler pour cette réponse tardive mais je suis en pleines révisions de bac ( à part ce soir ou j'ai soufflé un peu  happy )
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é"
~CG~FatalTerror
Hors ligne Hors ligne

Criminel entrainé
*

Messages: 38


« Répondre #9 le: 20 Juin 2011 à 17:21:37 »

Oh super Citizen !
Et bonne chance pour le BAC  Tire la langue
Journalisée
Citizen
Scripteur LUA confirmé
En ligne En ligne


Moderateur
Grand Banditisme
*

Messages: 108


WWWtvrmntcn1

« Répondre #10 le: 20 Juin 2011 à 19:18:47 »

Oh super Citizen !
Et bonne chance pour le BAC  Tire la langue
Merci, pour l'instant tout se passe bien ( a part l’épreuve de philosophie mais bon je me rattrape sur les autres matières )
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]   Haut de page
Imprimer
Aller à:  

Theme créé par padexx et modifié par GTAOnline.fr
Page générée en 0.281 secondes avec 23 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