AIO-Log, script de connexion à Dofus [windows]

Fil fermé
Partager Rechercher
Citation :
Publié par Elideskadesri [Jiva]
...
Ahouais, j'ai jamais de virgule ni de points dans mes mots de pass. :/

Bon, je teste/règle ça dans la 1_8b, dès que j'ai le temps. :s

"Désolé de la gêne occasionnée". ^^

Za. *part en MP pour en discuter, vu que tous ses tests fonctionnent*

Hooy, j'ai trouvé le soucis

Code:
		Send ( $NDCMDP [ 1 ], 1 )
		Send ( "{TAB}" )
		Send ( $NDCMDP [ 2 ], 1 )
à la place de Send ("truc"). Y'avait un soucis avec les caractères spéciaux comme l'exclamation qui étaient considérés comme un appui sur "shift" ou "ctrl", etc.

Je mets les liens à jour, vouala !
Hop voilà, la version 1_8 est stable et à toute épreuve.
Maintenant, il faut l'améliorer (normal^^), et pour ça, j'ai besoin de vous, de votre avis et de vos idées. (Des 3 à la fois, en plus. )

Idées sur les ajouts à venir (certains, déjà préparés, mis en évidence par une astérisque "*") :
*-> une case à cocher "Fermer le script quand le compte est connecté"
-> une case à cocher "afficher les caractères" quand on entre un mot de pass ? (pour ou contre ce bouton ? faites votre choix ^^) (désactivée par défaut, ça affiche des "°" à la place des caractères)
-> une option "mettre en plein écran" à la connexion ?
-> un mode d'emploi ?
-> une meilleure information de ce que le script attend que l'utilisateur fasse ?
-> pouvoir fermer le script, même quand y'a eu un bug ? ^^ (Olol ouais, pas facile à faire, ça. J'vais voir s'que j'peux améliorer. ^^)
-> arranger l'apparence graphique que certains trouvent "fade" ? (Si vous avez des idées, je prends.. Et évitez le contenu "Ankama-Games", pour lequel il faudrait rajouter une mention visible "tous droits réservés", etc)

Et sinon, en vrac : pouvoir changer de position un compte dans la liste (ahah, chaud. Mais pas infaisable), et aussi rajouter la possibilité de connecter plusieurs comptes en lançant chaque fenêtre Dofus l'une après l'autres..

Et vos idées à vous ?
Ce qui vous passe par la tête, hésitez pas. o/
(Genre un Lapino en ASCII qui fait coucouw avant que la fenêtre "Connecter Ok/Annuler" se ferme ?)

Dofusément,

Za.
DofusLog 1_8 est reconnu comme légal !
Hop hop hop, c'est frais c'est chaud, ça fait des marrons cha...
Euuh bref, des niouzes officielles, avec la confirmation de l'autorisation légale de Sylfaen. :')

http://forum.dofus.com/fr/discussion...i-t211671.html (La page sur le forum officiel.)
Voici la réponse de Sylfaen à mon message :
Citation :
Publié par Sylfaen
Après étude de ton logiciel, il est conforme aux CGU et n'a donc pas à être interdit, mais nous ne pouvons en aucun cas faire la promotion sur les supports officiels, sites et forums.

En effet, nous n'avons aucun contrôle sur la sécurité de ce logiciel et il peut être modifié du jour au lendemain à des fins malveillantes.

Nous n'autoriserons donc ni la promotion de ce logiciel ni la publication de liens de téléchargements de celui-ci sur nos supports.

Son utilisation, en revanche, est autorisée, fortement déconseillée, mais autorisée. Mais nous nous devons de mettre en garde les joueurs des risques :
- Stocker, d'une manière ou d'une autre, des identifiants sur votre ordinateur est risqué, de tierces personnes pourraient y accéder.
- Même si le développeur du logiciel est de bonne foi, ce dont on ne doute pas, il n'est pas à exclure qu'un jour le logiciel soit modifié de sorte à récupérer les identifiants de joueurs et leur voler leurs comptes.
Enjoy, c'est tout à fait légal ! n_n

Ouais bon.. Vous précipitez pas trop quand-même sur tout ce qui bouge : je ne vous conseille que d'utiliser la version code-source copiée-collée en clair ici. (Et qui sera visible de manière claire et sûre comme "n'ayant pas changé".)
Les autres version sont purement pratiques, mais nécessitent votre confiance dans les fichiers que je mets à votre disposition.
Et je comprend tout à fait que ce ne soit pas au goût de tout le monde.

Bref. *contente*

Za.
Jolie appli ! Franchement, je trouve ça utile pour moi qui joue en double compte, d'avoir le pseudo dans la fenêtre Dofus ce qui me permet de jongler facilement sans me tromper de fenêtre ! Ca fait ça chez moi :
http://img301.imageshack.us/img301/5193/dofuslogdj3.jpg

Sinon, niveau apparence c'est pas top effectivement ! Le must serait de créer plusieurs skins que l'on pourrait choisir dans "Options" =)
__________________
Bien pour ma part sa fonctionne pas, je veut dire que le logiciel ne trouve pas dofus . exe.

Mais je crois savoir pourquoi

j'ai mes jeux sur un autre disque dur
donc Dofus, Morrowind, Diablo 2, etc etc...
Pour évitez les réinstallation de tous mes jeux a chaque formatage d'xp.

Donc je pense que le programme va chercher le chemin de Dofus dans la base de registre. Vue que j'ai pas réinstalle Dofus depuis mon dernier formatage.
Bon bah y'a plus qua ^^. Vous redit sa

Donc je propose
Donc pourquoi pas créer le choix du répertoire ou sa trouve dofus.exe ?

Édite
C'était donc cela. faire une réinstalle pour pour que le log compiler puisse trouver dofus.exe.
fonctionnelle et bien penser.
Citation :
Publié par Royaume[Raval]
personnellement, j'attends les skins ^^
*sort la gousse d'ail et le crucifix*
NAaaAAAn, pas les skiiins ! X_x
Bon okay.. J'vais voir ça pour les skins.
J'avais commencé à voir ça, y'a vraiment plein d'options qui sont possibles : juste pour un bouton, y'a l'apparence normale, l'apparence quand la souris est dessus, quand la souris clique (bouton enfoncé), quand la souris se relâche, quand il est sélectionné avec le focus, quand il est désactivé.
Il me semble que c'est tout, mais c'est déjà ça. x)

Merci pour cette idée, j'la mets de côté.

@lemagefou : je connais ce soucis. D'ailleurs, dans mon message sur le forum officiel, je le décrivais, en donnant la solution actuelle associée.
*a pensé à faire une sauvegarde texte de son message au fofo*
Citation :
Bugs connus, remarques :
- Le script plante à chaque fois qu'il est censé lancer la fenêtre Dofus.
Certains client Dofus ont pour nom "Dofus.exe" (par défaut, c'est ce que le script cherche), et d'autres "Dofus_client.exe".
La solution la plus simple, c'est de renommer le fichier "Dofus_client.exe" en "Dofus.exe", si vous vous trouvez dans ce cas.
(/!\Utilisateurs avertis : Vous pouvez aussi ouvrir le script, pour modifier "Dofus.exe" en "Dofus_client.exe".)

- Passer sa souris sur une zone de texte quand Dofus se lance depuis le script entraîne un comportement indésirable (et indésiré).
La vérification que la fenêtre Dofus est bien visée est difficile à maitriser (pour moi).
La seule solution actuellement, c'est de patienter calmement que la connexion sélectionnée se termine correctement avant de passer d'une fenêtre à l'autre.
(Et je suis toute ouïe à une solution, sachant qu'il s'agit de la fonction "FLancer()" du script.)

- La fenêtre du script apparaît "figée", et le double-clic de la souris ne répond plus.
La solution, c'est un clic-droit sur la petite boule bleue (l'icône actuelle du script) dans la barre des tâches (à côté de l'heure, en bas à droite de l'écran), et de cliquer sur "Exit".
Explication : le script n'a pas "terminé" correctement la connexion d'un compte en cours, il faut penser à passer sa souris sur le bouton orange "OK" pour que le script soit content. ^^
(J'accepte aussi les propositions pour améliorer la communication avec l'utilisateur.)

- L'interface est "fade" : j'accepte toute proposition pour rendre l'interface un brin plus conviviale. n_n

- J'veux custom' ton script-yeah, ou Je tourne sous une version de Dofus zippée : Ok, pas de soucis. Le script est là pour faire selons vos envies/vos besoins. Voici les modifications que je compte inclure (un jour...) et que vous pouvez faire vous-même en attendant :
- - > (dans la fonction "Flancer ()", ligne 240) modifier "Dofus.exe" en "Dofus.htm" pour lancer l'application internet plutôt que l'exécutable.
- - > (dans la fonction "Charge ()", ligne 49) modifier "$prgChemin = RegR..." par "$prgChemin = "c:\[répertoire du jeu Dofus]\" (par défaut : "c:\Program Files\Dofus\")
- - > /!\utilisateurs avertis ! ^^/!\ (dans la fonction "Charge ()", ligne 43) modifier "$fichier = FileOpenD.." selon le nom que vous souhaitez par défaut pour votre fichier de logs, ainsi que son chemin d'accès (la ligne de commentaire juste dessous, c'est simplement ce que j'utilise moi, hihi ^^)
Auto-It étant un environnement de programmation complet, je déconseille de jouer à l'apprenti sorcier avec le script, même si c'est sans danger pour votre ordinateur. (Enfin, tant que vous ne faites que ce que je décris. x) )

Je ne suis toujours pas responsable des modifications que vous pourriez faire de mon script, ni de l'utilisation d'AutoIt. (Rappel d'un rappel d'un rappel. ^^)


