Nun ich hab lange überlegt ob ich das machen soll es ist einfach nur Billig aber ich machs trotzdem weil viele Leute nach einer solchen Source suchen um überhaupt ein Bot zu entwickeln, ich weis viele werden es verachten und ich wusste auch nicht ob ichs Im Autoit oder Im S4 Bereich tuen sollte. Es ist soll nur als Vorlage gedacht sein, es ist billig Decompiled doch es funktioniert!
Alle Credits zu DarkGer!'s
"Source"
Wenn es verboten ist eine Solche Source zu posten, einfach löschen aber in Prinzip kann jeder der Google beherrscht an den Code rankommen :shout:
Ps: Ich will keine Thx ich will euch einfach nur ne Hilfestellung sein!
Alle Credits zu DarkGer!'s
#RequireAdmin
#Region
#AutoIt3Wrapper_Icon=Bilder&Icons\icon.ico
#EndRegion
Func _ARRAYADD(ByRef $AVARRAY, $VVALUE)
If Not IsArray($AVARRAY) Then Return SetError(1, 0, -1)
If UBound($AVARRAY, 0) <> 1 Then Return SetError(2, 0, -1)
Local $IUBOUND = UBound($AVARRAY)
ReDim $AVARRAY[$IUBOUND + 1]
$AVARRAY[$IUBOUND] = $VVALUE
Return $IUBOUND
EndFunc
Func _ARRAYBINARYSEARCH(Const ByRef $AVARRAY, $VVALUE, $ISTART = 0, $IEND = 0)
If Not IsArray($AVARRAY) Then Return SetError(1, 0, -1)
If UBound($AVARRAY, 0) <> 1 Then Return SetError(5, 0, -1)
Local $IUBOUND = UBound($AVARRAY) - 1
If $IEND < 1 Or $IEND > $IUBOUND Then $IEND = $IUBOUND
If $ISTART < 0 Then $ISTART = 0
If $ISTART > $IEND Then Return SetError(4, 0, -1)
Local $IMID = Int(($IEND + $ISTART) / 2)
If $AVARRAY[$ISTART] > $VVALUE Or $AVARRAY[$IEND] < $VVALUE Then Return SetError(2, 0, -1)
While $ISTART <= $IMID And $VVALUE <> $AVARRAY[$IMID]
If $VVALUE < $AVARRAY[$IMID] Then
$IEND = $IMID - 1
Else
$ISTART = $IMID + 1
EndIf
$IMID = Int(($IEND + $ISTART) / 2)
WEnd
If $ISTART > $IEND Then Return SetError(3, 0, -1)
Return $IMID
EndFunc
Func _ARRAYCOMBINATIONS(ByRef $AVARRAY, $ISET, $SDELIM = "")
If Not IsArray($AVARRAY) Then Return SetError(1, 0, 0)
If UBound($AVARRAY, 0) <> 1 Then Return SetError(2, 0, 0)
Local $IN = UBound($AVARRAY)
Local $IR = $ISET
Local $AIDX[$IR]
For $I = 0 To $IR - 1
$AIDX[$I] = $I
Next
Local $ITOTAL = __ARRAY_COMBINATIONS($IN, $IR)
Local $ILEFT = $ITOTAL
Local $ARESULT[$ITOTAL + 1]
$ARESULT[0] = $ITOTAL
Local $ICOUNT = 1
While $ILEFT > 0
__ARRAY_GETNEXT($IN, $IR, $ILEFT, $ITOTAL, $AIDX)
For $I = 0 To $ISET - 1
$ARESULT[$ICOUNT] &= $AVARRAY[$AIDX[$I]] & $SDELIM
Next
If $SDELIM <> "" Then $ARESULT[$ICOUNT] = StringTrimRight($ARESULT[$ICOUNT], 1)
$ICOUNT += 1
WEnd
Return $ARESULT
EndFunc
Func _ARRAYCONCATENATE(ByRef $AVARRAYTARGET, Const ByRef $AVARRAYSOURCE, $ISTART = 0)
If Not IsArray($AVARRAYTARGET) Then Return SetError(1, 0, 0)
If Not IsArray($AVARRAYSOURCE) Then Return SetError(2, 0, 0)
If UBound($AVARRAYTARGET, 0) <> 1 Then
If UBound($AVARRAYSOURCE, 0) <> 1 Then Return SetError(5, 0, 0)
Return SetError(3, 0, 0)
EndIf
If UBound($AVARRAYSOURCE, 0) <> 1 Then Return SetError(4, 0, 0)
Local $IUBOUNDTARGET = UBound($AVARRAYTARGET) - $ISTART, $IUBOUNDSOURCE = UBound($AVARRAYSOURCE)
ReDim $AVARRAYTARGET[$IUBOUNDTARGET + $IUBOUNDSOURCE]
For $I = $ISTART To $IUBOUNDSOURCE - 1
$AVARRAYTARGET[$IUBOUNDTARGET + $I] = $AVARRAYSOURCE[$I]
Next
Return $IUBOUNDTARGET + $IUBOUNDSOURCE
EndFunc
Func _ARRAYCREATE($V_0, $V_1 = 0, $V_2 = 0, $V_3 = 0, $V_4 = 0, $V_5 = 0, $V_6 = 0, $V_7 = 0, $V_8 = 0, $V_9 = 0, $V_10 = 0, $V_11 = 0, $V_12 = 0, $V_13 = 0, $V_14 = 0, $V_15 = 0, $V_16 = 0, $V_17 = 0, $V_18 = 0, $V_19 = 0, $V_20 = 0)
Local $AV_ARRAY[21] = [$V_0, $V_1, $V_2, $V_3, $V_4, $V_5, $V_6, $V_7, $V_8, $V_9, $V_10, $V_11, $V_12, $V_13, $V_14, $V_15, $V_16, $V_17, $V_18, $V_19, $V_20]
ReDim $AV_ARRAY[@NumParams]
Return $AV_ARRAY
EndFunc
Func _ARRAYDELETE(ByRef $AVARRAY, $IELEMENT)
If Not IsArray($AVARRAY) Then Return SetError(1, 0, 0)
Local $IUBOUND = UBound($AVARRAY, 1) - 1
If Not $IUBOUND Then
$AVARRAY = ""
Return 0
EndIf
If $IELEMENT < 0 Then $IELEMENT = 0
If $IELEMENT > $IUBOUND Then $IELEMENT = $IUBOUND
Switch UBound($AVARRAY, 0)
Case 1
For $I = $IELEMENT To $IUBOUND - 1
$AVARRAY[$I] = $AVARRAY[$I + 1]
Next
ReDim $AVARRAY[$IUBOUND]
Case 2
Local $ISUBMAX = UBound($AVARRAY, 2) - 1
For $I = $IELEMENT To $IUBOUND - 1
For $J = 0 To $ISUBMAX
$AVARRAY[$I][$J] = $AVARRAY[$I + 1][$J]
Next
Next
ReDim $AVARRAY[$IUBOUND][$ISUBMAX + 1]
Case Else
Return SetError(3, 0, 0)
EndSwitch
Return $IUBOUND
EndFunc
Func _ARRAYDISPLAY(Const ByRef $AVARRAY, $STITLE = "Array: ListView Display", $IITEMLIMIT = -1, $ITRANSPOSE = 0, $SSEPARATOR = "", $SREPLACE = "|", $SHEADER = "")
If Not IsArray($AVARRAY) Then Return SetError(1, 0, 0)
Local $IDIMENSION = UBound($AVARRAY, 0), $IUBOUND = UBound($AVARRAY, 1) - 1, $ISUBMAX = UBound($AVARRAY, 2) - 1
If $IDIMENSION > 2 Then Return SetError(2, 0, 0)
If $SSEPARATOR = "" Then $SSEPARATOR = Chr(124)
If _ARRAYSEARCH($AVARRAY, $SSEPARATOR, 0, 0, 0, 1) <> -1 Then
For $X = 1 To 255
If $X >= 32 And $X <= 127 Then ContinueLoop
Local $SFIND = _ARRAYSEARCH($AVARRAY, Chr($X), 0, 0, 0, 1)
If $SFIND = -1 Then
$SSEPARATOR = Chr($X)
ExitLoop
EndIf
Next
EndIf
Local $VTMP, $IBUFFER = 64
Local $ICOLLIMIT = 250
Local $IONEVENTMODE = Opt("GUIOnEventMode", 0), $SDATASEPARATORCHAR = Opt("GUIDataSeparatorChar", $SSEPARATOR)
If $ISUBMAX < 0 Then $ISUBMAX = 0
If $ITRANSPOSE Then
$VTMP = $IUBOUND
$IUBOUND = $ISUBMAX
$ISUBMAX = $VTMP
EndIf
If $ISUBMAX > $ICOLLIMIT Then $ISUBMAX = $ICOLLIMIT
If $IITEMLIMIT < 1 Then $IITEMLIMIT = $IUBOUND
If $IUBOUND > $IITEMLIMIT Then $IUBOUND = $IITEMLIMIT
If $SHEADER = "" Then
$SHEADER = "Row "
For $I = 0 To $ISUBMAX
$SHEADER &= $SSEPARATOR & "Col " & $I
Next
EndIf
Local $AVARRAYTEXT[$IUBOUND + 1]
For $I = 0 To $IUBOUND
$AVARRAYTEXT[$I] = "[" & $I & "]"
For $J = 0 To $ISUBMAX
If $IDIMENSION = 1 Then
If $ITRANSPOSE Then
$VTMP = $AVARRAY[$J]
Else
$VTMP = $AVARRAY[$I]
EndIf
Else
If $ITRANSPOSE Then
$VTMP = $AVARRAY[$J][$I]
Else
$VTMP = $AVARRAY[$I][$J]
EndIf
EndIf
$VTMP = StringReplace($VTMP, $SSEPARATOR, $SREPLACE, 0, 1)
$AVARRAYTEXT[$I] &= $SSEPARATOR & $VTMP
$VTMP = StringLen($VTMP)
If $VTMP > $IBUFFER Then $IBUFFER = $VTMP
Next
Next
$IBUFFER += 1
Local Const $_ARRAYCONSTANT_GUI_DOCKBORDERS = 102
Local Const $_ARRAYCONSTANT_GUI_DOCKBOTTOM = 64
Local Const $_ARRAYCONSTANT_GUI_DOCKHEIGHT = 512
Local Const $_ARRAYCONSTANT_GUI_DOCKLEFT = 2
Local Const $_ARRAYCONSTANT_GUI_DOCKRIGHT = 4
Local Const $_ARRAYCONSTANT_GUI_EVENT_CLOSE = -3
Local Const $_ARRAYCONSTANT_LVIF_PARAM = 4
Local Const $_ARRAYCONSTANT_LVIF_TEXT = 1
Local Const $_ARRAYCONSTANT_LVM_GETCOLUMNWIDTH = (4096 + 29)
Local Const $_ARRAYCONSTANT_LVM_GETITEMCOUNT = (4096 + 4)
Local Const $_ARRAYCONSTANT_LVM_GETITEMSTATE = (4096 + 44)
Local Const $_ARRAYCONSTANT_LVM_INSERTITEMW = (4096 + 77)
Local Const $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE = (4096 + 54)
Local Const $_ARRAYCONSTANT_LVM_SETITEMW = (4096 + 76)
Local Const $_ARRAYCONSTANT_LVS_EX_FULLROWSELECT = 32
Local Const $_ARRAYCONSTANT_LVS_EX_GRIDLINES = 1
Local Const $_ARRAYCONSTANT_LVS_SHOWSELALWAYS = 8
Local Const $_ARRAYCONSTANT_WS_EX_CLIENTEDGE = 512
Local Const $_ARRAYCONSTANT_WS_MAXIMIZEBOX = 65536
Local Const $_ARRAYCONSTANT_WS_MINIMIZEBOX = 131072
Local Const $_ARRAYCONSTANT_WS_SIZEBOX = 262144
Local Const $_ARRAYCONSTANT_TAGLVITEM = "int Mask;int Item;int SubItem;int State;int StateMask;ptr Text;int TextMax;int Image;int Param;int Indent;int GroupID;int Columns;ptr pColumns"
Local $IADDMASK = BitOR($_ARRAYCONSTANT_LVIF_TEXT, $_ARRAYCONSTANT_LVIF_PARAM)
Local $TBUFFER = DllStructCreate("wchar Text[" & $IBUFFER & "]"), $PBUFFER = DllStructGetPtr($TBUFFER)
Local $TITEM = DllStructCreate($_ARRAYCONSTANT_TAGLVITEM), $PITEM = DllStructGetPtr($TITEM)
DllStructSetData($TITEM, "Param", 0)
DllStructSetData($TITEM, "Text", $PBUFFER)
DllStructSetData($TITEM, "TextMax", $IBUFFER)
Local $IWIDTH = 640, $IHEIGHT = 480
Local $HGUI = GUICreate($STITLE, $IWIDTH, $IHEIGHT, Default, Default, BitOR($_ARRAYCONSTANT_WS_SIZEBOX, $_ARRAYCONSTANT_WS_MINIMIZEBOX, $_ARRAYCONSTANT_WS_MAXIMIZEBOX))
Local $AIGUISIZE = WinGetClientSize($HGUI)
Local $HLISTVIEW = GUICtrlCreateListView($SHEADER, 0, 0, $AIGUISIZE[0], $AIGUISIZE[1] - 26, $_ARRAYCONSTANT_LVS_SHOWSELALWAYS)
Local $HCOPY = GUICtrlCreateButton("Copy Selected", 3, $AIGUISIZE[1] - 23, $AIGUISIZE[0] - 6, 20)
GUICtrlSetResizing($HLISTVIEW, $_ARRAYCONSTANT_GUI_DOCKBORDERS)
GUICtrlSetResizing($HCOPY, $_ARRAYCONSTANT_GUI_DOCKLEFT + $_ARRAYCONSTANT_GUI_DOCKRIGHT + $_ARRAYCONSTANT_GUI_DOCKBOTTOM + $_ARRAYCONSTANT_GUI_DOCKHEIGHT)
GUICtrlSendMsg($HLISTVIEW, $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE, $_ARRAYCONSTANT_LVS_EX_GRIDLINES, $_ARRAYCONSTANT_LVS_EX_GRIDLINES)
GUICtrlSendMsg($HLISTVIEW, $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE, $_ARRAYCONSTANT_LVS_EX_FULLROWSELECT, $_ARRAYCONSTANT_LVS_EX_FULLROWSELECT)
GUICtrlSendMsg($HLISTVIEW, $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE, $_ARRAYCONSTANT_WS_EX_CLIENTEDGE, $_ARRAYCONSTANT_WS_EX_CLIENTEDGE)
Local $AITEM
For $I = 0 To $IUBOUND
If GUICtrlCreateListViewItem($AVARRAYTEXT[$I], $HLISTVIEW) = 0 Then
$AITEM = StringSplit($AVARRAYTEXT[$I], $SSEPARATOR)
DllStructSetData($TBUFFER, "Text", $AITEM[1])
DllStructSetData($TITEM, "Item", $I)
DllStructSetData($TITEM, "SubItem", 0)
DllStructSetData($TITEM, "Mask", $IADDMASK)
GUICtrlSendMsg($HLISTVIEW, $_ARRAYCONSTANT_LVM_INSERTITEMW, 0, $PITEM)
DllStructSetData($TITEM, "Mask", $_ARRAYCONSTANT_LVIF_TEXT)
For $J = 2 To $AITEM[0]
DllStructSetData($TBUFFER, "Text", $AITEM[$J])
DllStructSetData($TITEM, "SubItem", $J - 1)
GUICtrlSendMsg($HLISTVIEW, $_ARRAYCONSTANT_LVM_SETITEMW, 0, $PITEM)
Next
EndIf
Next
$IWIDTH = 0
For $I = 0 To $ISUBMAX + 1
$IWIDTH += GUICtrlSendMsg($HLISTVIEW, $_ARRAYCONSTANT_LVM_GETCOLUMNWIDTH, $I, 0)
Next
If $IWIDTH < 250 Then $IWIDTH = 230
$IWIDTH += 20
If $IWIDTH > @DesktopWidth Then $IWIDTH = @DesktopWidth - 100
WinMove($HGUI, "", (@DesktopWidth - $IWIDTH) / 2, Default, $IWIDTH)
GUISetState(@SW_SHOW, $HGUI)
While 1
Switch GUIGetMsg()
Case $_ARRAYCONSTANT_GUI_EVENT_CLOSE
ExitLoop
Case $HCOPY
Local $SCLIP = ""
Local $AICURITEMS[1] = [0]
For $I = 0 To GUICtrlSendMsg($HLISTVIEW, $_ARRAYCONSTANT_LVM_GETITEMCOUNT, 0, 0)
If GUICtrlSendMsg($HLISTVIEW, $_ARRAYCONSTANT_LVM_GETITEMSTATE, $I, 2) Then
$AICURITEMS[0] += 1
ReDim $AICURITEMS[$AICURITEMS[0] + 1]
$AICURITEMS[$AICURITEMS[0]] = $I
EndIf
Next
If Not $AICURITEMS[0] Then
For $SITEM In $AVARRAYTEXT
$SCLIP &= $SITEM & @CRLF
Next
Else
For $I = 1 To UBound($AICURITEMS) - 1
$SCLIP &= $AVARRAYTEXT[$AICURITEMS[$I]] & @CRLF
Next
EndIf
ClipPut($SCLIP)
EndSwitch
WEnd
GUIDelete($HGUI)
Opt("GUIOnEventMode", $IONEVENTMODE)
Opt("GUIDataSeparatorChar", $SDATASEPARATORCHAR)
Return 1
EndFunc
Func _ARRAYFINDALL(Const ByRef $AVARRAY, $VVALUE, $ISTART = 0, $IEND = 0, $ICASE = 0, $IPARTIAL = 0, $ISUBITEM = 0)
$ISTART = _ARRAYSEARCH($AVARRAY, $VVALUE, $ISTART, $IEND, $ICASE, $IPARTIAL, 1, $ISUBITEM)
If @error Then Return SetError(@error, 0, -1)
Local $IINDEX = 0, $AVRESULT[UBound($AVARRAY)]
Do
$AVRESULT[$IINDEX] = $ISTART
$IINDEX += 1
$ISTART = _ARRAYSEARCH($AVARRAY, $VVALUE, $ISTART + 1, $IEND, $ICASE, $IPARTIAL, 1, $ISUBITEM)
Until @error
ReDim $AVRESULT[$IINDEX]
Return $AVRESULT
EndFunc
Func _ARRAYINSERT(ByRef $AVARRAY, $IELEMENT, $VVALUE = "")
If Not IsArray($AVARRAY) Then Return SetError(1, 0, 0)
If UBound($AVARRAY, 0) <> 1 Then Return SetError(2, 0, 0)
Local $IUBOUND = UBound($AVARRAY) + 1
ReDim $AVARRAY[$IUBOUND]
For $I = $IUBOUND - 1 To $IELEMENT + 1 Step -1
$AVARRAY[$I] = $AVARRAY[$I - 1]
Next
$AVARRAY[$IELEMENT] = $VVALUE
Return $IUBOUND
EndFunc
Func _ARRAYMAX(Const ByRef $AVARRAY, $ICOMPNUMERIC = 0, $ISTART = 0, $IEND = 0)
Local $IRESULT = _ARRAYMAXINDEX($AVARRAY, $ICOMPNUMERIC, $ISTART, $IEND)
If @error Then Return SetError(@error, 0, "")
Return $AVARRAY[$IRESULT]
EndFunc
Func _ARRAYMAXINDEX(Const ByRef $AVARRAY, $ICOMPNUMERIC = 0, $ISTART = 0, $IEND = 0)
If Not IsArray($AVARRAY) Or UBound($AVARRAY, 0) <> 1 Then Return SetError(1, 0, -1)
If UBound($AVARRAY, 0) <> 1 Then Return SetError(3, 0, -1)
Local $IUBOUND = UBound($AVARRAY) - 1
If $IEND < 1 Or $IEND > $IUBOUND Then $IEND = $IUBOUND
If $ISTART < 0 Then $ISTART = 0
If $ISTART > $IEND Then Return SetError(2, 0, -1)
Local $IMAXINDEX = $ISTART
If $ICOMPNUMERIC Then
For $I = $ISTART To $IEND
If Number($AVARRAY[$IMAXINDEX]) < Number($AVARRAY[$I]) Then $IMAXINDEX = $I
Next
Else
For $I = $ISTART To $IEND
If $AVARRAY[$IMAXINDEX] < $AVARRAY[$I] Then $IMAXINDEX = $I
Next
EndIf
Return $IMAXINDEX
EndFunc
Func _ARRAYMIN(Const ByRef $AVARRAY, $ICOMPNUMERIC = 0, $ISTART = 0, $IEND = 0)
Local $IRESULT = _ARRAYMININDEX($AVARRAY, $ICOMPNUMERIC, $ISTART, $IEND)
If @error Then Return SetError(@error, 0, "")
Return $AVARRAY[$IRESULT]
EndFunc
Func _ARRAYMININDEX(Const ByRef $AVARRAY, $ICOMPNUMERIC = 0, $ISTART = 0, $IEND = 0)
If Not IsArray($AVARRAY) Then Return SetError(1, 0, -1)
If UBound($AVARRAY, 0) <> 1 Then Return SetError(3, 0, -1)
Local $IUBOUND = UBound($AVARRAY) - 1
If $IEND < 1 Or $IEND > $IUBOUND Then $IEND = $IUBOUND
If $ISTART < 0 Then $ISTART = 0
If $ISTART > $IEND Then Return SetError(2, 0, -1)
Local $IMININDEX = $ISTART
If $ICOMPNUMERIC Then
For $I = $ISTART To $IEND
If Number($AVARRAY[$IMININDEX]) > Number($AVARRAY[$I]) Then $IMININDEX = $I
Next
Else
For $I = $ISTART To $IEND
If $AVARRAY[$IMININDEX] > $AVARRAY[$I] Then $IMININDEX = $I
Next
EndIf
Return $IMININDEX
EndFunc
Func _ARRAYPERMUTE(ByRef $AVARRAY, $SDELIM = "")
If Not IsArray($AVARRAY) Then Return SetError(1, 0, 0)
If UBound($AVARRAY, 0) <> 1 Then Return SetError(2, 0, 0)
Local $ISIZE = UBound($AVARRAY), $IFACTORIAL = 1, $AIDX[$ISIZE], $ARESULT[1], $ICOUNT = 1
For $I = 0 To $ISIZE - 1
$AIDX[$I] = $I
Next
For $I = $ISIZE To 1 Step -1
$IFACTORIAL *= $I
Next
ReDim $ARESULT[$IFACTORIAL + 1]
$ARESULT[0] = $IFACTORIAL
__ARRAY_EXETERINTERNAL($AVARRAY, 0, $ISIZE, $SDELIM, $AIDX, $ARESULT, $ICOUNT)
Return $ARESULT
EndFunc
Func _ARRAYPOP(ByRef $AVARRAY)
IF (Not IsArray($AVARRAY)) Then Return SetError(1, 0, "")
If UBound($AVARRAY, 0) <> 1 Then Return SetError(2, 0, "")
Local $IUBOUND = UBound($AVARRAY) - 1, $SLASTVAL = $AVARRAY[$IUBOUND]
If Not $IUBOUND Then
$AVARRAY = ""
Else
ReDim $AVARRAY[$IUBOUND]
EndIf
Return $SLASTVAL
EndFunc
Func _ARRAYPUSH(ByRef $AVARRAY, $VVALUE, $IDIRECTION = 0)
IF (Not IsArray($AVARRAY)) Then Return SetError(1, 0, 0)
If UBound($AVARRAY, 0) <> 1 Then Return SetError(3, 0, 0)
Local $IUBOUND = UBound($AVARRAY) - 1
If IsArray($VVALUE) Then
Local $IUBOUNDS = UBound($VVALUE)
IF ($IUBOUNDS - 1) > $IUBOUND Then Return SetError(2, 0, 0)
If $IDIRECTION Then
For $I = $IUBOUND To $IUBOUNDS Step -1
$AVARRAY[$I] = $AVARRAY[$I - $IUBOUNDS]
Next
For $I = 0 To $IUBOUNDS - 1
$AVARRAY[$I] = $VVALUE[$I]
Next
Else
For $I = 0 To $IUBOUND - $IUBOUNDS
$AVARRAY[$I] = $AVARRAY[$I + $IUBOUNDS]
Next
For $I = 0 To $IUBOUNDS - 1
$AVARRAY[$I + $IUBOUND - $IUBOUNDS + 1] = $VVALUE[$I]
Next
EndIf
Else
If $IDIRECTION Then
For $I = $IUBOUND To 1 Step -1
$AVARRAY[$I] = $AVARRAY[$I - 1]
Next
$AVARRAY[0] = $VVALUE
Else
For $I = 0 To $IUBOUND - 1
$AVARRAY[$I] = $AVARRAY[$I + 1]
Next
$AVARRAY[$IUBOUND] = $VVALUE
EndIf
EndIf
Return 1
EndFunc
Func _ARRAYREVERSE(ByRef $AVARRAY, $ISTART = 0, $IEND = 0)
If Not IsArray($AVARRAY) Then Return SetError(1, 0, 0)
If UBound($AVARRAY, 0) <> 1 Then Return SetError(3, 0, 0)
Local $VTMP, $IUBOUND = UBound($AVARRAY) - 1
If $IEND < 1 Or $IEND > $IUBOUND Then $IEND = $IUBOUND
If $ISTART < 0 Then $ISTART = 0
If $ISTART > $IEND Then Return SetError(2, 0, 0)
For $I = $ISTART To Int(($ISTART + $IEND - 1) / 2)
$VTMP = $AVARRAY[$I]
$AVARRAY[$I] = $AVARRAY[$IEND]
$AVARRAY[$IEND] = $VTMP
$IEND -= 1
Next
Return 1
EndFunc
Func _ARRAYSEARCH(Const ByRef $AVARRAY, $VVALUE, $ISTART = 0, $IEND = 0, $ICASE = 0, $IPARTIAL = 0, $IFORWARD = 1, $ISUBITEM = -1)
If Not IsArray($AVARRAY) Then Return SetError(1, 0, -1)
If UBound($AVARRAY, 0) > 2 Or UBound($AVARRAY, 0) < 1 Then Return SetError(2, 0, -1)
Local $IUBOUND = UBound($AVARRAY) - 1
If $IEND < 1 Or $IEND > $IUBOUND Then $IEND = $IUBOUND
If $ISTART < 0 Then $ISTART = 0
If $ISTART > $IEND Then Return SetError(4, 0, -1)
Local $ISTEP = 1
If Not $IFORWARD Then
Local $ITMP = $ISTART
$ISTART = $IEND
$IEND = $ITMP
$ISTEP = -1
EndIf
Switch UBound($AVARRAY, 0)
Case 1
If Not $IPARTIAL Then
If Not $ICASE Then
For $I = $ISTART To $IEND Step $ISTEP
If $AVARRAY[$I] = $VVALUE Then Return $I
Next
Else
For $I = $ISTART To $IEND Step $ISTEP
If $AVARRAY[$I] == $VVALUE Then Return $I
Next
EndIf
Else
For $I = $ISTART To $IEND Step $ISTEP
If StringInStr($AVARRAY[$I], $VVALUE, $ICASE) > 0 Then Return $I
Next
EndIf
Case 2
Local $IUBOUNDSUB = UBound($AVARRAY, 2) - 1
If $ISUBITEM > $IUBOUNDSUB Then $ISUBITEM = $IUBOUNDSUB
If $ISUBITEM < 0 Then
$ISUBITEM = 0
Else
$IUBOUNDSUB = $ISUBITEM
EndIf
For $J = $ISUBITEM To $IUBOUNDSUB
If Not $IPARTIAL Then
If Not $ICASE Then
For $I = $ISTART To $IEND Step $ISTEP
If $AVARRAY[$I][$J] = $VVALUE Then Return $I
Next
Else
For $I = $ISTART To $IEND Step $ISTEP
If $AVARRAY[$I][$J] == $VVALUE Then Return $I
Next
EndIf
Else
For $I = $ISTART To $IEND Step $ISTEP
If StringInStr($AVARRAY[$I][$J], $VVALUE, $ICASE) > 0 Then Return $I
Next
EndIf
Next
Case Else
Return SetError(7, 0, -1)
EndSwitch
Return SetError(6, 0, -1)
EndFunc
Func _ARRAYSORT(ByRef $AVARRAY, $IDESCENDING = 0, $ISTART = 0, $IEND = 0, $ISUBITEM = 0)
If Not IsArray($AVARRAY) Then Return SetError(1, 0, 0)
Local $IUBOUND = UBound($AVARRAY) - 1
If $IEND < 1 Or $IEND > $IUBOUND Then $IEND = $IUBOUND
If $ISTART < 0 Then $ISTART = 0
If $ISTART > $IEND Then Return SetError(2, 0, 0)
Switch UBound($AVARRAY, 0)
Case 1
__ARRAYQUICKSORT1D($AVARRAY, $ISTART, $IEND)
If $IDESCENDING Then _ARRAYREVERSE($AVARRAY, $ISTART, $IEND)
Case 2
Local $ISUBMAX = UBound($AVARRAY, 2) - 1
If $ISUBITEM > $ISUBMAX Then Return SetError(3, 0, 0)
If $IDESCENDING Then
$IDESCENDING = -1
Else
$IDESCENDING = 1
EndIf
__ARRAYQUICKSORT2D($AVARRAY, $IDESCENDING, $ISTART, $IEND, $ISUBITEM, $ISUBMAX)
Case Else
Return SetError(4, 0, 0)
EndSwitch
Return 1
EndFunc
Func __ARRAYQUICKSORT1D(ByRef $AVARRAY, ByRef $ISTART, ByRef $IEND)
If $IEND <= $ISTART Then Return
Local $VTMP
IF ($IEND - $ISTART) < 15 Then
Local $VCUR
For $I = $ISTART + 1 To $IEND
$VTMP = $AVARRAY[$I]
If IsNumber($VTMP) Then
For $J = $I - 1 To $ISTART Step -1
$VCUR = $AVARRAY[$J]
IF ($VTMP >= $VCUR And IsNumber($VCUR)) OR (Not IsNumber($VCUR) And StringCompare($VTMP, $VCUR) >= 0) Then ExitLoop
$AVARRAY[$J + 1] = $VCUR
Next
Else
For $J = $I - 1 To $ISTART Step -1
IF (StringCompare($VTMP, $AVARRAY[$J]) >= 0) Then ExitLoop
$AVARRAY[$J + 1] = $AVARRAY[$J]
Next
EndIf
$AVARRAY[$J + 1] = $VTMP
Next
Return
EndIf
Local $L = $ISTART, $R = $IEND, $VPIVOT = $AVARRAY[Int(($ISTART + $IEND) / 2)], $FNUM = IsNumber($VPIVOT)
Do
If $FNUM Then
WHILE ($AVARRAY[$L] < $VPIVOT And IsNumber($AVARRAY[$L])) OR (Not IsNumber($AVARRAY[$L]) And StringCompare($AVARRAY[$L], $VPIVOT) < 0)
$L += 1
WEnd
WHILE ($AVARRAY[$R] > $VPIVOT And IsNumber($AVARRAY[$R])) OR (Not IsNumber($AVARRAY[$R]) And StringCompare($AVARRAY[$R], $VPIVOT) > 0)
$R -= 1
WEnd
Else
WHILE (StringCompare($AVARRAY[$L], $VPIVOT) < 0)
$L += 1
WEnd
WHILE (StringCompare($AVARRAY[$R], $VPIVOT) > 0)
$R -= 1
WEnd
EndIf
If $L <= $R Then
$VTMP = $AVARRAY[$L]
$AVARRAY[$L] = $AVARRAY[$R]
$AVARRAY[$R] = $VTMP
$L += 1
$R -= 1
EndIf
Until $L > $R
__ARRAYQUICKSORT1D($AVARRAY, $ISTART, $R)
__ARRAYQUICKSORT1D($AVARRAY, $L, $IEND)
EndFunc
Func __ARRAYQUICKSORT2D(ByRef $AVARRAY, ByRef $ISTEP, ByRef $ISTART, ByRef $IEND, ByRef $ISUBITEM, ByRef $ISUBMAX)
If $IEND <= $ISTART Then Return
Local $VTMP, $L = $ISTART, $R = $IEND, $VPIVOT = $AVARRAY[Int(($ISTART + $IEND) / 2)][$ISUBITEM], $FNUM = IsNumber($VPIVOT)
Do
If $FNUM Then
WHILE ($ISTEP * ($AVARRAY[$L][$ISUBITEM] - $VPIVOT) < 0 And IsNumber($AVARRAY[$L][$ISUBITEM])) OR (Not IsNumber($AVARRAY[$L][$ISUBITEM]) And $ISTEP * StringCompare($AVARRAY[$L][$ISUBITEM], $VPIVOT) < 0)
$L += 1
WEnd
WHILE ($ISTEP * ($AVARRAY[$R][$ISUBITEM] - $VPIVOT) > 0 And IsNumber($AVARRAY[$R][$ISUBITEM])) OR (Not IsNumber($AVARRAY[$R][$ISUBITEM]) And $ISTEP * StringCompare($AVARRAY[$R][$ISUBITEM], $VPIVOT) > 0)
$R -= 1
WEnd
Else
WHILE ($ISTEP * StringCompare($AVARRAY[$L][$ISUBITEM], $VPIVOT) < 0)
$L += 1
WEnd
WHILE ($ISTEP * StringCompare($AVARRAY[$R][$ISUBITEM], $VPIVOT) > 0)
$R -= 1
WEnd
EndIf
If $L <= $R Then
For $I = 0 To $ISUBMAX
$VTMP = $AVARRAY[$L][$I]
$AVARRAY[$L][$I] = $AVARRAY[$R][$I]
$AVARRAY[$R][$I] = $VTMP
Next
$L += 1
$R -= 1
EndIf
Until $L > $R
__ARRAYQUICKSORT2D($AVARRAY, $ISTEP, $ISTART, $R, $ISUBITEM, $ISUBMAX)
__ARRAYQUICKSORT2D($AVARRAY, $ISTEP, $L, $IEND, $ISUBITEM, $ISUBMAX)
EndFunc
Func _ARRAYSWAP(ByRef $VITEM1, ByRef $VITEM2)
Local $VTMP = $VITEM1
$VITEM1 = $VITEM2
$VITEM2 = $VTMP
EndFunc
Func _ARRAYTOCLIP(Const ByRef $AVARRAY, $ISTART = 0, $IEND = 0)
Local $SRESULT = _ARRAYTOSTRING($AVARRAY, @CR, $ISTART, $IEND)
If @error Then Return SetError(@error, 0, 0)
Return ClipPut($SRESULT)
EndFunc
Func _ARRAYTOSTRING(Const ByRef $AVARRAY, $SDELIM = "|", $ISTART = 0, $IEND = 0)
If Not IsArray($AVARRAY) Then Return SetError(1, 0, "")
If UBound($AVARRAY, 0) <> 1 Then Return SetError(3, 0, "")
Local $SRESULT, $IUBOUND = UBound($AVARRAY) - 1
If $IEND < 1 Or $IEND > $IUBOUND Then $IEND = $IUBOUND
If $ISTART < 0 Then $ISTART = 0
If $ISTART > $IEND Then Return SetError(2, 0, "")
For $I = $ISTART To $IEND
$SRESULT &= $AVARRAY[$I] & $SDELIM
Next
Return StringTrimRight($SRESULT, StringLen($SDELIM))
EndFunc
Func _ARRAYTRIM(ByRef $AVARRAY, $ITRIMNUM, $IDIRECTION = 0, $ISTART = 0, $IEND = 0)
If Not IsArray($AVARRAY) Then Return SetError(1, 0, 0)
If UBound($AVARRAY, 0) <> 1 Then Return SetError(2, 0, 0)
Local $IUBOUND = UBound($AVARRAY) - 1
If $IEND < 1 Or $IEND > $IUBOUND Then $IEND = $IUBOUND
If $ISTART < 0 Then $ISTART = 0
If $ISTART > $IEND Then Return SetError(5, 0, 0)
If $IDIRECTION Then
For $I = $ISTART To $IEND
$AVARRAY[$I] = StringTrimRight($AVARRAY[$I], $ITRIMNUM)
Next
Else
For $I = $ISTART To $IEND
$AVARRAY[$I] = StringTrimLeft($AVARRAY[$I], $ITRIMNUM)
Next
EndIf
Return 1
EndFunc
Func _ARRAYUNIQUE($AARRAY, $IDIMENSION = 1, $IBASE = 0, $ICASE = 0, $VDELIM = "|")
Local $IUBOUNDDIM
If $VDELIM = "|" Then $VDELIM = Chr(1)
If Not IsArray($AARRAY) Then Return SetError(1, 0, 0)
If Not $IDIMENSION > 0 Then
Return SetError(3, 0, 0)
Else
$IUBOUNDDIM = UBound($AARRAY, 1)
If @error Then Return SetError(3, 0, 0)
If $IDIMENSION > 1 Then
Local $AARRAYTMP[1]
For $I = 0 To $IUBOUNDDIM - 1
_ARRAYADD($AARRAYTMP, $AARRAY[$I][$IDIMENSION - 1])
Next
_ARRAYDELETE($AARRAYTMP, 0)
Else
If UBound($AARRAY, 0) = 1 Then
Dim $AARRAYTMP[1]
For $I = 0 To $IUBOUNDDIM - 1
_ARRAYADD($AARRAYTMP, $AARRAY[$I])
Next
_ARRAYDELETE($AARRAYTMP, 0)
Else
Dim $AARRAYTMP[1]
For $I = 0 To $IUBOUNDDIM - 1
_ARRAYADD($AARRAYTMP, $AARRAY[$I][$IDIMENSION - 1])
Next
_ARRAYDELETE($AARRAYTMP, 0)
EndIf
EndIf
EndIf
Local $SHOLD
For $ICC = $IBASE To UBound($AARRAYTMP) - 1
If Not StringInStr($VDELIM & $SHOLD, $VDELIM & $AARRAYTMP[$ICC] & $VDELIM, $ICASE) Then $SHOLD &= $AARRAYTMP[$ICC] & $VDELIM
Next
If $SHOLD Then
$AARRAYTMP = StringSplit(StringTrimRight($SHOLD, StringLen($VDELIM)), $VDELIM, 1)
Return $AARRAYTMP
EndIf
Return SetError(2, 0, 0)
EndFunc
Func __ARRAY_EXETERINTERNAL(ByRef $AVARRAY, $ISTART, $ISIZE, $SDELIM, ByRef $AIDX, ByRef $ARESULT, ByRef $ICOUNT)
If $ISTART == $ISIZE - 1 Then
For $I = 0 To $ISIZE - 1
$ARESULT[$ICOUNT] &= $AVARRAY[$AIDX[$I]] & $SDELIM
Next
If $SDELIM <> "" Then $ARESULT[$ICOUNT] = StringTrimRight($ARESULT[$ICOUNT], 1)
$ICOUNT += 1
Else
Local $ITEMP
For $I = $ISTART To $ISIZE - 1
$ITEMP = $AIDX[$I]
$AIDX[$I] = $AIDX[$ISTART]
$AIDX[$ISTART] = $ITEMP
__ARRAY_EXETERINTERNAL($AVARRAY, $ISTART + 1, $ISIZE, $SDELIM, $AIDX, $ARESULT, $ICOUNT)
$AIDX[$ISTART] = $AIDX[$I]
$AIDX[$I] = $ITEMP
Next
EndIf
EndFunc
Func __ARRAY_COMBINATIONS($IN, $IR)
Local $I_TOTAL = 1
For $I = $IR To 1 Step -1
$I_TOTAL *= ($IN / $I)
$IN -= 1
Next
Return Round($I_TOTAL)
EndFunc
Func __ARRAY_GETNEXT($IN, $IR, ByRef $ILEFT, $ITOTAL, ByRef $AIDX)
If $ILEFT == $ITOTAL Then
$ILEFT -= 1
Return
EndIf
Local $I = $IR - 1
While $AIDX[$I] == $IN - $IR + $I
$I -= 1
WEnd
$AIDX[$I] += 1
For $J = $I + 1 To $IR - 1
$AIDX[$J] = $AIDX[$I] + $J - $I
Next
$ILEFT -= 1
EndFunc
#Region _Memory
Func _MEMORYOPEN($IV_PID, $IV_DESIREDACCESS = 2035711, $IV_INHERITHANDLE = 1)
If Not ProcessExists($IV_PID) Then
SetError(1)
Return 0
EndIf
Local $AH_HANDLE[2] = [DllOpen("kernel32.dll")]
If @error Then
SetError(2)
Return 0
EndIf
Local $AV_OPENPROCESS = DllCall($AH_HANDLE[0], "int", "OpenProcess", "int", $IV_DESIREDACCESS, "int", $IV_INHERITHANDLE, "int", $IV_PID)
If @error Then
DllClose($AH_HANDLE[0])
SetError(3)
Return 0
EndIf
$AH_HANDLE[1] = $AV_OPENPROCESS[0]
Return $AH_HANDLE
EndFunc
Func _MEMORYREAD($IV_ADDRESS, $AH_HANDLE, $SV_TYPE = "dword")
If Not IsArray($AH_HANDLE) Then
SetError(1)
Return 0
EndIf
Local $V_BUFFER = DllStructCreate($SV_TYPE)
If @error Then
SetError(@error + 1)
Return 0
EndIf
DllCall($AH_HANDLE[0], "int", "ReadProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER), "int", "")
If Not @error Then
Local $V_VALUE = DllStructGetData($V_BUFFER, 1)
Return $V_VALUE
Else
SetError(6)
Return 0
EndIf
EndFunc
Func _MEMORYWRITE($IV_ADDRESS, $AH_HANDLE, $V_DATA, $SV_TYPE = "dword")
If Not IsArray($AH_HANDLE) Then
SetError(1)
Return 0
EndIf
Local $V_BUFFER = DllStructCreate($SV_TYPE)
If @error Then
SetError(@error + 1)
Return 0
Else
DllStructSetData($V_BUFFER, 1, $V_DATA)
If @error Then
SetError(6)
Return 0
EndIf
EndIf
DllCall($AH_HANDLE[0], "int", "WriteProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER), "int", "")
If Not @error Then
Return 1
Else
SetError(7)
Return 0
EndIf
EndFunc
Func _MEMORYCLOSE($AH_HANDLE)
If Not IsArray($AH_HANDLE) Then
SetError(1)
Return 0
EndIf
DllCall($AH_HANDLE[0], "int", "CloseHandle", "int", $AH_HANDLE[1])
If Not @error Then
DllClose($AH_HANDLE[0])
Return 1
Else
DllClose($AH_HANDLE[0])
SetError(2)
Return 0
EndIf
EndFunc
Func SETPRIVILEGE($PRIVILEGE, $BENABLE)
Const $TOKEN_ADJUST_PRIVILEGES = 32
Const $TOKEN_QUERY = 8
Const $SE_PRIVILEGE_ENABLED = 2
Local $HTOKEN, $SP_AUXRET, $SP_RET, $HCURRPROCESS, $NTOKENS, $NTOKENINDEX, $PRIV
$NTOKENS = 1
$LUID = DllStructCreate("dword;int")
If IsArray($PRIVILEGE) Then $NTOKENS = UBound($PRIVILEGE)
$TOKEN_PRIVILEGES = DllStructCreate("dword;dword[" & (3 * $NTOKENS) & "]")
$NEWTOKEN_PRIVILEGES = DllStructCreate("dword;dword[" & (3 * $NTOKENS) & "]")
$HCURRPROCESS = DllCall("kernel32.dll", "hwnd", "GetCurrentProcess")
$SP_AUXRET = DllCall("advapi32.dll", "int", "OpenProcessToken", "hwnd", $HCURRPROCESS[0], "int", BitOR($TOKEN_ADJUST_PRIVILEGES, $TOKEN_QUERY), "int_ptr", 0)
If $SP_AUXRET[0] Then
$HTOKEN = $SP_AUXRET[3]
DllStructSetData($TOKEN_PRIVILEGES, 1, 1)
$NTOKENINDEX = 1
While $NTOKENINDEX <= $NTOKENS
If IsArray($PRIVILEGE) Then
$PRIV = $PRIVILEGE[$NTOKENINDEX - 1]
Else
$PRIV = $PRIVILEGE
EndIf
$RET = DllCall("advapi32.dll", "int", "LookupPrivilegeValue", "str", "", "str", $PRIV, "ptr", DllStructGetPtr($LUID))
If $RET[0] Then
If $BENABLE Then
DllStructSetData($TOKEN_PRIVILEGES, 2, $SE_PRIVILEGE_ENABLED, (3 * $NTOKENINDEX))
Else
DllStructSetData($TOKEN_PRIVILEGES, 2, 0, (3 * $NTOKENINDEX))
EndIf
DllStructSetData($TOKEN_PRIVILEGES, 2, DllStructGetData($LUID, 1), (3 * ($NTOKENINDEX - 1)) + 1)
DllStructSetData($TOKEN_PRIVILEGES, 2, DllStructGetData($LUID, 2), (3 * ($NTOKENINDEX - 1)) + 2)
DllStructSetData($LUID, 1, 0)
DllStructSetData($LUID, 2, 0)
EndIf
$NTOKENINDEX += 1
WEnd
$RET = DllCall("advapi32.dll", "int", "AdjustTokenPrivileges", "hwnd", $HTOKEN, "int", 0, "ptr", DllStructGetPtr($TOKEN_PRIVILEGES), "int", DllStructGetSize($NEWTOKEN_PRIVILEGES), "ptr", DllStructGetPtr($NEWTOKEN_PRIVILEGES), "int_ptr", 0)
$F = DllCall("kernel32.dll", "int", "GetLastError")
EndIf
$NEWTOKEN_PRIVILEGES = 0
$TOKEN_PRIVILEGES = 0
$LUID = 0
If $SP_AUXRET[0] = 0 Then Return 0
$SP_AUXRET = DllCall("kernel32.dll", "int", "CloseHandle", "hwnd", $HTOKEN)
If Not $RET[0] And Not $SP_AUXRET[0] Then Return 0
Return $RET[0]
EndFunc
#EndRegion _Memory
Global Const $GUI_EVENT_CLOSE = -3
Global Const $GUI_EVENT_MINIMIZE = -4
Global Const $GUI_EVENT_RESTORE = -5
Global Const $GUI_EVENT_MAXIMIZE = -6
Global Const $GUI_EVENT_PRIMARYDOWN = -7
Global Const $GUI_EVENT_PRIMARYUP = -8
Global Const $GUI_EVENT_SECONDARYDOWN = -9
Global Const $GUI_EVENT_SECONDARYUP = -10
Global Const $GUI_EVENT_MOUSEMOVE = -11
Global Const $GUI_EVENT_RESIZED = -12
Global Const $GUI_EVENT_DROPPED = -13
Global Const $GUI_RUNDEFMSG = "GUI_RUNDEFMSG"
Global Const $GUI_AVISTOP = 0
Global Const $GUI_AVISTART = 1
Global Const $GUI_AVICLOSE = 2
Global Const $GUI_CHECKED = 1
Global Const $GUI_INDETERMINATE = 2
Global Const $GUI_UNCHECKED = 4
Global Const $GUI_DROPACCEPTED = 8
Global Const $GUI_NODROPACCEPTED = 4096
Global Const $GUI_ACCEPTFILES = $GUI_DROPACCEPTED
Global Const $GUI_SHOW = 16
Global Const $GUI_HIDE = 32
Global Const $GUI_ENABLE = 64
Global Const $GUI_DISABLE = 128
Global Const $GUI_FOCUS = 256
Global Const $GUI_NOFOCUS = 8192
Global Const $GUI_DEFBUTTON = 512
Global Const $GUI_EXPAND = 1024
Global Const $GUI_ONTOP = 2048
Global Const $GUI_FONTITALIC = 2
Global Const $GUI_FONTUNDER = 4
Global Const $GUI_FONTSTRIKE = 8
Global Const $GUI_DOCKAUTO = 1
Global Const $GUI_DOCKLEFT = 2
Global Const $GUI_DOCKRIGHT = 4
Global Const $GUI_DOCKHCENTER = 8
Global Const $GUI_DOCKTOP = 32
Global Const $GUI_DOCKBOTTOM = 64
Global Const $GUI_DOCKVCENTER = 128
Global Const $GUI_DOCKWIDTH = 256
Global Const $GUI_DOCKHEIGHT = 512
Global Const $GUI_DOCKSIZE = 768
Global Const $GUI_DOCKMENUBAR = 544
Global Const $GUI_DOCKSTATEBAR = 576
Global Const $GUI_DOCKALL = 802
Global Const $GUI_DOCKBORDERS = 102
Global Const $GUI_GR_CLOSE = 1
Global Const $GUI_GR_LINE = 2
Global Const $GUI_GR_BEZIER = 4
Global Const $GUI_GR_MOVE = 6
Global Const $GUI_GR_COLOR = 8
Global Const $GUI_GR_RECT = 10
Global Const $GUI_GR_ELLIPSE = 12
Global Const $GUI_GR_PIE = 14
Global Const $GUI_GR_DOT = 16
Global Const $GUI_GR_PIXEL = 18
Global Const $GUI_GR_HINT = 20
Global Const $GUI_GR_REFRESH = 22
Global Const $GUI_GR_PENSIZE = 24
Global Const $GUI_GR_NOBKCOLOR = -2
Global Const $GUI_BKCOLOR_DEFAULT = -1
Global Const $GUI_BKCOLOR_TRANSPARENT = -2
Global Const $GUI_BKCOLOR_LV_ALTERNATE = -33554432
Global Const $GUI_WS_EX_PARENTDRAG = 1048576
Global Const $SS_LEFT = 0
Global Const $SS_CENTER = 1
Global Const $SS_RIGHT = 2
Global Const $SS_ICON = 3
Global Const $SS_BLACKRECT = 4
Global Const $SS_GRAYRECT = 5
Global Const $SS_WHITERECT = 6
Global Const $SS_BLACKFRAME = 7
Global Const $SS_GRAYFRAME = 8
Global Const $SS_WHITEFRAME = 9
Global Const $SS_SIMPLE = 11
Global Const $SS_LEFTNOWORDWRAP = 12
Global Const $SS_BITMAP = 14
Global Const $SS_ETCHEDHORZ = 16
Global Const $SS_ETCHEDVERT = 17
Global Const $SS_ETCHEDFRAME = 18
Global Const $SS_NOPREFIX = 128
Global Const $SS_NOTIFY = 256
Global Const $SS_CENTERIMAGE = 512
Global Const $SS_RIGHTJUST = 1024
Global Const $SS_SUNKEN = 4096
Global Const $GUI_SS_DEFAULT_LABEL = 0
Global Const $GUI_SS_DEFAULT_GRAPHIC = 0
Global Const $GUI_SS_DEFAULT_ICON = $SS_NOTIFY
Global Const $GUI_SS_DEFAULT_PIC = $SS_NOTIFY
Global $CHECKBOX[12]
$CHECKBOX[0] = 11
$FORM = GUICreate("DarkGER!'s Trainer", 150, 335, 272, 94)
$BUTTON1 = GUICtrlCreateButton("Hack!", 19, 285, 113, 49)
$CHECKBOX[1] = GUICtrlCreateCheckbox("915 Base HP", 24, 16, 97, 17)
$CHECKBOX[2] = GUICtrlCreateCheckbox("Unlimitied SP", 24, 64, 97, 17)
$CHECKBOX[3] = GUICtrlCreateCheckbox("No Damage", 24, 88, 73, 17)
$CHECKBOX[4] = GUICtrlCreateCheckbox("0 Accuracy", 24, 112, 97, 17)
$CHECKBOX[5] = GUICtrlCreateCheckbox("HMG Fastfire", 24, 136, 97, 17)
$CHECKBOX[6] = GUICtrlCreateCheckbox("Unlimited Ammo", 24, 160, 97, 17)
$CHECKBOX[7] = GUICtrlCreateCheckbox("No Gravity", 24, 184, 97, 17)
$CHECKBOX[8] = GUICtrlCreateCheckbox("Dodge delay", 24, 208, 97, 17)
$CHECKBOX[9] = GUICtrlCreateCheckbox("Walljump delay", 24, 232, 97, 17)
$CHECKBOX[10] = GUICtrlCreateCheckbox("25000 Base HP", 24, 40, 97, 17)
$CHECKBOX[11] = GUICtrlCreateCheckbox("Speed 25000", 24, 256, 97, 17)
For $A = 1 To 11
GUICtrlSetBkColor($CHECKBOX[$A], 3329330)
Next
GUISetState(@SW_SHOW)
While 1
$NMSG = GUIGetMsg()
Switch $NMSG
Case $GUI_EVENT_CLOSE
Exit
Case $BUTTON1
_BUTTON1()
EndSwitch
WEnd
Func _BUTTON1()
GUISetState(@SW_HIDE)
ToolTip("Wait for S4League...", 0, 0)
$PID = ProcessWait("S4Client.exe")
$HPROCESS = _MEMORYOPEN($PID)
Do
Sleep(50)
Until _MEMORYREAD(13267448, $HPROCESS, "Float") = 350
If GUICtrlRead($CHECKBOX[1]) = 1 Then
_MEMORYWRITE(13553580, $HPROCESS, "actor_default_animation_move_speed", "char[35]")
EndIf
If GUICtrlRead($CHECKBOX[2]) = 1 Then
_MEMORYWRITE(13535560, $HPROCESS, "0", "char[2]")
_MEMORYWRITE(13553240, $HPROCESS, "0", "char[2]")
_MEMORYWRITE(13553330, $HPROCESS, "0", "char[2]")
_MEMORYWRITE(13553417, $HPROCESS, "0", "char[2]")
_MEMORYWRITE(13553441, $HPROCESS, "0", "char[2]")
_MEMORYWRITE(13553252, $HPROCESS, "0", "char[2]")
_MEMORYWRITE(13553276, $HPROCESS, "0", "char[2]")
EndIf
If GUICtrlRead($CHECKBOX[3]) = 1 Then
_MEMORYWRITE(13553912, $HPROCESS, "0", "char[2]")
EndIf
If GUICtrlRead($CHECKBOX[4]) = 1 Then
_MEMORYWRITE(13538056, $HPROCESS, "0", "char[2]")
EndIf
If GUICtrlRead($CHECKBOX[5]) = 1 Then
_MEMORYWRITE(13537932, $HPROCESS, "jump_time", "char[10]")
EndIf
If GUICtrlRead($CHECKBOX[6]) = 1 Then
_MEMORYWRITE(13538024, $HPROCESS, "max_ammo", "char[9]")
_MEMORYWRITE(13537996, $HPROCESS, "max_ammo", "char[9]")
EndIf
If GUICtrlRead($CHECKBOX[7]) = 1 Then
_MEMORYWRITE(13553640, $HPROCESS, "0", "char[2]")
EndIf
If GUICtrlRead($CHECKBOX[8]) = 1 Then
_MEMORYWRITE(13553388, $HPROCESS, "0", "char[2]")
EndIf
If GUICtrlRead($CHECKBOX[9]) = 1 Then
_MEMORYWRITE(13553476, $HPROCESS, "0", "char[2]")
EndIf
If GUICtrlRead($CHECKBOX[10]) = 1 Then
_MEMORYWRITE(13553580, $HPROCESS, "ray_maxdistance", "char[16]")
EndIf
Exit
EndFunc
Wenn es verboten ist eine Solche Source zu posten, einfach löschen aber in Prinzip kann jeder der Google beherrscht an den Code rankommen :shout:
Ps: Ich will keine Thx ich will euch einfach nur ne Hilfestellung sein!