#include <Array.au3>
#include <File.au3>
#include <String.au3>
;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
Comments
0 B
|👍
/👎
0 B
|👍
/👎