Ralle1976

GWA2-Inscription-Update Example by Ralle1976

Sep 23rd, 2016
406
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 4.33 KB | None | 0 0
  1. #include <Array.au3>
  2. #include <File.au3>
  3. #include <String.au3>
  4.  
  5. ;Declaring an enum and filling an array so it's easier to compare items instead of large strings.
  6. Local Enum $DecVars, $SetValue, $DllStructSet, $Scan, $Function
  7. Local $FileArray
  8. Local $LineChecks[5][2]
  9.  
  10. $LineChecks[$DecVars][0] =  @CRLF & ";======================================================================" & _
  11.         @CRLF & "Global $mUpgradeItem = DllStructCreate('ptr;dword;dword;dword;dword')" & _
  12.         @CRLF & "Global $mUpgradeItemPtr = DllStructGetPtr($mUpgradeItem)" & _
  13.         @CRLF &";======================================================================" & @CRLF
  14. $LineChecks[$DecVars][1] =  "Global $mUpgradeItem = DllStructCreate('ptr;dword;"
  15.  
  16. $LineChecks[$SetValue][0] =     "   ;======================================================================" & _
  17.         @CRLF & "   SetValue('UpgradeItemFunction','0x004574D0')" & _
  18.         @CRLF & "   ;======================================================================" & @CRLF
  19. $LineChecks[$SetValue][1] =     "SetValue('UpgradeItemFunction','0x004574D0')"
  20.  
  21. $LineChecks[$DllStructSet][0] =     "   ;======================================================================" & _
  22.         @CRLF & "   DllStructSetData($mUpgradeItem, 1, GetValue('CommandUpgradeItem'))" & _
  23.         @CRLF & "   ;======================================================================" & @CRLF
  24. $LineChecks[$DllStructSet][1] =     "DllStructSetData($mUpgradeItem, 1, GetValue('CommandUpgradeItem'))"
  25.  
  26. $LineChecks[$Scan][0] =     "   ;======================================================================" & _
  27.         @CRLF & "   _('ScanUpgradeFunction:')" & _
  28.         @CRLF & "   AddPattern('8B410C568B71088B')" & _
  29.         @CRLF & "   ;======================================================================" & @CRLF
  30. $LineChecks[$Scan][1] =     "_('ScanUpgradeFunction:')"
  31.  
  32. $LineChecks[$Function][0] =     ";======================================================================" & _
  33.         @CRLF & @CRLF & ";~ Description: Applies a mod to an item." & _
  34.         @CRLF & "Func UpgradeItem($aWeaponItemId,$aModItemId,$aModType)" & _
  35.         @CRLF & "   DllStructSetData($mUpgradeItem,2,0)" & _
  36.         @CRLF & "   DllStructSetData($mUpgradeItem,3,$aModType)" & _
  37.         @CRLF & "   DllStructSetData($mUpgradeItem,4,$aWeaponItemId)" & _
  38.         @CRLF & "   DllStructSetData($mUpgradeItem,5,$aModItemId)" & _
  39.         @CRLF & @CRLF & "   Enqueue($mUpgradeItemPtr,0x14)" & _
  40.         @CRLF & @CRLF & "   sleep(2000)" & _
  41.         @CRLF & "   sendpacket(0x4, 0x7C)" & _
  42.         @CRLF & "EndFunc   ;==>UpgradeItem" & _
  43.         @CRLF & ";======================================================================" & @CRLF & @CRLF
  44. $LineChecks[$Function][1] =     "Func UpgradeItem("
  45.  
  46. ;Filling a second array with enum values to get prior lines
  47. Local $pLineChecks[5]
  48. $pLineChecks[$DecVars] =    "Local $mMakeAgentArrayPtr = DllStructGetPtr($mMakeAgentArray)"
  49. $pLineChecks[$SetValue] =   "SetValue('ClickToMoveFix', '0x' & Hex(GetScannedAddress(";edit that
  50. $pLineChecks[$DllStructSet] =   "DllStructSetData($mMakeAgentArray, 1, GetValue('CommandMakeAgentArray'))"
  51. $pLineChecks[$Scan] =   "_('ScanClickToMoveFix:')"
  52. $pLineChecks[$Function] =   "Func SalvageMod"
  53.  
  54. ;Grabbing the file
  55. Local $FileName = FileOpenDialog("Open", @ScriptDir, "Autoit (*.au3)")
  56. IF @error Then Exit
  57. Local $____String__to_Search = StringReplace(FileRead($FileName), @CRLF, " ")
  58. Local $FileReadToArray = _FileReadToArray($FileName, $FileArray, 1)
  59. IF $FileReadToArray = 0 Or @error Then Exit
  60. Local $change_some = False
  61. For $i = 0 To 4
  62.     If StringInStr($____String__to_Search, $LineChecks[$i][1], 2)  = 0 Then
  63.         Local $Index = SearchInArray($pLineChecks[$i])
  64.         If $Index > -1 Then
  65.             $Index = ((StringInStr($FileArray[$Index -1], ';~ Description:', 2) > 0) ? ($Index -1) : ($Index))
  66.             $FileArray[$Index] = $LineChecks[$i][0] & $FileArray[$Index] & ((StringInStr($FileArray[$Index -1], ';~ Description:', 2) > 0) ? (@CRLF) : (''))
  67.             $change_some = True
  68.         EndIf
  69.     EndIf
  70. Next
  71. ;~ ConsoleWrite(_ArrayToString($FileArray, @CRLF))
  72. If $change_some Then
  73.     Local $NewFileName = ((StringInStr($FileName,  "_Inscribe.au3", 2) > 0) ? ($FileName) : (StringTrimRight($FileName, 4) & "_Inscribe.au3"))
  74.     Local $FileWriteFromArray = _FileWriteFromArray($NewFileName, $FileArray, 1)
  75.     If $FileWriteFromArray = 0 Or @Error Then Exit
  76. EndIf
  77.  
  78. Func SearchInArray($ToSearchFor = "")
  79. For $i = 1 TO $FileArray[0]
  80.     If StringInStr($FileArray[$i], $ToSearchFor) Then Return $i
  81. Next
  82. Return -1
  83. EndFunc
Advertisement