Changing the HUD with Interface Designer. Is it possible?

Give your feedback about the Interface Designer in this section

Moderator: NADEO

User avatar
Mandark
Posts: 1297
Joined: 15 Jul 2010, 17:58
Location: Romania

Changing the HUD with Interface Designer. Is it possible?

Post by Mandark »

I want to know if it is possible to change the HUD of the game in a title pack, and if it is possible, how do I do it?
I managed to understand the basics of the interface designer and learned how to make a menu, but I couldn't find any options for in-game HUD.

I have a TrackMania title and I want to make the timer (and the speedometer) green. :mrgreen:
Specs
Motherboard: Asus ROG Maximus VII Formula
CPU: Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz (8 CPUs), ~4.0GHz
GPU: Nvidia GeForce GTX 980 Ti
RAM: 16GB
Operating System: Windows 10 Pro
User avatar
Dommy
Translator
Translator
Posts: 1901
Joined: 25 Aug 2011, 21:45
Location: Poland
Contact:

Re: Changing the HUD with Interface Designer. Is it possible

Post by Dommy »

Interface Designer is completely other world than ingame HUD. :mrgreen:

You need to do a custom mode (can be modified time attack) with your own HUD as an interface layer (best attached to global UI). There is source of scriped version of the default speed and distance meter in UI library used in all scripted TrackMania modes by Nadeo (I cut it to the most important things):

Code: Select all

Text SpeedAndDistance() {
	return """
<manialink version="1" name="Lib_UI:SpeedAndDistance">
<frame posn="158 -79.5 5" id="Frame_Global">
	<format textemboss="1" />
	<label posn="-6 0" sizen="30 6" halign="right" valign="bottom" style="TextRaceChrono" textsize="2" text="0" id="Label_Distance" />
	<label posn="0 0" sizen="8 6" halign="right" valign="bottom" textsize="1" textemboss="0" text="m" />
	<label posn="0 -10" sizen="30 6" halign="right" valign="bottom" style="TextRaceChrono" textsize="8" text="0" id="Label_Speed" />
</frame>
<script><!--
#Include "TextLib" as TL
#Include "MathLib" as ML

main() {
	declare Frame_Global	<=> (Page.GetFirstChild("Frame_Global")		as CMlFrame);
	declare Label_Distance	<=> (Page.GetFirstChild("Label_Distance")	as CMlLabel);
	declare Label_Speed		<=> (Page.GetFirstChild("Label_Speed")		as CMlLabel);
	
	while (True) {
		yield;
		
		Frame_Global.Visible = (InputPlayer != Null && InputPlayer.IsSpawned);
		if (!Frame_Global.Visible) continue;

		Label_Distance.Value = TL::ToText(ML::FloorInteger(InputPlayer.Distance));
		Label_Speed.Value = TL::ToText(ML::FloorInteger(InputPlayer.Speed * 3.6));
	}
}
--></script>
</manialink>""";
}
Then only need to include Layers2 library in the mode and attach a layer to the global UI:

Code: Select all

In the top of the script:
#Include "Libs/Nadeo/Layers2.Script.txt" as Layers

Inside ***StartServer*** label (when using a script running on ModeBase):
Layers::Create("Speedometer", SpeedAndDistance());
Layers::Attach("Speedometer");
UIManager.UIAll.OverlayHideSpeedAndDist = True; ///< Hides default speedometer
Important: If the mode uses UI library, call the《UI::UnloadModule("SpeedAndDistance");》after attaching the layer or just remove "SpeedAndDistance" from "UI::Load([...]);".

More! You can also use the UI library to modify visibility and positions of various elements on the screen, for example the Chrono. Just use《UI::SetModulePosition("ModuleName", <0., 0., 0.>);》or《UI::SetModuleVisibility("ModuleName", False);》.

To be honest, I modified the source code of the UI library to make interface for my Turbo title pack with some extra position changes :D .
Ryzen 7 2700X, GTX 1070 Ti, 16 GB RAM, Windows 10 Insider Build
FORUM MODERATOR • CREATOR OF SHOOTMANIA GALAXY & TRACKMANIA² PURSUIT

Contact me via GALAXY & PURSUIT DISCORD
User avatar
Mandark
Posts: 1297
Joined: 15 Jul 2010, 17:58
Location: Romania

Re: Changing the HUD with Interface Designer. Is it possible

Post by Mandark »

Thanks a lot for your reply man :D
I was indeed suspecting it had to do with gamemodes.

For what I need to do, all it takes is changing « style="TextRaceChrono" » to something else.

EDIT: Sorry if i'm being a noob, but where can I find the default Time attack gamemode? :mrgreen:
Specs
Motherboard: Asus ROG Maximus VII Formula
CPU: Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz (8 CPUs), ~4.0GHz
GPU: Nvidia GeForce GTX 980 Ti
RAM: 16GB
Operating System: Windows 10 Pro
User avatar
Dommy
Translator
Translator
Posts: 1901
Joined: 25 Aug 2011, 21:45
Location: Poland
Contact:

Re: Changing the HUD with Interface Designer. Is it possible

Post by Dommy »

