Oder du schreibst es in ein .txt datei & lässt dir die dan mit FileRead() ausgeben.
Beiträge von Niccoo
-
-
Fail gefunden ;D lag an copy paste
-
Hey, ich versuche einen zeit überprüfer zu bauen, doch irgendwie
funktioniert die if-schleife nicht richtig. Ich habe bereits alles in zahlen gemacht (int). Doch theoretisch gesehen müsste alles so klappen wie es sollSpoiler anzeigen
[autoit]$Zeit = IniRead($Pfad,"Dauer","Zeit" & $u,"00:00:00")
[/autoit] [autoit][/autoit] [autoit]
$Datum = IniRead($Pfad,"Dauer","Datum" & $u,"01.01.2999")
$Zeit = StringSplit($Zeit,":")
$Datum = StringSplit($Datum,".")
$Zeit[1] = Int($Zeit[1])
$Zeit[2] = Int($Zeit[2])
$Zeit[3] = Int($Zeit[3])
$Datum[1] = Int($Datum[1])
$Datum[2] = Int($Datum[2])
$Datum[3] = Int($Datum[3])
$Hour = Int(@MDAY)
$Min = Int(@MDAY)
$Sec = Int(@MDAY)
$Mday = Int(@MDAY)
$Mon = Int(@MON)
$Year = Int(@YEAR)If $Zeit[1] <= $Hour and $Zeit[2] <= $Min and $Zeit[3] <= $Sec and $Datum[1] <= $Mday and $Datum[2] <= $Mon and $Datum[3] <= $Year Then
[/autoit]
MsgBox(0,"1",$u)
ElseIf $Zeit[1] < $Hour and $Datum[1] <= $Mday and $Datum[2] <= $Mon and $Datum[3] <= $Year Then
MsgBox(0,"2",$u)
ElseIf $Datum[1] < $Mday and $Datum[2] <= $Mon and $Datum[3] <= $Year Then
MsgBox(0,"3",$u)
ElseIf $Datum[2] < $Mon and $Datum[3] <= $Year Then
MsgBox(0,"4",$u)
ElseIf $Datum[3] < $Year Then
MsgBox(0,"5",$u)
EndIf
$u += 1Ein eintrag in der konfi sieht so aus:
Spoiler anzeigen
Zeit1=0:29:5216:30
Datum1=4.0416:30
Zeit2=17:41:23
Datum2=4.05.2012
Zeit3=22:53:4
Datum3=4.05.2012Ja ich weiß, die erste zeit ist unrealistisch, doch leider wird sie auch durch dem programm festgelegt & dort klapt die schleife auch nicht
-
soo... habe mir mit RedHead jz was überlegt, es dürfte eig. doch jz kein fehler mehr drinne sein (wurde noch nicht getestet) das $Now... wird durch @Hour etc ersetzt & fertig...
[autoit]If $Hour <= $NowHour and $Min <= $NowMin and $Sec <= $NowSec and $Monat <= $NowMonat and $Day <= $NowDay and $year <= $NowYear Then
[/autoit]
Funktion!
ElseIf $Hour < $NowHour and $Monat <= $NowMonat and $Day <= $NowDay and $year <= $NowYear Then
Funktion!
ElseIf $Day < $NowDay and $Monat <= $NowMonat and $year <= $NowYear Then
Funktion!
ElseIf $Monat < $NowMonat and $year <= $NowYear Then
Funktion!
ElseIf $year < $NowYear Then
Funktion!
EndIfEsseiden jemand findet da so auf anhieb jz noch ein denk fehler oder sowas
Ansonsten teste ich das jz & dan mal schauen
-
Oke, war doch zu doof gestellt ich habe es ja bereits mehrfach versucht. zumbeispiel so:
Spoiler anzeigen
[autoit]$b = 1
[/autoit] [autoit][/autoit] [autoit]
While Sleep(20)
_Check()
$b += 1
WEndFunc _Check()
[/autoit]
$Time = IniRead(@ScriptDir & "\hallo.ini","Zeit","6","00:00:00")
$Date = IniRead(@ScriptDir & "\hallo.ini","Date","6","01.01.2012")
$Time = StringSplit($Time,":")
$Date = StringSplit($Date,".")
$NTime = StringSplit(_NowTime(),":")
For $i = 1 To 3
$Time[$i] = Int($Time[$i])
$NTime[$i] = Int($nTime[$i])
Next
If $Time[1] <= $NTime[1] And $Time[2] <= $NTime[2] And $Time[3] <= $NTime[3] Then
MsgBox(0,"",$Time)
Else
For $i = 1 To 3
MsgBox(0,"","Klappts? " & $NTime[$i])
Next
EndIf
EndFuncDas sind einfach nur schnelle skripts, um zu schauen, wie es wie funktionieren kann/könnte
Ich hatte es auch so versucht, aber so klappte es nur ohne datum und es gab schwirigkeiten bei der "Zeitüberschreitung" von 23:59 auf 00:01
[autoit]$sTime = StringRight("0" & $H, 2) & ":" & StringRight("0" & $M, 2) & ":" & StringRight("0" & $S, 2)
[/autoit]
If $sTime <= _NowTime() ThenJedes skript hat irgendwo vorteile aber irgendwo klappts dan auch doch nicht ;D
-
Heyho liebe com
Ich versuche schon seid etwas längerem einen timer zu bauen. Er soll eine Zeit aus meiner Ini datei auslesen (die der benutzer vorher angegeben hat) z.B. 6=14:45:31. Das Programm soll jz in der hauptschleife immer die Ini datei durch gehen und überprüfen, ob einer der Zeiten ÄLTER als die aktuelle ist (also ob die zeit bereits rum ist ^^)
Das würde dan irgendwie so aussehen:
14:45:31 ist größer als aktuelle zeit. daher soll er jz das machen.
Noch eine erweiterung, ich möchte das es auch mit tagen gehen. Also weil es kann ja passieren, das eine zeit wie 01:12:34 aber am 02.05.2012 so das er das auch erkennt. Das ist irgendwie voll zu erklären wenn es immer noch sehr unverständlich ist, einfach nochmal nachfragen. Dann kan ich vll. noch schnell ein fail skript von mir dazu stecken
Ach und eins noch, er soll auf die eingespeicherte zeit vll. ab und zu mal was draufrechen. Wie zumbeispeil einfach mal 5min dazu oder so oder die zeit *2 das dan aus 14:45:31 - 05:31:02 wird.
-
Ich kenne mich damit aber wie gesagt nicht aus ich kan mir da irgendwie auch nicht vorstellen wie man sowas machen kann. Allerhöchstens mit WinHttp auf die seite navigieren & dann den quellcode auslesen...
-
Also mit WinHttp kenne ich mich aus *sehr gut woher nur?* aber was das andere ist. KEINE AHNUNG! aber ich denke mal das ist son server im netz oder soo... Aber das spiel ist eig. nur ein Schulprojekt. Ich soll in info ein referat halten & ich will mein lehrer schocken ;pp sollte eig. Die geschichte des Computers vorstellen :O *LAANGWEILIG!* hatte da kein bock druf und mache jz das aber das login system über der Ini ist naja nicht gewollt, aber ich will/kann es nicht übers internet laufen lassen. Da ALLE seiten gespert sind solange sie nicht vorher EXTRA MANUELL freigegeben werden.
& das soll auch ein spiel werden, was man mal spielen kan wenn man mal kein bock auf Unterricht hat ;pp
-
Ja das muss ich auch noch irgendwie machen. Aber das mit dem töte so & so viele gegner um eine Welle aufzusteigen habe ich auch. Wenn du es geschaft hast kommt man zurück zum Titelbild & kan sich die upgrades kaufen. Wie gesagt, muss alles noch verfeinert werden ist ist gerade mal im aufbau... Aber ich will mein Login system da irgendwie noch einbauen, und in den einzelnden Ini`s werden dan die daten alle gespeichert. Wie Wave, upgrades etc etc.
-
Hehe das ist mitlerweile nicht mal mehr die aktuellste version vom spiel ich bin eig. tag täglich am Skrippen & verbessern. Habe das jz mit upgrades und waves gemacht. Das muss aber noch verfeinert werden
-
Naja, soooooo schlecht bin ich dan doch nicht ;D ich habe den Login einfach nur super krass umstendlich geskrippt ;oo ist auch bereits veraltet, habe den einfacher gemacht. Hinzugefügt habe ich den noch nicht. Aber das titelbild zu meinem Spiel B-) aber das hätte ich hofe Marsi und developer nie fertig bekommen. Aber sie haben die ruhe behalten und mir geholfen achja und die version vom spiel, die ich immer hochlade ist ohne grafiken, da ich die nicht über GDIPlus mache sonder als jpg/gif dazulade & ich will nicht immer alles hochladen
-
Aber wenn ich am anfang vom Spiel #incluod 'blabla.au3' mache & das spiel als exe mache, und auf dem rechner wo es ausgeführt wird kein Autoit drauf ist, könnten sie es dan dennoch starten?
-
Oder ich verbinde sie einfach in ein Skript, aber das wird megaaa schwer da ich MustDeklarVariablen habe & ich eig. noch ein noob bin :pp aber das wird schon ;)) esseiden es gibt eine richtige lösung... irgendwie mit #incloud oder soo
-
Habe es einfach mal verbessert, habe es schnell geschrieben, da ich weiter kommen möchte
-
Hey,
Ich möchte gerne 2 Skripts miteinander verbinden, die am besten auch Kommunizieren können. Das erste Skript ist ein login, das auch überprüft ob daten vorhanden sind und soo... Das zweite Skript ist das spiel, an ihm soll der ID weitergegeben werden, damit man eine "Speicher" funktion hat.
Beispiel: Ich habe auf dem Desktop den Login. Starte ihn, & logge mich ein. Wenn der Login erfolgreich war, sollen ein paar parameter übergeben werden ($ID & $NR das sind jeweils der Speicherort & der Name womit eingeloggt wird) danach soll (wenns geht) das gesamte Login Skript geschlossen werden. Er soll einfach mit dem Spiel fortfahren.
Ich weiß nicht obs von nöten ist, aber ich poste dazu mal beide (fürs erste nur 2) Skripts die verbunden werden sollen.
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
#include <string.au3>
#include <Date.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]#Region ### START Koda GUI section ### Form=
[/autoit] [autoit][/autoit] [autoit]
$Form1 = GUICreate("Login", 300, 134)
$LogID = GUICtrlCreateInput("", 24, 24, 121, 21)
$LogNR = GUICtrlCreateInput("", 24, 56, 121, 21)
$Label1 = GUICtrlCreateLabel("Name", 168, 24, 32, 17)
$bLogin = GUICtrlCreateButton("Login", 24, 88, 75, 25, 0)
GUICtrlSetOnEvent(-1,"_Login")
$bPw = GUICtrlCreateButton("Pw?", 112, 88, 43, 25, 0)
GUICtrlSetOnEvent(-1,"_Passwort_Vergessen")
$bNeuAcc = GUICtrlCreateButton("Neu Registrieren", 160, 88, 115, 25, 0)
GUICtrlSetOnEvent(-1,"_NeuAccGUI")
$Label2 = GUICtrlCreateLabel("Registrierungsnummer", 168, 56, 108, 17)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ####Region ### START Koda GUI section ### Form=
[/autoit] [autoit][/autoit] [autoit]
$Form2 = GUICreate("Neu", 199, 349)
$iName = GUICtrlCreateInput("", 24, 48, 153, 21)
$iAntwort = GUICtrlCreateInput("", 24, 128, 153, 21)
$iNummer = GUICtrlCreateInput("", 24, 184, 121, 21)
$iNachname = GUICtrlCreateInput("", 24, 248, 121, 21)
$Label1 = GUICtrlCreateLabel("Name für Highscore/Login", 24, 24, 129, 17)
$Label2 = GUICtrlCreateLabel("Geheimwort, wenn du dein"& @CRLF &"PW vergessen solltest", 24, 80, 238, 41)
$Button1 = GUICtrlCreateButton("Bestätigen", 24, 280, 155, 65, 0)
GUICtrlSetOnEvent(-1,"_NeuAccBestaetigen")
$Label3 = GUICtrlCreateLabel("Rechnernummer", 24, 160, 82, 17)
$Label4 = GUICtrlCreateLabel("Nachname, zur Identifikation", 24, 216, 139, 17)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Close2")
GUISetState(@SW_HIDE)
#EndRegion ### END Koda GUI section ####Region ### START Koda GUI section ### Form=
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$Form3 = GUICreate("Passwort Vergessen", 246, 142)
$PWVergessenName = GUICtrlCreateInput("", 24, 16, 121, 21)
$Label15 = GUICtrlCreateLabel("Name", 160, 16, 32, 17)
$PWVergessenWort = GUICtrlCreateInput("", 24, 48, 121, 21)
$Label25 = GUICtrlCreateLabel("Geheimwort", 160, 48, 60, 17)
$GETPW = GUICtrlCreateButton("Passwortanfrage", 24, 80, 195, 41, 0)
GUICtrlSetOnEvent(-1,"_Get_PW")
GUISetOnEvent($GUI_EVENT_CLOSE, "_Close3")
GUISetState(@SW_HIDE)
#EndRegion ### END Koda GUI section ###While 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Sleep(50)
WEndFunc _Login()
[/autoit] [autoit][/autoit] [autoit]
Local $ID,$PW, $NR, $i, $g , $maxConfigs = 1, $maxCheck = False
$ID = GUICtrlRead($LogID)
$NR = GUICtrlRead($LogNR)
GUICtrlSetData($LogID,"")
GUICtrlSetData($LogNR,"")
$PW = InputBox("Passwort","Gib hier dein Passwort ein","","*")While $maxCheck = False
[/autoit] [autoit][/autoit] [autoit]
if FileExists("C:\Users\Nico\Desktop\Schule\" & $NR & "\config" & $maxConfigs & ".ini") Then
$maxConfigs += 1
Else
$maxCheck = True
$maxConfigs -= 1
If $maxConfigs = 0 Then $maxConfigs = 1
EndIf
WEnd
MsgBox(0,"",$maxConfigs)
For $g = 1 To $maxConfigs
$Name = IniRead("C:\Users\Nico\Desktop\Schule\" & $NR & "\config" & $g & ".ini","Name","Name",0)
$Passwort = IniRead("C:\Users\Nico\Desktop\Schule\" & $NR & "\config" & $g & ".ini","Passwort","Passwort",0)
If $Name = $ID and $Passwort = $PW Then
MsgBox(64,"Login","Login Erfolgt...",2000)
; #include 'Defender.au3'
ExitLoop
EndIf
Next
EndFuncFunc _Get_PW()
[/autoit] [autoit][/autoit] [autoit]
Local $PWN, $PWW, $i, $j, $h, $maxConfigs = 1,$maxCheck = False,$PassWort,$RechnerNr,$LoginPW
$PWN = GUICtrlRead($PWVergessenName)
$PWW = GUICtrlRead($PWVergessenWort)
GUICtrlSetData($PWVergessenName,"")
GUICtrlSetData($PWVergessenWort,"")For $i = 1 To 10
[/autoit] [autoit][/autoit] [autoit]
For $j = 1 To 10
if FileExists("C:\Users\Nico\Desktop\Schule\" & $i & "\config" & $maxConfigs & ".ini") Then
$maxConfigs += 1
Else
$maxCheck = True
$maxConfigs -= 1
If $maxConfigs = 0 Then $maxConfigs = 1
EndIf
Next
For $g = 1 To $maxConfigs
$Name = IniRead("C:\Users\Nico\Desktop\Schule\" & $i & "\config" & $g & ".ini","Name","Name",0)
$PassWort = IniRead("C:\Users\Nico\Desktop\Schule\" & $i & "\config" & $g & ".ini","Wort","Wort",0)
If $Name = $PWN and $PassWort = $PWW Then
$RechnerNr = IniRead("C:\Users\Nico\Desktop\Schule\" & $i & "\config" & $g & ".ini","Rechner","Nummer",0)
$LoginPW = IniRead("C:\Users\Nico\Desktop\Schule\" & $i & "\config" & $g & ".ini","Passwort","Passwort",0)
MsgBox(64,"Daten","Name: "& $Name & @CRLF & "Passwort: "& $LoginPW & @CRLF & "Rechner Nr.: " & $RechnerNr)
_Close3()
ExitLoop
EndIf
Next
Next
EndFuncFunc _Passwort_Vergessen()
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_SHOW,$Form3)
GUISetState(@SW_HIDE,$Form1)
EndFuncFunc _NeuAccBestaetigen()
[/autoit] [autoit][/autoit] [autoit]
Global $sName = GUICtrlRead($iName)
Global $sAntwort = GUICtrlRead($iAntwort)
Global $intNummer = Int(GUICtrlRead($iNummer))
Global $sNachname = GUICtrlRead($iNachname)
Local $check = False
Local $k = 0
Local $n = 1
Local $pw
Global $newAcc = True_AccVergleich()
[/autoit] [autoit][/autoit] [autoit]If $newAcc = True Then
[/autoit] [autoit][/autoit] [autoit]
$pw = InputBox("Passwort","Bitte gib dein Passwort ein, es wird keine 2 abfrage kommen!","","*")
While $check = False
$k += 1
if not FileExists("C:\Users\Nico\Desktop\Schule\" & $intNummer & "\config" & $k & ".ini") Then
$check = True
EndIf
WEnd
IniWrite("C:\Users\Nico\Desktop\Schule\" & $intNummer & "\config" & $k & ".ini","Name","Name",$sName)
IniWrite("C:\Users\Nico\Desktop\Schule\" & $intNummer & "\config" & $k & ".ini","Name","Nachname",$sNachname)
IniWrite("C:\Users\Nico\Desktop\Schule\" & $intNummer & "\config" & $k & ".ini","Rechner","Nummer",$intNummer)
IniWrite("C:\Users\Nico\Desktop\Schule\" & $intNummer & "\config" & $k & ".ini","Wort","Wort",$sAntwort)
IniWrite("C:\Users\Nico\Desktop\Schule\" & $intNummer & "\config" & $k & ".ini","Passwort","Passwort",$pw)
$k = 0
If Not @error Then
MsgBox(64,"Erfolg","Account erfolgreich angelegt!")
GUICtrlSetData($iName,"")
GUICtrlSetData($iAntwort,"")
GUICtrlSetData($iNummer,"")
GUICtrlSetData($iNachname,"")
_Close2()
Else
MsgBox(64,"Error","Es gab folgende Error meldung: " & @error)
EndIf
EndIf
$newAcc = False
EndFuncFunc _AccVergleich()
[/autoit] [autoit][/autoit] [autoit]
Local $i, $g ,$Name, $Nachname, $j
Local $maxConfigs = 1
Local $maxCheck = FalseFor $i = 1 To 10
[/autoit] [autoit][/autoit] [autoit]
For $j = 1 To 10
if FileExists("C:\Users\Nico\Desktop\Schule\" & $i & "\config" & $maxConfigs & ".ini") Then
$maxConfigs += 1
Else
$maxCheck = True
$maxConfigs -= 1
If $maxConfigs = 0 Then $maxConfigs = 1
EndIf
Next
For $g = 1 To $maxConfigs
$Name = IniRead("C:\Users\Nico\Desktop\Schule\" & $i & "\config" & $g & ".ini","Name","Name",0)
$Nachname = IniRead("C:\Users\Nico\Desktop\Schule\" & $i & "\config" & $g & ".ini","Name","Nachname",0)
If $Name = $sName and $Nachname = $sNachname Then
MsgBox(64,"Error","Du hast bereits einen Account")
$newAcc = False
ExitLoop
EndIf
Next
Next
EndFuncFunc _Close3()
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_SHOW, $Form1)
GUISetState(@SW_HIDE, $Form3)
EndFuncFunc _NeuAccGUI()
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_SHOW, $Form2)
GUISetState(@SW_HIDE, $Form1)
EndFuncFunc _Close2()
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_SHOW, $Form1)
GUISetState(@SW_HIDE, $Form2)
EndFuncFunc _Exit()
[/autoit]
Exit
EndFuncIch weiß, der loginner ist nicht sauber geskript, man könnte ihn bestimmt verbessern. Aber viele sachen müssen sogar soo umstendlich sein, da es eine Speicher funktion für unsere Schule werden soll.
hier das Spiele Skript(ein dank an Marsi& developer):
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GDIPlus.au3>
#include <Misc.au3>
#include <Array.au3>Opt('GUICloseOnESC', 0) ; Beenden mit Esc ?
[/autoit] [autoit][/autoit] [autoit]
Opt('GUIOnEventMode', 1) ; Event Mode
Opt('MustDeclareVars', 1) ; Variablen müssen deklariert werden. (sauberes Programmieren nötig)
Opt('MouseCoordMode', 2) ; Mauskoordinaten relativ zum FensterGlobal Const $iBreite = 800, $iHoehe = 400, $iReihen = 10, $iDiagonale = Sqrt($iBreite^2+$iHoehe^2)
[/autoit] [autoit][/autoit] [autoit]; Bei 10 Reihen ist oben und unten jeweils eine halbe Reihe Luft. Daher sind nur 9 verfügbar. (Reihe 1 bis 9)
[/autoit] [autoit][/autoit] [autoit]Global $hGUI, $hGFX, $hBMP, $hBUF, $hBrush[8], $hPen[1], $aPos[2]
[/autoit] [autoit][/autoit] [autoit]Global $Gegner[1][4]
[/autoit] [autoit][/autoit] [autoit]
; 0 = X - Koordinate
; 1 = Y - Koordinate
; 2 = Farbe (eine Zahl für die Brush)
; 4 = Zustand (True=Lebend oder False=Tod). Ist der Gegner Tod wird er nicht mehr gezeichnet und nach maximal einem Frame gelöscht !Global $Pfeile[1][6]
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
;~ für erste dimension wert 1, da noch kein pfeil existiert und 1 der minimalwert ist
;~ [x][0] = X Koordinate
;~ [x][1] = Y Koordinate
;~ [x][2] = Vx ( Vektor in X Richtung )
;~ [x][3] = Vy ( Vektor in Y Richtung )
;~ [x][4] = Pfeilgeschwindigkeit in Px/Frame
;~ [x][5] = Anzahl zurückgelegte Pixel auf dem Spielfeld z.B. wird er nach 1000 Pixeln nicht mehr auf dem Feld sein. Das Spaart die Kollisionskontrolle mit dem Pfeil und dem Spielfeld !_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$hGUI = GUICreate("Defender", $iBreite, $iHoehe)
[/autoit] [autoit][/autoit] [autoit]
$hGFX = _GDIPlus_GraphicsCreateFromHWND($hGUI)
$hBMP = _GDIPlus_BitmapCreateFromGraphics($iBreite, $iHoehe, $hGFX)
$hBUF = _GDIPlus_ImageGetGraphicsContext($hBMP)$hBrush[0] = _GDIPlus_BrushCreateSolid(0xFF00592A) ; Weiss
[/autoit] [autoit][/autoit] [autoit]
$hBrush[1] = _GDIPlus_BrushCreateSolid(0xFF91AAB9) ; Armbrust
$hBrush[2] = _GDIPlus_BrushCreateSolid(0xFF630304) ; Gegner 1
$hBrush[3] = _GDIPlus_BrushCreateSolid(0xFF2E5B92) ; Gegner 2
$hBrush[4] = _GDIPlus_BrushCreateSolid(0xFFFDD00A) ; Gegner 3
$hBrush[5] = _GDIPlus_BrushCreateSolid(0xFF65583A) ; Gegner 4
$hBrush[6] = _GDIPlus_BrushCreateSolid(0xFF000000) ; Gegner 5
$hBrush[7] = _GDIPlus_BrushCreateSolid(0xFF540072) ; Schuss der Armbrust$hPen[0] = _GDIPlus_PenCreate(0xFF91AAB9, 4)
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_GraphicsSetSmoothingMode($hBUF, 4)
[/autoit] [autoit][/autoit] [autoit]GUISetOnEvent(-3, '___Exit', $hGUI) ; Exit
[/autoit] [autoit][/autoit] [autoit]
OnAutoItExitRegister('_Freigeben') ; Beim Beenden auch alle Ressourcen freigeben.
GUIRegisterMsg(0xF, 'WM_PAINT') ; Neu Zeichnen, wenn Windows das gerne so hätte...
GUISetState(@SW_SHOW)_AddPfeil() ; Den Timer starten, damit der erste Schuss früher geht.
[/autoit] [autoit][/autoit] [autoit]While Sleep(20) ; Bessere Variante, als das Sleep unten hin zu schreiben. Ein Sleep kann nur 10, 20, 30 usw sein. Alle anderen Werte funktionieren nicht richtig... (Eigentheit von AutoIt)
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_GraphicsClear($hBUF, 0xFF00592A)
[/autoit] [autoit][/autoit] [autoit]$aPos = MouseGetPos() ; Mausposition bei jedem Schleifendurchlauf nur ein Mal holen reicht aus.
[/autoit] [autoit][/autoit] [autoit]_AddPfeil() ; Man drückt die Linke Maustaste ? --> Feuer ! If _IsPressed('01') Then
[/autoit] [autoit][/autoit] [autoit]_ZeichnePfeile()
[/autoit] [autoit][/autoit] [autoit]
_ZeichneGegner()
_ZeichneArmbrust()If UBound($Gegner) < 15 And Not Random(0, 30, 1) Then _AddGegner(Random(1, 9, 1))
[/autoit] [autoit][/autoit] [autoit]; ToolTip('Anzahl Gegner: ' & UBound($Gegner) - 1 & @CRLF & 'Anzahl Pfeile: ' & UBound($Pfeile) - 1)
[/autoit] [autoit][/autoit] [autoit]WM_PAINT()
[/autoit] [autoit][/autoit] [autoit]WEnd
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func _ZeichneArmbrust()
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_GraphicsFillEllipse($hBUF, -25, $iHoehe / 2 - 25, 50, 50, $hBrush[1])
[/autoit] [autoit][/autoit] [autoit]EndFunc ;==>_ZeichneArmbrust
[/autoit] [autoit][/autoit] [autoit]Func _ZeichneGegner()
[/autoit] [autoit][/autoit] [autoit]Local $iUbound = UBound($Gegner) ; So viele gegner gibt es !
[/autoit] [autoit][/autoit] [autoit]
Local $aKlon[$iUbound] ; Klon Array.For $i = 1 To $iUbound - 1 Step 1 ; Im 0ten Array steht nix. Daher wird bei 1 begonnen.
[/autoit] [autoit][/autoit] [autoit]If $Gegner[$i][3] = False Then
[/autoit] [autoit][/autoit] [autoit]
$aKlon[$i] = 1 ; Toten Gegner löschen
ContinueLoop ; Wenn der Gegner Tod ist wird sein Schleifendurchlauf übersprungen.
EndIf$Gegner[$i][0] -= 2 ; Bewegen in X Richtung
[/autoit] [autoit][/autoit] [autoit]If $Gegner[$i][0] <= - 50 Then $aKlon[$i] = 1 ; Wenn der Gegner hinten ist, wird er gelöscht.
[/autoit] [autoit][/autoit] [autoit]
; Später kommt hier hin, dass der Gegner von einem Pfeil getroffen wird oder sowas.
; Verschoben. Die Abfrage kommt zu den Pfeilen. Das ist aber reine Geschmackssache..._GDIPlus_GraphicsFillEllipse($hBUF, $Gegner[$i][0]-25, $Gegner[$i][1]-25, 50, 50, $hBrush[$Gegner[$i][2]])
[/autoit] [autoit][/autoit] [autoit]Next
[/autoit] [autoit][/autoit] [autoit]_DelGegner($aKlon)
[/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit] [autoit][/autoit] [autoit]Func _ZeichnePfeile()
[/autoit] [autoit][/autoit] [autoit]Local $iUbound = UBound($Pfeile) ; so viele Pfeile gib es
[/autoit] [autoit][/autoit] [autoit]
Local $iUbound_Gegner ; und so viele Gegner. Muss hier noch nicht bestimmt werden.
Local $aKlon[$iUbound] ; KlonFor $i = 1 To $iUbound - 1 Step 1
[/autoit] [autoit][/autoit] [autoit]$Pfeile[$i][0] += $Pfeile[$i][2] * $Pfeile[$i][4]
[/autoit] [autoit][/autoit] [autoit]
$Pfeile[$i][1] += $Pfeile[$i][3] * $Pfeile[$i][4]$Pfeile[$i][5] += $Pfeile[$i][4] ; Zurückgelegte Strecke in Pixeln.
[/autoit] [autoit][/autoit] [autoit]If $Pfeile[$i][5] > $iDiagonale Then ; Der Pfeil ist weiter geflogen als die Diagonale des Fensters --> Er ist Weg...
[/autoit] [autoit][/autoit] [autoit]
$aKlon[$i] = 1
ContinueLoop
EndIf$iUbound_Gegner = UBound($Gegner)
[/autoit] [autoit][/autoit] [autoit]For $o = 1 To $iUbound_Gegner - 1 Step 1
[/autoit] [autoit][/autoit] [autoit]
If _Kollision_Kreis_Kreis($Gegner[$o][0], $Gegner[$o][1], $Pfeile[$i][0], $Pfeile[$i][1], 50,10) Then
$aKlon[$i] = 1 ; Pfeil Löschen
$Gegner[$o][3] = False ; Gegner lebt nicht mehr...
ExitLoop ; Der Pfeil ist weg --> Er kann auch keinen weiteren Gegner treffen --> Der "Gegner Treff Loop" kann beendet werden.
; Entfernt man diese Zeile können zwei dicht zusammenstehende Gegner von einem einzigen Pfeil getroffen werden.
EndIf
NextIf $aKlon[$i] = 0 Then ; Nur zeichnen, wenn der Pfeil noch keinen Gegner getroffen hat.
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsFillEllipse($hBUF, $Pfeile[$i][0]-5, $Pfeile[$i][1] - 5, 10, 10, $hBrush[7])
EndIfNext
[/autoit] [autoit][/autoit] [autoit]_DelPfeil($aKlon)
[/autoit] [autoit][/autoit] [autoit]EndFunc ;==>_ZeichnePfeil
[/autoit] [autoit][/autoit] [autoit]Func _AddGegner($Reihe)
[/autoit] [autoit][/autoit] [autoit]Local $iUbound = UBound($Gegner) ; Wie viele Gegner gibt es ?
[/autoit] [autoit][/autoit] [autoit]
ReDim $Gegner[$iUbound + 1][UBound($Gegner, 2)] ; Jetzt gibt es einen Mehr !$Gegner[$iUbound][0] = $iBreite + 50 ; x
[/autoit] [autoit][/autoit] [autoit]
$Gegner[$iUbound][1] = Int(($iHoehe / $iReihen) * $Reihe) ; y
$Gegner[$iUbound][2] = Random(2, 6, 1) ; Farbe
$Gegner[$iUbound][3] = True ; Zu Beginn lebt der Gegner logischerweise.EndFunc ;==>_AddGegner
[/autoit] [autoit][/autoit] [autoit]Func _AddPfeil()
[/autoit] [autoit][/autoit] [autoit]Local Static $iTimer = TimerInit() ; Static Variablen behalten ihren Wert. d.h. Der Timer braucht nicht Global zu sein.
[/autoit] [autoit][/autoit] [autoit]If TimerDiff($iTimer) > 750 Then ; 750ms für den Anfang sind OK. Später kann man den Wert noch skillen um schneller zu schießen.
[/autoit] [autoit][/autoit] [autoit]
$iTimer = TimerInit()Local $iUbound = UBound($Pfeile) ; Hinter den Timer. Dann wird das nur Ausgeführt, wenn es sein muss. -> Programm läuft ein gaaaaanz kleines etwas schneller, aber Kleinvieh macht auch Mist
[/autoit] [autoit][/autoit] [autoit]
ReDim $Pfeile[$iUbound + 1][UBound($Pfeile, 2)]Local $aVektor[2] = [$aPos[0],$aPos[1]-$iHoehe/2]
[/autoit] [autoit][/autoit] [autoit]
_EinheitsVektor($aVektor) ;$Pfeile[$iUbound][0] = 0
[/autoit] [autoit][/autoit] [autoit]
$Pfeile[$iUbound][1] = $iHoehe/2
$Pfeile[$iUbound][2] = $aVektor[0]
$Pfeile[$iUbound][3] = $aVektor[1]
$Pfeile[$iUbound][4] = 7 ; Geschwindigkeit des Pfeils in px/FrameEndIf
[/autoit] [autoit][/autoit] [autoit]EndFunc ;==>_AddPfeil
[/autoit] [autoit][/autoit] [autoit]Func _EinheitsVektor(ByRef $a) ; Ein beliebig "langer" Vektor (z.B. ( 1000 | 1000 )) wird zu einem Einheitsvektor der Länge 1 $a muss 2Dimensional sein ! $a[2]
[/autoit] [autoit][/autoit] [autoit]
Local $b = ($a[0]^2+$a[1]^2)^0.5
$a[0] = $a[0]/$b
$a[1] = $a[1]/$b
EndFuncFunc _DelGegner($aKlon) ; Es können ja auch mal 2 Gegner gleichzeitig sterben. Daher wird ein Klonarray eingeführt, welches aber nur nullen enthält.
[/autoit] [autoit][/autoit] [autoit]
For $i = UBound($aKlon) - 1 To 1 Step -1 ; Ist ein Gegner Tot wird dieser Wert auf 1 gesetzt.
If $aKlon[$i] = 1 Then _ArrayDelete($Gegner, $i)
Next
EndFunc ;==>_DeleteGegnerFunc _DelPfeil(ByRef $aKlon)
[/autoit] [autoit][/autoit] [autoit]
For $i = UBound($aKlon) - 1 To 1 Step -1 ; Genau gleich wie _DelGegner
If $aKlon[$i] = 1 Then _ArrayDelete($Pfeile, $i)
Next
EndFunc ;==>_DelPfeilFunc _Kollision_Kreis_Kreis($x1, $y1, $kx, $ky, $d, $d2) ; Kollisionsberechnung von 2 Kreisen. (aus dem Forum kopiert. Die Funktion hab ich iwann mal entworfen und kürzlich auch im Forum gepostet)
[/autoit] [autoit][/autoit] [autoit]
Return (($x1 - $kx) ^ 2 + ($y1 - $ky) ^ 2) ^ 0.5 < ($d / 2 + $d2 / 2)
EndFunc ;==>_Kollision_Kreis_KreisFunc WM_PAINT()
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawImage($hGFX, $hBMP, 0, 0)
EndFunc ;==>WM_PAINTFunc _Freigeben()
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_GraphicsDispose($hBUF)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_BitmapDispose($hBMP)
_GDIPlus_GraphicsDispose($hGFX)For $i = 0 To UBound($hBrush) - 1 Step 1
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_BrushDispose($hBrush[$i])
NextFor $i = 0 To UBound($hPen) - 1 Step 1
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_PenDispose($hPen[$i])
Next_GDIPlus_Shutdown()
[/autoit] [autoit][/autoit] [autoit]EndFunc ;==>_Freigeben
[/autoit] [autoit][/autoit] [autoit]Func ___Exit()
[/autoit]
Exit
EndFunc ;==>___ExitIch hoffe mal ihr versteht wie ich es meine & ihr wisste wie man es lösen kan
MfG Nico
-
Ich möchte gerne ein Login/Registrierer für unsere Schule machen. Da es
dort mehrere Rechner gibt, die auf der Festplatte alle einen Einzelnden
ordner haben (z.B. Rechner 1 hat odrdner "1" Rechner 2 hat "2" usw.) um
das zu simulieren habe ich bei mir ein ordner mit 10 weiteren ordnern
drinne gemacht. Einfach zum testen. Ich möchte jz. erstmal den
Registrierer machen. Er soll die Angegebene Rechner nummer erkennen (sie werden durch den User angegebn)
& dan alle config`s die vll. bereits in dem ordner sind durch gehen.
Sobald es die config nicht mehr gibt, soll er sie erstellen mit den
angegebenen Daten. Zum Beispeil:Ordner 5 -> in dem sind mehrere config.ini`s (config1.ini, config2.ini, config3.ini usw.) oder aber auch nicht.
Sobald es eine config ini nicht mehr gibt. zum beispiel gib es config5.ini nicht, aber 4 schon so soll er die 5te erstellen.Aber bei mir vertauscht der die If schleife, wenn die bedingung FALSCH ist, macht er was in der If schleife ist & sobald die aussage WAHR ist macht er mit else weiter, aber beim 2ten durchlauf, macht er das was er machen soll wenn es WAHR ist.
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
#include <string.au3>
#include <Date.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]#Region ### START Koda GUI section ### Form=
[/autoit] [autoit][/autoit] [autoit]
$Form1 = GUICreate("Login", 300, 134)
$Input1 = GUICtrlCreateInput("", 24, 24, 121, 21)
$Input2 = GUICtrlCreateInput("", 24, 56, 121, 21)
$Label1 = GUICtrlCreateLabel("Name", 168, 24, 32, 17)
$bLogin = GUICtrlCreateButton("Login", 24, 88, 75, 25, 0)
$bNeuAcc = GUICtrlCreateButton("Neu Registrieren", 160, 88, 115, 25, 0)
GUICtrlSetOnEvent(-1,"_NeuAccGUI")
$Label2 = GUICtrlCreateLabel("Registrierungsnummer", 168, 56, 108, 17)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ####Region ### START Koda GUI section ### Form=
[/autoit] [autoit][/autoit] [autoit]
$Form2 = GUICreate("Neu", 199, 349)
$iName = GUICtrlCreateInput("", 24, 48, 153, 21)
$iAntwort = GUICtrlCreateInput("", 24, 128, 153, 21)
$Label1 = GUICtrlCreateLabel("Name für Highscore/Login", 24, 24, 129, 17)
$Label2 = GUICtrlCreateLabel("Geheimwort, wenn du dein"& @CRLF &"PW vergessen solltest", 24, 80, 238, 41)
$Button1 = GUICtrlCreateButton("Bestätigen", 24, 280, 155, 65, 0)
GUICtrlSetOnEvent(-1,"_NeuAccBestaetigen")
$Label3 = GUICtrlCreateLabel("Rechnernummer", 24, 160, 82, 17)
$iNummer = GUICtrlCreateInput("", 24, 184, 121, 21)
$Label4 = GUICtrlCreateLabel("Nachname, zur Identifikation", 24, 216, 139, 17)
$iNachname = GUICtrlCreateInput("", 24, 248, 121, 21)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Close2")
GUISetState(@SW_HIDE)
#EndRegion ### END Koda GUI section ###While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(50)
WEndFunc _NeuAccBestaetigen()
[/autoit] [autoit][/autoit] [autoit]
Local $sName = GUICtrlRead($iName)
Local $sAntwort = GUICtrlRead($iAntwort)
Local $intNummer = Int(GUICtrlRead($iNummer))
Local $sNachname = GUICtrlRead($iNachname)
Local $check = False
Local $k = 0
Local $n = 1While $check = False
[/autoit] [autoit][/autoit] [autoit]
$k += 1
MsgBox(0,"","C:\Users\Nico\Desktop\Schule\" & $intNummer & "\config" & $k & ".ini")
$config = IniRead("C:\Users\Nico\Desktop\Schule\" & $intNummer & "\config" & $k & ".ini","Name","Name",0)
if not FileExists($config) Then
MsgBox(0,"",$k)
$n = $k - 1
$check = True
If $n <= 0 Then $n = 1
Else
MsgBox(0,"","Gibs nicht")
EndIf
WEnd
$k = 0
IniWrite("C:\Users\Nico\Desktop\Schule\" & $intNummer & "\config" & $n & ".ini","Name","Name",$sName)
EndFuncFunc _NeuAccGUI()
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_SHOW, $Form2)
GUISetState(@SW_HIDE, $Form1)
EndFuncFunc _Close2()
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_SHOW, $Form1)
GUISetState(@SW_HIDE, $Form2)
EndFuncFunc _Exit()
[/autoit]
Exit
EndFuncHoffe um hilfe MfG Nico
Hat sich bereits geklärt
-
Ok danke jz funkts
-
Mhm... ich habe eig. alles so umgebaut, wie es bei dir war. Rausgekommen ist etwas sehr unübersichtliches und etwas was nicht funktioniert...
Spoiler anzeigen
[autoit]#include <GDIPlus.au3>
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>
#include <Misc.au3>
#include <Array.au3>Opt('GUICloseOnESC', 1) ; Beenden mit Esc ?
[/autoit] [autoit][/autoit] [autoit]
;Opt('GUIOnEventMode', 1) ; Event Mode
;Opt('MustDeclareVars', 1) ; Variablen müssen deklariert werden. (sauberes Programmieren nötig)
;Opt('MouseCoordMode', 2) ; Mauskoordinaten relativ zum FensterGlobal Const $iBreite = 800, $iHoehe = 400
[/autoit] [autoit][/autoit] [autoit]Global $hGUI, $hGFX, $hBMP, $hBUF, $hMap
[/autoit] [autoit][/autoit] [autoit]
Global $iX_Start = 400, $iY_Start = 150, $iX_Optionen = 400, $iY_Optionen = 200, $iX_Beenden = 400, $iY_Beenden = 250, $sFont = "Arial", $iFontSize = 20, $sStart = "Start", $sOption = "Optionen", $sBeenden = "Beenden"_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$hGUI = GUICreate("Defender", $iBreite, $iHoehe)
[/autoit] [autoit][/autoit] [autoit]
$hGFX = _GDIPlus_GraphicsCreateFromHWND($hGUI)
$hMap = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\StartBild1.jpg")
_GDIPlus_GraphicsSetSmoothingMode($hGFX, 2)Global $hStringFormat = _GDIPlus_StringFormatCreate()
[/autoit] [autoit][/autoit] [autoit]
Global $hFamily = _GDIPlus_FontFamilyCreate($sFont)
Global $hFont = _GDIPlus_FontCreate($hFamily, $iFontSize)
Global $tLayout_Start = _GDIPlus_RectFCreate($iX_Start, $iY_Start)
Global $tLayout_Optionen = _GDIPlus_RectFCreate($iX_Optionen, $iY_Optionen)
Global $tLayout_Beenden = _GDIPlus_RectFCreate($iX_Beenden, $iY_Beenden)
Global $hBrush = _GDIPlus_BrushCreateSolid(0xFFDCBA78)Global $aInfo = _GDIPlus_GraphicsMeasureString($hGFX, $sStart, $hFont, $tLayout_Start, $hStringFormat)
[/autoit] [autoit][/autoit] [autoit]
Global $iWidth_Start = DllStructGetData($aInfo[0], "Width") ;Breite
Global $iHeight_Start = DllStructGetData($aInfo[0], "Height") ;Höhe
Global $aInfo = _GDIPlus_GraphicsMeasureString($hGFX, $sOption, $hFont, $tLayout_Optionen, $hStringFormat)
Global $iWidth_Optionen = DllStructGetData($aInfo[0], "Width") ;Breite
Global $iHeight_Optionen = DllStructGetData($aInfo[0], "Height") ;Höhe
Global $aInfo = _GDIPlus_GraphicsMeasureString($hGFX, $sBeenden, $hFont, $tLayout_Beenden, $hStringFormat)
Global $iWidth_Beenden = DllStructGetData($aInfo[0], "Width") ;Breite
Global $iHeight_Beenden = DllStructGetData($aInfo[0], "Height") ;HöheGlobal $tRect_Beenden,$tRect_Optionen,$tRect_Start
[/autoit] [autoit][/autoit] [autoit]
$tRect_Start = DllStructCreate($tagRECT)
DllStructSetData($tRect_Start, "Left", $iX_Start) ;Linke Kante des Rechtecks
DllStructSetData($tRect_Start, "Top", $iY_Start) ;Obere Kante des Rechtecks
DllStructSetData($tRect_Start, "Right", $iX_Start + $iWidth_Start) ;Rechte Kante des Rechtecks
DllStructSetData($tRect_Start, "Bottom", $iY_Start + $iHeight_Start) ;Untere Kante des Rechteck$tRect_Optionen = DllStructCreate($tagRECT)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
DllStructSetData($tRect_Optionen, "Left", $iX_Optionen) ;Linke Kante des Rechtecks
DllStructSetData($tRect_Optionen, "Top", $iY_Optionen) ;Obere Kante des Rechtecks
DllStructSetData($tRect_Optionen, "Right", $iX_Optionen + $iWidth_Optionen) ;Rechte Kante des Rechtecks
DllStructSetData($tRect_Optionen, "Bottom", $iY_Optionen + $iHeight_Optionen) ;Untere Kante des Rechteck
$tRect_Beenden = DllStructCreate($tagRECT)
DllStructSetData($tRect_Beenden, "Left", $iX_Beenden) ;Linke Kante des Rechtecks
DllStructSetData($tRect_Beenden, "Top", $iY_Beenden) ;Obere Kante des Rechtecks
DllStructSetData($tRect_Beenden, "Right", $iX_Beenden + $iWidth_Beenden) ;Rechte Kante des Rechtecks
DllStructSetData($tRect_Beenden, "Bottom", $iY_Beenden + $iHeight_Beenden) ;Untere Kante des RechteckGUISetOnEvent(-3,'___Exit', $hGUI) ; Exit
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
OnAutoItExitRegister('_Freigeben') ; Beim Beenden auch alle Ressourcen freigeben.
GUIRegisterMsg($WM_PAINT, "_Paint")
GUISetState(@SW_SHOW)
_Paint()While True
[/autoit] [autoit][/autoit] [autoit]
Local $tPoint_MousePos
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $GUI_EVENT_PRIMARYDOWN ;Sobald die linke Maustaste innerhalb der Clientarea des Fensters geklickt wird, wird diese Nachricht gesendet. Diese Case wird ausgeführt wenn ein Linksklick auf das Fenster ausgeführt wird...
$tPoint_MousePos = _WinAPI_GetMousePos(True, $hGUI);Mausposition wird in einem DLLStruct zurückgegeben. Die Parameter geben an, dass die Koordinaten rel. zum Fenster sein sollen.Switch True ;Da nur jeweils einer von beiden Fällen eintreten kann, ist hier eine Switch Abfrage sinnvoller.
[/autoit] [autoit][/autoit] [autoit]
Case _WinAPI_PtInRect($tRect_Start, $tPoint_MousePos)
MsgBox(64, "Event", "Mausklick auf 'AutoIt' registriert.")
Case _WinAPI_PtInRect($tRect_Optionen, $tPoint_MousePos)
MsgBox(64, "Event", "Mausklick auf 'Niccoo' registriert.")
EndSwitch
EndSwitch
WEndFunc _Paint()
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawImageRect($hGFX, $hMap, 0, 0, 800, 400)
_GDIPlus_GraphicsDrawStringEx($hGFX, $sStart, $sFont, $tLayout_Start, $hStringFormat, $hBrush) ;String zeichnen
_GDIPlus_GraphicsDrawStringEx($hGFX, $sOption, $sFont, $tLayout_Optionen, $hStringFormat, $hBrush) ;String zeichnen
_GDIPlus_GraphicsDrawStringEx($hGFX, $sBeenden, $sFont, $tLayout_Beenden, $hStringFormat, $hBrush) ;String zeichnen
MsgBox(0,"",$hBUF & " String" & $sBeenden & " Font " & $sFont & " Layout " & $tLayout_Beenden & "hString " & $hStringFormat & "Brsh " & $hBrush)
EndFuncFunc _Freigeben()
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_GraphicsDispose($hBUF)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_BitmapDispose($hBMP)
_GDIPlus_GraphicsDispose($hGFX)
_GDIPlus_BrushDispose($hBrush)
_GDIPlus_GraphicsDispose($hMap)
_GDIPlus_StringFormatDispose($hStringFormat)
_GDIPlus_FontFamilyDispose($hFamily)
_GDIPlus_FontDispose($hFont)
_GDIPlus_Shutdown()EndFunc
[/autoit] [autoit][/autoit] [autoit]Func ___Exit()
[/autoit]
Exit
EndFuncIch weiß, das der Fehler irgendwo bei StringEx liegt, allerdings habe ich alle variablen richtig zugeordnet...
Spoiler anzeigen
[autoit]_GDIPlus_GraphicsDrawStringEx($hGFX, $sStart, $sFont, $tLayout_Start, $hStringFormat, $hBrush) ;String zeichnen
[/autoit] [autoit]$hGUI = GUICreate("Defender", $iBreite, $iHoehe)
[/autoit] [autoit]
$hGFX = _GDIPlus_GraphicsCreateFromHWND($hGUI)$sStart = "Start"
[/autoit] [autoit]$sFont = "Arial"
[/autoit] [autoit]Global $tLayout_Start = _GDIPlus_RectFCreate($iX_Start, $iY_Start)
[/autoit] [autoit]
$iX_Start = 400, $iY_Start = 150Global $hStringFormat = _GDIPlus_StringFormatCreate()
[/autoit] [autoit]Global $hBrush = _GDIPlus_BrushCreateSolid(0xFFDCBA78)
[/autoit]Ich meine, alles richtig gemacht zu haben
-
Richtig gut! Richtig fettes DANKE!!!!!!!
Ja werde ich machen, jz da wo ich weiß wie es geht, werde ich mal ein wenig mit rumspielen und schauen wie ich es kürzer bekomme
-
Hey, ich möchte gerne für mein Defender spiel (wobei ich auch noch hilfe benötige, (gibs auch ein Thred hier im forum) da es irgendwie laggt) ein Titelbildschirm machen.
Ich habe mir bereits ein Hintergrund in GIMP gemacht, & wollte jz mit _GDIPlus_GraphicsDrawStringEx die anderen String erstellen. Sie sollen den Titel :"Start" & "Optionen" & "Beenden" haben. Doch leider kenne ich mich damit auch noch nicht so gut aus ich habe bereits von name22 ein schönes beispiel Skript bekommen. Damit habe ich wenigstens die ansätze verstanden. Doch leider schaffe ich es nicht bei 2 (oder mehr) Strings die Aktionen zu Registrieren. (Ich habe die Variablen ebend flott hinzugefügt, wollte jz keine Arrys dafür erstellen (weiß nicht ob die da sogar besser wären))
Ich glaube mein Problem liegt einfach nur an der Case & If abfrage, da er auch 2 mal die MsgBox aufruft wenn ich den 2ten String anklicke. Doch ich weiß leider nichtmal was $GUI_EVENT_PRIMARYDOWN ist
Spoiler anzeigen
[autoit]#include <GDIPlus.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstants.au3>
#include <WindowsConstants.au3>;- Author: name22 (http://www.autoit.de)
[/autoit] [autoit][/autoit] [autoit]$iX = 50
[/autoit] [autoit][/autoit] [autoit]
$iY = 30
$XX = 150
$YY = 30
$sFont = "Arial"
$iFontSize = 20
$sString = "AutoIt"$hWnd = GUICreate("Beispiel", 500, 100)
[/autoit] [autoit][/autoit] [autoit]
GUISetState()_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$hGraphics = _GDIPlus_GraphicsCreateFromHWND($hWnd)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsSetSmoothingMode($hGraphics, 2)$hBrush = _GDIPlus_BrushCreateSolid(0xFFF4567F)
[/autoit] [autoit][/autoit] [autoit]
$hBrush1 = _GDIPlus_BrushCreateSolid(0xFF0000FF)$hStringFormat = _GDIPlus_StringFormatCreate()
[/autoit] [autoit][/autoit] [autoit]
$hFamily = _GDIPlus_FontFamilyCreate($sFont)
$hFont = _GDIPlus_FontCreate($hFamily, $iFontSize)
$tLayout = _GDIPlus_RectFCreate($iX, $iY) ;X und Y Koordinaten angeben, Breite und Höhe ist irrelevant und kann 0 bleiben
$tLayout1 = _GDIPlus_RectFCreate($XX, $YY) ;X und Y Koordinaten angeben, Breite und Höhe ist irrelevant und kann 0 bleiben$aInfo = _GDIPlus_GraphicsMeasureString($hGraphics, $sString, $hFont, $tLayout, $hStringFormat) ;Misst die Breite/Höhe des angegebenen Strings mit der Schrift in $hFont
[/autoit] [autoit][/autoit] [autoit]
$aInfo1 = _GDIPlus_GraphicsMeasureString($hGraphics, $sString, $hFont, $tLayout1, $hStringFormat) ;Misst die Breite/Höhe des angegebenen Strings mit der Schrift in $hFont
;Die gewollten Daten stecken in einem DLLStruct in $aInfo[0] die anderen Array Elemente enthalten weitere Daten die hier nicht benötigt werden.
;Wie das Struct aufgebaut ist, steht in der Hilfe zu $tagGDIPRECTF
$iWidth = DllStructGetData($aInfo[0], "Width") ;Breite
$iHeight = DllStructGetData($aInfo[0], "Height") ;Höhe
$XWidth = DllStructGetData($aInfo1[0], "Width") ;Breite
$YHeight = DllStructGetData($aInfo1[0], "Height") ;Höhe;Hier wird das DLLStruct für PtInRect erstellt
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$tRect_AutoIt = DllStructCreate($tagRECT)
DllStructSetData($tRect_AutoIt, "Left", $iX) ;Linke Kante des Rechtecks
DllStructSetData($tRect_AutoIt, "Top", $iY) ;Obere Kante des Rechtecks
DllStructSetData($tRect_AutoIt, "Right", $iX + $iWidth) ;Rechte Kante des Rechtecks
DllStructSetData($tRect_AutoIt, "Bottom", $iY + $iHeight) ;Untere Kante des Rechtecks
DllStructSetData($tRect_AutoIt, "Left", $XX) ;Linke Kante des Rechtecks
DllStructSetData($tRect_AutoIt, "Top", $YY) ;Obere Kante des Rechtecks
DllStructSetData($tRect_AutoIt, "Right", $XX + $XWidth) ;Rechte Kante des Rechtecks
DllStructSetData($tRect_AutoIt, "Bottom", $YY + $YHeight) ;Untere Kante des Rechtecks_Paint()
[/autoit] [autoit][/autoit] [autoit]
GUIRegisterMsg($WM_PAINT, "_Paint") ;Neuzeichnen, falls Fenster verdeckt wurde.While True
[/autoit] [autoit][/autoit] [autoit]
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $GUI_EVENT_PRIMARYDOWN ;Sobald die linke Maustaste innerhalb der Clientarea des Fensters geklickt wird, wird diese Nachricht gesendet.
$tPoint_MousePos = _WinAPI_GetMousePos(True, $hWnd);Mausposition wird in einem DLLStruct zurückgegeben. Die Parameter geben an, dass die Koordinaten rel. zum Fenster sein sollen.
If _WinAPI_PtInRect($tRect_AutoIt, $tPoint_MousePos) Then MsgBox(64, "Event", "Mausklick auf 'AutoIt' registriert.")
If _WinAPI_PtInRect($tRect_AutoIt, $tPoint_MousePos) Then MsgBox(64, "Event", "Mausklick auf 'AutoIt' registriert.")EndSwitch
[/autoit] [autoit][/autoit] [autoit]
WEndFunc _Paint()
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsClear($hGraphics, 0xFFFFFFFF)
_GDIPlus_GraphicsDrawStringEx($hGraphics, $sString, $hFont, $tLayout, $hStringFormat, $hBrush) ;String zeichnen
_GDIPlus_GraphicsDrawStringEx($hGraphics, $sString, $hFont, $tLayout1, $hStringFormat, $hBrush1) ;String zeichnen
EndFunc;Aufräumen - Wichtig!
[/autoit]
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_BrushDispose($hBrush)
_GDIPlus_StringFormatDispose($hStringFormat)
_GDIPlus_FontFamilyDispose($hFamily)
_GDIPlus_FontDispose($hFont)
_GDIPlus_Shutdown()