GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Ghetto76 le 04 Octobre 2011, 21:47:12
-
Bonjour, je suis un apprenti en Pawn et je souhaite apprendre à scripter en créant un DM pour commencer, apparemment c'est conseillé.
1) Je souhaite donc que quand le joueur fasse /rejoindreevent, un timer de 1 minute se déclenche, et qu'au bout de cette minute, les joueurs soit unfreeze, et qu'un message à l'écran apparaisse pendant 1 seconde " GO GO GO ! ". J'ai aucune idée pour faire sa, je ne vous cache pas que j'ai du mal à scripter, et je me décourage de jour en jour, si vous pouviez m'aider, pour apprendre la technique, sa serait pas mal.
2) Apparemment, il y a des %d, %s etc.. En fonction des nombre entiers, décimaux etc.. Je pense cela car dans le langage C, c'est comme cela. Je voudrais avoir un listing des différentes possibilités si possible svp.
3) new message[127];
GetPlayerName(playerid, message, sizeof(message));
format(message, sizeof(message), "%s (ID: %d) à rejoint le serveur.", message, playerid);
SendClientMessageToAll(JAUNE, message);
Peut on m'expliquer ce code ? Je sais l'utiliser mais je voudrais connaitre les détails, donc la signifation de 127, format, sizeof etc... Je n'aime pas faire des choses sans en comprendre le sens.
4) A quoi sert enum ? Comment on l'utilise ?
5) A quoi sert stock ? Comment on l'utilise ?
6) A quoi sert static ? Comment on l'utilise ?
7) Qu'est ce que l'incrémentation et la décrémentation ?
8) Que signifie strcmp, strtok, strval, et strlen ?
9) Que signifie ce code ? for(new i=0; i<MAX_PLAYERS; i++)
Voilà, je m'excuse de poser toutes ces questions, je voudrais un maximum d'informations, d'explications, et d'aide car je ne suis pas un pro en Pawn, pour ceux qui voudront bien m'aider, essayez d'utiliser un langage de "noob" svp :P Merci à tous de votre aide, cordialement.
-
Il y a d'excellents tutoriels sur la partie tutoriel de ce forum concernant le PAWN :)
-
J'en ai lu pas mal mais pas tous bien sur... C'est ce que je fait actuellement :) Merci ssk.
-
Je me pose les memes interrogations concernant les questions 4,5,6 et 8.
-
2) http://wiki.sa-mp.com/wiki/Format (http://wiki.sa-mp.com/wiki/Format)
3)
- 127 - Taille du tableau
- format - Fonction pour formater une chaîne de caractère
- sizeof - Fonction qui récupère la taille d'un tableau
4) Le mot-clé enum correspond à une énumération (Keywords:Initialisers - SA-MP Wiki (http://wiki.sa-mp.com/wiki/Keywords:Initialisers#enum)
5) Le mot-clé stock permet de faire ignorer les avertissements que la fonction visée génère ...
une_fonction()
{
new i = 0;
i += 1;
}
Si tu compile ce code, l'avertissement suivant va s'afficher ...
leet.pwn(69) : warning 203: symbol is never used: "une_fonction"
Tandis que si tu ajoute le mot-clé stock, cet avertissement sera ignoré.
6) Keywords:Initialisers - SA-MP Wiki (http://wiki.sa-mp.com/wiki/Keywords:Initialisers#static)
7) L'incrémentation consiste à ajouter x à une variable et la décrémentation consiste à retirer x à une variable.
Voici trois manière d'incrémenter, c'est la même chose pour la décrémentation.
new i = 0;
i++;
i += 1;
i = i + 1;
8)
- strcmp - Strcmp - SA-MP Wiki (http://wiki.sa-mp.com/wiki/Strcmp)
- format - Strtok - SA-MP Wiki (http://wiki.sa-mp.com/wiki/Strtok) (ce n'est pas une fonction native)
- strval - Strval - SA-MP Wiki (http://wiki.sa-mp.com/wiki/Strval)
- strlen - Strlen - SA-MP Wiki (http://wiki.sa-mp.com/wiki/Strval)
9) C'est une simple boucle qui à chaque tour incrémente la variable i jusqu'à que cette variable ne soit plus inférieur à la constante MAX_PLAYERS.
-
3)
new message[127];//On créer une variable avec 127, 1 case pour chaque caractère.
GetPlayerName(playerid, message, sizeof(message));//On prend le nom du joueur et on le met dans la variable message.
format(message, sizeof(message), "%s (ID: %d) à rejoint le serveur.", message, playerid);//On formate en mettant le nom du joueur (message - %s) suivit de son ID (playerid - %d)
SendClientMessageToAll(JAUNE, message);//Et on l'envoi a tout le monde ! La tu auras Nomjoueur (ID:SonID)
Peut on m'expliquer ce code ? Je sais l'utiliser mais je voudrais connaitre les détails, donc la signifation de 127, format, sizeof etc... Je n'aime pas faire des choses sans en comprendre le sens.
7) Qu'est ce que l'incrémentation et la décrémentation ?
L'incrémentation permet d'additionné une variable existante exemple : new Donnuts = 1; la tu dit que t'as variable Donnuts a 1 pour l'incrémenté, Donnuts++; celà rajoute 1 a t'as valeur déja présente donc t'as variable Donnuts est maintenant égal a 2 ! Tu peut bien sûre la décrémenté en fessant Donnuts--; cela enlève 1 donc Donnuts est égal a 1 maintenant tu peut ajouté plus que 1 en fessant Donnuts+=50; ceci rajoute 50 en fessant la même chose en décrémentant Donnuts-=50; et voilà !
Résumer Donnuts--; Décrémentation
Donnuts++; Incrémentation
9) Que signifie ce code ? for(new i=0; i<MAX_PLAYERS; i++)
Ceci est une boucle Gilux en a donné un bonne exemple dans son TUTORIEL mais en bref :
Tu créer la variable new tu la met a 0 temps que i<MAX_PLAYERS qui est de 500 tu l'incrémente temps quelle est inférieur a 500 en conclusion cet boucle passe sur tout les joueur et l'ID du joueur est "i" a la place de playerid.
Le reste Xartrick t'expliqueras mieux que moi je pense bonne chance !
-
@Xolokos: Ton explication pour la question 5 est fausse, sinon, le reste est
relativement vrai.
J'ai également édité mon premier message.
-
Je remercie vraiment tout ceux qui m'ont aidé, mais après mure réflexions, j'ai décidé d'abandonner le Pawn, cela doit faire peut être 1-2 mois et je ne comprend rien, j'ai donc décidé d'abandonner le scripting. Merci à tous et désolé du dérangement.
-
A bon ?
Une chose corrigé pour moi alors merci.
-
Pour ce qui est du timer, tu fait, tout simplement SetTimerEx (http://wiki.sa-mp.com/wiki/SetTimerEx)
-
@NoLimite tout dépend si il veut faire un timer qui renvoie une fois a une forward précise ou si il veut le répéter indéfiniment...
Sauf que la il a arrêté le PAWN...