I'll try to explain how the trigger works, step by step. This is the action part that I'm explaining:
"Unit Group - Pick every unit in (Units in (Playable map area) matching (((Matching unit) is A Hero) Equal to True)) and do (Actions)" <<This line picks every hero on the map, and does (Actions) with them. The reason it takes heroes is because what it's really trying to do is find out (a) where the hero is, and (b) who owns the hero. For example, it would do (Actions) with Red's Knight hero, Blue's Archer hero, Teal's sorceress hero, etc etc.
"Loop - Actions" <<This shows that the actions following it will be looped (done repeatedly) for the above statement. The above statement is the Unit Group statement. What this essentially means is that for each hero that the Unit Group statement finds, this Loop does the following Actions. So if the Unit Group statement finds 5 heroes, then the Loop does the Actions 5 times, one time for each hero.
"Set tmpInteger = (Player number of (Owner of (Picked unit)))" <<This sets a temporary integer (an integer variable) as the number of each player. Each player has a number (Red is 1, Blue is 2, Teal is 3... ...Brown is 12). tmpInteger saves the number of the player who owns the hero that the Unit Group statement finds. For example, if the Unit Group statement finds Red's Knight hero, then this 'Set tmpInteger' statement saves the number of Player Red (which happens to be 1). The 'tmpInteger' variable is set to a new number every time the Loop does the actions. It's not 100% necessary, but it makes life easier. (If you don't understand about variables/integers just say so and I'll explain them).
The next line I'll break into bits.
"Cinematic - Ping minimap" <<You understand this part, it pings the minimap. The part that comes after it tells the Cinematic function who to ping the map for (will be explained on the next line).
"for (All enemies of (Owner of (Picked unit)))" <<This is who sees the pings (who the Cinematic function pings the map for). This is essentially another Loop which says to Ping the Minimap for every player who is an enemy of the currently selected Hero (the Hero selected by the Unit Group statement). However, since you can't ping for enemies of a Unit, you can only ping for enemies of a Player, the "Owner of (Picked unit)" line is necessary to tell the Cinematic action who owns the picked unit. This tells it who's enemies it has to ping the map for.
"at (Position of (Picked unit)) for 1.00 seconds" <<This tells the Cinematic action where it needs to ping the minimap, and for how long it needs to ping it. "Position of (Picked unit)" is the place where the currently selected Hero is (this is the Hero who the Unit Group statement found). "for 1.00 seconds" is how long the Cinematic action needs to ping the minimap - for 1 second.
"using a Simple ping" <<This just means a regular ping, the kind that you can make in a game.
"of color (Player color (convert player number to player - player (tmpinteger)))" <<This tells the Cinematic action what color the ping has to be. What you want to do is ping the minimap with the color of the Player who owns the Hero which is currently selected. If you remember, the "Set tmpInteger" statement saved the number of the Player who owns the Hero. There is a 'Player color' option on the scroll list, and that is what you want to use. However, there is a slight problem, as I'm certain you've noticed. The Player Color options needs the Player itself, not the number of the player. The only thing that we stored was the number of the player, not the player itself. To fix this problem, we have to do a conversion - we have to convert the player number back into the player. To do this you go to the options list and select player conversion - player number. This then converts the saved number (tmpInteger) back into a player.
>>This code only pings enemies of a player. If you want to ping allies as well, then copy the last line and change "enemies of player" to "allies of player".
Hope that helped
