[..] Fonction bouton case

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Keenuts
Niveau 1
Niveau 1
Messages : 3
Enregistré le : ven. 15 juil. 2011 20:17
Status : Hors ligne

[..] Fonction bouton case

#1

Message par Keenuts »

Bonjour,

Je suis un peu nouveau dans la création de scripts via Autoit, et je me suis lancé dans un projet plutôt ambitieux pour mon niveau de connaissance, mais on fait avec :) Je suis admin d'un serveur Minecraft, et ayant besoin d'un launcher spécifique, je me suis tourné vers ce soft plutôt facile a prendre en main.
Mais voilà, grand traumatisé des fonctions, j'ai tout fait pour les esquiver, mais cela ne m'ayant apporté que des bugs, j'ai décider de les affronter.

J'ai donc plusieurs fichiers, chacun correspondants a un bouton ;
- Jouer
- Mettre à Jour
- Forum
- Option
et un Launcher qui contient la fonction main qui gère la fenêtre principale.

En principe
Il créer la fenêtre, les boutons, etc
Il télécharge sur un site un ConfigS.ini
Lis Config.ini (sur le pc) et le ConfigS.ini
Il stock les différentes données dans des variables
Et envoie les données utiles a chaque fonction, évitant de télécharger 500 fois le même .ini

Voici le code principal :

Code : Tout sélectionner

#cs ----------------------------------------------------------------------------

Launcher - Serveur Sinan V1.0

Codeur : Keenuts


#ce ----------------------------------------------------------------------------

#include <GuiConstantsEx.au3>
#include <IE.au3>
#include <_Transinput.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <update.au3>


;=============== MENU PRINCIPAL
Main()

Func main () 
    GuiCreate("Bienvenue au Sinan", 400, 400)
    GuiSetIcon("Data\icone.ico", 1) 
    GUISetState(@SW_SHOW)
    
    ;Boutons

    Local $bouton_jouer, $bouton_update, $bouton_forum, $bouton_options
    
    $bouton_jouer = GuiCtrlCreateButton("Jouer !", 140, 200, 120, 35)
    $bouton_update = GuiCtrlCreateButton("Mise a Jour", 140, 240, 120, 25)
    $bouton_forum = GuiCtrlCreateButton("Forum", 325, 20, 70, 20)
    $bouton_options = GuiCtrlCreateButton("Options", 325, 2, 70, 20)
    
    ;Fond
    GuiCtrlCreatePic("Data\logo.jpg",0,0, 400,400)
    GUISetBkColor(0x006666)
    
    ;News
    InetGet("http://web_469440.verygames.net/ConfigS.ini", "ConfigS.ini", 1)
    
    $news1 = IniRead( "ConfigS.ini", "News", "news-1", "Erreur")
    $news2 = IniRead( "ConfigS.ini", "News", "news-2", "Erreur")
    $news3 = IniRead( "ConfigS.ini", "News", "news-3", "Erreur")

    $label0 = GUICtrlCreateLabel( "News :", 40, 290,500)
    _TransInput_Create($label0,12) 
    $label1 = GUICtrlCreateLabel( $news1, 100, 300,500)
    _TransInput_Create($label1,12) 
    $label2 = GUICtrlCreateLabel( $news2, 100, 320,500)
    _TransInput_Create($label2,12)
    $label3 = GUICtrlCreateLabel( $news3, 100, 340,500)
    _TransInput_Create($label3,12)
    
    ;================================================================ Lecture du configS.Ini
        $version_serveur = IniRead( "ConfigS", "Serveur-Side", "version", "Erreur")
        
        
        
    
    ;================================================================ BOUTONS FONCTIONS
    
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                ExitLoop
            
            Case $bouton_jouer
                ;jouer()
                msgbox(0, "Serveur Sinan", "En Cours...")
            
            Case $bouton_update
                update($version_serveur)
                
            Case $bouton_forum
                ;forum()
                msgbox(0, "Serveur Sinan", "En Cours...")
            Case $bouton_options
                ;options()
                msgbox(0, "Serveur Sinan", "En Cours...")
            Case Else
                ExitLoop
        EndSwitch
    WEnd

    
    
    
    
;============= Nettoyage Fichiers Temporaires
FileDelete("ConfigS.ini")
    
    
    
;============= Loop Test
    GuiSetState()
    While GuiGetMsg() <> $GUI_EVENT_CLOSE
    wend
        
    
EndFunc
Puis le code de la seule partie déjà commencée, ou ça bloque déjà :?

Code : Tout sélectionner

#cs ----------------------------------------------------------------------------

Launcher - Serveur Sinan V1.0

Codeur : Keenuts


#ce ----------------------------------------------------------------------------


func update($version_serveur)
    
    ;# initialisation des variables
        $version_client = IniRead( "Data\Config.ini", "Client-Side", "version", "Erreur")
    
    ;# Fin initialisation des variables
    
    If $version_client = $version_serveur Then
        msgbox(0, "Serveur Sinan", "Votre Version est a jour !")
    
    Else
        msgbox(0,"Serveur Sinan", "Une Mise à Jour est disponible !" & @CRLF & "La Télécharger ?")
    EndIf
    
    main()
