• 03 Mai 2025, 20:45:32


Auteur Sujet: Question rapides !  (Lu 2293 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Boomerkuigi

  • *
  • Tueur
  • Messages: 63
    • Voir le profil
Question rapides !
« 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 ?

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : Question rapides !
« Réponse #1 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

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Question rapides !
« Réponse #2 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++





Hors ligne Boomerkuigi

  • *
  • Tueur
  • Messages: 63
    • Voir le profil
Re : Re : Question rapides !
« Réponse #3 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

Hors ligne Boomerkuigi

  • *
  • Tueur
  • Messages: 63
    • Voir le profil
Re : Question rapides !
« Réponse #4 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 desolée
« Modifié: 08 Décembre 2010, 15:51:15 par Boomerkuigi »

Hors ligne Boomerkuigi

  • *
  • Tueur
  • Messages: 63
    • Voir le profil
Re : Question rapides !
« Réponse #5 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

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : Question rapides !
« Réponse #6 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;
}
« Modifié: 29 Décembre 2010, 19:42:37 par cristab »
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne Boomerkuigi

  • *
  • Tueur
  • Messages: 63
    • Voir le profil
Re : Question rapides !
« Réponse #7 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

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : Question rapides !
« Réponse #8 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 ^^
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne Boomerkuigi

  • *
  • Tueur
  • Messages: 63
    • Voir le profil
Re : Question rapides !
« Réponse #9 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

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : Question rapides !
« Réponse #10 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
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne Boomerkuigi

  • *
  • Tueur
  • Messages: 63
    • Voir le profil
Re : Question rapides !
« Réponse #11 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 ?
« Modifié: 18 Janvier 2011, 16:04:38 par Boomerkuigi »

Hors ligne scott1

  • *
  • Gangster
  • Messages: 1440
    • Voir le profil
Re : Question rapides !
« Réponse #12 le: 18 Janvier 2011, 21:09:00 »
Getplayerfacing angle s'est avec l'axe X si je ne me trompe pas
Refait un Game mode a partir d'une page blanche



Mes partages:

Systeme de Radio avec Frequence Création

Ajouter des véhicule dans le LARP - Godfather Tuto

Anti Cheat "JunkBuster" traduit en FR Traduction

LARP Traduit FR, V0.3 Traduction

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Question rapides !
« Réponse #13 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...):


++Sim++





Hors ligne Boomerkuigi

  • *
  • Tueur
  • Messages: 63
    • Voir le profil
Re : Question rapides !
« Réponse #14 le: 19 Janvier 2011, 08:27:34 »
Merci Sim!