GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Boomerkuigi le 06 Décembre 2010, 12:35:51

Titre: Question rapides !
Posté par: Boomerkuigi le 06 Décembre 2010, 12:35:51
Salut a tous,

Voila je cree ce topic pour ceux qui ont une petite question rapide a propos du scriptage en pawn !

Je commence, j'ai cree une commandes pour pouvoir créer / attacher un objet au joueur, et la commande renvoi aussi un texte au joueur pour indiquer les positions x, y, z de l'objet sous cette forme:

" X : 0.000000, Y : 0.0000000, ..." mais j'aimerai limitée le nombre de 0 apres la virgule a seulement 2 nombres comment puis je faire ?


Aussi,
enum TeamInfoEnum
{
        Float:TeamPos[3],   // A ce niveau la, est ce correct ?
        TeamPlayers,
        TeamScore
};
new TeamInfo[MAX_TEAMS][TeamInfoEnum];


enum TeamInfoEnum
{
        TeamPos[3],   
        TeamPlayers,
        TeamScore
};
new Float:TeamInfo[MAX_TEAMS][TeamInfoEnum];

Voila, le 2eme je pense que c'est correcte, mais le premier est il correcte aussi ?
Titre: Re : Question rapides !
Posté par: Xartrick le 06 Décembre 2010, 13:13:46
Il me semble que la fonction FloatRound est faite pour cela.

http://wiki.sa-mp.com/wiki/Floatround (http://wiki.sa-mp.com/wiki/Floatround)
Titre: Re : Question rapides !
Posté par: S!m le 06 Décembre 2010, 15:53:55
Salut,

le mieux c'est de seulement modifier ton format.

Utilise X.af où a = le nombre de chiffres après la virgule.

Exemple:
format(tmp, sizeof(tmp), "Ta Position: %.2f, %.2f, %.2f", X, Y, Z);
Bonne chance

++Sim++
Titre: Re : Re : Question rapides !
Posté par: Boomerkuigi le 06 Décembre 2010, 18:29:52
Salut,

le mieux c'est de seulement modifier ton format.

Utilise X.af où a = le nombre de chiffres après la virgule.

Exemple:
format(tmp, sizeof(tmp), "Ta Position: %.2f, %.2f, %.2f", X, Y, Z);
Bonne chance

++Sim++

Waaaaaa Big Merci
Titre: Re : Question rapides !
Posté par: Boomerkuigi le 08 Décembre 2010, 15:46:45
Une autre question
J'aimerai juste qu'on me mette sur la piste pour pouvoir taffer vraiment
Vla le topo :

Un joueur percute un autre (ils sont tous deux en voitures) , si le vehicle health dessend en dessous d'une certaine valeur, j'aimerai recuperer l'id du joueur qui l'ai percutée,
j'ai pensée a un timer combinée avec le GetVehicleHealth pour que des que le vehicle health dessend de la valeur limite on detecte le joueurs qui est a proximitée mais le probleme c'est qu'il pourrait y avoir beacoup de joueur egalement

EDIT : OMG comme je suis aveugle http://wiki.sa-mp.com/wiki/OnVehicleDamageStatusUpdate (http://wiki.sa-mp.com/wiki/OnVehicleDamageStatusUpdate) desolée
Titre: Re : Question rapides !
Posté par: Boomerkuigi le 29 Décembre 2010, 19:21:05
Bonsoir j'aurais 2 questions concernat les "return" et les fonctions public

Quel est le meilleur code selon vous
public SendMessageToPlayerInRace(string[])
{
for(new i= 0; i<MAX_PLAYERS; i++)
{
if(pRaceInfo[i][InRace] == 1) return SendClientMessage(i, RACE_INFO_COLOR_ALL, string);
}
return 0;  // ICI
}

public SendMessageToPlayerInRace(string[])
{
for(new i= 0; i<MAX_PLAYERS; i++)
{
if(pRaceInfo[i][InRace] == 1) return SendClientMessage(i, RACE_INFO_COLOR_ALL, string);
}
return 1; // ICI
}

De plus je voulais savoir dans quel cas on doit utiliser une fonction "public" ?

Merci d'avance
Titre: Re : Question rapides !
Posté par: cristab le 29 Décembre 2010, 19:29:27
un public tu peut t'en servir dans un timer pas comme si tu fait une fonction donc dans le cas de ta fonction tu peu le mettre en public ou en stock sa n'auras aucun effet notoire

en ce qui concerne ton return il n'est pas necessaire appriorit
public SendMessageToPlayerInRace(string[])
{
for(new i= 0; i<MAX_PLAYERS; i++)
{
if(pRaceInfo[i][InRace] == 1)
                {
                    SendClientMessage(i, RACE_INFO_COLOR_ALL, string);
                }
}
        return 1;
}
Titre: Re : Question rapides !
Posté par: Boomerkuigi le 29 Décembre 2010, 19:36:54
Quand je fait sa , sa me met un warning comme quoi la fonction doit renvoyer une valeur :O
Titre: Re : Question rapides !
Posté par: cristab le 29 Décembre 2010, 19:42:00
ah ben oui lol comme c'est un public il faut renvoyer un return 1; avant la fermeture du public desoler d'avoir oublier ce leger detail ^^
Titre: Re : Question rapides !
Posté par: Boomerkuigi le 29 Décembre 2010, 19:54:14
Donc tu me conseillerai de ne pas mettre la fonction en public ?
Parce que j'ai des erreurs (IG) sur mes recentes commandes que j'ai créer et je ne sais pas d'ou vien l'erreur
C'est assez frustrant
Titre: Re : Question rapides !
Posté par: cristab le 29 Décembre 2010, 19:56:55
moi ce genre de fonction je ne met pas dans les public enfaite si tu as juste un peu de temps tu peu regarder dans le showroom le FS AFK que je partage aujourd'hui est tout en bas j'ai pratiquement la meme fonction que toi sous un nom different ;) et sans aucun return a l'interieure
Titre: Re : Question rapides !
Posté par: Boomerkuigi le 18 Janvier 2011, 15:45:02
Question mathématiques :
Voila j'aimerai savoir comment calculer le Z angle que fait une droite dans l'espace 3D
J'ai deux point A(x1, y1, z1)  B(x2, y2, z2) j'aimerai savoir l'angle par rapport a l'axe Z (hauteur) que fait le segment AB
Comment faire ?
J'espere que vous m'avez compri ..

Aussi le GetPlayerFacingAngle() c'est l'angle par rapport a l'axe Z ?
Titre: Re : Question rapides !
Posté par: scott1 le 18 Janvier 2011, 21:09:00
Getplayerfacing angle s'est avec l'axe X si je ne me trompe pas
Titre: Re : Question rapides !
Posté par: S!m le 18 Janvier 2011, 21:31:06
Salut,

pour connaitre cet angle, il te suffit de faire l'arctangente de la différence en X etY divisé par la différence en Z.

En gros:

X = différence en X
Y = différence en Y
Z = différence en Z

XY = floatsqroot(X * X + Y * Y);
angle = atan(XY/Z);


ps. la différence c'est max - min
pps. l'angle calculé est l'angle ϕ dans cette figure (merci wikipedia pour ce partage...):
(http://upload.wikimedia.org/wikipedia/commons/thumb/f/f7/Spherical_Coordinates.png/220px-Spherical_Coordinates.png) (http://fr.wikipedia.org/wiki/Coordonn%C3%A9es_sph%C3%A9riques)

++Sim++
Titre: Re : Question rapides !
Posté par: Boomerkuigi le 19 Janvier 2011, 08:27:34
Merci Sim!
Titre: Re : Question rapides !
Posté par: Boomerkuigi le 31 Janvier 2011, 20:39:16
Une question  :)

Voila j'ai fait un tour dans le "a_samp", or je n'ai vu que les prototypes des fonction samp comme, exemple:
" native SendClientMessage(playerid, color, const message[]); "

Mais ce que j'aimerais c'est de voir les fonctions de samp, c'est a dire comment ils sont fait etc...
Quelqu'un saurait-il ou les trouver ?
Titre: Re : Question rapides !
Posté par: cristab le 31 Janvier 2011, 20:58:10
tout ce trouve il me semble dans le serveur.exe ou le client je ne peu t'en dire plus peu etre que Sasuke seras mieux t'expliquer que moi mais tu ne verras jamais comment c'est fait
Titre: Re : Question rapides !
Posté par: Boomerkuigi le 31 Janvier 2011, 21:04:49
Ah je voit la team samp joue la securitée  :laugh