Leider mussten wir den Namen ändern, da er schon existierte ![]()
Naja, jatzt bekommt jedes Pic was erstellt wird auch ein $
Das bringt uns ein ganzes Stück weiter! Hat jemand noch verbesserungsidee ![]()
Ok, hier das Script:
Spoiler anzeigen
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>
#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