Quote: "I have looked at dozens of code examples, tried dozens, but the timer never works, and text stays on screen forever."
If your text message is not long then try this...
;Artificial Intelligence Script
;Header
desc = hud delay
;Triggers
:state=0:hudreset,hudx=50,hudy=50,hudtext=MESSAGE ONE,hudhide=1,hudname=message1,hudmake=display,state=1
:state=1,plrwithinzone=1:hudshow=message1,timerstart,state=2
:state=2,timergreater=5000:hudfadeout=message1,state=3
;End of Script
As you can see, it only displays "MESSAGE ONE" on the screen for a total of 5 seconds.
If you text message is longer, say a couple sentences or more and that is why you need longer to read it, then you may consider making it an image.
If you use a paint program like
Paint.NET then you can save your text message as an image.
For that you could use this
;Artificial Intelligence Script
;Header
desc = hud delay
;Triggers
:state=0:hudreset,hudx=50,hudy=50,hudimagefine=gamecore\text\info1.dds,hudhide=1,hudname=message1,hudmake=display,state=1
:state=1,plrwithinzone=1:hudshow=message1,timerstart,state=2
:state=2,timergreater=5000:hudfadeout=message1,state=3
;End of Script
.
As you can see, we are displaying the image named "info1.dds" for a total of 5 seconds.
Both of these scripts are using a plrwithinzone=1 to trigger the HUD.
Of course you would be using whatever condition you need for your situation.