|
|
[Wiki] DofusLog, script pour le login/pass [Windows only]
|
|
|
Pour répondre exactement à ta demande, Shugah, il y a les raccourcis dans les options.
Option -> Raccourcis -> Nouveau (dans le script.)
La 3ème ligne (seule à modifier, théoriquement) indique le n° des comptes à connecter (à séparer par une simple virgule, sans espace), par défaut le compte actuellement sélectionné.
En appuyant sur "Valider", tu indiques l'emplacement de création (ex : le bureau) et le nom du raccourci (ex : "Compte L33t-LeIoP").
Après, un double-clic sur le raccourcis :
-> demande directement la clef du compte choisit
-> lance le Client
-> se ferme une fois la fin des comptes souhaités atteinte.
(description complète : en fait le script se lance, sélectionne le n° de compte du raccourci, effectue comme un appui sur "Lancer", demande la clef, lance le Client si ça n'a pas été annulé, attend que la souris soit passée sur "OK", répète les actions pour chaque compte dans le raccourcis jusqu'à finir la liste, puis se ferme arrivé à la fin.)
Je pense que c'est ça que tu voulais ?
Pour la clef de cryptage vierge, il suffit de valider par entrée la clef vide : c'est le seul raccourcis que je permets pour les flemmards de mon style gens qui ne souhaitent pas chiffrer leurs identifiants.
Sans développer, je ne tiens pas à augmenter le confort d'utilisation au détriment de la sécurité.
Pour ce qui est de chiffrer le log entier, ça doit être possible.
Après une demi-seconde de réflexion : il faudrait avoir une clef globale d'accès au fichier, qui brouillerait tout le contenu de celui-ci.
Une fois cette clef passée, on reprend le système habituel du script..
Donc oui, il est possible de chiffrer aussi le fichier de logs entier.
Tenez-vous vraiment à avoir ce niveau de sécurité supplémentaire ?
(Je peux l'implanter si des gens me le demandent. Mais ça nécessite de passer du temps dessus. Temps qui n'est pas employé à développer le reste/faire autre-chose IRL à côté.  )
Remarque : ça me fait un challenge de plus à réaliser.. Ca pourrait être marrant !
Juste en passant, vous pouvez (et je le conseille) stocker le script et le fichier de logs dans un emplacement strictement personnel (une clef USB), ce qui vous permet d'utiliser le DofusLog même en déplacement. ^^
Le DofusLog, pour qui ?
-> Avec le chiffrement (oui, on m'a fait la remarque que c'était "chiffrement" pour les puristes, et non "cryptage". ^^), j'assure autant que possible de garantir la sécurité des informations
-> Avec la multi-connexion, mon script est résolument tourné vers les possibilités de multi
-> Avec les raccourcis, j'ai entamé une simplification du fonctionnement
-> Avec les skins, j'essaie d'améliorer le visuel
Pour tous, et par vous !
(M'enfin, pour mon propre confort en premier, évidemment !  )
Za.
|
16/03/2009, 18h09
|
|
|
|
Les raccourcis ça avance?
|
20/03/2009, 23h12
|
|
|
|
Pas grand-chose à prévoir pour le moment sur les fonctionnalités pures.
Juste quelques améliorations à prévoir pour rendre l'interface notamment plus conviviale (dixit "moins moche"  ), mais je travaille sur le skinnage.
J'ai vraiment avancé ! (Sisi, j'ai trouvé un moyen de rokser tout.)
Le problème que je rencontre actuellement, c'est que des "objets" (les boutons, les zones de textes, les menus..) ne se chargent pas bien, pas à leur place, pas comme il faut, ou pas du tout.
Voici pour le funne le code actuel, qui est très légèrement à revoir :
( $l, c'est la ligne de SkinDB.txt qui contient la fenêtre à charger, $g c'est une variable temporaire pour éviter de perdre $l, et $Skin, c'est le chargement dans le script de SkinDB.txt.
$t est plus complexe à décrire : c'est le conteneur de l'objet créé. ~ Une sorte de "Pages jaunes" dynamique, on va dire.)
Code:
For $g = $l To UBound ($Skin) - 1
$t = StringRight ($Skin[$g], StringLen ($Skin[$g]) - StringInStr ($Skin[$g], " ", 2, -1))
(..Quelques lignes après, je passe sur les détails spécifiques ^^..)
Assign ($t, Skinappel ($Skin[$g]))
Next
En français, ça donne : partir de la ligne demandée (pour charger la fenêtre "Nouveau surnom", on ne recharge pas la fenêtre principale d'abord), puis effectuer toutes les actions nécessaires pour remplir la fenêtre, avec le contenu "intéressant".
Sauf que le contenu intéressant est difficile à dissocier du reste, et parfois y'a des objets assez particuliers qui ont des références bizarroïdes : (3 exemples)
Code:
Multico
Type : Checkbox
contenu1 : "Multi"
posx : 150
posy : $Hligne+$Ht+$Ht/2*$tFen
largeur : -1
hauteur : $Hligne
Resize : 8+768
État : $multi
ListeMulti
Type : Checkbox
contenu1 : $aLog[$coListe[$compteTer]*$NbLignes-1]
posx : 255
posy : 27+$compteTer*$Ht
largeur : -1
Surnoms
Type : Radio
contenu1 : $aLog[$compteBis*$NbLignes-1]&" ."
posx : 5
posy : 27+($compteBis-1)*$Ht
largeur : 135
hauteur : $Ht-3
style : 0x2000
Data : $aLog[$compteBis*$NbLignes-1]
Resize : 2+32+512
Pour le moment, les champs "État", "Data" et "Resize" ne sont pas exploités (ni exploitables), mais j'espère améliorer ma fonction Skinappel() pour qu'elle puisse s'en charger aussi.
(C'est elle qui fait le tri de ce qui est du contenu "destiné à la création pure" (les informations de placement, etc), et le contenu "informatif pour l'utilisateur" ("pox : ", ou "hauteur : ", ou les blancs de début de ligne.).)
J'attend d'avoir débuggué complètement le skinnage pour vous la mettre à disposition. Pour le début de la bêta2, il faudra se charger manuellement du repositionnement des objets. la version 1_10 (complète) ne sortira pas sans un module de création/modification de skins.
Bref, ça avance !
(Franchement, la fonction Assign(), elle rokse !)
Za.
|
20/03/2009, 23h50
|
|
|
|
Voilà, la Bêta2 est disponible !
Pour modifier des bouts de l'apparence, il faut éditer le fichier "SkinDB.txt" (à placer dans le répertoire du script. :s), et seules les positions sont accessibles pour l'instant.
En revanche, c'est un plaisir pour moi d'ajouter des boutons et des éléments un-peu partout : il n'y a que 5~6 lignes à rajouter, et c'est parti !
Module d'édition via le script à rédiger, maintenant.. Le gros bout arrive. Tous aux abris ! ^^
Za.
J'ai rajouté un bouton "annuler" à la création d'un nouveau raccourcis, et je prévois un bouton "Nouveau Raccourcis" directement accessible à côté de la liste des surnoms.
Régression repérée, je corrige ça dans quelques temps : le système de raccourcis ne fonctionne plus avec la 1_10bêta2... Je ne sais pas trop d'où ça peut venir, mais je me penche sur le soucis. / J'ai trouvé d'où ça venait, c'est corrigé. (Le chemin d'accès au Skin qui n'était pas complet, et donc introuvable.)
Et je viens de trouver le moyen de rajouter des modifications sur les boutons (Resize, état, contenu..) depuis le SkinDB, donc il sera possible d'ajouter un bouton désactivé de base.  (Par exemple.)
'me reste à rajouter les lignes correspondant à la souris, à la couleur, à la police de caractère, etc.. Pour terminer sur le module de création/modification des skins.
Pfiou.. bientôt !
|
24/03/2009, 10h49
|
|
|
|
Bonjour ZA, serai ce possible de réecrire une ligne pour qu'au lieu de lancer le client Dofus habituel, l'on puisse choisir l'exellente idée d'herazade présente sur ce topic ?
J'ai fait des essais, j'y arrive pas.
|
28/03/2009, 09h02
|
|
|
|
[Longtemps après] Désolée, réinstallation de Windows..
Passage à Vista 32 -> 64 bits, puis installation de WinLSD, puis installation de WinTux, tout-ça juste pour faire tourner ma carte wi-fi, et récupérer mon accès internet.. Je vous aime, c'est pour vous que j'ai fait tout-ça ! ^^
Oui, il est tout à fait possible de modifier une ligne de mon script pour utiliser le multiplay des EHD.
Dans la fonction Charge (), voici la ligne à modifier (environ la ligne 95 du script) :
Code:
$prgChemin = RegRead ("HKEY_LOCAL_MACHINE\SOFTWARE\Ankama\Dofus", "Path") & "\"
$prgNom = "Dofus.exe"
If Not FileExists ($prgChemin & $prgNom) Then [...]
C'est $prgNom = "Dofus.exe" qui est à modifier pour mettre $prgNom = "EHD_MultiPlay.html", si vous avez bien placé le EHD_Multiplay dans ce répertoire.
Sinon, vous pouvez choisir un sous-répertoire dans le dossier.
Exemple : votre EHD_Multiplay est décompressé dans C:\Program Files\Dofus\Multiplay, la ligne à changer devient
$prgNom = "Multiplay\EHD_Multiplay.html"
À noter que j'ai beau avoir changé 4 fois d'OS cette semaine, aucun ne m'a permise de jouer à Dofus avec un navigateur.
Pour repartir sur la Bêta3 du DofusLog (v1_10), j'ai ajouté de chercher le chemin "C:\Program File\Dofus" si le chemin dans le registre n'est pas trouvé (quand j'ai réinstallé mon PC, Dofus n'avait pas changé de place mais n'était plus dans mon registre. Modification mineure qui tient plus du bonus).
J'ai bientôt fini de ré-écrire toutes les fonctions du script. Dés que ce sera bon, il ne me restera pas grand-chose pour finir la 1_10 !
Allez, courage.
Za.
|
04/04/2009, 12h47
|
|
|
|
Bonjour bonjour, vous l'attendiez (ou pas, depuis le temps  ), mais la version 1_10 se rapproche à grandes enjambées !
Je vous l'avais promise, j'ai mit du temps à la développer, mais j'ai réussit à faire ce que je souhaitais : une apparence par un fichier externe contenant toutes les informations de skin, et qui n'a aucune interaction avec le script. (Donc, on ne peut pas modifier le SkinDB.txt pour faire nawak !)
Concrètement, ça change quoi ?
-> Le script est très allégé côté programmation, car il ne contient plus que les fonctions utiles
-> Le fichier de skin est interactif, donc vous pouvez le modifier à votre guise, tout est accepté. (Vi, tout ! changer les couleurs, les polices, la taille des fenêtres, ajouter des images...)
(Foule en délire : ) Mais.. Ca roxe !
Pas encore tout à fait (d'où le nom de "bêta" qui traîne), il me reste à faire une petite fonction pour que ça soit facile à prendre en main. Une apparence graphique, quand on clique sur un bouton, y'a toutes ses infos qui s'affichent, plus qu'à changer ce qu'on veut. (Et à remettre à jour en temps réel le skin, aussi. Pour le moment, il faut relancer le script pour voir les modifications à l'oeuvre.)
Hey, t'as tout changé ton code ! T'as sûrement planqué un Keylog dedans.
Non, c'est une des choses qui me tient à coeur, c'est le respect de la sécurité.
Le code en lui-même n'a fait que se simplifier.
Chaque bouton cliqué lance maintenant une fonction (vous pouvez voir la correspondance bouton -> fonction dans le fichier de skin) totalement sûre (aucun paramètre ne peut être transmit à une fonction depuis un bouton).
J'ai aussi divisé par 11 (!) la taille de la fonction principale, qui passe de 44 lignes (version 1_9b) à 4 lignes (version 1_10Bêta4b).
Pourquoi ce nom ? Et d'ailleurs, pourquoi "bêta" ?
La version est encore en bêta, car il reste quelques options à modifier. Notamment, la fermeture d'une fenêtre de type "Pop-Up" (modification d'un compte, ou nouveau raccourcis) ferme aussi la fenêtre principale.
Et je suis passée de la 1_10Bêta 2 à la bêta 4 pour vous, vu que je n'étais pas satisfaite de la 3, je l'ai refaite (donc, passée à 4). Ensuite, j'ai modifié un truc de trop, je n'arrivais plus à la faire fonctionner, donc j'ai re-fait la bêta 4 en mieux, d'où le nom de v1_10Bêta4bis.
Ce que vous attendez tous (attention, à partir de maintenant, il faut récupérer le script et le skin, sous peine de ne rien voir s'afficher),
Version du script compilée : DofusLog-v1_10Bêta4b.exe - 305.44 kB
Version du script scriptée : DofusLog-v1_10Bêta4b.au3 - 29.58 kB
Version du script source :
Code:
#include <GUIConstants.au3> ;Nécessaire surtout pour le $GUI_EVENT_CLOSE
#include <String.au3> ;Pour l'encryptage
#include <Array.au3>
AutoItSetOption ("GUIOnEventMode", 1)
Global $fichier, $prgChemin, $prgNom, $FenBase, $Label, $CFini, $fin, $Lancer, $Lance = 0, $Multico, $multi = 0, $Modifier, $Nouveau, $Supprimer, $Ajoute, $Retire, $Haut, $Bas, $Boutons, $Options, $OLog, $LLancer, $LModifier, $LNouveau, $LSupprimer, $Fichiers, $FNouv, $FCharge, $FQuit, $ORaccourcis, $RNouveau, $RModifier, $RCharge, $RSupprime, $OSkin, $SCharger, $SNouveau, $SModifier, $SSauvegarder, $Aide, $ATuto, $aLog, $coListe, $CcoListe, $Radio, $Skin, $suppr = -1
Global $NbLignes = 2 ;Nombre de lignes utilisées par entrée dans le fichier de Log
Global $logChemin = @ScriptDir & "\log.txt"
Global $compte = 1, $compteBis
Dim $coListe[1]
If $CmdLine[0] > 0 Then $logChemin = $CmdLine[1]
If $CmdLine[0] > 1 Then
$coListe = StringSplit ($CmdLine[2], ",")
For $n = 0 To UBound ($coListe) - 2
$coListe[$n] = $coListe[$n+1]
Next
ReDim $coListe[UBound ($coListe) - 1]
$Lance = 1
$fin = $GUI_CHECKED ;Pas obligatoire, en fait, mais préférable, finalement.
EndIf
Global $Separ = 4 ;Séparateur, hauteur en pixels entre deux lignes
Global $Hligne = 13 ;hauteur présumée par ligne (13 pixels de haut, voire 14)
Global $Ht = $Separ + 2 * $Hligne
Global $msg
Dim $aLog[3]
Dim $Ccoliste[UBound ($coListe)]
_FileReadToArray2 (@ScriptDir & "\SkinDB.txt", $Skin) ;rendre modifiable ce chemin
ChargeLog (0)
While 1
Sleep(100)
If $Lance = 1 Then Lance ()
WEnd
;==============================Fonctions totalement créées par Za====================================
Func ChargeLog ($nouv = 1)
If Not FileExists ($logChemin) Or $nouv = 1 Then
TrayTip (@ScriptName, "Veuillez sélectionner un fichier texte.", 0)
$fichier = FileOpenDialog (@ScriptName & " - Sélectionnez ou créez un fichier contenant vos logs", $logChemin, "Text files (*.txt)|All files (*.*)", 8, "Log.txt")
If $fichier = "" Then Exit ;Ok, c'est violent, mais bon.. ^^
TrayTip (@ScriptName, "Enregistrement de la place du Log en cours", 1, 16)
_FileWriteToLine2 (@ScriptFullPath, 12,'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
$prgChemin = "C:\Program Files\Dofus\"
If Not FileExists ($prgChemin & $prgNom) Then
If Not FileExists ($prgChemin & "Dofus_client.exe") Then
$prgNom = FileOpenDialog (@ScriptName & " - Sélectionnez votre lanceur de jeu Dofus", $prgChemin, "(*.exe; *.html)|Tous (*.*)", 1, "Dofus")
Else
$prgNom = "Dofus_client.exe"
EndIf
EndIf
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 ($GUI = "FenBase") ;String
Global $tFen = (UBound ($aLog) - 1) / $NbLignes
Global $lFen = (200 + 200 * ($multi = 1))
If $GUI = "FenBase" Then GUIDelete ($FenBase)
;Appeler la fonction skin : Skinappel($string)
For $l = 1 to UBound ($Skin) - 1
If $Skin[$l] = $GUI Then ExitLoop
Next
For $g = $l To UBound ($Skin) - 1
If (StringLeft ($Skin[$g], 3) = "Fen") And ($g <> $l) Then ExitLoop
If (StringLeft ($Skin[$g], 3) = "Fen") And ($g = $l) Then
$t = $Skin[$g]
Else
$t = StringRight ($Skin[$g], StringLen ($Skin[$g]) - StringInStr ($Skin[$g], " ", 2, -1))
EndIf
If Not (StringInStr ($Skin[$g], ":")) And ($Skin[$g] <> "") Then
Switch $t
Case "Multico"
If UBound ($aLog) / $NbLignes > 2 Then
Assign ($t, Skinappel ($Skin[$g]))
EndIf
Case "Ajoute", "Retire", "Haut", "Bas", "ListeMulti"
If $multi = 1 And $Lance <> 1 Then
If $t = "ListeMulti" Then
If $coListe[0] = "" Then $coListe[0] = $compte
$compteBis = 0
While $compteBis < UBound ($coListe)
$CcoListe[$compteBis] = Skinappel ($Skin[$g])
$compteBis += 1
WEnd
Else
Assign ($t, Skinappel ($Skin[$g]))
EndIf
EndIf
Case "Surnoms"
$compteBis = 1
While $compteBis < (UBound ($aLog)) / $NbLignes
$Radio[$compteBis] = Skinappel ($Skin[$g]) ;+image
;~ GUICtrlSetLimit ($Radio[$compteBis], 12) ;pour limiter la largeur des caractères. (je n'ai pas trouvé comment faire.)
$compteBis += 1
WEnd
GUICtrlSetState ($Radio[$compte], 1 + 256)
GUICtrlSetPos ($Radio[$compte], 15, 30 + ($compte - 1) * $Ht)
$compteBis = $compte
Case Else ;Dans tous les cas "normaux"
Assign ($t, Skinappel ($Skin[$g]))
EndSwitch
EndIf
Next
GUISetOnEvent($GUI_EVENT_CLOSE, "Quit")
GUISetState ()
If $GUI = "FenBase" Then DesAct ()
EndFunc
Func Skinappel ($String)
Local $ligne = 1, $ligneBis
Local $param, $s
Dim $SkinBis[9]
Do
$ligne += 1
Until $Skin[$ligne - 1] = $String
$marqueur = StringInStr ($Skin[$ligne], " ", 2, 1)
$ligneBis = $ligne
While StringInStr ($Skin[$ligneBis], " ", 2, 1) = $marqueur
$param = StringRight (StringRight ($Skin[$ligneBis], StringLen($Skin[$ligneBis]) - StringInStr ($Skin[$ligneBis], " ", 2, -1)), StringLen (StringRight ($Skin[$ligneBis], StringLen($Skin[$ligneBis]) - StringInStr ($Skin[$ligneBis], " ", 2, -1))) - StringInStr (StringRight ($Skin[$ligneBis], StringLen($Skin[$ligneBis]) - StringInStr ($Skin[$ligneBis], " ", 2, -1)), ":") - 1)
If (Execute ($param) <> '') Or ($param = '""') Then $param = Execute ($param)
Switch StringLeft (StringRight ($Skin[$ligneBis], StringLen($Skin[$ligneBis]) - StringInStr ($Skin[$ligneBis], " ", 2, -1)), StringInStr (StringRight ($Skin[$ligneBis], StringLen($Skin[$ligneBis]) - StringInStr ($Skin[$ligneBis], " ", 2, -1)), ":"))
Case "Type :"
$SkinBis[0] = $param ;commande choisie
Case "contenu1 :"
If $param = "$aLog[$compteBis]" Then
$SkinBis[1] = ""
Else
$SkinBis[1] = $param ;valeur affectée
EndIf
Case "largeur :"
If $SkinBis[0] = "Fenêtre" Then
$SkinBis[2] = $param
Else
$SkinBis[4] = $param
EndIf
Case "hauteur :"
If $SkinBis[0] = "Fenêtre" Then
$SkinBis[3] = $param
Else
$SkinBis[5] = $param
EndIf
Case "posx :"
If $SkinBis[0] = "Fenêtre" Then
$SkinBis[4] = $param
Else
$SkinBis[2] = $param
EndIf
Case "posy :"
If $SkinBis[0] = "Fenêtre" Then
$SkinBis[5] = $param
Else
$SkinBis[3] = $param
EndIf
Case "style :"
If $SkinBis[5] = "" Then
If $SkinBis[4] = "" Then $SkinBis[4] = -1
$SkinBis[5] = -1
EndIf
$SkinBis[6] = $param
Case "étendu :"
$SkinBis[7] = $param
Case "parenté :"
If $SkinBis[0] = "Groupe" Then
$SkinBis[1] = $param
ElseIf ($SkinBis[0] = "Menu") Or ($SkinBis[0] = "S-Menu") Then
$SkinBis[2] = $param
Else
$SkinBis[8] = $param
EndIf
Case "Positionnement :"
$SkinBis[3] = $param
EndSwitch
$ligneBis += 1
WEnd
$s = Skin ($SkinBis)
Dim $SkinTer[2]
$ligneBis = $ligne
While StringInStr ($Skin[$ligneBis], " ", 2, 1) = $marqueur
$SkinTer[1] = StringRight (StringRight ($Skin[$ligneBis], StringLen($Skin[$ligneBis]) - StringInStr ($Skin[$ligneBis], " ", 2, -1)), StringLen (StringRight ($Skin[$ligneBis], StringLen($Skin[$ligneBis]) - StringInStr ($Skin[$ligneBis], " ", 2, -1))) - StringInStr (StringRight ($Skin[$ligneBis], StringLen($Skin[$ligneBis]) - StringInStr ($Skin[$ligneBis], " ", 2, -1)), ":") - 1)
If StringInStr ($SkinTer[1], ",") > 0 Then
$SkinTer = StringSplit ($SkinTer[1], ",")
ElseIf (Execute ($SkinTer[1]) <> '') Or ($SkinTer[1] = '""') Then
$SkinTer[1] = Execute ($SkinTer[1])
EndIf
$SkinBis[0] = StringLeft (StringRight ($Skin[$ligneBis], StringLen($Skin[$ligneBis]) - StringInStr ($Skin[$ligneBis], " ", 2, -1)), StringInStr (StringRight ($Skin[$ligneBis], StringLen($Skin[$ligneBis]) - StringInStr ($Skin[$ligneBis], " ", 2, -1)), ":") - 2)
Switch $SkinBis[0]
Case "Curfen"
$SkinBis[1] = $SkinTer[1]
$SkinBis[2] = 0 ;ou 1 pour remplacer constamment le curseur dans la fenêtre ciblée
$SkinBis[3] = $s
Skin($SkinBis)
Case "Fond-F"
$SkinBis[1] = $SkinTer[1]
$SkinBis[2] = $s
Skin ($SkinBis)
Case "Ic-F"
$SkinBis[1] = $SkinTer[1]
$SkinBis[2] = -1 ;(pour l'icône par défaut du fichier ciblé...)
$SkinBis[3] = $s
Skin ($SkinBis)
Case "Police-Fen"
$SkinBis[1] = $SkinTer[1] ;size
$SkinBis[2] = $SkinTer[2] ;weight
$SkinBis[3] = $SkinTer[3] ;attribute
$SkinBis[4] = $SkinTer[4] ;fontname
$SkinBis[5] = $s ;winhandle
Skin ($SkinBis)
Case "OnEvent" ;ne fonctionne pas encore. Snaffou. :(
$SkinBis[1] = $SkinTer[1] ;Event ciblé
$SkinBis[2] = $SkinTer[2] ;fonction associée
$SkinBis[3] = $s
;~ Skin ($SkinBis)
Case "State"
$SkinBis[1] = $SkinTer[1]
$SkinBis[2] = $s
Skin ($SkinBis)
Case "Stylfaen"
$SkinBis[1] = $SkinTer[1]
$SkinBis[2] = $SkinTer[2]
$SkinBis[3] = $s
Skin ($SkinBis)
Case "Coul"
$SkinBis[1] = $s
$SkinBis[2] = $SkinTer[1]
Skin ($SkinBis)
Case "Cur"
$SkinBis[1] = $s
$SkinBis[2] = $SkinTer[1]
Skin ($SkinBis)
Case "D-Coul"
$SkinBis[1] = $SkinTer[1]
$SkinBis[2] = $s
Skin ($SkinBis)
Case "D-Fond-C"
$SkinBis[1] = $SkinTer[1]
$SkinBis[2] = $s
Skin ($SkinBis)
Case "Data"
$SkinBis[1] = $s
$SkinBis[2] = $SkinTer[1]
Skin ($SkinBis)
Case "Etat"
$SkinBis[1] = $s
$SkinBis[2] = $SkinTer[1]
Skin ($SkinBis)
Case "Event"
$SkinBis[1] = $s
$SkinBis[2] = $SkinTer[1]
Skin ($SkinBis)
Case "Fond-C"
$SkinBis[1] = $s
$SkinBis[2] = $SkinTer[1]
Skin ($SkinBis)
Case "Graphip'tit"
$SkinBis[1] = $s
$SkinBis[2] = $SkinTer[1]
For $n = 2 To UBound ($SlinTer) - 1
$SkinBis[$n + 1] = $SkinTer[$n] ;par($n)
Next
Skin ($SkinBis)
Case "Im-C"
$SkinBis[1] = $s
$SkinBis[2] = $SkinTer[1]
$SkinBis[3] = $SkinTer[2] ;icône
$SkinBis[4] = $SkinTer[3] ;type
Skin ($SkinBis)
Case "Police-C"
$SkinBis[1] = $s
$SkinBis[2] = $SkinTer[1] ;size
$SkinBis[3] = $SkinTer[2] ;weight
$SkinBis[4] = $SkinTer[3] ;attribute
$SkinBis[5] = $SkinTer[4] ;fontname
Skin ($SkinBis)
Case "Pos"
$SkinBis[1] = $s
$SkinBis[2] = $SkinTer[1] ;left
$SkinBis[3] = $SkinTer[2] ;top
$SkinBis[4] = $SkinTer[3] ;width
$SkinBis[5] = $SkinTer[4] ;height
Skin ($SkinBis)
Case "Resize"
$SkinBis[1] = $s
$SkinBis[2] = $SkinTer[1]
Skin ($SkinBis)
Case "Restyle"
$SkinBis[1] = $s
$SkinBis[2] = $SkinTer[1]
$SkinBis[3] = $SkinTer[2] ;étendu
Skin ($SkinBis)
Case "Titruc"
$SkinBis[1] = $s
$SkinBis[2] = $SkinTer[1]
$SkinBis[3] = $SkinTer[2] ;titre
$SkinBis[4] = $SkinTer[3] ;icône
$SkinBis[5] = $SkinTer[4] ;options
Skin ($SkinBis)
EndSwitch
$ligneBis += 1
WEnd
Return $s
EndFunc
Func Skin ($Array)
Switch $Array[0]
Case "Curfen"
Return GUISetCursor ($Array[1], $Array[2], $Array[3])
Case "Fenêtre"
Return GUICreate ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
Case "Fond-F"
Return GUISetBkColor ($Array[1], $Array[2])
Case "Groupe"
Return GUIStartGroup ($Array[1])
Case "Ic-F"
Return GUISetIcon ($Array[1], $Array[2], $Array[3])
Case "Police-Fen"
Return GUISetFont ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5])
Case "OnEvent"
Return GUISetOnEvent ($Array[1], $Array[2], $Array[3])
Case "State"
Return GUISetState ($Array[1], $Array[2])
Case "Stylfaen"
Return GUISetStyle ($Array[1], $Array[2], $Array[3])
Case "Avi"
Return GUICtrlCreateAvi ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7], $Array[8])
Case "Bouton"
Return GUICtrlCreateButton ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
Case "Calendrier"
Return GUICtrlCreateMonthCal ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
Case "Checkbox"
Return GUICtrlCreateCheckbox ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
Case "Combo"
Return GUICtrlCreateCombo ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
Case "Dat'action"
Return GUICtrlCreateDate ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
Case "Editeur"
Return GUICtrlCreateEdit ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
Case "Graphisme"
Return GUICtrlCreateGraphic ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5])
Case "Icône"
Return GUICtrlCreateIcon ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7], $Array[8])
Case "Image"
Return GUICtrlCreatePic ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
Case "Input"
Return GUICtrlCreateInput ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
Case "Label"
Return GUICtrlCreateLabel ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
Case "Liste"
Return GUICtrlCreateList ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
Case "Menu"
Return GUICtrlCreateMenu ($Array[1], $Array[2], $Array[3])
Case "MiniMenu"
Return GUICtrlCreateContextMenu ($Array[1])
Case "Radio"
Return GUICtrlCreateRadio ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7])
Case "S-Menu"
Return GUICtrlCreateMenuItem (String ($Array[1]), $Array[2], $Array[3]) ;, $Array[4])
Case "Coul"
Return GUICtrlSetColor ($Array[1], $Array[2])
Case "Cur"
Return GUICtrlSetCursor ($Array[1], $Array[2])
Case "D-Coul"
Return GUICtrlSetDefColor ($Array[1], $Array[2])
Case "D-Fond-C"
Return GUICtrlSetDefBkColor ($Array[1], $Array[2])
Case "Data"
Return GUICtrlSetData ($Array[1], $Array[2])
Case "Etat"
Return GUICtrlSetState ($Array[1], $Array[2])
Case "Event"
Return GUICtrlSetOnEvent ($Array[1], $Array[2])
Case "Fond-C"
Return GUICtrlSetBkColor ($Array[1], $Array[2])
Case "Graphip'tit"
Return GUICtrlSetGraphic ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5], $Array[6], $Array[7], $Array[8])
Case "Im-C"
Return GUICtrlSetImage ($Array[1], $Array[2], $Array[3], $Array[4])
Case "Police-C"
Return GUICtrlSetFont ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5])
Case "Pos"
Return GUICtrlSetPos ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5])
Case "Resize"
Return GUICtrlSetResizing ($Array[1], $Array[2])
Case "Restyle"
Return GUICtrlSetStyle ($Array[1], $Array[2], $Array[3])
Case "Titruc"
Return GUICtrlSetTip ($Array[1], $Array[2], $Array[3], $Array[4], $Array[5])
EndSwitch
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)
GUICtrlSetState ($Aide, $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)
GUICtrlSetState ($Aide, $GUI_ENABLE)
EndIf
EndFunc
Func FSupprimer ()
If MsgBox (0x51, @ScriptName & " - Suppression", "Souhaitez-vous vraiment détruire cette entrée ?") = 2 Then Return
DesAct (1)
TrayTip (@ScriptName, "Effacement en cours...", 10, 16)
$ligne = $compte * $NbLignes + 1
MRetire ($ligne)
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)
TrayTip ("", "", 0)
Fenetre ()
EndFunc
Func FModifier ()
DesAct (1)
Modifier ($compte, $fichier)
EndFunc
Func FNouveau ()
DesAct (1)
ReDim $aLog[UBound ($aLog) + $NbLignes]
ReDim $Radio[UBound ($Radio) + 1]
Modifier ((UBound ($aLog) - 1) / $NbLignes, $fichier)
EndFunc
Func Modifier ($compteBis, $fich)
Global $compteTer = $NbLignes * ($compteBis - 1) + 1
Global $FenMod, $LabelSurnom, $LabelClef, $LabelNDC, $LabelMDP, $InputPseudo, $InputClef, $InputNDC, $InputMDP, $BValide, $BAnnule, $Encrypt = StringSplit ($aLog[$compteTer + 1], "{TAB}")
Fenetre ("FenMod")
EndFunc
Func ModAnnule ()
GUIDelete($FenMod)
Desact ()
EndFunc
Func ModModifier ()
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
If GUICtrlRead ($InputPseudo) <> "" Then
TrayTip (@ScriptName, "Écriture en cours...", 0, 16)
$aLog[$compteTer] = GUICtrlRead ($InputPseudo)
_FileWriteToLine2 ($fichier, $compteTer, $aLog[$compteTer], 1)
If GUICtrlRead ($InputNDC) <> "" Then
If GUICtrlRead ($InputClef) = "" Then
$Encrypt[1] = GUICtrlRead ($InputNDC)
Else
$Encrypt[1] = _StringEncrypt (1, GUICtrlRead ($InputNDC), GUICtrlRead ($InputClef))
EndIf
EndIf
If GUICtrlRead ($InputMDP) <> "" Then
If GUICtrlRead ($InputClef) = "" Then
$Encrypt[UBound ($Encrypt) - 1] = GUICtrlRead ($InputMDP)
Else
$Encrypt[UBound ($Encrypt) - 1] = _StringEncrypt (1, GUICtrlRead ($InputMDP), GUICtrlRead ($InputClef))
EndIf
EndIf
$Encrypt = $Encrypt[1] & "{TAB}" & $Encrypt[UBound ($Encrypt) - 1]
If $Encrypt <> $aLog[$compteTer + 1] Then
$aLog[$compteTer + 1] = $Encrypt
_FileWriteToLine2 ($fichier, $compteTer + 1, $aLog[$compteTer + 1], 1)
EndIf
TrayTip ("", "", 0)
EndIf
GUIDelete ($FenMod)
GUIDelete ($FenBase)
Fenetre ()
EndFunc
Func FRadio ()
Local $mess = @GUI_CtrlId
If $mess <> $Radio[$compte] Then
GUICtrlSetPos ($Radio[$compte], 5, 27 + (($compte - 1) * $Ht))
While $mess <> $Radio[$compte]
$compte += 1
If $compte > (UBound ($Radio) - 1) Then
$compte = 1
EndIf
WEnd
GUICtrlSetPos ($Radio[$compte], 15, 30 + (($compte - 1) * $Ht))
Else
If $multi = 1 Then
MAjoute ()
Else
FLancer ($compte)
If $fin = $GUI_CHECKED Then Exit
EndIf
EndIf
EndFunc
Func FMultico ()
$multi = GUICtrlRead ($Multico)
If $coListe[0] = "" Then $coListe[0] = $compte
Fenetre ()
EndFunc
Func MAjoute ()
Local $n
For $n = 0 To UBound ($coListe) - 1
If $coListe[$n] = $compte Then ContinueLoop 2
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)
Fenetre ("FenBase")
EndFunc
Func MRetire ($suppr = -1)
Local $n = 0, $q
While $n < UBound ($CcoListe)
If $suppr = -1 Then
If GUICtrlRead ($CcoListe[$n]) = $GUI_CHECKED And $suppr = -1 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 + $Ht * (UBound ($CcoListe) - 1) / 2, 40)
GUICtrlSetPos ($Bas, 205, ($Ht - 3) + $Ht + $Ht * (UBound ($CcoListe) - 1) / 2, 40)
$n -= 1
Else
$coListe[0] = ""
$multi = 0
Fenetre ()
EndIf
EndIf
Else
If GUICtrlRead ($CcoListe[$n], 1) = $aLog[$suppr - $NbLignes] 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 + $Ht * (UBound ($CcoListe) - 1) / 2, 40)
GUICtrlSetPos ($Bas, 205, ($Ht - 3) + $Ht + $Ht * (UBound ($CcoListe) - 1) / 2, 40)
$n -= 1
Else
$coListe[0] = ""
$multi = 0
Fenetre ()
EndIf
EndIf
EndIf
$n += 1
WEnd
EndFunc
Func MHaut ()
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 MBas ()
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 RModif ($mod = 0)
Global $n, $r
Global $fenRac, $LabelSansNom, $modRac = 0, $IScript, $BSParc, $LabelSansNom2, $ILog, $BLParc, $LComptes, $LabelSansNom3, $IComptes, $RBValide, $RBAnnule
Fenetre ("FenRac")
EndFunc
Func ParcoureScript ()
$n = FileOpenDialog (@ScriptName & " - Sélectionnez votre script :", @ScriptDir, "Scripts (*.au3 ;*.exe)|Tous (*.*)", 8, @ScriptName)
If $n <> "" Then GUICtrlSetData ($IScript, $n)
EndFunc
Func ParcoureLog ()
$n = FileOpenDialog (@ScriptName & " - Sélectionnez le fichier contenant vos logs :", $logChemin, "Textes (*.txt)|Tous (*.*)", 8, "Log.txt")
If $n <> "" Then GUICtrlSetData ($ILog, $n)
EndFunc
Func RValide ()
$n = FileOpenDialog (@ScriptName & " - Choissez le nom et répertoire du raccourcis :", @ScriptDir, "Raccourcis (*.lnk)", 8, @ScriptName & ".lnk")
If $n = '' Then Return
If StringInStr ($n, ".lnk") = 0 Then $n &= ".lnk"
FileCreateShortcut (GUICtrlRead ($IScript), $n, "", ' "' & GUICtrlRead ($ILog) & '" ' & GUICtrlRead ($IComptes))
GUIDelete ($fenRac)
EndFunc
Func RFinir ()
GUIDelete ($fenRac)
EndFunc
Func RCharge ()
$n = FileOpenDialog (@ScriptName & " - Sélectionnez votre raccourcis :", @ScriptDir, "Raccourcis (*.lnk)", 8, @ScriptName & ".lnk")
If $n = "" Then Return
$r = FileGetShortcut ($n)
$logChemin = StringMid ($r[2], 3, StringInStr ($r[2], '"', 2, 2) - 3)
$coListe = StringSplit (StringMid ($r[2], StringInStr ($r[2], '"', 2, 2) + 2), ",")
For $n = 0 To UBound ($coListe) - 2
$coListe[$n] = $coListe[$n+1]
Next
ReDim $coListe[UBound ($coListe) - 1]
$Lance = 1
GUIDelete ($fenBase)
ChargeLog ()
Return
EndFunc
Func RSuppre ()
$Racc = FileOpenDialog (@ScriptName & " - Sélectionnez votre raccourcis :", @ScriptDir, "Raccourcis (*.lnk)", 8, @ScriptName)
If $Racc <> "" Then FileDelete ($Racc)
EndFunc
Func Lance ()
If $multi = 1 Or $Lance = 1 Then
For $n = 0 To UBound ($coListe) - 1
If $coListe[$n] <= ((UBound ($aLog) - 1) / $NbLignes) And $coListe[$n] > 0 Then FLancer ($coListe[$n])
Next
$Lance = 0
Else
FLancer ($compte)
EndIf
If $fin = $GUI_CHECKED Then Exit
EndFunc
Func FLancer ($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 & Message(), 2) <> 2 Then
TrayTip (@Scriptname, "Lancement de la fenêtre Dofus.", 0)
ShellExecute ($prgNom, "", $prgChemin)
AutoItSetOption ("WinTitleMatchMode", 3)
Do
Sleep (200)
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])
TrayTip ("","",0)
Sleep (1000)
Traytip (@ScriptName, "Veuillez placer votre curseur" & @CRLF & 'sur la zone "Compte Ankama".', 10)
AutoItSetOption ("MouseCoordMode", 0)
$posDof = WinGetClientSize ("Dofus - " & $aLog[$compteBis])
Do
$posCur = MouseGetPos ()
Sleep(20)
Until (MouseGetCursor () = 5) And ($posCur[0] < $posDof[0]) And ($posCur[1] < $posDof[1]) And ($posCur[0] > 0) And ($posCur[1] > 0) And WinActive ("Dofus - " & $aLog[$compteBis])
MouseClick ("left")
;~ Send ("^f") ;Mode "plein écran"
Send ($NDCMDP[1], 1)
Send ("{TAB}")
Send ($NDCMDP[2], 1)
AutoItSetOption ("MouseCoordMode", 1)
TrayTip (@Scriptname, "Veuillez passer votre souris" & @CRLF & 'sur le bouton "OK".', 0)
Do
sleep (20)
$cur = MouseGetPos ()
Until ((MouseGetCursor () = 0) And (PixelGetColor ($cur[0], $cur[1]) = 0xFF9900))
MouseClick ("left")
TrayTip ("", "", 0)
EndIf
DesAct ()
Return
EndFunc
Func Message () ;à inter-agir avec SkinDB.txt, avec la variable MessageFlood
Switch Random (0, 4, 1)
Case 0
Return "(\__/)" & @CRLF & "( ' . ' )" & @CRLF & '(")_(")'
Case 1
Return @CRLF & "Vous pouvez aussi aller jouer dehors," & @CRLF & "avec les papillons, les fleurs et les oiseaux."
Case 2
Return ""
Case 3
Return @CRLF & "Ou patientez 2 secondes," & @CRLF & "que la fenêtre se ferme d'elle-même."
Case 4
Return @CRLF & "La Vie est comme cette boîte de dialogue :" & @CRLF & "C'est quand elle se ferme qu'on arrive à l'essentiel."
EndSwitch
EndFunc
Func Fini ()
$fin = GUICtrlRead ($CFini)
EndFunc
Func Void ()
MsgBox (80, @ScriptName, "L'objet cliqué (" & @GUI_CtrlId & ") n'a pas" & @CRLF & "d'action associée, désolée.")
EndFunc
Func Quit ()
GUIDelete ($fenBase)
Exit
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 ;==>_FileReadToArray2
Version fichier du skin : SkinDB.txt - 10.83 kB
Version texte du skin :
Code:
fenBase
Type : Fenêtre
contenu1 : @ScriptName
largeur : $lFen
hauteur : 19+50+$tFen*$Ht+30
posx : -1
-Police-Fen : ,,,Fixedsys
posy : -1
style : 0x70000
-OnEvent : $GUI_EVENT_CLOSE,Quit
Fichiers
Type : Menu
contenu1 : "Fichier"
parenté : -1
Positionnement : 0
FNouv
Type : S-Menu
contenu1 : "Nouveau"
parenté : $Fichiers
Positionnement : 0
Event : "ChargeLog"
FCharge
Type : S-Menu
contenu1 : "Charger"
parenté : $Fichiers
Positionnement : 1
Event : "ChargeLog"
FLigneVide
Type : S-Menu
contenu1 : ""
parenté : $Fichiers
Positionnement : 2
Event : "Void"
FQuit
Type : S-Menu
contenu1 : "Quitter"
parenté : $Fichiers
Positionnement : 3
Event : "Quit"
Options
Type : Menu
contenu1 : "Options"
parenté : -1
Positionnement : 1
OLog
Type : Menu
contenu1 : "Compte"
parenté : $Options
Positionnement : 0
LLancer
Type : S-Menu
contenu1 : "Lancer !"
parenté : $OLog
Positionnement : 0
Event : "Lance"
LNouveau
Type : S-Menu
contenu1 : "Nouveau"
parenté : $OLog
Positionnement : 1
Event : "FNouveau"
LModifier
Type : S-Menu
contenu1 : "Modifier"
parenté : $OLog
Positionnement : 2
Event : "FModifier"
LSupprimer
Type : S-Menu
contenu1 : "Supprimer"
parenté : $OLog
Positionnement : 3
Event : "FSupprimer"
ORaccourcis
Type : Menu
contenu1 : "Raccourcis"
parenté : $Options
Positionnement : 1
RNouveau
Type : S-Menu
contenu1 : "Nouveau"
parenté : $ORaccourcis
Positionnement : 0
Event : "RModif"
RCharge
Type : S-Menu
contenu1 : "Charger"
parenté : $ORaccourcis
Positionnement : 1
Event : "RCharge"
RModifier
Type : S-Menu
contenu1 : "Modifier"
parenté : $ORaccourcis
Positionnement : 2
Event : "Void"
RSupprime
Type : S-Menu
contenu1 : "Supprimer"
parenté : $ORaccourcis
Positionnement : 3
Event : "RSuppre"
:OSkin
Type : Menu
contenu1 : "Skins"
parenté : $Options
Positionnement : 2
Event : "Void"
SNouveau
Type : S-Menu
contenu1 : "Nouveau"
parenté : $OSkin
Positionnement : 0
Event : "Void"
SSauvegarder
Type : S-Menu
contenu1 : "Sauver"
parenté : $OSkin
Positionnement : 1
Event : "Void"
SModifier
Type : S-Menu
contenu1 : "Modifier"
parenté : $OSkin
Positionnement : 2
Event : "Void"
SCharger
Type : S-Menu
contenu1 : "Charger"
parenté : $OSkin
Positionnement : 3
Event : "Void"
:Aide
Type : Menu
contenu1 : "Aide"
parenté : -1
Positionnement : 3
ATuto
Type : S-Menu
contenu1 : "Tutoriel"
parenté : $Aide
Positionnement : 0
Event : "Void"
Label
Type : Label
contenu1 : "Choisissez un compte à Logger :"
posx : 1
posy : -2
largeur : -1
hauteur : -1
style : -1
étendu : 0
Event : "Void"
Boutons
Type : Groupe
parenté : $fenBase
Lancer
Type : Bouton
contenu1 : "Lancer !"
posx : 150
posy : $Ht/2+$Ht/2*$tFen
largeur : 47
hauteur : 25
Event : "Lance"
Multico
Type : Checkbox
contenu1 : "Multi"
posx : 150
posy : $Hligne+$Ht+$Ht/2*$tFen
largeur : -1
hauteur : $Hligne
Resize : 8+768
Etat : $multi
Event : "FMultico"
Modifier
Type : Bouton
contenu1 : "Modifier"
posx : 150
posy : 33+$tFen*$Ht
largeur : 47
hauteur : 25
style : 0x8000
Resize : 8+64+768
Event : "FModifier"
Nouveau
Type : Bouton
contenu1 : "Nouveau"
posx : 1
posy : 33+$tFen*$Ht
largeur : -1
hauteur : 25
style : 0x8000
Resize : 8+64+768
Event : "FNouveau"
Supprimer
Type : Bouton
contenu1 : "Supprimer"
posx : 75
posy : 33+$tFen*$Ht
largeur : -1
hauteur : 25
style : 0x8000
Resize : 8+64+768
Event : "FSupprimer"
CFini
Type : Checkbox
contenu1 : "Fermer le script après ce compte"
posx : 15
posy : $Hligne
largeur : -1
hauteur : 13
Resize : 2+32+768
Etat : $fin
Event : "Fini"
Ajoute
Type : Bouton
contenu1 : "Ajouter ->"
posx : 275
posy : 0
largeur : -1
hauteur : -1
Event : "MAjoute"
Retire
Type : Bouton
contenu1 : "<- Retirer"
posx : 275
posy : 27+Ubound($coListe)*$Ht
largeur : -1
hauteur : -1
Event : "MRetire"
Haut
Type : Bouton
contenu1 : "Monte"
posx : 205
posy : $Ht+$Ht*(UBound($CcoListe)-1)/2
largeur : 40
hauteur : -1
Event : "MHaut"
Bas
Type : Bouton
contenu1 : "Baisse"
posx : 205
posy : ($Ht-3)+$Ht+$Ht*(UBound($CcoListe)-1)/2
largeur : 40
hauteur : -1
Event : "MBas"
Surnoms
Type : Radio
contenu1 : $aLog[$compteBis*$NbLignes-1]&" ."
posx : 5
posy : 27+($compteBis-1)*$Ht
largeur : 135
hauteur : $Ht-3
style : 0x2000
Data : $aLog[$compteBis*$NbLignes-1]
Resize : 2+32+512
Event : "FRadio"
ListeMulti
Type : Checkbox
contenu1 : $aLog[$coListe[$compteBis] * $NbLignes - 1]
posx : 255
posy : 27+$compteBis * $Ht
FenMod
Type : Fenêtre
contenu1 : @ScriptName & " - ajouter/modifier"
largeur : 200
hauteur : $HLigne*12
posx : -1
posy : -1
style : -1
étendu : -1
-Parenté : $fenBase
-Police-Fen : ,,,Fixedsys
LabelSurnom
Type : Label
contenu1 : "Veuillez entrer un" & @CRLF & " pseudonyme :"
posx : 1
posy : 2
largeur : 100
hauteur : -1
style : -1
étendu : -1
Event : "Void"
LabelClef
Type : Label
contenu1 : @CRLF&"Clef de cryptage :"
posx : 120
posy : 0
largeur : -1
hauteur : -1
style : -1
étendu : -1
Event : "Void"
LabelNDC
Type : Label
contenu1 : "Veuillez entrer le nom de compte Dofus :"
posx : 0
posy : $HLigne*4
largeur : -1
hauteur : -1
style : -1
étendu : -1
Event : "Void"
LabelMDP
Type : Label
contenu1 : "Veuillez entrer le mot de pass associé :"
posx : 0
posy : $HLigne*7
largeur : -1
hauteur : -1
style : -1
étendu : -1
Event : "Void"
InputPseudo
Type : Input
contenu1 : $aLog[$compteTer]
posx : 2
posy : $Hligne*2
largeur : 125
hauteur : -1
style : -1
étendu : -1
InputClef
Type : Input
contenu1 : ""
posx : 149
posy : $Hligne*2
largeur : 50
hauteur : -1
style : -1
étendu : -1
InputNDC
Type : Input
contenu1 : ""
posx : 2
posy : $Hligne*5
largeur : 196
hauteur : -1
style : -1
étendu : -1
InputMDP
Type : Input
contenu1 : ""
posx : 2
posy : $Hligne*8
largeur : 196
hauteur : -1
style : -1
étendu : -1
BValide
Type : Bouton
contenu1 : "Valider"
posx : 2
posy : $Hligne*10
largeur : -1
hauteur : -1
style : -1
étendu : -1
Event : "ModModifier"
BAnnule
Type : Bouton
contenu1 : "Annuler"
posx : 100
posy : $Hligne*10
largeur : -1
hauteur : -1
style : -1
étendu : -1
Event : "ModAnnule"
FenRac
Type : Fenêtre
contenu1 : @ScriptName
largeur : 170
hauteur : 5*$Ht+$Hligne
style : -1
étendu : -1
-parenté : $fenBase
-Police-Fen : ,,,Fixedsys
LabelSansNom
Type : Label
contenu1 : "Sélectionnez le script :"
posx : 0
posy : 0
largeur : -1
hauteur : -1
style : -1
étendu : -1
Event : "Void"
IScript
Type : Input
contenu1 : @ScriptFullPath
-contenu2 : $r[0]
posx : 5
posy : $Hligne
largeur : 100
hauteur : -1
style : -1
étendu : -1
BSParc
Type : Bouton
contenu1 : "Parcourir"
posx : 110
posy : $Hligne
largeur : -1
hauteur : -1
style : -1
étendu : -1
Event : "ParcoureScript"
LabelSansNom2
Type : Label
contenu1 : "Sélectionnez le log :"
posx : 0
posy : $Ht+$Hligne
largeur : -1
hauteur : -1
style : -1
étendu : -1
Event : "Void"
ILog
Type : Input
contenu1 : $logChemin
contenu2 : StringMid($r[2],3,StringInStr($r[2],'"',2,2)-3)
posx : 5
posy : $Ht+2*$Hligne
largeur : 100
hauteur : -1
style : -1
étendu : -1
BLParc
Type : Bouton
contenu1 : "Parcourir"
posx : 110
posy : $Ht+2*$Hligne
largeur : -1
hauteur : -1
style : -1
étendu : -1
Event : "ParcoureLog"
LabelSansNom3
Type : Label
contenu1 : "Entrez les n° des comptes :"
posx : 0
posy : 2*$Ht+2*$Hligne
largeur : -1
hauteur : -1
style : -1
étendu : -1
Event : "Void"
IComptes
Type : Input
contenu1 : $compte
contenu2 : StringMid($r[2],StringInStr($r[2],'"',2,2)+2)
posx : 5
posy : 2*$Ht+3*$Hligne
largeur : 100
hauteur : -1
style : -1
étendu : -1
RBValide
Type : Bouton
contenu1 : "Valider"
posx : 0
posy : 3*$Ht+3*$Hligne
largeur : -1
hauteur : -1
style : -1
étendu : -1
Event : "RValide"
RBAnnule
Type : Bouton
contenu1 : "Annuler"
posx : 110
posy : 3*$Ht+3*$Hligne
largeur : -1
hauteur : -1
style : -1
étendu : -1
Event : "RFinir"
MessageFlood
Type : 5
contenu1 : "(\__/)" & @CRLF & "( ' . ' )" & @CRLF & '(")_(")'
contenu2 : @CRLF & "Vous pouvez aussi aller jouer dehors," & @CRLF & "avec les papillons, les fleurs et les oiseaux."
contenu3 : ""
contenu4 : @CRLF & "Ou patientez 2 secondes," & @CRLF & "que la fenêtre se ferme d'elle-même."
contenu5 : @CRLF & "La Vie est comme cette boîte de dialogue :" & @CRLF & "C'est quand elle se ferme qu'on arrive à l'essentiel."
Fenêtre :
Type : Fenêtre
contenu1 :
contenux :
largeur :
hauteur :
posx :
posy :
style :
étendu :
parenté :
Contrôle :
Type :
contenu1 :
contenux :
posx : -1
posy : -1
largeur : -1
hauteur : -1
style : -1
étendu : -1
Data :
Resize :
Etat :
Menu :
Type :
contenu1 :
contenux :
parenté :
Positionnement :
Etat :
Flood :
Type : Nombre de messages
contenu1 :
contenux :
Global :
Type : $SkinBase[0]
Curfen, Fenêtre, Fond-F, Ic-F, Police-Fen, OnEvent, State, Stylfaen
Avi, Bouton, Calendrier, Checkbox, Combo, Dat'action, Editeur, Graphisme, Groupe, Icône, Image, Input, Label, Liste, Menu, MiniMenu, Radio, S-Menu
Coul, D-Coul, D-Fond-C, Data, Etat, Event, Fond-C, Graphip'tit, Im-C, Police-C, Pos, Resize, Restyle, Titruc
Nombre déterminant de messages floodesques (cas unique) -> Rand (0 à Nombre-1, 1)
[Modificateur de GUI] : Paramètre 1,paramètre 2,..
contenu1 : Lié à conditions $SkinBase[1]
contenu2 : Lié à conditions.. etc $SkinBase[1] (aussi)
posx, posy, largeur, hauteur : Chiffres $SkinBase[2 à 5]
style, étendu : 0xChiffre $SkinBase[6 et 7]
parenté : Chiffre/Nom de variable $SkinBase[8] ou $SkinBase[3] pour un élément de menu
Positionnement : Chiffre $SkinBase[4] spécifique aux menus
À noter que le fichier de skin ne peut s'appeler que "skinDB.txt", et doit être présent dans le même répertoire que le script. (Oui, ça sera bientôt modifié. ^^)
Améliorations depuis la 1_9b :
-> Résolution du bug de suppression d'une entrée dans la liste de Multi
-> Il est maintenant possible de changer de manière indépendante le nom de compte et le mot de pass du compte associé à un surnom. Ca écrase simplement les anciennes informations, et il est conseillé d'utiliser la même Clef pour le Ndc et le Mdp. /!\ Seule la personne qui a entré les infos à l'origine peut savoir si c'est le cas.
-> Les informations de skin sont récupérées depuis un fichier externe (SkinDB.txt), ce qui allège le script et la programmation de celui-ci.
Prévisions météorologiques d'améliorations :
-> Finalisation de la v1_10 en fournissant un module de skinnage à l'utilisateur
-> Meilleure prise en charge de la fermeture des fenêtres du script
-> Mise en relation des phrases de flood (dans la fenêtre "Lancement de la fenêtre Dofus" + message-flood) avec le fichier de skin (pour les changer facilement)
Elles sont déjà présentes dans le-dit fichier, mais ne sont pas utiles pour l'instant.
-> Permettre un chemin (et un nom) variable pour le fichier de skin
En ce qui concerne la suite (vi, je vois loin..), ça vous intéresserait d'avoir ça :
-> Permettre de changer une Clef de cryptage des informations Ndc et Mdp (il serait indispensable de connaître la clef de base pour la changer) ?
-> Un script compilé "clef en main", qui contiendrait directement le fichier de skin basique (pour n'avoir qu'un unique fichier à télécharger) ?
-> Des fonctions aléatoires débiles (type qui réagit à la date : le premier avril, ouvre une pop-up "Poisson d'avril !§§") dans le fichier de skin ? (sans atteinte possible à la sécurité, encore une fois.)
Et tout le reste, auquel vous penserez, et que vous pourriez souhaiter ! (Demandez-moi l'impossible, je pourrai le réaliser. Vive l'informatique !  )
Za.
P.S : Après écriture de mon pavé, je vois que j'ai oublié de donner le mode d'emploi du fichier de Skin.
Donc, ça fonctionne ainsi :
[Nom de variable] c'est la variable qui permet d'interagir avec le contenu. Pas facile à expliquer, mais c'est "l'adresse" de la boîte visée.
(tabulation)[message] : [valeur] la tabulation permet au script de se retrouver dans les opérations, le message sera type de modification à y porter, et la valeur sera la valeur appliquée à la modification.
En fin de fichier, toutes les valeurs utilisables sont renseignées.
En attendant la fonction qui vous permettra de faire ça facilement, je vous renvoie à la doc de Auto-It partie " GuiCtrlCreate[Objet]", pour plus de détails.
Exemple :
Code:
fenBase
Type : Fenêtre
posx : 12
Fera apparaître la fenêtre de base du script au pixel n° 12 (depuis le bord gauche de l'écran, la "position en abscisse").
Les valeurs de "-1" sont un moyen de dire "garder la valeur par défaut".
Dernière modification par Famille Za ; 25/01/2010 à 14h24.
Motif: Edition des liens.
|
16/05/2009, 12h16
|
|
|
|
Hello Dyno / Za !
J'ai testé ton truc, il fonctionne plutôt bien, mais comme l'a fait remarqué Shuggah c'est quand même une belle usine à gaz pour pas grand chose :s Le fait d'obliger a rentrer la clef, à viser soit même la fenêtre, le design un peu chargé (la fenêtre fait tout de suite 4km de long pour une dizaine de comptes), je suis revenu à mon lanceur perso assez rapidement :s
En fait pour le principe de fonctionnement il est parfait tel que tu l'as conçu pour toi, mais tes besoins sont pas trop ceux pour la plupart des joueurs (90% préféreraient avoir un système crypté mais sans avoir à taper un pass à chaque log), et question ergonomie / design, je le trouve un peu trop simpliste, même si derrière tu as un système de skin, ça restera un groupe de radiobox qui prendra une trop grande place si tu as un trop grand nombre de comptes (qui est justement la raison d'être de ton prog, faciliter le multicompte).
Ce message n'est pas un "c'est trop nul trop pourri", juste un ressenti de ma part. Je voulais aussi savoir si tu avais avancé la release 1.10 depuis (dernier message mi-mai).
Tchô !!!
ZDS
|
23/07/2009, 11h31
|
|
|
|
En passant je vous l'annomce ici au cas ou vous n'ayez pas lu mon compte rendu de la table ronde 2.0 de la convention :
Il ne sera pas possible de faire ce genre d'outils en tant que module du client 2.0.
Mais toujours possible via du scripting externe comme c'est le cas actuellement
|
23/07/2009, 11h54
|
|
|
|
Edit @drallieivEHD : Oké, donc je garde mon DofusLog en travaux.
----
Oui, j'ai avancé la prog, mais pour le moment, je l'ai pas mit à disposition.
Ca ressemble à ça, maintenant (chez moi) :