TimeAttack.Script.txt in mode selection? :mrgreen:
Ryzen 7 2700X, GTX 1070 Ti, 16 GB RAM, Windows 10 Insider Build
FORUM MODERATOR • CREATOR OF SHOOTMANIA GALAXY & TRACKMANIA² PURSUIT

Contact me via GALAXY & PURSUIT DISCORD
User avatar
Mandark
Posts: 1297
Joined: 15 Jul 2010, 17:58
Location: Romania

Re: Changing the HUD with Interface Designer. Is it possible

Post by Mandark »

When I click "Test map with mode" it tells me I need to validate the map (but the map is already validated)
Specs
Motherboard: Asus ROG Maximus VII Formula
CPU: Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz (8 CPUs), ~4.0GHz
GPU: Nvidia GeForce GTX 980 Ti
RAM: 16GB
Operating System: Windows 10 Pro
User avatar
Dommy
Translator
Translator
Posts: 1901
Joined: 25 Aug 2011, 21:45
Location: Poland
Contact:

Re: Changing the HUD with Interface Designer. Is it possible

Post by Dommy »

Hmm, weird. It's not a problem of the mode, rather editor has something invalid. But to be sure, remove this line from Time Attack script:

Code: Select all

#Const CompatibleMapTypes "Race"
799th post xD
Ryzen 7 2700X, GTX 1070 Ti, 16 GB RAM, Windows 10 Insider Build
FORUM MODERATOR • CREATOR OF SHOOTMANIA GALAXY & TRACKMANIA² PURSUIT

Contact me via GALAXY & PURSUIT DISCORD
User avatar
Mandark
Posts: 1297
Joined: 15 Jul 2010, 17:58
Location: Romania

Re: Changing the HUD with Interface Designer. Is it possible

Post by Mandark »

First of all I'm so sorry for being so noobish. I have very little experience with maniascript^^

What I want to do is to use the "Test map with gamemode" function to edit the TimeAttack script in-game. However it doesn't allow me to do this and tells me that I need to validate the map (even though the map is already validated)
Specs
Motherboard: Asus ROG Maximus VII Formula
CPU: Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz (8 CPUs), ~4.0GHz
GPU: Nvidia GeForce GTX 980 Ti
RAM: 16GB
Operating System: Windows 10 Pro
User avatar
Dommy
Translator
Translator
Posts: 1901
Joined: 25 Aug 2011, 21:45
Location: Poland
Contact:

Re: Changing the HUD with Interface Designer. Is it possible

Post by Dommy »

I understand that you're not expirenced, but I can't find what can be wrong, disallowing test map with mode in this case. :?

800th post, gg me
Ryzen 7 2700X, GTX 1070 Ti, 16 GB RAM, Windows 10 Insider Build
FORUM MODERATOR • CREATOR OF SHOOTMANIA GALAXY & TRACKMANIA² PURSUIT

Contact me via GALAXY & PURSUIT DISCORD
User avatar
Mandark
Posts: 1297
Joined: 15 Jul 2010, 17:58
Location: Romania

Re: Changing the HUD with Interface Designer. Is it possible

Post by Mandark »

Alright, I am going to modify the gamemode from outside the game and just add the script in the TP when it's done.

I have the following scripts:

Layers2.Script.txt
TimeAttack.Script.txt
UI.Script.txt

I have modified the UI.Script.txt file and have modified everything I wanted, but I am not sure what to do next. I want to implement this UI in the TA script.

NOTE: All I want to do is to replace the color of the already existing TM2 hud, not come up with something brand new :D
Specs
Motherboard: Asus ROG Maximus VII Formula
CPU: Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz (8 CPUs), ~4.0GHz
GPU: Nvidia GeForce GTX 980 Ti
RAM: 16GB
Operating System: Windows 10 Pro
User avatar
Dommy
Translator
Translator
Posts: 1901
Joined: 25 Aug 2011, 21:45
Location: Poland
Contact:

Re: Changing the HUD with Interface Designer. Is it possible

Post by Dommy »

Ok, the easiest tutorial I can write:

1. Start server using TimeAttack.Script.txt
2. Press ScrolLock to open mode editor.
3. Double click on "UI.Script.txt".
4. Click "Save as" button and save your library with the name, for example "UIModified.Script.txt"
5. Now click "TimeAttack.Script.txt" on right to go back.
6. Add line:《#Include "Libs/Nadeo/TrackMania/UIModified.Script.txt" as UI2》
7. Click "Compilate script" (it allows you to modify UIModified file then)
7. In ***StartServer*** replace all UI:: with UI2::
8. Before all UI2:: functions call the "UI2::Load();"
9. Go back to the UIModified script. Make visual changes you need.
10. Go back to TimeAttack script. Click "Save as" and save script with other name (eg. TAModified.Script.txt)
11. Profit :mrgreen:

Hope I helped ^^
Ryzen 7 2700X, GTX 1070 Ti, 16 GB RAM, Windows 10 Insider Build
FORUM MODERATOR • CREATOR OF SHOOTMANIA GALAXY & TRACKMANIA² PURSUIT

Contact me via GALAXY & PURSUIT DISCORD
Post Reply

Return to “Interface Designer”

Who is online

Users browsing this forum: No registered users and 0 guests