Multijoueur

Voir le sujet précédent Voir le sujet suivant Aller en bas

Tutoriel Multijoueur

Message par Morgan9195 le Jeu 24 Oct - 2:59



Programmer sur Script
Multijoueur


Le multijoueur de Script utilise de nombreuses fonctions de l'extension 39dll. Ces fonctions sont simplifiées et majoritairement gérées par Script afin de faciliter l'utilisation et les performances du multijoueur.
Le multijoueur se compose de 8 fonctions qui vous permettrons de créer des clients et des serveurs pour vos jeux et logiciels. Vous apprendrez à utiliser l'intégralité de ces fonctions dans ce tutoriel.

Activation du multijoueur

La fonction la plus importante du multijoueur se nomme:
multiplayer(etat,ip,port);

- etat: nombre réel déterminant l'état global du multijoueur
        - 0 = Multijoueur désactivé (revient à laisser le jeu en solo)
        - 1 = Multijoueur activé en mode serveur (relai qui assure la connexion entre les utilisateurs)
        - 2 = Multijoueur activé en mode client (utilisateur)

- ip: chaine de caractères déterminant l'adresse IP du serveur
Pour une connexion Distant: l'ip sera l'adresse ip du pc hébergeant le serveur (utilisez le site monip.org pour voir votre adresse ip).
Vous devez préciser au client l'ip du serveur, mais le serveur n'a pas besoin de connaitre d'adresse ip particulière. Vous pouvez donc laisser cette valeur vide. Exemple: "" (guillemets vides)

- port: nombre déterminant le port auquel le client et le serveur se connecteront. N'utilisez pas un port déjà utilisé par un autre logiciel. Exemple: 12345 (pas de guillemets)

La fonction multiplayer(etat,ip,port); ne s'utilise qu'une seule fois, à lecture constante (dans le fichier script0.script par exemple) et sans aucune condition pouvant empêcher la lecture de cette ligne de code. Si vous souhaitez stopper une connexion multijoueur ne faites pas comme ceci:
Code:

if connexion=1
{
 multiplayer(1,"12.34.56.78",23456);
}
Dans ce cas, Script ne saura pas que vous souhaitez stopper le multijoueur, il croira juste que le multijoueur ne répond pas (ce qui peut provoquer un ralentissement et des problèmes de connexion pour votre programme)
Faites plutôt comme ceci:
Code:

if button(50,50,200,100,"Se connecter")
{
 connexion=2;
}
if button(50,150,200,200,"Se deconnecter")
{
 connexion=0;
}
multiplayer(connexion,"12.34.56.78",23456);
Dans ce second exemple, la variable connexion fournis la valeur 0 à la fonction multiplayer(etat,ip,port); sans empêcher l'exécution de la fonction. Script comprendra donc qu'il doit stopper le multijoueur afin de remettre votre programme en mode Solo (une petite intelligence artificielle interne à Script le fera pour vous).

Pseudo en ligne

online_set_pseudo(pseudo);
Fonction permettant de modifier son pseudo en ligne. La fonction peut s'utiliser hors-connexion comme pendant une connexion. Le pseudo sera renommé sur tous les clients connectés au même serveur, le serveur s'occupera tout seul de relayer cette information.

Envoi et réception de données

writeonline(valeur,destinataire);
Fonction permettant d'envoyer une valeur à un client. Le destinataire se définit par un identifiant. Les clients sont numérotés de 1 à get_nb_players();
Utilisez la fonction get_player(id); pour obtenir le pseudo de la personne correspondant à l'identifiant donné.
Les clients n'ont pas besoin de préciser le destinataire puisque c'est toujours le serveur. Le serveur, en revanche, doit préciser le destinataire du message. S'il ne le précise pas, le message sera envoyé à tout le monde. Exemple: writeonline(valeur);

readonline();
Fonction vérifiant s'il y a de nouveaux messages reçu (attention, la fonction lis le premier message en attente de lecture, puis le supprime aussitôt). Ce nombre peut être interpréter dans une condition comme ceci:
Code:

if readonline()
{
 show_message("Message recu");
}
Ou encore comme ceci:
Code:

variable=readonline();
show_message("Nombres de messages recus: "+string(variable));
Une fois la fonction readonline(); exécutée, deux variables vont être remplis par les renseignements du dernier message lu par la fonction readonline();
La variable online_value contient la valeur reçu, et la variable online_id contient l'identifiant du client ayant envoyé ce message. l'identifiant zéro est le serveur.

Quelques fonctions importantes

get_connexions();
Fonction servant à prévenir les connexions et les déconnexions des clients.
Code:

if get_connexions()
{
 if online_etat=1
  show_message(string(online_name)+" s'est connecté");
 else if online_etat=0
  show_message(string(online_name)+" s'est deconnecté");
}
get_online();
Fonction servant de témoin de connexion. La fonction retourne 0 si le status est déconnecté, 1 si le status est serveur, ou 2 si le status est client. La fonction est utilisable dans une condition, mais peut aussi remplir une variable.
Code:

if get_online()=0
{
 show_message("Vous etes deconnecte");
}
ou
Code:

variable=get_online();
get_player(id);
Retourne le pseudo du joueur correspondant à l'identifiant donné.

get_nb_players();
Retourne le nombre de joueurs connectés au même serveur. Fonction très utile lors de l'utilisation des identifiants.




avatar
Morgan9195
Fondateur
Fondateur

Messages : 168
Date d'inscription : 11/02/2013
Age : 23
Localisation : Entre le fauteuil et le clavier

Projet(s)
Niveau de connaissances dans Script: Professionnel
Spécialité: Programmeur

Voir le profil de l'utilisateur http://morgan9195.olympe.in/devblog/

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum