8,484
edits
Paradox-01 (talk | contribs)  (modify file via binary stream while patch data can be ASCII or byte array)  | 
				Paradox-01 (talk | contribs)  mNo edit summary  | 
				||
| Line 140: | Line 140: | ||
===modify file===  | ===modify file===  | ||
====binary====  | ====binary====  | ||
[[Image:Before_and_after_binary_patching_with_vbs.png|thumb|400px|Before and after patching.]]  | |||
Change FilePath and in case of binary patching use function "StringToByteArray".  | Change FilePath and in case of binary patching use function "StringToByteArray".  | ||
| Line 180: | Line 181: | ||
  OutputStream.Close  |   OutputStream.Close  | ||
  Set OutputStream = Nothing  |   Set OutputStream = Nothing  | ||
===Conversions===  | |||
====String -> byte array====  | |||
 function StringToByteArray(ThisString)  | |||
 	for i = 1 To Len(ThisString) Step 2  | |||
 		str = str & Chr("&h" & Mid(ThisString, i, 2))  | |||
 	next  | |||
 	Set stream = CreateObject("ADODB.Stream")  | |||
 	With stream  | |||
 		.Open  | |||
 		.CharSet = "Windows-1252"  | |||
 		.Type = 2  | |||
 			' ### 2 = text  | |||
 		.WriteText str  | |||
 		.Position = 0  | |||
 		.Type = 1  | |||
 			' ### 1 = binary  | |||
 		StringToByteArray = .Read  | |||
 		.Close  | |||
 	End With  | |||
 end function  | |||
 ' ### usage  | |||
 ByteArray = StringToByteArray(ThisString)  | |||
====Byte array -> string====  | |||
 Function ByteArrayToString(Binary)  | |||
   'Antonin Foller, http://www.motobit.com  | |||
   'Optimized version of a simple BinaryToString algorithm.  | |||
   Dim cl1, cl2, cl3, pl1, pl2, pl3  | |||
   Dim L  | |||
   cl1 = 1  | |||
   cl2 = 1  | |||
   cl3 = 1  | |||
   L = LenB(Binary)  | |||
   Do While cl1<=L  | |||
     pl3 = pl3 & Chr(AscB(MidB(Binary,cl1,1)))  | |||
     cl1 = cl1 + 1  | |||
     cl3 = cl3 + 1  | |||
     If cl3>300 Then  | |||
       pl2 = pl2 & pl3  | |||
       pl3 = ""  | |||
       cl3 = 1  | |||
       cl2 = cl2 + 1  | |||
       If cl2>200 Then  | |||
         pl1 = pl1 & pl2  | |||
         pl2 = ""  | |||
         cl2 = 1  | |||
       End If  | |||
     End If  | |||
   Loop  | |||
   BinaryToString = pl1 & pl2 & pl3  | |||
 End Function  | |||
 ' ### usage  | |||
 MyString = ByteArrayToString(ByteArray)  | |||
| Line 356: | Line 418: | ||
  	'qW = ... * -1  |   	'qW = ... * -1  | ||
  'set qRotation = XSIMath.CreateQuaternion (qW, qX, qY, qZ)  |   'set qRotation = XSIMath.CreateQuaternion (qW, qX, qY, qZ)  | ||
[[Category:Windows-only modding tools]]  | [[Category:Windows-only modding tools]]  | ||
edits