hello! id like to request a compatibility patch between the hud editor and desert ranger HUD whenever or if youre able to thanks in advance regardless of your response! ^^
Yo, are you an Indonesian? I saw one of the mod request named "kucingkucing" here, means cat-cat. Anyway intense Mute, thank you for the great work, I ask just a little bit mod tweak for project nevada to let me hold my weapon while sprinting, can you please kindly help bro?
I made custom icons for the Advanced Recon mod (it just always bothered me how out place they looked with the rest of the HUD). Still a bit of a WiP, (not sure if anyone would be interested).
But the source files are very low res. Do you know how to make it use higher res images, the same way quick throw stylized icons does?
Increasing the <width>64</width> <height>64</height> parameters let's me use a larger icon but it doesn't scale to the right size.
As a side not, just curious, what determines whether a mod requires and ESM vs ESP (like your Precise Radmeter), and is there functionally any difference for the end user?
e:Do you know if there's a tutorial somewhere for xml HUD editing? I'm afraid I have zero experience in parsing code.
"But why do I do it?" PreciseRadiation.esm and TheHUDEditor.esm do not have any master files connected to them , it doesn't need one because it doesn't change or read any other records (It is its own standalone mod). Therefore it is its own master, which is why I turn it into an ESM. Don't get me wrong, It could be an ESP and nothing would change, it is just the proper way of doing things.
&scale; is just an XML entity the game engine has set to be -1
A number of these XML entities are defined for commonly used constants, such as: &true; = 1 &false; = 0 &left; = 1 ¢er; = 2 &right; = 4
Probably a little advanced for you right now but I should also probably tell you that you can obtain Game Setting values this way too. For example, &iXPRewardPickLock; would obtain the game setting value for iXPRewardPickLock which would be 20.
This is just a very small request, sorry to be a bother since I don't know how to do this, but was wondering if you can just add a laser sight to this weapon mod? https://www.nexusmods.com/newvegas/mods/48099 Felt like it was a missing detail on this.
138 comments
Does the mod that adds ranks to intense training work with it? And is it even needed if you don't mind me asking?
So, you want one of my hidden mods? You can download it here.
But the source files are very low res. Do you know how to make it use higher res images, the same way quick throw stylized icons does?
This the AdvancedReconHUD.xml, for reference:
<_ARTNV_Version>2.2</_ARTNV_Version>
<_iHUD_ARTNVShow>1</_iHUD_ARTNVShow>
<_AdvReconNVSetting> 0 </_AdvReconNVSetting>
<_AdvReconTACSetting> 0 </_AdvReconTACSetting>
<_AdvReconShowPower> 0 </_AdvReconShowPower>
<_AdvReconCharge> 1 </_AdvReconCharge>
<_AdvReconECells> 0 </_AdvReconECells>
<_AdvReconEdit>0</_AdvReconEdit>
<_AdvReconX>0</_AdvReconX>
<_AdvReconY>0</_AdvReconY>
<_AdvReconAlpha>0</_AdvReconAlpha>
<_AdvReconOverlayAlpha>0</_AdvReconOverlayAlpha>
<_AdvReconNVColor>-1</_AdvReconNVColor>
<_AdvReconFilterAlpha>0</_AdvReconFilterAlpha>
<_AdvReconOverlayOffsetX>64</_AdvReconOverlayOffsetX>
<_AdvReconOverlayOffsetY>36</_AdvReconOverlayOffsetY>
<_AdvReconOverlayWidth>
<copy src="screen()" trait="width"/>
<add>
<copy src="io()" trait="_AdvReconOverlayOffsetX" />
<mult>2</mult>
</add>
</_AdvReconOverlayWidth>
<_AdvReconOverlayHeight>
<copy src="screen()" trait="height"/>
<add>
<copy src="io()" trait="_AdvReconOverlayOffsetY" />
<mult>2</mult>
</add>
</_AdvReconOverlayHeight>
<_AdvReconOverlayX>
<copy src="io()" trait="_AdvReconOverlayOffsetX" />
<mult>-1</mult>
</_AdvReconOverlayX>
<_AdvReconOverlayY>
<copy src="io()" trait="_AdvReconOverlayOffsetY" />
<mult>-1</mult>
</_AdvReconOverlayY>
<include src="AdvRecon\AdvReconSettings.xml" />
<rect name="AdvReconNVOverlay">
<x>0</x>
<y>0</y>
<image name="AdvReconNVOverlayImage">
<systemcolor> &nosystemcolor; </systemcolor>
<filename>AdvancedRecon\HUD\overlays\OccularOverlay.dds</filename>
<width><copy src="io()" trait="_AdvReconOverlayWidth"/></width>
<height><copy src="io()" trait="_AdvReconOverlayHeight"/></height>
<zoom>
<x>
<copy src="io()" trait="_AdvReconOverlayX"/>
</x>
<y>
<copy src="io()" trait="_AdvReconOverlayY"/>
</y>
<visible>&true;</visible>
<alpha><copy src="io()" trait="_AdvReconOverlayAlpha" /></alpha>
<zoom> &scale; </zoom>
<depth>-10</depth>
</image>
</rect>
<rect name="AdvReconNVFilterGreen">
<x>0</x>
<y>0</y>
<image name="AdvReconNVFilterGreenImage">
<systemcolor> &nosystemcolor; </systemcolor>
<filename>AdvancedRecon\HUD\filters\nvgreen.dds</filename>
<width><copy src="io()" trait="_AdvReconOverlayWidth"/></width>
<height><copy src="io()" trait="_AdvReconOverlayHeight"/></height>
<zoom>
<x>
<copy src="io()" trait="_AdvReconOverlayX"/>
</x>
<y>
<copy src="io()" trait="_AdvReconOverlayY"/>
</y>
<visible><copy src="io()" trait="_AdvReconNVColor" /><eq>0</eq></visible>
<alpha><copy src="io()" trait="_AdvReconFilterAlpha" /></alpha>
<zoom> &scale; </zoom>
<depth>-10</depth>
</image>
</rect>
<rect name="AdvReconNVFilterBlue">
<x>0</x>
<y>0</y>
<image name="AdvReconNVFilterBlueImage">
<systemcolor> &nosystemcolor; </systemcolor>
<filename>AdvancedRecon\HUD\filters\nvblue.dds</filename>
<width><copy src="io()" trait="_AdvReconOverlayWidth"/></width>
<height><copy src="io()" trait="_AdvReconOverlayHeight"/></height>
<zoom>
<x>
<copy src="io()" trait="_AdvReconOverlayX"/>
</x>
<y>
<copy src="io()" trait="_AdvReconOverlayY"/>
</y>
<visible><copy src="io()" trait="_AdvReconNVColor" /><eq>1</eq></visible>
<alpha><copy src="io()" trait="_AdvReconFilterAlpha" /></alpha>
<zoom> &scale; </zoom>
<depth>-1</depth>
</image>
</rect>
<rect name="AdvReconNVFilterRed">
<x>0</x>
<y>0</y>
<image name="AdvReconNVFilterRedImage">
<systemcolor> &nosystemcolor; </systemcolor>
<filename>AdvancedRecon\HUD\filters\nvred.dds</filename>
<width><copy src="io()" trait="_AdvReconOverlayWidth"/></width>
<height><copy src="io()" trait="_AdvReconOverlayHeight"/></height>
<zoom>
<x>
<copy src="io()" trait="_AdvReconOverlayX"/>
</x>
<y>
<copy src="io()" trait="_AdvReconOverlayY"/>
</y>
<visible><copy src="io()" trait="_AdvReconNVColor" /><eq>2</eq></visible>
<alpha><copy src="io()" trait="_AdvReconFilterAlpha" /></alpha>
<zoom> &scale; </zoom>
<depth>-1</depth>
</image>
</rect>
<rect name="AdvReconNV">
<id> &noglow_branch; </id>
<systemcolor>&hudmain;</systemcolor>
<x>
<copy src="io()" trait="_AdvReconDefaultX"/>
<add><copy src="io()" trait="_AdvReconX"/></add>
</x>
<y>
<copy src="io()" trait="_AdvReconDefaultY"/>
<add><copy src="io()" trait="_AdvReconY"/></add>
</y>
<alpha><copy src="io()" trait="_AdvReconAlpha" /></alpha>
<visible>
<copy src="io()" trait="_AdvReconEdit"/>
<or>
<copy src="ActionPoints" trait="visible" />
<and src="io()" trait="_iHUD_ARTNVShow" />
</or>
</visible>
<depth>1</depth>
<image name="AdvReconTACActiveIcon">
<filename>AdvancedRecon\HUD\AdvReconTACActive.dds</filename>
<texatlas> Interface\InterfaceShared.tai </texatlas>
<width>64</width>
<height>64</height>
<x>
<copy src="parent()" trait="x"/>
</x>
<y>
<copy src="parent()" trait="y"/>
</y>
<visible>
<copy src="io()" trait="_AdvReconTACSetting" />
<gt> 0 </gt>
<or>
<copy src="io()" trait="_AdvReconEdit"/>
</or>
</visible>
<alpha><copy src="parent()" trait="alpha" /></alpha>
</image>
<image name="AdvReconNVActiveIcon">
<filename>AdvancedRecon\HUD\AdvReconNVActive.dds</filename>
<texatlas> Interface\InterfaceShared.tai </texatlas>
<width>64</width>
<height>64</height>
<x>
<copy src="parent()" trait="x"/>
<add>75</add>
</x>
<y>
<copy src="parent()" trait="y"/>
</y>
<visible>
<copy src="io()" trait="_AdvReconNVSetting" />
<gt> 0 </gt>
<or>
<copy src="io()" trait="_AdvReconEdit"/>
</or>
</visible>
<alpha><copy src="parent()" trait="alpha" /></alpha>
</image>
<text name="AdvReconNVStatusDisplay">
<x>
<copy src="parent()" trait="x"/>
<add>110</add>
</x>
<y>
<copy src="parent()" trait="y"/>
<add>45</add>
</y>
<font>3</font>
<justify>¢er;</justify>
<string>OFF</string>
<visible>
<copy src="io()" trait="_AdvReconNVSetting"/>
<gt> 0 </gt>
<or>
<copy src="io()" trait="_AdvReconEdit"/>
</or>
</visible>
<alpha><copy src="parent()" trait="alpha" /></alpha>
<depth>2</depth>
</text>
<text name="AdvReconNVSettingDisplay">
<x>
<copy src="parent()" trait="x"/>
<add>122</add>
</x>
<y>
<copy src="parent()" trait="y"/>
<add>1</add>
</y>
<font>3</font>
<justify>¢er;</justify>
<string><copy src="io()" trait="_AdvReconNVSetting"/></string>
<visible>
<copy src="io()" trait="_AdvReconNVSetting"/>
<gt> 0 </gt>
<or>
<copy src="io()" trait="_AdvReconEdit"/>
</or>
</visible>
<alpha><copy src="parent()" trait="alpha" /></alpha>
<depth>2</depth>
</text>
<image name="AdvReconPowerActiveIcon">
<filename>AdvancedRecon\HUD\AdvReconPowerCell.dds</filename>
<texatlas> Interface\InterfaceShared.tai </texatlas>
<width>64</width>
<height>64</height>
<x>
<copy src="parent()" trait="x"/>
<add>145</add>
</x>
<y>
<copy src="parent()" trait="y"/>
<sub>5</sub>
</y>
<visible>
<copy src="io()" trait="_AdvReconShowPower" />
<gt> 0 </gt>
<or>
<copy src="io()" trait="_AdvReconEdit"/>
</or>
</visible>
<alpha><copy src="parent()" trait="alpha" /></alpha>
</image>
<text name="AdvReconChargeDisplay">
<x>
<copy src="parent()" trait="x"/>
<add>171</add>
</x>
<y>
<copy src="parent()" trait="y"/>
<add>44</add>
</y>
<font>3</font>
<justify>¢er;</justify>
<string><copy src="io()" trait="_AdvReconCharge"/></string>
<visible>
<copy src="io()" trait="_AdvReconShowPower"/>
<gt> 0 </gt>
<or>
<copy src="io()" trait="_AdvReconEdit"/>
</or>
</visible>
<alpha><copy src="parent()" trait="alpha" /></alpha>
<depth>2</depth>
</text>
<text name="AdvReconChargeDisplayPercent">
<x>
<copy src="parent()" trait="x"/>
<add>196</add>
</x>
<y>
<copy src="parent()" trait="y"/>
<add>44</add>
</y>
<font>3</font>
<justify>¢er;</justify>
<string>%</string>
<visible>
<copy src="io()" trait="_AdvReconShowPower"/>
<gt> 0 </gt>
<or>
<copy src="io()" trait="_AdvReconEdit"/>
</or>
</visible>
<alpha><copy src="parent()" trait="alpha" /></alpha>
<depth>2</depth>
</text>
<text name="AdvReconECellsDisplay">
<x>
<copy src="parent()" trait="x"/>
<add>183</add>
</x>
<y>
<copy src="parent()" trait="y"/>
</y>
<font>3</font>
<justify>¢er;</justify>
<string><copy src="io()" trait="_AdvReconECells"/></string>
<visible>
<copy src="io()" trait="_AdvReconShowPower"/>
<gt> 0 </gt>
<or>
<copy src="io()" trait="_AdvReconEdit"/>
</or>
</visible>
<alpha><copy src="parent()" trait="alpha" /></alpha>
<depth>2</depth>
</text>
<text name="AdvReconNoPower">
<systemcolor>&hudalt;</systemcolor>
<x>
<copy src="parent()" trait="x"/>
<add>102</add>
</x>
<y>
<copy src="parent()" trait="y"/>
<add>25</add>
</y>
<font>3</font>
<justify>¢er;</justify>
<string>NO ENERGY CELLS</string>
<visible>
<copy src="io()" trait="_AdvReconShowPower"/>
<gt> 0 </gt>
<and>
<copy src="io()" trait="_AdvReconECells"/><lt>1</lt>
</and>
<and>
<copy src="io()" trait="_AdvReconCharge"/><lt>1</lt>
</and>
</visible>
<alpha><copy src="parent()" trait="alpha" /></alpha>
<depth>2</depth>
</text>
</rect>
And the xml file from stylized quickthrow, if that's of use
<rect name="xlrQT">
<visible>0</visible>
<alpha>255</alpha>
<_ScreenWidth><copy src="screen()" trait="width"/></_ScreenWidth>
<_ScreenHeight><copy src="screen()" trait="height"/></_ScreenHeight>
<image name="xlrQTIcon">
<filename> interface\xlrQT\empty.dds </filename>
<depth> 0 </depth>
<width> 64 </width>
<height><copy src="me" trait="width" /></height>
<zoom> &scale; </zoom>
<x>1230</x>
<y>843</y>
<alpha> <copy src="parent()" trait="alpha"/> </alpha>
<systemcolor>1</systemcolor>
</image>
<text name="xlrQTString">
<depth> 3 </depth>
<x> <copy src="sibling(xlrQTIcon)" trait="x" /><add><copy src="sibling(xlrQTIcon)" trait="width" /></add><add>8</add></x>
<y> <copy src="sibling(xlrQTIcon)" trait="y" /><add><copy src="sibling(xlrQTIcon)" trait="height" /></add></y>
<string><copy src="io()" trait="_xlrQTString" /></string>
<justify>&right;</justify>
<alpha> <copy src="parent()" trait="alpha"/> </alpha>
<systemcolor>1</systemcolor>
<font> <copy src="io()" trait="_HUDMeterFont" /> </font>
</text>
<_ChargePercent>0</_ChargePercent>
<_ChargeFull><copy src="me()" trait="_ChargePercent"/><mul>15.3</mul></_ChargeFull>
<image name="xlrQTRect">
<filename> interface\xlrQT\circgaug1.dds </filename>
<depth> 0 </depth>
<width> 100 </width>
<height><copy src="me" trait="width" /></height>
<zoom> &scale; </zoom>
<_xC> <copy src="screen()" trait="width"/> <sub src="me()" trait="width"/> <div> 2 </div> </_xC>
<_yC> <copy src="screen()" trait="height"/> <sub src="me()" trait="height"/> <div> 2 </div> </_yC>
<x>0</x>
<y>0</y>
<_ChargePercent><copy src="parent()" trait="_ChargeFull"/></_ChargePercent>
<alpha>
<copy> 0 </copy>
<add>
<copy src="me()" trait="_ChargePercent"/>
<onlyif>
<copy src="me()" trait="_ChargePercent"/>
<lt>255</lt>
</onlyif>
<onlyif>
<copy src="me()" trait="_ChargePercent"/>
<gt>0</gt>
</onlyif>
</add>
<add>
<copy> 255 </copy>
<onlyif>
<copy src="me()" trait="_ChargePercent"/>
<gt>255</gt>
</onlyif>
</add>
</alpha>
<brightness> 255 </brightness>
</image>
<image name="xlrQTRect2">
<filename> interface\xlrQT\circgaug2.dds </filename>
<depth> 0 </depth>
<width> 100 </width>
<height><copy src="me" trait="width" /></height>
<zoom> &scale; </zoom>
<x><copy src="sibling(xlrQTRect)" trait="x" /></x>
<y><copy src="sibling(xlrQTRect)" trait="y" /></y>
<_ChargePercent><copy src="parent()" trait="_ChargeFull"/><sub>255</sub></_ChargePercent>
<alpha>
<copy> 0 </copy>
<add>
<copy src="me()" trait="_ChargePercent"/>
<onlyif>
<copy src="me()" trait="_ChargePercent"/>
<lt>255</lt>
</onlyif>
<onlyif>
<copy src="me()" trait="_ChargePercent"/>
<gt>0</gt>
</onlyif>
</add>
<add>
<copy> 255 </copy>
<onlyif>
<copy src="me()" trait="_ChargePercent"/>
<gt>255</gt>
</onlyif>
</add>
<brightness> 264 </brightness>
</image>
<image name="xlrQTRect3">
<filename> interface\xlrQT\circgaug3.dds </filename>
<depth> 0 </depth>
<width> 100 </width>
<height><copy src="me" trait="width" /></height>
<zoom> &scale; </zoom>
<x><copy src="sibling(xlrQTRect)" trait="x" /></x>
<y><copy src="sibling(xlrQTRect)" trait="y" /></y>
<_ChargePercent><copy src="parent()" trait="_ChargeFull"/><sub>510</sub></_ChargePercent>
<alpha>
<copy> 0 </copy>
<add>
<copy src="me()" trait="_ChargePercent"/>
<onlyif>
<copy src="me()" trait="_ChargePercent"/>
<lt>255</lt>
</onlyif>
<onlyif>
<copy src="me()" trait="_ChargePercent"/>
<gt>0</gt>
</onlyif>
</add>
<add>
<copy> 255 </copy>
<onlyif>
<copy src="me()" trait="_ChargePercent"/>
<gt>255</gt>
</onlyif>
</add>
</alpha>
<brightness> 273 </brightness>
</image>
<image name="xlrQTRect4">
<filename> interface\xlrQT\circgaug4.dds </filename>
<depth> 0 </depth>
<width> 100 </width>
<height><copy src="me" trait="width" /></height>
<zoom> &scale; </zoom>
<x><copy src="sibling(xlrQTRect)" trait="x" /></x>
<y><copy src="sibling(xlrQTRect)" trait="y" /></y>
<_ChargePercent><copy src="parent()" trait="_ChargeFull"/><sub>765</sub></_ChargePercent>
<alpha>
<copy> 0 </copy>
<add>
<copy src="me()" trait="_ChargePercent"/>
<onlyif>
<copy src="me()" trait="_ChargePercent"/>
<lt>255</lt>
</onlyif>
<onlyif>
<copy src="me()" trait="_ChargePercent"/>
<gt>0</gt>
</onlyif>
</add>
<add>
<copy> 255 </copy>
<onlyif>
<copy src="me()" trait="_ChargePercent"/>
<gt>255</gt>
</onlyif>
</add>
</alpha>
<brightness> 282 </brightness>
</image>
<image name="xlrQTRect5">
<filename> interface\xlrQT\circgaug5.dds </filename>
<depth> 0 </depth>
<width> 100 </width>
<height><copy src="me" trait="width" /></height>
<zoom> &scale; </zoom>
<x><copy src="sibling(xlrQTRect)" trait="x" /></x>
<y><copy src="sibling(xlrQTRect)" trait="y" /></y>
<_ChargePercent><copy src="parent()" trait="_ChargeFull"/><sub>1020</sub></_ChargePercent>
<alpha>
<copy> 0 </copy>
<add>
<copy src="me()" trait="_ChargePercent"/>
<onlyif>
<copy src="me()" trait="_ChargePercent"/>
<lt>255</lt>
</onlyif>
<onlyif>
<copy src="me()" trait="_ChargePercent"/>
<gt>0</gt>
</onlyif>
</add>
<add>
<copy> 255 </copy>
<onlyif>
<copy src="me()" trait="_ChargePercent"/>
<gt>255</gt>
</onlyif>
</add>
</alpha>
<brightness> 291 </brightness>
</image>
<image name="xlrQTRect6">
<filename> interface\xlrQT\circgaug6.dds </filename>
<depth> 0 </depth>
<width> 100 </width>
<height><copy src="me" trait="width" /></height>
<zoom> &scale; </zoom>
<x><copy src="sibling(xlrQTRect)" trait="x" /></x>
<y><copy src="sibling(xlrQTRect)" trait="y" /></y>
<_ChargePercent><copy src="parent()" trait="_ChargeFull"/><sub>1275</sub></_ChargePercent>
<alpha>
<copy> 0 </copy>
<add>
<copy src="me()" trait="_ChargePercent"/>
<onlyif>
<copy src="me()" trait="_ChargePercent"/>
<lt>255</lt>
</onlyif>
<onlyif>
<copy src="me()" trait="_ChargePercent"/>
<gt>0</gt>
</onlyif>
</add>
<add>
<copy> 255 </copy>
<onlyif>
<copy src="me()" trait="_ChargePercent"/>
<gt>255</gt>
</onlyif>
</add>
</alpha>
<brightness> 300 </brightness>
</image>
</rect>
<image name="xlrQTReturnIcon">
<visible>0</visible>
<filename> interface\xlrQT\ReturnToSender.dds </filename>
<depth> 0 </depth>
<width> 100 </width>
<height><copy src="me" trait="width" /></height>
<zoom> &scale; </zoom>
<x> <copy src="screen()" trait="width"/> <sub src="me()" trait="width"/> <div> 2 </div></x>
<y> <copy src="screen()" trait="height"/> <sub src="me()" trait="height"/> <div> 2 </div><add>235</add></y>
<alpha> 255 </alpha>
<systemcolor>1</systemcolor>
</image>
Increasing the <width>64</width> <height>64</height> parameters let's me use a larger icon but it doesn't scale to the right size.
As a side not, just curious, what determines whether a mod requires and ESM vs ESP (like your Precise Radmeter), and is there functionally any difference for the end user?
e:Do you know if there's a tutorial somewhere for xml HUD editing? I'm afraid I have zero experience in parsing code.
See "https://wiki.nexusmods.com/index.php/Getting_started_creating_mods_using_GECK#ESM_and_ESP_Files" to get a better understanding.
"But why do I do it?"
PreciseRadiation.esm and TheHUDEditor.esm do not have any master files connected to them , it doesn't need one because it doesn't change or read any other records (It is its own standalone mod). Therefore it is its own master, which is why I turn it into an ESM.
Don't get me wrong, It could be an ESP and nothing would change, it is just the proper way of doing things.
See "https://wiki.nexusmods.com/index.php/Getting_started_creating_mods_using_GECK#XML".
Any other info will require you to learn like how I did, by studying how other people write their xml files.
<zoom> &scale;</zoom> also worked in place of -1, but I don't know what that's supposed to do.
And thanks for the link to the wiki resources. The LoversLab overview of xml looks especially helpful.
A number of these XML entities are defined for commonly used constants, such as:
&true; = 1
&false; = 0
&left; = 1
¢er; = 2
&right; = 4
Probably a little advanced for you right now but I should also probably tell you that you can obtain Game Setting values this way too.
For example, &iXPRewardPickLock; would obtain the game setting value for iXPRewardPickLock which would be 20.
https://www.nexusmods.com/newvegas/mods/48099
Felt like it was a missing detail on this.
Try the forums here for people with a broader range of talents.