[Tutorial] Directive #define
#1

[CENTER][SIZE="4"][COLOR="DarkOrchid"]Pawn-Tutorial n°1 :
Directive #define[/COLOR][/SIZE]


Dans ce tutoriel, je vais vous apprendre а manipuler la directive #define trиs connue, mais malheureusement peu utilisйe dans tous ses domaines.
Il existe plusieurs directives, mais je ferais un tutoriel pour chacune, histoire de ne pas trop vous donner d'informations en mкme temps.

[SIZE="3"]Qu'est-ce que la directive #define ?[/SIZE]

Cette directive est avant tout utilisйe pour remplacer un texte ou une information qui seront plus ou moins rйutilisйs ultйrieurement. Elle dйfinit une information prйcise.
Elle permet йgalement de crйer des macros et des fonctions.

[SIZE="3"]Dйfinir une information[/SIZE]

Nous allons utiliser cette directive en dйfinissant en premier lieu une information trиs simple que nous allons rйutiliser :

PHP Code:
#define MonInfo 10 

Nous avons attribuй la valeur 10 а l'information MonInfo.

Nous pouvons ainsi rйutiliser notre information simplement, sans avoir а indiquer la valeur а chaque fois :

PHP Code:
printf("Info : %d",MonInfo); 

C'est comme utiliser :

PHP Code:
printf("Info : %d",10); 

Le principe de cette directive, c'est avant tout de dйfinir une information qui sera fixe.

Cette directive est aussi utilisйe de maniиre plus approfondie :

PHP Code:
#define Calcul(%0) \
            
((%0)) 

Cette directive deviendra ainsi une macro. Les macros sont souvent utilisйes en pawn (exemple : dcmd).
Ainsi nous pouvons rйutiliser notre macro de telle sorte :

PHP Code:
printf("Rйsultat : %d",Calcul(10+10)); 

Notre macro Calcul va ainsi effectuer l'action 10+10.

Vous pouvez aussi amйliorer votre mйthode de calcul avec deux arguments :

PHP Code:
#define Addition(%0)(%1) \
                
((%0) + (%1)) 

Nous allons rйutiliser notre macro Addition telle que :

PHP Code:
printf("Rйsultat addition : %d",Addition(5)(10)); 

Ainsi, les deux arguments 5 et 10 seront additionnйs, ce qui nous renverra 15.

D'autres mйthodes de calcul avec d'autres macros peuvent кtre utilisйes :

PHP Code:
#define Multiplication(%0) \
                
((%0) * 10

Ici, notre argument sera tout simplement multipliй par 10, nous pouvons ainsi utiliser notre macro comme ceci :

PHP Code:
printf("Rйsultat multiplication : %d",Multiplication(10)); 

La console va simplement renvoyer :

Rйsultat multiplication : 100

De grands calculs peuvent кtre effectuйs dans une macro, mais aussi plusieurs assemblages d'arguments, ce qui est intйressant par exemple ici :

PHP Code:
#define Division(%0) \
            
%10 

Notre macro ici ne sera composйe que d'un seul argument, que nous diviserons par 10. Ainsi, nous pourrons effectuer le calcul suivant :

PHP Code:
printf("Rйsultat division : %d",Division(24526+65424)); 

Autrement dit, notre console va interprйter le calcul tel que (24526+65424)/10 et va nous renvoyer comme rйsultat 31068.

Pour finir, nous pouvons йgalement crйer des fonctions а partir de ces macros :

PHP Code:
#define PlayerMessage(%0,%1,%2) \
                    
SendClientMessage(%0,%1,%2

Cette macro est composйe de trois arguments pour la simple et bonne raison que la fonction SendClientMessage est composйe de trois arguments (joueur,couleur,message).
Autrement dit, le nombre d'arguments de votre macro dйpendra de ceux de votre fonction.

Nous allons donc pouvoir rйutiliser notre macro comme ceci :

PHP Code:
PlayerMessage(playerid,0xFFFFFF,"SAMP"); 

On peut faire йnormйment de choses avec cette directive et je ne les ai pas toutes exploitйes. J'espиre vous avoir йclairci et aidй а ce sujet, mкme si beaucoup en savent dйjа sur cette directive, elle est forte utile.

Si vous trouvez un quelconque bug ou une information erronйe, prйvenez-moi. Je vous dit а trиs bientфt pour un nouveau tutoriel !
[/CENTER]
Reply
#2

Bien jouй, mкme si tu n'argumentes pas tout.

Par ailleurs, j'avais dйjа fait un tutoriel dessus : https://sampforum.blast.hk/showthread.php?tid=563016
Reply
#3

Dutheil;3437966 Wrote:Bien jouй, mкme si tu n'argumentes pas tout.

Par ailleurs, j'avais dйjа fait un tutoriel dessus : https://sampforum.blast.hk/showthread.php?tid=563016

Je me disais aussi que quelqu'un avait dйjа fait un tutoriel dessus. Mais bon, disons que c'est plus pour les dйbutants ;)
Reply
#4

Bien jouй ;D
Reply
#5

Smocky;3437979 Wrote:Bien jouй ;D

Merci а toi ! ;)
Reply
#6

Buthers;3437996 Wrote:Merci а toi ! ;)

Derien ;D
Reply
#7

Le tutoriel vient d'кtre mit а jour (nouvelles informations, correction et ajouts ...).
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)