GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Nico_Torres le 05 Août 2009, 19:41:13
-
Bonjour a tous, depuis maintenant 2 heures, je suis en train de lire les tutos du wiki de gta online, jusqu'ici tout va bien, enfin, jusqu'à que j'arrive a la parti des "Define",
La parti, d'accord, je comprend tout ( je crois )
La parti 2.1, sa peut aller, je comprend pas tout...
Le reste m'échappe complétement, j'ai beau relire je comprend pas les Float, ( pareil pour string... )
Est ce que quelqu'un d'entre vous pourrais m'expliquer en detail ce que font les define, comment les utiliser ect...
_________________________________________________________________________________ ____________________________________________________________________
Aussi, je comprend pas le ''public" et le "return'', merci de m'expliquer !
Je vous remerci beaucoup d'avance, bonne soirée !
-
Les #define dans Pawn sont très utiles. Il est difficile d'expliquer tout ce qui est possible de faire avec, mais je vais essayer.
Avec, il est possible de faire des options de compilation, ou bien des fonctions qui ne peuvent pas être scriptées 'normalement', mais l'usage le plus courant est la simple substitution de texte, ce qui permet de ne pas avoir à modifier dans tout le script une certaine valeur.
Les #define ne sont pas compilées. Ce sont des directives du précompilateur (appellé aussi préprocesseur).
Un exemple de substitution:
#define MESSAGE_TEST "Test un deux un deux"
public OnPlayerConnect(playerid)
{
SendClientMessage(playerid, 0xFFFFFFFF, MESSAGE_TEST);
return false;
}
public OnPlayerSpawn(playerid)
{
SendClientMessage(playerid, 0xFFFFFFFF, MESSAGE_TEST);
return false;
}
Au moment de la précompilation, ce script va se transformer en:
public OnPlayerConnect(playerid)
{
SendClientMessage(playerid, 0xFFFFFFFF, "Test un deux un deux");
return false;
}
public OnPlayerSpawn(playerid)
{
SendClientMessage(playerid, 0xFFFFFFFF, "Test un deux un deux");
return false;
}
C'est très utile si tu utilise plusieurs fois le même message dans ton script. Si tu veux changer le message, tu n'as qu'a changer la #define, au lieu de changer partout dans le script.
Un exemple d'option de compilation:
//#define OPTION
public OnFilterScriptInit()
{
#if defined OPTION
print("OPTION est défini, ce message va donc apparaitre dans la console");
#endif
}
Si tu teste ce script, tu verra que le message n'apparait pas dans la console. Pour qu'il apparaisse, tu devra enlever les // devant la #define.
Maintenant un exemple de fonction qu'il est trèèès compliqué de reproduire avec du code normal:
new g_message[128];
#define SendClientMessageEx(%1,%2,%3) \
{\
format(g_message,sizeof g_message,%3);\
SendClientMessage(%1,%2,g_message);\
}
Les '\' signifient que la define continue sur la ligne suivante.
Maintenant, tu peut l'utiliser comme ceci:
SendClientMessageEx(playerid, 0xFFFFFFFF, "Tu roule à %d km/h et tu as %d €", Vitesse[playerid], Monnaie[playerid]);
-
Salut, merci de ta réponse, j'ai donc quelque questions, dans le premiere script, pourquoi avoir, OnPlayerSpawn & OnPlayerConnect ? On PEUX en enlever un des deux ?
Je ne comprend pas le Print ect, le tuto de wiki gta online est t-il complet, car je ne crois pas tout avoir compris :|, new g_message aussi je ne sais pas ce que c'est, format: pareil,
Ensuite, le derniere code, si on met sa dans un Gm, sa fera quoi ?
Car un systeme d'amende c'est pas bête, mais j'aimerais le créer moi même, je vais avoir besoin d'un #Define de quoi ?
-
bon je vais un peu t aider
en faite le new g_message[256]; est une variable ( array ou string) cette variable est particuliere grace a son [256] ce 256 veut dire un chose,
c' est quel alloue une quantité de memoire de 256 bit ( si c' est ca enfin je l espere ) pour y stocker des information( des chiffres et des lettres ).
Voila pour le array
il y a ensuite les variable normal qui se presente comme cela
new variable;
ces variables la peuvent uniquement stocker des chiffre entier.
et puis il y a les float qui se presente comme cela
new Float:variable;
ces variables la stocke des chiffre decimal ( entier ou pas ).
Puis voila tout et pour les onplayerconnect et onplayerspawn il vaut mieu les laisser
-
Je comprend pas...
-
Voila un site assez complet sur ce que tu demande mais il est en anglais comme la progrmation PAWN ce fait en anglais
http://wiki.sa-mp.com/wiki/Category:Scripting_Callbacks (http://wiki.sa-mp.com/wiki/Category:Scripting_Callbacks)
http://wiki.sa-mp.com/wiki/Category:Tutorials (http://wiki.sa-mp.com/wiki/Category:Tutorials)
http://wiki.sa-mp.com/wiki/Scripting_Basics (http://wiki.sa-mp.com/wiki/Scripting_Basics)
Le pawn center de gtaonline est toujour en cours de construction et ne peu donc pas etre complet le soucis de t'expliquer tout ce que tu veut savoir sur un post me parrait trop long a ecrire comme a lire essaie avec les lien ci dessus
-
Ben pendant qu'on discute de tuto, j'en avais vu un qui aider a modifier(ou crée) un DM
Et heu ,j'avais eu des soucis mais maintenant que je m'y suis remit, si quelqu'un retrouve le tuto sa s'rait cool ^^
Bonne soirée
-
Je lis pas l'anglais :(
Mais merci quand même