• 04 Juin 2026, 16:47:27


Auteur Sujet: Direction d'un ChekPoint ( Angle ) dans YRace  (Lu 10867 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Eloctro

  • Pawno Fan
  • *
  • Grand Banditisme
  • Aight !
  • Messages: 846
    • Voir le profil
    • GtaSA-RP
Re : Direction d'un ChekPoint ( Angle)
« Réponse #15 le: 07 Mars 2008, 17:48:40 »

Hors ligne rivoal29

  • *
  • Bandit
  • Messages: 269
    • Voir le profil
Re : Re : Direction d'un ChekPoint ( Angle)
« Réponse #16 le: 07 Mars 2008, 21:18:57 »


Hors ligne UrbanGhetto

  • *
  • Grand Banditisme
  • I PWN You !
  • Messages: 948
    • Voir le profil
    • http://h2oteam.roxorgamers.com/
Re : Direction d'un ChekPoint ( Angle)
« Réponse #17 le: 07 Mars 2008, 21:52:37 »
C'est simple,

Je te décortique les arguments d'un Race Checkpoint

Code: (cpp) [Sélectionner]
SetPlayerRaceCheckpoint(playerid, type, Float:x, Float:y, Float:z, Float:nextx, Float:nexty, Float:nextz, Float:size);
  • playerid = Prendre l'id du joueur.
  • type = Le type du checkpoint: 0-Normal, 1-Finish, 2-Rien, 3-Aérien Normal, 4-Aérien finish.
  • Float:x = Position X.
  • Float:y = Position Y.
  • Float:z = Position Z.

Arguments que tu cherches :

  • Float:nextx = Checkpoint orienté en X vers...
  • Float:nexty = Checkpoint orienté en Y vers...
  • Float:nextz = Checkpoint orienté en Z vers...

Voilà pas plus facile...

˙·٠•● Je dis, mieux vaut toucher à un clavier qu'a de la drogue | Le meilleur topic du forum | Ce que j'ai fait a fait de moi ce que je suis ●•٠·˙

Hors ligne rivoal29

  • *
  • Bandit
  • Messages: 269
    • Voir le profil
Re : Re : Direction d'un ChekPoint ( Angle)
« Réponse #18 le: 08 Mars 2008, 09:57:13 »
C'est simple,

Je te décortique les arguments d'un Race Checkpoint

Code: (cpp) [Sélectionner]
SetPlayerRaceCheckpoint(playerid, type, Float:x, Float:y, Float:z, Float:nextx, Float:nexty, Float:nextz, Float:size);
  • playerid = Prendre l'id du joueur.
  • type = Le type du checkpoint: 0-Normal, 1-Finish, 2-Rien, 3-Aérien Normal, 4-Aérien finish.
  • Float:x = Position X.
  • Float:y = Position Y.
  • Float:z = Position Z.

Arguments que tu cherches :

  • Float:nextx = Checkpoint orienté en X vers...
  • Float:nexty = Checkpoint orienté en Y vers...
  • Float:nextz = Checkpoint orienté en Z vers...

Voilà pas plus facile...

Ok mais comment je c'est l'angle alors ?


Hors ligne UrbanGhetto

  • *
  • Grand Banditisme
  • I PWN You !
  • Messages: 948
    • Voir le profil
    • http://h2oteam.roxorgamers.com/
Re : Direction d'un ChekPoint ( Angle ) dans YRace
« Réponse #19 le: 08 Mars 2008, 17:57:21 »
Ben tu choisit une position, Exemple 123,456,789

Et le checkpoint sera orienté vers elle...

˙·٠•● Je dis, mieux vaut toucher à un clavier qu'a de la drogue | Le meilleur topic du forum | Ce que j'ai fait a fait de moi ce que je suis ●•٠·˙

Hors ligne rivoal29

  • *
  • Bandit
  • Messages: 269
    • Voir le profil
Re : Re : Direction d'un ChekPoint ( Angle ) dans YRace
« Réponse #20 le: 08 Mars 2008, 21:15:12 »
Ben tu choisit une position, Exemple 123,456,789

Et le checkpoint sera orienté vers elle...
Mais comment j'écrit l'angle ya pas une fonction qui prend l'angle d'un point a un autre ?
PS : J'utilise Yrace


Hors ligne UZI-I

  • BinaryIPL Manager
  • *
  • Grand Banditisme
  • http://www.yoa2n.fr
  • Messages: 825
    • Voir le profil
    • Yoa2n.fr
Re : Direction d'un ChekPoint ( Angle ) dans YRace
« Réponse #21 le: 08 Mars 2008, 22:18:20 »
Il y a pas d'angle. C'est une position dans un espace tridimenssionel. La fleche pointera vers les position renseigné.

Hors ligne rivoal29

  • *
  • Bandit
  • Messages: 269
    • Voir le profil
Re : Re : Direction d'un ChekPoint ( Angle ) dans YRace
« Réponse #22 le: 09 Mars 2008, 10:04:19 »
Il y a pas d'angle. C'est une position dans un espace tridimenssionel. La fleche pointera vers les position renseigné.
SYG avait dit :
Citer
Tout d'abord, il s'agit de déterminer la direction dans laquelle la course va partir (le sens de la flèche du permier CP). Car dans YS, le joueur arrive sur le premier CP dans n'importe quel sens.
Pour faire ça, il faut déterminer l'angle que forme le segment déterminé par les deux premiers CP avec l'axe des X (axe Est-Ouest).
Ca c'est des maths donc pas forcement facile à expliquer. Toujours est-il, qu'il faut utiliser la fonction asin pour trouvé l'angle après avoir trouvé le sinus de ce même angle.
Mais je ne comprend rien du tout  :-X


Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Direction d'un ChekPoint ( Angle ) dans YRace
« Réponse #23 le: 11 Mars 2008, 12:03:00 »
Tout d'abord, je ne donnerais pas de code, sinon je divulguerais le code de Lalu.

Je vois que personne n'a compris ce que tu demandes Rivoal.
Ce que tu veux c'est positionner les véhicules pour qu'ils soient dans le direction du deuxième CP de ta course.
Pour faire ça, il faut utiliser quelques jolies formules de math que l'on a apprise à l'école (je ne me souviens plus en quelle classe) et qui, à l'époque, semblaient ne servir à rien.

NB : Dans les calculs qui suivent, on se place en projection dans le plan (XY) car la 3D n'est pas nécessaire. On utilisera donc que les coordonnées x et y.

Je vais essayer d'expliquer clairement avec un dessin (qui remplace 200 lignes d'explications) :


La correction à la fin est due au fait que l'axe des Y est inversé dans SA-MP.

Autre chose :
Le positionnement du deuxième CP de la course est important pour éviter les problèmes de ce genre :
-----------------------+
    CP2                |
-----------------+     |
                 |     |
                 |     |
                 |     |
                 |     |
                 |     |
                 | CP1 |
                 |     |

Dans ce cas, les véhicules seront positionnés en travers sur la route.

Le deuxième CP doit donc être placé correctement comme ci-dessous :
-----------------------+
                       |
-----------------+     |
                 | CP2 |
                 |     |
                 |     |
                 |     |
                 |     |
                 | CP1 |
                 |     |


++
Syg
Courtesy of GtaManiac

Hors ligne rivoal29

  • *
  • Bandit
  • Messages: 269
    • Voir le profil
Re : Re : Direction d'un ChekPoint ( Angle ) dans YRace
« Réponse #24 le: 11 Mars 2008, 16:48:44 »
Tout d'abord, je ne donnerais pas de code, sinon je divulguerais le code de Lalu.

Je vois que personne n'a compris ce que tu demandes Rivoal.
Ce que tu veux c'est positionner les véhicules pour qu'ils soient dans le direction du deuxième CP de ta course.
Pour faire ça, il faut utiliser quelques jolies formules de math que l'on a apprise à l'école (je ne me souviens plus en quelle classe) et qui, à l'époque, semblaient ne servir à rien.

NB : Dans les calculs qui suivent, on se place en projection dans le plan (XY) car la 3D n'est pas nécessaire. On utilisera donc que les coordonnées x et y.

Je vais essayer d'expliquer clairement avec un dessin (qui remplace 200 lignes d'explications) :


La correction à la fin est due au fait que l'axe des Y est inversé dans SA-MP.

Autre chose :
Le positionnement du deuxième CP de la course est important pour éviter les problèmes de ce genre :
-----------------------+
    CP2                |
-----------------+     |
                 |     |
                 |     |
                 |     |
                 |     |
                 |     |
                 | CP1 |
                 |     |

Dans ce cas, les véhicules seront positionnés en travers sur la route.

Le deuxième CP doit donc être placé correctement comme ci-dessous :
-----------------------+
                       |
-----------------+     |
                 | CP2 |
                 |     |
                 |     |
                 |     |
                 |     |
                 | CP1 |
                 |     |


++
Syg

Edit Je comprend ( Qu'elle qu'un m'aide ) mais comment on fait des calcule sur Pawn ???
Edit Et auusi sa ve dire quoi sa
   ->
||AB||
« Modifié: 11 Mars 2008, 17:13:19 par rivoal29 »


Hors ligne rivoal29

  • *
  • Bandit
  • Messages: 269
    • Voir le profil
Re : Direction d'un ChekPoint ( Angle ) dans YRace
« Réponse #25 le: 11 Mars 2008, 18:38:23 »
Alors voila SYG j'ai bosser j'ai trouver mes pour mettre sur pawn aucune idées j'ai essayer sa :
new B = (atang x ( RaceCheckpoints[new][1] - RaceCheckpoints[target][1] ) / ( RaceCheckpoints[new][0] - RaceCheckpoints[target][0] )) ;Mes sa me mes des erreur :
C:\Users\Gurvan\Desktop\yrace-test.pwn(750) : error 017: undefined symbol "atang"
C:\Users\Gurvan\Desktop\yrace-test.pwn(750) : warning 215: expression has no effect
C:\Users\Gurvan\Desktop\yrace-test.pwn(750) : error 001: expected token: ";", but found ")"
C:\Users\Gurvan\Desktop\yrace-test.pwn(750) : error 029: invalid expression, assumed zero
C:\Users\Gurvan\Desktop\yrace-test.pwn(750) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase

*La ligne 750 est la ligne que j'ai mi au-dessus

4 Errors.
Merci de m'aidé

EDIT : Désoler pour le double poste
« Modifié: 11 Mars 2008, 18:40:12 par rivoal29 »


Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Direction d'un ChekPoint ( Angle ) dans YRace
« Réponse #26 le: 11 Mars 2008, 21:25:15 »
   ->
||AB|| : Ca c'est la norme (longueur) du vecteur defini par les points A et B.
Et c'est égal à la racine carrée de la somme des carrés des différences des coordonnées des points A et B.
T'as rien compris ? Normal, en français c'est toujours moins clair.
Mais ce n'est pas grave, je vais mettre ça en pawn (même si j'ai dit que je ne posterais pas de code) :

NormeAB = floatsqroot ((xb-xa)*(xb-xa) + (yb-ya)*(yb-ya));

Ensuite, je dis que le sinus de l'angle que l'on cherche est la division de (yb-ya) par la norme du vecteur AB.
Soit :

SinAngle = (yb-ya)/NormeAB;

Puis, pour trouver l'angle, il faut prendre l'arcsinus du sinus que l'on vient de trouver :

Angle = asin (SinAngle);

Et enfin, il faut appliquer les corrections dues à l'inversion de l'axe des Y (équivaut à une symétrie sur l'axe des X) :

if (xa > ab)
{
    Angle = 180.0 - Angle;
}
else
{
    Angle = Angle - 90.0;
}


Il suffit alors d'utiliser la valeur Angle trouvée dans un appel à SetVehiculeZAngle.

Dans les calculs ci-dessus, toutes les variables sont de Float: et le premier CP à pour coordonnées (xa, ya, za) et le deuxième (xb, yb, zb).

Maintenant, il te reste à définir une grille de départ, car Yrace positionne les joueurs aléatoirement sur le CP de départ.
Pour ça, je te laisse réfléchir (ou abandonner). Attention toutefois, la grille de départ doit subir une rotation de l'angle que l'on a trouvé ci-dessus.

Bon courage. Et vive les maths ...  :-*

++
Syg
Courtesy of GtaManiac

Hors ligne rivoal29

  • *
  • Bandit
  • Messages: 269
    • Voir le profil
Re : Re : Direction d'un ChekPoint ( Angle ) dans YRace
« Réponse #27 le: 12 Mars 2008, 12:51:03 »
   ->
||AB|| : Ca c'est la norme (longueur) du vecteur defini par les points A et B.
Et c'est égal à la racine carrée de la somme des carrés des différences des coordonnées des points A et B.
T'as rien compris ? Normal, en français c'est toujours moins clair.
Mais ce n'est pas grave, je vais mettre ça en pawn (même si j'ai dit que je ne posterais pas de code) :