EndFunc

 
Les MsgBox sont juste la pour m'informer. Mais voilà, il ne ce passe RIEN :?
Je sèche un peu...

Merci d'avance

Kee
Avatar du membre
Strofe
Niveau 5
Niveau 5
Messages : 182
Enregistré le : ven. 26 sept. 2008 23:16
Localisation : Picardie, Oise, Beauvais
Status : Hors ligne

Re: [...] Fonction bouton case

#2

Message par Strofe »

Bonsoir

Tu fais une première boucle dans laquelle tu ne passes qu'une seule fois..
A cause de

Code : Tout sélectionner

Case Else
ExitLoop
 
Donc tu termines dans cette deuxième boucle. Dans laquelle il ne se passe rien.

Code : Tout sélectionner

;============= Loop Test
    GuiSetState()
    While GuiGetMsg() <> $GUI_EVENT_CLOSE
    wend
 
Juste un petit truc, j'ai aucun fichier ini, ce qui fait que je suis à jour. :P :P :P

A+
Y a pas de problème, y a que des solutions. Reste à les trouver.
Keenuts
Niveau 1
Niveau 1
Messages : 3
Enregistré le : ven. 15 juil. 2011 20:17
Status : Hors ligne

Re: [..] Fonction bouton case

#3

Message par Keenuts »

Salut,

Ah ok, les erreurs toutes bêtes :? Merci beaucoup !

Mais, malheureusement, en avançant, je rencontre d'autres problèmes :mrgreen:
Au démarrage, TOUTES mes fonctions se lancent, sans grandes raisons, seul la fonction Update ne bug pas :

Code Launcher :
► Afficher le texte
Code Options :
► Afficher le texte
Code Forum
► Afficher le texte
Code Update
► Afficher le texte
Et aussi, au passage, une ptite question pour vous embêter un peu plus :
Comment lancer mon "setup sinan.exe" en admin, car un RunWait / Run simple ne fonctionne pas, sans doute a cause de ce besoin :?

Encore merci !

Kee
Avatar du membre
Strofe
Niveau 5
Niveau 5
Messages : 182
Enregistré le : ven. 26 sept. 2008 23:16
Localisation : Picardie, Oise, Beauvais
Status : Hors ligne

Re: [..] Fonction bouton case

#4

Message par Strofe »

Bonjour

Oulala... Tu as attrappé le virus de la fonctionnite

??? Une fonction par librairie... #include ???

1°) Faire une librairie pour les fonctions que l'on réutilise dans différents programmes.. Sinon, il faut mettre les fonctions dans le programme.
2°) Créer une fonction à partir du moment ou l'on utilise un bout de code à plusieurs endroits dans le programme.

Hiérarchiser le programme
a°) les includes au début
b°) les déclarations de variables et les constantes
c°) le programme
d°) les fonctions à la fin.

Pour les fenêtres (Gui) va voir la fonction GuiCreate surtout l'exemple 2 --> Fenêtre fille "Gui dans un Gui"

J'ai bidouillé un peu ton programme
► Afficher le texte
Pour le fonctionnement en Administrateur = RunAsWait ou RunAs

A+
Y a pas de problème, y a que des solutions. Reste à les trouver.
Keenuts
Niveau 1
Niveau 1
Messages : 3
Enregistré le : ven. 15 juil. 2011 20:17
Status : Hors ligne

Re: [..] Fonction bouton case

#5

Message par Keenuts »

Salut,

C'est a dire que ma première version a été plutôt ratée, car il n'y avait aucune fonction, et des boucles étranges, ce qui le faisait planter.. J'ai donc voulu tout séparer, peut être trop :mrgreen:
Au final, j'ai réussi avec mes différentes Include a faire un programme totalement fonctionnel, mais je vais essayer pour la prochaine version qui est moins urgente de suivre cette méthode plus claire.

Si j'ai bien compris, a la fin, le

Code : Tout sélectionner

Endfunc ==> options()
retourne tout en haut du programme sans renvoyer d’informations ?

Merci encore

Kee
Avatar du membre
Strofe
Niveau 5
Niveau 5
Messages : 182
Enregistré le : ven. 26 sept. 2008 23:16
Localisation : Picardie, Oise, Beauvais
Status : Hors ligne

Re: [..] Fonction bouton case

#6

Message par Strofe »

Bonjour

Code : Tout sélectionner

;Ferme la fenêtre $Form2
GUIDelete($Form2)
;Revient dans la boucle principale
Return 1
 
Je crois que tu devrais étudier l'aide sur Func..

Pour simplifier la lecture d'une fonction

Code : Tout sélectionner

Func Nom_de_la_fonction(paramètres en entrée de la fonction)
     code de la fonction
    
     return paramètre_à_renvoyer  ;cela permet de sortir de la fonction et de renvoyer le ou les résultat(s)
EndFunc ; ==> Nom_de_la_fonction    
 
Pour rappel le ; permet de commenter, tout ce qui se trouve après n'est pas interpréter par AutoIt

A+
Y a pas de problème, y a que des solutions. Reste à les trouver.
Répondre