Bon, je m'attaque au multi-lancement (j'ai plusieurs idées différentes, 'va falloir choisir.. ^^) et au Lapino tout de suite.
(J'avoue que le Lapino sera ptètre pas le plus dur à réaliser.. ^^)

Merci de vos encouragements !

Za.
Edit : Pour le Lapino, ça, ça irait ?
(\__/)
( ' . ' )
(")_(") (Rappel : la fenêtre "Connexion OK/Annuler" se ferme au bout de 2 secondes, donc j'ai pas trop la motivation de faire un truc compliqué. )
Je ne sais pas si c'est possible, mais ça serait sympa si tu pourrais mettre le compte que l'on veut connecter comme un icone à part entière du bureau (T'as qu'à cliquer dessus et ça ouvre la page dofus de ce personnage.)

Ensuite, j'aimerais bien que chaque compte sois pris comme une application à part entière pour ne pas être mis en paquets quand tu coche: 'grouper les boutons similaires de la Barre des Taches'

Et +1 pour l'idée de Royaume, ça pourrait être simpa de voir un icone de sram quand je suis sur sram et un icone d'eniripsa quand je suis sur eni
Salut, je compte ajouter la fonction agrandir la fenêtre au démarrage.

Le raccourcis clavier étant {ALT}{SPACE}{N} j'ai la flemme de lire le code par supposition j'ai tester d'ajouter ça après les logs mais ça passe pas.
Je vais me pencher sur le code si le besoin s'en fait sentir mais d'après ma lecture très rapide tu fait bien appel a une fonction send donc mon "astuce" devrai marché or ce n'est pas le cas.
Une idée avant que je feuillette le code ?

Ps: Merci pour le soft.
Tu peux (et je le conseille) regarder ce qui est dans le script.
Y'a quelques pistes d'améliorations déjà incluses dedans, mais pas encore "débloquées" complètement. Donc, pour la connexion en plein écran, dans la fonction "FLance ()", tu trouveras en plein milieu ces lignes :
Code:
		WinSetTitle ( "Dofus", "", "Dofus - " & $aLog [ $compteBis ] )
;~ Send ( "^f" ) ;Mode "plein écran"
		Send ( $NDCMDP [ 1 ], 1 )
Il suffit que tu enlèves le ";~" devant le "Send ( "^f" )", et la fenêtre Dofus sera maximisée au même moment où le script envoie les ID. (NDCMDP = NomDeCompteMotDePass. ^^)
(Je rappelle que c'est soumis à un cryptage.)

@TonyPimp : Ok, je note ça pour la version 1_9 : Si je le fais, tu pourras lancer le DofusLog avec un paramètre, ça pourra être par exemple le pseudo dans la liste du fichier de log (passé en paramètre aussi).
Exemple : DofusLog1_9.exe -"c:\Mes Documents\Log.txt" -3
(Le "3" serait le 3ème compte dans la liste.)

Je ne vois pas trop par-contre pour le coup de l'appli à part entière : je ne crée pas d'application. C'est à vous de gérer votre affichage Windows pour dégrouper les boutons, exactement comme avec votre Dofus habituel.
(Ni plus, ni moins. ^^)

Je vais voir pour les icônes, mais ça va ptètre nécessiter une autorisation AG pour ça, je sens.. Donc ça attendra que j'aie fini avec la multi-connexion. ^^ (C'est bien entamé.)

Za.
Juste un icone avec le dofus Emeraude et une petite photo de sram, choisis précédement dans les options pour le compte de mon sram, ça m'aiderait à me démêler car quand il y a beaucoup de boutons dans la barre, je vois juste: Dofus -... (et non le titre complet qui est de : Dofus - Thieft

Sinon pour l'application à part entière, l'utilitée serait de regouper tous les pages d'internets ensemble et d'avoir tous les pages de dofus séparés, mais je ne m'y connais pas assez en informatique pour savoir si c'est faisable, sinon très beau travail, ça marche nikel. Bonne continuation pour la prochaine version.
Citation :
Publié par TonyPimp
Et +1 pour l'idée de Royaume, ça pourrait être simpa de voir un icone de sram quand je suis sur sram et un icone d'eniripsa quand je suis sur eni
Je ne pense pas que tu ais bien compris ma formulation. En parlent de skins, je parlais du skin de la fenêtre ! Par exemple, changer la couleur des boutons tout simplement ! Les choses les plus simples peuvent rendre plus fun malgré tout.
Exemple de skins : ici (celui ci change les boutons)
Mais sinon, oui pourquoi pas la même petite tête de sram qu'on a dans sa liste d'amis =)
Wooups !
Attention, je viens de remarquer un tit bug très bête (ça prouve que j'ai pas fait tous mes tests comme il fallait. Je vais me flageller comme il se doit. u_u), la suppression (en utilisant le bouton ou la fonction dans les options) ne supprime pas les bonnes lignes, mais.. en décalé de la ligne supérieure. (En gros, c'est un bug de "+1" dans la ligne ciblée....)
Petit correctif, il faut modifier une ligne dans la fonction "FSupprimer ()" :
Code:
Func	FSupprimer ()
	If	MsgB[...]
	DesAct ( 1 )
	$ligne = $compte * $NbLignes + 1 ;le "+1" à mettre !
	While[...]
Voilà, et toutes mes excuses pour la gêne occasionnée.
Je ne sors pas la 1_8 corrigée, ça me demande (compilation, mise en ligne) trop de travail pour la modif' que c'est. (Je mets à jour le code-source en revanche, vous pouvez le re-récupérer sans soucis en copié-collé.)
Évitez donc d'utiliser ce bouton pour le moment, si possible.
(C'est réglé pour la 1_9 qui arrive dans quelques jours.)

Za.

Petite mise au point rapide ne nécessitant pas de faire un up du Topic : (et qui ne sont pas mis à jours sur la 1_8 plus haut)
Le bug désagréable qui envoyait les infos sélectionnées du login/pass dans une autre fenêtre que Dofus est corrigé : c'était un problème avec les noms des fenêtres dont le nom avait juste à commencer par "Dofus", et donc cette fenêtre que Toi, JoLien, tu lis en ce moment remplissait cette condition.
Changement : Le titre de la fenêtre doit maintenant être exactement "Dofus__" (deux espaces, vi : c'est le nom officiel du client Dofus.. pourquoi ? aucune idée.) pour que le script accepte de lâcher le morceau. = bonne nouvelle pour la sécurité ! ^^
Je travaille sur la multi-connexion là, et je galère sur les listes.. La connexion en elle-même est déjà prête à être faite, hein.. Mais il faut encore choisir quels comptes seront à connecter.
Le bouton "fermer le script après la connexion" aura besoin de tests de votre part : j'ai l'impression que parfois, il ne remplit pas son rôle. (Donc -> go² me le dire quand vous voyez que ça fonctionne pas comme ça devrait. ^^)
Hum.. quoi d'autre ? Rien pour le moment il me semble.. Peut-être que si je me motive, je ferai un-peu plus, mais déjà je finis avec le gros morceau.
Version 1_9 en approche !
Autre modification apportée par la 1_9 : Si "Dofus.exe" n'est pas trouvé dans le répertoire d'installation, le script cherche "Dofus_Client.exe" dans le même répertoire. Si aucun des deux n'est trouvé, l'utilisateur doit choisir la cible lui-même.
/!\Modification soumise à des tests en vue : il est possible de sélectionner "Dofus.htm" grâce à cette modif.
Mais il va falloir fonctionner avec les navigateurs internet, et si la fenêtre devient autre que "Dofus__", la modification juste au-dessus (titre de la fenêtre = "Dofus__") ne s'applique plus. Voir à changer ça. (Ptètre que je vais utiliser la différence entre une fenêtre htm et exe.. J'en sais rien pour le moment.)
Je rédige un pâté inbuvable, mais je m'en fous, personne ne le lit pour l'instant ! (enfin, je crois. :x )
Zut, tous mes fans ne sont pas morts de vieillesse.

Donc (ne lisez pas le pâté du dessus, c'est moche, j'avoue. ), voici où j'en suis pour la prochaine version :
-> Une case à cocher "Fermer le script après la connexion" est activable facilement
-> La fonction de suppression du compte fonctionne correctement
-> Il est maintenant possible de ne pas utiliser de version installée de Dofus. (Néanmoins, ça nécessite des tests approfondis pour rendre cette formule compatible avec ci-dessous)
-> Le titre de la fenêtre doit correspondre exactement à ce qui est attendu. (Contrairement à "avant", où seul les premiers caractères du titre de la fenêtre devaient être "Dofus")
-> La possibilité de connecter un compte directement par des paramètres sur un raccourcis est presque finie, elle est liée à l'amélioration suivante.
-> La multi-connexion est en cours de préparation. Je galère sur les %$£ù de listes sur Auto-It. (C'est vraiment mal fichu, leur truc. >.< )

Voilà donc pour le up.
Ha, j'ai aussi inclus le Lapino en ASCII, et je pense avoir fait le tour.

Donc, les skins arriveront avec la version 1_9b ou la 1_10, avec la remise au propre de toutes les fonctions du programme. (C'est "crade", là.. plein de raccourcis de programmation devraient être évités. )

Sur ce, merci du soutien !

Za.
Vue que je ne vais pas sur le forum officiel, pas souvent on va dire, on te la peut être signaler.

qu'on ai le choix du fichier log.txt, pour une première utilisation ok.

a chaque ouverture du programme, c'est un pwal redondants.
Donc est 'il possible que le fichier log une fois créée ne soit plus demandé par le programme?


bonne continuation
Devoir chercher le fichier "log.txt" au début, ensuite devoir cliquer sur "lancer" puis sur "ok" pour la clef, puis sur "ok" pour ouvrir la fenêtre, je trouve que ça irai limite plus vite sans DofusLog
Bonjour les gens !
Bon, j'ai besoin de vous. Oui, vous, qui vous cachez derrière votre écran, vous pouvez apporter votre pierre au DofusLog.

Han, comment que j'peux ?
C'est facile : il suffit de copier le code-source de la 1_9 bêta ci-dessous, et de me dire ensuite ce que vous en pensez.

Ahouais, cétadir ?
Ben voilà, répondre soit ici, soit dans mes MP quelques points que je vais éclaircir, et les autres auxquels vous penserez.

Si vous voyez un bug, ou que vous avez une remarque "comment vous auriez aimé que ça se passe", décrivez-le moi.
Exemples (concrets) :
(résolu)Dans la version 1_9bêta1, le bouton "Nouveau" est en grisé quand on active puis désactive le bouton "Multi" -> il faudrait le garder actif tout le temps.
(résolu)Les boutons (préciser lesquels, si possible ^^) ne servent à rien, ou c'est comme si il ne se passait rien -> il faudrait les activer.
(résolu)Impossible de se connecter avec le "Multi" activé -> le Multi devrait être activé.
Quand le mode Multi est activé, et qu'une entrée est supprimée, le retour d'affichage du multi buggue -> replacer la fenêtre correctement après la suppression d'une entrée.
Maintenant, ce que je vous demande concrètement, c'est votre avis sur la position des boutons, ce que vous aimez (ils bougent, woaah), ce que vous n'aimez pas (ils bougent, s'chiant), et ce que vous auriez aimé à la place.
Aussi, si vous pouviez tester de vous connecter avec "Dofus.html" (présent dans le répertoire de Dofus) pour me dire le titre de la fenêtre du jeu, ça m'intéresse ("Dofus - Opera", pour Opéra, et "Dofus - Windows Internet Explorer" pour IE. Il me manque pour Mozilla, AOL, Livemachin, et netschose, entre autres), pour me permettre d'intégrer le DofusLog avec votre navigateur. Intégration Firefox ajoutée pour la bêta3.

Donc voilà la 1_9bêta3 en source :
Code:
#include <GUIConstants.au3> ;Nécessaire surtout pour le $GUI_EVENT_CLOSE
#include <String.au3> ;Pour l'encryptage

Global	$fichier, $prgChemin, $prgNom, $logChemin = @ScriptDir & "\", $logNom = "Log.txt", $FenBase, $Label, $CFini, $fin, $Lancer, $Multico, $multi = 0, $Modifier, $Nouveau, $Supprimer, $Ajoute, $Retire, $Haut, $Bas, $Boutons, $Options, $OLancer, $OModifier, $ONouveau, $OSupprimer,  $Fichiers, $FNouv, $FCharge, $FQuit, $aLog, $coListe, $CcoListe, $Radio
Global	$NbLignes = 2 ;Nombre de lignes utilisées par entrée dans le fichier de Log
Global	$compte = 1
Global	$Separ = 2 ;Séparateur, hauteur en pixels entre deux lignes
Global	$Hligne = 13 ;hauteur présumée par ligne ( 13 pixels de haut )
Global	$Ht = $Separ + 2 * $Hligne
Global	$msg
Dim	$aLog [ 3 ]
Dim	$coListe [ 1 ]
Dim	$Ccoliste [ UBound ( $coListe ) ]
Charge ()

While	1
	$msg = GUIGetMsg ()
	Switch	$msg
		Case	0
			ContinueLoop
		Case	$GUI_EVENT_CLOSE, $FQuit
			GUIDelete ( $FenBase )
			Exit
		Case	$Radio [ 1 ]	To	$Radio [ UBound ( $Radio ) - 1 ]
			$compte = FRadio ( $msg, $compte )
		Case	$Lancer, $OLancer
			If	$multi = 1	Then
				For	$n = 0	To	UBound ( $coListe ) - 1
					FLancer ( $fin, $coListe [ $n ] )
				Next
			Else
				FLancer ( $fin, $compte )
			EndIf
		Case	$Multico
			FMultico ()
		Case	$Modifier, $OModifier
			FModifier ()
		Case	$Nouveau, $ONouveau
			FNouveau ()
		Case	$Supprimer, $OSupprimer
			FSupprimer ()
		Case	$CFini	;Bouton fermer après la connec
			$fin = GUICtrlRead ( $CFini )
		Case	$Ajoute
			FAjoute ()
		Case	$Retire
			FRetire ()
		Case	$Haut
			FHaut ()
		Case	$Bas
			FBas ()
		Case	$FNouv, $FCharge
			GUIDelete ( $FenBase )
			Charge ()
	EndSwitch
WEnd
;==============================Fonctions totalement créées par Za====================================
Func	Charge ()
	$fichier = FileOpenDialog ( @ScriptName & " - Sélectionnez ou créez un fichier contenant vos logs", $logChemin, "Text files (*.txt)|All files (*.*)", 8, $logNom ) ;Spécial pour JoL ^^
	If	$fichier = ""	Then	Exit	;Ok, c'est violent, mais bon.. ^^
	$existe = _FileReadToArray2 ( $fichier, $aLog )

	;$prgChemin et $prgNom n'ont rien à faire ici, normalement. Sauf à associer les logs avec une application.
	$prgChemin = RegRead ( "HKEY_LOCAL_MACHINE\SOFTWARE\Ankama\Dofus", "Path" ) & "\"
	$prgNom = "Dofus.exe"
	If	Not	FileExists ( $prgChemin & $prgNom )	Then
		If	Not	FileExists ( $prgChemin & "Dofus_client.exe" )	Then
			$prgNom = FileOpenDialog ( @ScriptName & " - Sélectionnez votre lanceur jeu Dofus", $prgChemin, "(*.exe; *.html)|Tous (*.*)", 1, "Dofus" )
		Else
			$prgNom = "Dofus_client.exe"
		EndIf
	EndIf

	If	Not	$existe	Then
		Modifier ( 1, $fichier )
	EndIf

	_FileReadToArray2 ( $fichier, $aLog )
	Dim	$Radio [ ( UBound ( $aLog ) + 1 ) / $NbLignes ]
	Fenetre ( ( UBound ( $aLog ) - 1 ) / $NbLignes, 200 + 200 * ( $multi = 1 ) )
EndFunc

Func	Fenetre ( $tFen, $lFen = 200 )
	$FenBase = GUICreate ( @ScriptName, $lFen, 19 + 50 + $tFen * $Ht + 30, -1, -1, 0x70000 )
	$Label = GUICtrlCreateLabel ( "Choisissez un compte à Logger :", 1, 0, -1, -1 )
;~ 	GUICtrlSetResizing ( $Label, 2 + 32 + 512 )

	$Boutons = GUIStartGroup ( $FenBase )	;Séparation des groupes, en préparation ! -utile pour la boucle de focus
	$Lancer = GUICtrlCreateButton ( "Lancer !", 150, $Ht / 2 + $Ht / 2 * $tFen , 47, 25 )
	GUICtrlSetResizing ( $Lancer, 4 + 768 )
	If	( UBound ( $aLog ) ) / $NbLignes > 2	Then
		$Multico = GUICtrlCreateCheckbox ( "Multi", 150, ( $Ht - 3 ) + $Ht / 2 * ( $tFen + 1 ), -1, ( $Ht - 10 ) )
		GUICtrlSetResizing ( $Multico, 4 + 768 )
		GUICtrlSetState ( $Multico, $multi )
	EndIf
	If	$multi = 1	Then
		$Ajoute = GUICtrlCreateButton ( "Ajouter ->", 255, 0 )
		$Retire = GUICtrlCreateButton ( "<- Retirer", 315, 0 )
		For	$compteBis = 0	To	UBound ( $coListe ) - 1
			$CcoListe [ $compteBis ] = GUICtrlCreateCheckbox ( $aLog [ $coListe [ $compteBis ] * $NbLignes - 1 ], 255, 27 + $compteBis * $Ht + $Ht / 2 )
		Next
		$Haut = GUICtrlCreateButton ( "Monte", 205, $Ht + $Ht * ( UBound ( $CcoListe ) - 1 ) / 2, 40 )
		$Bas = GUICtrlCreateButton ( "Baisse", 205, ( $Ht - 3 ) + $Ht + $Ht * ( UBound ( $CcoListe ) - 1 ) / 2, 40 )
	EndIf
	$Modifier = GUICtrlCreateButton ( "Modifier", 150, 33 + $tFen * $Ht, 47, 25, 0x8000 )
	GUICtrlSetResizing ( $Modifier, 4 + 64 + 768 )
	$Nouveau = GUICtrlCreateButton ( "Nouveau", 1, 33 + $tFen * $Ht, -1, 25, 0x8000 )
	GUICtrlSetResizing ( $Nouveau, 2 + 64 + 768 )
	$Supprimer = GUICTRLCreateButton ( "Supprimer", 75, 33 + $tFen * $Ht, -1, 25, 0x8000 )
	GUICtrlSetResizing ( $Supprimer, 8 + 64 + 768 )
	$CFini = GUICtrlCreateCheckbox ( "Fermer le script après ce compte", 15, 11 )
	GUICtrlSetResizing ( $CFini, 2 + 32 + 768 )
	GUICtrlSetState ( $CFini, $fin )

	$Fichiers = GUICtrlCreateMenu ( "Fichier", -1, 0 )
	$FNouv = GUICtrlCreateMenuItem ( "Nouveau", $Fichiers, 0 )
	$FCharge = GUICtrlCreateMenuItem ( "Charger", $Fichiers, 1 )
	$FLigneVide = GUICtrlCreateMenuItem ( "", $Fichiers, 2 )
	$FQuit = GUICtrlCreateMenuItem ( "Quitter", $Fichiers, 3 )
	
	$Options = GUICtrlCreateMenu ( "Options", -1, 1 )
	$OLancer = GUICtrlCreateMenuItem ( "Lancer !", $Options, 0 )
	$ONouveau = GUICtrlCreateMenuItem ( "Nouveau", $Options, 1 )
	$OModifier = GUICtrlCreateMenuItem ( "Modifier", $Options, 2 )
	$OSupprimer = GUICtrlCreateMenuItem ( "Supprimer", $Options, 3 )

	$compteBis = 1
	While	$compteBis < ( UBound ( $aLog ) ) / $NbLignes
		$Radio [ $compteBis ] = GUICtrlCreateRadio ( $aLog [ ( $compteBis ) * $NbLignes - 1 ] & " .", 5, 27 + ( ( $compteBis - 1 ) * $Ht ), 135 - 136, $Ht - 3, 0x2000 )
		GUICtrlSetData ( $Radio [ $compteBis ], $aLog [ ( $compteBis ) * $NbLignes - 1 ] )
		GUICtrlSetResizing ( $Radio [ $compteBis ], 2 + 32 + 512 )
		$compteBis += 1
	WEnd
	GUICtrlSetState ( $Radio [ $compte ], 1 + 256 )
	GUICtrlSetPos ( $Radio [ $compte ], 15, 30 + ( $compte - 1 ) * $Ht )

	GUISetState ()
	DesAct ()
EndFunc

Func	DesAct ( $DesActive = 0 )	;Réactive les boutons par défaut
	If	UBound ( $coListe ) = 1	Then	GUICtrlSetState ( $Retire, $GUI_DISABLE )
	If	UBound ( $coListe ) > 1	Then	GUICtrlSetState ( $Retire, $GUI_ENABLE )
	If	UBound ( $coListe ) = ( UBound ( $aLog ) - 1 ) / $NbLignes	Then	GUICtrlSetState ( $Ajoute, $GUI_DISABLE )
	If	UBound ( $coListe ) < ( UBound ( $aLog ) - 1 ) / $NbLignes	Then	GUICtrlSetState ( $Ajoute, $GUI_ENABLE )
	If	$DesActive = 1	Then
		GUICtrlSetState ( $Lancer, $GUI_DISABLE )
		GUICtrlSetState ( $Modifier, $GUI_DISABLE )
		GUICtrlSetState ( $Nouveau, $GUI_DISABLE )
		GUICtrlSetState ( $Supprimer, $GUI_DISABLE )
		GUICtrlSetState ( $Options, $GUI_DISABLE )
		GUICtrlSetState ( $Fichiers, $GUI_DISABLE )
	Else
		GUICtrlSetState ( $Lancer, $GUI_ENABLE )
		GUICtrlSetState ( $Modifier, $GUI_ENABLE )
		GUICtrlSetState ( $Nouveau, $GUI_ENABLE )
		GUICtrlSetState ( $Supprimer, $GUI_ENABLE )
		GUICtrlSetState ( $Options, $GUI_ENABLE )
		GUICtrlSetState ( $Fichiers, $GUI_ENABLE )
	EndIf
	If	( UBound ( $aLog ) - 1 ) / $NbLignes < 2	Then
		GUICtrlSetState ( $Supprimer, $GUI_DISABLE )
		GUICtrlSetState ( $OSupprimer, $GUI_DISABLE )
	EndIf
EndFunc

Func	FSupprimer ()
	If	MsgBox ( 0x51, @ScriptName & " - Suppression", "Souhaitez-vous vraiment détruire cette entrée ?" ) = 2	Then	Return
	DesAct ( 1 )
	$ligne = $compte * $NbLignes + 1
	While	$ligne < UBound ( $aLog )
		$aLog [ $ligne - $NbLignes ] = $aLog [ $ligne ]
		$ligne += 1
	WEnd
	ReDim	$aLog [ UBound ( $aLog ) - $NbLignes ]
	ReDim	$Radio [ UBound ( $Radio ) - 1 ]
	If	$compte > ( UBound ( $aLog ) - 1 ) / $NbLignes	Then	$compte -= 1
	_FileWriteFromArray2 ( $fichier, $aLog, 1, UBound ( $aLog ) - 1 )
	$multi = 0
	GUIDelete ( $FenBase )
	Fenetre ( ( UBound ( $aLog ) - 1 ) / $NbLignes, 200 + 250 * ( ( ( ( UBound ( $aLog ) - 1 ) / $NbLignes ) > 1 ) * ( $multi = 1 ) ) )
EndFunc

Func	FModifier ()
	DesAct ( 1 )
	If	Modifier ( $compte, $fichier )	Then
		GUIDelete ( $FenBase )
		Fenetre ( ( UBound ( $aLog ) - 1 ) / $NbLignes, 200 + 200 * ( $multi = 1 ) )
	Else
		Desact ()
	EndIf
EndFunc

Func	FNouveau ()
	DesAct ( 1 )
	ReDim	$aLog [ UBound ( $aLog ) + $NbLignes ]
	ReDim	$Radio [ UBound ( $Radio ) + 1 ]
	If	Modifier ( ( ( UBound ( $aLog ) - 1 ) / $NbLignes ) , $fichier )	Then
		GUIDelete ( $FenBase )
		Fenetre ( ( UBound ( $aLog ) - 1 ) / $NbLignes, 200 + 200 * ( $multi = 1 ) )
	Else
		ReDim	$aLog [ UBound ( $aLog ) - $NbLignes ]
		ReDim	$Radio [ UBound ( $Radio ) - 1 ]
	EndIf
	DesAct ()
EndFunc

Func	Modifier ( $compteBis, $fich )
	$compteBis = $NbLignes * ( $compteBis - 1 ) + 1
	Local	$FenMod = GUICreate ( @ScriptName, 200, $HLigne * 12 )
	Local	$LabelSurnom = GUICtrlCreateLabel ( "Veuillez entrer un" & @CRLF & " pseudonyme :", 0, 0 )
	Local	$LabelClef = GUICtrlCreateLabel ( @CRLF & "Clef de cyptage :", 120, 0 )
	Local	$LabelNDC = GUICtrlCreateLabel ( "Veuillez entrer le nom du compte Dofus :", 0, $Hligne * 4 )
	Local	$LabelMDP = GUICtrlCreateLabel ( "Veuillez entrer le mot de pass associé :", 0, $Hligne * 7 )
	Local	$InputPseudo = GUICtrlCreateInput ( $aLog [ $compteBis ] , 2, $Hligne * 2, 125 )
	Local	$InputClef = GUICtrlCreateInput ( "", 149, $Hligne * 2, 50)
	Local	$InputNDC = GUICtrlCreateInput ( "", 2, $Hligne * 5, 196 )
	Local	$InputMDP = GUICtrlCreateInput ( "", 2, $Hligne * 8, 196 )
	Local	$BValide = GUICtrlCreateButton ( "Valider", 2, $Hligne * 10 )
	Local	$BAnnule = GUICtrlCreateButton ( "Annuler", 100, $Hligne * 10 )
	
	GUISetState ()
	
	While	1
		$Mmsg = GUIGetMsg ()
		Switch	$Mmsg
			Case	0
				ContinueLoop
			Case	$GUI_EVENT_CLOSE
				GUIDelete ( $FenMod )
				Return 0
			Case	$BAnnule
				GUIDelete ( $FenMod )
				Return 0
			Case	$BValide
				If	MsgBox ( 0x51, @ScriptName & " - Modifications", "Attention, vous vous apprêtez à" & @CRLF & "modifier définitivement ces données." & @CRLF & "Êtes-vous sûr ?") = 2	Then	Return 0
				If	GUICtrlRead ( $InputPseudo ) <> ""	Then
					$aLog [ $compteBis ] = GUICtrlRead ( $InputPseudo, 0 )
					_FileWriteToLine2 ( $fichier, $compteBis, $aLog [ $compteBis ], 1 )
					If	GUICtrlRead ( $InputNDC ) <> ""	and	GUICtrlRead ( $InputMDP ) <> ""	Then
						If	GUICtrlRead ( $InputClef ) = ""	Then
							$aLog [ $compteBis + 1 ] = GUICtrlRead ( $InputNDC ) & "{TAB}" & GUICtrlRead ( $InputMDP )
						Else
							$aLog [ $compteBis + 1 ] = _StringEncrypt ( 1, GUICtrlRead ( $InputNDC ), GUICtrlRead ( $InputClef ) ) & "{TAB}" & _StringEncrypt ( 1, GUICtrlRead ( $InputMDP ), GUICtrlRead ( $InputClef ) )
						EndIf
						_FileWriteToLine2 ( $fichier, $compteBis + 1, $aLog [ $compteBis + 1], 1 )
					EndIf
				EndIf
				GUIDelete ( $FenMod )
				Return 1
		EndSwitch
	WEnd
EndFunc

Func	FRadio ( $mess, $compteBis )
	If	$mess <> $Radio [ $compteBis ]	Then
		GUICtrlSetPos ( $Radio [ $compteBis ], 5, 27 + ( ( $compteBis - 1 ) * $Ht ) )
		While	$mess <> $Radio [ $compteBis ]
			$compteBis += 1
			If	$compteBis > ( UBound ( $Radio ) - 1 )	Then
				$compteBis = 1
			EndIf
		WEnd
		GUICtrlSetPos ( $Radio [ $compteBis ], 15, 30 + ( ( $compteBis - 1 ) * $Ht ) )
	Else
		If	$multi = 1	Then
			FAjoute ()
		Else
			FLancer ( $fin, $compteBis )
		EndIf
	EndIf
	Return $compteBis
EndFunc

Func	FMultico ()
	$multi = GUICtrlRead ( $Multico )
	If	$coListe [ 0 ] = ""	Then	$coListe [ 0 ] = $compte
	GUIdelete ( $fenBase )
	Fenetre ( ( UBound ( $aLog ) - 1 ) / $NbLignes, 200 + 200 * ( $multi = 1 ) )
EndFunc

Func	FAjoute ()
	For	$n = 0	To	UBound ( $coListe ) - 1
		If	$coListe [ $n ] = $compte	Then	ContinueLoop	2
	Next
	ReDim	$coListe [ UBound ( $coListe ) + 1 ]
	$CcoListe = $coListe
	$coListe [ UBound ( $coListe ) - 1 ] = $compte
	GUIDelete ( $fenBase )
	Fenetre ( ( UBound ( $aLog ) - 1 ) / $NbLignes, 200 + 200 * ( $multi = 1 ) )
EndFunc

Func	FRetire ()
	$n = 0
	While	$n < UBound ( $CcoListe )
		If	GUICtrlRead ( $CcoListe [ $n ] ) = $GUI_CHECKED	Then
			$q = $n
			While	$q < UBound ( $CcoListe ) - 1
				$coListe [ $q ] = $coListe [ $q + 1 ]
				$CcoListe [ $q ] = $CcoListe [ $q + 1 ]
				$q += 1
			WEnd
			ReDim	$coListe [ UBound ( $coListe) - 1 ]
			ReDim	$CcoListe [ UBound ( $CcoListe ) - 1 ]
			$n -= 1
		EndIf
		$n += 1
	WEnd
	GUIDelete ( $fenBase )
	Fenetre ( ( UBound ( $aLog ) - 1 ) / $NbLignes, 200 + 200 * ( $multi = 1 ) )
EndFunc

Func	FHaut ()
	$n = 1
	While	$n < UBound ( $CcoListe )
		If	GUICtrlRead ( $CcoListe [ $n ] ) = $GUI_CHECKED	Then
			$z = $CcoListe [ $n ]
			$CcoListe [ $n ] = $CcoListe [ $n - 1 ]
			$CcoListe [ $n - 1 ] = $z
			$z = $coListe [ $n ]
			$coListe [ $n ] = $coListe [ $n - 1 ]
			$coListe [ $n - 1 ] = $z
		EndIf
		$n += 1
	WEnd
	GUIDelete ( $fenBase )
	Fenetre ( ( UBound ( $aLog ) - 1 ) / $NbLignes, 200 + 200 * ( $multi = 1 ) )
EndFunc

Func	FBas ()
	$n = UBound ( $CcoListe ) - 2
	While	$n >= 0
		If	GUICtrlRead ( $CcoListe [ $n ] ) = $GUI_CHECKED	Then
			$z = $CcoListe [ $n ]
			$CcoListe [ $n ] = $CcoListe [ $n + 1 ]
			$CcoListe [ $n + 1 ] = $z
			$z = $coListe [ $n ]
			$coListe [ $n ] = $coListe [ $n + 1 ]
			$coListe [ $n + 1 ] = $z
		EndIf
		$n -= 1
	WEnd
	GUIDelete ( $fenBase )
	Fenetre ( ( UBound ( $aLog ) - 1 ) / $NbLignes, 200 + 200 * ( $multi = 1 ) )
EndFunc

Func	FLancer ( $finir = $GUI_UNCHECKED, $compteBis = $compte )
	DesAct ( 1 )
	$compteBis = ( $compteBis - 1 ) * $NbLignes + 1
;~ 	If	StringInStr ( $aLog [ $compteBis +1 ], "[TAB}" ) = 0	Then	Return	;vérif alakon, à faire pour la prochaine version ^^
	Local	$Clef = InputBox ( @ScriptName & " - Code du compte " & $aLog [ $compteBis ], "Veuillez entrer la clef de " & $aLog [ $compteBis ] & " :", "", "°" )
	If	@error = 1	Then
		DesAct ()
		Return
	EndIf
	Local	$NDCMDP = StringSplit ( $aLog [ $compteBis + 1 ], "{TAB}", 1 )

	If	$Clef <> ""	Then
		$NDCMDP [ 1 ] = _StringEncrypt ( 0, $NDCMDP [ 1 ], $Clef )
		$NDCMDP [ 2 ] = _StringEncrypt ( 0, $NDCMDP [ 2 ], $Clef )
	EndIf

	If	MsgBox ( 0x51, @ScriptName, "Lancement de la fenêtre Dofus !" & @CRLF & "Cliquez sur Annuler pour fermer." & @CRLF & "(\__/)" & @CRLF & "( ' . ' )" & @CRLF & '(")_(")', 2 ) <> 2	Then
		ShellExecute ( $prgNom, "", $prgChemin )
		AutoItSetOption ( "WinTitleMatchMode", 3 )
		Do
			Do
				sleep ( 20 )
			Until	MouseGetCursor () = 5
			If	( WinActive ( "Dofus  " )	Or	WinActive ( "Dofus - Opera" )	Or	WinActive ( "Dofus - Windows Internet Explorer" )	Or	WinActive ( "Dofus - Mozilla Firefox" ) )	Then	MouseClick ( "left" )
			Sleep ( 20 )
		Until	WinActive ( "Dofus  " )	Or	WinActive ( "Dofus - Opera" )	Or	WinActive ( "Dofus - Windows Internet Explorer" )	Or	WinActive ( "Dofus - Mozilla Firefox" )
		AutoItSetOption ( "WinTitleMatchMode", 1 )
		WinSetTitle ( "Dofus ", "", "Dofus - " & $aLog [ $compteBis ] )
;~ Send ( "^f" ) ;Mode "plein écran"
		Send ( $NDCMDP [ 1 ], 1 )
		Send ( "{TAB}" )
		Send ( $NDCMDP [ 2 ], 1 )

		Do
			sleep ( 50 )
			$cur = MouseGetPos ()
		Until	( ( MouseGetCursor () = 0 )	And	( PixelGetColor ( $cur [ 0 ], $cur [ 1 ] ) = 0xFF9900 ) )
		MouseClick ( "left" )
	EndIf

	If	$finir = $GUI_CHECKED	Then	Exit ;Bien violent aussi. ^^

	DesAct ()
EndFunc
;==========================Fonctions AutoIt 3 modifiées========================================
Func	_FileWriteToLine2 ( $sFile, $iLine, $sText, $fOverWrite = 0 )
	If	Not	FileExists ( $sFile )	Then	FileWrite ( $sFile, @CRLF )
	
	Local	$filtxt = FileRead ( $sFile, FileGetSize ( $sFile ) )
	$filtxt = StringSplit ( $filtxt, @CRLF, 1 )
	If	$filtxt [ 0 ] < $iLine	Then	ReDim	$filtxt [ $iLine + 1 ]
	
	Local	$fil = FileOpen ( $sFile, 2 ), $i
	For	$i = 1	To	UBound ( $filtxt ) - 1
		If	$i = $iLine	Then
			If	$fOverWrite = 1	Then
				If	$sText <> @CRLF	Then
					If	$i < UBound ( $filtxt, 1 ) - 1	Then
						FileWrite ( $fil, $sText & @CRLF )
					ElseIf	$i = UBound ( $filtxt, 1 ) - 1	Then
						FileWrite ( $fil, $sText ) 
					EndIf
				Else
					If	$i < UBound ( $filtxt, 1 ) - 1	Then
						FileWrite ( $fil, $sText )
					EndIf
				EndIf
			EndIf
			If	$fOverWrite = 0	Then
				If	$i < UBound ( $filtxt, 1 ) - 1	Then
					FileWrite ( $fil, $sText & @CRLF )
					FileWrite ( $fil, $filtxt [ $i ] & @CRLF )
				ElseIf	$i = UBound ( $filtxt, 1 ) - 1	Then
					FileWrite ( $fil, $sText & @CRLF )
					FileWrite ( $fil, $filtxt [ $i ] )
				EndIf
			EndIf
		ElseIf	$i < UBound ( $filtxt, 1 ) - 1	Then
			FileWrite ( $fil, $filtxt [ $i ] & @CRLF )
		ElseIf	$i = UBound ( $filtxt, 1 ) - 1	Then
			FileWrite ( $fil, $filtxt [ $i ] )
		EndIf
	Next
	FileClose ( $fil )
	Return	1
EndFunc ;==>_FileWriteToLine2

Func _FileWriteFromArray2 ( $File, $a_Array, $i_Base = 0, $i_UBound = -1 )
	; Open output file for overwrite by default, or use input file handle if passed
	Local	$hFile, $x
	If	IsString ( $File )	Then
		$hFile = FileOpen ( $File, 2 )
	Else
		$hFile = $File
	EndIf
	If	$hFile = -1	Then	Return	SetError ( 1, 0, 0 )

	If	$i_UBound < 1	Then	$i_UBound = UBound ( $a_Array )

	; Write array data to file
	$x = $i_Base
	Do
		FileWrite ( $hFile, $a_Array [ $x ] & @CRLF )
		$x += 1
	Until	$x = $i_UBound
	FileWrite ( $hFile, $a_Array [ $i_UBound ] )

	; Close file only if specified by a string path
	If	IsString ( $File )	Then	FileClose ( $hFile )
EndFunc   ;==>_FileWriteFromArray2

Func	_FileReadToArray2 ( $sFilePath, ByRef	$aArray )
	Local	$hFile
	$hFile = FileOpen ( $sFilePath, 0 )
	If	$hFile = -1	Then
		SetError ( 1 )
		Return	0
	EndIf
	$aArray = StringSplit ( StringStripCR ( FileRead ( $hFile, FileGetSize ( $sFilePath ) ) ), @CRLF )
	FileClose ( $hFile )
	Return	1
EndFunc ;==>_FileReadToArray2
Je précise, au cas où : cette version bêta contient le même niveau de sécurité que la 1_8 (même un-peu plus). Elle diffère de la future 1_9 par le fait que y'a des bugs dedans. Ils ne compromettent pas la sécurité, mais juste "l'expérience utilisateur".
Cette version n'est là qu'à des fins de tests et de retours de votre part, et a donc besoin de vous pour la faire avancer !
En revanche, vous pouvez librement l'utiliser comme la version 1_8 actuelle sans soucis, il n'y a que les "nouveautés" (la multi-connexion, le login depuis une page "Dofus.html") qui sont instables ou inexistants. (Mais à tester avec la bêta3.)

Dofusément,

Za.
P.S : j'en profite pour dire qu'effectivement (j'y faisais pas gaffe), c'est reloud d'avoir à re-sélectionner le fichier de logs à chaque lancement du script.
Je bosse dessus, au même titre que les skins, en attendant vos retours sur mes boutons ! ^^
La version 1_9 est arrivée !
La nouvelle version 1_9 (pas la bêta ^^) est disponible !
Version compilée : DofusLog-v1_9.exe - 262.69 KB.
Version script : DofusLog-v1_9.au3 - 17.83 KB.
Version source directe : (la plus sûre)
Code:
#include <GUIConstants.au3> ;Nécessaire surtout pour le $GUI_EVENT_CLOSE
#include <String.au3> ;Pour l'encryptage
Global	$fichier, $prgChemin, $prgNom, $FenBase, $Label, $CFini, $fin, $Lancer, $Multico, $multi = 0, $Modifier, $Nouveau, $Supprimer, $Ajoute, $Retire, $Haut, $Bas, $Boutons, $Options, $OLancer, $OModifier, $ONouveau, $OSupprimer,  $Fichiers, $FNouv, $FCharge, $FQuit, $aLog, $coListe, $CcoListe, $Radio
Global	$logChemin = @scriptdir & "\Log.txt"
Global	$NbLignes = 2 ;Nombre de lignes utilisées par entrée dans le fichier de Log
Global	$compte = 1
Global	$Separ = 2 ;Séparateur, hauteur en pixels entre deux lignes
Global	$Hligne = 13 ;hauteur présumée par ligne ( 13 pixels de haut )
Global	$Ht = $Separ + 2 * $Hligne
Global	$msg
Dim	$aLog [ 3 ]
Dim	$coListe [ 1 ]
Dim	$Ccoliste [ UBound ( $coListe ) ]
Charge ()

While	1
	$msg = GUIGetMsg ()
	Switch	$msg
		Case	0
			ContinueLoop
		Case	$GUI_EVENT_CLOSE, $FQuit
			GUIDelete ( $FenBase )
			Exit
		Case	$Radio [ 1 ]	To	$Radio [ UBound ( $Radio ) - 1 ]
			$compte = FRadio ( $msg, $compte )
		Case	$Lancer, $OLancer
			If	$multi = 1	Then
				For	$n = 0	To	UBound ( $coListe ) - 1
					FLancer ( $fin, $coListe [ $n ] )
				Next
			Else
				FLancer ( $fin, $compte )
			EndIf
		Case	$Multico
			FMultico ()
		Case	$Modifier, $OModifier
			FModifier ()
		Case	$Nouveau, $ONouveau
			FNouveau ()
		Case	$Supprimer, $OSupprimer
			FSupprimer ()
		Case	$CFini	;Bouton fermer après la connec
			$fin = GUICtrlRead ( $CFini )
		Case	$Ajoute
			FAjoute ()
		Case	$Retire
			FRetire ()
		Case	$Haut
			FHaut ()
		Case	$Bas
			FBas ()
		Case	$FNouv, $FCharge
			GUIDelete ( $fenBase )
			Charge (1)
	EndSwitch
WEnd
;==============================Fonctions totalement créées par Za====================================
Func	Charge ($nouv = 0)
	If	Not	FileExists ( $logChemin )	Or	$nouv <> 0	Then
		$fichier = FileOpenDialog ( @ScriptName & " - Sélectionnez ou créez un fichier contenant vos logs", $logChemin, "Text files (*.txt)|All files (*.*)", 8, "" )
		If	$fichier = ""	Then	Exit	;Ok, c'est violent, mais bon.. ^^
		TrayTip ( @scriptname, "Enregistrement de la place du Log en cours", 1 )
		_FileWriteToLine2 ( @ScriptFullPath, 4,'Global	$logChemin = "' & $fichier & '"', 1 )
		TrayTip ( "", "", 0 )
	Else
		$fichier = $logChemin
	EndIf
	$existe = _FileReadToArray2 ( $fichier, $aLog )
	;$prgChemin et $prgNom n'ont rien à faire ici, normalement. Sauf à associer les logs avec une application.
	$prgChemin = RegRead ( "HKEY_LOCAL_MACHINE\SOFTWARE\Ankama\Dofus", "Path" ) & "\"
	$prgNom = "Dofus.exe"
	If	Not	FileExists ( $prgChemin & $prgNom )	Then
		If	Not	FileExists ( $prgChemin & "Dofus_client.exe" )	Then
			$prgNom = FileOpenDialog ( @ScriptName & " - Sélectionnez votre lanceur jeu Dofus", $prgChemin, "(*.exe; *.html)|Tous (*.*)", 1, "Dofus" )
		Else
			$prgNom = "Dofus_client.exe"
		EndIf
	EndIf

	If	Not	$existe	Then
		Modifier ( 1, $fichier )
	EndIf
	_FileReadToArray2 ( $fichier, $aLog )
	Dim	$Radio [ ( UBound ( $aLog ) + 1 ) / $NbLignes ]
	Fenetre ()
EndFunc

Func	Fenetre ()
	GUIDelete ( $fenBase )
	Local	$tFen = ( ( UBound ( $aLog ) - 1 ) / $NbLignes )
	Local	$lFen = ( 200 + 200 * ( $multi = 1 ) )
	$FenBase = GUICreate ( @ScriptName, $lFen, 19 + 50 + $tFen * $Ht + 30, -1, -1, 0x70000 )
	$Label = GUICtrlCreateLabel ( "Choisissez un compte à Logger :", 1, 0, -1, -1 )
	$Boutons = GUIStartGroup ( $FenBase )	;Séparation des groupes, en préparation ! -utile pour la boucle de focus
	$Lancer = GUICtrlCreateButton ( "Lancer !", 150, $Ht / 2 + $Ht / 2 * $tFen , 47, 25 )
	GUICtrlSetResizing ( $Lancer, 4 + 768 )
	If	( UBound ( $aLog ) ) / $NbLignes > 2	Then
		$Multico = GUICtrlCreateCheckbox ( "Multi", 150, ( $Ht - 3 ) + $Ht / 2 * ( $tFen + 1 ), -1, ( $Ht - 10 ) )
		GUICtrlSetResizing ( $Multico, 4 + 768 )
		GUICtrlSetState ( $Multico, $multi )
	EndIf
	If	$multi = 1	Then
		$Ajoute = GUICtrlCreateButton ( "Ajouter ->", 255, 0 )
		For	$compteBis = 0	To	UBound ( $coListe ) - 1
			$CcoListe [ $compteBis ] = GUICtrlCreateCheckbox ( $aLog [ $coListe [ $compteBis ] * $NbLignes - 1 ], 255, 27 + $compteBis * $Ht)
		Next
		$Retire = GUICtrlCreateButton ( "<- Retirer", 275, 27 + UBound ( $coListe ) * $Ht )
		$Haut = GUICtrlCreateButton ( "Monte", 205, $Ht / 2 + $Ht * ( UBound ( $CcoListe ) - 1 ) / 2, 40 )
		$Bas = GUICtrlCreateButton ( "Baisse", 205, ( $Ht - 3 ) + $Ht / 2 + $Ht * ( UBound ( $CcoListe ) - 1 ) / 2, 40 )
	EndIf
	$Modifier = GUICtrlCreateButton ( "Modifier", 150, 33 + $tFen * $Ht, 47, 25, 0x8000 )
	GUICtrlSetResizing ( $Modifier, 4 + 64 + 768 )
	$Nouveau = GUICtrlCreateButton ( "Nouveau", 1, 33 + $tFen * $Ht, -1, 25, 0x8000 )
	GUICtrlSetResizing ( $Nouveau, 2 + 64 + 768 )
	$Supprimer = GUICTRLCreateButton ( "Supprimer", 75, 33 + $tFen * $Ht, -1, 25, 0x8000 )
	GUICtrlSetResizing ( $Supprimer, 8 + 64 + 768 )
	$CFini = GUICtrlCreateCheckbox ( "Fermer le script après ce compte", 15, 11 )
	GUICtrlSetResizing ( $CFini, 2 + 32 + 768 )
	GUICtrlSetState ( $CFini, $fin )

	$Fichiers = GUICtrlCreateMenu ( "Fichier", -1, 0 )
	$FNouv = GUICtrlCreateMenuItem ( "Nouveau", $Fichiers, 0 )
	$FCharge = GUICtrlCreateMenuItem ( "Charger", $Fichiers, 1 )
	$FLigneVide = GUICtrlCreateMenuItem ( "", $Fichiers, 2 )
	$FQuit = GUICtrlCreateMenuItem ( "Quitter", $Fichiers, 3 )
	$Options = GUICtrlCreateMenu ( "Options", -1, 1 )
	$OLancer = GUICtrlCreateMenuItem ( "Lancer !", $Options, 0 )
	$ONouveau = GUICtrlCreateMenuItem ( "Nouveau", $Options, 1 )
	$OModifier = GUICtrlCreateMenuItem ( "Modifier", $Options, 2 )
	$OSupprimer = GUICtrlCreateMenuItem ( "Supprimer", $Options, 3 )

	$compteBis = 1
	While	$compteBis < ( UBound ( $aLog ) ) / $NbLignes
		$Radio [ $compteBis ] = GUICtrlCreateRadio ( $aLog [ ( $compteBis ) * $NbLignes - 1 ] & " .", 5, 27 + ( ( $compteBis - 1 ) * $Ht ), 135 - 136, $Ht - 3, 0x2000 )
		GUICtrlSetData ( $Radio [ $compteBis ], $aLog [ ( $compteBis ) * $NbLignes - 1 ] )
		GUICtrlSetResizing ( $Radio [ $compteBis ], 2 + 32 + 512 )
		$compteBis += 1
	WEnd
	GUICtrlSetState ( $Radio [ $compte ], 1 + 256 )
	GUICtrlSetPos ( $Radio [ $compte ], 15, 30 + ( $compte - 1 ) * $Ht )

	GUISetState ()
	DesAct ()
EndFunc

Func	DesAct ( $DesActive = 0 )	;Réactive les boutons par défaut
	If	$DesActive = 1	Then
		GUICtrlSetState ( $Lancer, $GUI_DISABLE )
		GUICtrlSetState ( $Modifier, $GUI_DISABLE )
		GUICtrlSetState ( $Nouveau, $GUI_DISABLE )
		GUICtrlSetState ( $Supprimer, $GUI_DISABLE )
		GUICtrlSetState ( $Options, $GUI_DISABLE )
		GUICtrlSetState ( $Fichiers, $GUI_DISABLE )
	Else
		GUICtrlSetState ( $Lancer, $GUI_ENABLE )
		GUICtrlSetState ( $Modifier, $GUI_ENABLE )
		GUICtrlSetState ( $Nouveau, $GUI_ENABLE )
		GUICtrlSetState ( $Supprimer, $GUI_ENABLE )
		GUICtrlSetState ( $Options, $GUI_ENABLE )
		GUICtrlSetState ( $Fichiers, $GUI_ENABLE )
	EndIf
	If	( UBound ( $aLog ) - 1 ) / $NbLignes < 2	Then
		GUICtrlSetState ( $Supprimer, $GUI_DISABLE )
		GUICtrlSetState ( $OSupprimer, $GUI_DISABLE )
	EndIf
EndFunc

Func	FSupprimer ()
	If	MsgBox ( 0x51, @ScriptName & " - Suppression", "Souhaitez-vous vraiment détruire cette entrée ?" ) = 2	Then	Return
	DesAct ( 1 )
	$ligne = $compte * $NbLignes + 1
	While	$ligne < UBound ( $aLog )
		$aLog [ $ligne - $NbLignes ] = $aLog [ $ligne ]
		$ligne += 1
	WEnd
	ReDim	$aLog [ UBound ( $aLog ) - $NbLignes ]
	ReDim	$Radio [ UBound ( $Radio ) - 1 ]
	If	$compte > ( UBound ( $aLog ) - 1 ) / $NbLignes	Then	$compte -= 1
	_FileWriteFromArray2 ( $fichier, $aLog, 1, UBound ( $aLog ) - 1 )
	$multi = 0
	Fenetre ()
EndFunc

Func	FModifier ()
	DesAct ( 1 )
	If	Modifier ( $compte, $fichier )	Then
		Fenetre ()
	Else
		Desact ()
	EndIf
EndFunc

Func	FNouveau ()
	DesAct ( 1 )
	ReDim	$aLog [ UBound ( $aLog ) + $NbLignes ]
	ReDim	$Radio [ UBound ( $Radio ) + 1 ]
	If	Modifier ( ( ( UBound ( $aLog ) - 1 ) / $NbLignes ) , $fichier )	Then
		Fenetre ()
	Else
		ReDim	$aLog [ UBound ( $aLog ) - $NbLignes ]
		ReDim	$Radio [ UBound ( $Radio ) - 1 ]
	EndIf
	DesAct ()
EndFunc

Func	Modifier ( $compteBis, $fich )
	$compteBis = $NbLignes * ( $compteBis - 1 ) + 1
	Local	$FenMod = GUICreate ( @ScriptName, 200, $HLigne * 12 )
	Local	$LabelSurnom = GUICtrlCreateLabel ( "Veuillez entrer un" & @CRLF & " pseudonyme :", 0, 0 )
	Local	$LabelClef = GUICtrlCreateLabel ( @CRLF & "Clef de cyptage :", 120, 0 )
	Local	$LabelNDC = GUICtrlCreateLabel ( "Veuillez entrer le nom du compte Dofus :", 0, $Hligne * 4 )
	Local	$LabelMDP = GUICtrlCreateLabel ( "Veuillez entrer le mot de pass associé :", 0, $Hligne * 7 )
	Local	$InputPseudo = GUICtrlCreateInput ( $aLog [ $compteBis ] , 2, $Hligne * 2, 125 )
	Local	$InputClef = GUICtrlCreateInput ( "", 149, $Hligne * 2, 50)
	Local	$InputNDC = GUICtrlCreateInput ( "", 2, $Hligne * 5, 196 )
	Local	$InputMDP = GUICtrlCreateInput ( "", 2, $Hligne * 8, 196 )
	Local	$BValide = GUICtrlCreateButton ( "Valider", 2, $Hligne * 10 )
	Local	$BAnnule = GUICtrlCreateButton ( "Annuler", 100, $Hligne * 10 )
	GUISetState ()

	While	1
		$Mmsg = GUIGetMsg ()
		Switch	$Mmsg
			Case	0
				ContinueLoop
			Case	$GUI_EVENT_CLOSE
				GUIDelete ( $FenMod )
				Return 0
			Case	$BAnnule
				GUIDelete ( $FenMod )
				Return 0
			Case	$BValide
				If	MsgBox ( 0x51, @ScriptName & " - Modifications", "Attention, vous vous apprêtez à" & @CRLF & "modifier définitivement ces données." & @CRLF & "Êtes-vous sûr ?") = 2	Then	Return 0
				If	GUICtrlRead ( $InputPseudo ) <> ""	Then
					$aLog [ $compteBis ] = GUICtrlRead ( $InputPseudo, 0 )
					_FileWriteToLine2 ( $fichier, $compteBis, $aLog [ $compteBis ], 1 )
					If	GUICtrlRead ( $InputNDC ) <> ""	and	GUICtrlRead ( $InputMDP ) <> ""	Then
						If	GUICtrlRead ( $InputClef ) = ""	Then
							$aLog [ $compteBis + 1 ] = GUICtrlRead ( $InputNDC ) & "{TAB}" & GUICtrlRead ( $InputMDP )
						Else
							$aLog [ $compteBis + 1 ] = _StringEncrypt ( 1, GUICtrlRead ( $InputNDC ), GUICtrlRead ( $InputClef ) ) & "{TAB}" & _StringEncrypt ( 1, GUICtrlRead ( $InputMDP ), GUICtrlRead ( $InputClef ) )
						EndIf
						_FileWriteToLine2 ( $fichier, $compteBis + 1, $aLog [ $compteBis + 1], 1 )
					EndIf
				EndIf
				GUIDelete ( $FenMod )
				Return 1
		EndSwitch
	WEnd
EndFunc

Func	FRadio ( $mess, $compteBis )
	If	$mess <> $Radio [ $compteBis ]	Then
		GUICtrlSetPos ( $Radio [ $compteBis ], 5, 27 + ( ( $compteBis - 1 ) * $Ht ) )
		While	$mess <> $Radio [ $compteBis ]
			$compteBis += 1
			If	$compteBis > ( UBound ( $Radio ) - 1 )	Then
				$compteBis = 1
			EndIf
		WEnd
		GUICtrlSetPos ( $Radio [ $compteBis ], 15, 30 + ( ( $compteBis - 1 ) * $Ht ) )
	Else
		If	$multi = 1	Then
			FAjoute ()
		Else
			FLancer ( $fin, $compteBis )
		EndIf
	EndIf
	Return $compteBis
EndFunc

Func	FMultico ()
	$multi = GUICtrlRead ( $Multico )
	If	$coListe [ 0 ] = ""	Then	$coListe [ 0 ] = $compte
	Fenetre ()
EndFunc

Func	FAjoute ()
	Local	$n
	For	$n = 0	To	UBound ( $coListe ) - 1
		If	$coListe [ $n ] = $compte	Then	Return
	Next
	ReDim	$coListe [ UBound ( $coListe ) + 1 ]
	ReDim	$CcoListe [ UBound ( $CcoListe ) + 1 ]
	$coListe [ UBound ( $coListe ) - 1 ] = $compte
	$CcoListe [ UBound ( $CcoListe ) - 1  ] = GUICtrlCreateCheckbox ( $aLog [ $coListe [ UBound ( $CcoListe ) - 1 ] * $NbLignes - 1 ], 255, 27 + ( UBound ( $CcoListe ) - 1 ) * $Ht)
	GUICtrlSetPos ( $Retire, 275, 27 + UBound ( $coListe ) * $Ht )
	GUICtrlSetPos ( $Haut, 205, $Ht / 2 + $Ht * ( UBound ( $CcoListe ) - 1 ) / 2, 40 )
	GUICtrlSetPos ( $Bas, 205, ( $Ht - 3 ) + $Ht / 2 + $Ht * ( UBound ( $CcoListe ) - 1 ) / 2, 40 )
EndFunc

Func	FRetire ()
	Local	$n = 0, $q
	While	$n < UBound ( $CcoListe )
		If	GUICtrlRead ( $CcoListe [ $n ] ) = $GUI_CHECKED	Then
			$q = $n
			While	$q < UBound ( $CcoListe ) - 1
				$coListe [ $q ] = $coListe [ $q + 1 ]
				GUICtrlSetState ( $CcoListe [ $q ], GUICtrlRead ( $CcoListe [ $q + 1 ] ) )
				GUICtrlSetData ( $CcoListe [ $q ], GUICtrlRead ( $CcoListe [ $q + 1 ], 1 ) )
				$q += 1
			WEnd
			GUICtrlDelete ( $CcoListe [ UBound ( $CcoListe ) - 1 ] )
			If	UBound	( $coListe ) > 1	Then
				ReDim	$coListe [ UBound ( $coListe) - 1 ]
				ReDim	$CcoListe [ UBound ( $CcoListe ) - 1 ]
				GUICtrlSetPos ( $Retire, 275, 27 + UBound ( $coListe ) * $Ht )
				GUICtrlSetPos ( $Haut, 205, $Ht / 2 + $Ht * ( UBound ( $CcoListe ) - 1 ) / 2, 40 )
				GUICtrlSetPos ( $Bas, 205, ( $Ht - 3 ) + $Ht / 2 + $Ht * ( UBound ( $CcoListe ) - 1 ) / 2, 40 )
				$n -= 1
			Else
				$multi = 0
				Fenetre ()
			EndIf
		EndIf
		$n += 1
	WEnd
EndFunc

Func	FHaut ()
	Local	$n = 1, $z, $y
	While	$n < UBound ( $CcoListe )
		If	GUICtrlRead ( $CcoListe [ $n ] ) = $GUI_CHECKED	Then
			$z = GUICtrlRead ( $CcoListe [ $n ] )
			$y = GUICtrlRead ( $CcoListe [ $n ], 1 )
			GUICtrlDelete ( $CcoListe [ $n ] )
			$CcoListe [ $n ] = GUICtrlCreateCheckbox ( GUICtrlRead ( $CcoListe [ $n - 1 ], 1 ), 255, 27 + $n * $Ht )
			GUICtrlSetState ( $CcoListe [ $n ], GUICtrlRead ( $CcoListe [ $n - 1 ] ) )
			GUICtrlDelete ( $CcoListe [ $n - 1 ] )
			$CcoListe [ $n - 1 ] = GUICtrlCreateCheckbox ( $y, 255, 27 + ( $n - 1 ) * $Ht )
			GUICtrlSetState ( $CcoListe [ $n - 1 ], $z )
			$z = $coListe [ $n ]
			$coListe [ $n ] = $coListe [ $n - 1 ]
			$coListe [ $n - 1 ] = $z
		EndIf
		$n = $n + 1
	WEnd
EndFunc

Func	FBas ()
	Local	$n = UBound ( $CcoListe ) - 2, $z
	While	$n >= 0
		If	GUICtrlRead ( $CcoListe [ $n ] ) = $GUI_CHECKED	Then
			$z = GUICtrlRead ( $CcoListe [ $n ] )
			$y = GUICtrlRead ( $CcoListe [ $n ], 1 )
			GUICtrlDelete ( $CcoListe [ $n ] )
			$CcoListe [ $n ] = GUICtrlCreateCheckbox ( GUICtrlRead ( $CcoListe [ $n + 1 ], 1 ), 255, 27 + $n * $Ht )
			GUICtrlSetState ( $CcoListe [ $n ], GUICtrlRead ( $CcoListe [ $n + 1 ] ) )
			GUICtrlDelete ( $CcoListe [ $n + 1 ] )
			$CcoListe [ $n + 1 ] = GUICtrlCreateCheckbox ( $y, 255, 27 + ( $n + 1 ) * $Ht )
			GUICtrlSetState ( $CcoListe [ $n + 1 ], $z )
			$z = $coListe [ $n ]
			$coListe [ $n ] = $coListe [ $n + 1 ]
			$coListe [ $n + 1 ] = $z
		EndIf
		$n = $n - 1
	WEnd
EndFunc

Func	FLancer ( $finir = $GUI_UNCHECKED, $compteBis = $compte )
	DesAct ( 1 )
	$compteBis = ( $compteBis - 1 ) * $NbLignes + 1
	Local	$Clef = InputBox ( @ScriptName & " - Code du compte " & $aLog [ $compteBis ], "Veuillez entrer la clef de " & $aLog [ $compteBis ] & " :", "", "°" )
	If	@error = 1	Then
		DesAct ()
		Return
	EndIf
	Local	$NDCMDP = StringSplit ( $aLog [ $compteBis + 1 ], "{TAB}", 1 )
	If	$Clef <> ""	Then
		$NDCMDP [ 1 ] = _StringEncrypt ( 0, $NDCMDP [ 1 ], $Clef )
		$NDCMDP [ 2 ] = _StringEncrypt ( 0, $NDCMDP [ 2 ], $Clef )
	EndIf
	If	MsgBox ( 0x51, @ScriptName, "Lancement de la fenêtre Dofus !" & @CRLF & "Cliquez sur Annuler pour fermer." & @CRLF & "(\__/)" & @CRLF & "( ' . ' )" & @CRLF & '(")_(")', 2 ) <> 2	Then
		ShellExecute ( $prgNom, "", $prgChemin )
		AutoItSetOption ( "WinTitleMatchMode", 3 )
		Do
			Do
				sleep ( 20 )
			Until	MouseGetCursor () = 5
			If	WinActive ( "Dofus  " )	Or	WinActive ( "Dofus - Opera" )	Or	WinActive ( "Dofus - Windows Internet Explorer" )	Or	WinActive ( "Dofus - Mozilla Firefox" )	Then	MouseClick ( "left" )
			Sleep ( 20 )
		Until	WinActive ( "Dofus  " )	Or	WinActive ( "Dofus - Opera" )	Or	WinActive ( "Dofus - Windows Internet Explorer" )	Or	WinActive ( "Dofus - Mozilla Firefox" )
		AutoItSetOption ( "WinTitleMatchMode", 1 )
		WinSetTitle ( "Dofus", "", "Dofus - " & $aLog [ $compteBis ] )
;~ Send ( "^f" ) ;Mode "plein écran"
		Send ( $NDCMDP [ 1 ], 1 )
		Send ( "{TAB}" )
		Send ( $NDCMDP [ 2 ], 1 )
		Do
			sleep ( 20 )
			$cur = MouseGetPos ()
		Until	( ( MouseGetCursor () = 0 )	And	( PixelGetColor ( $cur [ 0 ], $cur [ 1 ] ) = 0xFF9900 ) )
		MouseClick ( "left" )
	Else
		DesAct ()
		Return
	EndIf
	If	$finir = $GUI_CHECKED	Then	Exit ;Bien violent aussi. ^^
	DesAct ()
EndFunc
;==========================Fonctions AutoIt 3 modifiées========================================
Func	_FileWriteToLine2 ( $sFile, $iLine, $sText, $fOverWrite = 0 )
	If	Not	FileExists ( $sFile )	Then	FileWrite ( $sFile, @CRLF )
	Local	$filtxt = FileRead ( $sFile, FileGetSize ( $sFile ) )
	$filtxt = StringSplit ( $filtxt, @CRLF, 1 )
	If	$filtxt [ 0 ] < $iLine	Then	ReDim	$filtxt [ $iLine + 1 ]
	Local	$fil = FileOpen ( $sFile, 2 ), $i
	For	$i = 1	To	UBound ( $filtxt ) - 1
		If	$i = $iLine	Then
			If	$fOverWrite = 1	Then
				If	$sText <> @CRLF	Then
					If	$i < UBound ( $filtxt, 1 ) - 1	Then
						FileWrite ( $fil, $sText & @CRLF )
					ElseIf	$i = UBound ( $filtxt, 1 ) - 1	Then
						FileWrite ( $fil, $sText ) 
					EndIf
				Else
					If	$i < UBound ( $filtxt, 1 ) - 1	Then
						FileWrite ( $fil, $sText )
					EndIf
				EndIf
			EndIf
			If	$fOverWrite = 0	Then
				If	$i < UBound ( $filtxt, 1 ) - 1	Then
					FileWrite ( $fil, $sText & @CRLF )
					FileWrite ( $fil, $filtxt [ $i ] & @CRLF )
				ElseIf	$i = UBound ( $filtxt, 1 ) - 1	Then
					FileWrite ( $fil, $sText & @CRLF )
					FileWrite ( $fil, $filtxt [ $i ] )
				EndIf
			EndIf
		ElseIf	$i < UBound ( $filtxt, 1 ) - 1	Then
			FileWrite ( $fil, $filtxt [ $i ] & @CRLF )
		ElseIf	$i = UBound ( $filtxt, 1 ) - 1	Then
			FileWrite ( $fil, $filtxt [ $i ] )
		EndIf
	Next
	FileClose ( $fil )
	Return	1
EndFunc ;==>_FileWriteToLine2

Func _FileWriteFromArray2 ( $File, $a_Array, $i_Base = 0, $i_UBound = -1 )
	Local	$hFile, $x
	If	IsString ( $File )	Then
		$hFile = FileOpen ( $File, 2 )
	Else
		$hFile = $File
	EndIf
	If	$hFile = -1	Then	Return	SetError ( 1, 0, 0 )
	If	$i_UBound < 1	Then	$i_UBound = UBound ( $a_Array )
	$x = $i_Base
	Do
		FileWrite ( $hFile, $a_Array [ $x ] & @CRLF )
		$x += 1
	Until	$x = $i_UBound
	FileWrite ( $hFile, $a_Array [ $i_UBound ] )
	If	IsString ( $File )	Then	FileClose ( $hFile )
EndFunc   ;==>_FileWriteFromArray2

Func	_FileReadToArray2 ( $sFilePath, ByRef	$aArray )
	Local	$hFile
	$hFile = FileOpen ( $sFilePath, 0 )
	If	$hFile = -1	Then
		SetError ( 1 )
		Return	0
	EndIf
	$aArray = StringSplit ( StringStripCR ( FileRead ( $hFile, FileGetSize ( $sFilePath ) ) ), @CRLF )
	FileClose ( $hFile )
	Return	1
EndFunc ;==>_FileReadToArray2Ligne 1
(18 259 caractères en 471 lignes.. huhu ^^)

Améliorations : (j'espère penser à tout ^^")
-> Connecter plusieurs comptes à la suite, sans repasser par le script
-> Terminer le script une fois toutes les connexions choisies "validées"
-> Utiliser une version "non-installée" de Dofus est possible (et notamment la version navigateur sous Opéra, Internet Explorer ou Mozilla. n'hésitez pas à me transmettre le nom de votre navigateur pour l'ajouter à la liste. )
-> Correction du bug de suppression
-> Enregistrement de la position du fichier de logs (sauf version exécutable, pour l'instant.. :s Il est quand-même possible [mais c'est beûrk] de placer le fichier "Log.txt" dans le même répertoire que le script ".exe" .)
-> Un petit ajout graphique convivial dans l'apparence. (les skins, pour la prochaine version. ^^)
-> La remise au propre d'un certain nombre de lignes qui en avaient besoin
-> Améliorations sur le fonctionnement de certains boutons (annuler une clef ne fait plus tenter de lancer le compte, et annuler le lancement du Client fait revenir au script)
Il me semble avoir fini la liste des nouveautés.

Bugs connus, remarques : (Il me semble avoir corrigé tous les autres bugs, n'hésitez pas à les signaler si vous en voyez !)
-> Supprimer une ligne de compte en ayant la multi-connexion active est possible, mais si la ligne supprimée était présente dans la liste des comptes prévus à connecter, le script plante.
-> Les Skins arrivent pour la 1_9b (bis), désolée pour l'attente !
-> @Elideskadesri [Jiva] : le bouton "Ajouter ->" n'a pas encore changé de place, ça viendra dans la 1_9b.

Si vous avez des choses à rajouter, des infos à transmettre ou des idées (de préférence "fun" n_n), n'hésitez pas à le dire !

Dofusément,

Za.
Fil fermé

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés