Ein kleines Spiel wo nochnicht ganz geht

  • Hi ich habe versucht mir einen Script zu schreiben der ein kleines Spiel über ein Gui Fenster ist.
    Meine Probleme:
    1.:Wie binde ich ein Icon an einen bottom bzw wie genau? Meine Zeile dafür:
    GUICtrlSetImage($B8,"truppenhinzufuegen","",0)
    geht nochtnicht.
    noch offen
    2.:Wie schaffe ich es über den on event mod das sich das script minimieren/schließen lässt?Meine momentane Zeile:
    gelöst
    3.:Bei mir funktioniert nur eine der definierten Funktionen via den Oneventmode.
    gelöst
    Hier das ganze Script als Spoiler der bottom der geht ist $B1.
    Danke schonmal im Vorraus :)


    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <ButtonConstants.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    #Region Variablen
    $Cheats=0
    $Cheat=0
    $Produktionsfaktor=1
    $Wood=1000
    $Gold=1000
    $Bauern=1
    $Kostenhof=1000
    $Kostenburg=12500
    $Kostenturm=10000
    $Kostenmauer=15000
    $Stufeturm=0
    $Stufemauer=0
    $Stufeburg=1
    $Stufehof=0
    $B_in_T=0
    $BHolz=5
    $BGold=5
    $Bauern1=0
    $difff=1
    $beginnn=1
    $B1=1
    $B2=1
    $B3=1
    $B4=1
    $B5=1
    $B6=1
    $B7=1
    #EndRegion
    #Region Hotkeys
    ;;;
    HotKeySet("{ENTER}","Cheat")
    ;;;
    #Endregion
    #Region Funktionen
    Func Cheat()
    $Cheat=InputBox("Cheats","Cheatcode")
    Endfunc
    Func _B1()
    GUICreate("Menü",200,100)
    $B3=GUICtrlCreateButton("Cheats",1,1,100,50)
    Guisetstate()
    Endfunc
    Func _B2()
    GUIDelete ( Das Staedtespiel )
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _B4()
    MsgBox(20,"ich","auch was")
    If $Wood<$Kostenhof Then
    Msgbox(20,"-","Zu teuer")
    EndIf
    If $Wood>$Kostenhof Then
    If $Stufehof<150 then
    $Wood=$Wood-$Kostenhof
    $Bauern=$Bauern+10
    $Stufehof=$Stufehof+1
    MsgBox(20,"Erfolg","Hof wurde ausgebaut!")
    EndIf
    EndIf
    EndFunc
    Func _B5()
    If $Wood<$Kostenturm Then
    Msgbox(20,"-","Zu teuer")
    EndIf
    If $Wood>$Kostenturm then
    If $Stufeturm<5 then
    $Wood=$Wood-$Kostenturm
    $Atk=$Atk+0.7
    $Stufeturm=$Stufturm+1
    MsgBox(20,"Erfolg","Turm wurde ausgebaut!")
    EndIf
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _B6()
    If $Wood<$Kostenmauer Then
    Msgbox(20,"-","Zu teuer")
    EndIf
    If $Wood>$Kostenmauer then
    If $Stufemauer<5 then
    $Wood=$Wood-$Kostenmauer
    $Def=$Def+0.7
    $Stufemauer=$Stufemauer+1
    MsgBox(20,"Erfolg","Hof wurde ausgebaut!")
    EndIf
    EndIf
    EndFunc
    Func _B7()
    If $Wood<$Kostenburg Then
    Msgbox(20,"-","Zu teuer")
    EndIf
    If $Wood>$Kostenburg then
    If $Stufeburg<11 then
    $Wood=$Wood-$Kostenburg
    $Atk=$Atk+0.3
    $Def=$Def+0.3
    $Bauern=$Bauern*1.2
    $Produktionsfaktor=$Produktionsfaktor+0.7
    $Stufeburg=$Stufeburg+1
    MsgBox(20,"Erfolg","Hof wurde ausgebaut!")
    EndIf
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    #Endregion
    #EndRegion
    #Region GUI-Haupt
    Opt("GUIOnEventMode", 1)
    $_GUI=GUICreate("Das Staedtespiel",500,251,0,0)
    GUISetState(@SW_SHOW)
    Opt("Guicloseonesc",1)
    $B1=GUICtrlCreateButton("Optionen", 1,1,100,50)
    GUICtrlSetOnEvent($B1, "_B1")
    $B2=GUICtrlCreateButton("Exit",1,251,100,50)
    ;GUISetOnEvent ($GUI_EVENT_CLOSE, "function" [, winhandle] )
    $B4=GUICtrlCreateButton("Hof ausbauen?",1,51,100,50)
    GUISetOnEvent($B4,"_B4")
    $B5=GUICtrlCreateButton("Turm ausbauen?",1,101,100,50)
    GUISetOnEvent($B6,"_B5")
    $B6=GUICtrlCreateButton("Mauer ausbauen?",1,151,100,50)
    GUISetOnEvent($B6,"_B6")
    $B7=GUICtrlCreateButton("Burg ausbauen?",1,201,100,50)
    GUISetOnEvent($B7,"_B7")
    $B8=GUICtrlCreateButton("", 480,1,20,20)
    GUICtrlCreateLabel("Truppen zahl erhöhen? Proklick=+1",304,5)
    GUICtrlSetImage($B8,"truppenhinzufuegen","",0)
    $Text=GUICtrlCreateLabel("Holz:"&$Wood,101,235)
    $Tex1=GUICtrlCreateLabel("Gold:"&$Gold,201,235)
    $Tex2=GUICtrlCreateLabel("Freie Bauern:"&$Bauern,301,235)
    $Tex3=GUICtrlCreateLabel("Krieger:"&$B_in_T,401,235)
    GUICtrlSetCursor($B1,0)
    GUICtrlSetCursor($B2,0)
    GUICtrlSetCursor($B3,0)
    GUICtrlSetCursor($B4,0)
    GUICtrlSetCursor($B5,0)
    GUICtrlSetCursor($B6,0)
    GUICtrlSetCursor($B7,0)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetBkColor(0x5DC5A6)
    Guisetstate()

    [/autoit] [autoit][/autoit] [autoit]

    #EndRegion

    [/autoit] [autoit][/autoit] [autoit]

    #Region Menü-GUI
    While 1
    $beginnn=TimerInit()
    $difff=1
    While $difff<=1000

    [/autoit] [autoit][/autoit] [autoit]

    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then
    Exit
    Endif

    [/autoit] [autoit][/autoit] [autoit]

    If $Cheat=123456789 then
    $Wood=$Wood+10000
    $Cheats=$Cheats+1
    $Cheat=0
    EndIf
    If $Cheat=123 then
    $Gold=$Gold+10000
    $Cheats=$Cheats+1
    $Cheat=0
    EndIf
    If $Cheats>2 Then
    Exit
    EndIf
    $difff=TimerDiff($beginnn)
    Wend
    #Region Produktion

    [/autoit] [autoit][/autoit] [autoit]

    $Wood=$Wood+$Produktionsfaktor*$BHolz
    $Gold=$Gold+$Produktionsfaktor*$BGold
    #EndRegion
    GUICtrlSetData($Text,"Holz:" &$Wood)
    GUICtrlSetData($Tex1,"Gold:" &$Gold)
    GUICtrlSetData($Tex2,"Freie Bauern:" &$Bauern1)
    GUICtrlSetData($Tex3,"Krieger:" &$B_in_T)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Wend
    #EndRegion

    [/autoit]

    3 Mal editiert, zuletzt von Bloodykill (15. August 2009 um 20:36)

    • Offizieller Beitrag

    ZU 2:

    [autoit]

    GUISetOnEvent($GUI_EVENT_CLOSE, "_exit")

    [/autoit][autoit][/autoit][autoit]

    Func _Exit()
    Exit
    EndFunc

    [/autoit]


    ZU3: Du benutzt GuiSetOnEvent anstatt GuiCtrlSetOnEvent .

    PS : Setze deine Code mal in Autoit Tag´s . Und dein GuiDelete funzt auch nicht . Da muß die Variable der Gui rein also GUIDelete ( $_GUI ).

  • ZU 2:

    [autoit]

    GUISetOnEvent($GUI_EVENT_CLOSE, "_exit")

    [/autoit] [autoit][/autoit] [autoit]

    Func _Exit()
    Exit
    EndFunc

    [/autoit]


    ZU3: Du benutzt GuiSetOnEvent anstatt GuiCtrlSetOnEvent .

    PS : Setze deine Code mal in Autoit Tag´s . Und dein GuiDelete funzt auch nicht . Da muß die Variable der Gui rein also GUIDelete ( $_GUI ).

    TY es geht perfekt *-*

    • Offizieller Beitrag

    Achso hab ich vergessen :
    Zu 1: Schau dir den Befehl GuiCtrlSetImage in der Hilfe mal genauer an . Du mußt schon den Dateinamen als Parameter reinsetzen, sonst geht es nicht.

    Dein Script ist das reinste Chaos . Solltest es erst mal aufräumen bevor du weitermachst .

  • joa... *gleichmal Anfang*


    ich probiers mal mit paras...

    edit:
    so gut wie fertig ihr könnts euch ja mal rauskopieren und ausprobieren:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <ButtonConstants.au3>
    #Region Variablen,Hotkeys,Funktionen
    #Region Variablen
    $cdefgh=0
    $randi=Random(10,50,1)
    $Timeattack=Random(120000,240000,1)
    $Endwert=0
    $Angriffswert=0
    $Atk=1
    $Def=1
    $Defswert=0
    $Cheats=0
    $Cheat=0
    $Produktionsfaktor=1
    $Wood=1000
    $Gold=1000
    $Bauern=10
    $Kostenhof=1000
    $Kostenburg=12500
    $Kostenturm=10000
    $Kostenmauer=15000
    $Stufeturm=0
    $Stufemauer=0
    $Stufeburg=1
    $Stufehof=0
    $Armee=0
    $BHolz=5
    $difff=1
    $beginnn=1
    #EndRegion
    #Region Hotkeys
    HotKeySet("{ENTER}","Cheat")
    HotKeySet("!{F4}","_B2")
    #Endregion
    #Region Funktionen
    Func Cheat()
    $Cheat=InputBox("Cheats","Cheatcode")
    Endfunc
    Func _B1()
    $Cheat=InputBox("Cheat","Gib Cheatcode ein")
    Endfunc
    Func _B2()
    Exit
    EndFunc
    Func _B4()
    If $Wood<$Kostenhof Then
    Msgbox(20,"-","Zu teuer")
    EndIf
    If $Wood>$Kostenhof Then
    If $Stufehof<74 then
    $Wood=$Wood-$Kostenhof
    $Bauern=$Bauern+10
    $Stufehof=$Stufehof+1
    MsgBox(20,"Erfolg","Hof wurde ausgebaut!")
    EndIf
    EndIf
    EndFunc
    Func _B5()
    If $Wood<$Kostenturm Then
    Msgbox(20,"-","Zu teuer")
    EndIf
    If $Wood>$Kostenturm then
    If $Stufeturm<4 then
    $Wood=$Wood-$Kostenturm
    $Atk=$Atk+0.7
    $Stufeturm=$Stufeturm+1
    MsgBox(20,"Erfolg","Turm wurde ausgebaut!")
    EndIf
    EndIf
    EndFunc
    Func _B6()
    If $Wood<$Kostenmauer Then
    Msgbox(20,"-","Zu teuer")
    EndIf
    If $Wood>$Kostenmauer then
    If $Stufemauer<4 then
    $Wood=$Wood-$Kostenmauer
    $Def=$Def+0.7
    $Stufemauer=$Stufemauer+1
    MsgBox(20,"Erfolg","Mauer wurde ausgebaut!")
    EndIf
    EndIf
    EndFunc
    Func _B7()
    If $Wood<$Kostenburg Then
    Msgbox(20,"-","Zu teuer")
    EndIf
    If $Wood>$Kostenburg then
    If $Stufeburg<10 then
    $Wood=$Wood-$Kostenburg
    $Atk=$Atk+0.3
    $Def=$Def+0.3
    $Bauern=$Bauern*1.2
    $Produktionsfaktor=$Produktionsfaktor+0.7
    $Stufeburg=$Stufeburg+1
    MsgBox(20,"Erfolg","Burg wurde ausgebaut!")
    EndIf
    EndIf
    EndFunc
    Func _B8()
    $Error=0
    If $Gold<800 Then
    MsgBox(0,"-","Zu wenig Gold!")
    EndIf
    If $Bauern<1 Then
    MsgBox(0,"-","Zu wenig Bauern!")
    $Error=1
    Endif
    If $Error<>1 Then
    If $Gold>800 then
    $Armee=$Armee+1
    $Bauern=$Bauern-1
    $Gold=$Gold-800
    EndIf
    EndIf
    EndFunc
    Func _B9()
    $Error1=0
    If $Bauern<1 Then
    MsgBox(0,"-","Zu wenig Bauern!")
    $Error1=1
    Endif
    If $Error1<>1 Then
    $Bauern=$Bauern-1
    $BHolz=$BHolz+1
    EndIf
    EndFunc
    Func _B10()
    If $BHolz<>1 Then
    $Bauern=$Bauern+1
    $BHolz=$BHolz-1
    EndIf
    Endfunc
    Func _B11()
    $Wood=$Wood+$Gold
    $Gold=0
    EndFunc
    Func _B12()
    $Gold=$Gold+$Wood
    $Wood=0
    EndFunc
    #Endregion
    #EndRegion
    #Region GUI
    #Region Bottums
    Opt("GUIOnEventMode", 1)
    $_GUI=GUICreate("Das Staedtespiel",500,301,0,0)
    GUISetState(@SW_SHOW)
    Opt("Guicloseonesc",1)
    $B1=GUICtrlCreateButton("Cheats", 1,1,100,50)
    GUICtrlSetOnEvent($B1, "_B1")
    $B2=GUICtrlCreateButton("Exit",1,251,100,50)
    GUIctrlSetOnEvent ($B2, "_B2")
    $B4=GUICtrlCreateButton("Hof bauen?",1,51,100,50)
    GUIctrlSetOnEvent($B4,"_B4")
    $B5=GUICtrlCreateButton("Turm bauen?",1,101,100,50)
    GUIctrlSetOnEvent($B5,"_B5")
    $B6=GUICtrlCreateButton("Mauer bauen?",1,151,100,50)
    GUIctrlSetOnEvent($B6,"_B6")
    $B7=GUICtrlCreateButton("Burg ausbauen?",1,201,100,50)
    GUIctrlSetOnEvent($B7,"_B7")
    $B8=GUICtrlCreateButton("", 480,1,20,20)
    GUICtrlSetOnEvent($B8,"_B8")
    GUICtrlCreateLabel("Truppen zahl erhöhen? Proklick=+1",304,5)
    GUICtrlSetImage($B8,"22","",1)
    $B9=GUICtrlCreateButton("",480,22,20,20)
    GUICtrlSetOnEvent($B9,"_B9")
    GUICtrlCreateLabel("Mehr Bauern in den Wald schicken?",304,27)
    $B10=GUICtrlCreateButton("",480,43,20,20)
    GUICtrlSetOnEvent($B10,"_B10")
    $B11=GUICtrlCreateButton("",480,64,20,20)
    GUICtrlSetOnEvent($B11,"_B11")
    $B12=GUICtrlCreateButton("",480,85,20,20)
    GUICtrlSetOnEvent($B12,"_B12")
    #EndRegion
    #Region Labels
    $Text=GUICtrlCreateLabel("Holz:"&$Wood,101,285)
    $Tex1=GUICtrlCreateLabel("Gold:"&$Gold,201,285)
    $Tex2=GUICtrlCreateLabel("Freie Bauern:"&$Bauern,301,285)
    $Tex3=GUICtrlCreateLabel("Krieger:"&$Armee,401,285)
    $Tex4=GUICtrlCreateLabel("Stufeburg::"&$Stufeburg,201,260)
    $Tex5=GUICtrlCreateLabel("Stufemauer:"&$Stufemauer,301,260)
    $Tex6=GUICtrlCreateLabel("Anzahl der Höfe:"&$Stufehof,401,260)
    $Tex7=GUICtrlCreateLabel("Anzahl der Türme:"&$Stufeturm,101,260)
    $Tex8=Guictrlcreatelabel("Angriffswert:"&$Angriffswert,150,10)
    $Tex9=Guictrlcreatelabel("Defwert:"&$Defswert,150,30)
    $Te10=Guictrlcreatelabel("Endwert:"&$Endwert,150,50)

    [/autoit] [autoit][/autoit] [autoit]

    #Endregion
    #Region Cursor
    GUICtrlSetCursor($B1,0)
    GUICtrlSetCursor($B2,0)
    GUICtrlSetCursor($B8,0)
    GUICtrlSetCursor($B4,0)
    GUICtrlSetCursor($B5,0)
    GUICtrlSetCursor($B6,0)
    GUICtrlSetCursor($B7,0)
    GUICtrlSetCursor($B9,0)
    GUICtrlSetCursor($B10,0)
    GUICtrlSetCursor($B11,0)
    GUICtrlSetCursor($B12,0)
    GUISetBkColor(0x5DC5A6)
    Guisetstate()
    #Endregion
    #EndRegion
    #Region Endlosschleife
    While 1
    While $cdefgh<$Timeattack
    $abc=TimerInit()
    $cdefgh=0
    While 1
    $beginnn=TimerInit()
    $difff=1
    While $difff<=1000
    If $Cheat=123456789 then
    $Wood=$Wood+10000
    $Cheats=$Cheats+1
    $Cheat=0
    EndIf
    If $Cheat=123 then
    $Gold=$Gold+10000
    $Cheats=$Cheats+1
    $Cheat=0
    EndIf
    If $Cheats>2 Then
    Exit
    EndIf
    $difff=TimerDiff($beginnn)
    Wend
    $Wood=$Wood+$Produktionsfaktor*$BHolz
    $Gold=$Gold+$Produktionsfaktor*$Bauern
    $Angriffswert=$Atk*$Armee
    $Defswert=$Armee/2*$Def
    $Endwert=$Defswert+$Angriffswert
    GUICtrlSetData($Text,"Holz:" &$Wood)
    GUICtrlSetData($Tex1,"Gold:" &$Gold)
    GUICtrlSetData($Tex2,"Freie Bauern:" &$Bauern)
    GUICtrlSetData($Tex3,"Krieger:" &$Armee)
    GUICtrlSetData($Tex4,"Stufeburg:"&$Stufeburg)
    GUICtrlSetData($Tex5,"Stufemauer:"&$Stufemauer)
    GUICtrlSetData($Tex6,"Anzahl der Höfe:"&$Stufehof)
    GUICtrlSetData($Tex7,"Anzahl der Türme:"&$Stufeturm)
    GUICtrlSetData($Tex8,"Angriffswert:"&$Angriffswert)
    GUICtrlSetData($Tex9,"Defwert:"&$Defswert)
    GUICtrlSetData($Te10,"Endwert:"&$Endwert)
    $cdefgh=TimerDiff($abc)
    Wend
    WEnd
    $Armee=$Armee-$randi
    WEnd
    #EndRegion

    [/autoit]


    Die KI funktioniert nochnicht X(
    ws sollen nach 2-4 minuten geggner kommen und immer 20-40 eigene Krieger auslöschen...

    aber danke schonml im vorraus wenn ich wüsste ob/wie man heir thx geben kann würde ich dir eins geben :)

    Einmal editiert, zuletzt von Bloodykill (3. August 2009 um 10:21)