Advertisement
expired6978

Untitled

May 29th, 2013
449
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.66 KB | None | 0 0
  1. Scriptname RaceMenuOverlays extends RaceMenuBase
  2.  
  3. int Property TINT_TYPE_BODYPAINT = 256 AutoReadOnly
  4. int Property TINT_TYPE_HANDPAINT = 257 AutoReadOnly
  5. int Property TINT_TYPE_FEETPAINT = 258 AutoReadOnly
  6.  
  7. Event OnStartup()
  8. parent.OnStartup()
  9. RegisterForModEvent("RSM_OverlayTextureChange", "OnOverlayTextureChange")
  10. RegisterForModEvent("RSM_OverlayColorChange", "OnOverlayColorChange")
  11. EndEvent
  12.  
  13. Event OnMenuInitialized(string eventName, string strArg, float numArg, Form formArg)
  14. parent.OnMenuInitialized(eventName, strArg, numArg, formArg)
  15. UpdateOverlays()
  16. EndEvent
  17.  
  18. Event OnMenuReinitialized(string eventName, string strArg, float numArg, Form formArg)
  19. parent.OnMenuReinitialized(eventName, strArg, numArg, formArg)
  20. UpdateOverlays()
  21. EndEvent
  22.  
  23. Function UpdateOverlays()
  24. If SKSE.GetPluginVersion("NiOverride") >= 1 ; Checks to make sure the NiOverride plugin exists
  25. int i = 0
  26. string[] tints = new string[128]
  27. int totalTints = NiOverride.GetNumBodyOverlays()
  28. bool isFemale = _playerActorBase.GetSex() as bool
  29. While i < totalTints
  30. int rgb = NiOverride.GetNodePropertyInt(_playerActor, isFemale, "Body [Ovl" + i + "]", 7, -1)
  31. float alpha = NiOverride.GetNodePropertyFloat(_playerActor, isFemale, "Body [Ovl" + i + "]", 8, -1)
  32. string texture = NiOverride.GetNodePropertyString(_playerActor, isFemale, "Body [Ovl" + i + "]", 9, 0)
  33. int color = Math.LogicalOr(Math.LogicalAnd(rgb, 0xFFFFFF), Math.LeftShift((alpha * 255) as Int, 24))
  34. tints[i] = TINT_TYPE_BODYPAINT + ";;" + color + ";;" + texture
  35. i += 1
  36. EndWhile
  37. UI.InvokeStringA(RACESEX_MENU, MENU_ROOT + "RSM_AddBodyTints", tints)
  38.  
  39. i = 0
  40. tints = new string[128]
  41. totalTints = NiOverride.GetNumHandOverlays()
  42. While i < totalTints
  43. int rgb = NiOverride.GetNodePropertyInt(_playerActor, isFemale, "Hand [Ovl" + i + "]", 7, -1)
  44. float alpha = NiOverride.GetNodePropertyFloat(_playerActor, isFemale, "Hand [Ovl" + i + "]", 8, -1)
  45. string texture = NiOverride.GetNodePropertyString(_playerActor, isFemale, "Hand [Ovl" + i + "]", 9, 0)
  46. int color = Math.LogicalOr(Math.LogicalAnd(rgb, 0xFFFFFF), Math.LeftShift((alpha * 255) as Int, 24))
  47. tints[i] = TINT_TYPE_HANDPAINT + ";;" + color + ";;" + texture
  48. i += 1
  49. EndWhile
  50. UI.InvokeStringA(RACESEX_MENU, MENU_ROOT + "RSM_AddHandTints", tints)
  51.  
  52. i = 0
  53. tints = new string[128]
  54. totalTints = NiOverride.GetNumFeetOverlays()
  55. While i < totalTints
  56. int rgb = NiOverride.GetNodePropertyInt(_playerActor, isFemale, "Feet [Ovl" + i + "]", 7, -1)
  57. float alpha = NiOverride.GetNodePropertyFloat(_playerActor, isFemale, "Feet [Ovl" + i + "]", 8, -1)
  58. string texture = NiOverride.GetNodePropertyString(_playerActor, isFemale, "Feet [Ovl" + i + "]", 9, 0)
  59. int color = Math.LogicalOr(Math.LogicalAnd(rgb, 0xFFFFFF), Math.LeftShift((alpha * 255) as Int, 24))
  60. tints[i] = TINT_TYPE_FEETPAINT + ";;" + color + ";;" + texture
  61. i += 1
  62. EndWhile
  63. UI.InvokeStringA(RACESEX_MENU, MENU_ROOT + "RSM_AddFeetTints", tints)
  64. Endif
  65. EndFunction
  66.  
  67. Event OnOverlayColorChange(string eventName, string strArg, float numArg, Form formArg)
  68. int color = strArg as int
  69. int arg = numArg as int
  70. int type = arg / 1000
  71. int index = arg - (type * 1000)
  72.  
  73. string nodeName = ""
  74. If type == TINT_TYPE_BODYPAINT
  75. nodeName += "Body [Ovl"
  76. Elseif type == TINT_TYPE_HANDPAINT
  77. nodeName += "Hand [Ovl"
  78. Elseif type == TINT_TYPE_FEETPAINT
  79. nodeName += "Feet [Ovl"
  80. Endif
  81. nodeName += index + "]"
  82.  
  83. bool isFemale = _playerActorBase.GetSex() as bool
  84. If SKSE.GetPluginVersion("NiOverride") >= 1 ; Checks to make sure the NiOverride plugin exists
  85. int alpha = Math.RightShift(color, 24)
  86. NiOverride.AddNodeOverrideInt(_playerActor, isFemale, nodeName, 7, -1, color, true) ; Set the tint color
  87. NiOverride.AddNodeOverrideFloat(_playerActor, isFemale, nodeName, 8, -1, alpha / 255.0, true) ; Set the alpha
  88. Endif
  89. EndEvent
  90.  
  91. Event OnOverlayTextureChange(string eventName, string strArg, float numArg, Form formArg)
  92. string texture = strArg
  93. int arg = numArg as int
  94. int type = arg / 1000
  95. int index = arg - (type * 1000)
  96.  
  97. string nodeName = ""
  98. If type == TINT_TYPE_BODYPAINT
  99. nodeName += "Body [Ovl"
  100. Elseif type == TINT_TYPE_HANDPAINT
  101. nodeName += "Hand [Ovl"
  102. Elseif type == TINT_TYPE_FEETPAINT
  103. nodeName += "Feet [Ovl"
  104. Endif
  105. nodeName += index + "]"
  106.  
  107. bool isFemale = _playerActorBase.GetSex() as bool
  108. If SKSE.GetPluginVersion("NiOverride") >= 1
  109. NiOverride.AddNodeOverrideString(_playerActor, isFemale, nodeName, 9, 0, texture, true) ; Set the tint color
  110. Endif
  111. EndEvent
  112.  
  113. Event OnBodyPaintRequest()
  114. AddBodyPaint("Default", "Actors\\Character\\Overlays\\default.dds")
  115. AddBodyPaint("Female Tattoo 0", "Actors\\Character\\Overlays\\FemaleBodyTattoo_0.dds")
  116. AddBodyPaint("Male Tattoo 0", "Actors\\Character\\Overlays\\MaleBodyTattoo_0.dds")
  117. AddBodyPaint("Male Tattoo 1", "Actors\\Character\\Overlays\\MaleBodyTattoo_1.dds")
  118. AddBodyPaint("Male Tattoo 2", "Actors\\Character\\Overlays\\MaleBodyTattoo_2.dds")
  119. AddBodyPaint("Male Tattoo 3", "Actors\\Character\\Overlays\\MaleBodyTattoo_3.dds")
  120. AddBodyPaint("Male Tattoo 4", "Actors\\Character\\Overlays\\MaleBodyTattoo_4.dds")
  121. AddBodyPaint("Male Tattoo 5", "Actors\\Character\\Overlays\\MaleBodyTattoo_5.dds")
  122. AddBodyPaint("Male Tattoo 6", "Actors\\Character\\Overlays\\MaleBodyTattoo_6.dds")
  123. AddBodyPaint("Male Tattoo 7", "Actors\\Character\\Overlays\\MaleBodyTattoo_7.dds")
  124. EndEvent
  125.  
  126. Event OnHandPaintRequest()
  127. AddHandPaint("Default", "Actors\\Character\\Overlays\\default.dds")
  128. AddHandPaint("Nail Paint 0", "Actors\\Character\\Overlays\\FemaleHands_0.dds")
  129. EndEvent
  130.  
  131. Event OnFeetPaintRequest()
  132. AddFeetPaint("Default", "Actors\\Character\\Overlays\\default.dds")
  133. EndEvent
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement