Register for your free account! | Forgot your password?

Go Back   elitepvpers > Shooter > Combat Arms
You last visited: Today at 11:36

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



LawlRez Sourcecode

Discussion on LawlRez Sourcecode within the Combat Arms forum part of the Shooter category.

Reply
 
Old   #1


 
Lawliet's Avatar
 
elite*gold: 2
Join Date: Jul 2009
Posts: 14,456
Received Thanks: 4,685
LawlRez Sourcecode

Hey Leute,
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
Wenn ihr ihn benutzt, dann
Credits @lawliet!
Attached Files
File Type: rar LawlRez_source.rar (5.4 KB, 13 views)
Lawliet is offline  
Thanks
4 Users
Reply


Similar Threads Similar Threads
LawlRez - Mod Bypass by Lawliet! [epvp]
08/10/2012 - Combat Arms - 29 Replies
Hallo Leute, hier release ich nun das erste mal public und warscheinlich auch für lange Zeit letzte Version von "LawlRez". https://dl.dropbox.com/u/29811495/Mods/lawlrez.bm p Mit LawlRez ist es möglich beliebige Daten in Rez*(1) Daten zu injecten. D.h. wiederum man kann viel einfacher und vor allem wieder mehrere Mods*(2) für Combat Arms nutzen. Öffnet einer Rez Datei:
LawlRez - kleines Tutorial
08/08/2012 - Combat Arms - 6 Replies
Hey Leute, Da hier einige Probleme hatten die aktuellen Mods mit LawlRez zu injecten, hab ich mal nen 2 Minuten Tutorial aufgenommen, in dem ich kurz erkläre, wie es zu nutzen ist :) Danke an Juli, der mir das Video convertiert, bearbeitet und hochgeladen hat! LawlRez. - YouTube Viel Spaß



All times are GMT +1. The time now is 11:36.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.