FTP_DLL

Télécharger FTP_DLL
Buhl Damien
allias daminetreg
http://lecbna.com/
http://www.gamemaker.fr/

GameMaker 6 et +
Enregistré


Bonjour,
Bienvenue dans le petit tuto sur ftp_dll, j'ai décidé de l'écrire après la demande de certains membres qui apparemment ne comprennent pas l'allemand, et qui aimeraient eux aussi utiliser ftp_dll, cette petite perle créée par Cygnus en 2004. Le tutoriel se déroulera tout d'abord en regardant comment fonctionne un ftp en general, puis nous définirons les fonctions incluses dans ftp_dll, et pour finir nous ferons un petit projet pour illustrer nos connaissances. (;

Voici le Sommaire:
1) Fonctionnement d'un Serveur FTP en général
2) Définition des différentes fonctions de ftp_dll
Un petit Projet

1) Fonctionnement d'un Serveur FTP en général
Un serveur FTP, est un serveur sur lequel on upload (envoie) des fichiers pour qu'ils puissent par d'autres utilisateurs de la toile être téléchargés. La plupart des serveurs actuels fonctionnent de la façon suivante: Upload par protocole FTP et Download(Réception) par protocole HTTP, cependant, il permettent toujours le download par protocole FTP.
Lorsque vous envoyez un fichier sur un FTP il vous faut récupérer le nom du fichier et le répertoire dans lequel il est placé, ensuite il vous suffit de donner cette adresse à quelqu'un pour qu'il puisse télécharger vos données. Par exemple vous uploadez un fichier: mydata.zip dans le répétoire /data/ de votre serveur ftp: ftp.provider.com avec le nom d'utilisateur myname. Pour que quelqu'un puisse le télécharger il vous faudra lui fournir l'adresse: ftp://ftp.provider.com/myname/data/mydata.zip.
Bien maintenant vous savez en gros comment ça fonctionne alors passons à la suite.

2) Définition des différentes fonctions de ftp_dll
La plupart des arguments des fonctions qui suivent sont soient des réels, soient des strings.

ftp_init()
La fonction où tout commence. Cette fonction permet d'initialiser la dll, il est indispensable de l'appeller avant chaque usage de ftp_dll.

ftp_connect(serv,user,pass)
Permet à ftp_dll de se connecter au serveur ftp de votre choix où serv est l'adresse ou IP du serveur ftp (ex: "ftp.provider.com"), et où user est le nom d'utilisateur que vous désirez utiliser pour ce ftp, ainsi que pass est le mot de passe de cette utilisateur.
Attention! Tous ces arguments sont des strings.

ftp_is_connected()
Retourne 1 si une connexion est en cours et 0 s'il n'y en a pas.

ftp_disconnect()
Deconnecte l'utilisateur du serveur ftp où il est actuellement connecté, cette fonction n'est operationelle uniquement après avoir appellé ftp_connect.

ftp_file_upload(namefile,namefileonserv,mode)
Permet d'envoyer un fichier sur un serveur FTP sur lequel vous êtes actuellement connecté, cette fonction n'est operationelle uniquement après avoir appellé ftp_connect.
namefile est le nom du fichier sur votre disque dur à envoyer sur le serveur, namefileonserv sera le nom du fichier lorsqu'il sera sur le serveur et mode un réel qui est soit 0 mode binaire, soit 1 mode ASCII. La plupart des ftp utilisent le mode binaire.

ftp_file_download(namefile,namefileonserv,mode)
Permet de télecharger un fichier d'un serveur FTP, cette fonction n'est operationelle uniquement après avoir appellé ftp_connect.
namefile sera le nom du fichier sur votre disque dur, namefileonserv est le nom du fichier lorsqu'il est sur le serveur et mode un réel qui est soit 0 mode binaire, soit 1 mode ASCII. La plupart des ftp utilisent le mode binaire.

ftp_directory_create(directoryname)
Fonction permettant la création d'un nouveau répertoire sur le serveur ftp où vous êtes connecté, cette fonction n'est operationelle uniquement après avoir appellé ftp_connect.
directoryname est le nom du repertoire à créer.

ftp_directory_remove(directoryname)
Fonction permettant la suppression d'un répertoire sur le serveur ftp où vous êtes connecté, cette fonction n'est operationelle uniquement après avoir appellé ftp_connect.
directoryname est le nom du repertoire à supprimer.

ftp_set_current_directory(directoryname)
Fonction permettant de se placer dans un répertoire sur le serveur ftp où vous êtes connecté, cette fonction n'est operationelle uniquement après avoir appellé ftp_connect.
directoryname est le nom du repertoire où se placer.

ftp_get_current_directory()
Fonction retournant le nom du repertoire courant, cette fonction n'est operationelle uniquement après avoir appellé ftp_connect.

ftp_file_find_first(mask,fa_volumeid)
C.f: Aide GameMaker > file_find_first(). Cette fonction n'est operationelle uniquement après avoir appellé ftp_connect.

ftp_file_find_next()
Retourne le nom du fichier suivant, cette fonction n'est operationelle uniquement après avoir appellé ftp_connect.

