#include #include #include ;Declaring an enum and filling an array so it's easier to compare items instead of large strings. Local Enum $DecVars, $SetValue, $DllStructSet, $Scan, $Function Local $FileArray Local $LineChecks[5][2] $LineChecks[$DecVars][0] = @CRLF & ";======================================================================" & _ @CRLF & "Global $mUpgradeItem = DllStructCreate('ptr;dword;dword;dword;dword')" & _ @CRLF & "Global $mUpgradeItemPtr = DllStructGetPtr($mUpgradeItem)" & _ @CRLF &";======================================================================" & @CRLF $LineChecks[$DecVars][1] = "Global $mUpgradeItem = DllStructCreate('ptr;dword;" $LineChecks[$SetValue][0] = " ;======================================================================" & _ @CRLF & " SetValue('UpgradeItemFunction','0x004574D0')" & _ @CRLF & " ;======================================================================" & @CRLF $LineChecks[$SetValue][1] = "SetValue('UpgradeItemFunction','0x004574D0')" $LineChecks[$DllStructSet][0] = " ;======================================================================" & _ @CRLF & " DllStructSetData($mUpgradeItem, 1, GetValue('CommandUpgradeItem'))" & _ @CRLF & " ;======================================================================" & @CRLF $LineChecks[$DllStructSet][1] = "DllStructSetData($mUpgradeItem, 1, GetValue('CommandUpgradeItem'))" $LineChecks[$Scan][0] = " ;======================================================================" & _ @CRLF & " _('ScanUpgradeFunction:')" & _ @CRLF & " AddPattern('8B410C568B71088B')" & _ @CRLF & " ;======================================================================" & @CRLF $LineChecks[$Scan][1] = "_('ScanUpgradeFunction:')" $LineChecks[$Function][0] = ";======================================================================" & _ @CRLF & @CRLF & ";~ Description: Applies a mod to an item." & _ @CRLF & "Func UpgradeItem($aWeaponItemId,$aModItemId,$aModType)" & _ @CRLF & " DllStructSetData($mUpgradeItem,2,0)" & _ @CRLF & " DllStructSetData($mUpgradeItem,3,$aModType)" & _ @CRLF & " DllStructSetData($mUpgradeItem,4,$aWeaponItemId)" & _ @CRLF & " DllStructSetData($mUpgradeItem,5,$aModItemId)" & _ @CRLF & @CRLF & " Enqueue($mUpgradeItemPtr,0x14)" & _ @CRLF & @CRLF & " sleep(2000)" & _ @CRLF & " sendpacket(0x4, 0x7C)" & _ @CRLF & "EndFunc ;==>UpgradeItem" & _ @CRLF & ";======================================================================" & @CRLF & @CRLF $LineChecks[$Function][1] = "Func UpgradeItem(" ;Filling a second array with enum values to get prior lines Local $pLineChecks[5] $pLineChecks[$DecVars] = "Local $mMakeAgentArrayPtr = DllStructGetPtr($mMakeAgentArray)" $pLineChecks[$SetValue] = "SetValue('ClickToMoveFix', '0x' & Hex(GetScannedAddress(";edit that $pLineChecks[$DllStructSet] = "DllStructSetData($mMakeAgentArray, 1, GetValue('CommandMakeAgentArray'))" $pLineChecks[$Scan] = "_('ScanClickToMoveFix:')" $pLineChecks[$Function] = "Func SalvageMod" ;Grabbing the file Local $FileName = FileOpenDialog("Open", @ScriptDir, "Autoit (*.au3)") IF @error Then Exit Local $____String__to_Search = StringReplace(FileRead($FileName), @CRLF, " ") Local $FileReadToArray = _FileReadToArray($FileName, $FileArray, 1) IF $FileReadToArray = 0 Or @error Then Exit Local $change_some = False For $i = 0 To 4 If StringInStr($____String__to_Search, $LineChecks[$i][1], 2) = 0 Then Local $Index = SearchInArray($pLineChecks[$i]) If $Index > -1 Then $Index = ((StringInStr($FileArray[$Index -1], ';~ Description:', 2) > 0) ? ($Index -1) : ($Index)) $FileArray[$Index] = $LineChecks[$i][0] & $FileArray[$Index] & ((StringInStr($FileArray[$Index -1], ';~ Description:', 2) > 0) ? (@CRLF) : ('')) $change_some = True EndIf EndIf Next ;~ ConsoleWrite(_ArrayToString($FileArray, @CRLF)) If $change_some Then Local $NewFileName = ((StringInStr($FileName, "_Inscribe.au3", 2) > 0) ? ($FileName) : (StringTrimRight($FileName, 4) & "_Inscribe.au3")) Local $FileWriteFromArray = _FileWriteFromArray($NewFileName, $FileArray, 1) If $FileWriteFromArray = 0 Or @Error Then Exit EndIf Func SearchInArray($ToSearchFor = "") For $i = 1 TO $FileArray[0] If StringInStr($FileArray[$i], $ToSearchFor) Then Return $i Next Return -1 EndFunc