chneubeul

[Fonction] MoveAttachedObject et AngleEnvironEgal

3 messages dans ce sujet

[Fonction] MoveAttachedObject et AngleEnvironEgal

Voir le fichier

Hello,

je vous partage mes 2 fonctions que j'ai faites dans un projet que je partagerais aussi une fois finis.

MoveAttachedObject                                                                    

MoveAttachedObject(oid, vid, Float:oX, Float:oY, Float:oZ, Float:orX, Float:orY, Float:orZ, Float:dX, Float:dY, Float:dZ, Float:drX, Float:drY, Float:drZ, Float:speed);

Utilisations  -> les coordonées 'o' doivent contenir l'OFFSET de l'objet attaché et les coordonnées 'd' celle où l'objet doit arriver. L'objet va bouger tout les 100ms + ou - vite selon la 'speed'.
Lien : pastebin

AngleEnvironEgal                                                                          

stock AngleEnvironEgal (Float:a, Float:b, Float:d)
{
    new Float:fmin=b-d, Float:fmax=b+d, out;

    if(fmin<0.0) {  fmin += 360.0; out = 1;}
    if(fmax>360.0) {  fmax -= 360.0; out = 2;}
    if(!out)
    {
        if (a>=fmin && a<=fmax)
               { return 1; }
    }
    else if (out == 1)
    {
        if (a>=fmin && 360.0-a<=fmax)
               { return 1; }
    }
    else if(out == 2)
    {
        if (360.0+a>=fmin && a<=fmax)
               { return 1; }
    }
       else
        return 0;

       return 0;
}

Utilisation -> Entrer l'angle A et B, ansi que la 'fourchette' D. Petite pensée à Syg pour cette fonction :)


A+, Sam.
 :bye:

 


 

1 personne aime ça

Partager ce message


Lien à poster
Partager sur d’autres sites

Mon avis pour la première fonction:
MoveAttachedObject devrait s'appeler: MoveVehicleAttachedObject.
Les arguments de ta fonction devraient être: "objectid, vehicleid, Float:X, Float:Y, Float:Z, Float:RotX = -1000.0, Float:RotY = -1000.0, Float:RotZ = -1000.0". C'est plus pratique ainsi et les rotations devraient être facultatives. Malheureusement, je n'ai pas pris le temps d'essayer ta fonction ou même de vérifier quoi que ce soit à propos.

 

Ta deuxième fonction est largement optimisation:

AngleEnvironEgal(Float:angle_a, Float:angle_b, Float:difference)
{
	if(angle_a > angle_b)
	{
		angle_a ^= angle_b;
		angle_b ^= angle_a;
		angle_a ^= angle_b;
	}
	return (angle_a <= angle_b <= (angle_a+difference));
}
 

Partager ce message


Lien à poster
Partager sur d’autres sites

Yo merci pour ta réponse.

 

Oui le nom devrait être changé, par contre pour les paramètres optionnel, c'est pas vraiment possible du coup, comme il faut les 2 coordonées.

Pour la deuxième fonction, tu ne prend pas en compte le fait que l'angle est de 0 à 360°, la tienne est plus utile pour checké si 2 nombres sont quasi égaux. :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant