Weil ichs abgebrochen hab (Windows 7, beim herunterfahren (Nicht beenden, das hat mich verwirrt :D) wird gefragt ob mans wirtklich durchführen möchte)
Beiträge von BadBunny
-
-
Hätte nicht gedacht das du weitermachst
Wie wärs wenn du die Datei auch hochlädst?Eben war sie noch nicht da :oHabs mal getestet (Zumindest beenden) Ich bin vom Namen her ausgegangen das ein Fenster oder so beendet wird aber der PC hat sich runtergefahren (BZW es versucht)
-
Kannst es ja wie hauke96 machen und einen Blog(ck ;D) erstellen auf dem du die neuesten Neuigkeiten machst (Wenn es ein größeres Projekt sein soll) Oder ein kleines "Forum". Muss ja nichtmal Geld kosten.
-
Beeindurckend! Wie bist du an den Aufbau der .obj Daten gekommen? Selber herausgefunden?
-
Es gibt ein sehr schönes Script von UEZ im Forum. In dem Script wird ein String in seine einzelnen Buchstaben zerlegt, welche sich dann mit einer bestimmten Trägheit an die Maus ranhängen. Benutz mal die SuFu da wirst du es sicher finden, hab den Code grade nicht lokal gefunden.
Natürlich findet man auch weitere. (Mit GDI+ ;))Das Prinziep wird dann sein das es ein GUI gibt (Durchsichtig/Transparent) mit der Größe des Bildschirms. Auf dieses GUI wird dann immer gezeichnet. Das gute daran ist, das man durch das Transparente durchklicken kann, also überall wo auf dem Bild nichts gezeichnet wurde kann man noch hinklicken.
Als einzigstes Script was ich grade bei mir noch auf dem Rechner rumfliegen hab kann ich dir dashier anbieten (Als Beispiel mit GDI+)
(Der Code wurde von name22 hier im Forum gepostet! Er ist NICHT von mir)
Code von name22!!!
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GDIPlus.au3>
#include <WinAPI.au3>
#include <Misc.au3>
#include <WindowsConstants.au3>; - Author: name22 (http://www.autoit.de)
[/autoit] [autoit][/autoit] [autoit]Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]
OnAutoItExitRegister("_Close")$vUser32DLL = DllOpen("User32.dll")
[/autoit] [autoit][/autoit] [autoit]$iGUIWidth = @DesktopWidth
[/autoit] [autoit][/autoit] [autoit]
$iGUIHeight = @DesktopHeight$tSize = DllStructCreate($tagSIZE)
[/autoit] [autoit][/autoit] [autoit]
$pSize = DllStructGetPtr($tSize)
DllStructSetData($tSize, "X", $iGUIWidth)
DllStructSetData($tSize, "Y", $iGUIHeight)
$tSource = DllStructCreate($tagPOINT)
$pSource = DllStructGetPtr($tSource)
$tBlend = DllStructCreate($tagBLENDFUNCTION)
$pBlend = DllStructGetPtr($tBlend)
DllStructSetData($tBlend, "Alpha", 255)
DllStructSetData($tBlend, "Format", 1)$hWnd = GUICreate("", $iGUIWidth, $iGUIHeight, 0, 0, BitOR($WS_POPUP, $WS_OVERLAPPED), BitOR($WS_EX_LAYERED, 0x0))
[/autoit] [autoit][/autoit] [autoit]
GUISetState()$hDC_Window = _WinAPI_GetDC($hWnd)
[/autoit] [autoit][/autoit] [autoit]
$hDC_Buffer = _WinAPI_CreateCompatibleDC($hDC_Window)
$hBitmap_Buffer = _WinAPI_CreateCompatibleBitmap($hDC_Window, $iGUIWidth, $iGUIHeight)
_WinAPI_SelectObject($hDC_Buffer, $hBitmap_Buffer)_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$hGraphics = _GDIPlus_GraphicsCreateFromHDC($hDC_Buffer)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsSetSmoothingMode($hGraphics, 2)$hPen_Draw = _GDIPlus_PenCreate(0xAA000000, 15)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_PenSetLineCap($hPen_Draw, 0x02, 0x02, 2)GUISetOnEvent($GUI_EVENT_CLOSE, "_Close", $hWnd)
[/autoit] [autoit][/autoit] [autoit]
HotKeySet("{DELETE}", "_Erase")
HotKeySet("{ESC}", "_Close")$aMousePos = MouseGetPos()
[/autoit] [autoit][/autoit] [autoit]
$aMousePos_Old = MouseGetPos()While Sleep(15)
[/autoit] [autoit][/autoit] [autoit]
$aMousePos = MouseGetPos()
Switch True
Case _IsPressed("11", $vUser32DLL)
Switch True
Case $aMousePos[0] <> $aMousePos_Old[0] Or $aMousePos[1] <> $aMousePos_Old[1]
_GDIPlus_GraphicsDrawLine($hGraphics, $aMousePos_Old[0], $aMousePos_Old[1], $aMousePos[0], $aMousePos[1], $hPen_Draw)
EndSwitch
EndSwitch$aMousePos_Old = $aMousePos
[/autoit] [autoit][/autoit] [autoit]_WinAPI_UpdateLayeredWindow($hWnd, $hDC_Window, 0, $pSize, $hDC_Buffer, $pSource, 0, $pBlend, 2)
[/autoit] [autoit][/autoit] [autoit]
WEndFunc _Erase()
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsClear($hGraphics, 0x00000000)
EndFuncFunc _Close()
[/autoit] [autoit][/autoit] [autoit]
_WinAPI_ReleaseDC($hWnd, $hDC_Window)
_WinAPI_DeleteDC($hDC_Buffer)
_WinAPI_DeleteObject($hBitmap_Buffer)_GDIPlus_GraphicsDispose($hGraphics)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_PenDispose($hPen_Draw)
_GDIPlus_Shutdown()DllClose($vUser32DLL)
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFunc#region "GDIP.au3 Functions"
[/autoit] [autoit][/autoit] [autoit]
; #FUNCTION# ====================================================================================================================
; Name...........: _GDIPlus_PenSetLineCap
; Description ...: Sets the cap styles for the start, end, and dashes in a line drawn with the pen
; Syntax.........: _GDIPlus_PenSetLineCap($hPen, $iStartCap, $iEndCap, $iDashCap)
; Parameters ....: $hPen - Pointer to a Pen object
; $iStartCap - Line cap style for the start cap:
; |0x00 - Line ends at the last point. The end is squared off
; |0x01 - Square cap. The center of the square is the last point in the line. The height
; +and width of the square are the line width.
; |0x02 - Circular cap. The center of the circle is the last point in the line. The diameter
; +of the circle is the line width.
; |0x03 - Triangular cap. The base of the triangle is the last point in the line. The base
; +of the triangle is the line width.
; |0x10 - Line ends are not anchored.
; |0x11 - Line ends are anchored with a square. The center of the square is the last point in
; +the line. The height and width of the square are the line width.
; |0x12 - Line ends are anchored with a circle. The center of the circle is at the last point
; +in the line. The circle is wider than the line.
; |0x13 - Line ends are anchored with a diamond (a square turned at 45 degrees). The center of the diamond is at
; +the last point in the line. The diamond is wider than the line.
; |0x14 - Line ends are anchored with arrowheads. The arrowhead point is located at the last
; +point in the line. The arrowhead is wider than the line.
; |0xff - Line ends are made from a CustomLineCap object
; $iEndCap - Line cap style for the end cap (same values as $iStartCap)
; $iDashCap - Start and end caps for a dashed line:
; |0 - A square cap that squares off both ends of each dash
; |2 - A circular cap that rounds off both ends of each dash
; |3 - A triangular cap that points both ends of each dash
; Return values .: Success - True
; Failure - False and either:
; |@error and @extended are set if DllCall failed
; |$GDIP_STATUS contains a non zero value specifying the error code
; Remarks .......: None
; Related .......: _GDIPlus_PenSetDashCap, _GDIPlus_PenSetEndCap, _GDIPlus_PenSetStartCap
; Link ..........; @@MsdnLink@@ GdipSetPenLineCap197819
; Example .......; No
; ===============================================================================================================================
Func _GDIPlus_PenSetLineCap($hPen, $iStartCap, $iEndCap, $iDashCap)
Local $aResult = DllCall($ghGDIPDll, "uint", "GdipSetPenLineCap197819", "hwnd", $hPen, "int", $iStartCap, "int", $iEndCap, "int", $iDashCap)If @error Then Return SetError(@error, @extended, False)
[/autoit]
$GDIP_STATUS = $aResult[0]
Return $aResult[0] = 0
EndFunc ;==>_GDIPlus_PenSetLineCap
#endregion "GDIP.au3 Functions" -
Happy B-Day Feier schön und genieß den Tag
-
Sieht wirklich gut aus Direkt mal abspeichern und durchwühlen
-
Das geht so nicht, du kannst das Array so nicht im Switch verwenden. Entweder du benutzt eine For Schleife mit If Abfrage nach dem Switch oder du benutzt den OnEventMode, den ich 1000 mal praktischer finde um Arrays zu überprüfen.
Zu dem problem mit der Position: Wenn es nicht UNBEDINGT nötig ist schmeiß den Size Style raus, dann auch den Size Register vom GUI Weg und erstell die Buttons auf anhieb richtig. -
Spoiler anzeigen
[autoit]#include <WindowsConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <File.au3>
#include <array.au3>Global $idButton[1], $var
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$Form1 = GUICreate("Form1", 625, 443, 192, 124, _
[/autoit] [autoit][/autoit] [autoit]
BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPCHILDREN, $WS_CLIPSIBLINGS))
$idcbo = GUICtrlCreateCombo("", 12, 8, 145, 25)
GUICtrlSetData(-1, "Auswahl", "Auswahl")$aInis = _FileListToArray(@ScriptDir & "", "*.ini", 1)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
If IsArray($aInis) Then
For $i = 0 To $aInis[0]
GUICtrlSetData($idcbo, StringTrimRight($aInis[$i], 4))
Next
EndIfGUIRegisterMsg($WM_SIZE, "OnSize")
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_SHOW)While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch ($nMsg)
Case $GUI_EVENT_CLOSE
Exit;Case $idButton[0] To $idButton[UBound($idButton) - 1]
[/autoit] [autoit][/autoit] [autoit]
;MsgBox(4096, "", StringFormat("Es wurde eine Schaltfläche gedrückt.\nID: %d\nText: %s", $nMsg, GUICtrlRead($nMsg)))
Case $idcbo
_deleteControl()
_Daten()EndSwitch
[/autoit] [autoit][/autoit] [autoit]
WEndFunc OnSize($hwnd, $message, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]Local $rcClient
[/autoit] [autoit][/autoit] [autoit]
Local $cx, $cy
Local $nWidth, $nHeight
Local $cnLoop = 0
Local $cnButtons = UBound($idButton) ; Anzahl der Schaltflächen
Local $nColumns = 2 ; Anzahl der Spalten
Local $nRows = Ceiling($cnButtons / $nColumns) ; Anzahl der Reihen$cx = 10 ; Abstand links/rechts
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$cy = 200 ; Abstand oben$nWidth = Int(((BitAND($lParam, 0xffff) - $cx * 2) - (22 * ($nColumns - 1))) / ($nColumns))
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$nHeight = Int(((BitShift($lParam, 16) - $cy - 10) - (22 * ($nRows - 1))) / $nRows)For $i = 0 To $nRows - 1
[/autoit] [autoit][/autoit] [autoit]
For $j = 0 To $nColumns - 1If ($cnLoop >= $cnButtons) Then ExitLoop
[/autoit] [autoit][/autoit] [autoit]
WinMove(GUICtrlGetHandle($idButton[$cnLoop]), "", $cx, $cy, $nWidth, $nHeight)$cx += $nWidth + 22
[/autoit] [autoit][/autoit] [autoit]
$cnLoop += 1
Next
$cx = 10
$cy += $nHeight + 22
NextReturn 0
[/autoit] [autoit][/autoit] [autoit]EndFunc ;==>OnSize
[/autoit] [autoit][/autoit] [autoit]Func _Daten()
[/autoit] [autoit][/autoit] [autoit]$iniwahl = @ScriptDir & "\" & GUICtrlRead($idcbo) & ".ini"
[/autoit] [autoit][/autoit] [autoit]
$var = IniReadSection($iniwahl, "Namen")ReDim $idButton[$var[0][0]]
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To $var[0][0] -1
$idButton[$i] = GUICtrlCreateButton($var[$i+1][1], 0, 0)
NextEndFunc ;==>_Daten
[/autoit] [autoit][/autoit] [autoit]
Func _deleteControl()
if not IsArray($idButton) or not IsArray ($var) Then Return
For $i = 0 To $var[0][0] -1GUICtrlDelete($idButton[$i]); klappt nicht!
[/autoit] [autoit][/autoit] [autoit]Next
[/autoit]
EndFunc ;==>_deleteControl
Das löscht schonmal sauber. Die Buttons werden "falsch" erstellt, weil du sie an Position 0, 0 erstellst und beim Resizen des GUI eine Funktion ausgelöst wird die die Buttons "richtig" hinsetzt. Das musst du ändernEDIT: Musst die Pfade noch anpassen
-
Hab nur kurz drübergeguckt, aber müsstest du beim CtrlDelete nicht die ID des Controls angeben ($aButtonsID) Und nicht $var[][]?
-
Wenns nicht zu lang ist, kannst du dann mal den Code posten? Den gesammten. Und wann lässt du dir das Array ausgeben und wann die MsgBox? Mach mal direkt nach dem erstellen ein _ArrayDisplay und eine MsgBox, dann verhinderst du das es zwischendurch irgendwie verändert wird.
EDIT: In _ArrayToString wird das Array als Referenz übergeben, das heißt verändert. Änder es mal auf String dann gehts direkt oder mach die Schleife weg und übergeb nur das Array ohne Index.
Versuch das mal:
[autoit]$ergebnis = $object.GetRows
[/autoit][autoit][/autoit][autoit]
$d3l = FileOpen(@ScriptDir & "\temp.d3l", 2)
FileWriteLine($d3l, "idlist" & @CRLF)For $x = 0 To UBound($ergebnis) - 1
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
$temp = String($ergebnis[$x])
FileWriteLine($d3l, $temp & @CRLF)
Next
FileClose($d3l);;; ODER
[/autoit][autoit][/autoit][autoit]$ergebnis = $object.GetRows
[/autoit][autoit][/autoit][autoit]
$d3l = FileOpen(@ScriptDir & "\temp.d3l", 2)
FileWriteLine($d3l, "idlist" & @CRLF)$temp = _ArrayToString($ergebnis, @CRLF)
[/autoit]
FileWriteLine($d3l, $temp & @CRLF)
FileClose($d3l) -
Zitat
"Error: Array variable has incorrect number of subscripts or subscript dimension range exceeded."
Das bedeutet nur das du ein Index angibts welches nicht existiert. (< 0 oder >= Ubound Array)
Da ich leider nicht das Objekt hab kann ich dir nur eins raten: Lass dir jedes mal dein $x in einer MsgBox ausgeben, es überzählt sich anscheinend. Es darf nicht größer als 2 sein, da du meintest das Array hat 3 Felder.EDIT: Es kann auch am _ArrayToString liegen. Du übergibst kein Array sondern nur einen Wert aus diesem. Kann sein das es deswegen abstürzt aber dann wäre der Fehler anders. Aufjeden Fall ist _ArrayToString an der Stelle falsch, da du nur einen Wert in einen String wandelst.
-
Niccoo: Schau dir mal für GDI+ die Tutorials an (Ubuntu, SEuBo etc)
Der Trick im Script von Developer30 ist eig nur, das er mit Arrays arbeitet die bestimmte Werte haben (Position, Farbe)
Das Array lässt er dann immer durchladen und schon hat er eine menge Bewegung drinWenn du nicht weißt wie Array funktionieren, schau dir mal das Tut. von BugFix an (Findest du in seiner Signatur)
-
Die Variable ist ein Objekt und das hinter dem Punkt ist eine Methode oder eine "Variable" des Objekts (Hat glaube ich auch einen bestimmten Name, sowie Methoden ähnlich sind wie Funktionen). In AutoIt kann man normalerweise keine Objekte erstellen, aber mit der UDF AutoItObject.au3 ist das, wenn auch etwas umständlich möglich. Die Befehle kann man idR nicht direkt finden, dafür gibts dann Beschreibungen und Hilfen für das Objekt wie z.B. für Skype, das nennt sich dann API.
-
Zitat
Ja deshalb schrieb ich ja auch etwas, das sollte ne andeutung auf "stark" sein ...
Ich schreib auch manchmal ja wenn ich nein meineIch find das Teil eig nicht sehr praktisch. Zu klein zum Arbeiten und zum Spielen zu teuer. Man kann nicht wirklich viel damit machen, man kanns nur mitnehmen aber was bringt einem ein Stein in der Hose wenn man niemanden hat dem man den gegen den Kopf werfen kann?
Für Leute die viel reisen und zu faul sind einen Laptop mitzunehmen, gerne auf kleinen Bildschirmen arbeiten, kleine Tasten mögen und zu viel Geld haben ist es genial. Zielgruppe verfehlt -
3 unterschiedliche Blob-Sounds hinzugefügt War schwer die zu finden musste die dann auch noch rausschnibbeln Wenn jmd bessere hat würde ich mich drüber freuen
-
Herzlichen Glückwunsch. Auf das das Kind ein schönes und langes Leben hat!
-
So hab ein "Poof" hinzugefügt v1.1 im ersten Post zu bekommen
-
Meinst du mit Platzen eine Art Soundeffekt? Ich hab schon nach ein paar guten Sounds gesucht aber bis jetzt nichts ordnentliches gefunden. Oder meinst du grafisch, also das dann so kleine Blässchen kommen?
-
Hey,
dashier ist wohl mein erstes größeres Projekt (Lag vllt auch daran das ich mir sehr viel Zeit gelassen hab ^^).
Die Vorgeschichte ist ganz interessant: Letztes Jahr (Ungefähr im Dezember) hat Twodollarbillie mich angeschrieben und gefragt ob ich ihm helfen könnte Blasen aus kleineren Blasen "rausspringen" zu lassen. Ich hab ihm ein kleines Beispielscript geschrieben was eig. die Grundlage von dem ganzen Code ist.
Auf jeden Fall haben wir abgemacht, das wir beide versuchen werden ein Spiel zu schreiben, (Er in 3D (Irrlich) und ich in 2D (GDI+)) in dem man als eine Figur versuchen muss Blasen zu zerstören. Also ein kleiner "Wettstreit" wenn man es so will
Wir haben dann die letzten Monate immer ein bisschen gecodet, jeder für sich in seinem eigenem Tempo und vorgerstern hat er mich angeschrieben und meinte "hey, es wird mal Zeit das wir es endlich releasen". Da ich sowieso nichtmehr viel gemacht hab und eig schon fertig war, ist das kein Problem.
Also, genug zur Vorgeschichte, jetzt zum Spiel:Das Spiel
[Blockierte Grafik: http://www.mediafire.com/convkey/1647/duo7tqarqcai6wz5g.jpg]
Wie vllt manche von euch merken werden ähnelt (Zumindest meine Version) sehr de Spiel BubbleTrouble was ich eig noch nie gespiel hab, mir nur ein paar Videos angeguckt hab weil das die Ursprüngliche Idee von Twodollarbillie war.
Ziel ist es mit einer Figur (Nennt sie wie ihr wollt) alle Blasen im Spielfeld zu zerstören, ohne selber getroffen zu werden. Es gibt unterschiedliche Blasengrößen die sich immer wieder in kleinere Aufteilen lassen (Einstellbar in den Mapdateien, dazu später mehr). Bis jetzt gibt es 15 individuelle Level die sich immer im Schwierigkeitsgrad steigern. Es gibt ein Hauptmenü (Optionen und Credits noch nicht verfügtbar) in dem man dann auch sein Level auswählen kann.Gesteuert wird mit a, d, <-, oder ->, schießen kann man mit w, space oder [Pfeilnachoben].
WICHTIG Es kann sein das ihr die Font Datei GGf.ttf in eurern Schriftart-Ordner legen müsst!
Aufbau einer Mapdatei
Die Mapdateien die im Levelordner liegen sind normale .txt Dateien und können von jedem bearbeitet und selbst erstellt werden.
Schaut euch sie einfach mal an, man erkennt sich schnell welcher Schlüssel welchen Wert setzt.
Vorallem die Möglichkeit die Anzahl der Blasengrößen einzustellen ist sehr praktisch, da man so auch z.B. eine kleine Blase in 2 größere Platzen lassen kann um das Spiel etwas interessanter zu machen. Zudem ist es möglich die Anfangsgeschwindigkeit von Blasen festzulegen.Changelog
V. 1.2
+ Sound!
V. 1.1
+ "Poof" (Thx to UEZ)Da die Datei zu groß ist muss ich auf Mediafire zurückgreifen.
Ich wünsche euch viel Spaß und hoffe das es euch anregt selber auch mal ein paar Spiele zu schreiben.
Ich freue mich über kontruktive Kritik, Lob und eigene Level.Na dann,
Auf die Blasen,
Fertig,
Los!