• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

[General] Adding map icons

Status
Not open for further replies.
Level 3
Joined
Jun 9, 2013
Messages
51
I was working on my terrain and jus made a quest which has a distant target (it is some sort of kill the targets and return for reward, as usual). I have already created a visitbility modifier emitting visitbility and destroyed it 0.2 seconds later but I want to display a notification (how could I say it? Not expert in English, I want a circle on the minimap, that yellow thing just like in campaigns. Could you help me?

Btw, what the hell Ubersplat is?
 
Level 28
Joined
Sep 26, 2009
Messages
2,520
you mean ping minimap?

For that you could try one of these
  • Cinematic - Ping minimap for (All players) at (Center of (Playable map area)) for 1.00 seconds
  • - or -
  • Cinematic - Ping minimap for (All players) at (Center of (Playable map area)) for 1.00 seconds, using a Simple ping of color (100.00%, 100.00%, 100.00%)
 
Level 25
Joined
Jul 10, 2006
Messages
3,315
Ubersplat is a texture on the ground, like the texture buildings have on the ground around them.

For minimap icons, you can either overwrite the gold mine/neutral shop icons and use those, or do this:
  • Actions
    • Neutral Building - Change the special minimap icon to UI\Minimap\Minimap-Tower
    • Neutral Building - Turn special minimap icon On for (Triggering unit)
 
Level 3
Joined
Jun 9, 2013
Messages
51
And, tell me what do I need for the effect if map icons like in Rexxar's campiagn (and possibly all of the Blizzard camps), which pings all uncompleted but discovered quests in a certain interval? OK, the event should be "every 30seconds IRL", but what's then? Do I need variables for every position?
 
Level 25
Joined
Jul 10, 2006
Messages
3,315
What Nichilus suggested above.

Use a point array, and ping all points in it.

So e.g.
Quest[1] = position of barracks
Quest[2] = position of gold mine
Quest[3] = center of region 001

The pinging will look like this:
loop for each integer a from 1 to 3
ping Quest[integer a]

To update it as quests are added/removed:
Save the number of active quests to an integer, let's call it QuestMax

So when you get you first quest,
set QuestMax = QuestMax +1
set Quest[QuestMax] = position of quest target

and the same when you get your next quest, and so on.

The loop trigger becomes:
loop integer a from 1 to QuestMax
ping Quest[integre a]

To remove the quest, you put the last quest in the list (Quest[QuestMax]) in place of the completed quest, and reduce QuestMax by 1.
If there is only one quest, simply reduce QuestMax.
 
Level 3
Joined
Jun 9, 2013
Messages
51
I have done what you said about the point array variable, but I didn't understand (it's 10PM now for me) the last thing you said: "To remove the quest, you put the last quest in the list in place of the completed quest, and reduce QuestMax by 1".
Where does the editor know from that which of the points was the last completed quest? It could be a method to give each quest an ID and then simply ignore them if they were done, but this would be ineffective when you want 4-5 quests active at once and there are ~40 quests.
Let me give an example. There are 4 quests, each are incomplete. Let's say complete no.2. Then the last quest in the list is needed to be moved into the position of the second. How? How does he Editor/game know that the completed quest's point is the 2nd? Give a number to each quest? I simply can't think now, so I ask you to tell me how would you do it.
Thank you man anyway, the previous one worked.
 
Level 28
Joined
Sep 26, 2009
Messages
2,520
The game doesn't know it, but you do. You have to think of a way to link "completed quest" to "quest's index" (index as in the number it is saved under... for example Quest[2]; where the number 2 in bracket is the quest's index).

The only way that I can think of is that you yourself index each quest, giving it a unique number. That can be done by creating all quests at map initialization and disabling them, or in each separate trigger.
I will post an example one that fires at map ini:
  • Untitled Trigger 001
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Quest - Create a Required, undiscovered quest titled Asdf with the description njhtrngs, using icon path ReplaceableTextures\CommandButtons\BTNAmbush.blp
      • Set Quest[1] = (Last created quest)
      • Quest - Disable Quest[1]
      • -------- ---------------------------------------- --------
      • Quest - Create a Required, undiscovered quest titled TGd with the description oipodda, using icon path ReplaceableTextures\CommandButtons\BTNAmbush.blp
      • Set Quest[2] = (Last created quest)
      • Quest - Disable Quest[2]
      • -------- ---------------------------------------- --------
      • -------- and so on... --------
Now with this, you specifically set which quest is saved as Quest[1], which as Quest[2].
The trigger, which ends quest is usually 1 trigger per quest, so you know exactly which trigger corresponds to which quest.

So if a trigger that ends quest fires, you know which quest it's supposed to end... like this:
  • Untitled Trigger 001
    • Events
      • Unit - Boss Dies
    • Conditions
    • Actions
      • Trigger - Turn off (This trigger)
      • -------- I know that when the Boss dies, he fires this trigger and completes Quest[1] - that will not change, no matter what --------
      • -------- so I know which Quest shoul be marked as completed. --------
      • Quest - Mark Quest[1] as Completed
      • Quest - Display to (All players) the Quest Completed message: You did it! That gu...
Note, that the index number cannot be dynamic - in other words, that number has to be the same, no matter if that quest is accepted as first, second, or last.

Ex.
I have 6 quests in my map. I pick up the quest called "Flowers for Mary" as the last quest, however in triggers, that quest will have index for example 2 (= Quest[2]), because the mapmaker set it like that.
 
Status
Not open for further replies.
Top