Expliqué par C•Dryk™ le 31 octobre 2005

Bonjour

Pour ceux qui voudraient obtenir des réponses du bot a des émoticones, voici le résultat final des explications données par Cédric ( à rajouter sur un nouveau fichier remote)

CITATION
P.S.

Je rappelle simplement que pour enregistrer une variable dans mIRC, il suffit d'entrer dans la ligne de commande (en bas) //set %truc bidule !!!

Ainsi %truc retournera bidule !!!


--------------------------------------------------------------------------------


Le but est de créer les variables, et de vérifier leurs présences à chaque démarrage.

Donc au final, pour utiliser des emoticons (je résume une dernière fois cette méthode de variable correctement):

1 - Je crée ce code dans un script: (vous pouvez ajouter vos propres variables...)

CODE
On *:START: {
if (!%triste) set %triste :'(
if (!%vener) set %vener :@
if (!%felix) set %felix (@)
if (!%pascontent) set %pascontent :(
if (!%content) set %content :)
if (!%langue) set %langue :p
}


2 - Je redémarre le script (important pour passer sur le On Start !)

3 - Je peux créer mes codes On TEXT à partir des variables créées:

CODE
on *:TEXT:%triste:#:/msg # ne pleure pas $nick :o

on *:TEXT:%langue:#:/msg # ne tire pas la langue $nick !!!

on *:TEXT:%pascontent:#:/msg # qu'est-ce qui ne va pas $nick ?


... etc.


--------------------------------------------------------------------------------
C•Dryk™


Pour ceux qui souhaiteraient en savoir plus concernant les bases du scripting, je joins ici d'autres explications de Cédric.

Vous y comprendrez pourquoi le bot ne réagit pas a l'émoticone : ) par exemple.
Et beaucoup d'autres explication de bases.


CITATION
Message de réponse sur emoticons

Alors observons la commande qui sert à répondre sur quelque chose en général...

On *:TEXT:déclancheur:#: { /privmsg # la réponse }

Vous remarquerez que j'ai volontairement mis en rouge les :

On TEXT est constitué de plusieurs éléments, séparés par des :

1 - On * > signifie le niveau ou l'utilisateur attendu (* = tout le monde)
Peut-être précisé: On owner, On host (pour marteaux jaunes et bruns)
ou On adminlevel, On proplevel, On animlevel (pour les listes du bot)
ou On 1 (tous le monde sauf les marteaux et les listes du bot)

2 - TEXT > Type de données attendues (existe aussi JOIN, PART, KICK, ...)

3 - Déclancheur > Le texte qui déclanche. Vous pouvez utiliser des * (wildcard).
xx* = xx + n'importe quoi / *xx = n'importe quoi + xx
xx * = xx + espace + n'importe quoi
* xx = n'importe quoi + espace + xx
x*y = x + n'importe quoi + y (exp c*c pour CédriC, CoC, ...)

4 - Emplacement > Définie d'où viens le déclancheur attendu
# = de la salle / ? = en PV au bot / * = de n'importe où

5 - Le code à effectuer > exp: /privmsg # ... ou /msg # ... ou /kick ....

Voilà pour le détail... donc revenons à la fonction:

On *:TEXT:déclancheur:#: { /privmsg # la réponse }

Comme vous l'avez compris, les : délimitent pour mIRC si nous en somme à l'information 1,2,3,4 ou 5 ...
Donc quand vous testez les emoticons de cette manière, vous faites une erreur lorsqu'ils ont : car vous trompez mIRC. Vous pensez faire :

On *:TEXT::-p:#: { /privmsg # la réponse }

mais mIRC comprend :

On *:TEXT::-p:# { /privmsg # la réponse }

Donc tout est décalé d'un rang, est le déclancheur devient nul (vide), la fonction n'a plus de sens...
Donc il faut soit l'écrire autrement, soit faire preuve d'imagination !

On peut par exemple n'utiliser que '( pour attendre l'emoticon :'( ... Exp:

On *:TEXT:'( :#: { /privmsg # la réponse }

Cependant si quelqu'un n'entre que '( le script réagira aussi...

Pour :-p c'est autre chose... On pourrais n'attendre que -p mais beaucoup ne mettent pas le - non obligatoire, et font tongue.gif donc il faut trouver mieux...

On peut donc écrire le code comme ceci:

On *:TEXT:*:#: {
if (*tongue.gif iswm $$1-) { /privmsg # la réponse }
}


Car dans la condition if, je peux sans problème mettre des :
Pour le déclancheur, j'utilise ici * = n'importe quel texte.
pour chercher en utilisant les * on utilise iswm sinon, sans *, on utilise isin

(*tongue.gif* iswm $$1-) / (tongue.gif isin $$1-)

Deux Choses IMPORTANTES ...

avec

On *:TEXT:déclancheur:#: { /privmsg # la réponse }

on attend déjà un texte précis donc on peut en mettre plusieurs dans le même script:

On *:TEXT:déclancheur1:#: { /privmsg # la réponse1 }
On *:TEXT:déclancheur2:#: { /privmsg # la réponse2 }
On *:TEXT:déclancheur3:#: { /privmsg # la réponse3 }
On *:TEXT:déclancheur4:#: { /privmsg # la réponse4 }
...


MAIS avec

On *:TEXT:*:#: {
if (*déclancheur* iswm $$1-) { /privmsg # la réponse }
}


On attend ici déjà tous les textes (*) ! Donc on ne peut mettre cela que une seule fois par scripts. Dans ce cas, pour plusieurs déclancheurs, on peut faire comme suit:

On *:TEXT:*:#: {
if (*déclancheur1* iswm $$1-) { /privmsg # la réponse1 }
if (*déclancheur2* iswm $$1-) { /privmsg # la réponse2 }
if (*déclancheur3* iswm $$1-) { /privmsg # la réponse3 }
if (*déclancheur4* iswm $$1-) { /privmsg # la réponse4 }
}


De plus, si vous ne pouvez pas utiliser pour les raisons vues plus haut de : dans le déclancheur de:

On *:TEXT:déclancheur:#: { /privmsg # la réponse }

Comprenez bien que vous ne pouvez pas non plus utiliser de ( ou ) dans le déclancheur de:

On *:TEXT:*:#: {
if (*déclancheur* iswm $$1-) { /privmsg # la réponse }
}


car sinon mIRC comprendrait:

On *:TEXT:*:#: {
if (*déclancheur)* iswm $$1-) { /privmsg # la réponse }
}


La ) serait annulée par celle du déclancheur )

Donc pour réagir sur smile.gif c'est à dire le on peut utiliser la 2e possibilité, mais en écrivant le n° du caratère ASCII de la ). Ainsi, on remplacera réspectivement ( par $chr(40) et ). par $chr(41) .
On utilise $+ pour coller le tout comme suit:

On *:TEXT:*:#: {
if (*: $+ $chr(41) $+ * iswm $$1-) { /privmsg # la réponse }
}


ici avec les * ; ou sinon sans les * comme suit:

On *:TEXT:*:#: {
if (: $+ $chr(41) isin $$1-) { /privmsg # la réponse }
}


Voilà, now vous avez les armes en main, réfléchissez à tout cela vous verrez, c'est logique ! Bon scripts...


--------------------------------------------------------------------------------

C•Dryk™