GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Showroom SA:MP => Discussion démarrée par: Gzsume le 03 Juillet 2014, 16:04:16

Titre: [Tool] Modular Pawn
Posté par: Gzsume le 03 Juillet 2014, 16:04:16
Modular Pawn

Comme certains d'entre-vous le savent, je travaille actuellement sur un projet de serveur SA-MP. Pour ce dernier, j'ai eu envie d'utiliser le principe de la programmation modulaire (plus ou moins ce qu'on retrouve dans des langages tels que le C, par exemple). Seulement, le Pawn (dans un usage propre à SA-MP) n'est pas vraiment adapté à ça, de base. La faute à un IDE pauvre qui, lorsqu'on souhaite créer un nouveau projet, se contente d'afficher un fichier par défaut.

Pour pallier à ce problème, j'ai regroupé (avec l'aide de Kilou) toutes les callbacks existantes en plusieurs catégories, chacune propre à un système différent. Par exemple, tout ce qui concerne les véhicules est regroupé dans un fichier vehicles.pwn. Tout ce qui concerne le network et la synchronisation est regroupé dans un fichier network.pwn, et ainsi de suite.

On se retrouve au final avec plusieurs fichiers où il est beaucoup plus simple de trouver ce qu'on cherche au fil du temps. Tous sont reliés par un fichier principal (celui appelé par le serveur au lancement), qui se contente de les inclure. Ce fichier principal est également destiné à recevoir les variables globales, les directives de préprocesseur, les macros, etc.

Performances et utilisation

Côté performances, ça ne consomme absolument rien en ce qui concerne les ressources du serveur puisque j'utilise les directives de préprocesseur et qu'ainsi, après compilation, il n'y a qu'un seul fichier .amx comme ce serait le cas en temps normal. On pourrait imaginer que le temps de compilation soit légèrement plus long, mais ça reste à prouver (et si ça s'avère exact, ça ne devrait logiquement pas dépasser le centième de seconde).

Important : L'intérêt de cet outil, c'est de découper le code source en plusieurs fichiers. Il semble donc évidement qu'un IDE tel que Pawno est inadapté, puisque vous devriez ouvrir chaque fichier dans un nouvelle fenêtre. Pour utiliser pleinement le modulaire, je vous conseille des IDE tels que Notepad++ (http://notepad-plus-plus.org/fr/) ou Sublime Text (http://www.sublimetext.com/), qui offrent la fonctionnalité de file tree (arborescence de fichiers). De nombreux tutoriels sont disponibles sur le net pour les configurer afin de compiler du Pawn.

Pour utiliser cet outil, téléchargez-le, dézippez-le et placez le contenu dans le répertoire gamemodes de votre serveur. Compilez le fichier principal (main.pwn) et configurez le fichier server.cfg afin qu'il appelle ce dernier.

Si vous souhaitez ajouter vos propres fichiers, je vous conseille de créer un répertoire includes et de les placer dedans. De toute manière, jetez un œil au fichier principal et vous verrez que c'est plutôt simple à comprendre et copier.

Téléchargement

Télécharger la version 1.0 (http://gzsume.fr/ftp/ModularPawn_v1_0.zip) (03/07/14, .zip, 3.83 Ko)

Versions

Bugs

Comment diantre voulez-vous qu'il y ait des bugs dans un truc aussi simple ? :biggrin:
Plus sérieusement, si vous en trouvez, prévenez-moi. Et vous aurez un cookie.

Notes

PS - Merci à Kilou pour m'avoir aidé à ranger les callbacks par catégories. C'était ennuyeux. é_è
Titre: Re : [Tool] Modular Pawn
Posté par: chneubeul le 19 Juillet 2014, 07:11:28
Salut,

C'est une très bonne idée, mais si l'on souhaite utiliser des informations communes aux différents module (variable, fonction etc..) est-ce que l'utilisation des varint, risque pas de compliqués un peu la choses ?

A+, Sam.
:cheers:
Titre: Re : [Tool] Modular Pawn
Posté par: Gzsume le 19 Juillet 2014, 22:18:44
Salut,

Le fonctionnement du script principal permet d'utiliser des fonctions et variables globales sans soucis. Comme je l'ai expliqué, ça consiste simplement en un découpage des fichiers, et quelques directives de préprocesseur dans le fichier principal. Autrement dit, lors de la compilation, il n'y a qu'un seul fichier source (une fois le préprocessus terminé).

Comme je l'ai également indiqué, je recommande de créer un fichier pour les fonctions codées soi-même (en gros, tout ce qui ne touche pas aux callbacks), ainsi que pour les callbacks de plugins (streamer, par exemple). Au final, le fonctionnement ne change en rien, que ce soit avec les callbacks de base ou des customs. :)

Bonne soirée !
Titre: Re : [Tool] Modular Pawn
Posté par: DexX le 23 Juillet 2014, 12:06:48
Salut, sympa l'outil, je travaillais déjà de cette manière sur mes projets SA-MP.
Je vais tester cela sur mon projet en cours.

Bien joué et merci ! ;)
Titre: Re : [Tool] Modular Pawn
Posté par: maxya le 24 Juillet 2014, 01:48:25
Merci Gzsume très utile comme tool !