You do not need the cinematic mode turned on. a Game message will show.
Lets say you have Arthas as a Character, the game message will show something like this:
Arthas: Hi!
If you want your player to address the attacking unit by name, then you would use
-
Cinematic - Send transmission to (All players) from (Attacked unit) named (Name of (Attacked unit)): Play No sound and display (Hi + (Name of (Attacking unit))). Modify duration: Add 0.00 seconds and Wait
Where (Hi + (Name of Attacking Unit))) is a Concatenate String Hi is a typed message *your words* and the other is selected out of several function options, for this particular trigger I used 'Unit-unit name'.
Click any of the blue words within a trigger function to see what options you have to use.
As for conditions, you can set those up or have none whatsoever. You can make the assumption that an attacking unit is an enemy of the player - but you can use one of your own units (that has ally attack enabled) to attack your unit, and can say hi, hi, hi.
The only problem you might have here is that your character will most likely say 'hi' over and over again until either the attacking stops or the unit(s) are dead.
I would personally assign a custom value to the attacking unit:
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Custom value of (Attacking unit)) Equal to 0
-
Then - Actions
-
Cinematic - Send transmission to (All players) from (Attacked unit) named (Name of (Attacked unit)): Play No sound and display (Hi + (Name of (Attacking unit))). Modify duration: Add 0.00 seconds and Wait
-
Unit - Set the custom value of (Attacked unit) to 1
-
Else - Actions
This way only those attacking units with a custom value of 0 will get a 'hi' response, other custom values attached to units will not trigger the response.
If you want to reset the ability for the attacker to trigger the message again you can either have another trigger tied to some other event or you can add a wait command and then 'reset' the custom value of the unit to 0.
Since there is no event 'Unit stops an attack' you may want to clean up the custom values of your units in another trigger, or after a wait.
If this is a once only attack message, you would use
-
Trigger - Turn off (This trigger)
With custom values you can have it set up to where you have several messages that are triggered via an attack, the first one setting the custom value of your attacking unit to 1 (saying hi) then another with the custom value of 'if 1, then...' saying "Stop bothering me" and so on and so forth. each subsequent attack raises the custom value of the attacking unit causing your attacked unit to say something else.
IF you have a set of 'random' messages say 4-7 you can set the custom value of the attacking unit to a random value between 4-7 that way the next attack will trigger a 'random' message. This opens the doors for many options of communications between your units via cinematic speech messages, while keeping you from having your screen look like this:
Arthas: Hi!
Arthas: Hi!
Arthas: Hi!
Arthas: Hi!