Hallo zusammen,
im Moment habe ich ein recht großes Projekt vor mir, ein Managerspiel...
Bisher klappte auch alles Problemlos. Ich kann ein Spiel starten und bekomme die entsprechenden Grafiken angezeigt. Ich kann einzellne Punkte auf einer Karte ansteuern usw. Doch jetzt hänge ich und komme seit zwei Tagen nicht mehr weiter...
Hier das Problem:
Ich habe eine Karte, welche normal als Hintergrundgrafik angelegt ist. Die Karte hat einige Punkte welche mit Unsichtbaren Labels angeklickt werden können (GUISetOnEventMode, 1). Beim Ansteuern soll folgendes Passieren:
Neben dem Objekt wird ein Fenster erstellt indem man verschiedene Optionen hat: Gehört es keinem, kann man es Kaufen, gehört es mir kann ich es betreten und gehört es dem Gegner kann ich es Angreifen. Das erstellen des Fensters mit GDI+ war kein Problem (habe mich zum ersten mal an GDI+ versucht und durch Tutorials war das kein Problem).
Jetzt habe ich aber folgenden Wunsch.. Drückt man irgendwo auf die Karte soll das Fenster verschwinden (funktioniert mit _IsPressed)
Drückt man aber innerhalb des Fensters auf einen Button soll eine neue Funktion aufgerufen werden.
Ich zeig euch hierzu mal die Funktion:
Spoiler anzeigen
Func toObj($ObjID)
Opt("GUIOnEventMode", 0)
Sleep(100)
$mousepos = MouseGetPos()
$InfoGui = GUICreate("InfoGui",200,200,$mousepos[0],$mousepos[1], $WS_POPUP, -1,$game)
GUISetState()
_GDIPlus_Startup()
$GDIInfoGui = _GDIPlus_GraphicsCreateFromHWND($InfoGui)
$red = _GDIPlus_BrushCreateSolid(0xF7FFB0B0)
$redpen = _GDIPlus_PenCreate(0xF7FF0000, 3)
$green = _GDIPlus_BrushCreateSolid(0xF7C2FFB0)
$greenpen = _GDIPlus_PenCreate(0xF74DFF00,3)
$gray = _GDIPlus_BrushCreateSolid(0xF7E6E6E6)
$graypen = _GDIPlus_PenCreate(0xF78A8A8A,3)
; Überprüfen des Objekts und setzen der richtigen Farbe
$owner = IniRead(@ScriptDir & "\tmpsave.shg","Game","Obj" & $ObjID,"0")
If $towner = 0 Then ; Gehört keinem
_GDIPlus_GraphicsFillRect($GDIInfoGui,0,0,1100,800,$gray)
_GDIPlus_GraphicsDrawRect($GDIInfoGui,0,0,199,199,$graypen)
_GDIPlus_GraphicsDrawRect($GDIInfoGui,50,50,100,40,$graypen)
;_GDIPlus_GraphicsDrawString($GDIInfoGui,"KAUFEN",50,50)
ElseIf $toiletowner = 1 Then ; Gehört Spieler
_GDIPlus_GraphicsFillRect($GDIInfoGui,0,0,1100,800,$green)
_GDIPlus_GraphicsDrawRect($GDIInfoGui,0,0,199,199,$greenpen)
ElseIf $toiletowner = 2 Then ; Gehört Gegner
_GDIPlus_GraphicsFillRect($GDIInfoGui,0,0,1100,800,$red)
_GDIPlus_GraphicsDrawRect(GDIInfoGui,0,0,199,199,$redpen)
EndIf
WinSetTrans("InfoGui","",220)
_GDIPlus_GraphicsDrawString(GDIInfoGui,"Obj " & $ObjID & " Informationen",25,10,"Comic Sans MS",12)
$buttontest = _GUICtrlButton_Create($InfoGui,"KAUFEN",50,50,100,40)
While 1
Switch GuiGetMsg()
Case $buttontest
MsgBox(0,"","Bestanden")
EndSwitch
If _IsPressed("01") Then
_GDIPlus_BrushDispose($red)
_GDIPlus_BrushDispose($green)
_GDIPlus_BrushDispose($gray)
_GDIPlus_GraphicsDispose($GDIInfoGui)
_GDIPlus_PenDispose($redpen)
_GDIPlus_PenDispose($greenpen)
_GDIPlus_PenDispose($graypen)
_GDIPlus_Shutdown()
GUIDelete($InfoGui)
Opt("GUIOnEventMode", 1)
ExitLoop
EndIf
WEnd
EndFunc
Alles anzeigen
Ich würde mich freuen wenn mir jemand helfen könnte oder mir vielleicht eine einfacherer oder elegantere Lösung zeigt
Liebe Grüße
Marvin