Minecraft Freak
. Na dann werde ich meins auch mal posten...
Beiträge von name22
-
-
Cool. Die Funktion werde ich mir aufheben ;). Ich dachte AutoIt unterstützt nur UTF-8...
-
Auf jeden Fall nicht mit ChrW... Ob es eine andere Möglichkeit gibt weiß ich nicht. Ich werde mal Google befragen...
Edit: Ich habe gerade in Wikipedia etwas dazu entdeckt...
Zitat von http://de.wikipedia.org/wiki/UnicodeMittlerweile hat der Coderaum von Unicode/ISO einen Umfang angenommen (mehr als 100.000 Schriftzeichen), der sich nicht mehr vollständig in einer Schriftdatei unterbringen lässt. Die heute gängigsten Schriftdateiformate, TrueType und OpenType, können maximal 65.536 Zeichen enthalten. Unicode/ISO-Konformität einer Schrift bedeutet also nicht, dass der komplette Zeichensatz enthalten ist, sondern lediglich, dass die darin enthaltenen Zeichen normgerecht kodiert sind. Die derzeit umfangreichste Schrift ist die in drei Dateien aufgeteilte Shareware Code2000 bis Code2002 von James Kass.[26] Auch diese bildet jedoch nicht jedes Unicode-Zeichen ab.
-
Zitat aus der Hilfe:
ZitatGibt einen leeren String zurück und setzt @error auf 1 wenn der UNICODE-Code größer als 65535 ist.
-
Zitat
Wie kann ich das Tortendiagramm sauberer Zeichnen?
Mit GDI+ und _WinAPI_UpdateLayeredWindow, wie es in dem Beispiel von UEZ oder in Meinem zu sehen ist. -
Ja, genau. Wenn du dich ein bisschen mehr damit auskennst, kannst du ja eine UDF daraus machen (oder zumindest eine Funktion ;)).
-
Zitat
Wie kommt man eigentlich an den Quelltext von GUICtrlCreateLabel ?
Ähm gar nicht? Zumindest nicht legal, da das eine interne AutoIt Funktion ist.
Du kannst entweder den Entwickler ansprechen oder dich mit der FunktionSpoiler anzeigen
[autoit]; #FUNCTION# ====================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Name...........: _GUICtrlEdit_Create
; Description ...: Create a Edit control
; Syntax.........: _GUICtrlEdit_Create($hWnd, $sText, $iX, $iY[, $iWidth = 150[, $iHeight = 150[, $iStyle = 0x003010C4[, $iExStyle = 0x00000200]]]])
; Parameters ....: $hWnd - Handle to parent or owner window
; $sText - Text to be displayed in the control
; $iX - Horizontal position of the control
; $iY - Vertical position of the control
; $iWidth - Control width
; $iHeight - Control height
; $iStyle - Control styles:
; |$ES_AUTOHSCROLL - Automatically scrolls text to the right by 10 characters when the user types a character at the end of the line.
; |$ES_AUTOVSCROLL - Automatically scrolls text up one page when the user presses the ENTER key on the last line.
; |$ES_CENTER - Centers text in a edit control.
; |$ES_LEFT - Aligns text with the left margin.
; |$ES_LOWERCASE - Converts all characters to lowercase as they are typed into the edit control.
; |$ES_MULTILINE - Forced
; |$ES_NOHIDESEL - The selected text is inverted, even if the control does not have the focus.
; |$ES_NUMBER - Allows only digits to be entered into the edit control.
; |$ES_OEMCONVERT - Converts text entered in the edit control.
; |$ES_READONLY - Prevents the user from typing or editing text in the edit control.
; |$ES_RIGHT - Right-aligns text edit control.
; |$ES_UPPERCASE - Converts all characters to uppercase as they are typed into the edit control.
; |$ES_WANTRETURN - Specifies that a carriage return be inserted when the user presses the ENTER key.
; |$ES_PASSWORD - Displays an asterisk (*) for each character that is typed into the edit control
; -
; |Default: $ES_MULTILINE, $ES_WANTRETURN, $WS_VSCROLL, $WS_HSCROLL, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL
; |Forced : WS_CHILD, $WS_VISIBLE, $WS_TABSTOP unless $ES_READONLY
; $iExStyle - Control extended style. These correspond to the standard $WS_EX_ constants.
; Return values .: Success - Handle to the Edit control
; Failure - 0
; Author ........: Gary Frost
; Modified.......:
; Remarks .......: This function is for Advanced users and for learning how the control works.
; Related .......: _GUICtrlEdit_Destroy
; Link ..........:
; Example .......: Yes
; ===============================================================================================================================
Func _GUICtrlEdit_Create($hWnd, $sText, $iX, $iY, $iWidth = 150, $iHeight = 150, $iStyle = 0x003010C4, $iExStyle = 0x00000200)
If Not IsHWnd($hWnd) Then Return SetError(1, 0, 0) ; Invalid Window handle for _GUICtrlEdit_Create 1st parameter
If Not IsString($sText) Then Return SetError(2, 0, 0) ; 2nd parameter not a string for _GUICtrlEdit_CreateIf $iWidth = -1 Then $iWidth = 150
[/autoit] [autoit][/autoit] [autoit]
If $iHeight = -1 Then $iHeight = 150
If $iStyle = -1 Then $iStyle = 0x003010C4
If $iExStyle = -1 Then $iExStyle = 0x00000200If BitAND($iStyle, $ES_READONLY) = $ES_READONLY Then
[/autoit] [autoit][/autoit] [autoit]
$iStyle = BitOR($__UDFGUICONSTANT_WS_CHILD, $__UDFGUICONSTANT_WS_VISIBLE, $iStyle)
Else
$iStyle = BitOR($__UDFGUICONSTANT_WS_CHILD, $__UDFGUICONSTANT_WS_VISIBLE, $__EDITCONSTANT_WS_TABSTOP, $iStyle)
EndIf
;=========================================================================================================Local $nCtrlID = __UDF_GetNextGlobalID($hWnd)
[/autoit] [autoit][/autoit] [autoit]
If @error Then Return SetError(@error, @extended, 0)Local $hEdit = _WinAPI_CreateWindowEx($iExStyle, $__EDITCONSTANT_ClassName, "", $iStyle, $iX, $iY, $iWidth, $iHeight, $hWnd, $nCtrlID)
[/autoit]
_SendMessage($hEdit, $__EDITCONSTANT_WM_SETFONT, _WinAPI_GetStockObject($__EDITCONSTANT_DEFAULT_GUI_FONT), True)
_GUICtrlEdit_SetText($hEdit, $sText)
_GUICtrlEdit_SetLimitText($hEdit, 0)
Return $hEdit
EndFunc ;==>_GUICtrlEdit_Createzufriedengeben, die dir auch ein paar Einblicke in den Aufbau eines GUI Controls gewährt.
-
Die Ideen gefallen mir (besonders Nummer 3), aber die Umsetzung könnte man noch verbessern... z.B. Solltest du die Animation nicht in der MessageLoop ablaufen lassen, sondern eher zusammen mit den Berechnungen in eine Funktion packen die du mit AdlibRegister abrufst. Dadurch wird u.A. verhindert, dass unnötige Frames gezeichnet werden (d.h. es wird gezeichnet, auch wenn keines der Objekte die Position geändert hat).
-
Wieso erfahre ich erst jetzt, dass es diese Funktion in der gdiplus.dll gibt? :pinch:
Danke UEZ :). -
Schrecklich... Mehr kann ich zu diesem Hype nicht sagen...
-
Das liegt daran, dass bei _WinAPI_SetLayeredWindowAttributes der Alpha Channel nicht beachtet wird. Man könnte es auch mit WinAPI_UpdateLayeredWindow machen, aber das ist ein wenig komplizierter. Vor allem wird Text dann immer noch eigenartig dargestellt, ich musste das ganze mit den Path Funktionen aus der GDIP.au3 machen damit der Text sauber gezeichnet wurde...
Spoiler anzeigen
[autoit]#include <WindowsConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstants.au3>
#include <GDIP.au3>
#include <WinAPI.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]$tSize = DllStructCreate($tagSIZE)
[/autoit] [autoit][/autoit] [autoit]
$pSize = DllStructGetPtr($tSize)
DllStructSetData($tSize, "X", 300)
DllStructSetData($tSize, "Y", 100)
$tSource = DllStructCreate($tagPOINT)
$pSource = DllStructGetPtr($tSource)
$tBlend = DllStructCreate($tagBLENDFUNCTION)
$pBlend = DllStructGetPtr($tBlend)
DllStructSetData($tBlend, "Alpha", 255)
DllStructSetData($tBlend, "Format", 1)
$tPoint = DllStructCreate($tagPOINT)
$pPoint = DllStructGetPtr($tPoint)
DllStructSetData($tPoint, "X", 0)
DllStructSetData($tPoint, "Y", 0)$hWnd = GUICreate("Test", 300, 100, Default, Default, $WS_POPUP, $WS_EX_LAYERED + $WS_EX_TOPMOST)
[/autoit] [autoit][/autoit] [autoit]
GUISetState()$hDC_Window = _WinAPI_GetDC($hWnd)
[/autoit] [autoit][/autoit] [autoit]
$hDC_Buffer = _WinAPI_CreateCompatibleDC($hDC_Window)
$hGDI_Bitmap = _WinAPI_CreateCompatibleBitmap($hDC_Window, 300, 100)
_WinAPI_SelectObject($hDC_Buffer, $hGDI_Bitmap)_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$hGraphics = _GDIPlus_GraphicsCreateFromHDC($hDC_Buffer)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsSetSmoothingMode($hGraphics, 2)$hBrush_Text = _GDIPlus_BrushCreateSolid(0xFFFF0000)
[/autoit] [autoit][/autoit] [autoit]$hFormat = _GDIPlus_StringFormatCreate()
[/autoit] [autoit][/autoit] [autoit]
$hFamily = _GDIPlus_FontFamilyCreate("Segoe UI")
$hFont = _GDIPlus_FontCreate($hFamily, 25)
$tLayout = _GDIPlus_RectFCreate(5, 5)$hPath = _GDIPlus_PathCreate()
[/autoit] [autoit][/autoit] [autoit]GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit", $hWnd)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]_GDIPlus_PathAddString($hPath, "AutoIt Rocks!", $tLayout, $hFamily, 0, 50, $hFormat)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsFillPath($hGraphics, $hPath, $hBrush_Text);~ _GDIPlus_GraphicsDrawStringEx($hGraphics, "AutoIt Rocks!", $hFont, $tLayout, $hFormat, $hBrush_Text)
[/autoit] [autoit][/autoit] [autoit]_WinAPI_UpdateLayeredWindow($hWnd, $hDC_Window, 0, $pSize, $hDC_Buffer, $pSource, 0, $pBlend, 2)
[/autoit] [autoit][/autoit] [autoit]While Sleep(1000)
[/autoit] [autoit][/autoit] [autoit]
WEndFunc _Exit()
[/autoit] [autoit][/autoit] [autoit]
_WinAPI_ReleaseDC($hWnd, $hDC_Window)
_WinAPI_DeleteDC($hDC_Buffer)
_WinAPI_DeleteObject($hGDI_Bitmap)_GDIPlus_GraphicsDispose($hGraphics)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_BrushDispose($hBrush_Text)
_GDIPlus_PathDispose($hPath)
_GDIPlus_StringFormatDispose($hFormat)
_GDIPlus_FontFamilyDispose($hFamily)
_GDIPlus_FontDispose($hFont)
_GDIPlus_Shutdown()Exit
[/autoit]
EndFunc -
1. Dafür gibt es den erweiterten Fenster Stil $WS_EX_TOPMOST
2.Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <Misc.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]$vUser32Dll = DllOpen("user32.dll")
[/autoit] [autoit][/autoit] [autoit]$hWnd = GUICreate("Test", 400, 400)
[/autoit] [autoit][/autoit] [autoit]
GUISetState()GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit", $hWnd)
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_SECONDARYDOWN, "_Drag", $hWnd)While Sleep(1000)
[/autoit] [autoit][/autoit] [autoit]
WEndFunc _Exit()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFunc ;==>_ExitFunc _Drag()
[/autoit]
$aMousePosWindow = GUIGetCursorInfo()
While _IsPressed("02", $vUser32Dll) And Sleep(10)
$aMousePosDesktop = MouseGetPos()
WinMove($hWnd, "", $aMousePosDesktop[0] - $aMousePosWindow[0] - 3, $aMousePosDesktop[1] - $aMousePosWindow[1] - 23)
WEnd
EndFunc ;==>_DragEdit: Raupi war schneller... Aber ich dachte er wollte das Fenster mit der rechten Maustaste verschieben?

-
Zitat von Hugbert
ging aber auch nicht...
[autoit]
Kein Wunder, du hast auch vergessen Klamern zu verwenden...Call(guictrlread($Input1))
[/autoit] -
Dazu kannst du entweder Execute, oder Call verwenden. In diesem Fall ist Call aber wahrscheinlich die bessere Wahl. Aber du kannst auch einfach eine Switch Abfrage o.Ä. benutzen, dann brauchst gar keine Funktion.
[autoit]
Beispiel:Switch GUICtrlRead($Input)
[/autoit]
Case "Test1"
MsgBox(0,"","Bla")
Case "ABC"
MsgBox(0,"","Test")
EndSwitch -
Normalerweise (d.h. in so ziemlich allen MMOPRGs ;)), gibt es so eine KI gar nicht, da wird nicht analysiert sondern einfach nur draufgehauen. Wenn die Entwickler einen unbesiegbaren Endgegner machen wollen, geben sie ihm einfach eine absurd hohe Regenerationsrate oder Spezielattacken die dich mit einem Schlag besiegen...
-
Nimm dazu ein Array, das ist viel einfacher zu verwalten.
-
Nehmt doch InetGet, man muss ja nicht alles über das FTP Protokoll machen ;).
-
Das sind Befehle für den Compiler bzw. den Obfuscator und wirken sich nicht auf das Script aus.
Hier ist eine Auflistung der "Befehle" und ihrer Funktionen. -
$sStart ist das was am Anfang angefügt werden soll, und $sEnd ist das was am Ende angefügt werden soll. Logisch oder? Start für den Anfang und End für das Ende...
$sText ist der Text der bearbeitet werden soll.ZitatAh, "line" ist der Text.
Aber wie gebe ich dann die Zeile an?
Gar nicht, die Funktion hängt nur an das Ende einer Datei etwas an. Du kannst aber natürlich auch _FileWriteToLine verwenden da wird in eine bestimmte Zeile geschrieben. -
Zitat
Wenn man eine wirlich gut organisierte Organisation ist, dann würde man das schaffen. Es gibt ja schließlicht genug Wikis und sonstiges freiverfügbares Wissen im Internet.
Organisierte Organisationen...
Das Problem ist nicht, dass nicht genügend Wissen vorhanden ist, sondern das das Programm mit diesem nichts anfangen kann. Da müssen wir es zuerst in eine andere Form bringen, oder das Programm so schreiben, dass es die Informationen verstehen kann. Außerdem redete er ja davon, dass sich das Programm das lernen selbst bbeibringt, und sich somit immer weiter selbst entwickeln könnte.