Page 2 sur 5
Re: [trotter]Mes trucs
Publié : 06 Sep 2011, 19:37
par trotter
Ya aussi "récupérer l'ID d'un event par rapport à ses coordonnés" qui est très pratique.
Sur XP ya plein de bon script, par exemple avec l'Event Langage 3 d'Avygeil et de Roys tu as un script pour que les PNJ empruntent un chemin optimal (pathfinding), un autre pour les champs de vision, le tout utilisable très simplement...
C'est plus le cas avec EL 4 par contre.
Re: [trotter]Mes trucs
Publié : 06 Sep 2011, 19:43
par Zim
Sur Geex, le path finding n'était pas très bon malheureusement... suffisant pour des RPGs, mais pour la précision des déplacements d'un rogue-like, il y avait trop de ratés. En fait j'ouvrirai un topic pour réfléchir à ça. ^^
Re: [trotter]Mes trucs
Publié : 06 Sep 2011, 20:39
par AristA
Ya aussi "récupérer l'ID d'un event par rapport à ses coordonnés" qui est très pratique.
Je confirme, ça simplifie énormément de choses. Je pense que tu as dû utilisé ça pour le champ dans ton jeu, nope ?
Re: [trotter]Mes trucs
Publié : 06 Sep 2011, 20:53
par trotter
Oui, et j'ai aussi utilisé le RMevent factory de Cherry qui duplique les events. On peut paramétrer des choses à changer entre chaque events (dupliquer des events dont les commandes n'agissent pas sur le même interrupteur par exemple ou changer leurs apparences genre "cet event a l'apparence objet 1 haut, le prochain objet 1 gauche, celui-là objet 1 face").
Re: [trotter]Mes trucs
Publié : 06 Sep 2011, 21:04
par AristA
Oui je sais, j'ai utilisé ce logiciel pour faire les immeubles à placer dans AA City. Ce cherry nous surprendra toujours, c'est vraiment le logiciel à tout faire des makers ce truc !
Re: [trotter]Mes trucs
Publié : 07 Sep 2011, 01:09
par AlexRE
Très utile en effet, je ne savais pas qu'il faisait tout ça.
Re: [trotter]Mes trucs
Publié : 13 Sep 2011, 23:59
par trotter
Je suis en train de développer le successeur de Genesis.
Au programme : une façon plus simple d'écrire le code et surtout la possibilité pour les visiteurs de s'inscrire pour que le robot se rappelle d'eux !
Ca implique qu'il faut donner un moyen au bot "d'oublier" au bout d'un certain temps qu'un utilisateur lui a dit, par exemple, bonjour, ou qu'il allait bien. Donc changement du côté des variables !
Les variables ressembleront à ça :
Exemple :
//affiche le sujet en cours
de quoi on parlait=Nous avons parlé de [VAR sujet en cours].
//donne la valeur "que les lapins, c'est ma passion" à la variable "sujet en cours"
lapin=C'est ma passion ![VAR sujet en cours,que les lapins, c'est ma passion]
//donne la valeur de "que tu allais" + de la variable "santé utilisateur" à la variable "sujet en cours"
mon état=[VAR sujet en cours,que tu allais [VAR santé utilisateur]]
C'est beaucoup plus simple que de taper <-modvar(nom de la variable,valeur)->.
Modvar et var sont désormais réunis dans "VAR" et on peut donner une date limite de validité aux variables :
[VAR a] : affiche la variable "a"
[VAR a,b] : donne la valeur "b" à la variable "a"
[VAR a,[VAR b]] : donne la valeur variable "b" à la variable "a"
[0:VAR a] : supprime immédiatement la variable "a"
[480:VAR a] : fait expirer la variable dans 8h (480 min)
[480:VAR a,b] : donne la valeur "b" à "a" et fait expirer dans 8h
Pareil pour les logs spéciaux, désormais précédés de LOG et pouvant eux aussi avoir une date limite :
[480:LOG bonjour] : le log bonjour sera actif pendant 8h
Plus de nouvelles bientôt
Pour rappel, Genesis :
http://s140685957.onlinehome.fr/bot/chatterbot23.php
Re: [trotter]Mes trucs
Publié : 25 Sep 2011, 18:16
par trotter
L'interpréteur est terminé.
En parallèle de l'interpréteur j'ai écris la nouvelle documentation, ce qui m'a bien aidé à la fois pour le dev et pour l'écriture de la doc.
Documentation sur les nouveautés :
Spoiler: |
| **********************************
CONDITIONS
**********************************
Les conditions permettent de vérifier l'existence de certains paramètres (une variable, un log...) pour que la ligne soit traitée. Les conditions utilisent des accolades, "{}", qui rappellent évidemment le langage C et ses dérivés).
---------------------------------
-=Tester l'existence/l'inexistence d'un log=-
Usage :
{salutations} : traite la ligne si le log "salutation" existe.
{!salutations} : traite la ligne si le log "salutation" n'existe pas.
Commentaires :
-Il est possible de les combiner et de les utiliser n'importe où dans la ligne.
-Pour tester l'existence d'un log temporaire, utiliser {temp:nom du log}
---------------------------------
-=Tester une variable=-
Usage :
{var a} : traite la ligne si la variable "a" existe.
{!var a} : traite la ligne si la variable "a" n'existe pas.
{var a,b} : traite la ligne si la variable "a" possède la valeur "b".
{!var a,b} : traite la ligne si la variable "a" ne possède pas la valeur "b".
Commentaires :
-Il est également possible de faire {var a,[var b]}.
---------------------------------
-=Appel d'un script externe=-
Usage :
{inc script.php,arg1,arg2} : exécute le script script.php avec deux arguments.
Commentaire :
-Argument facultatif et pas de limite dans le nombre d'arguments.
-Permet de tester des conditions complexes comme l'heure, la date, le nombre de lettres dans un mot, si une connexion internet existe, si deux mots existent n'importe où dans la phrase... Vous n'êtes limité que par votre capacité de programmation php. Voir le script textheure.php.
-Plus généralement, permet d'exécuter un peu n'importe quoi.
-Attention : un appel de script en condition sera exécuté chaque fois que la ligne sera testé, risquant de ralentir votre chatterbot contrairement à la commande INC qui exécute un script seulement si la ligne est valide.
-Possible d'en utiliser plusieurs à la fois.
**********************************
COMMANDES
**********************************
Les commandes sont des fonctionnalités exécutés une fois lorsque la phrase de réponse est utilisée.
---------------------------------
-=Commande VAR=-
Usages :
[VAR a] : remplace [VAR a] par la valeur de la variable "a", que ce soit avant ou après "=".
[VAR a,b] : donne la valeur "b" à la variable "a".
[VAR a,[VAR b]] : donne la valeur de la variable "b" à la variable "a".
[480:VAR a] : remplace [480:VAR a] par la valeur de "a" et fait expirer la variable "a" dans 8h.
[480:VAR a,b] : donne la valeur "b" à "a" et fait expirer dans 8h.
[480:VAR a,[VAR b]] : donne la valeur variable "b" à la variable "a" et fait expirer.
Commentaires :
-Il est possible d'utiliser [var au lieu de [VAR.
-A noter que l'affichage de la valeur des variables se fait avant l'assignation des variables. Il est donc impossible de mémoriser une variable et d'afficher son contenu en même temps sur une même ligne.
-Les noms de variables sont insensibles à la casse.
-Le contenu des variables n'est pas insensible à la casse.
-Il est possible d'utiliser des espaces dans les noms de variable.
-Les variables étant stockés sous la forme "a::b;", les ";" sont remplacés par "pvirg" et les "::" par "dbl2point" lors du stockage. L'opération inverse est faite lors de l'affichage.
-Utilisez la commande CALC pour incrémenter une variable. La formule [VAR A,[CALC [VAR A]+1]] incrémente la variable "A" de 1.
---------------------------------
-=Commande LOG=-
Usages :
[LOG bonjour] : Enregistre le log "bonjour".
[480:LOG bonjour] : Enregistre le log "bonjour" et le fais expirer dans 8h.
[LOG temp:bonjour] : Fait expirer le log "bonjour" juste après la prochaine question.
Commentaires :
-Ne pas utiliser "!" avant le nom d'un log.
-On peut placer un ou plusieurs logs avant le signe egal qui seront commun à chaque réponse.
-Les noms de logs sont insensibles à la casse.
-Il est possible d'utiliser des espaces dans les noms de logs.
-Si un élément est entre crochets et qu'il ne s'agit pas d'une commande, il sera automatiquement considéré comme un log. Ainsi, écrire "[LOG bonjour]" est équivalent à "[bonjour]", ou [480:LOG temp:test] est égal à [480:temp:test].
---------------------------------
-=Commande [NOREUT]=-
Usage :
=[NOREUT] : Empêche cette phrase d'être utilisée une deuxième fois durant une conversation.
Commentaires :
-N'est valable que durant le temps de la conversation uniquement ! Si l'utilisateur ferme puis ouvre la page, les noreut sont oubliés.
-Attention, prend en compte les commandes dans la phrase. Deux réponses identiques avec des commandes différentes ne sont pas identiques pour noreut.
-Peut s'utiliser en minuscule ou en majuscule.
-Pour faire oublier totalement une phrase, utilisez la commande LOG.
---------------------------------
-=Commande IGNORER=-
Usage :
=[IGNORER] : Ne renvoit aucune réponse et passe à la phrase suivante.
Commentaires :
-Utile pour baisser la probabilité d'une phrase d'être utilisée. Si on veut par exemple que la phrase soit utilisée une fois sur quatre : "=[IGNORER]|[IGNORER]|[IGNORER]|phrase en question".
-Les commandes (logs, variables...) ne sont pas ignorés.
---------------------------------
-=Commande CONTINUER=-
Usage :
=[CONTINUER] : Traite la ligne de façon normale mais ne s'arrête pas dessus.
Commentaires :
-Utile pour faire des phrases avec plusieurs parties aléatoires, par exemple.
---------------------------------
-=Commande CERVEAU=-
Usage :
=[CERVEAU nomducerveau] : A la prochaine entrée de l'utilisateur, le cerveau utilisé sera nomducerveau.
Commentaires :
-Le cerveau à utiliser est stocké en base de donnée.
---------------------------------
-=Commande URL=-
Usage :
=[URL intitulé de l'url,adresse du site] : Remplace "[URL intitulé de l'url,adresse du site]" par un lien HTML.
---------------------------------
-=Commande CLICREP=-
Usage :
=[CLICREP intitulé du lien,contenu du message] : Remplace "[CLICREP intitulé de l'url,adresse du site]" par un lien HTML qui, une fois cliqué, enverra un message au robot comme s'il avait été tapé.
Commentaires :
-Nécessite l'activation de javascript.
---------------------------------
-=Commande INC=-
Usage :
=[INC script.php,arg1,arg2] : Exécute le script "script.php" avec deux arguments.
Commentaires :
-Argument facultatif et pas de limite dans le nombre d'arguments.
-Permet de faire un peu n'importe quoi (auto-apprentissage, recherche sur le web, synthèse vocale etc.) en php sans toucher à l'interpréteur de Genesis. INC a tellement de potentiel qu'il peut remplacer toutes les commandes existantes.
-Il est possible d'utiliser plusieurs INC à la fois. |
Les grosses nouveautés par rapport à l'interpréteur chatterbot23.php (de Genesis) :
-Innscription de l'utilisateur et mémorisation des variables et des phrases dites.
-Possibilité d'appeler un script au moment du test des conditions ;
-Possibilité de tester le contenu d'une variable (eh non, on pouvait pas !) ;
-Possibilité d'incrémenter des variables (ben quoi, je crois pas que ça soit possible en AIML...);
Je vais sans doute developper un petit chatterbot exemple basé sur tout ça...
Je sais pas trop quel personnage faire, peut être un Genesis un peu plus sérieux.
Re: [trotter]Mes trucs
Publié : 25 Sep 2011, 20:53
par Gaetz
Un homme politique de l'UMP qui commente les résultats de l'élection sénatoriale :D
Re: [trotter]Mes trucs
Publié : 25 Sep 2011, 21:04
par trotter
"On a pas perdu ils ont pas gagné rien n'est encore joué attendons le premier octobre"
Au fait ça se télécharge ici parce que je sais que vous attendez tous le lien, attention, c'est pas testé à fond il y a certainement
beaucoup plus de bugs que dans chatterbot23 :
http://s140685957.onlinehome.fr/bot/201 ... lease1.zip
Re: [trotter]Mes trucs
Publié : 25 Sep 2011, 21:34
par trotter
Tiens d'ailleurs j'ai lâché ça sous GNU Affero General Public License, tu t'y connais là dedans ?
Ca oblige les personnes qui modifie la source php et le fout sur leur serveur de partager les sources.
Le dernier interpréteur je l'avais lâché comme GNU General Public License, ce qui n'obligeait pas à partager si on rendait accessible par internet, juste si on publiait le php.
Ca parait con-con mais on m'a déjà approché plusieurs fois pour ce chatterbot.
Re: [trotter]Mes trucs
Publié : 26 Sep 2011, 01:49
par Zim
Y a rien à cliquer dans ton dossier, ça marche pas, c'est nul.
(J'essayerais plutôt de chatter avec si tu le mets en ligne.)
Quel caractère ? Un Blizzard ?
Un Blizzard qui affinerait grâce à l'utilisateur son art de la discussion.
(Ca me rappelle une discussion qu'on a eu en forêt, sur la question de savoir si copier mon cerveau à l'état X serait copier un état de fait, ou copier une dynamique... Je devais te filer un extrait de Bergson sur l'avenir imprévisible à partir du passé, mais le bouquin est à quelques centaines de kilomètres :( ).
Re: [trotter]Mes trucs
Publié : 04 Oct 2011, 19:00
par trotter
(J'essayerais plutôt de chatter avec si tu le mets en ligne.)
Oui, j'ai juste terminé le moteur, pas le bot.
Mais le bot avance bien, il a déjà 1.000 lignes, c'est à dire 1/5e de Genesis que je réutilise en modifiant les réponses.
Ca sera finalement un programme un peu plus froid que Genesis qui vouvoie l'utilisateur, ne plaisante pas trop et n'hésite pas à dire ce qu'il ne comprend pas. J'essaie de le rendre un peu plus intéressant que Genesis dans ses réponses, en le faisant donner des infos encyclopédiques.
Et vu que la grande nouveauté c'est le système de login, le bot va petit à petit se rapprocher de l'utilisateur, en le tutoyant, plaisantant et réutilisant des infos qu'il connait sur l'utilisateur ("tu vas mieux ? la dernière fois tu avais un problème à propos de ta petite copine.", "Tiens, comme je sais que tu t'intéresses aux jeux vidéo, voici les actualités sur le sujet.").
Re: [trotter]Mes trucs
Publié : 08 Oct 2011, 15:58
par s4suk3
Je trouve ça très intéressant ! Je ne suis pas un grand fan de PHP, mais le développement d'un robot est assez amusant.
Tu as utilisé un automate pour gérer l’interpréteur ?
Re: [trotter]Mes trucs
Publié : 08 Oct 2011, 18:51
par trotter
Pas compris ce que tu entends par automate. Je cherche la commande avec strpos.
Sinon c'est fait pour les gens qui connaissent pas php ou ne veulent pas programmer.
Si tu t'y connais un peu ça se développe vite un bot avec les ereg.
Re: [trotter]Mes trucs
Publié : 09 Oct 2011, 18:05
par s4suk3
Pas compris ce que tu entends par automate
Je parlais des automates non déterministe.
Je vais m'y intéresser (j'aimerais créer une syntaxe facile pour mes scripts).
Re: [trotter]Mes trucs
Publié : 09 Oct 2011, 20:32
par trotter
De très bons articles sur le sujet :
http://www.laurentbloch.org/spip.php?article112
http://www.laurentbloch.org/spip.php?article113
C'est plutôt php qui fait ce genre de boulot, pas moi.
Mon langage n'est pas vraiment un langage de script, ça ressemble plus à ça :
//Affiche "Salut toi !" si le mot bonjour est présent
bonjour=Salut toi !
Un hello world :
=Hello world!
Autrement dit c'est ultra-simplifié. Pas de commande pour faire des boucles par exemple. Je sais pas trop comment on pourrait appeler ce genre de langage. Ca ressemble beaucoup à de l'AIML mais en plus lisible je trouve :
http://en.wikipedia.org/wiki/AIML
Aiml :
<category>
<pattern>WHAT IS YOUR NAME</pattern>
<template>My name is John.</template>
</category>
C24 :
|what is your name|=My name is John.
Re: [trotter]Mes trucs
Publié : 10 Oct 2011, 08:40
par s4suk3
Merci pour toutes ces précisions
Re: [trotter]Mes trucs
Publié : 16 Oct 2011, 19:05
par trotter
Voilà une première publication.
Attention, c'est en cours de développement.
Il ne connait qu'un petit millier de mot contre cinq mille pour Genesis :
http://s140685957.onlinehome.fr/bot/cha ... rbot24.php
Re: [trotter]Mes trucs
Publié : 17 Oct 2011, 19:24
par trotter
Je suis en train de traduire un jeu vidéo.
Quelle traduction vous auriez pour
"XXX critically hits YYY" ?
Re: [trotter]Mes trucs
Publié : 17 Oct 2011, 20:07
par Fantomas
"Coup critique"
Re: [trotter]Mes trucs
Publié : 17 Oct 2011, 20:17
par I AM ERROR
(C'est pas vraiment ça qu'il demande.)
Si tu veux garder un jargon "jeu vidéo" tu peux écrire :
XXX porte un coup critique à YYY
ou si tu veux être plus créatif...
XXX casse la tronche à YYY
XXX réduit en miette YYY
XXX fait mordre la poussière à YYY
XXX attaque de toutes ses forces YYY
XXX rosse YYY
Re: [trotter]Mes trucs
Publié : 17 Oct 2011, 20:21
par trotter
Ah c'est pas mal tout ça Magnolia merci.
Re: [trotter]Mes trucs
Publié : 18 Oct 2011, 19:10
par trotter
Et pour "drop" ?
J'ai mis "lâcher" pour drop mais c'est un peu bizarre "lâcher" si on a l'objet dans son sac.
La touche "P" de "poser" est utilisée pour prendre.
La touche "d" de déposer est utilisée pour "discuter".
Reste "laisser" ou "laisser tomber" ou...?
Re: [trotter]Mes trucs
Publié : 18 Oct 2011, 19:35
par Zim
Pas facile. Je ne vois comme synonyme que "abandonner", mais on risquerait de croire que ça quitte la partie.
Au lieu de "prendre", tu pourrais mettre "saisir", et ça libèrerait le p de "poser" ?