COMMANDES EVA EN DIALOG

cs_wims Messages postés 2466 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 1 août 2010 - 20 janv. 2007 à 23:23
doob666 Messages postés 149 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 25 janvier 2011 - 13 sept. 2010 à 14:15
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/41183-commandes-eva-en-dialog

doob666 Messages postés 149 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 25 janvier 2011
13 sept. 2010 à 14:15
Voila Après 3 Grosse Mise à jour si vous relevez des bugs ou des améliorations à faire Merci de me prévenir. =)
griffondorr Messages postés 427 Date d'inscription dimanche 6 juillet 2008 Statut Membre Dernière intervention 4 mai 2009
30 sept. 2008 à 15:23
un ptit 5/10 pour l'idée et les remarques de wims
doob666 Messages postés 149 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 25 janvier 2011
23 janv. 2007 à 07:04
Okay je vois un peu mieu comment faire, je vais essayer de faire tout ça, je vais y arriver ^^ (enfin j'éspère xD). Merci Wims pour ces éclaircissement.
cs_wims Messages postés 2466 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 1 août 2010 1
22 janv. 2007 à 20:28
Les commentaires de plus d'une ligne sont mal passés, fait gaffe quand tu test
cs_wims Messages postés 2466 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 1 août 2010 1
22 janv. 2007 à 20:25
En fait chaque id du dialog correspond au commande qui sont inscris dans l'odre dans la hashtable

pour le bouton 1, la commande a faire est ( on oublie le /msg %eva repetitif ) : access $?="entre le pseudo"

donc tu ajoute dans la table au premier item la commande associé :
/hadd -m table 1 access 1.pseudo

access est la commande
1 represente le nb de parametre nécéssaire lors du clique
pseudo represente le "truc" a demandé lors de la boite de dialog

Si ta plusieur parametre avant ceux que l'on demandera dans la(les) boite de dialog comme pour l'id 111 ou 112 ( j'en ai pas vu d'autre ) et qu'il y a au moins un parametre de boite de dialog tu sépare les "premiers" parametres par un . comme les "deuxiemes"
:

/hadd -m table 111 modaccess.pass 2.pseudo.newpass
modaccess = premier parametre.
pass = deuxieme parametre.
2 veux dire qu'il y a 2 parametre avec des boite de dialog.
pseudo veux dire que le texte de la premiere boite de dialog demandera le pseudo .
newpass = ce qu'il demandera dans la deuxieme boite de dialog

ensuite lorsqu'on click sur un truc

on *:dialog:eva:sclick:*:msg %eva $cmdhash($did)

tu lui dis de /msg selon l'id du bouton et voila l'alias :

alias cmdhash {
var %i $1 ,%r $hget(table,%i) ,%a 1
;%i contient l'id du bouton, %a 1 et %r la commandes a faire
tokenize 32 %r
;on tokenize pour avoir des $N
if (!$2) var %f = $replace($1,.,$chr(32))
;si $2 n'existe pas, alors il n'y a pas de params avec boite de ;dialog et la commande final est $1 sauf que les différent params ;sont séparé par un point donc on les remplaces par un espace ( ;$chr(32) )
else {
;sinon, il y a des parametre de boite de dialog et :
var %b = $numtok($2,46)
;on stock une variable qui contient le nb de parametre de boite de ;dialog, et qu'on va utilisé avec %a pour faire une boucle
while (%a <= %b) {
;tant que il y a des parametre de boite de dialog
var %ff = %ff $$?="Entre le $replace($token($2-,%a,46),newpass,nouveau pass,msg,message)
;on stock dans %ff tout les parametre de boite de dialog
inc %a
;on incremente pour la boucle
}
if ($numtok(%ff,32 != %b) return $false
;si on entre pas de parametre, on retourne une erreur
var %f = $replace($1,.,$chr(32)) %ff
;sinon, on stock les parametre final
}
return %f
;dans tout les cas on retourne %f, qui contient la cmd final
}

pour les parametre avec boite de dialog, essaye de les mettre tel quel ( genre tel que tu voudrais qu'il apparaisse dans le $?="" apres le <Entre le>

J'ai écris tout ca sans me relire donc j'ai pas test ni vérifié :)
doob666 Messages postés 149 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 25 janvier 2011
21 janv. 2007 à 17:07
Je vois pas du tout comment je peut faire, j'ai essayer de faire ce que tu m'as dit...mais ça ne marche pas, plus rien ne fonctionne...
doob666 Messages postés 149 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 25 janvier 2011
21 janv. 2007 à 11:51
Okay wims, je vais voir si j'y arrive (je débute). merci ^^
cs_wims Messages postés 2466 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 1 août 2010 1
20 janv. 2007 à 23:23
Pour alleger le code, tu devrais faire une hashtable avec les numero d'id du dialog et les commande associé parce que tout tes if comme ça, c'est tres laid.
genre : /hadd -m eva 1 access $!$?="Entre le pseudo"

$hget(eva,1) retournerai access $$?="Entre le pseudo" sans déclancher la boite de dialog a cause du $!.
ensuite quand tu click sur un bouton :

on *:dialog:eva:sclick:*: msg %eva $($hget(eva,$did),2)

le $(,2) est la pour forcer les boite de dialog ($?) a etre évaluer :)

ta plus qu'a faire ca pour 120 lignes et de donner la table avec le code =)