Hilfe zu Pic gebraucht

  • Leider mussten wir den Namen ändern, da er schon existierte :(

    Naja, jatzt bekommt jedes Pic was erstellt wird auch ein $ :thumbup: Das bringt uns ein ganzes Stück weiter! Hat jemand noch verbesserungsidee :?:

    Ok, hier das Script:

    Spoiler anzeigen
    [autoit]

    FileDelete(@ScriptDir & "\Bau.ini")
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <TabConstants.au3>
    #include <WindowsConstants.au3>
    #include <Date.au3>
    #include <Misc.au3>

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

    #Region ### START Koda GUI section ### Form=C:\Dokumente und Einstellungen\Hendrik\Favoriten\Eigene Dateien\AutoIt\Benutzeroberflächen\MC.kxf
    $MC = GUICreate("The destroyed city", 1025, 769, 184, 118)
    $Group1 = GUICtrlCreateGroup("Spiel:", 3, 3, 1018, 580)
    $Pic1 = GUICtrlCreatePic(@ScriptDir & "\Hintergrund.jpg", 9, 18, 1000, 560)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group2 = GUICtrlCreateGroup("Spielmenü", 3, 585, 1015, 178, -1, $WS_EX_TRANSPARENT)
    $Tab1 = GUICtrlCreateTab(9, 600, 1003, 157)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $TabSheet1 = GUICtrlCreateTabItem("Baummenü")
    $BauHaus = GUICtrlCreateButton("(Not allowed)", 15, 627, 54, 54, $BS_BITMAP)
    GUICtrlSetImage(-1, @ScriptDir & "\Haus.bmp", 0)
    GUICtrlSetTip(-1, "Haus: Holz 3")
    $BauSaegewerk = GUICtrlCreateButton("(Not allowed)", 69, 627, 54, 54, $BS_BITMAP)
    GUICtrlSetImage(-1, @ScriptDir & "\Sägewerk.bmp", 0)
    GUICtrlSetTip(-1, "Sägewerk: Holz 2 Eisen 1 Wekzeug 2 Bürger 2")
    $BauErzschmelze = GUICtrlCreateButton("(Not allowed)", 123, 681, 54, 54, $BS_BITMAP)
    GUICtrlSetImage(-1, @ScriptDir & "\Erzschmelze.bmp", 0)
    GUICtrlSetTip(-1, "Erzschmelze: Holz 4 Eisen 2 Werkzeug 3 Bürger 10 (Erzmine benötigt")
    $BauErzmine = GUICtrlCreateButton("(Not allowed)", 123, 627, 54, 54, $BS_BITMAP)
    GUICtrlSetImage(-1, @ScriptDir & "\Erzmine.bmp", 0)
    GUICtrlSetTip(-1, "Erzmine: Holz 4 Eisen 1 Werkzeug 2 Bürger 10")
    $BauKuhfarm = GUICtrlCreateButton("(Not allowed)", 15, 681, 54, 54, $BS_BITMAP)
    GUICtrlSetImage(-1, @ScriptDir & "\Kuhfarm.bmp", 0)
    GUICtrlSetTip(-1, "Kuhfam: Holz 4 Eisen 0 Werkzeug 3 Bürger 5")
    $BauMetzkerei = GUICtrlCreateButton("(Not allowed)", 69, 681, 54, 54, $BS_BITMAP)
    GUICtrlSetImage(-1, @ScriptDir & "\Metzkerei.bmp", 0)
    GUICtrlSetTip(-1, "Metzkerei: Holz 3 Eisen 2 Werkzeug 2 Bürger 5 (Kuhfarm benötigt) ")
    $TabSheet2 = GUICtrlCreateTabItem("Rohstoffe")
    $RohstoffeHolz = GUICtrlCreateLabel("Holz", 15, 627, 33, 21)
    GUICtrlSetFont(-1, 11, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    GUICtrlSetTip(-1, "Deine Holzlager")
    $RohstoffeHolzAnzahl = GUICtrlCreateLabel("20", 94, 627, 75, 21)
    GUICtrlSetFont(-1, 11, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $RohstoffeEisen = GUICtrlCreateLabel("Eisen", 15, 645, 41, 21)
    GUICtrlSetFont(-1, 11, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    GUICtrlSetTip(-1, "Dein Eisenlager")
    $RohstoffeEisenAnzahl = GUICtrlCreateLabel("20", 94, 645, 75, 21)
    GUICtrlSetFont(-1, 11, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $RohstoffeNahrungAnzahl = GUICtrlCreateLabel("20", 94, 681, 75, 21)
    GUICtrlSetFont(-1, 11, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $RohstoffeNahrung = GUICtrlCreateLabel("Nahrung", 15, 681, 59, 21)
    GUICtrlSetFont(-1, 11, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    GUICtrlSetTip(-1, "Dein Nahrungslager")
    $RohstoffeWerkzeugAnzahl = GUICtrlCreateLabel("20", 94, 663, 75, 21)
    GUICtrlSetFont(-1, 11, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $RohstoffeWerkzeug = GUICtrlCreateLabel("Werkzeuge", 15, 663, 79, 21)
    GUICtrlSetFont(-1, 11, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    GUICtrlSetTip(-1, "Dein Nahrungslager")
    $TabSheet3 = GUICtrlCreateTabItem("Befölkerung")
    $BefoelkerungBuergerAnzahl = GUICtrlCreateLabel("0", 93, 627, 75, 21)
    GUICtrlSetFont(-1, 11, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $BefoelkerungBuerger = GUICtrlCreateLabel("Bürger", 14, 627, 48, 21)
    GUICtrlSetFont(-1, 11, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    GUICtrlSetTip(-1, "Dein Nahrungslager")
    $BefoelkerungPFAnzahl = GUICtrlCreateLabel("0", 93, 646, 75, 21)
    GUICtrlSetFont(-1, 11, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $BefoelkerungPF = GUICtrlCreateLabel("Plaz für", 14, 646, 54, 21)
    GUICtrlSetFont(-1, 11, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    GUICtrlSetTip(-1, "Dein Nahrungslager")
    $TabSheet4 = GUICtrlCreateTabItem("Spielstand")
    $Speichern = GUICtrlCreateButton("Speichern", 15, 627, 75, 25, 0)
    $Laden = GUICtrlCreateButton("Laden", 90, 627, 75, 25, 0)
    GUICtrlCreateTabItem("")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    $Stunde = False
    $ToolTip = False
    $Sec = False
    $SpeicherPfad = False
    $Min = False
    $Bewohner = 0
    $BewohnerMax = 0
    $HolzAbbau = 0
    $Hauser = 0
    $BewohnerZahl = 0
    $HolzRead = GUICtrlRead($RohstoffeHolzAnzahl)
    $BewohnerRead = GUICtrlRead($BefoelkerungBuergerAnzahl)
    $Speicher = 30
    $BauZahl = 0
    $cordx = -50
    $cordy = -50
    $BauZahl1 = 0
    While 1
    If $Stunde = False Then
    $Stunde = @HOUR
    EndIf
    If $BewohnerRead = $BewohnerMax Then
    Sleep(0)
    Else
    If $Min = False Or $Stunde + 1 = @HOUR Then
    $Min = @MIN
    $Stunde = @HOUR
    ElseIf $Min + 1 = @MIN Or $Stunde +1 = @HOUR Then
    Do
    $BewohnerRead = GUICtrlRead($BefoelkerungBuergerAnzahl)
    If $BewohnerRead + 1 > $BewohnerMax Then ExitLoop
    $BewohnerZahl = $BewohnerZahl + 1
    $Min = @MIN
    $Bewohner = $Bewohner + 1
    GUICtrlSetData($BefoelkerungBuergerAnzahl, $Bewohner)
    Until $BewohnerZahl = $Hauser
    $HolzZahl = 0
    If $HolzAbbau = 0 Then
    Sleep(0)
    Else
    If $Speicher > $HolzRead Then
    Do
    $HolzRead = GUICtrlRead($RohstoffeHolzAnzahl)
    If $Speicher > $HolzRead Then
    GUICtrlSetData($RohstoffeHolzAnzahl, $HolzRead + 2)
    EndIf
    $HolzZahl = $HolzZahl + 1
    Until $HolzAbbau = $HolzZahl
    EndIf
    EndIf
    EndIf
    $BewohnerZahl = 0
    $HolzZahl = 0
    EndIf
    If $ToolTip = True Then
    If $Sec = False Then
    $Sec = @SEC
    Else
    If $Sec + 5 = @SEC Then
    ToolTip("")
    $ToolTip = False
    EndIf
    EndIf
    EndIf
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    $SpeichernMSG = MsgBox(3 + 32, "Speichern", "Möchtest du das Spiel Speichern?")
    If $SpeichernMSG = 6 Then
    Call("_speichern")
    Exit
    EndIf
    If $SpeichernMSG = 3 Then
    Exit
    ElseIf $SpeichernMSG = 7 Then
    Exit
    EndIf
    Case $Speichern
    Call("_speichern")
    Case $Laden
    Call("_laden")
    Case $BauHaus
    _Bau("Haus")
    Case $BauSaegewerk
    _Bau("Sägewerk")
    EndSwitch
    ;~ WinClose ("Eigenschaften von Datum und Uhrzeit")
    WEnd
    Func _speichern()
    If $SpeicherPfad = False Then
    $file = FileSaveDialog("Spielstand speichern:", @ScriptDir & "\saves", "Spielstand (*.sav)", 2 + 16, "The destroyed city.sav")
    $SpeicherPfad = $file
    Else
    $file = $SpeicherPfad
    EndIf
    If @error = 1 Then
    Sleep(0)
    Else
    FileDelete($file)
    $HolzRead = GUICtrlRead($RohstoffeHolzAnzahl)
    $EisenRead = GUICtrlRead($RohstoffeEisenAnzahl)
    $NahrungRead = GUICtrlRead($RohstoffeNahrungAnzahl)
    $WerkzeugRead = GUICtrlRead($RohstoffeWerkzeugAnzahl)
    $BewohnerRead = GUICtrlRead($BefoelkerungBuergerAnzahl)
    $fileRead = FileRead(@ScriptDir & "\Bau.ini")
    FileWrite($file, $fileRead)
    IniWrite($file, "Rohstoffe", "Holz", $HolzRead)
    IniWrite($file, "Rohstoffe", "Eisen", $EisenRead)
    IniWrite($file, "Rohstoffe", "Nahrung", $NahrungRead)
    IniWrite($file, "Rohstoffe", "Werkzeug", $WerkzeugRead)
    IniWrite($file, "Bewohner", "Bürger", $BewohnerRead)
    $Formel = $HolzRead + $EisenRead + $NahrungRead + $WerkzeugRead + $BewohnerRead * 100
    $FormelHex = Hex($Formel)
    IniWrite($file, "Daten", "Rechnung", $FormelHex)
    ToolTip("Spiel Gespeichert")
    $ToolTip = True
    EndIf
    EndFunc ;==>_speichern
    Func _laden()
    $file = FileOpenDialog("Spielstand laden:", @ScriptDir & "\saves", "Spielstand (*.sav)", 1 + 2, "The destroyed city.sav")
    If @error = 1 Then
    Sleep(0)
    Else
    $Hauser = 0
    $LadenZahl = 0
    $SpeicherPfad = $file
    $LadenHolz = IniRead($file, "Rohstoffe", "Holz", "")
    $LadenEisen = IniRead($file, "Rohstoffe", "Eisen", "")
    $LadenNahrung = IniRead($file, "Rohstoffe", "Nahrung", "")
    $LadenWerkzeug = IniRead($file, "Rohstoffe", "Werkzeug", "")
    $LadenBewohner = IniRead($file, "Bewohner", "Bürger", "")
    $LadenFormel = IniRead($file, "Daten", "Rechnung", "")
    $LadenFormeDec = Dec($LadenFormel)
    $Formel1 = $LadenHolz + $LadenEisen + $LadenNahrung + $LadenWerkzeug + $LadenBewohner * 100
    If $Formel1 = $LadenFormeDec Then
    GUISetState(@SW_LOCK)
    $LadenZahlMax = IniRead($file, "Bau", "ZahlHaus", "0")
    Do
    $Hauser = $Hauser + 1
    $BewohnerMax = $BewohnerMax + 5
    $LadenZahl = $LadenZahl + 1
    $LadenBau = IniRead($file, "Bau", "Haus" & $LadenZahl, "0")
    $LadenZahl = $LadenZahl + 1
    $LadenBau2 = IniRead($file, "Bau", "Haus" & $LadenZahl, "0")
    GUICtrlCreatePic(@ScriptDir & "\Haus.jpg", $LadenBau, $LadenBau2, 100, 100)
    Until $LadenZahl = $LadenZahlMax
    $LadenZahl = 0
    $LadenZahlMax = IniRead($file, "Bau", "ZahlSägewerk", "0")
    Do
    $HolzAbbau = $HolzAbbau + 1
    $LadenZahl = $LadenZahl + 1
    $LadenBau = IniRead($file, "Bau", "Sägewerk" & $LadenZahl, "0")
    $LadenZahl = $LadenZahl + 1
    $LadenBau2 = IniRead($file, "Bau", "Sägewerk" & $LadenZahl, "0")
    GUICtrlCreatePic(@ScriptDir & "\Sägewerk.jpg", $LadenBau, $LadenBau2, 100, 100)
    Until $LadenZahl = $LadenZahlMax
    GUISetState(@SW_UNLOCK)
    GUICtrlSetData($BefoelkerungPFAnzahl, $BewohnerMax)
    GUICtrlSetData($RohstoffeHolzAnzahl, $LadenHolz)
    GUICtrlSetData($RohstoffeEisenAnzahl, $LadenEisen)
    GUICtrlSetData($RohstoffeNahrungAnzahl, $LadenNahrung)
    GUICtrlSetData($RohstoffeWerkzeugAnzahl, $LadenWerkzeug)
    GUICtrlSetData($BefoelkerungBuergerAnzahl, $LadenBewohner)
    Else
    MsgBox(16, "Error", "Spielstand kann nicht geladen werden")
    EndIf
    EndIf
    EndFunc ;==>_laden
    Func _Bau($BauArt)
    Dim $Bau[$BauZahl1 +1]
    $A = GUICtrlCreatePic(@ScriptDir & "\" & $BauArt & ".jpg",$cordx,$cordy,100,100)
    GUICtrlSetCursor($A,0)
    $WinPos = WinGetPos("The destroyed city")
    While 1
    _MouseTrap($WinPos[0] + 62, $WinPos[1] + 97, $WinPos[0] + $WinPos[2] - 68, $WinPos[1] + $WinPos[3] - 243)
    $Maus = GUIGetCursorInfo()
    $x2 = $Maus[0]
    $x = $cordx + $x2
    $y2 = $Maus[1]
    $y = $cordy + $y2
    GUICtrlSetPos($A,$x,$y,100,100)
    $xm = $Maus[0]
    $ym = $Maus[1]
    $nMsg1 = GUIGetMsg()
    Switch $nMsg1
    Case $Pic1
    GUICtrlDelete ($A)
    $HolzRead = GUICtrlRead($RohstoffeHolzAnzahl)
    $EisenRead = GUICtrlRead($RohstoffeEisenAnzahl)
    $NahrungRead = GUICtrlRead($RohstoffeHolzAnzahl)
    $WerkzeugRead = GUICtrlRead($RohstoffeWerkzeugAnzahl)
    $BewohnerRead = GUICtrlRead($BefoelkerungBuergerAnzahl)
    $Pos = MouseGetPos()
    $BauZahl = 0
    If $BauArt = "Haus" Then
    If $HolzRead - 3 < 0 Then
    ToolTip("Du hast nicht genügend Rohstoffe")
    $ToolTip = True
    ElseIf $HolzRead - 3 > 0 Then
    $BauZahl = $BauZahl + 1
    IniDelete(@ScriptDir & "\Bau.ini", "Bau", "ZahlHaus")
    IniWrite(@ScriptDir & "\Bau.ini", "Bau", "ZahlHaus", $BauZahl * 2)
    IniWrite(@ScriptDir & "\Bau.ini", "Bau", "Haus" & $BauZahl, $Pos[0] - 237)
    $BauZahl = $BauZahl + 1
    IniWrite(@ScriptDir & "\Bau.ini", "Bau", "Haus" & $BauZahl, $Pos[1] - 197)
    $Hauser = $Hauser + 1
    $BewohnerMax = $BewohnerMax + 5
    GUICtrlSetData($BefoelkerungPFAnzahl, $BewohnerMax)
    GUISetState(@SW_LOCK)
    $Bau[0] = GUICtrlCreatePic(@ScriptDir & "\Haus.jpg", $Pos[0] - 237, $Pos[1] - 197, 100, 100)
    $BauZahl1 = $BauZahl1 +1
    GUISetState(@SW_UNLOCK)
    GUICtrlSetData($RohstoffeHolzAnzahl, $HolzRead - 3)
    EndIf
    ElseIf $BauArt = "Sägewerk" Then
    If $HolzRead - 2 < 0 Or $EisenRead - 1 < 0 Or $WerkzeugRead - 2 < 0 Then
    ToolTip("Du hast nicht genügend Rohstoffe")
    $ToolTip = True
    ElseIf $BewohnerRead - 2 < 0 Then
    ToolTip("In deiner Stadt sind nicht genügend Einwohner")
    $ToolTip = True
    ElseIf $HolzRead - 3 > 0 Then
    $BauZahl = 0
    $BauZahl = $BauZahl + 1
    IniDelete(@ScriptDir & "\Bau.ini", "Bau", "ZahlSägewerk")
    IniWrite(@ScriptDir & "\Bau.ini", "Bau", "ZahlSägewerk", $BauZahl * 2)
    IniWrite(@ScriptDir & "\Bau.ini", "Bau", "Sägewerk" & $BauZahl, $Pos[0] - 237)
    $BauZahl = $BauZahl + 1
    IniWrite(@ScriptDir & "\Bau.ini", "Bau", "Sägewerk" & $BauZahl, $Pos[1] - 197)
    $Hauser = $Hauser + 1
    $HolzAbbau = $HolzAbbau + 1
    GUICtrlSetData($BefoelkerungPFAnzahl, $BewohnerMax)
    GUISetState(@SW_LOCK)
    $Bau[$BauZahl1] = GUICtrlCreatePic(@ScriptDir & "\Sägewerk.jpg", $Pos[0] - 237, $Pos[1] - 197, 100, 100)
    $BauZahl1 = $BauZahl1 +1
    GUISetState(@SW_UNLOCK)
    GUICtrlSetData($RohstoffeHolzAnzahl, $HolzRead - 3)
    GUICtrlSetData($RohstoffeEisenAnzahl, $EisenRead - 1)
    GUICtrlSetData($RohstoffeWerkzeugAnzahl, $WerkzeugRead - 2)
    GUICtrlSetData($BefoelkerungBuergerAnzahl, $BewohnerRead - 2)
    EndIf
    EndIf
    _MouseTrap()
    ExitLoop
    EndSwitch
    WEnd
    EndFunc ;==>_Bau

    [/autoit]

    mfg. Jam00