Jump to content

Mod Tool/Scripting: Difference between revisions

simplified two descriptions and added "check selection mode"
(simplified two descriptions and added "check selection mode")
Line 1: Line 1:
===General===
==General==
  logmessage license
  logmessage license
  logmessage version
  logmessage version
Line 11: Line 11:




====Variables====
===Variables===
=====Declaration=====
====Declaration====


In VBS, any new variable is of type "variant".
In VBS, any new variable is of type "variant".
Line 41: Line 41:




=====Global variables=====
====Global variables====
Any variable that gets defined outside a function or subroutine is a global variable.
Any variable that gets defined outside a function or subroutine is a global variable.


Line 84: Line 84:
  ' set value
  ' set value
  XSIUtils.Environment.Setitem "MyVar", "true"
  XSIUtils.Environment.Setitem "MyVar", "true"
' caution: it can't contain boolean values no matter if true and false were set in quotes or not


  ' get value
  ' get value
Line 92: Line 91:




=====Arrays=====
====Arrays====
An array is a variable that can contain multiple values, also named elements. VBS arrays are 0-based. For example MyArr(1) has 2 elements (one at index 0 and one at index 1).
An array is a variable that can contain multiple values, also named elements. VBS arrays are 0-based. For example MyArr(1) has 2 elements (one at index 0 and one at index 1).


Line 118: Line 117:
[...]
[...]


====Directories====
===Directories===
  logmessage XSIUtils.ResolvePath("$XSI_USERHOME/")
  logmessage XSIUtils.ResolvePath("$XSI_USERHOME/")
  ' directory to addons and exported resources
  ' directory to addons and exported resources
Line 136: Line 135:




====Message box====
===Message box===
  ' okay-only
  ' okay-only
  msgbox "message", 0, "title"
  msgbox "message", 0, "title"
Line 152: Line 151:




====Input box====
===Input box===
  MyVar = inputbox ("message", "title" , "pre-entered content")
  MyVar = inputbox ("message", "title" , "pre-entered content")
   
   
Line 163: Line 162:




====Check executable version====
===Check executable version===
  ' taking OniSplit as example
  ' taking OniSplit as example
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  Set objFSO = CreateObject("Scripting.FileSystemObject")
Line 172: Line 171:




===Build an vbs executable===
==Build an vbs executable==
[[Image:VbsEdit_for_scripting_and_compiling.png|thumb]]
[[Image:VbsEdit_for_scripting_and_compiling.png|thumb]]
Executable, app(lication), program. Whatever you call it, sometimes it might be necessary to compile the script into an actual program.
Executable, app(lication), program. Whatever you call it, sometimes it might be necessary to compile the script into an actual program.
Line 183: Line 182:




===OS bit version===
==OS bit version==
  if GetObject("winmgmts:root\cimv2:Win32_Processor='cpu0'").AddressWidth = 64 then
  if GetObject("winmgmts:root\cimv2:Win32_Processor='cpu0'").AddressWidth = 64 then
  logmessage "64"
  logmessage "64"
Line 199: Line 198:




===XSI/Softimage bit version===
==XSI/Softimage bit version==
  logmessage XSIUtils.ResolvePath("$XSI_CPU/")
  logmessage XSIUtils.ResolvePath("$XSI_CPU/")
  ' shows programm bit version
  ' shows programm bit version
Line 211: Line 210:




===Read registry===
==Read registry==
Mod Tool (because 32-bit) fails to execute following code properly on 64-bit operation systems.
Mod Tool (because 32-bit) fails to execute following code properly on 64-bit operation systems.


Line 228: Line 227:




===Read file===
==Read file==
====Binary====
===Binary===
  scan_AKEV_file_table
  scan_AKEV_file_table
   
   
Line 326: Line 325:




===Modify file===
==Modify file==
====Binary====
===Binary===
[[Image:Before_and_after_binary_patching_with_vbs.png|thumb|400px|Before and after patching.]]
[[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 371: Line 370:




===Conversions===
==Conversions==
====String -> byte array====
===String -> byte array===
  function StringToByteArray(ThisString)
  function StringToByteArray(ThisString)
  for i = 1 To Len(ThisString) Step 2
  for i = 1 To Len(ThisString) Step 2
Line 397: Line 396:




====Byte array -> string====
===Byte array -> string===
  Function ByteArrayToString(Binary)
  Function ByteArrayToString(Binary)
   'Antonin Foller, http://www.motobit.com
   'Antonin Foller, http://www.motobit.com
Line 432: Line 431:




===Math===
==Math==
====Euler rotation -> matrix====  
===Euler rotation -> matrix===
  function cosn (n)
  function cosn (n)
  cosn = cos(XSIMath.DegreesToRadians(n))
  cosn = cos(XSIMath.DegreesToRadians(n))
Line 480: Line 479:




====Matrix -> Euler rotation====
===Matrix -> Euler rotation===
  Function Atan2(y, x)
  Function Atan2(y, x)
   If x > 0 Then
   If x > 0 Then
Line 556: Line 555:




====Euler rotation -> quaternion====
===Euler rotation -> quaternion===
  dim x, y, z, dRotation, qRotation
  dim x, y, z, dRotation, qRotation
  x = 90
  x = 90
Line 582: Line 581:




====Quaternion -> Euler rotation====
===Quaternion -> Euler rotation===
  dim qW, qX, qY, qZ, qRotation, x, y, z
  dim qW, qX, qY, qZ, qRotation, x, y, z
   
   
Line 607: Line 606:
  'set qRotation = XSIMath.CreateQuaternion (qW, qX, qY, qZ)
  'set qRotation = XSIMath.CreateQuaternion (qW, qX, qY, qZ)


==Softimage-specific stuff==
===Check selection mode===
checkfilter
'use sub to make use of the exit command
sub checkfilter
Select Case Selection.Filter.Name
'caution: case-sensitive
Case "object"
logmessage "object mode"
Case "Edge"
logmessage "edge mode"
Case "Vertex"
logmessage "point mode"
Case "Polygon"
logmessage "polygon mode"
Case Else
logmessage "unknown mode"
exit sub
  End Select
end sub


===Property Page===
===Property Page===
Line 683: Line 704:


=====Checkbox=====
=====Checkbox=====
  ' create checkbox and remove key symboles by setting parameter "Animatable" to false (after siBool)
  ' create checkbox and remove key symboles by setting parameter "Animatable" to false or 0
  oPSet.AddParameter3 "Check1", siBool, 0, , , false
' CustomProperty.AddParameter3( ScriptName, ValueType, [DefaultValue], [Min], [Max], [Animatable], [ReadOnly] )
  oPSet.AddParameter3 "Check1", siBool, , , , 0, 0
  oPPGLayout.AddItem "Check1", "Checkbox_caption"
  oPPGLayout.AddItem "Check1", "Checkbox_caption"


8,323

edits