• 05 Juin 2026, 17:12:37


Auteur Sujet: [Aide] Faire apparaitre un véhicule devant soit. [RÉSOLU]  (Lu 2597 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Infu

  • *
  • Modo LS - Admin FnF
  • Messages: 3551
    • Voir le profil
Bonjour, chaque jours j'apprends des choses en pawn grâce à Gzsume. J'ai fait moi-même un moyen de faire apparaître un véhicule à l'aide du /v <id> col1 col 2.
Le problème étant que je souhaiterai qu'il apparaisse devant moi peut importe vers où je regarde.

Voici ma commande (pour montrer qu'il y a du travail derrière).


Code: (pawn) [Sélectionner]
CMD:v(playerid, params[])
{
new vId, c1, c2, Float:posX, Float:posY, Float:posZ;
if(sscanf(params, "ii", vId, c1, c2))
{
SendClientMessage(playerid, COLOR_YELLOW, "Usage: /v <id> <col1> <col2>");
}
if(vId == 609)
{
GetPlayerPos(playerid, posX, posY, posZ);
CreateVehicle(vId, posX, posY+10.0, posZ, 0.0, c1, c2, 0);
}
else if(vId > 605 || vId < 400)
{
SendClientMessage(playerid, COLOR_RED, "L'id du véhicule doit être compris entre 400 et 605. Excepté 609 (Boxville)");
}
else
{
GetPlayerPos(playerid, posX, posY, posZ);
CreateVehicle(vId, posX, posY+10.0, posZ, 0.0, c1, c2, 0);
}
return 1;
}

J'ai volontairement fait quelques fautes, pour ne pas qu'on me prenne la commande sans rien y comprendre. Merci de votre aide. ++

EDIT: Je viens de trouver un post de Sasuke répondant à la même question. Je vois et ce que je peux faire et je dirais si j'ai résolu ou pas. ++

EDIT²: Finalement son post m'a très bien aidé. Le voici: cliquez
« Modifié: 02 Mai 2013, 15:04:07 par Infu. »


Adju ♥
(-_-)



Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : [Aide] Faire apparaitre un véhicule devant soit. [RÉSOLU]
« Réponse #1 le: 02 Mai 2013, 19:24:19 »
Salut,

je te propose cette petite fonction qui utilise Thalès en gros pour déterminer le pts en face du joueur selon l'angle et la distance.

stock GetXYFront(&Float:x, &Float:y, Float:a, Float:distance)
{
x += (distance * floatsin(-a, degrees));
y += (distance * floatcos(-a, degrees));
}

GetXYBehind(&Float:x, &Float:y, Float:a, Float:distance)
{
x -= (distance * floatsin(-a, degrees));
y -= (distance * floatcos(-a, degrees));
}


donc l’utilisation je précise pour ceux qui connaisse pas trop :

new Float:X, Float:Y, Float:A;
GetPlayerFacingAngle(playerid, A);
GetPlayerPos(playerid, X, Y, Z);

GetXYFront(X, Y, A, 10.0); // on entre X et Y, la fonction store les données dans les mêmes variable


A+, Sam

:medieval_sword2:

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : [Aide] Faire apparaitre un véhicule devant soit. [RÉSOLU]
« Réponse #2 le: 02 Mai 2013, 22:11:11 »
Je veux pas faire mon matheux mais c'est pas du thalles, c'est de la trigo :P



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : [Aide] Faire apparaitre un véhicule devant soit. [RÉSOLU]
« Réponse #3 le: 02 Mai 2013, 22:14:13 »
Exacte, mais ca fait tellement loin les cours de mécanique ou tu utilisés la trigo.. et Thalès avec des forces :O c'tout comme quoi (a) :p

vincentdu90

  • Invité
Re : [Aide] Faire apparaitre un véhicule devant soit. [RÉSOLU]
« Réponse #4 le: 02 Mai 2013, 22:25:57 »
Pourquoi utilisé le sinus pour les abscisses et le cosinus pour les ordonnées ? C'est pas l'inverse ?   :grin:

Hors ligne spiirou

  • *
  • L'avenir appartient à ceux qui se lèvent
  • Messages: 866
    • Voir le profil
Re : [Aide] Faire apparaitre un véhicule devant soit. [RÉSOLU]
« Réponse #5 le: 03 Mai 2013, 14:21:59 »
Salut,

On peut aussi utiliser la position de la camera et celle du joueur, ce qui permet, en déplaçant la caméra, de faire apparaître le véhicule n'importe ou autour de soi!

Exemple:
Coordonnées camera: 12, 32, 20
Coordonnées joueur:  10, 26, 22
donc coordonnée véhicule: 8, 20, 24

Je sais pas si je me suis fait comprendre, mais c'est bien pratique parfois :)

Hors ligne Infu

  • *
  • Modo LS - Admin FnF
  • Messages: 3551
    • Voir le profil
Re : [Aide] Faire apparaitre un véhicule devant soit. [RÉSOLU]
« Réponse #6 le: 03 Mai 2013, 14:43:06 »
Je vois pas du tout comment m'y prendre, comme tu montres...
Mais là j'ai mon petit système de spawn, et il me plait bien :)


Adju ♥
(-_-)



Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Salut,

Pourquoi utilisé le sinus pour les abscisses et le cosinus pour les ordonnées ? C'est pas l'inverse ?   :grin:

simplement car les angles sont décalés de 90° sur GTA:SA, l'angle 0 pointe au nord, sur l'axe des ordonnées.

Pour l'utiliser dans ton cas, tu vas faire comme chneubeul a dit, lors de l'appel de la fonction, les valeurs de X et Y sont modifiées et il te suffit de les mettre dans  ton CreateVehicle ou autre fonction.

Bonne chance

++Sim++





vincentdu90

  • Invité
Re : [Aide] Faire apparaitre un véhicule devant soit. [RÉSOLU]
« Réponse #8 le: 07 Mai 2013, 16:30:15 »
Ah ok je comprends mieux  :smile:
Et, une dernière chose, je vais être embêtant mais pourquoi on prend l'opposé de l'angle face au joueur ?
Car pour le cosinus ça ne gène pas mais le sinus d'un angle et son opposé c'est pas la même chose.

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : [Aide] Faire apparaitre un véhicule devant soit. [RÉSOLU]
« Réponse #9 le: 08 Mai 2013, 00:03:53 »
Salut,

ça vient du fait que l'angle est décalé.

Si par exemple, je prend un angle de 90° (face à l'ouest). Je dois soustraire 1 en X pour trouver la position qui est devant le joueur. Eh bien sin(90) = 1, pas -1.

Ce serait plus "correct" de faire -floatsin.... selon moi. (inverser l'angle c'est pas toujours clair sur les conséquences...)

++Sim++





vincentdu90

  • Invité
Re : [Aide] Faire apparaitre un véhicule devant soit. [RÉSOLU]
« Réponse #10 le: 08 Mai 2013, 00:30:46 »
Mais bien sûr !
Tous est plus clair maintenant. Faut pas faire gaffe je suis un moteur deux temps je comprends pas tous du premier coup  :laugh:.
Mille merci S!m !