(Y'a des images maintenant, mais ce n'est pas encore bien terminé pour leur affichage.)
J'avoue, je travaille d'abord pour moi, et mes besoins sont très particuliers.
J'aimerais bien dans un futur plus ou moins proche avoir fini mon interface utilisateurs (je m'entraîne sur le "Assistez-Toi !" pour ça, huhu ^^), et permettre une personnalisation totale des commandes.
Pour la suite, j'ai prévu aussi (et ça se rapproche, quand j'ai le temps d'y toucher ^^) de faire la connexion en parallèle des comptes avec la liste multico.
Je vais voir à proposer un système de "clef auto" : rentrer la clef une seule fois, qui sera utilisée pour tous les comptes ensuite... Bref, au lancement du premier compte : "Veuillez entrer la clef .." (etc), et si l'option "clef auto" est enclenchée, les autres comptes seront testés par défaut avec cette clef.
Je ne sais pas si c'est trop embrouillé à expliquer, mais en gros, ça ne change pas le niveau de sécurité, tout en soulageant l'utilisateur.
Bref, je note à ajouter. ^^
Juste pour avoir un aperçu de la version 1_10bêta4d :
Script : DofusLog-v1_10Bêta4d.au3 - 30.92 kB
Skin : SkinDB.txt - 11.15 kB
Et le petit coeur (très important !) : Coeur2.bmp - 303.8 kB
Les 3 fichiers devront être placés de préférence dans le même répertoire (je n'ai pas encore géré le changement de dossier, désolée..  ), et le fonctionnement du script reste inchangé.
Juste pour faire plaisir à ZDS, j'ai ajouté :
Plutôt que de passer la souris sur le bouton orange "OK", le script fait directement un "tab"+"entrée", donc voilà, c'est "mieux".
(Mais j'aime moins. Et vous, vous pensez quoi de cette amélioration ?)
Za.
Dernière modification par Famille Za ; 25/01/2010 à 14h24.
Motif: Edition des liens.
|
23/07/2009, 13h41
|
|
|
|
DofusLog 1_10 est arrivé ! Heureusement que j'avais prévu de finir fin février 2009..
Coucou !
Citation:
Envoyé par Royaume (Raval)
Tu as une date à nous sortir, ou on attend comme pour la 2.0 ? 
2 décembre pour la sortie des Skins sur le DofusLog, ça vous tente ?
En attendant, j'ai revu mon code pour la version 1_10 !
(Liens de téléchargement plus bas, pour les impatients. n_n)
Le DofusLog, c'est quoi ?
Toujours la même chose, un script pour me simplifier la vie, que je vous propose car peut-être que ça peut vous être utile aussi.
Il permet la connexion d'un ou plusieurs comptes au jeu Dofus de manière respectueuse avec le serveur, et simplifiée avec l'utilisateur.
Nan, ma question c'était que ton truc, il est pas légal ?
J'apporte un soin particulier à assurer la sécurité du script, et je vérifie régulièrement les CGU de Dofus. Par ailleurs, je fournis le code source comme seule version officielle, la version scriptée étant une copie parfaite de celui-ci (hébergée chez MegaUploads), alors que la version compilée n'est fournie qu'à titre indicatif (hébergée aussi chez MégaUploads) pour une utilisation autonome sans l'environnement AutoIt3 (disponible là).
J'ajoute une parenthèse pour dire que tout manquement à la sécurité de mon script doit être signalé, pour que je le corrige au plus vite.
Et Linux/MAC, alors ?
Pas de progression de ce côté, je ne peux que vous conseiller un émulateur Windows pour faire tourner le script.
À noter que je me suis penchée rapidement sur la programmation sous environnement (graphique) Ubuntu 8.04c, mais l'API est tellement mal documenté que j'ai laissé tomber. (Avis aux amateurs, si vous avez de la documentation dessus, je suis preneuse.  )
Bon, t'as fini de causer ?
Version compilée : DofusLog-v1_10.exe - 297.79 kB
Version scripte : DofusLog-v1_10.au3 - 24.03 kB
Version source :
Code:
#include <GUIConstants.au3> ;Nécessaire surtout pour le $GUI_EVENT_CLOSE
#include <String.au3> ;Pour l'encryptage
AutoItSetOption ("GUIOnEventMode", 1)
Global $Version = "1_10"
Global $fichier, $prgChemin, $prgNom, $FenBase, $Label, $CFini, $fin, $Lancer, $Lance = 0, $Multico, $multi = 0, $Modifier, $Nouveau, $Supprimer, $Ajoute, $Retire, $Haut, $Bas, $Boutons, $Options, $OLog, $LLancer, $LModifier, $LNouveau, $LSupprimer, $Fichiers, $FNouv, $FCharge, $FQuit, $ORaccourcis, $RNouveau, $RModifier, $RCharge, $RSupprime, $OSkin, $SCharger, $SNouveau, $SModifier, $SSauvegarder, $Aide, $ATuto, $aLog, $coListe, $Avatar, $Radio, $Skin, $suppr = -1
Global $NbLignes = 2 ;Nombre de lignes utilisées par entrée dans le fichier de Log
Global $logChemin = @ScriptDir & "\Log.txt"
Global $compte = 1, $compteBis
Dim $coListe[1]
If $CmdLine[0] > 0 Then $logChemin = $CmdLine[1]
If $CmdLine[0] > 1 Then
$coListe = StringSplit ($CmdLine[2], ",")
For $n = 0 To UBound ($coListe) - 2
$coListe[$n] = $coListe[$n+1]
Next
ReDim $coListe[UBound ($coListe) - 1]
$Lance = 1
$fin = $GUI_CHECKED ;Pas obligatoire, en fait, mais préférable, finalement.
EndIf
Global $Hligne = 16 ;hauteur présumée par ligne (13 pixels de haut, voire 14)
Global $Separ = $Hligne / 2 - 10 ;Séparateur, hauteur en pixels entre deux lignes
Global $Ht = $Separ + 2 * $Hligne
Global $msg
Dim $aLog[3]
_FileReadToArray2 (@ScriptDir & "\SkinDB.txt", $Skin) ;rendre modifiable ce chemin
ChargeLog (0)
While 1
Sleep(100)
If $Lance = 1 Then Lance ()
WEnd
;==============================Fonctions totalement créées par Za====================================
Func Recharge ()
ChargeLog (1)
EndFunc
Func ChargeLog ($nouv = 1)
If Not FileExists ($logChemin) Or $nouv = 1 Then
TrayTip (@ScriptName, "Veuillez sélectionner un fichier texte.", 0)
$fichier = FileOpenDialog (@ScriptName & " - Sélectionnez ou créez un fichier contenant vos logs", $logChemin, "Text files (*.txt)|All files (*.*)", 8, "Log.txt")
If $fichier = "" Then Return
TrayTip (@ScriptName, "Enregistrement de la place du Log en cours", 1, 16)
_FileWriteToLine2 (@ScriptFullPath, 7,'Global $logChemin = "' & $fichier & '"', 1)
TrayTip ("", "", 0)
Else
$fichier = $logChemin
EndIf
$existe = _FileReadToArray2 ($fichier, $aLog)
;$prgChemin et $prgNom n'ont rien à faire ici, normalement. Sauf pour utiliser le DofusLog comme gestionnaire de MDP cross-applications.)
$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
$prgChemin = "C:\Program Files\Dofus"
If Not FileExists ($prgChemin & $prgNom) Then
If Not FileExists ($prgChemin & "Dofus_client.exe") Then
$prgNom = FileOpenDialog (@ScriptName & " - Sélectionnez votre lanceur de jeu Dofus", $prgChemin, "(*.exe; *.html)|Tous (*.*)", 1, "Dofus")
$prgChemin = ""
Else
$prgNom = "Dofus_client.exe"
EndIf
EndIf
Else
$prgNom = "Dofus_client.exe"
EndIf
EndIf
If Not $existe Then
Modifier (1, $fichier)
EndIf
_FileReadToArray2 ($fichier, $aLog)
Dim $Radio[(UBound ($aLog) + 1) / $NbLignes]
Dim $Avatar[(UBound ($aLog) + 1) / $NbLignes]
Fenetre ()
EndFunc
Func Fenetre ($GUI = "FenBase")
Global $tFen = (UBound ($aLog) - 1) / $NbLignes
If $tFen < 2 Then $tFen = 2
Global $lFen = 200
If $GUI = "FenBase" Then
;sauvegarde de la position entre deux redim' à faire
GUIDelete ($FenBase)
$FenBase = GUICreate (@ScriptName, $lFen, 19 + 50 + $tFen * $Ht + 30, -1, -1, 0x70000,0,0)
GUISetOnEvent($GUI_EVENT_CLOSE, "Quit")
$Fichiers = GUICtrlCreateMenu ("Fichier", -1, 0)
$FNouv = GUICtrlCreateMenuItem ("Nouveau", $Fichiers, 0)
GUICtrlSetOnEvent ($FNouv, "Recharge")
$FCharge = GUICtrlCreateMenuItem ("Charger", $Fichiers, 1)
GUICtrlSetOnEvent ($FCharge, "Recharge")
$FLigneVide = GUICtrlCreateMenuItem ("", $Fichiers, 2)
$FQuit = GUICtrlCreateMenuItem ("Quitter", $Fichiers, 3)
GUICtrlSetOnEvent ($FQuit, "Quit")
$Options = GUICtrlCreateMenu ("Options", -1, 1)
$OLog = GUICtrlCreateMenu ("Compte", $Options, 0)
$LLancer = GUICtrlCreateMenuItem ("Lancer !", $OLog, 0)
GUICtrlSetOnEvent ($LLancer, "Lance")
$LNouveau = GUICtrlCreateMenuItem ("Nouveau", $OLog, 1)
GUICtrlSetOnEvent ($LNouveau, "FNouveau")
$LModifier = GUICtrlCreateMenuItem ("Modifier", $OLog, 2)
GUICtrlSetOnEvent ($LModifier, "FModifier")
$LSupprimer = GUICtrlCreateMenuItem ("Supprimer", $OLog, 3)
GUICtrlSetOnEvent ($LSupprimer, "FSupprimer")
$ORaccourcis = GUICtrlCreateMenu ("Raccourcis", $Options, 1)
$RNouveau = GUICtrlCreateMenuItem ("Nouveau", $ORaccourcis, 0)
GUICtrlSetOnEvent ($RNouveau, "RModif")
$RCharge = GUICtrlCreateMenuItem ("Charger", $ORaccourcis, 1)
GUICtrlSetOnEvent ($RCharge, "RCharge")
$RModifier = GUICtrlCreateMenuItem ("Modifier", $ORaccourcis, 2)
$RSupprime = GUICtrlCreateMenuItem ("Supprimer", $ORaccourcis, 3)
GUICtrlSetOnEvent ($RSupprime, "RSuppre")
;Les skins ne sont pas encore implémantés.
$OSkin = GUICtrlCreateMenu ("Skins", $Options, 2)
GUICtrlSetState ($OSkin, $GUI_DISABLE)
$SNouveau = GUICtrlCreateMenuItem ("Nouveau", $OSkin, 0)
GUICtrlSetState ($SNouveau, $GUI_DISABLE)
$SSauvegarder = GUICtrlCreateMenuItem ("Sauver", $OSkin, 1)
GUICtrlSetState ($SSauvegarder, $GUI_DISABLE)
$SModifier = GUICtrlCreateMenuItem ("Modifier", $OSkin, 2)
GUICtrlSetState ($Smodifier, $GUI_DISABLE)
$SCharger = GUICtrlCreateMenuItem ("Charger", $OSkin, 3)
GUICtrlSetState ($SCharger, $GUI_DISABLE)
;Idem pour le Tutoriel.
$Aide = GUICtrlCreateMenu ("Aide", -1, 3)
$ATuto = GUICtrlCreateMenuItem ("Tutoriel", $Aide, 0)
GUICtrlSetState ($ATuto, $GUI_DISABLE)
GUICtrlCreateMenuItem("Version : " & $Version, GUICtrlCreateMenu("DofusLog By Za", $Aide, 1)) ;Petit Copyright. Huhu ^^
$Label = GUICtrlCreateLabel ("Choisissez un compte à Logger :", 1, -2, -1, -1)
GUICtrlSetResizing ($Label, 2 + 32 + 768)
$Boutons = GUIStartGroup ($FenBase) ;Séparation des boutons. -utile pour la boucle de focus
$Lancer = GUICtrlCreateButton ("Lancer !", $lFen - 50, $Ht / 2 + $Ht / 2 * $tFen, 47, 25)
GUICtrlSetResizing ($Lancer, 8 + 768)
GUICtrlSetOnEvent ($Lancer, "Lance")
If (UBound ($aLog)) / $NbLignes > 2 Then
$Multico = GUICtrlCreateCheckbox ("Multi", $lFen - 50, 11 + $Ht + $Ht / 2 * $tFen, -1, $Hligne)
GUICtrlSetResizing ($Multico, 8 + 768)
GUICtrlSetState ($Multico, $multi)
GUICtrlSetOnEvent ($Multico, "FMultico")
EndIf
$Modifier = GUICtrlCreateButton ("Modifier", $lFen - 50, 27 + $tFen * $Ht, 47, 25, 0x8000)
GUICtrlSetResizing ($Modifier, 8 + 64 + 768)
GUICtrlSetOnEvent ($Modifier, "FModifier")
$Nouveau = GUICtrlCreateButton ("Nouveau", 1, 27 + $tFen * $Ht, -1, 25, 0x8000)
GUICtrlSetResizing ($Nouveau, 8 + 64 + 768)
GUICtrlSetOnEvent ($Nouveau, "FNouveau")
$Supprimer = GUICTRLCreateButton ("Supprimer", 75, 27 + $tFen * $Ht, -1, 25, 0x8000)
GUICtrlSetResizing ($Supprimer, 8 + 64 + 768)
GUICtrlSetOnEvent ($Supprimer, "FSupprimer")
$CFini = GUICtrlCreateCheckbox ("Fermer le script après ce compte", 15, $Hligne, -1, 13)
GUICtrlSetResizing ($CFini, 2 + 32 + 768)
GUICtrlSetState ($CFini, $fin)
GUICtrlSetOnEvent ($CFini, "Fini")
GUISetState ()
Local $compteBis = 1, $compteTer
While $compteBis < (UBound ($aLog)) / $NbLignes
If GUICtrlRead ($Multico) = $GUI_CHECKED Then
$Radio[$compteBis] = GUICtrlCreateCheckbox ($aLog[$compteBis * $NbLignes - 1]& " .", 5, $Ht + ($compteBis - 1) * $Ht, 135, $Ht - 3, 0x2000)
GUICtrlSetOnEvent($Radio[$compteBis], "FCheckBox")
$compteTer = 0
While $compteTer < UBound ($coListe)
If $coListe[$compteTer] = $compteBis Then
GUICtrlSetState($Radio[$compteBis], $GUI_CHECKED)
GUICtrlSetFont($Radio[$compteBis], -1, 800)
EndIf
$compteTer += 1
WEnd
Else
$Radio[$compteBis] = GUICtrlCreateRadio ($aLog[$compteBis * $NbLignes - 1]& " .", 5, $Ht + ($compteBis - 1) * $Ht, 135, $Ht - 3, 0x2000)
GUICtrlSetOnEvent ($Radio[$compteBis], "FRadio")
EndIf
GUICtrlSetData ($Radio[$compteBis], $aLog[$compteBis * $NbLignes - 1])
GUICtrlSetResizing ($Radio[$compteBis], 2 + 32 + 512)
$compteBis += 1
WEnd
If GUICtrlRead ($Multico) = $GUI_UNCHECKED Then
GUICtrlSetState ($Radio[$compte], $GUI_CHECKED + $GUI_FOCUS)
GUICtrlSetFont($Radio[$compte], -1, 800)
EndIf
ElseIf $GUI = "FenMod" Then
$FenMod = GUICreate("ajouter/modifier un compte", 200, $HLigne * 12)
GUISetOnEvent($GUI_EVENT_CLOSE, "Quit")
$LabelSurnom = GUICtrlCreateLabel("Veuillez entrer un" & @CRLF & " pseudonyme :", 1, 2, 100)
$LabelClef = GUICtrlCreateLabel(@CRLF&"Clef de cryptage :", 120, 0)
$LabelNDC = GUICtrlCreateLabel("Veuillez entrer le nom de compte Dofus :", 0, $HLigne * 4)
$LabelMDP = GUICtrlCreateLabel("Veuillez entrer le mot de pass associé :", 0, $HLigne * 7)
$InputPseudo = GUICtrlCreateInput($aLog[$compteTer], 2, $HLigne * 2, 125)
$InputClef = GUICtrlCreateInput("", 149, $HLigne * 2, 50)
$InputNDC = GUICtrlCreateInput("", 2, $Hligne * 5, 196)
$InputMDP = GUICtrlCreateInput("", 2, $Hligne * 8, 196)
$BValide = GUICtrlCreateButton("Valider", 2, $HLigne * 10)
GUICtrlSetOnEvent ($BValide, "ModModifier")
$BAnnule = GUICtrlCreateButton("Annuler", 100, $HLigne * 10)
GUICtrlSetOnEvent ($BAnnule, "ModAnnule")
ElseIf $GUI = "FenRac" Then
$FenRac = GUICreate ("créer/modifier un raccourcis", 170, 5 * $Ht + $Hligne)
GUISetOnEvent($GUI_EVENT_CLOSE, "Quit")
GUICtrlCreateLabel("Sélectionnez le script :", 0, 0)
$IScript = GUICtrlCreateInput(@ScriptFullPath, 5, $HLigne, 100)
$BSParc = GUICtrlCreateButton("Parcourir", 110, $HLigne)
GUICtrlSetOnEvent($BSParc, "ParcoureScript")
GUICtrlCreateLabel("Sélectionnez le log :", 0, $Ht + $HLigne)
$ILog = GUICtrlCreateInput($logChemin, 5, $Ht + 2 * $Hligne, 100)
$BLParc = GUICtrlCreateButton("Parcourir", 110, $Ht + 2 * $Hligne)
GUICtrlSetOnEvent($BLParc, "ParcoureLog")
GUICtrlCreateLabel("Entrez les n° des comptes :", 0, 2 * $Ht + 2 * $Hligne)
$Icomptes = GUICtrlCreateInput($compte, 5, 2 * $Ht + 3 * $Hligne, 100)
$RBValide = GUICtrlCreateButton("Valider", 0, 3 * $Ht + 3 * $Hligne)
GUICtrlSetOnEvent($RBValide, "RValide")
$RBAnnule = GUICtrlCreateButton("Annuler", 110, 3 * $Ht + 3 * $Hligne)
GUICtrlSetOnEvent($RBAnnule, "RFinir")
EndIf
GUISetState ()
If $GUI = "FenBase" Then 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
EndFunc
Func FSupprimer () ;Supprimer un surnom
If MsgBox (0x51, @ScriptName & " - Suppression", "Souhaitez-vous vraiment détruire cette entrée ?") = 2 Then Return
DesAct (1)
TrayTip (@ScriptName, "Effacement en cours...", 10, 16)
$ligne = $compte * $NbLignes + 1
MRetire ($ligne)
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)
TrayTip ("", "", 0)
Fenetre ()
EndFunc
Func FModifier () ;Modifier un surnom
DesAct (1)
Modifier ($compte, $fichier)
EndFunc
Func FNouveau () ;Ajouter un surnom
DesAct (1)
ReDim $aLog[UBound ($aLog) + $NbLignes]
ReDim $Radio[UBound ($Radio) + 1]
Modifier ((UBound ($aLog) - 1) / $NbLignes, $fichier)
EndFunc
Func Modifier ($compteBis, $fich) ;fonction générique pour ajout/modif de surnom
Global $compteTer = $NbLignes * ($compteBis - 1) + 1
Global $FenMod, $LabelSurnom, $LabelClef, $LabelNDC, $LabelMDP, $InputPseudo, $InputClef, $InputNDC, $InputMDP, $BValide, $BAnnule, $Encrypt = StringSplit ($aLog[$compteTer + 1], "{TAB}")
Fenetre ("FenMod")
EndFunc
Func ModAnnule () ;Annuler la modification d'un surnom (devrait plutôt être fait par un $GUI_EVENT_CLOSE sur le bouton...)
GUIDelete($FenMod)
DesAct ()
EndFunc
Func ModModifier () ;Modification effective du surnom
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
If GUICtrlRead ($InputPseudo) <> "" Then
TrayTip (@ScriptName, "Écriture en cours...", 0, 16)
$aLog[$compteTer] = GUICtrlRead ($InputPseudo)
_FileWriteToLine2 ($fichier, $compteTer, $aLog[$compteTer], 1)
If GUICtrlRead ($InputNDC) <> "" Then
If GUICtrlRead ($InputClef) = "" Then
$Encrypt[1] = GUICtrlRead ($InputNDC)
Else
$Encrypt[1] = _StringEncrypt (1, GUICtrlRead ($InputNDC), GUICtrlRead ($InputClef))
EndIf
EndIf
If GUICtrlRead ($InputMDP) <> "" Then
If GUICtrlRead ($InputClef) = "" Then
$Encrypt[UBound ($Encrypt) - 1] = GUICtrlRead ($InputMDP)
Else
$Encrypt[UBound ($Encrypt) - 1] = _StringEncrypt (1, GUICtrlRead ($InputMDP), GUICtrlRead ($InputClef))
EndIf
EndIf
$Encrypt = $Encrypt[1] & "{TAB}" & $Encrypt[UBound ($Encrypt) - 1]
If $Encrypt <> $aLog[$compteTer + 1] Then
$aLog[$compteTer + 1] = $Encrypt
_FileWriteToLine2 ($fichier, $compteTer + 1, $aLog[$compteTer + 1], 1)
EndIf
TrayTip ("", "", 0)
EndIf
GUIDelete ($FenMod)
GUIDelete ($FenBase)
Fenetre ()
EndFunc
Func FRadio ($r = 0) ;Fonction de sélection du surnom dans la liste (sans Multico)
Local $mess, $r
If $r = 0 Then
$mess = @GUI_CtrlId
Else
$mess = $r
EndIf
If $mess <> $Radio[$compte] Then
If GUICtrlRead ($Multico) = $GUI_UNCHECKED or GUICtrlRead($Radio[$compte]) = $GUI_UNCHECKED Then
GUICtrlSetFont($Radio[$compte], -1, 400)
GUICtrlSetState ($Radio[$compte], $GUI_NOFOCUS)
EndIf
While $mess <> $Radio[$compte]
$compte += 1
If $compte > (UBound ($Radio) - 1) Then
$compte = 1
EndIf
WEnd
GUICtrlSetState ($Radio[$compte], $GUI_CHECKED + $GUI_FOCUS)
GUICtrlSetFont($Radio[$compte], -1, 800)
Else
FLancer ($compte)
If $fin = $GUI_CHECKED Then Exit
EndIf
EndFunc
Func FCheckBox ($r = 0) ;Fonction de sélection de(s) surnom(s) (avec Multico)
Local $mess, $r
If $r = 0 Then
$mess = @GUI_CtrlId
Else
$mess = $r
EndIf
$r = 0
While $mess <> $Radio[$r]
$r += 1
WEnd
If GUICtrlRead($mess) = $GUI_UNCHECKED Then
GUICtrlSetFont($mess, -1, 400)
MRetire ($r)
Else
GUICtrlSetFont($mess, -1, 800)
ReDim $coListe[UBound ($coListe) + 1]
$coListe[UBound ($coListe) - 1] = $r
EndIf
EndFunc
Func FMultico () ;Gestion de l'état du bouton Multico
$multi = GUICtrlRead ($Multico)
If $coListe[0] = "" Then $coListe[0] = $compte
Fenetre ()
EndFunc
Func MRetire ($suppr = -1) ;Dé-sélection d'un surnom pré-sélectionné (sous Multico)
Local $n = 0, $q, $z
If $suppr = -1 Then
MsgBox(0,"Erreur","Cette fonction MRetire ne doit pas être appellée directement.")
Return
EndIf
$n = 0
While $coListe[$n] <> $suppr
$n += 1
WEnd
While $n < UBound ($coListe) - 1
$coListe[$n] = $coListe[$n + 1]
$n += 1
WEnd
If UBound ($coListe) > 1 Then
ReDim $coListe[UBound ($coListe) - 1]
Else
$coListe[0] = ""
EndIf
EndFunc
Func RModif ($mod = 0) ;Fonction générique pour l'ajout/modification de raccourcis
Global $n, $r
Global $fenRac, $LabelSansNom, $modRac = 0, $IScript, $BSParc, $LabelSansNom2, $ILog, $BLParc, $LComptes, $LabelSansNom3, $IComptes, $RBValide, $RBAnnule
Fenetre ("FenRac")
EndFunc
Func ParcoureScript () ;Parcourir les dossiers par l'utilisateur pour désigner le script
$n = FileOpenDialog (@ScriptName & " - Sélectionnez votre script :", @ScriptDir, "Scripts (*.au3 ;*.exe)|Tous (*.*)", 8, @ScriptName)
If $n <> "" Then GUICtrlSetData ($IScript, $n)
EndFunc
Func ParcoureLog () ;Parcourir les dossiers par l'utilisateur pour désigner le log
$n = FileOpenDialog (@ScriptName & " - Sélectionnez le fichier contenant vos logs :", $logChemin, "Textes (*.txt)|Tous (*.*)", 8, "Log.txt")
If $n <> "" Then GUICtrlSetData ($ILog, $n)
EndFunc
Func RValide () ;Créer/Modifier le raccourcis
$n = FileOpenDialog (@ScriptName & " - Choissez le nom et répertoire du raccourcis :", @ScriptDir, "Raccourcis (*.lnk)", 8, @ScriptName & ".lnk")
If $n = '' Then Return
If StringInStr ($n, ".lnk") = 0 Then $n &= ".lnk"
FileCreateShortcut (GUICtrlRead ($IScript), $n, "", ' "' & GUICtrlRead ($ILog) & '" ' & GUICtrlRead ($IComptes))
GUIDelete ($fenRac)
EndFunc
Func RFinir () ;Annuler le raccourcis, idem que ModAnnule()
GUIDelete ($fenRac)
EndFunc
Func RCharge () ;Charger une liste de comptes pré-enregistrés en raccourcis
$n = FileOpenDialog (@ScriptName & " - Sélectionnez votre raccourcis :", @ScriptDir, "Raccourcis (*.lnk)", 8, @ScriptName & ".lnk")
If $n = "" Then Return
$r = FileGetShortcut ($n)
$logChemin = StringMid ($r[2], 3, StringInStr ($r[2], '"', 2, 2) - 3)
$coListe = StringSplit (StringMid ($r[2], StringInStr ($r[2], '"', 2, 2) + 2), ",")
For $n = 0 To UBound ($coListe) - 2
$coListe[$n] = $coListe[$n+1]
Next
ReDim $coListe[UBound ($coListe) - 1]
$Lance = 1
GUIDelete ($fenBase)
ChargeLog ()
Return
EndFunc
Func RSuppre () ;Supprimer le raccourcis sélectionné
$Racc = FileOpenDialog (@ScriptName & " - Sélectionnez votre raccourcis :", @ScriptDir, "Raccourcis (*.lnk)", 8, @ScriptName)
If $Racc <> "" Then FileDelete ($Racc)
EndFunc
Func Lance () ;Démarrer la connexion d'un surnom/d'une liste de surnoms
Local $err = 0
If GUICtrlRead($Multico) = $GUI_CHECKED Or $Lance = 1 Then
For $n = 0 To UBound ($coListe) - 1
If $coListe[$n] <= ((UBound ($aLog) - 1) / $NbLignes) And $coListe[$n] > 0 Then $err = FLancer ($coListe[$n])
Next
$Lance = 0
Else
$err = FLancer ($compte)
EndIf
If $fin = $GUI_CHECKED And $err = 0 Then Exit
EndFunc
Func FLancer ($compteBis = $compte) ;Lancement du jeu + traitement des identifiants pour la connexion au jeu
DesAct (1)
$compteBis = ($compteBis - 1) * $NbLignes + 1
If StringInStr ($aLog[$compteBis + 1], "{TAB}") = 0 Then
MsgBox(80,"","Compte invalide, désolée.." &@CRLF&@CRLF& "Veuillez le modifier pour le mettre aux normes."&@crlf&"Erreur : pas de séparateur {TAB} entre compte et pass.")
DesAct ()
Return -1
EndIf
Local $Clef = InputBox (@ScriptName & " - Code du compte " & $aLog[$compteBis], "Veuillez entrer la clef de " & $aLog[$compteBis]& " :", "", "°")
If @error = 1 Then
DesAct ()
Return -2
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 & Message(), 2) <> 2 Then
TrayTip (@Scriptname, "Lancement de la fenêtre Dofus.", 0)
Run ($prgChemin & $prgNom, $prgChemin)
AutoItSetOption ("WinTitleMatchMode", 3)
Do
Sleep (200)
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])
TrayTip ("","",0)
Sleep (1000)
Traytip (@ScriptName, "Veuillez placer votre curseur" & @CRLF & 'sur la zone "Compte Ankama".', 10)
AutoItSetOption ("MouseCoordMode", 0)
$posDof = WinGetClientSize ("Dofus - " & $aLog[$compteBis])
Do
WinWaitActive ("Dofus - " & $aLog[$compteBis])
$posCur = MouseGetPos ()
Sleep(20)
Until (MouseGetCursor () = 5) And ($posCur[0] < $posDof[0]) And ($posCur[1] < $posDof[1]) And ($posCur[0] > 0) And ($posCur[1] > 0)
MouseClick ("left")
Send ($NDCMDP[1], 1)
Send ("{TAB}")
Send ($NDCMDP[2], 1)
AutoItSetOption ("MouseCoordMode", 1)
TrayTip (@Scriptname, "Veuillez passer votre souris" & @CRLF & 'sur le bouton "OK".', 0)
Do
WinWaitActive ("Dofus - " & $aLog[$compteBis])
sleep (20)
$cur = MouseGetPos ()
Until ((MouseGetCursor () = 0) And (PixelGetColor ($cur[0], $cur[1]) = 0xFF9900))
MouseClick ("left")
TrayTip ("", "", 0)
Else
DesAct ()
Return -3
EndIf
DesAct ()
Return
EndFunc
Func Message () ;Le message débile qui ne sert à rien.
Switch Random (0, 4, 1)
Case 0
Return "(\__/)" & @CRLF & "( ' . ' )" & @CRLF & '(")_(")'
Case 1
Return @CRLF & "Vous pouvez aussi aller jouer dehors," & @CRLF & "avec les papillons, les fleurs et les oiseaux."
Case 2
Return ""
Case 3
Return @CRLF & "Ou patientez 2 secondes," & @CRLF & "que la fenêtre se ferme d'elle-même."
Case 4
Return @CRLF & "La Vie est comme cette boîte de dialogue :" & @CRLF & "C'est quand elle se ferme qu'on arrive à l'essentiel."
EndSwitch
EndFunc
Func Fini () ;Fermeture du script en fin de connexion
$fin = GUICtrlRead ($CFini)
EndFunc
Func Void () ;Fonction vide, utile pour tester si un bouton "répond" ou pas lors des tests de débug. ^^'
MsgBox (80, @ScriptName, "L'objet cliqué (" & @GUI_CtrlId & ") n'a pas" & @CRLF & "d'action associée, désolée." & @CRLF & "contenu = " & GUIctrlread (@GUI_CtrlId))
EndFunc
Func Quit () ;Fermeture de la fenêtre appelante, ou du script entier si il ne reste que la fenêtre de base. :)
GUIDelete (@GUI_WinHandle)
If @GUI_WinHandle = $FenBase Then Exit
DesAct ()
EndFunc
;==========================Fonctions AutoIt 3 modifiées========================================
Func _FileWriteToLine2 ($sFile, $iLine, $sText, $fOverWrite = 0) ;Ecrire une ligne particulière dans un fichier texte
If Not FileExists ($sFile) Then FileWrite ($sFile, "")
Local $filtxt = FileRead ($sFile, FileGetSize ($sFile))
$filtxt = StringSplit ($filtxt, @CRLF, 1)
If UBound ($filtxt) - 1 < $iLine Then ReDim $filtxt[$iLine + 1]
Local $fil = FileOpen ($sFile, 2), $i, $limit = UBound ($filtxt) - 1, $file2write = ""
For $i = 1 To $limit
If $i = $iLine Then
If $fOverWrite = 1 Then
If $sText <> "" Then
If $i < $limit And $sText <> @CRLF Then
$file2write &= $sText & @CRLF
ElseIf $i = $limit Or $sText = @CRLF Then
$file2write &= $sText
EndIf
Else
If $i < $limit Then
$file2write &= $sText
EndIf
EndIf
EndIf
If $fOverWrite = 0 Then
If $i < $limit Then
If $sText = @CRLF Then
$file2write &= @CRLF & $filtxt[$i] & @CRLF
Else
$file2write &= $sText & @CRLF & $filtxt[$i] & @CRLF
EndIf
ElseIf $i = $limit Then
If $sText = @CRLF Then
$file2write &= @CRLF & $filtxt[$i]
Else
$file2write &= $sText & @CRLF & $filtxt[$i]
EndIf
EndIf
EndIf
ElseIf $i < $limit Then
$file2write &= $filtxt[$i] & @CRLF
ElseIf $i = $limit Then
$file2write &= $filtxt[$i]
EndIf
Next
FileWrite ($fil, $file2write)
FileClose ($fil)
Return 1
EndFunc ;==>_FileWriteToLine2
Func _FileWriteFromArray2 ($File, $a_Array, $i_Base = 0, $i_UBound = -1) ;Transformer un Array (Liste) en fichier texte
Local $hFile, $x, $file2write = ""
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
$file2write &= $a_Array[$x] & @CRLF
$x += 1
Until $x = $i_UBound
FileWrite ($hFile, $file2write & $a_Array[$i_UBound])
If IsString ($File) Then FileClose ($hFile)
EndFunc ;==>_FileWriteFromArray2
Func _FileReadToArray2 ($sFilePath, ByRef $aArray) ;Transformer un fichier texte en Array (Liste)
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
24604 caractères, en 592 lignes.
Changement depuis la 1_9b : Beaucoup.
Majeur :
-> Meilleure prise en charge de la fonction Multico, en un seul affichage
-> Meilleur affichage, la fenêtre apparaît sans les surnoms d'abord, qui arrivent juste après. (Changement visible en cas de lag lourd.)
-> Disparition des boutons (devenus superflus) "Ajouter ->" et "<- Retirer"
-> Amélioration de l'appel des fonctions par un "OnEvent", plutôt que l'ancien "Getmsg()". (La bonne fonction est appelée directement au clic sur un objet donné, contrairement à "Bouton appuyé, recherche de la fonction qui lui correspond", ce qui diminue aussi la charge processeur.)
-> Refonte des fonctions AutoIt modifiées (en fin de code source), qui sont maintenant plus efficaces, mieux gérées et plus légères
-> Amélioration des conditions pour l'envoi des identifiants dans la fenêtre Dofus (sécurité augmentée)
Mineur :
-> Changement de l'apparence sur quelques points, ça devrait être plus joli.
Changement par rapport aux versions 1_10BêtaX précédentes :
-> Le module de skins n'est pas prêt, mais ce sera la réelle modification à venir sur le DofusLog (maintenant que le code est correct)
-> Lire les améliorations ci-dessus, cette version a été particulièrement travaillée pour ne plus contenir de bugs. N'hésitez pas à signaler tout comportement ou fonctionnalité qui ne vous paraît pas intuitive.
Et pour le futur :
-> Skinz à veniir, je prépare une (VRAIE) version bêta qui sera fonctionnelle, basée sur cette version 1_10. (Pas comme ces ersatz de 1_10BêtaX, qui étaient plus ou moins plantées. u_u)
-> Mémorisation d'une fenêtre lors de son rafraîchissement. (Oui, c'est désagréable de voir la fenêtre principale retourner au centre de l'écran au moindre clic sur Multico, je sais. :b)
-> Choix d'une clef unique à entrer dans un coin de fenêtre principale, pour connecter une série de comptes sans se faire agresser par des demandes de clefs en boucle.
-> Remettre les boutons "Haut" et "Bas", pour changer l'ordre de la liste des surnoms
-> Et intégration de ce qui vous plairait, n'hésitez surtout pas à demander la lune ! (Elle vous serait fournie comme image de fond du script pour les skins. o//)
Voilà, à bientôt pour de nouvelles aventures chocolatées..!
Za.
Oui, je sais que ça fait longtemps que mon script est en travaux. Merci de votre patience. ^^'
Dernière modification par Famille Za ; 25/01/2010 à 14h24.
Motif: Edition des liens.
|
12/10/2009, 18h04
|
|
|
|
Et comme je viens d'obtenir ma clef pour la bêta de Dofus 2.0, voici un p'tit cadeau :
DofusLogv-1_10-DémoDofus2.0, la version compatible avec la démo de Dofus 2.0 !
Ca fonctionne comment ?
Pareil que le DofusLog normal, sauf l'intégration de "Dofus 2.0", à la place de "Dofus".
Version compilée : nan, y'a pas. (mais vous pouvez toujours en compiler une pour vous à partir de l'une des deux versions ci-dessous. n_n)
Version scripte : DofusLog-v1_10-DémoDofus2.0.au3 - 24.14 kB
Version source :
Code:
#include <GUIConstants.au3> ;Nécessaire surtout pour le $GUI_EVENT_CLOSE
#include <String.au3> ;Pour l'encryptage
AutoItSetOption ("GUIOnEventMode", 1)
Global $Version = "1_10"
Global $fichier, $prgChemin, $prgNom, $FenBase, $Label, $CFini, $fin, $Lancer, $Lance = 0, $Multico, $multi = 0, $Modifier, $Nouveau, $Supprimer, $Ajoute, $Retire, $Haut, $Bas, $Boutons, $Options, $OLog, $LLancer, $LModifier, $LNouveau, $LSupprimer, $Fichiers, $FNouv, $FCharge, $FQuit, $ORaccourcis, $RNouveau, $RModifier, $RCharge, $RSupprime, $OSkin, $SCharger, $SNouveau, $SModifier, $SSauvegarder, $Aide, $ATuto, $aLog, $coListe, $Avatar, $Radio, $Skin, $suppr = -1
Global $NbLignes = 2 ;Nombre de lignes utilisées par entrée dans le fichier de Log
Global $logChemin = @ScriptDir & "\Log.txt"
Global $compte = 1, $compteBis
Dim $coListe[1]
If $CmdLine[0] > 0 Then $logChemin = $CmdLine[1]
If $CmdLine[0] > 1 Then
$coListe = StringSplit ($CmdLine[2], ",")
For $n = 0 To UBound ($coListe) - 2
$coListe[$n] = $coListe[$n+1]
Next
ReDim $coListe[UBound ($coListe) - 1]
$Lance = 1
$fin = $GUI_CHECKED ;Pas obligatoire, en fait, mais préférable, finalement.
EndIf
Global $Hligne = 16 ;hauteur présumée par ligne (13 pixels de haut, voire 14)
Global $Separ = $Hligne / 2 - 10 ;Séparateur, hauteur en pixels entre deux lignes
Global $Ht = $Separ + 2 * $Hligne
Global $msg
Dim $aLog[3]
_FileReadToArray2 (@ScriptDir & "\SkinDB.txt", $Skin) ;rendre modifiable ce chemin
ChargeLog (0)
While 1
Sleep(100)
If $Lance = 1 Then Lance ()
WEnd
;==============================Fonctions totalement créées par Za====================================
Func Recharge ()
ChargeLog (1)
EndFunc
Func ChargeLog ($nouv = 1)
If Not FileExists ($logChemin) Or $nouv = 1 Then
TrayTip (@ScriptName, "Veuillez sélectionner un fichier texte.", 0)
$fichier = FileOpenDialog (@ScriptName & " - Sélectionnez ou créez un fichier contenant vos logs", $logChemin, "Text files (*.txt)|All files (*.*)", 8, "Log.txt")
If $fichier = "" Then Return
TrayTip (@ScriptName, "Enregistrement de la place du Log en cours", 1, 16)
_FileWriteToLine2 (@ScriptFullPath, 7,'Global $logChemin = "' & $fichier & '"', 1)
TrayTip ("", "", 0)
Else
$fichier = $logChemin
EndIf
$existe = _FileReadToArray2 ($fichier, $aLog)
;$prgChemin et $prgNom n'ont rien à faire ici, normalement. Sauf pour utiliser le DofusLog comme gestionnaire de MDP cross-applications.)
;~ $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
$prgChemin = "C:\Program Files\Dofus 2 Online\app\"
If Not FileExists ($prgChemin & $prgNom) Then
;~ If Not FileExists ($prgChemin & "Dofus_client.exe") Then
$prgNom = FileOpenDialog (@ScriptName & " - Sélectionnez votre lanceur de jeu Dofus 2.0", $prgChemin, "(*.exe; *.html)|Tous (*.*)", 1, "Dofus")
$prgChemin = ""
;~ Else
;~ $prgNom = "Dofus_client.exe"
;~ EndIf
EndIf
;~ Else
;~ $prgNom = "Dofus_client.exe"
;~ EndIf
;~ EndIf
If Not $existe Then
Modifier (1, $fichier)
EndIf
_FileReadToArray2 ($fichier, $aLog)
Dim $Radio[(UBound ($aLog) + 1) / $NbLignes]
Dim $Avatar[(UBound ($aLog) + 1) / $NbLignes]
Fenetre ()
EndFunc
Func Fenetre ($GUI = "FenBase")
Global $tFen = (UBound ($aLog) - 1) / $NbLignes
If $tFen < 2 Then $tFen = 2
Global $lFen = 200
If $GUI = "FenBase" Then
;sauvegarde de la position entre deux redim' à faire
GUIDelete ($FenBase)
$FenBase = GUICreate (@ScriptName, $lFen, 19 + 50 + $tFen * $Ht + 30, -1, -1, 0x70000,0,0)
GUISetOnEvent($GUI_EVENT_CLOSE, "Quit")
$Fichiers = GUICtrlCreateMenu ("Fichier", -1, 0)
$FNouv = GUICtrlCreateMenuItem ("Nouveau", $Fichiers, 0)
GUICtrlSetOnEvent ($FNouv, "Recharge")
$FCharge = GUICtrlCreateMenuItem ("Charger", $Fichiers, 1)
GUICtrlSetOnEvent ($FCharge, "Recharge")
$FLigneVide = GUICtrlCreateMenuItem ("", $Fichiers, 2)
$FQuit = GUICtrlCreateMenuItem ("Quitter", $Fichiers, 3)
GUICtrlSetOnEvent ($FQuit, "Quit")
$Options = GUICtrlCreateMenu ("Options", -1, 1)
$OLog = GUICtrlCreateMenu ("Compte", $Options, 0)
$LLancer = GUICtrlCreateMenuItem ("Lancer !", $OLog, 0)
GUICtrlSetOnEvent ($LLancer, "Lance")
$LNouveau = GUICtrlCreateMenuItem ("Nouveau", $OLog, 1)
GUICtrlSetOnEvent ($LNouveau, "FNouveau")
$LModifier = GUICtrlCreateMenuItem ("Modifier", $OLog, 2)
GUICtrlSetOnEvent ($LModifier, "FModifier")
$LSupprimer = GUICtrlCreateMenuItem ("Supprimer", $OLog, 3)
GUICtrlSetOnEvent ($LSupprimer, "FSupprimer")
$ORaccourcis = GUICtrlCreateMenu ("Raccourcis", $Options, 1)
$RNouveau = GUICtrlCreateMenuItem ("Nouveau", $ORaccourcis, 0)
GUICtrlSetOnEvent ($RNouveau, "RModif")
$RCharge = GUICtrlCreateMenuItem ("Charger", $ORaccourcis, 1)
GUICtrlSetOnEvent ($RCharge, "RCharge")
$RModifier = GUICtrlCreateMenuItem ("Modifier", $ORaccourcis, 2)
$RSupprime = GUICtrlCreateMenuItem ("Supprimer", $ORaccourcis, 3)
GUICtrlSetOnEvent ($RSupprime, "RSuppre")
;Les skins ne sont pas encore implémantés.
$OSkin = GUICtrlCreateMenu ("Skins", $Options, 2)
GUICtrlSetState ($OSkin, $GUI_DISABLE)
$SNouveau = GUICtrlCreateMenuItem ("Nouveau", $OSkin, 0)
GUICtrlSetState ($SNouveau, $GUI_DISABLE)
$SSauvegarder = GUICtrlCreateMenuItem ("Sauver", $OSkin, 1)
GUICtrlSetState ($SSauvegarder, $GUI_DISABLE)
$SModifier = GUICtrlCreateMenuItem ("Modifier", $OSkin, 2)
GUICtrlSetState ($Smodifier, $GUI_DISABLE)
$SCharger = GUICtrlCreateMenuItem ("Charger", $OSkin, 3)
GUICtrlSetState ($SCharger, $GUI_DISABLE)
;Idem pour le Tutoriel.
$Aide = GUICtrlCreateMenu ("Aide", -1, 3)
$ATuto = GUICtrlCreateMenuItem ("Tutoriel", $Aide, 0)
GUICtrlSetState ($ATuto, $GUI_DISABLE)
GUICtrlCreateMenuItem("Version : " & $Version, GUICtrlCreateMenu("DofusLog By Za", $Aide, 1)) ;Petit Copyright. Huhu ^^
$Label = GUICtrlCreateLabel ("Choisissez un compte à Logger :", 1, -2, -1, -1)
GUICtrlSetResizing ($Label, 2 + 32 + 768)
$Boutons = GUIStartGroup ($FenBase) ;Séparation des boutons. -utile pour la boucle de focus
$Lancer = GUICtrlCreateButton ("Lancer !", $lFen - 50, $Ht / 2 + $Ht / 2 * $tFen, 47, 25)
GUICtrlSetResizing ($Lancer, 8 + 768)
GUICtrlSetOnEvent ($Lancer, "Lance")
If (UBound ($aLog)) / $NbLignes > 2 Then
$Multico = GUICtrlCreateCheckbox ("Multi", $lFen - 50, 11 + $Ht + $Ht / 2 * $tFen, -1, $Hligne)
GUICtrlSetResizing ($Multico, 8 + 768)
GUICtrlSetState ($Multico, $multi)
GUICtrlSetOnEvent ($Multico, "FMultico")
EndIf
$Modifier = GUICtrlCreateButton ("Modifier", $lFen - 50, 27 + $tFen * $Ht, 47, 25, 0x8000)
GUICtrlSetResizing ($Modifier, 8 + 64 + 768)
GUICtrlSetOnEvent ($Modifier, "FModifier")
$Nouveau = GUICtrlCreateButton ("Nouveau", 1, 27 + $tFen * $Ht, -1, 25, 0x8000)
GUICtrlSetResizing ($Nouveau, 8 + 64 + 768)
GUICtrlSetOnEvent ($Nouveau, "FNouveau")
$Supprimer = GUICTRLCreateButton ("Supprimer", 75, 27 + $tFen * $Ht, -1, 25, 0x8000)
GUICtrlSetResizing ($Supprimer, 8 + 64 + 768)
GUICtrlSetOnEvent ($Supprimer, "FSupprimer")
$CFini = GUICtrlCreateCheckbox ("Fermer le script après ce compte", 15, $Hligne, -1, 13)
GUICtrlSetResizing ($CFini, 2 + 32 + 768)
GUICtrlSetState ($CFini, $fin)
GUICtrlSetOnEvent ($CFini, "Fini")
GUISetState ()
Local $compteBis = 1, $compteTer
While $compteBis < (UBound ($aLog)) / $NbLignes
If GUICtrlRead ($Multico) = $GUI_CHECKED Then
$Radio[$compteBis] = GUICtrlCreateCheckbox ($aLog[$compteBis * $NbLignes - 1]& " .", 5, $Ht + ($compteBis - 1) * $Ht, 135, $Ht - 3, 0x2000)
GUICtrlSetOnEvent($Radio[$compteBis], "FCheckBox")
$compteTer = 0
While $compteTer < UBound ($coListe)
If $coListe[$compteTer] = $compteBis Then
GUICtrlSetState($Radio[$compteBis], $GUI_CHECKED)
GUICtrlSetFont($Radio[$compteBis], -1, 800)
EndIf
$compteTer += 1
WEnd
Else
$Radio[$compteBis] = GUICtrlCreateRadio ($aLog[$compteBis * $NbLignes - 1]& " .", 5, $Ht + ($compteBis - 1) * $Ht, 135, $Ht - 3, 0x2000)
GUICtrlSetOnEvent ($Radio[$compteBis], "FRadio")
EndIf
GUICtrlSetData ($Radio[$compteBis], $aLog[$compteBis * $NbLignes - 1])
GUICtrlSetResizing ($Radio[$compteBis], 2 + 32 + 512)
$compteBis += 1
WEnd
If GUICtrlRead ($Multico) = $GUI_UNCHECKED Then
GUICtrlSetState ($Radio[$compte], $GUI_CHECKED + $GUI_FOCUS)
GUICtrlSetFont($Radio[$compte], -1, 800)
EndIf
ElseIf $GUI = "FenMod" Then
$FenMod = GUICreate("ajouter/modifier un compte", 200, $HLigne * 12)
GUISetOnEvent($GUI_EVENT_CLOSE, "Quit")
$LabelSurnom = GUICtrlCreateLabel("Veuillez entrer un" & @CRLF & " pseudonyme :", 1, 2, 100)
$LabelClef = GUICtrlCreateLabel(@CRLF&"Clef de cryptage :", 120, 0)
$LabelNDC = GUICtrlCreateLabel("Veuillez entrer le nom de compte Dofus :", 0, $HLigne * 4)
$LabelMDP = GUICtrlCreateLabel("Veuillez entrer le mot de pass associé :", 0, $HLigne * 7)
$InputPseudo = GUICtrlCreateInput($aLog[$compteTer], 2, $HLigne * 2, 125)
$InputClef = GUICtrlCreateInput("", 149, $HLigne * 2, 50)
$InputNDC = GUICtrlCreateInput("", 2, $Hligne * 5, 196)
$InputMDP = GUICtrlCreateInput("", 2, $Hligne * 8, 196)
$BValide = GUICtrlCreateButton("Valider", 2, $HLigne * 10)
GUICtrlSetOnEvent ($BValide, "ModModifier")
$BAnnule = GUICtrlCreateButton("Annuler", 100, $HLigne * 10)
GUICtrlSetOnEvent ($BAnnule, "ModAnnule")
ElseIf $GUI = "FenRac" Then
$FenRac = GUICreate ("créer/modifier un raccourcis", 170, 5 * $Ht + $Hligne)
GUISetOnEvent($GUI_EVENT_CLOSE, "Quit")
GUICtrlCreateLabel("Sélectionnez le script :", 0, 0)
$IScript = GUICtrlCreateInput(@ScriptFullPath, 5, $HLigne, 100)
$BSParc = GUICtrlCreateButton("Parcourir", 110, $HLigne)
GUICtrlSetOnEvent($BSParc, "ParcoureScript")
GUICtrlCreateLabel("Sélectionnez le log :", 0, $Ht + $HLigne)
$ILog = GUICtrlCreateInput($logChemin, 5, $Ht + 2 * $Hligne, 100)
$BLParc = GUICtrlCreateButton("Parcourir", 110, $Ht + 2 * $Hligne)
GUICtrlSetOnEvent($BLParc, "ParcoureLog")
GUICtrlCreateLabel("Entrez les n° des comptes :", 0, 2 * $Ht + 2 * $Hligne)
$Icomptes = GUICtrlCreateInput($compte, 5, 2 * $Ht + 3 * $Hligne, 100)
$RBValide = GUICtrlCreateButton("Valider", 0, 3 * $Ht + 3 * $Hligne)
GUICtrlSetOnEvent($RBValide, "RValide")
$RBAnnule = GUICtrlCreateButton("Annuler", 110, 3 * $Ht + 3 * $Hligne)
GUICtrlSetOnEvent($RBAnnule, "RFinir")
EndIf
GUISetState ()
If $GUI = "FenBase" Then 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
EndFunc
Func FSupprimer () ;Supprimer un surnom
If MsgBox (0x51, @ScriptName & " - Suppression", "Souhaitez-vous vraiment détruire cette entrée ?") = 2 Then Return
DesAct (1)
TrayTip (@ScriptName, "Effacement en cours...", 10, 16)
$ligne = $compte * $NbLignes + 1
MRetire ($ligne)
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)
TrayTip ("", "", 0)
Fenetre ()
EndFunc
Func FModifier () ;Modifier un surnom
DesAct (1)
Modifier ($compte, $fichier)
EndFunc
Func FNouveau () ;Ajouter un surnom
DesAct (1)
ReDim $aLog[UBound ($aLog) + $NbLignes]
ReDim $Radio[UBound ($Radio) + 1]
Modifier ((UBound ($aLog) - 1) / $NbLignes, $fichier)
EndFunc
Func Modifier ($compteBis, $fich) ;fonction générique pour ajout/modif de surnom
Global $compteTer = $NbLignes * ($compteBis - 1) + 1
Global $FenMod, $LabelSurnom, $LabelClef, $LabelNDC, $LabelMDP, $InputPseudo, $InputClef, $InputNDC, $InputMDP, $BValide, $BAnnule, $Encrypt = StringSplit ($aLog[$compteTer + 1], "{TAB}")
Fenetre ("FenMod")
EndFunc
Func ModAnnule () ;Annuler la modification d'un surnom (devrait plutôt être fait par un $GUI_EVENT_CLOSE sur le bouton...)
GUIDelete($FenMod)
DesAct ()
EndFunc
Func ModModifier () ;Modification effective du surnom
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
If GUICtrlRead ($InputPseudo) <> "" Then
TrayTip (@ScriptName, "Écriture en cours...", 0, 16)
$aLog[$compteTer] = GUICtrlRead ($InputPseudo)
_FileWriteToLine2 ($fichier, $compteTer, $aLog[$compteTer], 1)
If GUICtrlRead ($InputNDC) <> "" Then
If GUICtrlRead ($InputClef) = "" Then
$Encrypt[1] = GUICtrlRead ($InputNDC)
Else
$Encrypt[1] = _StringEncrypt (1, GUICtrlRead ($InputNDC), GUICtrlRead ($InputClef))
EndIf
EndIf
If GUICtrlRead ($InputMDP) <> "" Then
If GUICtrlRead ($InputClef) = "" Then
$Encrypt[UBound ($Encrypt) - 1] = GUICtrlRead ($InputMDP)
Else
$Encrypt[UBound ($Encrypt) - 1] = _StringEncrypt (1, GUICtrlRead ($InputMDP), GUICtrlRead ($InputClef))
EndIf
EndIf
$Encrypt = $Encrypt[1] & "{TAB}" & $Encrypt[UBound ($Encrypt) - 1]
If $Encrypt <> $aLog[$compteTer + 1] Then
$aLog[$compteTer + 1] = $Encrypt
_FileWriteToLine2 ($fichier, $compteTer + 1, $aLog[$compteTer + 1], 1)
EndIf
TrayTip ("", "", 0)
EndIf
GUIDelete ($FenMod)
GUIDelete ($FenBase)
Fenetre ()
EndFunc
Func FRadio ($r = 0) ;Fonction de sélection du surnom dans la liste (sans Multico)
Local $mess, $r
If $r = 0 Then
$mess = @GUI_CtrlId
Else
$mess = $r
EndIf
If $mess <> $Radio[$compte] Then
If GUICtrlRead ($Multico) = $GUI_UNCHECKED or GUICtrlRead($Radio[$compte]) = $GUI_UNCHECKED Then
GUICtrlSetFont($Radio[$compte], -1, 400)
GUICtrlSetState ($Radio[$compte], $GUI_NOFOCUS)
EndIf
While $mess <> $Radio[$compte]
$compte += 1
If $compte > (UBound ($Radio) - 1) Then
$compte = 1
EndIf
WEnd
GUICtrlSetState ($Radio[$compte], $GUI_CHECKED + $GUI_FOCUS)
GUICtrlSetFont($Radio[$compte], -1, 800)
Else
FLancer ($compte)
If $fin = $GUI_CHECKED Then Exit
EndIf
EndFunc
Func FCheckBox ($r = 0) ;Fonction de sélection de(s) surnom(s) (avec Multico)
Local $mess, $r
If $r = 0 Then
$mess = @GUI_CtrlId
Else
$mess = $r
EndIf
$r = 0
While $mess <> $Radio[$r]
$r += 1
WEnd
If GUICtrlRead($mess) = $GUI_UNCHECKED Then
GUICtrlSetFont($mess, -1, 400)
MRetire ($r)
Else
GUICtrlSetFont($mess, -1, 800)
ReDim $coListe[UBound ($coListe) + 1]
$coListe[UBound ($coListe) - 1] = $r
EndIf
EndFunc
Func FMultico () ;Gestion de l'état du bouton Multico
$multi = GUICtrlRead ($Multico)
If $coListe[0] = "" Then $coListe[0] = $compte
Fenetre ()
EndFunc
Func MRetire ($suppr = -1) ;Dé-sélection d'un surnom pré-sélectionné (sous Multico)
Local $n = 0, $q, $z
If $suppr = -1 Then
MsgBox(0,"Erreur","Cette fonction MRetire ne doit pas être appellée directement.")
Return
EndIf
$n = 0
While $coListe[$n] <> $suppr
$n += 1
WEnd
While $n < UBound ($coListe) - 1
$coListe[$n] = $coListe[$n + 1]
$n += 1
WEnd
If UBound ($coListe) > 1 Then
ReDim $coListe[UBound ($coListe) - 1]
Else
$coListe[0] = ""
EndIf
EndFunc
Func RModif ($mod = 0) ;Fonction générique pour l'ajout/modification de raccourcis
Global $n, $r
Global $fenRac, $LabelSansNom, $modRac = 0, $IScript, $BSParc, $LabelSansNom2, $ILog, $BLParc, $LComptes, $LabelSansNom3, $IComptes, $RBValide, $RBAnnule
Fenetre ("FenRac")
EndFunc
Func ParcoureScript () ;Parcourir les dossiers par l'utilisateur pour désigner le script
$n = FileOpenDialog (@ScriptName & " - Sélectionnez votre script :", @ScriptDir, "Scripts (*.au3 ;*.exe)|Tous (*.*)", 8, @ScriptName)
If $n <> "" Then GUICtrlSetData ($IScript, $n)
EndFunc
Func ParcoureLog () ;Parcourir les dossiers par l'utilisateur pour désigner le log
$n = FileOpenDialog (@ScriptName & " - Sélectionnez le fichier contenant vos logs :", $logChemin, "Textes (*.txt)|Tous (*.*)", 8, "Log.txt")
If $n <> "" Then GUICtrlSetData ($ILog, $n)
EndFunc
Func RValide () ;Créer/Modifier le raccourcis
$n = FileOpenDialog (@ScriptName & " - Choissez le nom et répertoire du raccourcis :", @ScriptDir, "Raccourcis (*.lnk)", 8, @ScriptName & ".lnk")
If $n = '' Then Return
If StringInStr ($n, ".lnk") = 0 Then $n &= ".lnk"
FileCreateShortcut (GUICtrlRead ($IScript), $n, "", ' "' & GUICtrlRead ($ILog) & '" ' & GUICtrlRead ($IComptes))
GUIDelete ($fenRac)
EndFunc
Func RFinir () ;Annuler le raccourcis, idem que ModAnnule()
GUIDelete ($fenRac)
EndFunc
Func RCharge () ;Charger une liste de comptes pré-enregistrés en raccourcis
$n = FileOpenDialog (@ScriptName & " - Sélectionnez votre raccourcis :", @ScriptDir, "Raccourcis (*.lnk)", 8, @ScriptName & ".lnk")
If $n = "" Then Return
$r = FileGetShortcut ($n)
$logChemin = StringMid ($r[2], 3, StringInStr ($r[2], '"', 2, 2) - 3)
$coListe = StringSplit (StringMid ($r[2], StringInStr ($r[2], '"', 2, 2) + 2), ",")
For $n = 0 To UBound ($coListe) - 2
$coListe[$n] = $coListe[$n+1]
Next
ReDim $coListe[UBound ($coListe) - 1]
$Lance = 1
GUIDelete ($fenBase)
ChargeLog ()
Return
EndFunc
Func RSuppre () ;Supprimer le raccourcis sélectionné
$Racc = FileOpenDialog (@ScriptName & " - Sélectionnez votre raccourcis :", @ScriptDir, "Raccourcis (*.lnk)", 8, @ScriptName)
If $Racc <> "" Then FileDelete ($Racc)
EndFunc
Func Lance () ;Démarrer la connexion d'un surnom/d'une liste de surnoms
Local $err = 0
If GUICtrlRead($Multico) = $GUI_CHECKED Or $Lance = 1 Then
For $n = 0 To UBound ($coListe) - 1
If $coListe[$n] <= ((UBound ($aLog) - 1) / $NbLignes) And $coListe[$n] > 0 Then $err = FLancer ($coListe[$n])
Next
$Lance = 0
Else
$err = FLancer ($compte)
EndIf
If $fin = $GUI_CHECKED And $err = 0 Then Exit
EndFunc
Func FLancer ($compteBis = $compte) ;Lancement du jeu + traitement des identifiants pour la connexion au jeu
DesAct (1)
$compteBis = ($compteBis - 1) * $NbLignes + 1
If StringInStr ($aLog[$compteBis + 1], "{TAB}") = 0 Then
MsgBox(80,"","Compte invalide, désolée.." &@CRLF&@CRLF& "Veuillez le modifier pour le mettre aux normes."&@crlf&"Erreur : pas de séparateur {TAB} entre compte et pass.")
DesAct ()
Return -1
EndIf
Local $Clef = InputBox (@ScriptName & " - Code du compte " & $aLog[$compteBis], "Veuillez entrer la clef de " & $aLog[$compteBis]& " :", "", "°")
If @error = 1 Then
DesAct ()
Return -2
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 & Message(), 2) <> 2 Then
TrayTip (@Scriptname, "Lancement de la fenêtre Dofus.", 0)
Run ($prgChemin & $prgNom, $prgChemin)
AutoItSetOption ("WinTitleMatchMode", 3)
Do
Sleep (200)
Until WinActive ("Dofus 2.0"); Or WinActive ("Dofus - Opera") Or WinActive ("Dofus - Windows Internet Explorer") Or WinActive ("Dofus - Mozilla Firefox")
AutoItSetOption ("WinTitleMatchMode", 1)
WinSetTitle ("Dofus", "", "Dofus 2.0 - " & $aLog[$compteBis])
TrayTip ("","",0)
Sleep (1000)
Traytip (@ScriptName, "Veuillez placer votre curseur" & @CRLF & 'sur la zone "Compte Ankama".', 10)
AutoItSetOption ("MouseCoordMode", 0)
$posDof = WinGetClientSize ("Dofus 2.0 - " & $aLog[$compteBis])
Do
WinWaitActive ("Dofus 2.0 - " & $aLog[$compteBis])
$posCur = MouseGetPos ()
Sleep(20)
Until (MouseGetCursor () = 5) And ($posCur[0] < $posDof[0]) And ($posCur[1] < $posDof[1]) And ($posCur[0] > 0) And ($posCur[1] > 0)
MouseClick ("left")
Send ($NDCMDP[1], 1)
Send ("{TAB}")
Send ($NDCMDP[2], 1)
Send ("{TAB}{ENTER}")
;~ AutoItSetOption ("MouseCoordMode", 1)
;~ TrayTip (@Scriptname, "Veuillez passer votre souris" & @CRLF & 'sur le bouton "OK".', 0)
;~ Do
;~ WinWaitActive ("Dofus 2.0 - " & $aLog[$compteBis])
;~ sleep (20)
;~ $cur = MouseGetPos ()
;~ Until ((MouseGetCursor () = 0) And (PixelGetColor ($cur[0], $cur[1]) = 0xFF9900))
;~ MouseClick ("left")
TrayTip ("", "", 0)
Else
DesAct ()
Return -3
EndIf
DesAct ()
Return
EndFunc
Func Message () ;Le message débile qui ne sert à rien.
Switch Random (0, 4, 1)
Case 0
Return "(\__/)" & @CRLF & "( ' . ' )" & @CRLF & '(")_(")'
Case 1
Return @CRLF & "Vous pouvez aussi aller jouer dehors," & @CRLF & "avec les papillons, les fleurs et les oiseaux."
Case 2
Return ""
Case 3
Return @CRLF & "Ou patientez 2 secondes," & @CRLF & "que la fenêtre se ferme d'elle-même."
Case 4
Return @CRLF & "La Vie est comme cette boîte de dialogue :" & @CRLF & "C'est quand elle se ferme qu'on arrive à l'essentiel."
EndSwitch
EndFunc
Func Fini () ;Fermeture du script en fin de connexion
$fin = GUICtrlRead ($CFini)
EndFunc
Func Void () ;Fonction vide, utile pour tester si un bouton "répond" ou pas lors des tests de débug. ^^'
MsgBox (80, @ScriptName, "L'objet cliqué (" & @GUI_CtrlId & ") n'a pas" & @CRLF & "d'action associée, désolée." & @CRLF & "contenu = " & GUIctrlread (@GUI_CtrlId))
EndFunc
Func Quit () ;Fermeture de la fenêtre appelante, ou du script entier si il ne reste que la fenêtre de base. :)
GUIDelete (@GUI_WinHandle)
If @GUI_WinHandle = $FenBase Then Exit
DesAct ()
EndFunc
;==========================Fonctions AutoIt 3 modifiées========================================
Func _FileWriteToLine2 ($sFile, $iLine, $sText, $fOverWrite = 0) ;Ecrire une ligne particulière dans un fichier texte
If Not FileExists ($sFile) Then FileWrite ($sFile, "")
Local $filtxt = FileRead ($sFile, FileGetSize ($sFile))
$filtxt = StringSplit ($filtxt, @CRLF, 1)
If UBound ($filtxt) - 1 < $iLine Then ReDim $filtxt[$iLine + 1]
Local $fil = FileOpen ($sFile, 2), $i, $limit = UBound ($filtxt) - 1, $file2write = ""
For $i = 1 To $limit
If $i = $iLine Then
If $fOverWrite = 1 Then
If $sText <> "" Then
If $i < $limit And $sText <> @CRLF Then
$file2write &= $sText & @CRLF
ElseIf $i = $limit Or $sText = @CRLF Then
$file2write &= $sText
EndIf
Else
If $i < $limit Then
$file2write &= $sText
EndIf
EndIf
EndIf
If $fOverWrite = 0 Then
If $i < $limit Then
If $sText = @CRLF Then
$file2write &= @CRLF & $filtxt[$i] & @CRLF
Else
$file2write &= $sText & @CRLF & $filtxt[$i] & @CRLF
EndIf
ElseIf $i = $limit Then
If $sText = @CRLF Then
$file2write &= @CRLF & $filtxt[$i]
Else
$file2write &= $sText & @CRLF & $filtxt[$i]
EndIf
EndIf
EndIf
ElseIf $i < $limit Then
$file2write &= $filtxt[$i] & @CRLF
ElseIf $i = $limit Then
$file2write &= $filtxt[$i]
EndIf
Next
FileWrite ($fil, $file2write)
FileClose ($fil)
Return 1
EndFunc ;==>_FileWriteToLine2
Func _FileWriteFromArray2 ($File, $a_Array, $i_Base = 0, $i_UBound = -1) ;Transformer un Array (Liste) en fichier texte
Local $hFile, $x, $file2write = ""
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
$file2write &= $a_Array[$x] & @CRLF
$x += 1
Until $x = $i_UBound
FileWrite ($hFile, $file2write & $a_Array[$i_UBound])
If IsString ($File) Then FileClose ($hFile)
EndFunc ;==>_FileWriteFromArray2
Func _FileReadToArray2 ($sFilePath, ByRef $aArray) ;Transformer un fichier texte en Array (Liste)
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
La très légère différence de taille avec la version "normale" du DofusLog 1_10, c'est à cause de la mise en commentaire d'une partie du source, qui ne pouvait pas être re-appliqué. (Notamment, le chemin d'installation depuis le registre Widows pour chercher "Dofus.exe", pour ne citer que lui.)
Et donc, votre DofusLog habituel est compatible avec vos comptes habituels, toutes les fonctionnalités sont de retour pour votre plus grand plaisir !
(Le script utilise le chemin d'installation par défaut $prgChemin = "C:\Program Files\Dofus 2 Online\app\", ou à entrer soi-même si non-trouvé pour lancer Dofus 2.0. //Si rien n'est demandé, c'est que le script a trouvé Dofus 2.0 à cet endroit. :])
Enjoy !
Za.
Dernière modification par Famille Za ; 25/01/2010 à 14h23.
Motif: Edition des liens.
|
12/10/2009, 21h49
|
|
|
|
Et voilà la 2_0 pour moi aussi, youhou, presque du AG !
Et voilà, le DofusLog 2_0 est arrivé !
Comment le récupérer ?
Argh, le code source est passé trop long (j'en parle plus bas, il fait 47242 caractères !), le forum n'accepte plus de l'afficher dans son entier dans un post forum.. et ça se comprend !
Version Compilée : DofusLog-v2_0.exe - 291.35 kB
Version Scripte : DofusLog-v2_0.au3 - 46.1 kB
Version Source : Désolée, pas cette fois sur JoL, rendez-vous sur Pastebin -> http://pastebin.com/f51b4900a
47242 caractères pour 1097 lignes, vivement la prochaine !
J'ai changé d'hébergeur pour mes fichiers, il s'agit maintenant de Steekr (contre MegaUploads, avant), c'est mieux ?
Ce qui change depuis la version 1_10 ?
- Sécurité améliorée
Pour que le script accepte de lâcher les identifiants, il faut que la fenêtre active porte le bon titre ("Dofus - [Surnom]"), que la souris soit sur une zone de texte (le "Compte Ankama") dans la fenêtre, et que ça reste sans bouger pendant ~1 seconde. (La faille était de faire un alt-tab entre la "bonne" fenêtre Dofus et une autre fenêtre pour voir les identifiants. C'est corrigé.)
- Création (semi-automatique) d'un fichier "DofusLog.ini" contenant
-> Auteur ("Za"), Version ("2_0") par défaut
-> le chemin d'accès au fichier de Log (fixé à "Non Communiqué" par défaut, pour garder un anonymat complet sur vos fichiers)
-> le chemin d'accès au lanceur de Dofus (vide par défaut, pratique pour sauvegarder la place de l'exécutable Dofus à lancer)
-> le dernier fichier de skins utilisé (idem, par défaut vide)
-> l'option de sauvegarde de position de fenêtre principale (par défaut vide, voir dans les menus pour changer)
-> l'option de connexion en plein écran (attention, compatible Dofus 1.0 uniquement ! ~Ca m'apprendra à mettre 6 mois pour développer une interface de skins, tiens... ^^')
-> la dernière position connue de la fenêtre (colonne+ligne, par défaut à "-1")
- Système de clef Unique mis en place (permet de sélectionner une clef à utiliser "par défaut" pour les surnoms, elle est garantie sécurisée)
- Ajout de plein de "TrayTips" pour rendre le script plus convivial (Notament quand vous chargez le script, le mieux est d'avoir une machine un-peu lente pour tous les lire !)
- Gros ménage dans l'ordre des informations demandées à l'utilisateur : Maintenant le Log, puis l'exécutable Dofus. (Si vous ne voyez pas de différence avec 'avant', c'est bien.)
- La gestion des listes de connexions via les raccourcis a été super-simplifiée : c'est un menu à 2 entrées : créer/charger. Créer un raccourcis fait un nouveau fichier avec la liste de connexion active (c'est plus simple), et charger permet la connexion d'une team depuis le script déjà ouvert
- Gestion de si la fenêtre "Dofus - [Surnom]" existe déjà : le script demande à la réutiliser
- Nettoyage du code, toutes les variables Globales sont déclarées en début de script, et toutes les Locales en début de fonction.
- Nouvelles phrases aléatoires : y'en a plein en plus, dont certaines varient en fonction de l'heure, de la date... À chaque instant, le script a le choix entre 10 phrases différentes.
- Les Skins sont implémentés ! Stockés sous la forme d'un fichier ".ini" (Skin.ini, par exemple), ils sont échangeables, compatibles et roxatifs ! Pour le moment, la personnalisation se fait juste sur la fenêtre principale. J'étendrai bientôt à toutes les fenêtres du script.
- Le Script ne se "bloque" plus : il peut être fermé à tout instant avec alt-q ou la croix rouge en haut à droite. Si il ne se ferme pas directement, c'est qu'une question est posée à l'utilisateur (Il suffit alors de répondre nimporte-quoi pour fermer le script de manière brutale).
- Les informations super sensibles (la Clef du surnom et le mot de passe Dofus) sont "cachés" : les caractères sont remplacés par des "*" à l'affichage dans la fenêtre de Nouveau/Modification de compte. C'était le seul instant où mon script mettait en danger les informations utilisateur, c'est maintenant réparé.
(Je rappelle que seul le surnom du compte est une information visible par la modification d'un compte, et que les autres informations ne peuvent être que remplacées volontairement par l'utilisateur.)
- La création/chargement d'un fichier de Log depuis le menu "Fichier" fonctionne maintenant correctement.
- Le code source a dépassé les 1000 lignes (1097, précisément), à partir de cette limite les programmes se tapent à peu-près un bug de plus toutes les 10 lignes. Argh, j'ai besoin de vous pour les traquer ! Attrappez-les tous ! Pokémon !!
Donc, en parlant des bugs :
-> mettre un "&" devant une lettre dans un surnom permet un raccourcis rapide sur la lettre suivante.
Exemple : &Zamiza mettra un raccourcis pour le surnom "Zamiza" en appuyant sur la touche "z" dans le script.
Là où y'a un bug (car ça, c'est pas un bug, c'est une avancée utile !), c'est que la fenêtre dofus se retrouve avec un nom tout laid de type "Dofus - &Zamiza".
Je vais voir à virer dans ce cas le "&".
-> parfois (rarement), le script est trop méchant, et ne veut pas écrire les identifiants quand la souris est au bon endroit. Je suis au courant : c'est juste une preuve que la sécurité du script est trop efficace. Je n'ai pas encore de solution valable à vous proposer, sinon de quitter le script et de le relancer en utilisant la fenêtre déjà existante, ça devrait être bon.
Ce qui ne change pas depuis la version 1_10 ?
Le fonctionnement du script. Il se base toujours sur un fichier texte sélectionné par l'utilisateur, crypté, et gère la connexion d'un/plusieurs comptes au jeu Dofus de manière respectueuse.
Ce qui va changer pour la prochaine version ?
- Encore une refonte du code en vue, mais cette fois, je vais essayer de repasser en-dessous des 800 lignes ! è_é" (tout en gardant bien-sûr toutes les fonctionnalités actives.)
- Déplacement de quelques objets dans les fenêtres, vous pourrez le voir à travers le module de Skin (en utilisant les hauteurs de ligne et la séparation entre elles), c'est "pas top" pour l'instant. Ca sera "top" la prochaine fois !
- Ajout de vos idées ! Allez, à vos claviers, dites moi ce qui vous ferait le plus plaisir pour améliorer mon script ! Le "petit détail qui fâche", ou la grosse amélioration à quoi vous pensez, je me ferai une joie de l'ajouter !
Pour finir ce long post, je vous offre 2 images du DofusLog, avec un skin différent :
N'hésitez pas à parcourir le menu d'Options pour découvrir toutes les nouveautés !
Allez, Joyeux Noël, Bonne Année, Bonne Santé toussa, je soigne mon angine et je reviendrai encore plus en forme pour 2010 !
À bientôt,
Za.
P.S : Grand malheur prévu pour 2010, le premier Janvier sera un Vendredi 13 ! Fear.
Dernière modification par Famille Za ; 25/01/2010 à 14h23.
Motif: Edition des liens.
|
02/12/2009, 21h21
|
|
|
|
Enorme ça , moi qui me demander ce qu'aller devenir mon vieux DofusLog !
Merci Za' !
|
02/12/2009, 21h29
|
|
|
|
Utilisateurs regardant la discussion actuelle : 1 (0 membre(s) et 1 invité(s))
|
|
|
|
| |