ich release mal den LawlRez sourcecode, da so viele nach Teilen gefragt haben.
Code:
#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Icon=..\Law-Dev\lawldev.ico #AutoIt3Wrapper_UseUpx=n #AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <ProgressConstants.au3> #include <TreeViewConstants.au3> #include <WindowsConstants.au3> #include <StaticConstants.au3> #include <array.au3> #include <File.au3> #include <guitreeview.au3> #include <GuiListView.au3> #include <GuiListBox.au3> ;If @Compiled And Ping("google.com", 100) Then CheckUpdates() if not FileExists(@ScriptDir & "\lawlrez.bmp") then FileInstall("C:\Users\lawliet\Desktop\lawlrez.bmp", @ScriptDir & "\lawlrez.bmp") If isCARunning() Then Exit $startsplash = SplashImageOn("LawlRez OPEN BETA", @ScriptDir & "\lawlrez.bmp", 300, 200) Sleep(2000) SplashOff() Global $GUI, $menu, $menuitem1, $tabitem, $tab1, $tab2, $treeview, $Group1, $Progress1, $xAddChild, $treeview $GUI = GUICreate("LawlRez", 250, 420) $menu = GUICtrlCreateMenu("Datei") $menuitem1 = GUICtrlCreateMenuItem("Open Rez", $menu) GUICtrlSetState(-1, $GUI_DEFBUTTON) $menu2 = GUICtrlCreateMenu("Hilfe") $menuitem2 = GUICtrlCreateMenuItem("Über..", $menu2) $tabitem = GUICtrlCreateTab(0, 0, 255, 400) $tab1 = GUICtrlCreateTabItem("Rez Tools") $treeview = GUICtrlCreateTreeView(2, 22, 247, 300, BitOR($TVS_EDITLABELS, $TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS, $TVS_CHECKBOXES)) GUICtrlSetBkColor(-1, 0xededed) $Progress1 = GUICtrlCreateProgress(5, 370, 240, 20) GUICtrlCreateGroup("Info", 5, 323, 240, 40) $label5 = GUICtrlCreateLabel("Fortschritt 0%", 10, 335, 100, 20) GUICtrlSetFont(-1, 7.4, 0, 0, "Arial") $label6 = GUICtrlCreateLabel("File: ", 10, 345, 250, 10) GUICtrlSetFont(-1, 7.4, 0, 0, "Arial") $tab2 = GUICtrlCreateTabItem("DTX") $list2 = GUICtrlCreateListView("Pfad|Name|Typ", 10, 50, 230, 280) $addDtx = GUICtrlCreateButton("++ Add Items ++", 10, 340, 115, 30) $convertnx = GUICtrlCreateButton("Convert to Nexon", 125, 340, 115, 15) $convertlt = GUICtrlCreateButton("Convert to LithTech", 125, 355, 115, 15) $clear = GUICtrlCreateButton("Clear List", 10, 25, 230, 20) $Progress2 = GUICtrlCreateProgress(10, 375, 230) GUICtrlCreateTabItem("") GUISetState(@SW_SHOW) Dim $Mainitems[1][8] Dim $ChildItems[1][5] Dim $tvKontext[1][2] Dim $mainview[3] Main() Func Main() Local $nMsg = 0, $path, $generalitem, $files = 0, $i = 0, $cFolder, $ts = 0, $Name = 0 While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $menuitem1 $path = FileOpenDialog("Choose a Rez File", "E:\Spiele\anno\Combat Arms EU\Game\", "Rez Files(*.rez)") If $path Then $Name = RezOpen($path) EndIf Case $mainview If _GUICtrlTreeView_GetChecked($treeview, $mainview) Then For $b = 1 To $ChildItems[0][0] Step 1 _GUICtrlTreeView_SetChecked($treeview, $ChildItems[$b][0]) Next For $b = 1 To $Mainitems[0][0] Step 1 _GUICtrlTreeView_SetChecked($treeview, $Mainitems[$b][0]) Next EndIf Case $menuitem2 MsgBox(0, "Über", "LawlRez wurde von Lawliet! (Maxim B.) Entwickelt" & @CRLF & "Version: OPEN BETA"& @CRLF & "Bei Problemen bitte an mich wenden :)") Case $addDtx $FileList = FileOpenDialog("Choose a DTX File", @DesktopDir, "DTXFiles(*.dtx)", 4) If $FileList and StringInStr($FileList, "|") Then $split = StringSplit($FileList, "|") for $i = 2 to $split[0] GUICtrlCreateListViewItem($split[1] & "\" & $split[$i] & "|" & $split[$i]& "|" & _GetDTXTyp($split[1] & "\" & $split[$i]), $list2) Next Else $dtxname = _PathToFilename($FileList) GUICtrlCreateListViewItem($FileList & "|" & $dtxname[$dtxname[0]] & "." & $dtxname[$dtxname[0]-1] & "|" & _GetDTXTyp($FileList), $list2) EndIf case $clear _GUICtrlListView_DeleteAllItems($list2) Case $convertlt For $i = 0 to _GUICtrlListView_GetItemCount($list2) GUICtrlSetData($Progress2, (100/_GUICtrlListView_GetItemCount($list2)+1)*$i) $name = _GUICtrlListView_GetItem($list2, $i, 0) $hFile = FileOpen($name[3], 17) FileSetPos($hfile, 0, 0) FileWrite($hfile, "0x00000000FBFFFFFF8000800004") GUICtrlSetData($name[5], "||" & _GetDTXTyp($name[3])) FileClose($hFile) Next Case $convertnx For $i = 0 to _GUICtrlListView_GetItemCount($list2) GUICtrlSetData($Progress2, (100/_GUICtrlListView_GetItemCount($list2)+1)*$i) $name = _GUICtrlListView_GetItem($list2, $i, 0) $hFile = FileOpen($name[3], 17) FileSetPos($hfile, 0, 0) FileWrite($hfile, "0x0000000080008000FBFFFFFF04") GUICtrlSetData($name[5], "||" & _GetDTXTyp($name[3])) FileClose($hFile) Next EndSwitch If IsArray($Mainitems) And $Mainitems[0][2] And $Mainitems[0][3] Then if $nMsg = $Mainitems[0][4] then if MsgBox(1, "Warning", '"Create Folder" is buggy and may not work') = 1 Then RezCreateFolder($path) RezOpen($path) EndIf EndIf If $nMsg = $Mainitems[0][3] Then $FolderPath = FileSelectFolder("Choose a Folder", @DesktopDir, 1) $FList = _FileListToArray($FolderPath) if not @error Then ProgressOn("Injecting Data", "") For $i = 1 To $FList[0] $aName = _PathToFilename($FolderPath) ProgressSet((100/$FList[0])*$I, $aName[UBound($aName) - 1] & " ----> " & $FList[$i]) LawlInjectFile($FolderPath & "\" & $FList[$i], $path, $aName[UBound($aName) - 1]) FileDelete($path) FileMove($path & "new", $path) Next ProgressOff() RezOpen($path) Else MsgBox(0, "Error", "Error code: " & @error & @CRLF & "No Files in Folder?") EndIf EndIf EndIf For $i = 1 To $Mainitems[0][0] Step 1 if $nMsg = $Mainitems[$i][7] then $files = FileOpenDialog("Choose a File(s)", @DesktopDir, "All(*.*)", 4) if StringInStr($Files, "|") Then $split = StringSplit($files, "|") ProgressOn("Injecting Data", "") For $c = 2 to $split[0] ProgressSet((100/$split[0]-1)*$c, $Mainitems[$i][1] & " ----> " & $split[$c]) LawlInjectFile($split[1] & "\" & $split[$c], $path, $Mainitems[$i][1]) FileDelete($path) FileMove($path & "new", $path) Next ProgressOff() RezOpen($path) MsgBox(0, "Done", $split[0]-1 & " Daten erfolgreich in " & $Mainitems[$i][1] & " injected") Else ProgressOn("Injecting Data", "") LawlInjectFile($files, $path, $Mainitems[$i][1]) FileDelete($path) FileMove($path & "new", $path) ProgressSet(100, "") ProgressOff() RezOpen($path) MsgBox(0, "Done", "1 Daten erfolgreich in " & $Mainitems[$i][1] & " injected") EndIf EndIf If $nMsg = $Mainitems[$i][5] Then GUICtrlSetData($Progress1, 0) For $z = 1 To $ChildItems[0][0] Step 1 GUICtrlSetData($Progress1, (100 / $ChildItems[0][0]) * $z) GUICtrlSetData($label5, "Fortschritt: " & Round((100 / $ChildItems[0][0]) * $z, 2) & " %") If StringInStr($ChildItems[$z][4], $Mainitems[$i][1]) And StringInStr($ChildItems[$z][1], ".") Then GUICtrlSetData($label6, "File: " & $ChildItems[$z][1]) $hFile = FileOpen($path, 16) FileSetPos($hFile, $ChildItems[$z][2], 0) DirCreate(@DesktopDir & "\" & $Name[1] & "." & $Name[2] & "\" & $ChildItems[$z][4]) FileWrite(@DesktopDir & "\" & $Name[1] & "." & $Name[2] & "\" & $ChildItems[$z][4] & "\" & $ChildItems[$z][1], FileRead($hFile, $ChildItems[$z][3])) FileClose($hFile) EndIf Next MsgBox(0, "100%", "Entpackt nach " & @DesktopDir & "\" & $Name[1] & "." & $Name[2] & "\") EndIf If $nMsg = $Mainitems[$i][0] Then If _GUICtrlTreeView_GetChecked($treeview, $Mainitems[$i][0]) Then For $c = 1 To $ChildItems[0][0] Step 1 If StringRight($ChildItems[$c][4], StringLen($Mainitems[$i][1])) = $Mainitems[$i][1] Then _GUICtrlTreeView_SetChecked($treeview, $ChildItems[$c][0]) Next EndIf EndIf Next WEnd EndFunc ;==>Main Func LawlReadFolder($data, $sString) Dim $Folder[2][3] Local $pos = 1, $i = 2, $c = 0 Do ReDim $Folder[$i][3] $pos = StringInStr($data, StringTrimLeft($sString, 2), 0, 1, $pos + 8) - 2 $Folder[$i - 1][1] = Dec(ConvertRezBack(BinaryMid($data, ($pos / 2) - 8, 4))) $Folder[$i - 1][2] = Dec(ConvertRezBack(BinaryMid($data, ($pos / 2) - 4, 4))) $c = 0 Do $Folder[$i - 1][0] &= BinaryToString(BinaryMid($data, $pos / 2 + 4 + $c, 1)) $c += 1 Until BinaryMid($data, $pos / 2 + 4 + $c, 1) = "0x00" Or BinaryMid($data, $pos / 2 + 4 + $c, 1) = False $i += 1 Until StringInStr($data, StringTrimLeft($sString, 2), 0, 1, $pos + 4) <= 0 $Folder[0][0] = $i - 2 Return $Folder EndFunc ;==>LawlReadFolder Func ConvertRez($data) Local $hex, $sRet = "" If $data Then If Not IsBinary($data) Then $hex = Hex($data) Else $hex = StringTrimLeft($data, 2) EndIf Else SetError(1, 0, 0) EndIf For $i = 2 To StringLen($hex) Step 2 $sRet &= StringTrimRight(StringRight($hex, $i), $i - 2) Next While StringLen($sRet) < 8 $sRet &= "00" WEnd Return $sRet EndFunc ;==>ConvertRez Func ConvertRezBack($data) Local $sRet = "" If IsBinary($data) Then $data = StringTrimLeft($data, 2) Else SetError(1, 0, 0) EndIf For $i = 2 To StringLen($data) Step 2 $sRet &= StringTrimRight(StringRight($data, $i), $i - 2) Next Return $sRet EndFunc ;==>ConvertRezBack Func LawlReadRez($path, $opt = 0, $off = 0, $lOff = 0) Local $pos = 0, $posi = 1, $sString = "", $c = 2, $b = 32, $i = 1, $hFile = 0, $sPointer1 = 0, $lPointer1 = 0, $sPointer2 = 0, $lPointer2 = 0, $Folder = 0, $FileEx = 0, $data = "" Dim $files[1][4] $hFile = FileOpen($path, 16) ConsoleWrite($hFile & @CRLF) FileSetPos($hFile, 215, 0) $sString = StringTrimLeft(FileRead($hFile, 4), 2) ConsoleWrite($sString & @CRLF) FileSetPos($hFile, 199, 0) $sPointer1 = Dec(ConvertRezBack(FileRead($hFile, 4))) ConsoleWrite($sPointer1 & @CRLF) FileSetPos($hFile, 203, 0) $lPointer1 = Dec(ConvertRezBack(FileRead($hFile, 4))) ConsoleWrite($lPointer1 & @CRLF) FileSetPos($hFile, $sPointer1, 0) $Folder = LawlReadFolder(FileRead($hFile, $lPointer1), $sString) If $opt Then FileClose($hFile) Return $Folder EndIf #cs FileSetPos($hfile, $sPointer1 + 4, 0) $sPointer2 = Dec(ConvertRezBack(FileRead($hfile, 4))) + 1 FileSetPos($hfile, $sPointer1 + 4 * 2, 0) $lPointer2 = Dec(ConvertRezBack(FileRead($hfile, 4))) #ce If $off And $lOff Then $sPointer2 = $off $lPointer2 = $lOff EndIf #cs _ArrayDisplay($Folder) MsgBox(0, "", $sPointer2 & " " & $lPointer2) #ce FileSetPos($hFile, $sPointer2, 0) $data = StringTrimLeft(FileRead($hFile, $lPointer2), 2) While True $i += 1 ReDim $files[$i][3] $posi = StringInStr($data, StringTrimLeft($sString, 2), 0, 1, $posi + 8) - 2 If @error Then MsgBox(0, "ERROR", @error) If $posi > 0 Then If Dec(ConvertRezBack(StringMid($data, $posi + 9, 2))) = "00" Then $files[$i - 1][1] = Dec(ConvertRezBack(StringMid($data, $posi - 16, 8))) $files[$i - 1][2] = Dec(ConvertRezBack(StringMid($data, $posi - 8, 8))) $b = 32 Do $files[$i - 1][0] &= BinaryToString("0x" & (StringMid($data, $posi + $b, 2))) $b += 2 Until StringMid($data, $posi + $b, 2) = "00" $c = 2 Do If $c = 2 Then $files[$i - 1][0] &= Chr(46) $files[$i - 1][0] &= BinaryToString("0x" & (StringMid($data, $posi + 22 - $c, 2))) $c += 2 Until $c = 8 Else $files[$i - 1][1] = Dec(ConvertRezBack(StringMid($data, $posi - 16, 8))) $files[$i - 1][2] = Dec(ConvertRezBack(StringMid($data, $posi - 8, 8))) $b = 1 Do $files[$i - 1][0] &= BinaryToString("0x" & (StringMid($data, $posi + 7 + $b, 2))) $b += 2 Until StringMid($data, $posi + 7 + $b, 2) = "00" Or StringMid($data, $posi + 7 + $b, 2) = False $c = 2 EndIf Else $files[0][0] = $i - 2 FileClose($hFile) Return $files EndIf WEnd $files[0][0] = $i - 2 EndFunc ;==>LawlReadRez Func _PathToFilename($path) Local $aFileInfo = "", $FileEx = "" $aFileInfo = StringSplit($path, "\") $FileEx = StringSplit($aFileInfo[$aFileInfo[0]], ".") Return $FileEx EndFunc ;==>_PathToFilename Func LawlInjectFile($source, $target, $FolderN, $opt = 0) Local $sData = "", $b = 0, $i = 0, $pos = 1, $sourcePointer = "", $FolderString = "", $hFile = 0, $FolderData = "", $FileEx = "", $FList = "", $files = "", $fileexist = 0 $FileEx = _PathToFilename($source) if not $opt then Dim $sFileInfo[2] = [$FileEx[$FileEx[0]], $FileEx[$FileEx[0] - 1]] Dim $lastFolder[3] = [0, 0, 0] Dim $lastFile[3] = [0, 0, 0] Dim $FolderExist[4] = [0, 0, 0, 0] If $opt Then $sData = $source Else $hFile = FileOpen($source, 16) $sData = FileRead($hFile) EndIf $FList = LawlReadRez($target, 1) For $i = 1 To $FList[0][0] Step 1 If $FList[$i][1] > $lastFolder[0] Then $lastFolder[0] = $FList[$i][0] $lastFolder[1] = $FList[$i][1] $lastFolder[2] = $FList[$i][2] EndIf $files = LawlReadRez($target, 0, $FList[$i][1], $FList[$i][2]) For $b = 1 To $files[0][0] Step 1 ;If $files[$b][0] = $FileEx[2] & "." & $FileEx[1] Then $fileexist = True If $files[$b][1] > $lastFile[1] Then $lastFile[0] = $files[$b][0] $lastFile[1] = $files[$b][1] $lastFile[2] = $files[$b][2] EndIf Next Next FileClose($hFile) $hFile = FileOpen($target, 16) FileSetPos($hFile, 215, 0) $sString = StringTrimLeft(FileRead($hFile, 4), 2) FileSetPos($hFile, 199, 0) $sPointer1 = Dec(ConvertRezBack(FileRead($hFile, 4))) FileSetPos($hFile, 203, 0) $lPointer1 = Dec(ConvertRezBack(FileRead($hFile, 4))) FileSetPos($hFile, $sPointer1, 0) $Folder = LawlReadFolder(FileRead($hFile, $lPointer1), $sString) FileSetPos($hFile, $sPointer1 + 4, 0) $sPointer2 = Dec(ConvertRezBack(FileRead($hFile, 4))) + 1 FileSetPos($hFile, $sPointer1 + 4 * 2, 0) $lPointer2 = Dec(ConvertRezBack(FileRead($hFile, 4))) FileSetPos($hFile, $lastFile[1] + $lastFile[2], 0) For $i = 0 To $Folder[0][0] Step 1 If $Folder[$i][0] = $FolderN Then $FolderExist[0] = True $FolderExist[1] = $Folder[$i][0] $FolderExist[2] = $Folder[$i][1] $FolderExist[3] = $Folder[$i][2] EndIf Next If $opt Then $sourcePointer = "" Else If $FileEx[0] > 1 Then $sourcePointer = "00000000" & ConvertRez($lastFile[1] + $lastFile[2]) & ConvertRez(BinaryLen($sData)) & $sString & "00000000" & ConvertRez(StringToBinary($FileEx[UBound($FileEx) - 1])) & "00000000" & StringTrimLeft(StringToBinary($FileEx[1]), 2) & "0000" Else $sourcePointer = "00000000" & ConvertRez($lastFile[1] + $lastFile[2]) & ConvertRez(BinaryLen($sData)) & $sString & "00000000" & ConvertRez(StringToBinary($FileEx[UBound($FileEx) - 1])) & "00000000" & StringTrimLeft(StringToBinary($FileEx[1]), 2) & "0000" EndIf EndIf $data = StringTrimLeft(FileRead($hFile, $sPointer1 - ($lastFile[1] + $lastFile[2])), 2) FileWrite(@DesktopDir & "\test.txt", $data & @CRLF) If $FolderExist[0] Then $data = StringLeft($data, (($FolderExist[2] + $FolderExist[3]) * 2) - (($lastFile[1] + $lastFile[2]) * 2)) & $sourcePointer & LawladdBytes(BinaryLen("0x" & $sourcePointer)) & StringRight($data, (StringLen($data)) - ((($FolderExist[2] + $FolderExist[3]) * 2) - (($lastFile[1] + $lastFile[2]) * 2))) FileWrite(@DesktopDir & "\test.txt", $data & @CRLF & @CRLF) EndIf FileSetPos($hFile, $sPointer1, 0) $FolderData = FileRead($hFile, FileGetSize($target) - $sPointer1) If Not $FolderExist[0] Then Do $pos = StringInStr($FolderData, StringTrimLeft($sString, 2), 0, 1, $pos + 8) - 2 $FolderData = StringReplace($FolderData, StringTrimLeft(BinaryMid($FolderData, ($pos / 2) - 8, 4), 2), ConvertRez(Dec(ConvertRezBack(StringTrimLeft(BinaryMid($FolderData, $pos / 2 - 8, 4), 2))) + BinaryLen($sData))) Until StringInStr($FolderData, StringTrimLeft($sString, 2), 0, 1, $pos + 8) <= 0 Else Do $pos = StringInStr($FolderData, $sString, 0, 1, $pos + 8) If BinaryToString("0x" & StringMid($FolderData, $pos + 8, StringLen($FolderN) * 2)) = $FolderN Then $FolderData = StringLeft($FolderData, $pos - 9) & ConvertRez(Dec(ConvertRezBack(StringMid($FolderData, $pos - 8, 8))) + BinaryLen("0x" & $sourcePointer)) & StringTrimLeft($FolderData, $pos - 1) EndIf $FolderData = StringLeft($FolderData, $pos - 17) & ConvertRez(Dec(ConvertRezBack(StringMid($FolderData, $pos - 16, 8))) + BinaryLen($sData)) & StringTrimLeft($FolderData, $pos - 9) Until StringInStr($FolderData, StringTrimLeft($sString, 2), 0, 1, $pos + 8) <= 0 EndIf If $FolderExist[0] = False Then $FolderString = "01000000" & ConvertRez($lastFolder[1] + ($lastFolder[2] * 2) + BinaryLen($sData)) & ConvertRez(BinaryLen("0x" & $sourcePointer)) & $sString & StringTrimLeft(StringToBinary($FolderN), 2) & "00" $sourcePointer &= LawladdBytes(BinaryLen("0x" & $sourcePointer)) FileSetPos($hFile, 0, 0) _FileCreate($target & "new") $hnFile = FileOpen($target & "new", 1) If Not $fileexist Then FileWrite($hnFile, BinaryToString(FileRead($hFile, 199) & ConvertRez($sPointer1 + BinaryLen($sData) + BinaryLen("0x" & $sourcePointer)) & ConvertRez($lPointer1 + BinaryLen("0x" & $FolderString)))) FileSetPos($hFile, 199 + 8, 0) FileWrite($hnFile, BinaryToString(FileRead($hFile, ($lastFile[1] + $lastFile[2]) - 199 - 8))) FileWrite($hnFile, BinaryToString($sData)) FileWrite($hnFile, BinaryToString("0x" & $data)) If $FolderExist[0] = False Then If Not $opt Then FileWrite($hnFile, BinaryToString("0x" & $sourcePointer)) FileWrite($hnFile, BinaryToString($FolderData & $FolderString)) Else FileWrite($hnFile, BinaryToString($FolderData)) EndIf FileClose($hnFile) FileClose($hFile) Else FileWrite($hnFile, BinaryToString(FileRead($hFile, 199) & ConvertRez($sPointer1 + BinaryLen($sData) + BinaryLen("0x" & $sourcePointer)) & ConvertRez($lPointer1 + BinaryLen("0x" & $FolderString)))) FileSetPos($hFile, 199 + 8, 0) $i = 0 Do $i += 1 FileWrite($hnFile, BinaryToString(FileRead($hFile, 1) - 199 - 8)) FileSetPos($hFile, 199 + 8 + $i, 0) Until $i = $lastFile[1] + $lastFile[2] FileWrite($hnFile, BinaryToString($sData)) FileWrite($hnFile, BinaryToString("0x" & $data)) If $FolderExist[0] = False Then If Not $opt Then FileWrite($hnFile, BinaryToString("0x" & $sourcePointer)) FileWrite($hnFile, BinaryToString($FolderData & $FolderString)) Else FileWrite($hnFile, BinaryToString($FolderData)) EndIf FileClose($hnFile) FileClose($hFile) EndIf EndFunc ;==>LawlInjectFile Func LawladdBytes($size) Local $Ret = "" For $i = 1 To $size Step 1 $Ret &= "00" Next Return $Ret EndFunc ;==>LawladdBytes Func isCARunning() If ProcessExists("Engine.exe") Then Return True Return False EndFunc ;==>isCARunning Func RezOpen($path) $Folder = LawlReadRez($path, 1) If IsArray($Folder) Then ;del all ReDim $Mainitems[1][9] ReDim $ChildItems[1][5] ReDim $mainview[2] $xAddChild = 0 _GUICtrlTreeView_DeleteAll($treeview) $Name = _PathToFilename($path) $mainview[0] = GUICtrlCreateTreeViewItem($Name[1] & "." & $Name[2], $treeview) $mainview[1] = GUICtrlCreateContextMenu($treeview) $Mainitems[0][2] = GUICtrlCreateContextMenu($mainview[0]) $Mainitems[0][3] = GUICtrlCreateMenuItem("Inject Folder", $Mainitems[0][2]) $Mainitems[0][4] = GUICtrlCreateMenuItem("Create Folder", $Mainitems[0][2]) For $i = 1 To $Folder[0][0] Step 1 ReDim $Mainitems[$i + 1][9] $Mainitems[0][0] = $Folder[0][0] $Mainitems[$i][1] = $Folder[$i][0] $Mainitems[$i][2] = $Folder[$i][1] $Mainitems[$i][3] = $Folder[$i][2] $Mainitems[$i][0] = GUICtrlCreateTreeViewItem($Folder[$i][0], $mainview[0]) GUICtrlSetColor($Mainitems[$i][0], 0x0000C0) $files = LawlReadRez($path, 0, $Folder[$i][1], $Folder[$i][2]) $ChildItems[0][0] += $files[0][0] For $b = 1 To $files[0][0] Step 1 $x = 0 $xAddChild += 1 ReDim $ChildItems[$xAddChild + 1][5] $ChildItems[$xAddChild][1] = $files[$b][0] $ChildItems[$xAddChild][2] = $files[$b][1] $ChildItems[$xAddChild][3] = $files[$b][2] $ChildItems[$xAddChild][4] = $Mainitems[$i][1] $ChildItems[$xAddChild][0] = GUICtrlCreateTreeViewItem($files[$b][0], $Mainitems[$i][0]) If Not StringInStr($files[$b][0], ".") Then GUICtrlSetColor($ChildItems[$xAddChild][0], 0x0000C0) Next Next $i = 0 Do $i += 1 If StringInStr($ChildItems[$i][1], ".") = False Then ReDim $Mainitems[UBound($Mainitems) + 1][9] $Mainitems[UBound($Mainitems) - 1][0] = $ChildItems[$i][0] $Mainitems[UBound($Mainitems) - 1][1] = $ChildItems[$i][1] $Mainitems[UBound($Mainitems) - 1][2] = $ChildItems[$i][2] $Mainitems[UBound($Mainitems) - 1][3] = $ChildItems[$i][3] $Mainitems[UBound($Mainitems) - 1][8] = $ChildItems[$i][4] $cFiles = LawlReadRez($path, 0, $ChildItems[$i][2], $ChildItems[$i][3]) For $x = 1 To $cFiles[0][0] Step 1 ReDim $ChildItems[UBound($ChildItems) + 1][5] $ChildItems[UBound($ChildItems) - 1][1] = $cFiles[$x][0] $ChildItems[UBound($ChildItems) - 1][2] = $cFiles[$x][1] $ChildItems[UBound($ChildItems) - 1][3] = $cFiles[$x][2] $ChildItems[UBound($ChildItems) - 1][4] = $ChildItems[$i][4] & "\" & $ChildItems[$i][1] If StringInStr($cFiles[$x][0], ".") Then $ChildItems[UBound($ChildItems) - 1][0] = GUICtrlCreateTreeViewItem($cFiles[$x][0], $ChildItems[$i][0]) Else $ChildItems[UBound($ChildItems) - 1][0] = GUICtrlCreateTreeViewItem($cFiles[$x][0], $ChildItems[$i][0]) GUICtrlSetColor($ChildItems[UBound($ChildItems) - 1][0], 0x0000C0) EndIf Next EndIf Until $i = UBound($ChildItems) - 1 $ChildItems[0][0] = UBound($ChildItems) - 1 $Mainitems[0][0] = UBound($Mainitems) - 1 GUICtrlSetState($mainview[0], BitOR($GUI_EXPAND, $GUI_DEFBUTTON)) EndIf For $i = 1 To $Mainitems[0][0] Step 1 $Mainitems[$i][4] = GUICtrlCreateContextMenu($Mainitems[$i][0]) $Mainitems[$i][5] = GUICtrlCreateMenuItem("Extract selected File / Folder", $Mainitems[$i][4]) If Not $Mainitems[$i][8] Then $Mainitems[$i][7] = GUICtrlCreateMenuItem("Inject File /s in this Folder", $Mainitems[$i][4]) Else $Mainitems[$i][7] = GUICtrlCreateMenuItem("Inject File /s in this Folder - Alpha (may not working)", $Mainitems[$i][4]) GUICtrlSetState($Mainitems[$i][7], $GUI_DISABLE) EndIf $Mainitems[$i][6] = GUICtrlCreateMenuItem("Create Folder - Alpha (may not working)", $Mainitems[$i][4]) GUICtrlSetState($Mainitems[$i][6], $GUI_DISABLE) Next Return $Name EndFunc ;==>RezOpen Func RezCreateFolder($path, $FolderInfo = 0) LawlInjectFile("", $path, InputBox("Folder Name", "Name:", "", "", 250, 120), 1) FileDelete($path) FileMove($path & "new", $path) EndFunc ;==>RezCreateFolder #cs Func CheckUpdates() If Not (FileGetSize(@ScriptFullPath) = InetGetSize("http://lawliet.pf-control.de/download/LawlRez.exe")) Then If Not Run(@ScriptDir & "\LawlRezUpdater.exe") Then Return MsgBox(0, "Error", "Bitte Laden sie sich den LawlRezUpdater, um an die aktuelle Version von LawlRez zu kommen") Exit EndIf EndFunc ;==>CheckUpdates #ce Func _GetDTXTyp($dtxpath) $hdtxfile = FileOpen($dtxpath, 16) if FileRead($hdtxfile, 13) = "0x00000000FBFFFFFF8000800004" Then FileClose($hdtxfile) Return "LithTech" Else FileClose($hdtxfile) Return "Nexon" EndIf EndFunc
Credits @lawliet!