Rencontres
Meetic.fr
Netclub
Amoureux.com

Téléchargements
Bots mIRC
Addons mIRC
Scripts mIRC
Snippets mIRC
Clients IRC
Scripts TCL

Aide IRC & T'chat
Histoire de l'IRC
Définitions
Abréviations
Modes des salons
Les Smileys Java
Aide applet Java
Nétiquette du Chat
Liste des Raws
Les réseaux IRC
Tutorial des Bans
Quizz sur l'IRC
Installer un quizz
Tutorial Ezbounce
Le RFC1459
Messages de quit

Aide IriX (Voila)
Edito
Avoir IriX
Commandes IriX
Commandes CSA
FAQ
La charte

Les Commandes
Bounce/Bnc
NickServ (Jeux.fr)
NickServ (EpiKnet)
NickServ (Voila)
Thema/Metro/Robot
Opérateur
IRCop
Géofront
User
Voila/Wanadoo
Ezbounce

Infos Chat Voila
Présentation
Historique
Le map
Les robots officiels
Détection proxy

Aide Eggdrop
Télécharger
Installez-le
Configurez-le
Les Commandes
Aide TCL
Aide TCL avancée
Scripts TCL
Trivia
Installer Géofront/Eva
Egg sous shell

Aide IRCD/IRCU
Bahamut
Unreal
IRCd Hybrid
IRCoderZ
IRCOxyd
IRCProgs
IRCu de type ancien
IRCu2.10.11.04
CService (IriX)
Services Epona
IRCServices
SCoderZ
UWorld
Entrechat

| Les Liens | Forum IRC | Accueil | Annuaire du Chat | Amour et romantisme |
Ajouter en page de démarrage | Ajouter aux favoris | Chat en direct
- Dialoguer en direct !

Google

 

Cours de scripting mIRC n°4 : les dialogs

Introduction : quelques notions

Les dialogs permettent de donner un côté plus interactif à vos scripts. Ce sont tout simplement des boîtes de dialogue qui comme leur nom l'indique permettent d'établir un dialogue entre l'Homme et la machine, plus précisément entre le t'Chatteur et le script mIRC. Tout bon script comporte des dialogs.

Voici un exemple de dialog, celui-ci est un lecteur Mp3 :

Dans ce cours, nous verrons des exemples de dialog plus simples bien évidemment.

La partie intermédiaire et la partie experte ont été mixées pour alléger la longueur du cours, cette fois-ci, particulièrement grande. En effet, les dialogs ne sont pas une mince affaire. Nous vous encourageons à bien étudier ce cours et à vous en servir pour créer vos propres dialogs par la suite. Bon courage !

NB : les exemples qui suivent marchent à 100% avec la dernière version de mIRC : la 6.03, toute version postérieure risque d'entraîner des incompatibilités.

Débutant

Le squelette

Dans un premier temps, il est utile de voir comment créer le squelette d'un dialog. C'est pourquoi nous aborderons quelques notions de base utiles pour vos premiers dialogs.

Voici l'exemple de squelette de dialog à copier/coller dans un remote vide :

alias Répondeur dialog -m Répondeur Répondeur

dialog Répondeur {
  title Répondeur
  size -1 -1 200 60
  option dbu
  box "",1,5 0 190 47
  check "Répondeur activé",2,10 7 60 10
  text "Phrase du répondeur :",3,10 22 80 10
  edit "",4,10 32 180 10,autohs
  button "Fermer",5,80 49 40 10,flat,ok
}

Pour ouvrir le dialog, tapez /Répondeur.

Pour déclarer un dialog, il suffit de taper "dialog" suivi du nom du dialog, ici "Répondeur".
Ensuite, il est bon de préciser le titre du dialog. Le titre apparaîtra en haut du dialog. Il faut taper "title" suivi du titre, ici le titre est "Répondeur".
Il faut aussi préciser le positionnement et la taille du dialog. Ainsi, ce qui suit après "title" mérite d'être explicité. Les deux premiers nombres sont la position (en pixels) du coin supérieur gauche du dialog. Le premier nombre est le nombre de pixels le séparant de la bordure gauche de l'écran. Le deuxième nombre est le nombre de pixels le séparant de la bordure haute de l'écran. Le troisième nombre correspond à la longueur (en pixels) du dialog et le quatrième correspond à la hauteur (ou largeur) du dialog. Ici, on remarque que les deux premiers nombres sont mis à "-1". Ceci signifie que le dialog est centré. Il vous est conseillé de toujours mettre ces deux nombres à "-1" pour plus de facilité.
"option dbu" permet d'avoir le même rapport de taille entre l'écran et le dialog. C'est une option à mettre tout le temps aussi.

Ensuite, nous allons voir 5 types d'options qu'il est possible de rajouter sur un dialog :

_box : comme son nom l'indique, il s'agit d'une boîte qui sert de cadre au dialog. Vous pouvez y inclure un titre entre les "" (ici, il n'y en a pas). Le nombre "1" qui suit est le numéro d'identification de l'option. Les 4 nombres suivants sont des nombres de positionnement : les deux premiers positionnent l'option vis à vis du bord du dialog. Les deux derniers précisent la taille de l'option.
_check : il s'agit d'une case à cochée ou non. Vous pouvez y inclure un titre, ici c'est "Répondeur activé". Le nombre suivant est le numéro d'identification de l'option. Il s'agit du numéro "2". On remarque que les numéros d'identification se suivent (la plupart du temps) et qu'ils ne se répètent pas. En effet, ils servent à identifier l'option, très utile pour associer les options à des commandes comme nous le verrons plus tard. Les nombres suivants sont ceux de positionnement.
_text : sert à inclure du texte dans le dialog, toujours entre "". Ici le numéro d'identification est "3".
_edit : il s'agit d'une case dans laquelle on pourra rentrer du texte. Notamment le texte de la phrase du répondeur. On remarque, après les nombres de positionnement, le mot autohs. C'est une option de l'option edit, elle permet de ne pas limiter la taille du texte rentré dans la boîte d'édition à la taille même de celle-ci. Vous pouvez essayer de rentrer du texte en retirant cette option pour mieux comprendre à quoi elle sert.
_button : il s'agit simplement d'un bouton contenant le texte "Fermer". L'option flat permet d'applatir le bouton. Encore une fois, essayez sans cette option pour voir la différence. L'option ok considère le bouton comme un bouton de type "ok". Si vous cliquez dessus, il fermera le dialog.

Intermédiaire/Expert

La partie interne

Dans cette partie, nous verrons comment lier les options du dialog à des commandes spécifiques.
Il est évident qu'il faudra retenir si la case "Répondeur activé" a été cochée ou pas ainsi que le texte se trouvant dans la boîte d'édition.

Voici le texte à copier/coller à la suite du précédent :

;Partie 1
on *:dialog:répondeur:sclick:2:{
  if $did(2).state == 1 { set %Répondeur.Activé Oui }
  else { set %Répondeur.Activé Non }
}
;Partie 2
on *:dialog:répondeur:edit:4:{
  set %Répondeur.Phrase $did(4)
}
;Partie 3
on *:dialog:répondeur:init:*:{
  if %Répondeur.Activé == Oui { did -c répondeur 2 }
  if %Répondeur.Phrase { did -a répondeur 4 %Répondeur.Phrase }
}

La première partie se rapporte à l'activation ou non du répondeur. Dans la première ligne, on a :

_ le on pour détecter l'évèvement.
_le * pour spécifier le niveau, on laissera toujours cette option à "*" de manière générale (comme pour les on *:text:*:#:{ ... } par exemple).
_le mot dialog qui spécifie qu'on veut détecter les évènements sur un dialog.
_répondeur est le nom du dialog en question
_sclick spécifie qu'on veut détecter les click de souris en particulier
_2 est le numéro d'identification de l'option qu'on veut détecter. Ici le "2" correspond à la ligne "check "Répondeur activé",2,10 7 60 10" qu'on a vu plus haut.

Ensuite, grâce à $did(2).state, on vérifie l'état de l'option 2. Si la case est cochée, on nous retourne "1", sinon "0". Ainsi, on met la variable %Répondeur.Activé à "Oui" si c'est 1, à "Non" si c'est autre chose ("0" en général).
La variable %Répondeur.Activé nous permet de garder en mémoire si on veut que le répondeur soit actif ou non.

La deuxième partie détecte quand quelque chose est tapé dans la boîte d'édition de numéro d'identification "4" et le stock dans la variable %Répondeur.Phrase.
Pour détecter les changements dans les boîtes d'édition, il faut préciser le mot clef edit dans on *:dialog:nom du dialog:edit:numéro d'idenfitication:{ ... }

Dans la troisième et dernière partie, on initialise le dialog. On vérifie d'abord si la variable %Répondeur.Activé vaut "Oui". Si c'est le cas, on coche la case 2 via la commande /did -c répondeur 2. Puis, deuxième condition de l'initialisation à vérifier : la variable %Répondeur.Phrase ne doit pas être nulle. Si c'est le cas, on l'affiche dans la boîte d'édition (de numéro d'identification 2) via la commande /did -a répondeur 2 %Répondeur.Phrase.
Il faut préciser le mot clef init dans on *:dialog:nom du dialog:init:numéro d'idenfitication:{ ... } pour montrer que l'on s'occupe des commandes à exécuter à l'ouverture du dialog du nom de "répondeur".

La partie externe

Nous entrons dans une partie relativement facile, le plus dur a été fait. Il s'agit d'afficher le message du répondeur enregistrer dans la variable %Répondeur.Phrase à chaque ouverture de message privé mais uniquement si la variable %Répondeur.Activé a pour valeur "Oui" et si la variable %Répondeur.Phrase n'est pas nulle. Cela donne :

on *:open:?:{
  if %Répondeur.Activé == Oui && %Répondeur.Phrase {
   msg $nick Répondeur : $eval(%Répondeur.Phrase,2)
  }
}

Le $eval(%Répondeur.Phrase,2) permet d'évaluer 2 fois le texte dans la variable %Répondeur.Phrase. Ainsi vous pouvez mettre $nick dans la phrase de réponse, elle sera automatiquement évaluée et remplacée par le pseudo de la personne arrivant en privé.

Solution de l'exercice du cours n°3 : difficulté débutant

Rappel de l'énoncé :

A l'aide du cours de niveau débutant, modifiez le script pour écrire avec des décorations autour de votre écriture. Par exemple, on voudra voir ceci :

<NiCk2> @Bonjour @

Une solution :

on *:input:#:{
  if $left($1-,1) != / {
   msg $chan 12@ 4,8 $+ $1- $+ 12,0 @
   halt def
  }
}

Vous pouvez faire vos propres arrangements pour obtenir l'écriture qui vous plaît. Le $+ sert à éliminer les espaces entre deux mots en scripting mIRC.

Exercice du cours n°4 : difficulté expert

Le niveau est expert car nous n'avons pas vu les fichiers .ini : modifier ce qui a été fait dans ce cours et, à l'aide d'un fichier .ini et d'un fichier .txt, éviter toute utilisation de variables globales (c'est à dire des variables %Répondeur.Activé et %Répondeur.Phrase).

Conclusion

Les dialogs sont assez difficiles à cerner, surtout pour les novices, mais une fois maîtrisés, ils permettent à vos scripts de s'affirmer.
En effet, l'exemple du lecteur Mp3 (voir photo plus haut), entièrement réalisé en scripting mIRC, montre qu'il n'y a pas de limites quant à l'utilisation de dialogs.

En attendant le prochain cours, bon courage à tous et à toutes pour vos dialogs.

Au Ciné : News
Inju
Comme les autres
Martyrs
Manipulation
Intrusions
Christophe Colomb : l'énigme
Tropa de Elite
Le Sel de la mer

Newsletter
Restez informé de l'actualité du cinéma avec Nord-Cinéma

Services IRC
T'chat sur votre site
Cinéma sur votre site
Module T'chat Voila

Aide bot mIRC
CService
Faire son bot



Aide mIRC
Alias
Popup
Remotes
Variables
Cours de scripting

Partenaires
Home cinéma
Cinema
Nouveautes DVD
Location dvd
Forum de l'IRC

©2002-2004 CSAdmin.net | Contact | L'équipe Liens | Faites de csadmin.net votre page d'accueil
CSAdmin.net est déclaré à la CNIL sous le numéro 856687
Google