NormeAB = floatsqroot ((xb-xa)*(xb-xa) + (yb-ya)*(yb-ya));

Ensuite, je dis que le sinus de l'angle que l'on cherche est la division de (yb-ya) par la norme du vecteur AB.
Soit :

SinAngle = (yb-ya)/NormeAB;

Puis, pour trouver l'angle, il faut prendre l'arcsinus du sinus que l'on vient de trouver :

Angle = asin (SinAngle);

Et enfin, il faut appliquer les corrections dues à l'inversion de l'axe des Y (équivaut à une symétrie sur l'axe des X) :

if (xa > ab)
{
    Angle = 180.0 - Angle;
}
else
{
    Angle = Angle - 90.0;
}


Il suffit alors d'utiliser la valeur Angle trouvée dans un appel à SetVehiculeZAngle.

Dans les calculs ci-dessus, toutes les variables sont de Float: et le premier CP à pour coordonnées (xa, ya, za) et le deuxième (xb, yb, zb).

Bon courage. Et vive les maths ...  :-*

++
Syg
Merci je vais tester sa
Citer
Maintenant, il te reste à définir une grille de départ, car Yrace positionne les joueurs aléatoirement sur le CP de départ.
Pour ça, je te laisse réfléchir (ou abandonner). Attention toutefois, la grille de départ doit subir une rotation de l'angle que l'on a trouvé ci-dessus.
T'inquiet  ;) J'ai ma petite idée c'etait juste l'angle qui poser problème
EDIT: je n'arive pas a rectifier ces warning tu peux m'aider ou quel qu'un d'autre ?
Les voila :
C:\Users\Gurvan\Desktop\yrace-test.pwn(755) : warning 213: tag mismatch
C:\Users\Gurvan\Desktop\yrace-test.pwn(756) : warning 213: tag mismatch
C:\Users\Gurvan\Desktop\yrace-test.pwn(757) : warning 213: tag mismatch
C:\Users\Gurvan\Desktop\yrace-test.pwn(760) : warning 213: tag mismatch
C:\Users\Gurvan\Desktop\yrace-test.pwn(764) : warning 213: tag mismatch
Les ligne sont les ligne de SYG ( ce ne sons que des warning )
Code:
new target;
new next;
new NormeAB;
new SinAngle;
new Angle;

NormeAB = floatsqroot ((RaceCheckpoints[next][0]-RaceCheckpoints[target][0])*(RaceCheckpoints[next][0]-RaceCheckpoints[target][0]) + (RaceCheckpoints[next][1]-RaceCheckpoints[target][1])*(RaceCheckpoints[next][1]-RaceCheckpoints[target][1]));

SinAngle = (RaceCheckpoints[next][1]-RaceCheckpoints[target][1])/NormeAB;

Angle = asin (SinAngle);


if (RaceCheckpoints[target][0] > NormeAB)
{
    Angle = 180.0 - Angle;
}
else
{
    Angle = Angle - 90.0;
}
Et il ne marche pas  :( :wall :'(
« Modifié: 12 Mars 2008, 13:51:38 par rivoal29 »


Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Re : Direction d'un ChekPoint ( Angle ) dans YRace
« Réponse #28 le: 12 Mars 2008, 13:58:37 »
Pour tes warning
 Dans les calculs ci-dessus, toutes les variables sont de Float: et le premier CP à pour coordonnées (xa, ya, za) et le deuxième (xb, yb, zb).

Donc
      new Float:NormeAB;
      new Float:SinAngle;
      new Float:Angle;


++
Syg
Courtesy of GtaManiac

Hors ligne rivoal29

  • *
  • Bandit
  • Messages: 269
    • Voir le profil
Re : Re : Re : Direction d'un ChekPoint ( Angle ) dans YRace
« Réponse #29 le: 12 Mars 2008, 16:08:29 »
Pour tes warning
Donc
      new Float:NormeAB;
      new Float:SinAngle;
      new Float:Angle;


++
Syg
Ok ! et "ab" ces NormeAB c'est sa pour le dernier code