GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: papa-noël le 27 Août 2007, 04:05:23
-
Salut a tous ,
J'ai une petite question, je bloque sur ceci Comment faire apparaitre un objet devant moi, et non a côté de moi Exemple
new Float:Pos[3];
GetPlayerPos(i,Pos[0],Pos[1],Pos[2]);
CreateObject(1655,Pos[0],Pos[1],Pos[2],0,0,0);}
L'objet apparait a côté de moi, et non devant moi Si vous pouvez m'aider, merci d'avance
HoHoHoHoHoHo... ..
-
Salut !
Je pense qu'il faut ajouter dans ton code
GetVehicleZAngle(vehicleid, FloatZ_angle)
Je ne suis pas sur (je debute aussi)
AK.
-
Normalement, l'objet devrait être autour de toi. Mais bon, ça dépend de l'objet que tu crées.
Sinon, pour positionner un objet devant toi, il faut faire un peu de math (je vais pas le faire ici et te donner directement la réponse).
Donc tout d'abord, il faut récupérer la direction dans lequel regarde le joueur. Selon qu'il est à pied ou en vehicule, il faut utiliser soit GetPlayerFacingAngle soit GetVehicleZAngle. On appellera Angle cette valeur et Dist la distance à laquelle tu veux que l'objet apparaisse.
Ensuite, tu positionnes ton objet comme ça (ligne non simplifiée) :
CreateObject (1655, Pos[0] + Dist * floatcos (Angle + 90.0, degrees), Pos[1] + Dist * floatsin (Angle + 90.0, degrees), Pos[2], 0.0, 0.0, 0.0);
Après, tu peux faire les simplification suivante (là c'est des math) :
cos (Angle+90) = sin (Angle) et
Sin (Angle+90) = -cos (Angle).
Donc au final :
CreateObject (1655, Pos[0] + Dist * floatsin (Angle, degrees), Pos[1] - Dist * floatcos (Angle, degrees), Pos[2], 0.0, 0.0, 0.0);
++
Syg
-
Donc... J'avais raison :P :P :P
AK.
-
A moitié Arsenik, quand le personnage est à pied, il faut utiliser GetPlayerFacingAngle.
++
Syg
-
Peut etre a moitié mais j'avais raison mdr !
AK.
-
Salut ,
Merci ca marche très bien :) Si sa vous derange pas quand j'ecrie /ramp le strcmp et deja fait la rampe je peux pas sauté dessus elle et toujours orienté vers le sud :s Sinon ca marche très bien merci
HoHohHohohoooo..
-
Pour la ramp il suffit juste de changer le numero de la rotation.
AK.
-
Je sais mais jarrive pas :(
-
Bon alors on continue un peu parceque c'est vraiment simple :
Au lieu de
CreateObject (1655, Pos[0] + Dist * floatsin (Angle, degrees), Pos[1] - Dist * floatcos (Angle, degrees), Pos[2], 0.0, 0.0, 0.0);
mets
CreateObject (1655, Pos[0] + Dist * floatsin (Angle, degrees), Pos[1] - Dist * floatcos (Angle, degrees), Pos[2], 0.0, 0.0, Angle);
et le tour est joué.
Remarque : personnellement, je préfère la rampe 1634 à la 1655. Et on peut rajouter 0.5 à la composante z pour quelle soit un peut plus haute :
CreateObject (1634, Pos[0] + Dist * floatsin (Angle, degrees), Pos[1] - Dist * floatcos (Angle, degrees), Pos[2] + 0.5, 0.0, 0.0, Angle);
++
Syg
-
Merci !!!!!!!!!!!!!,
Ca marche super la command j'ai couplé sa avec une racourcie clavier ca rend super :) Sig j'ai fait un random new StyleRamp[MAX_PLAYERS];
[....] dans un random quand le joueur se connecte il peux choisir le style de la rampe :) Que tu bonheur pour un bon stunter :)
Niveau code je me debrouille mais c'etait des math alors ... :bangin
Vous etre super simpa de m'aider je vais faire de mon possible essayé de faire comme toi sig aidé les gens dans la mesure du possible :)
@++
HoHohohohoho....
-
j'ai couplé sa avec une racourcie clavier...
C'est sa que j'aimerais apprendre a faire...
Comment fait on ?
AK.
-
Pour ne pas te donner une solution toute faite et puisque tu m'as l'air capable de le faire tout seul, je te met sur la voie :
Il faut utiliser la fonction callback OnPlayerKeyStateChange
++
Syg
-
Haaa ouiii c'est sa ! je me demander un moment a quoi cette fonction servais ! :).
Merci.
AK.