• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

[GUI] Make a quest tutorial

Chaosy

Tutorial Reviewer
Level 40
Joined
Jun 9, 2011
Messages
13,183
Creating many kind of quests

Introduction
So I want to make this thread to help those who are new with the WE (worldeditor)
so first this will show you how to make the quests and how to make them look better nothing else.

Things needed


Worldeditor
Low Knowage of variables and triggers

A quest variable

How to start a quest
There is more than one way to start a quest i will show you 3 ways to do it.
1.
  • Unit - A unit enters your region
this one is the one i suggest to use because its the easiest way.
2.
  • Unit - A unit begins to cast an ability
this one is the best way for RPG maps who have a talk ability
3.
  • Unit - Unit within range
this one works also but it can be hard to make the range perfect.



Here I will explain what the quest trigger does if you dont understnd it by just reading the triggers

1.
  • Quest - Create a Required quest titled grom the mighty with the description Your questgiver wan..., using icon path ReplaceableTextures\CommandButtons\BTNAmbush.blp
This is the action who create the quest, i used this one for the "kill specific unit quest"

2.
  • Quest - Flash the quest dialog button
this flashes the quests button it looks like this;
2eocetz.jpg


3.
  • Quest - Display to (All players) the Quest Update message: Quest Complete
This is just a Message who pops up




Now lets start making a quest




So here i going to show how to make a quest there you take a quest and walk to a unit to turn it in.

this is how you start the quest
  • talk quest
    • Events
      • Unit - A unit enters Region 000 <gen>
    • Conditions
      • (Triggering unit) Equal to Your_unit
    • Actions
      • Quest - Create a Required quest titled Talk to my brother with the description Your questgiver wan..., using icon path ReplaceableTextures\CommandButtons\BTNAmbush.blp
      • Set Your_variable_quest = (Last created quest)
      • Quest - Flash the quest dialog button
      • Sound - Play QuestNew <gen>
NOTE the sound can be selected from the sound editor

Now how to end the quest
  • talk quest Complete
    • Events
      • Unit - A unit enters Region 001 <gen>
    • Conditions
      • (Triggering unit) Equal to Your_unit
    • Actions
      • Quest - Mark Your_variable_quest as Completed
      • Quest - Display to (All players) the Quest Update message: Quest Complete
      • Quest - Flash the quest dialog button
      • Sound - Play QuestCompleted <gen>
Now your done!


So here I show how to make a quest wich you take the quest kill 10 units and turn it in.
so start with same as the talk quest but edit it to the right region and so on.
  • kill quest
    • Events
      • Unit - A unit enters Region 000 <gen>
    • Conditions
      • (Triggering unit) Equal to Your_unit
    • Actions
      • Quest - Create a Required quest titled A huge threat with the description Your questgiver wan..., using icon path ReplaceableTextures\CommandButtons\BTNAmbush.blp
      • Set Your_variable_quest = (Last created quest)
      • Quest - Flash the quest dialog button
      • Sound - Play QuestNew <gen>
Now we want to make something who count the kills so you cant turn it in just after.
for this you need a "interger variable" and a "Boolrean variable"
(only use array if its a multiplayer map)

(i know boolrean is not needed there is one another way but we use it in this tutorial)
NOTE my Boolrean is named quest_complete
  • kill count
    • Events
      • Unit - A unit Dies
    • Conditions
      • (Unit-type of (Dying unit)) Equal to unit type you want killed
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Killing unit) Equal to Your_unit
        • Then - Actions
          • Set your_interiger = (your_interiger + 1)
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • your_interiger Equal to 10
        • Then - Actions
          • Set quest_complete = True
        • Else - Actions
Now we need the turn in triggers.

  • kill quest complete
    • Events
      • Unit - A unit enters Region 000 <gen>
    • Conditions
      • (Triggering unit) Equal to Your_unit
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • quest_complete Equal to True
        • Then - Actions
          • Quest - Mark Your_variable_quest as Completed
          • Quest - Display to (All players) the Quest Update message: Quest Complete
          • Quest - Flash the quest dialog button
          • Sound - Play QuestNew <gen>
        • Else - Actions
Your now done!




So here i will make a quest wich is, you kill ONE unit like a boss/leader
you need a unit variable for this should work.

so start the quest like this

  • Boss quest
    • Events
      • Unit - A unit enters Region 000 <gen>
    • Conditions
      • (Triggering unit) Equal to Your_unit
    • Actions
      • Quest - Create a Required quest titled grom the mighty with the description Your questgiver wan..., using icon path ReplaceableTextures\CommandButtons\BTNAmbush.blp
      • Quest - Flash the quest dialog button
      • Sound - Play QuestNew <gen>
Now we going to make so if the unit is dead you can turn in the quest its now we should use the unit variable.
For those who got a respawn system use a boolrean variable like in the kill quest

  • Boss quest Complete
    • Events
      • Unit - A unit enters Region 000 <gen>
    • Conditions
      • (Triggering unit) Equal to Your_unit
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Your_unit_variable is dead) Equal to True
        • Then - Actions
          • Quest - Mark Your_variable_quest as Completed
          • Quest - Display to (All players) the Quest Update message: Quest Complete
          • Quest - Flash the quest dialog button
          • Sound - Play QuestNew <gen>
        • Else - Actions


Additional quest tips


you can use color codes in quests to make a better look it work like this (without spaces).

The colour codes can't be used as quest name or description but you can use it like this..

sxlyrs.jpg


Red: |CFFFF0303 TEXT HERE |R
Blue: |CFF0042FF TEXT HERE |R
Teal: |CFF1BE6D8 TEXT HERE |R
Purple: |CFF540081 TEXT HERE |R
Yellow: |CFFFFFF01 TEXT HERE |R
Orange: |CFFFE8A0E TEXT HERE |R
Green: |CFF20C000 TEXT HERE |R
Pink: |CFFE55BB0 TEXT HERE |R
Grey: |CFF959697 TEXT HERE |R
Light Blue: |CFF7EBFF1 TEXT HERE |R
Dark Green: |CFF106246 TEXT HERE |R
Brown: |CFF4E2A04 TEXT HERE |R
Neutral: |CFF272727 TEXT HERE |R


To make some story about the quest you should add a cinematic

We are going to use those triggers for this.

  • Cinematic - Turn cinematic mode On for (All players)
this is to turn on the cinemetic mode if you dont turn it on you cant use the talk function.
NOTE the (all players) can be changed in my tutorial you should use.
Convert player to playgroup > Owner of unit > Triggering unit so it should look lite this
  • Cinematic - Turn cinematic mode On for (Player group((Owner of (Triggering unit))))

We are also going to use this one
  • Unit - Transmission From Unit

Here you need to modify the following:
wich unit who should talk = Unit
name of the talking unit = Name
if there should be any sound playing = Sound
what the unit should say = Message
how long the text should be showed = Duration (NOTE Remember the duration)

Edit the "Add" to "set to"
Edit the "wait" to "Dont wait"

We need the action called:
  • Camera - Apply your camera here for Player 1 (Red) over 0.00 seconds
This is where you should see the cinematic from so make a camera and put it as you want it.
we need to edit it abit also change the player red to.
  • Camera - Apply Camera 001 <gen> for (Owner of (Triggering unit)) over 0.00 seconds
And the last action:
  • Wait Your unit transmission wait time here seconds
now we are ready for make a cinematic

This is an example i have edited the boss quest end
  • Boss quest Complete Cinematic
    • Events
      • Unit - A unit enters Region 000 <gen>
    • Conditions
      • (Triggering unit) Equal to Your_unit
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Your_unit is dead) Equal to True
        • Then - Actions
          • Cinematic - Turn cinematic mode On for (Player group((Owner of (Triggering unit))))
          • Cinematic - Send transmission to (Player group((Owner of (Triggering unit)))) from Footman 0002 <gen> named Guard: Play No sound and display Halt! whos there?. Modify duration: Set to 5.00 seconds and Don't wait
          • Wait 5.00 seconds
          • Cinematic - Send transmission to (Player group((Owner of (Triggering unit)))) from Peasant 0001 <gen> named Worker : Play No sound and display Its me! im just a w.... Modify duration: Set to 5.00 seconds and Don't wait
          • Wait 5.00 seconds
          • Cinematic - Send transmission to (Player group((Owner of (Triggering unit)))) from Footman 0002 <gen> named Guard: Play No sound and display You may pass. Modify duration: Set to 3.00 seconds and Don't wait
          • Wait 3.00 seconds
          • Cinematic - Turn cinematic mode Off for (Player group((Owner of (Triggering unit))))
          • Quest - Mark Your_variable_quest as Completed
          • Quest - Display to (All players) the Quest Update message: Quest Complete
          • Quest - Flash the quest dialog button
          • Sound - Play QuestNew <gen>
        • Else - Actions
NOTE 1! if you dont use the "wait" action it wont work

NOTE 2! dont forgett to turn off cinematic mode else you be stuck in it


This tutorial going to be updated soon, im just to tried to continue with it for now.
also this is my first tutorial please dont be too hard

thanks for reading
 

Attachments

  • quest complete.JPG
    quest complete.JPG
    2.2 KB · Views: 161
  • quest flash.JPG
    quest flash.JPG
    1.5 KB · Views: 157
Last edited:
Sorry for the late response.

  • (Player group((Owner of (Triggering unit))))
When you do that (in the Cinematics triggers), it causes a leak. You have to set it to a player group variable:
  • Set MyPlayerGroup = (Player group((Owner of (Triggering unit)))
Then destroy it at the end:
  • Custom script: call DestroyForce(udg_MyPlayerGroup)
This tutorial going to be updated soon, im just to tried to continue with it for now.
also this is my first tutorial please dont be too hard

If this tutorial is going to be updated, let me know. (post in this thread or send me a pm)

You also have a [center] tag that isn't closed by a [/center]. ;)

EDIT: Graveyarded for now. Let me know if you want to update.
 
Last edited:
Top