|
DofusLog 1_10 est arrivé ! Heureusement que j'avais prévu de finir fin février 2009..
Coucou !
Citation :
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 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. ^^' |
12/10/2009, 17h04 |
|
Aller à la page... |
AIO-Log, script de connexion à Dofus [windows]
Suivre Fil fermé |
|
Partager | Rechercher |
|
Je préfère cette version niveau pratique pour se connecter en multi
Sinon, rien d'anormal. |
12/10/2009, 18h05 |
|
|
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 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. |
12/10/2009, 20h49 |
|
|
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. |
02/12/2009, 20h21 |
|
Impératrice
|
Enorme ça , moi qui me demander ce qu'aller devenir mon vieux DofusLog !
Merci Za' ! |
02/12/2009, 20h29 |
|
|
En fait il enregistre bien le chemin, mais ne met pas à jour la ligne "Exécutable", elle reste à "Dofus.exe" et non "mon/chemin/Dofus.exe"
|
09/12/2009, 10h14 |
|
Alpha & Oméga
|
La version 2.0 ne marche pas chez moi, il tape bien le nom de compte, mais oublie des caractères au mot de passe.
|
09/12/2009, 14h20 |
|
|
|
09/12/2009, 14h35 |
|
Alpha & Oméga
|
|
09/12/2009, 18h49 |
|
|
Za, pour la largeur des noms de compte, je préfère la 1ère solution :°
tavu²§ g te souti1 dep8 le Dbu ds tn lojisiail looooooool²§§§§ |
09/12/2009, 20h11 |
|
|
Voilà, la version 2_1 est disponible !
Version compilée : DofusLog-v2_1.exe - 291.3 kB Version script : DofusLog-v2_1.au3 - 46.1 kB Version source : http://pastebin.com/f4c01bbb3 52828 caractères pour 1147 lignes.. J'espère que ça règle une bonne partie des soucis ! ChangeLog : -> Application du skin sur la totalité du script -> Affichage dynamique des fenêtres en fonction de la taille de la police utilisée -> Meilleur affichage des objets sur les fenêtres, il me reste à fignoler la hauteur de la fenêtre principale -> Réactivation de la boucle des objets sur la fenêtre principale : sisi, j'y tiens, c'est super-utile -> Meilleure prise en charge du "Plein Écran" sous Dofus 1.X / 2.0, ça faisait interférence sur le mot de passe sous Dofus 2.0 -> Ralentissement de la vitesse d'écriture des informations dans la fenêtre Dofus : c'est une deuxième voie pour éviter les problèmes d'interférences -> Disparition de la gestion de la Hauteur de Ligne par Skin : le script s'en charge tout seul maintenant -> Ajout de transparence sur les fenêtres, c'est bien ? Ca change rien ? osef ? à désactiver de toute urgence ? Ou à activer/désactiver suivant le Skin ? -> Implémentation des Avatars liés aux surnoms : le but de la prochaine version sera de changer l'icône de la fenêtre dofus en fonction du surnom choisit. -> Sauvegarde auto de l'état du bouton "Fermer le script après ce compte" dans le dofusLog.ini -> Légère modification au niveau de la sélection de l'exécutable dofus : Ca devrait régler le problème de chemins invalides ou non-mémorisés, mais ça demande une confirmation supplémentaire du script. Je dois me pencher sur la question de cette double-validation. (Première : le "nom" de l'exécutable a changé, ok, et deuxième c'est que le "nom+chemin" de l'exécutable a changé.. Mouais. ^^) Voilà, merci de vos retours ! Et n'hésitez pas à vous échanger les Skins.ini, histoire de partager vos créations ! ^^ Za. |
10/12/2009, 17h14 |
|
|
on le télécharge comment sur ton site la ?
|
10/12/2009, 17h23 |
|
|
Cliquez sur le lien pour arriver sur SteekR.com, et ensuite cliquez sur le fichier pour l'enregistrer dans votre ordinateur.
J'en profite pour vous demander (puisque c'est faisable), si je fais un pack avec les versions compilée + script dans le même lien (les 2 fichiers présentés avec le même lien, vous choisissez la version que vous voulez télécharger), ça vous intéresse ? (exemple avec le DofusLog-v2_1.) Za. |
10/12/2009, 17h26 |
|
|
Met le sur megaupload, si on n'est pas inscrit, ça ne marche pas...
|
10/12/2009, 18h08 |
|
|
ça marche niquel hein
Suffit de cliquer sur l'icone et ça lance le téléchargement (pas sur la petite case à cocher) edit : les boutons sont un peu bas, y'a un bug là dessus : |
10/12/2009, 19h09 |
|
|
Chez moi ça me redirige immédiatement vers la page d'inscription...
|
11/12/2009, 10h14 |
|
|
J'ai un bug pour connecter l'un de mes comptes.
Quand je regarde dans le log.txt, c'est la ligne qui prend le plus de caractère. |
13/12/2009, 09h27 |
Suivre Fil fermé |
Connectés sur ce fil1 connecté (0 membre et 1 invité)
Afficher la liste détaillée des connectés
|