ftp_file_find_close()
Stoppe le listage des fichiers, cette fonction n'est operationelle uniquement après avoir appellé ftp_connect.

ftp_file_rename(nomfichier,newnomfichier)
Fonction permettant de renommer un fichier, cette fonction n'est operationelle uniquement après avoir appellé ftp_connect.
nomfichier est le nom du fichier à renommer et newnomfichier est le nouveau nom du fichier.

ftp_file_delete(nomfichier)
Fonction permettant de supprimer un fichier, cette fonction n'est operationelle uniquement après avoir appellé ftp_connect.
nomfichier est le nom du fichier à supprimer.

Note: Il peut s'avérer que certaines fonctions soient indisponibles avec un serveur ftp mal configuré (Souvent les serveurs ftp gratuit). Mais pour en être sûr, il faut essayer.


Un petit Projet


Bien désormais nous allons réaliser un petit système qui vous permettra de corriger les bugs de vos jeux, sans pour autant gêner le joueur.

Légende:
Sprites
Sounds
Background
Paths
Scripts
Fonts
Timelines
Objects
Rooms

Groupe

Event
Action

§Point étape
!Information importante

En premier lieu nous allons créer notre gm6 de départ, il vous faut donc ouvrir GameMaker, puis sélectionner le menu: Scripts puis cliquer sur Import Scripts. Là placez vous dans le répertoire de ftp_dll et sélectionnez le fichier: ftp_dll.gml

Ceci fait sauvegardez votre gm6, sous le nom que vous désirez dans le répertoire de ftp_dll.

!Information importante
Attention, il est très important de sauvegarder votre gm6 dans le répertoire dans lequel est placé la dll, sinon les Scripts que vous venez d'importer ne pourront pas appeller les differentes fonctions de celle-ci. D'ailleurs cela est valable pour toutes les dll usable avec GameMaker toutes versions confondues.

Maintenant nous allons configurer le système pour qu'il envoie les erreurs dans un fichier: game_errors.log, pour ce faire cliquez sur Global Game Settings puis sur l'onglet: Errors, ici déselectionnez la checkbox Display error messages puis sélectionnez Write error messages to file game_errors.log ainsi que Treat uninitialized variable as value 0. Puis bien entendu, cliquez sur ok.


§Vous en êtes là, Step 1:

Récapitulatif:
-Vous avez importé les scripts à partir de ftp_dll.gml
-Vous avez configuré le .gm6 pour qu'il écrivent les erreurs dans game_errors.log


Enfin nous avons notre gm6 de base, nous pouvons enfin passer à la programmation du système en lui même.
Nous crérons donc l'objet: Y_errors, dans lequel nous programmerons les évènements suivant:
Dans Game Start nous placerons la pièce de code suivante, qui permet de définir le nom du profil de notre joueur:
if !file_exists("config.dat")// Si le fichier config.dat n'existe pas
    {
    global.name = get_string("Entrez votre nom de profil:","Entrez votre nom");
    file = file_text_open_write("config.dat");
    file_text_write_string(file,global.name);
    file_text_close(file);
    }
else// Si le fichier config.dat existe
    {
    file = file_text_open_read("config.dat");
    global.name = file_text_read_string(file);
    file_text_close(file);
    }
Puis dans Game End  la pièce de code qui suit:
ftp_init();
ftp_connect("127.0.0.1","dede","dede");// Connexion au serveur ftp
if file_exists("game_errors.log")//Si game_errors.log existe
    {
    ftp_directory_create(string(global.name));//Créer un répertoire à l'efigie du joueur
    ftp_file_upload("game_errors.log",'/'+string(global.name)+"/game_errors.log",1);//Upload du fichier
    }
ftp_disconnect();//Deconnexion du serveur FTP


 !Information importante
Ici vous vous en êtes certainement rendu compte, si un joueur a le même non le système va réécrire un fichier dessus, cependant, ce n'est pas important puisque nous cherchons juste à illustrer nos connaissances, et si jamais vous désirez améliorer ce système il vous suffit de faire usage de: ftp_file_find_first(mask,fa_volumeid)

Il ne vous reste plus qu'à créer un room: Y_room et y placer l'objet: Y_errors, puis appuyer sur F5!

§Vous en êtes là, Step Final:

Récapitulatif:
-Vous avez importé les scripts à partir de ftp_dll.gml
-Vous avez configuré le .gm6 pour qu'il écrivent les erreurs dans game_errors.log
- Vous avez créé et programmé l'objet Y_errors
- Vous avez créé la room:
Y_room dans laquelle vous avez placé: Y_errors

Et voilà c'est fini! Le tutoriel est un peu court il est vrai, mais je pars dans quelques heures en voyage, je n'avais pas le temps de faire plus, et je pense de toutes façons que la première partie est la plus interessante et je pense que cela vous sera utile. Bonne chance pour tous vos projets! Je pars en vacances... héhé...

Buhl Damien
allias daminetreg
Fondateur et Webmestre du CBNA
http://lecbna.com/
@3