|
|
[Wiki] DofusLog, script pour le login/pass [Windows only]
|
|
|
Citation:
Envoyé par Famille Za
Exemple avec les surnoms "Marcel" et "Bertrand" :
"Veuillez entrer la clef de Marcel :" ...
(Lancement de la fenêtre Dofus)
Quand la fenêtre "Dofus" est au premier plan (uniquement celle qui porte le nom d'origine), le titre est modifié en "Dofus - Marcel".
"Veuillez entrer la clef de Bernard" ...
("finalement nan, je vais pas connecter Marcel, mais juste Bernard".)
Les pinceaux sont emmêlés
Merci pour ton explication, j'ai tout compris  *clap clap !*
Tu as une date à nous sortir, ou on attend comme pour la 2.0 ? 
Merci, vraiment
|
22/02/2009, 12h50
|
|
|
|
Citation:
Envoyé par rageben
Alors, le principe est simple, je lance des clic à un endroit bien précis de l'écran (tu donne l'adresse du pixel visé)... pas fun tu va dire si on a pas tous la meme résolution.
Pour résoudre le probleme, deja il faut maximiser la fenetre systématiquement au lancement...
Pour l'histoire de la résolution j'ai pensé à un moyen "adapter à chaque résolution".
J'ai coder ceci rapidement, le but étant de trouver la zone de texte.
Code:
$prgChemin = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Ankama\Dofus", "Path")
;lancement de la fenêtre
ShellExecute("Dofus.exe","", $prgChemin)
WinActivate("Dofus")
While WinActivate("Dofus") = 0
SLeep(300)
WinActivate("Dofus")
WEnd
$Dim = WinGetPos("Dofus") ; Regarde les coordonées de la fenêtre
If not @Error Then ; Si elle et bien ouverte
$DimA = $Dim[0] ; Enregister la coordonées x par DimA
$DimB = $Dim[1] ; Enregister la coordonées y par DimB
$DimC = $Dim[0] + $Dim[2] ; DimC est égal au point x + la largeur de la fenêtre, cela va donc donner le point opposé.
$DimD = $Dim[1] + $Dim[3] ; DimD est égal au point y + la longeure de la fenêtre, cela va donc donner le point opposé.
$DimMiddleX = $Dim[2] / 2 + $DimA ; Signifie la coordonnées X du milleu de l'écran
$DimMiddleY = $Dim[3] / 2 + $DimB ; Signifie la coordonnées Y du milleu de l'écran
Endif
$Haut = PixelSearch($diMa,$dimb,$diMc,$dIMd, 883229) ;Cherche un Pixel de la fenêtre de login
While $Haut = 1 ; Ne pas quitter la boucle tant que ce pixel n'apparait pas...
Sleep(300)
$Haut = PixelSearch($diMa,$dimb,$diMc,$dIMd, 883229)
WEnd
If not @error Then
MouseClick("left",$DimMiddleX - $DimMiddleX/2, $DimMiddleY - $DimMiddleY/6.5, 1, 2)
Send("Mon compte Ankama Games")
MouseClick("left",$DimMiddleX - $DimMiddleX/2, $DimMiddleY, 1, 2)
Send("Mon mot de passe.")
Send("{ENTER}")
EndIf
C'est pas tout à fait au point mais j'espère que ça servira !
Bonne nuit !
|
23/02/2009, 05h20
|
|
|
|
@Mewain : Le p'tit problème de ta solution (et je l'ai eu avant toi, donc c'est pour ça que j'en parle ! ^^), c'est le titre de la fenêtre, ainsi que les coordonnées de la souris.
(Je répond en MP, plutôt, car ça fait un gros HS, tout de même.)
C'est pas très dur à mettre en place (n'est-ce pas ?  ), mais je ne le ferai pas pour le DofusLog en natif. ^^
Et voilà, je suis globalement contente de moi pour la version 1_9b, elle est disponible !
Version compilée : DofusLog-v1_9b.exe - 265.72 kB.
Version scripte : DofusLog-v1_9b.au3 - 24.18 kB.
Code source :
Code:
#include <GUIConstants.au3> ;Nécessaire surtout pour le $GUI_EVENT_CLOSE
#include <String.au3> ;Pour l'encryptage
Global $fichier, $prgChemin, $prgNom, $FenBase, $Label, $CFini, $fin, $Lancer, $Lance = 0, $Multico, $multi = 0, $Modifier, $Nouveau, $Supprimer, $Ajoute, $Retire, $Haut, $Bas, $Boutons, $Options, $LLancer, $LModifier, $LNouveau, $LSupprimer, $Fichiers, $FNouv, $FCharge, $FQuit, $RNouveau, $RModifier, $RCharge, $RSupprime, $Aide, $ATuto, $aLog, $coListe, $CcoListe, $Radio
Global $NbLignes = 2 ;Nombre de lignes utilisées par entrée dans le fichier de Log
Global $logChemin = @ScriptDir & "\log.txt"
Global $compte = 1
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
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)]
$Skin = StringSplit('-1|-1|-1|-1|-1|""|""|-1|-1|-1', "|")
For $n = 0 To UBound ($Skin) - 2
$Skin[$n] = $Skin[$n+1]
Next
ReDim $Skin[UBound ($Skin) - 1]
Charge ()
While 1
$msg = GUIGetMsg ()
Switch $msg
Case 0 And $Lance <> 1
ContinueLoop
Case $GUI_EVENT_CLOSE, $FQuit
GUIDelete ($fenBase)
Exit
Case $Radio[1] To $Radio[UBound ($Radio) - 1]
$compte = FRadio ($msg, $compte)
Case $Lancer, $LLancer, $Lance = 1
Lance ()
Case $Multico
FMultico ()
Case $Modifier, $LModifier
FModifier ()
Case $Nouveau, $LNouveau
FNouveau ()
Case $Supprimer, $LSupprimer
FSupprimer ()
Case $CFini ;Bouton fermer après la connec
$fin = GUICtrlRead ($CFini)
Case $Ajoute
MAjoute ()
Case $Retire
MRetire ()
Case $Haut
MHaut ()
Case $Bas
MBas ()
Case $RNouveau
RModif ()
Case $RCharge
RCharge ()
Case $RModifier
RModif (1)
Case $RSupprime
RSuppre ()
Case $FNouv, $FCharge
GUIDelete ($fenBase)
Charge (1)
Case $ATuto
MsgBox(80,@ScriptName,"Vide...")
EndSwitch
WEnd
;==============================Fonctions totalement créées par Za====================================
Func Charge ($nouv = 0)
If Not FileExists ($logChemin) Or $nouv = 1 Then
$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, 6,'Global $logChemin = "' & $fichier & '"', 1)
TrayTip ("", "", 0)
Else
$fichier = $logChemin
EndIf
$existe = _FileReadToArray2 ($fichier, $aLog)
$prgChemin = RegRead ("HKEY_LOCAL_MACHINE\SOFTWARE\Ankama\Dofus", "Path") & "\"
$prgNom = "Dofus.exe"
If Not FileExists ($prgChemin & $prgNom) Then
If Not FileExists ($prgChemin & "Dofus_client.exe") Then
$prgNom = FileOpenDialog (@ScriptName & " - Sélectionnez votre lanceur jeu Dofus", $prgChemin, "(*.exe; *.html)|Tous (*.*)", 1, "Dofus")
Else
$prgNom = "Dofus_client.exe"
EndIf
EndIf
If Not $existe Then
Modifier (1, $fichier)
EndIf
_FileReadToArray2 ($fichier, $aLog)
Dim $Radio[(UBound ($aLog) + 1) / $NbLignes]
Fenetre ()
EndFunc
Func Fenetre ()
GUIDelete ($fenBase)
Local $tFen = ((UBound ($aLog) - 1) / $NbLignes)
Local $lFen = (200 + 200 * ($multi = 1))
$FenBase = GUICreate (@ScriptName, $lFen, 19 + 50 + $tFen * $Ht + 30, -1, -1, 0x70000)
GUISetBkColor ($Skin[0], $fenBase)
GUISetCursor ($Skin[1], $fenBase)
GUISetFont ($Skin[2], $Skin[3], $Skin[4], $Skin[5], $fenBase)
GUISetIcon ($Skin[6], $Skin[7], $fenBase)
GUICtrlSetDefBkColor ($Skin[8], $fenBase)
GUICtrlSetDefColor ($Skin[9], $fenBase)
$Label = GUICtrlCreateLabel ("Choisissez un compte à Logger :", 1, -2, -1, -1)
$Boutons = GUIStartGroup ($FenBase) ;Séparation des groupes, en préparation ! -utile pour la boucle de focus
$Lancer = GUICtrlCreateButton ("Lancer !", 150, $Ht / 2 + $Ht / 2 * $tFen , 47, 25)
GUICtrlSetResizing ($Lancer, 8 + 768)
If (UBound ($aLog)) / $NbLignes > 2 Then
$Multico = GUICtrlCreateCheckbox ("Multi", 150, $Hligne + $Ht + $Ht / 2 * $tFen, -1, $Hligne)
GUICtrlSetResizing ($Multico, 8 + 768)
GUICtrlSetState ($Multico, $multi)
EndIf
If $multi = 1 And $Lance <> 1 Then
$Ajoute = GUICtrlCreateButton ("Ajouter ->", 255, 0)
For $compteBis = 0 To UBound ($coListe) - 1
$CcoListe[$compteBis] = GUICtrlCreateCheckbox ($aLog[$coListe[$compteBis]* $NbLignes - 1], 255, 27 + $compteBis * $Ht)
Next
$Retire = GUICtrlCreateButton ("<- Retirer", 275, 27 + UBound ($coListe) * $Ht)
$Haut = GUICtrlCreateButton ("Monte", 205, $Ht + $Ht * (UBound ($CcoListe) - 1) / 2, 40)
$Bas = GUICtrlCreateButton ("Baisse", 205, ($Ht - 3) + $Ht + $Ht * (UBound ($CcoListe) - 1) / 2, 40)
EndIf
$Modifier = GUICtrlCreateButton ("Modifier", 150, 33 + $tFen * $Ht, 47, 25, 0x8000)
GUICtrlSetResizing ($Modifier, 8 + 64 + 768)
$Nouveau = GUICtrlCreateButton ("Nouveau", 1, 33 + $tFen * $Ht, -1, 25, 0x8000)
GUICtrlSetResizing ($Nouveau, 8 + 64 + 768)
$Supprimer = GUICTRLCreateButton ("Supprimer", 75, 33 + $tFen * $Ht, -1, 25, 0x8000)
GUICtrlSetResizing ($Supprimer, 8 + 64 + 768)
$CFini = GUICtrlCreateCheckbox ("Fermer le script après ce compte", 15, $Hligne, -1, 13 )
GUICtrlSetResizing ($CFini, 2 + 32 + 768)
GUICtrlSetState ($CFini, $fin)
$Fichiers = GUICtrlCreateMenu ("Fichier", -1, 0)
$FNouv = GUICtrlCreateMenuItem ("Nouveau", $Fichiers, 0)
$FCharge = GUICtrlCreateMenuItem ("Charger", $Fichiers, 1)
$FLigneVide = GUICtrlCreateMenuItem ("", $Fichiers, 2)
$FQuit = GUICtrlCreateMenuItem ("Quitter", $Fichiers, 3)
$Options = GUICtrlCreateMenu ("Options", -1, 1)
$OLog = GUICtrlCreateMenu ("Compte", $Options, 0)
$LLancer = GUICtrlCreateMenuItem ("Lancer !", $OLog, 0)
$LNouveau = GUICtrlCreateMenuItem ("Nouveau", $OLog, 1)
$LModifier = GUICtrlCreateMenuItem ("Modifier", $OLog, 2)
$LSupprimer = GUICtrlCreateMenuItem ("Supprimer", $OLog, 3)
$ORaccourcis = GUICtrlCreateMenu ("Raccourcis", $Options, 1)
$RNouveau = GUICtrlCreateMenuItem ("Nouveau", $ORaccourcis, 0)
$RCharge = GUICtrlCreateMenuItem ("Charger", $ORaccourcis, 1)
$RModifier = GUICtrlCreateMenuItem ("Modifier", $ORaccourcis, 2)
$RSupprime = GUICtrlCreateMenuItem ("Supprimer", $ORaccourcis, 3)
$OSkin = GUICtrlCreateMenu ("Skins", $Options, 2)
$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)
$Aide = GUICtrlCreateMenu ("Aide", -1, 3)
$ATuto = GUICtrlCreateMenuItem ("Tutoriel", $Aide, 0)
GUICtrlSetState ($ATuto, $GUI_DISABLE)
$compteBis = 1
While $compteBis < (UBound ($aLog)) / $NbLignes
$Radio[$compteBis] = GUICtrlCreateRadio ($aLog[($compteBis) * $NbLignes - 1]& " .", 5, 27 + (($compteBis - 1) * $Ht), 135 - 136, $Ht - 3, 0x2000)
GUICtrlSetData ($Radio[$compteBis], $aLog[($compteBis) * $NbLignes - 1])
GUICtrlSetResizing ($Radio[$compteBis], 2 + 32 + 512)
$compteBis += 1
WEnd
GUICtrlSetState ($Radio[$compte], 1 + 256)
GUICtrlSetPos ($Radio[$compte], 15, 30 + ($compte - 1) * $Ht)
GUISetState ()
DesAct ()
EndFunc
Func DesAct ($DesActive = 0) ;Réactive les boutons par défaut
If $DesActive = 1 Then
GUICtrlSetState ($Lancer, $GUI_DISABLE)
GUICtrlSetState ($Modifier, $GUI_DISABLE)
GUICtrlSetState ($Nouveau, $GUI_DISABLE)
GUICtrlSetState ($Supprimer, $GUI_DISABLE)
GUICtrlSetState ($Options, $GUI_DISABLE)
GUICtrlSetState ($Fichiers, $GUI_DISABLE)
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
If (UBound ($aLog) - 1) / $NbLignes < 2 Then
GUICtrlSetState ($Supprimer, $GUI_DISABLE)
GUICtrlSetState ($LSupprimer, $GUI_DISABLE)
EndIf
EndFunc
Func FSupprimer ()
If MsgBox (0x51, @ScriptName & " - Suppression", "Souhaitez-vous vraiment détruire cette entrée ?") = 2 Then Return
DesAct (1)
$ligne = $compte * $NbLignes + 1
While $ligne < UBound ($aLog)
$aLog[$ligne - $NbLignes] = $aLog[$ligne]
$ligne += 1
WEnd
ReDim $aLog[UBound ($aLog) - $NbLignes]
ReDim $Radio[UBound ($Radio) - 1]
If $compte > (UBound ($aLog) - 1) / $NbLignes Then $compte -= 1
TrayTip (@ScriptName, "Effacement en cours...", 0, 16)
_FileWriteFromArray2 ($fichier, $aLog, 1, UBound ($aLog) - 1)
TrayTip ("", "", 0)
$multi = 0
Fenetre ()
EndFunc
Func FModifier ()
DesAct (1)
If Modifier ($compte, $fichier) Then
Fenetre ()
Else
Desact ()
EndIf
EndFunc
Func FNouveau ()
DesAct (1)
ReDim $aLog[UBound ($aLog) + $NbLignes]
ReDim $Radio[UBound ($Radio) + 1]
If Modifier (((UBound ($aLog) - 1) / $NbLignes) , $fichier) Then
Fenetre ()
Else
ReDim $aLog[UBound ($aLog) - $NbLignes]
ReDim $Radio[UBound ($Radio) - 1]
EndIf
DesAct ()
EndFunc
Func Modifier ($compteBis, $fich)
$compteBis = $NbLignes * ($compteBis - 1) + 1
Local $FenMod = GUICreate (@ScriptName, 200, $HLigne * 12, -1, -1, -1, 0x00000080)
Local $LabelSurnom = GUICtrlCreateLabel ("Veuillez entrer un" & @CRLF & " pseudonyme :", 0, 0)
Local $LabelClef = GUICtrlCreateLabel (@CRLF & "Clef de cyptage :", 120, 0)
Local $LabelNDC = GUICtrlCreateLabel ("Veuillez entrer le nom du compte Dofus :", 0, $Hligne * 4)
Local $LabelMDP = GUICtrlCreateLabel ("Veuillez entrer le mot de pass associé :", 0, $Hligne * 7)
Local $InputPseudo = GUICtrlCreateInput ($aLog[$compteBis], 2, $Hligne * 2, 125)
Local $InputClef = GUICtrlCreateInput ("", 149, $Hligne * 2, 50)
Local $InputNDC = GUICtrlCreateInput ("", 2, $Hligne * 5, 196)
Local $InputMDP = GUICtrlCreateInput ("", 2, $Hligne * 8, 196)
Local $BValide = GUICtrlCreateButton ("Valider", 2, $Hligne * 10)
Local $BAnnule = GUICtrlCreateButton ("Annuler", 100, $Hligne * 10)
GUISetState ()
While 1
$Mmsg = GUIGetMsg ()
Switch $Mmsg
Case 0
ContinueLoop
Case $GUI_EVENT_CLOSE
GUIDelete ($FenMod)
Return 0
Case $BAnnule
GUIDelete ($FenMod)
Return 0
Case $BValide
If MsgBox (0x51, @ScriptName & " - Modifications", "Attention, vous vous apprêtez à" & @CRLF & "modifier définitivement ces données." & @CRLF & "Êtes-vous sûr ?") = 2 Then Return 0
TrayTip (@ScriptName, "Écriture en cours...", 0, 16)
If GUICtrlRead ($InputPseudo) <> "" Then
$aLog[$compteBis] = GUICtrlRead ($InputPseudo, 0)
_FileWriteToLine2 ($fichier, $compteBis, $aLog[$compteBis], 1)
If GUICtrlRead ($InputNDC) <> "" and GUICtrlRead ($InputMDP) <> "" Then ;Si le nom de compte ou le mot de pass sont renseignés, modifier en conséquence. Si aucun des deux ne l'est, mais que la ligne est vide -> go² ajouter un simple"{TAB}".
If GUICtrlRead ($InputClef) = "" Then
$aLog[$compteBis + 1] = GUICtrlRead ($InputNDC) & "{TAB}" & GUICtrlRead ($InputMDP)
Else
$aLog[$compteBis + 1] = _StringEncrypt (1, GUICtrlRead ($InputNDC), GUICtrlRead ($InputClef)) & "{TAB}" & _StringEncrypt (1, GUICtrlRead ($InputMDP), GUICtrlRead ($InputClef))
EndIf
_FileWriteToLine2 ($fichier, $compteBis + 1, $aLog[$compteBis + 1], 1)
EndIf
EndIf
TrayTip ("", "", 0)
GUIDelete ($FenMod)
Return 1
EndSwitch
WEnd
EndFunc
Func FRadio ($mess, $compteBis)
If $mess <> $Radio[$compteBis] Then
GUICtrlSetPos ($Radio[$compteBis], 5, 27 + (($compteBis - 1) * $Ht))
While $mess <> $Radio[$compteBis]
$compteBis += 1
If $compteBis > (UBound ($Radio) - 1) Then
$compteBis = 1
EndIf
WEnd
GUICtrlSetPos ($Radio[$compteBis], 15, 30 + (($compteBis - 1) * $Ht))
Else
If $multi = 1 Then
MAjoute ()
Else
FLancer ($compteBis)
If $fin = $GUI_CHECKED Then Exit
EndIf
EndIf
Return $compteBis
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)
GUICtrlSetPos ($Retire, 275, 27 + UBound ($coListe) * $Ht)
GUICtrlSetPos ($Haut, 205, $Ht / 2 + $Ht * (UBound ($CcoListe) - 1) / 2, 40)
GUICtrlSetPos ($Bas, 205, ($Ht - 3) + $Ht / 2 + $Ht * (UBound ($CcoListe) - 1) / 2, 40)
EndFunc
Func MRetire ()
Local $n = 0, $q
While $n < UBound ($CcoListe)
If GUICtrlRead ($CcoListe[$n]) = $GUI_CHECKED Then
$q = $n
While $q < UBound ($CcoListe) - 1
$coListe[$q] = $coListe[$q + 1]
GUICtrlSetState ($CcoListe[$q], GUICtrlRead ($CcoListe[$q + 1]))
GUICtrlSetData ($CcoListe[$q], GUICtrlRead ($CcoListe[$q + 1], 1))
$q += 1
WEnd
GUICtrlDelete ($CcoListe[UBound ($CcoListe) - 1])
If UBound ($coListe) > 1 Then
ReDim $coListe[UBound ($coListe) - 1]
ReDim $CcoListe[UBound ($CcoListe) - 1]
GUICtrlSetPos ($Retire, 275, 27 + UBound ($coListe) * $Ht)
GUICtrlSetPos ($Haut, 205, $Ht + $Ht * (UBound ($CcoListe) - 1) / 2, 40)
GUICtrlSetPos ($Bas, 205, ($Ht - 3) + $Ht + $Ht * (UBound ($CcoListe) - 1) / 2, 40)
$n -= 1
Else
$multi = 0
Fenetre ()
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)
Local $n, $r
$fenRac = GUICreate (@ScriptName, 170, 4 * $Ht + $Hligne, -1, -1, -1, 0x00000080)
GUICtrlCreateLabel ("Sélectionnez le script :", 0, 0, -1, 2 * $Hligne)
If $mod = 0 Then
$IScript = GUICtrlCreateInput (@ScriptFullPath, 5, $Hligne, 100)
$BSParc = GUICtrlCreateButton ("Parcourir", 110, $Hligne, -1, 2 * $Hligne)
GUICtrlCreateLabel ("Sélectionnez le log :", 0, $Ht + $Hligne, -1, 2 * $Hligne)
$ILog = GUICtrlCreateInput ($logChemin, 5, $Ht + 2 * $Hligne, 100)
$BLParc = GUICtrlCreateButton ("Parcourir", 110, $Ht + 2 * $Hligne, -1, 2 * $Hligne)
$LComptes = GUICtrlCreateLabel ('Entrez les n° des comptes :', 0, 2 * $HT + 2 * $Hligne, -1, 2 * $Hligne)
GUICtrlSetTip ($LComptes, "Entrez le n° des comptes dans la liste," & @CRLF & "séparés par une simple virgule sans espace.")
$IComptes = GUICtrlCreateInput ($compte, 5, 2 * $Ht + 3 * $Hligne, 100)
$BValide = GUICtrlCreateButton ("Valider", 110, 2 * $Ht + 3 * $Hligne, -1, 2 * $Hligne)
Else
$n = FileOpenDialog (@ScriptName & " - Sélectionnez votre raccourcis :", @ScriptDir, "Raccourcis (*.lnk)", 8, @ScriptName & ".lnk")
If $n = "" Then Return
$r = FileGetShortcut ($n)
$IScript = GUICtrlCreateInput ($r[0], 5, $Hligne, 100)
$BSParc = GUICtrlCreateButton ("Parcourir", 110, $Hligne, -1, 2 * $Hligne)
GUICtrlCreateLabel ("Sélectionnez le log :", 0, $Ht + $Hligne, -1, 2 * $Hligne)
$ILog = GUICtrlCreateInput (StringMid ($r[2], 3, StringInStr ($r[2], '"', 2, 2) - 3), 5, $Ht + 2 * $Hligne, 100)
$BLParc = GUICtrlCreateButton ("Parcourir", 110, $Ht + 2 * $Hligne, -1, 2 * $Hligne)
$LComptes = GUICtrlCreateLabel ('Entrez les n° des comptes :', 0, 2 * $HT + 2 * $Hligne, -1, 2 * $Hligne)
GUICtrlSetTip ($LComptes, "Entrez le n° des comptes dans la liste," & @CRLF & "séparés par une simple virgule sans espace.")
$IComptes = GUICtrlCreateInput (StringMid ($r[2], StringInStr ($r[2], '"', 2, 2) + 2), 5, 2 * $Ht + 3 * $Hligne, 100)
$BValide = GUICtrlCreateButton ("Valider", 110, 2 * $Ht + 3 * $Hligne, -1, 2 * $Hligne)
EndIf
GUISetState ()
While 1
$RMsg = GUIGetMsg ()
Switch $RMsg
Case 0
ContinueLoop
Case $BSParc
$n = FileOpenDialog (@ScriptName & " - Sélectionnez votre script :", @ScriptDir, "Scripts (*.au3;*.exe)|Tous (*.*)", 8, @ScriptName)
If $n <> "" Then GUICtrlSetData ($IScript, $n)
Case $BLParc
$n = FileOpenDialog (@ScriptName & " - Sélectionnez le fichier contenant vos logs :", $logChemin, "Textes (*.txt)|Tous (*.*)", 8, "Log.txt")
If $n <> "" Then GUICtrlSetData ($ILog, $n)
Case $BValide
$n = FileOpenDialog (@ScriptName & " - Choissez le nom et répertoire du raccourcis :", @ScriptDir, "Raccourcis (*.lnk)", 8, @ScriptName & ".lnk")
If $n = '' Then ContinueCase
If StringInStr ($n, ".lnk") = 0 Then $n &= ".lnk"
FileCreateShortcut (GUICtrlRead ($IScript), $n, "", ' "' & GUICtrlRead ($ILog) & '" ' & GUICtrlRead ($IComptes))
ContinueCase
Case $GUI_EVENT_CLOSE
GUIDelete ($fenRac)
Return
EndSwitch
WEnd
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)
Charge ()
Return
EndFunc
Func RSuppre ()
$Racc = FileOpenDialog (@ScriptName & " - Sélectionnez votre raccourcis :", @ScriptDir, "Raccourcis (*.lnk)", 8, @ScriptName)
If $Racc <> "" Then FileDelete ($Racc) ;Sans confirmation, violente que je suis. ^^
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 ;Permet de vérifier que la ligne est bien censée contenir un login/pss cryptés
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]) ;Le cureseur est bien dans la fenêtre Dofus choisie + truc de texte
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 ()
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
;==========================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
616 lignes, et je sais plus où j'ai vu le nombre de caractères.
Améliorations par rapport à la 1_9 :
-> Meilleure prise en charge de la zone de saisie du nom de compte, il n'est (normalement...) plus possible d'envoyer des identifiants dans une mauvaise fenêtre suite à une fausse manipulation
-> Système de raccourcis totalement implanté ! Le fonctionnement n'est pas encore très intuitif, mais c'est une bonne base.
- - > Création/modification de raccourcis : vous entrez la position du DofusLog (elle est la bonne par défaut), vous entrez la position du fichier de logs (idem), ainsi que les numéros des comptes de la liste à connecter. Pour en sélectionner plusieurs de suite, il suffit de les écrire à la suite, séparés d'une simple virgule (sans espace !).
Il faut 'valider' pour que le raccourcis soit créé dans le répertoire désiré, avec le nom désiré. (Pas d'inquiétude : quel que soit le nom, l'extension raccourcis ".lnk" sera ajoutée de toute manière en cas d'absence.)
- - > Chargement d'un raccourcis : Permet de connecter les comptes choisis d'un raccourcis. Pratique pour faire des pré-sélections de teams à logguer, mais aussi si vous avez lancé le DofusLog au-lieu du raccourcis désiré. ^^
- - > Supprimer un raccourcis : Supprimer un raccourcis. (Sis, j'vous jure !) Y'a pas de confirmation avant la suppression, je devrais en rajouter une ?
-> Suppression de la bulle d'aide d'accueil de la version bêta 2 : elle ne servait à rien, et ne se fermait pas d'elle-même.
-> Meilleure gestion des différentes bulles d'aides, il en manque encore quelques-unes (notamment au niveau des raccourcis et des créations/modifications des entrées des comptes).
Bugs et remarques pour les évolutions futures :
-> J'ai ciblé le bug quand on supprime un compte de la liste principale avec la multico ouverte : ça sera réglé pour la prochaine fois.
Remède : Veuillez éviter de supprimer un compte de la liste principale quand il est aussi présent dans la liste de Multi : enlevez-le de la liste secondaire auparavant.
(Aucune influence sur le fonctionnement, sauf une fermeture du script à la réactivation de la Multi.)
-> Je n'ai pas encore modifié la possibilité de pouvoir changer un nom de compte OU un mot de pass pour une entrée de compte : idem qu'au-dessus, rendez-vous la prochaine fois.
Remède : Veuillez remplir les deux champs si vous en modifiez un. Aucun plantage, sauf que le champs non renseigné sera juste purement et simplement vierge.
(Aucune influence sur le script non-plus, il fonctionne très bien avec l'un ou l'autre [ou même les deux ^^'] champs vides.)
-> Quelques zones de saisies semblent être "décalées" par rapport à l'affichage : je ne sais pas d'où ça vient, mais ça sera réglé avec les skins (qui seront là à la 1_9c !).
Enfin, j'espère que ça réglera ce soucis ! Et je compte sur vous pour me faire des graphismes que même Ankama voudrait vous engager !
Hum.. C'est tout pour le moment !
Za.
@miss-prespic : (flood)
Nan, j'ai remplacé le Lapin par un truc aléatoire : il est toujours là, mais 1 chance sur 5 d'apparaître.
Je vous laisse profiter quelques temps de ces magnifiques phrases de remplacement, je les changerai peut-être entre 2 versions. (Ou les incluerai dans le skin, tiens. Bonne idée ça ! ^^)
Dernière modification par Famille Za ; 25/01/2010 à 14h26.
Motif: Edition des liens.
|
23/02/2009, 15h03
|
|
|
|
Chez moi, les raccourcis marchent. J'ai aussi vu la rubrique skin, inaccessible =(
L'espoir fait vivre (un skin zebre XD)
|
23/02/2009, 15h16
|
|
|
|
Je viens de changer la page d'accueil du Wiki : vous pouvez la compléter/modifier/arranger à votre guise, je suis pas douée là-dedans !
Je pense peut-être à inclure une capture d'écran de mon DofusLog (avec la liste des surnoms. ^^)
Za.
|
23/02/2009, 17h17
|
|
|
|
Dur, duur... Je n'arrive pas à me décider sur quoi commencer pour faire les skins.
Y'a plein de choix : avoir une forme commune pour tous, et permettre la modification des valeurs dans un tronc commun ?
Exemple : Type|Contenu|positionX|positionY|étendueX|étendueY|options|particularités = Bouton|"Lancer !"|36|24|-1|-1|7|
Ou accepter (mais c'est plus risqué) des lignes de commandes dans un fichier texte annexes ?
Exemple (dans le fichier texte) : $Lancer=GUICtrlCreateButton("Lancer !",36,24,-1,-1,7)
Ou même un mix des deux solutions plus complexes ?
Et pour l'évolution prévue, j'ai changé une option du raccourcis pour la prochaine fois : le DofusLog a automatiquement la case "fermer le script quand il a fini" cochée quand on lance par raccourcis. Compatible avec plusieurs comptes de suite, évidemment. 
Vu que je n'arrive pas à avancer sur le skin, je vais faire l'autre petit bout à traiter : les modifications de comptes, à rendre valides quand une seule des deux parties (nom de compte ou mot de pass d'un surnom) sont modifiés.
Appel aux motivés pour me donner une idée de fonctionnement pour les skins !
Za.
Edit : Oui, ça c'est déjà prévu. x)
Reste à créer le fichier qui contient les skins, ainsi que les possibilités annexes ! (Ajout d'images partout, par exemple.)
Re-Edit : Ajouté la possibilité de modifier le nom de compte OU le mot de pass selon l'envie, il est possible de mettre une clef différente pour chaque valeur, sauf que ça ne permet plus de se logguer. (Cette fonction est surtout utile si vous avez modifié votre mot de pass, sans avoir à ré-entrer le nom de compte.)
Et j'avance sur le gros bout, j'ai trouvé un début d'idée !
Ha, tant que j'y pense ! Pour Polobob, qui voulait mettre une clef dépendante de son registre, y'a un moyen très simple sans modifier grand-chose !
Remplacer dans la fonction Modifier () la variable $InputClef
Code:
Local $InputPseudo = GUICtrlCreateInput ($aLog[$compteBis], 2, $Hligne * 2, 125)
Local $InputClef = GUICtrlCreateInput ("", 149, $Hligne * 2, 50)
Local $InputNDC = GUICtrlCreateInput ("", 2, $Hligne * 5, 196)
Par :
Code:
Local $InputPseudo = GUICtrlCreateInput ($aLog[$compteBis], 2, $Hligne * 2, 125)
Local $InputClef = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ProductId") ;le p'tit bout de registre souhaité à mettre ici
Local $InputNDC = GUICtrlCreateInput ("", 2, $Hligne * 5, 196)
Et ainsi, pu besoin de toucher au reste du code ! ^^
Dernier édit avant uppage de Topic : Mwahaha, j'ai trouvé une manière roksante de faire des skins, vous pourrez m'en dire des nouvelles, ahahaha !
Bon, par-contre un ( unique) shutter de ponche en cul-sec ayant eu raison de mes capacités intellectuelles, je doute de terminer ce soir.
Et même si c'était le cas, je doute encore plus fortement de mettre à disposition dès ce soir !
(Et même si c'était le cas, il me reste 26 minutes pour finir.. Tendu. :P)
|
09/03/2009, 15h57
|
|
|
|
Je suis nul en programmation, je veux juste avoir la méthode la plus simple, où l'on télécharge "skin1" et qu'on le mette dans un répertoire, que dans DofusLog on choisisse : skin, charger : skin1
Bonne chance ?
|
09/03/2009, 16h10
|
|
|
|
En attendant de terminer effectivement ce que je suis en-train de faire, voici le contenu (susceptible d'être modifié ^^) du skin "original" du DofusLog :
Code:
Fenêtre Principale :
Type : Fenêtre
titre1 : @ScriptName
largeur : $lFen
hauteur : 19+50+$tFen*$Ht+30
posx : -1
posy : -1
style : 0x70000
Fichiers :
Type : Menu
titre1 : "Fichier"
Relation : -1
Positionnement : 0
Nouveau :
Type : S-Menu
titre1 : "Nouveau"
Relation : $Fichiers
Positionnement : 0
Charge :
Type : S-Menu
titre1 : "Charger"
Relation : $Fichiers
Positionnement : 1
Espace :
Type : S-Menu
titre1 : ""
Relation : $Fichiers
Positionnement : 2
Quitte :
Type : S-Menu
titre1 : "Quitter"
Relation : $Fichiers
Positionnement : 3
Options :
Type : Menu
titre1 : "Options"
Relation : -1
Positionnement : 1
Menu log :
Type : Menu
titre1 : "Compte"
Relation : $Options
Positionnement : 0
Lancer :
Type : S-Menu
titre1 : "Lancer !"
Relation : $OLog
Positionnement : 0
Nouveau :
Type : S-Menu
titre1 : "Nouveau"
Relation : $OLog
Positionnement : 1
Modifier :
Type : S-Menu
titre1 : "Modifier"
Relation : $OLog
Positionnement : 2
Supprimer :
Type : S-Menu
titre1 : "Supprimer"
Relation : $OLog
Positionnement : 3
Raccourcis :
Type : Menu
titre1 : "Raccourcis"
Relation : $Options
Positionnement : 1
Nouveau :
Type : S-Menu
titre1 : "Nouveau"
Relation : $ORaccourcis
Positionnement : 0
Charger :
Type : S-Menu
titre1 : "Charger"
Relation : $ORaccourcis
Positionnement : 1
Modifier :
Type : S-Menu
titre1 : "Modifier"
Relation : $ORaccourcis
Positionnement : 2
Supprimer :
Type : S-Menu
titre1 : "Supprimer"
Relation : $ORaccourcis
Positionnement : 3
Skins :
Type : Menu
titre1 : "Skins"
Relation : $Options
Positionnement : 2
Nouveau :
Type : S-Menu
titre1 : "Nouveau"
Relation : $OSkin
Positionnement : 0
État : $GUI_DISABLE
Sauvegarder :
Type : S-Menu
titre1 : "Sauver"
Relation : $OSkin
Positionnement : 1
État : $GUI_DISABLE
Modifier :
Type : S-Menu
titre1 : "Modifier"
Relation : $OSkin
Positionnement : 2
État : $GUI_DISABLE
Charger :
Type : S-Menu
titre1 : "Charger"
Relation : $OSkin
Positionnement : 3
État : $GUI_DISABLE
Aide :
Type : Menu
titre1 : "Aide"
Relation : -1
Positionnement : 3
Tuto :
Type : S-Menu
titre1 : "Tutoriel"
Relation : $Aide
Positionnement : 0
État : $GUI_DISABLE
Phrase d'accueil :
Type : Label
titre1 : "Choisissez un compte à Logger :"
posx : 1
posy : -2
Boutons :
Type : groupe
parentée : $fenBase
Lancer :
Type : Bouton
titre1 : "Lancer !"
posx : 150
posy : $Ht/2+$Ht/2*$tFen
largeur : 47
hauteur : 25
Multi :
Type : Checkbox
titre1 : "Multi"
posx : 150
posy : $Hligne+$Ht+$Ht/2*$tFen
largeur : -1
hauteur : $Hligne
Resize : 8+768
État : $multi
Liste multi :
Type : Checkbox
titre1 : $aLog[$coListe[$compteBis]*$NbLignes-1]
posx : 255
posy : 27+$compteBis*$Ht
Retirer :
Type : Bouton
titre1 : "<- Retirer"
posx : 275
posy : 27+Ubound($coListe)*$Ht
Remonter :
Type : Bouton
titre1 : "Monte"
posx : 205
posy : $Ht+$Ht*(UBound($CcoListe)-1)/2
largeur : 40
Baisser :
Type : Bouton
titre1 : "Baisse"
posx : 205
posy : ($Ht-3)+$Ht+$Ht*(UBound($CcoListe)-1)/2
largeur : 40
Modifier :
Type : Bouton
titre1 : "Modifier"
posx : 150
posy : 33+$tFen*$Ht
largeur : 47
hauteur : 25
style : 0x8000
Resize : 8+64+768
Nouveau :
Type : Bouton
titre1 : "Nouveau"
posx : 1
posy : 33+$tFen*$Ht
largeur : -1
hauteur : 25
style : 0x8000
Resize : 8+64+768
Supprimer :
Type : Bouton
titre1 : "Supprimer"
posx : 75
posy : 33+$tFen*$Ht
largeur : -1
hauteur : 25
style : 0x8000
Resize : 8+64+768
Finir la connexion :
Type : Checkbox
titre1 : "Fermer le script après ce compte"
posx : 15
posy : $Hligne
largeur : -1
hauteur : 13
Resize : 2+32+768
État : $fin
Surnoms :
Type : Radio
titre1 : $aLog[$compteBis*$NbLignes-1]&" ."
posx : 5
posy : 27+(($compteBis-1)*$Ht)
largeur : 135-136
hauteur : $Ht-3
style : 0x2000
Data : $aLog[$compteBis*$NbLignes-1]
Resize : 2+32+512
Fenêtre Modifier :
Type : Fenêtre
titre1 : @ScriptName
largeur : 200
hauteur : $HLigne*12
parentée : $fenBase
Phrase Surnom :
Type : Label
titre1 : "Veuillez entrer un"&@CRLF&" pseudonyme :"
posx : 0
posy : 0
Phrase Clef :
Type : Label
titre1 : @CRLF&"Clef de cryptage :"
posx : 120
posy : 0
Phrase NDC :
Type : Label
titre1 : "Veuillez entrer le nom de compte Dofus :"
posx : 0
posy : $HLigne*4
Phrase MDP :
Type : Label
titre1 : "Veuillez entrer le mot de pass associé :"
posx : 0
posy : $HLigne*7
Surnom :
Type : Input
titre1 : $aLog[$compteBis]
posx : 2
posy : $Hligne*2
largeur : 125
Clef :
Type : Input
titre1 : ""
posx : 149
posy : $Hligne*2
largeur : 50
NDC :
Type : Input
titre1 : ""
posx : 2
posy : $Hligne*5
largeur : 196
MDP :
Type : Input
titre1 : ""
posx : 2
posy : $Hligne*8
largeur : 196
Valider :
Type : Bouton
titre1 : "Valider"
posx : 2
posy : $Hligne*10
Annuler :
Type : Bouton
titre1 : "Annuler"
posx : 100
posy : $Hligne*10
Fenêtre de raccourcis :
Type : Fenêtre
titre1 : @ScriptName
largeur : 170
hauteur : 4*$Ht+$Hligne
parentée : $fenBase
Script :
Type : Label
titre1 : "Sélectionnez le script :"
posx : 0
posy : 0
Scriptpos :
Type : Input
titre1 : @ScriptFullPath
titre2 : $r[0]
posx : 5
posy : $Hligne
largeur : 100
Parcoure Script :
Type : Bouton
titre1 : "Parcourir"
posx : 110
posy : $Hligne
Log :
Type : Label
titre1 : "Sélectionnez le log :"
posx : 0
posy : $Ht+$Hligne
Logpos :
Type : Input
titre1 : $logChemin
titre2 : StringMid($r[2],3,StringInStr($r[2],'"',2,2)-3)
posx : 5
posy : $Ht+2*$Hligne
largeur : 100
Parcoure log :
Type : Bouton
titre1 : "Parcourir"
posx : 110
posy : $Ht+2*$Hligne
Comptes :
Type : Label
titre1 : "Entrez les n° des comptes :"
posx : 0
posy : 2*$Ht+2*$Hligne
Comptespos :
Type : Input
titre1 : $compte
titre2 : StringMid($r[2],StringInStr($r[2],'"',2,2)+2)
posx : 5
posy : 2*$Ht+3*$Hligne
largeur : 100
Valide :
Type : Bouton
titre1 : "Valider"
posx : 110
posy : 2*$Ht+3*$Hligne
Messages floodesques :
Type : 5
titre1 : "(\__/)" & @CRLF & "( ' . ' )" & @CRLF & '(")_(")'
titre2 : @CRLF & "Vous pouvez aussi aller jouer dehors," & @CRLF & "avec les papillons, les fleurs et les oiseaux."
titre3 : ""
titre4 : @CRLF & "Ou patientez 2 secondes," & @CRLF & "que la fenêtre se ferme d'elle-même."
titre5 : @CRLF & "La Vie est comme cette boîte de dialogue :" & @CRLF & "C'est quand elle se ferme qu'on arrive à l'essentiel."
C'est pas très clair, c'est pas très facile à comprendre, mais c'est un grand pas vers le début !
Une pensée particulière aux lignes de style titre2 : StringMid($r[2],3,StringInStr($r[2],'"',2,2)-3), j'en souffre d'avance pour les rendre simples à modifier ! ^^
Mais c'est en bonne voie.
Et voici le manuel associé :
Code:
Fenêtre :
Type : Fenêtre
titre1 :
titrex :
largeur :
hauteur :
posx :
posy :
style :
étendu :
parentée :
Background :
Cursor :
Police :
taille :
largeur :
attribus :
nom :
Icône :
fichier :
n° de l'icône :
Contrôles :
Couleur :
Background :
Contrôle :
Type :
titre1 :
titrex :
posx :
posy :
largeur :
hauteur :
style :
étendu :
Data :
Resize :
État :
Menu :
Type :
titre1 :
titrex :
Relation :
Positionnement :
État :
Flood :
Type : Nombre de messages
titre1 :
titrex :
Si vous souhaitez par exemple créer un bouton "truc" à un certain endroit, (version à la main, là) :
Code:
Mon bouton de contrôle :
Type : Bouton
titre1 : "truc"
titrex :
posx : Iciii
posy : Lààà
largeur : beaucoup
hauteur : grand
style : pré sélectionné+plat+texte centré
étendu : transparent+larges bords
Data :
Resize : collé au bord gauche+statique vers le haut
État : disponible
Le petit soucis, c'est effectivement que c'est long, qu'il faut penser à tout, que c'est pas pratique... et donc ma tâche en ce moment, c'est de créer l'éditeur de skins, pour vous permettre de modifier tout ce que vous voudrez, exactement comme vous le voulez !
Et je compte ajouter quelques options sympas de graphisme, comme une petite icône pour le Client de Dofus, histoire de différencier chaque compte en un clin d'oeil. (Comme-ça, le soucis du nom "Dofus -..." quand il y a trop de fenêtres ouvertes à la fois sera réglé !)
Ha et sinon, en me réveillant ce matin, j'ai réglé la suppression d'une entrée dans la liste principale qui faisait bugguer la multico.
Récapitulatif :
-> Bug (de graphisme) de suppression d'une ligne de compte avec la multico réglé
-> Modification de juste le mot de pass ou juste un nom de compte associé à un surnom activé (Pensez à utiliser la même clef. Y'a pas de vérification, mais si ce n'est pas la bonne, le résultat sera incohérent !)
-> Activation du bouton "Fermer le script après la connexion" automatiquement activé en cas de lancement par raccourcis
-> Mise en route du système de skins (encore en préparation)
Tout-ça, pour la v-1_10 qui ne devrait plus tarder !
Et après :
Comme je m'arrête rarement à ce que je suis en-train de faire, je prévois plusieurs travaux ensuite : la connexion simultanée (voir quelques pages avant pour l'explication détaillée), le grand ménage des variables du script pour le rendre plus propre, plus clair et mieux lisible.
Et je prépare un script annexe (sans rapport direct avec le DofusLog), pour passer d'une fenêtre à une autre avec un raccourcis particulier.
Pour développer vite-fait : avec "alt+&" j'active la fenêtre 1, "alt+é" pour la 2, etc.
Permet de passer rapidement d'une fenêtre à une autre sans être dépendante du "alt+tab" et de son ordre de sélection parfois douteux ! :]
(Oui, inutile de le demander : les raccourcis seraient paramétrables.  )
Dofusément,
Za.
|
14/03/2009, 11h36
|
|
|
|
Félicitation pour le boulot déjà effectué, j'utilise ton script plusieurs fois par jours et c'est très plaisant.
Dès mon retour à la maison, je m'empresse de tester les quelques options poposées, même si le skin de la fenêtre est pour moi accessoire.
Je privilégierai plus l'aspect en jeu, la dénomination des fenêtres était déjà un plus indéniable, si'l'on pouvait avoir des raccourcis paramétrables de choix de fenêtre, ce serait un plus.
Si je puis donner une idée, en terme de raccourci, j'utilisais l'éternel AltTab. avec autant de tabulations que nécessaire.
Et bien plutôt que d'opter pour un raccourci par fenêtre pourquoi ne pas proposer une tabulation automatique ? 3 fois s 3 fenêtres, 4 fois si 4 fenêtres avec la possibilité de choisir l'ordre des fenêtre suivant l'init ?
|
14/03/2009, 12h41
|
|
|
|
Hey, pas trop vite, hein ! 
La release n'est pas encore disponible (pour vous, huhu. Y'a quand-même un avantage à programmer soi-même ses trucs !), je finis ça dans l'après-midi/soirée.
Le problème du "Alt-Tab" un certain nombre de fois, c'est que c'est le bazar si entre 2 fenêtres tu as ouvert un fichier, un dossier, exécuté un programme...
Plus précisément, chaque processus (fenêtre, programme, fichier ouvert..) possède un numéro unique+un titre.
Et en faisant la simple liste de ces titres, avec une petite commande ( WinActivate(Fenêtre)) associée à un raccourcis, c'est finalement plus simple et plus sûr !
Pour réguler les fenêtres en fonction de l'ordre d'initiative, je ne pense pas pouvoir le faire de manière automatique via un script.
Comparer les valeurs d'initiative des personnages nécessite d'accéder à cette valeur ! (Ca semble évident, et pourtant..)
Or, Ankama ne met pas à disposition ce genre d'informations.
En revanche, permettre de réorganiser vos fenêtres/raccourcis vous-mêmes à travers un script, aucun soucis !
Allez, je finis ce que j'ai à faire d'abord. *y retourne*
Et puisque Ganjalo, il rox, il a aussi parlé de Taskix, que je ne connaissais pas (Lien vers la discussion.), qui permet de réorganiser ses fenêtres dans la barre des tâches à volonté.
Za.
|
14/03/2009, 13h21
|
|
|
|
Sympa comme soft, mais personne n'est motivé pour un créer un qui tourne sous Mac ?
P'tain, on va pas laisser ces sous-utilisateurs de windows nous griller avec leur OS en papier craft ! (Je plaisante pour les sous-utilisateurs mais pas pour l'OS en papier craft x')) Gloire a la pomme !
|
15/03/2009, 03h09
|
|
|
|
Je reviens ce soir, bonne journée ! ^^
Bonjour à tous !
Voilà, la version 1_10 en préparation avec son jouli module de skins est (presque) prête !
Par-contre, pour alléger votre attente, je vous propose de voir la version Bêta, qui n'est pas du tout finie.
Version Bêta2 :
-> Seul l'auto-chargement d'un skin nommé "SkinDB.txt" (SkinDeBase) présent dans le répertoire du script est implémenté
-> Il est possible de modifier manuellement le skin, un module à venir permettra de le faire de façon "simple"
DofusLog-v1_10 Bêta 2 (24/03/2009)
Fichier de skin : SkinDB.txt - 9.76 kB
Version script : DofusLog-v1_10Bêta2.au3 - 31.55 kB
Version Source :
Code:
;Dernières modif' : ;$a = 3, $b=10, Assign("a",Execute("$b")) -> $a = 10
;Transformer en OnEvent tous les GetMsg.
;des boutons pour afficher/cacher les caractères des mots de pass
;un bouton pour mettre en plein écran la fenêtre Dofus (en préparation)
#include <GUIConstants.au3> ;Nécessaire surtout pour le $GUI_EVENT_CLOSE
#include <String.au3> ;Pour l'encryptage
;~ #include <File.au3>
;~ #include <Array.au3>
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
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 = 0;, $compteTer = 0
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 ("SkinDB.txt", $Skin)
Charge ()
While 1
$msg = GUIGetMsg ()
Switch $msg
Case 0 And $Lance <> 1
ContinueLoop
Case $GUI_EVENT_CLOSE, $FQuit
GUIDelete ($fenBase)
Exit
Case $Radio[1] To $Radio[UBound ($Radio) - 1]
$compte = FRadio ($msg, $compte)
Case $Lancer, $LLancer, $Lance = 1
Lance ()
Case $Multico
FMultico ()
Case $Modifier, $LModifier
FModifier ()
Case $Nouveau, $LNouveau
FNouveau ()
Case $Supprimer, $LSupprimer
FSupprimer ()
Case $CFini ;Bouton fermer après la connec
$fin = GUICtrlRead ($CFini)
Case $Ajoute
MAjoute ()
Case $Retire
MRetire ()
Case $Haut
MHaut ()
Case $Bas
MBas ()
Case $RNouveau
RModif ()
Case $RCharge
RCharge ()
Case $RModifier
RModif (1)
Case $RSupprime
RSuppre ()
Case $FNouv, $FCharge
GUIDelete ($fenBase)
Charge (1)
Case $ATuto
MsgBox(80,@ScriptName,"Aucun tutoriel pour le moment." & @CRLF & "N'hésitez pas à réagir sur le forum" & @CRLF& "www.JeuxonLine.info !")
EndSwitch
WEnd
;==============================Fonctions totalement créées par Za====================================
Func Charge ($nouv = 0)
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
$prgNom = FileOpenDialog (@ScriptName & " - Sélectionnez votre lanceur de jeu Dofus", $prgChemin, "(*.exe; *.html)|Tous (*.*)", 1, "Dofus")
Else
$prgNom = "Dofus_client.exe"
EndIf
EndIf
If Not $existe Then
Modifier (1, $fichier)
EndIf
_FileReadToArray2 ($fichier, $aLog)
Dim $Radio[(UBound ($aLog) + 1) / $NbLignes]
Fenetre ()
EndFunc
Func Fenetre ($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
;~ _ArrayDisplay($Skin,$g)
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
;~ MsgBox(80,"",$g&"."&$Skin[$g]&"."&Skinappel ($Skin[$g]))
Switch $t
Case "Multico"
If UBound ($aLog) / $NbLignes > 2 Then
Assign (StringRight ($Skin[$g], StringLen ($Skin[$g]) - StringInStr ($Skin[$g], " ", 2, -1)), Skinappel ($Skin[$g]))
GUICtrlSetResizing ($Multico, 8 + 768)
GUICtrlSetState ($Multico, $multi)
EndIf
Case "Ajoute"
ContinueCase
Case "Retire"
ContinueCase
Case "Haut"
ContinueCase
Case "Bas"
ContinueCase
Case "ListeMulti"
If $multi = 1 And $Lance <> 1 Then
;~ MsgBox(80,"","."&$Skin[$g]&".")
If $t = "ListeMulti" Then
If $coListe[0] = "" Then $coListe[0] = $compte
;~ _ArrayDisplay($coListe,"$coListe")
$compteBis = 0
While $compteBis < UBound ($coListe)
;~ MsgBox(80,"",$aLog[$coListe[$compteBis] * $NbLignes - 1])
$CcoListe[$compteBis] = Skinappel ($Skin[$g])
;~ $CcoListe[$compteBis] = GUICtrlCreateCheckbox ($aLog[$coListe[$compteBis] * $NbLignes - 1] & "...", 255, 27 + $compteBis * $Ht)
$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])
;~ MsgBox(80,"",$compteBis&", "&27+($compteBis-1)*$Ht&", "&Execute("27+($compteBis-1)*$Ht"))
GUICtrlSetData ($Radio[$compteBis], $aLog[$compteBis * $NbLignes - 1])
;~ GUICtrlSetLimit ($Radio[$compteBis], 12) ;pour limiter la largeur des caractères. (j'ai pas trouvé comment faire.)
GUICtrlSetResizing ($Radio[$compteBis], 2 + 32 + 512)
$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
;~ MsgBox(80,"","$"&$t&"="&Execute("$"&$t)&".")
EndIf
;~ TrayTip(@scriptname,$g,0)
;~ Sleep(50)
Next
GUISetState ()
If $GUI = "FenBase" Then DesAct ()
EndFunc
Func Skinappel ($String)
Local $ligne = 1, $ligneBis
Local $param
Dim $SkinBis[9]
Do
$ligne += 1
Until $Skin[$ligne - 1] = $String
$marqueur = StringInStr ($Skin[$ligne], " ", 2, 1)
;$Skin[$ligne] épuré : StringRight ($Skin[$ligne], StringLen($Skin[$ligne]) - StringInStr ($Skin[$ligne], " ", 2, -1))
;Nomparamètre : StringLeft (StringRight ($Skin[$ligne], StringLen($Skin[$ligne]) - StringInStr ($Skin[$ligne], " ", 2, -1)), StringInStr (StringRight ($Skin[$ligne], StringLen($Skin[$ligne]) - StringInStr ($Skin[$ligne], " ", 2, -1)), ":"))
;Paramètre : StringRight (StringRight ($Skin[$ligne], StringLen($Skin[$ligne]) - StringInStr ($Skin[$ligne], " ", 2, -1)), StringLen (StringRight ($Skin[$ligne], StringLen($Skin[$ligne]) - StringInStr ($Skin[$ligne], " ", 2, -1))) - StringInStr (StringRight ($Skin[$ligne], StringLen($Skin[$ligne]) - 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)
;~ MsgBox(80,"","."&$param&"."&Execute($param)&".")
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 "contenu2 :"
;~
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
;~ Case "Menuradio :"
;~ $SkinBis[4] = $param
EndSwitch
;~ Traytip("",$ligneBis,0)
$ligneBis += 1
WEnd
;~ _ArrayDisplay($SkinBis,"$SkinBis ("&$String&")")
GUISetState ()
Return Skin ($SkinBis)
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 "État"
;~ 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
;~ If (UBound ($aLog) - 1) / $NbLignes < 2 Then
;~ GUICtrlSetState ($Supprimer, $GUI_DISABLE)
;~ GUICtrlSetState ($LSupprimer, $GUI_DISABLE)
;~ EndIf
;~ GUICtrlSetState ($CFini, $GUI_ENABLE)
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...", 0, 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)
If Modifier ($compte, $fichier) Then
Fenetre ()
Else
Desact ()
EndIf
EndFunc
Func FNouveau ()
DesAct (1)
ReDim $aLog[UBound ($aLog) + $NbLignes]
ReDim $Radio[UBound ($Radio) + 1]
If Modifier (((UBound ($aLog) - 1) / $NbLignes) , $fichier) Then
Fenetre ()
Else
ReDim $aLog[UBound ($aLog) - $NbLignes]
ReDim $Radio[UBound ($Radio) - 1]
EndIf
DesAct ()
EndFunc
Func Modifier ($compteMod, $fich)
$compteBis = $NbLignes * ($compteMod - 1) + 1
Global $FenMod, $LabelSurnom, $LabelClef, $LabelNDC, $LabelMDP, $InputPseudo, $InputClef, $InputNDC, $InputMDP, $BValide, $BAnnule
Fenetre ("FenMod")
Local $Encrypt = StringSplit ($aLog[$compteBis + 1], "{TAB}")
GUISetState ()
While 1
$Mmsg = GUIGetMsg ()
Switch $Mmsg
Case 0
ContinueLoop
Case $GUI_EVENT_CLOSE
GUIDelete ($FenMod)
Return 0
Case $BAnnule
GUIDelete ($FenMod)
Return 0
Case $BValide
If MsgBox (0x51, @ScriptName & " - Modifications", "Attention, vous vous apprêtez à" & @CRLF & "modifier définitivement ces données." & @CRLF & "Êtes-vous sûr ?") = 2 Then ExitLoop
If GUICtrlRead ($InputPseudo) <> "" Then
TrayTip (@ScriptName, "Écriture en cours...", 0, 16)
$aLog[$compteBis] = GUICtrlRead ($InputPseudo, 0)
_FileWriteToLine2 ($fichier, $compteBis, $aLog[$compteBis], 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[$compteBis + 1] Then
$aLog[$compteBis + 1] = $Encrypt
_FileWriteToLine2 ($fichier, $compteBis + 1, $aLog[$compteBis + 1], 1)
EndIf
TrayTip ("", "", 0)
EndIf
GUIDelete ($FenMod)
GUIDelete ($FenBase)
Return 1
EndSwitch
WEnd
GUIDelete ($FenMod)
EndFunc
Func FRadio ($mess, $compteBis)
If $mess <> $Radio[$compteBis] Then
GUICtrlSetPos ($Radio[$compteBis], 5, 27 + (($compteBis - 1) * $Ht))
While $mess <> $Radio[$compteBis]
$compteBis += 1
If $compteBis > (UBound ($Radio) - 1) Then
$compteBis = 1
EndIf
WEnd
GUICtrlSetPos ($Radio[$compteBis], 15, 30 + (($compteBis - 1) * $Ht))
Else
If $multi = 1 Then
MAjoute ()
Else
FLancer ($compteBis)
If $fin = $GUI_CHECKED Then Exit
EndIf
EndIf
Return $compteBis
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)
GUICtrlSetPos ($Retire, 275, 27 + UBound ($coListe) * $Ht)
GUICtrlSetPos ($Haut, 205, $Ht / 2 + $Ht * (UBound ($CcoListe) - 1) / 2, 40)
GUICtrlSetPos ($Bas, 205, ($Ht - 3) + $Ht / 2 + $Ht * (UBound ($CcoListe) - 1) / 2, 40)
EndFunc
Func 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)
Local $n, $r
Global $fenRac, $LabelSansNom, $modRac = $mod, $IScript, $BSParc, $LabelSansNom2, $ILog, $BLParc, $LComptes, $LabelSansNom3, $IComptes, $BValide, $BAnnule
Fenetre ("FenRac")
#comments-start ;Il manque à travailler $mod = 0 / <> 0
$fenRac = GUICreate (@ScriptName, 170, 4 * $Ht + $Hligne)
$LabelSansNom = GUICtrlCreateLabel ("Sélectionnez le script :", 0, 0);, -1, 2 * $Hligne) ;Trouver un nom à ce label.. Ca fait tâche, là ^^'
If $mod = 0 Then
$IScript = GUICtrlCreateInput (@ScriptFullPath, 5, $Hligne, 100);, -1, 2 * $Hligne)
$BSParc = GUICtrlCreateButton ("Parcourir", 110, $Hligne);, -1, 2 * $Hligne)
$LabelSansNom2 = GUICtrlCreateLabel ("Sélectionnez le log :", 0, $Ht + $Hligne);, -1, 2 * $Hligne);Idem que plus haut
$ILog = GUICtrlCreateInput ($logChemin, 5, $Ht + 2 * $Hligne, 100);, -1, 2 * $Hligne)
$BLParc = GUICtrlCreateButton ("Parcourir", 110, $Ht + 2 * $Hligne);, -1, 2 * $Hligne)
$LComptes = GUICtrlCreateLabel ('Entrez les n° des comptes :', 0, 2 * $HT + 2 * $Hligne);, -1, 2 * $Hligne)
$LabelSansNom3 = GUICtrlSetTip ($LComptes, "Entrez le n° des comptes dans la liste," & @CRLF & "séparés par une simple virgule sans espace.") ;Toujours à trouver un nom
$IComptes = GUICtrlCreateInput ($compte, 5, 2 * $Ht + 3 * $Hligne, 100);, -1, 2 * $Hligne)
$BValide = GUICtrlCreateButton ("Valider", 110, 2 * $Ht + 3 * $Hligne);, -1, 2 * $Hligne)
Else
$n = FileOpenDialog (@ScriptName & " - Sélectionnez votre raccourcis :", @ScriptDir, "Raccourcis (*.lnk)", 8, @ScriptName & ".lnk")
If $n = "" Then Return
$r = FileGetShortcut ($n)
$IScript = GUICtrlCreateInput ($r[0], 5, $Hligne, 100);, -1, 2 * $Hligne)
$BSParc = GUICtrlCreateButton ("Parcourir", 110, $Hligne);, -1, 2 * $Hligne)
GUICtrlCreateLabel ("Sélectionnez le log :", 0, $Ht + $Hligne);, -1, 2 * $Hligne)
$ILog = GUICtrlCreateInput (StringMid ($r[2], 3, StringInStr ($r[2], '"', 2, 2) - 3), 5, $Ht + 2 * $Hligne, 100);, -1, 2 * $Hligne)
$BLParc = GUICtrlCreateButton ("Parcourir", 110, $Ht + 2 * $Hligne);, -1, 2 * $Hligne)
$LComptes = GUICtrlCreateLabel ('Entrez les n° des comptes :', 0, 2 * $HT + 2 * $Hligne);, -1, 2 * $Hligne)
GUICtrlSetTip ($LComptes, "Entrez le n° des comptes dans la liste," & @CRLF & "séparés par une simple virgule sans espace.")
$IComptes = GUICtrlCreateInput (StringMid ($r[2], StringInStr ($r[2], '"', 2, 2) + 2), 5, 2 * $Ht + 3 * $Hligne, 100);, -1, 2 * $Hligne)
$BValide = GUICtrlCreateButton ("Valider", 110, 2 * $Ht + 3 * $Hligne);, -1, 2 * $Hligne)
EndIf
GUISetState ()
#comments-end
While 1
$RMsg = GUIGetMsg ()
Switch $RMsg
Case 0
ContinueLoop
Case $BSParc
$n = FileOpenDialog (@ScriptName & " - Sélectionnez votre script :", @ScriptDir, "Scripts (*.au3;*.exe)|Tous (*.*)", 8, @ScriptName)
If $n <> "" Then GUICtrlSetData ($IScript, $n)
Case $BLParc
$n = FileOpenDialog (@ScriptName & " - Sélectionnez le fichier contenant vos logs :", $logChemin, "Textes (*.txt)|Tous (*.*)", 8, "Log.txt")
If $n <> "" Then GUICtrlSetData ($ILog, $n)
Case $BValide
$n = FileOpenDialog (@ScriptName & " - Choissez le nom et répertoire du raccourcis :", @ScriptDir, "Raccourcis (*.lnk)", 8, @ScriptName & ".lnk")
If $n = '' Then ContinueLoop
If StringInStr ($n, ".lnk") = 0 Then $n &= ".lnk"
FileCreateShortcut (GUICtrlRead ($IScript), $n, "", ' "' & GUICtrlRead ($ILog) & '" ' & GUICtrlRead ($IComptes))
ContinueCase
Case $BAnnule
ContinueCase
Case $GUI_EVENT_CLOSE
GUIDelete ($fenRac)
Return
EndSwitch
WEnd
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)
Charge ()
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
;==========================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
819 lignes.. (soit 200 de plus que la 1_9b, juste pour les skins.)
Vous remarquerez le retour des commentaires, c'est normal !
Et le source du fichier texte (bien que disponible plus haut) :
Code:
fenBase
Type : Fenêtre
contenu1 : @ScriptName
largeur : $lFen
hauteur : 19+50+$tFen*$Ht+30
posx : -1
posy : -1
style : 0x70000
Fichiers
Type : Menu
contenu1 : "Fichier"
parenté : -1
Positionnement : 0
FNouv
Type : S-Menu
contenu1 : "Nouveau"
parenté : $Fichiers
Positionnement : 0
FCharge
Type : S-Menu
contenu1 : "Charger"
parenté : $Fichiers
Positionnement : 1
FLigneVide
Type : S-Menu
contenu1 : ""
parenté : $Fichiers
Positionnement : 2
FQuit
Type : S-Menu
contenu1 : "Quitter"
parenté : $Fichiers
Positionnement : 3
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
LNouveau
Type : S-Menu
contenu1 : "Nouveau"
parenté : $OLog
Positionnement : 1
LModifier
Type : S-Menu
contenu1 : "Modifier"
parenté : $OLog
Positionnement : 2
LSupprimer
Type : S-Menu
contenu1 : "Supprimer"
parenté : $OLog
Positionnement : 3
ORaccourcis
Type : Menu
contenu1 : "Raccourcis"
parenté : $Options
Positionnement : 1
RNouveau
Type : S-Menu
contenu1 : "Nouveau"
parenté : $ORaccourcis
Positionnement : 0
RCharge
Type : S-Menu
contenu1 : "Charger"
parenté : $ORaccourcis
Positionnement : 1
RModifier
Type : S-Menu
contenu1 : "Modifier"
parenté : $ORaccourcis
Positionnement : 2
RSupprime
Type : S-Menu
contenu1 : "Supprimer"
parenté : $ORaccourcis
Positionnement : 3
:OSkin
Type : Menu
contenu1 : "Skins"
parenté : $Options
Positionnement : 2
SNouveau
Type : S-Menu
contenu1 : "Nouveau"
parenté : $OSkin
Positionnement : 0
SSauvegarder
Type : S-Menu
contenu1 : "Sauver"
parenté : $OSkin
Positionnement : 1
SModifier
Type : S-Menu
contenu1 : "Modifier"
parenté : $OSkin
Positionnement : 2
SCharger
Type : S-Menu
contenu1 : "Charger"
parenté : $OSkin
Positionnement : 3
Aide
Type : Menu
contenu1 : "Aide"
parenté : -1
Positionnement : 3
ATuto
Type : S-Menu
contenu1 : "Tutoriel"
parenté : $Aide
Positionnement : 0
Label
Type : Label
contenu1 : "Choisissez un compte à Logger :"
posx : 1
posy : -2
largeur : -1
hauteur : -1
style : -1
étendu : 0
Boutons
Type : Groupe
parenté : $fenBase
Lancer
Type : Bouton
contenu1 : "Lancer !"
posx : 150
posy : $Ht/2+$Ht/2*$tFen
largeur : 47
hauteur : 25
Multico
Type : Checkbox
contenu1 : "Multi"
posx : 150
posy : $Hligne+$Ht+$Ht/2*$tFen
largeur : -1
hauteur : $Hligne
Resize : 8+768
État : $multi
Modifier
Type : Bouton
contenu1 : "Modifier"
posx : 150
posy : 33+$tFen*$Ht
largeur : 47
hauteur : 25
style : 0x8000
Resize : 8+64+768
Nouveau
Type : Bouton
contenu1 : "Nouveau"
posx : 1
posy : 33+$tFen*$Ht
largeur : -1
hauteur : 25
style : 0x8000
Resize : 8+64+768
Supprimer
Type : Bouton
contenu1 : "Supprimer"
posx : 75
posy : 33+$tFen*$Ht
largeur : -1
hauteur : 25
style : 0x8000
Resize : 8+64+768
CFini
Type : Checkbox
contenu1 : "Fermer le script après ce compte"
posx : 15
posy : $Hligne
largeur : -1
hauteur : 13
Resize : 2+32+768
État : $fin
Ajoute
Type : Bouton
contenu1 : "Ajouter ->"
posx : 275
posy : 0
largeur : -1
hauteur : -1
Retire
Type : Bouton
contenu1 : "<- Retirer"
posx : 275
posy : 27+Ubound($coListe)*$Ht
largeur : -1
hauteur : -1
Haut
Type : Bouton
contenu1 : "Monte"
posx : 205
posy : $Ht+$Ht*(UBound($CcoListe)-1)/2
largeur : 40
hauteur : -1
Bas
Type : Bouton
contenu1 : "Baisse"
posx : 205
posy : ($Ht-3)+$Ht+$Ht*(UBound($CcoListe)-1)/2
largeur : 40
hauteur : -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
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
LabelSurnom
Type : Label
contenu1 : "Veuillez entrer un" & @CRLF & " pseudonyme :"
posx : 1
posy : 2
largeur : 100
hauteur : -1
style : -1
étendu : -1
LabelClef
Type : Label
contenu1 : @CRLF&"Clef de cryptage :"
posx : 120
posy : 0
largeur : -1
hauteur : -1
style : -1
étendu : -1
LabelNDC
Type : Label
contenu1 : "Veuillez entrer le nom de compte Dofus :"
posx : 0
posy : $HLigne*4
largeur : -1
hauteur : -1
style : -1
étendu : -1
LabelMDP
Type : Label
contenu1 : "Veuillez entrer le mot de pass associé :"
posx : 0
posy : $HLigne*7
largeur : -1
hauteur : -1
style : -1
étendu : -1
InputPseudo
Type : Input
contenu1 : $aLog[$compteBis]
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
BAnnule
Type : Bouton
contenu1 : "Annuler"
posx : 100
posy : $Hligne*10
largeur : -1
hauteur : -1
style : -1
étendu : -1
FenRac
Type : Fenêtre
contenu1 : @ScriptName
largeur : 170
hauteur : 5*$Ht+$Hligne
style : -1
étendu : -1
parenté : $fenBase
LabelSansNom
Type : Label
contenu1 : "Sélectionnez le script :"
posx : 0
posy : 0
largeur : -1
hauteur : -1
style : -1
étendu : -1
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
LabelSansNom2
Type : Label
contenu1 : "Sélectionnez le log :"
posx : 0
posy : $Ht+$Hligne
largeur : -1
hauteur : -1
style : -1
étendu : -1
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
LabelSansNom3
Type : Label
contenu1 : "Entrez les n° des comptes :"
posx : 0
posy : 2*$Ht+2*$Hligne
largeur : -1
hauteur : -1
style : -1
étendu : -1
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
BValide
Type : Bouton
contenu1 : "Valider"
;posx : 0
posy : 2*$Ht+3*$Hligne
largeur : -1
hauteur : -1
style : -1
étendu : -1
BAnnule
Type : Bouton
contenu1 : "Annuler"
;posx : 0
posy : 2*$Ht+3*$Hligne
largeur : -1
hauteur : -1
style : -1
étendu : -1
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 :
État :
Menu :
Type :
contenu1 :
contenux :
parenté :
Positionnement :
État :
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, État, 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)
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
Youhou, j'ai terminé la transformation des fenêtres en association avec le Skin pour la Bêta2.
Prochaine chose à faire, c'est rajouter la possibilité de créer/modifier un skin.
Avancement entre la 1_9b et la 1_10Bêta2 :
-> Correction du bug graphique de suppression d'une entrée de la liste principale présente dans la liste de multi
-> Possibilité de modifier un nom de compte et/ou un mot de pass associés à un surnom (anciennement, il fallait saisir les deux champs pour que la modification soit prise en compte)
-> Module de script presque totalement implanté, modification/création à faire. (+ quelques options graphiques manquantes pour l'instant.)
Voilà, à bientôt pour la nouvelle version ! ^^
Za.
Dernière modification par Famille Za ; 25/01/2010 à 14h25.
Motif: Edition des liens.
|
15/03/2009, 11h11
|
|
|
|
Je met plus de temps à me connecter avec ce script qu'avec le client normal...
Avec le client normal :
-Je l'ouvre
-Je tape mon mot de passe (nom de compte enregistré)
-Je clique sur "Ok"
Avec le script :
-Je l'ouvre
-J'ouvre le log
-Je clique sur "lancer"
-Je tape la clé
-Je passe ma souris aux différents endroits...
Pour gagner du temps il faudrait que le Log s'ouvre tout seul (sauf première utilisation, après y a les options non?) et ne pas avoir à taper la clé de cryptage si celle-ci est vierge. Est-ce possible de crypter le Log par défaut aussi?
Donc pour l'instant, ton script ne m'intéresse pas (c'est plus pour les multi-comptes en fait?)
|
15/03/2009, 14h06
|
|
|
|
Citation:
Envoyé par Shugah
(c'est plus pour les multi-comptes en fait?) 
Je l'utilises principalement pour ça, j'ai beaucoup de comptes à ma disposition
Et ça me sert juste à ne pas avoir un seul mot de passe à me rappeler. Le seul problème c'est que quand je n'ai pas mon ordinateur devant moi, je connais aucun mot de passe  (sauf le mient bien entendu)
|
15/03/2009, 14h25
|
|
|
|
Utilisateurs regardant la discussion actuelle : 1 (0 membre(s) et 1 invité(s))
|
|
|
|
| |