Quest creation guide

Getting started

Installation

To install this addon to your server just unzip all folders to your garrysmod/addons folder. Note, this addon will contain two folders mc_quest and mcd_ui which both must be placed inside your addon folder. If you already have mcd_ui addon, you can skip or update the files, as it was downloaded with my other products.

Content will download automatically, but here is a workshop addon if you need it https://steamcommunity.com/sharedfiles/filedetails/?id=2486994157

Configuration

The main configuration can be done through the game inside Administration Menu. To open Administration Menu click on the MQS icon in the context menu, type the mqs_editor console command or /mqs  chat command. Only users with superadmin privileges can access the Administration Menu and server settings.

Quest creation

Creating a new quest

To create a new quest navigate to the Quests tab and click on Add new quest button. If you started new quest creation earlier, you will have an option to load autosave or starting from scratch. Autosave can help you if you accidentally closed the menu or crashed, but we recommend submitting the quest after basic setup and then edit it, so you won't lose progress.

image-1621608595155.png

If you use menu opened via console/chat command, to save the editing page press on the circle near the close button

image-1621608988940.png

Quest main options

In the Main options tab, you can set up basic rules for the quest. Here is a description of all parameters:

Name - Displayed quest name, will be shown to players inside all available quests

ID - Must be unique for each quest. Used only by the addon, and can help you navigate through quests.

Category - If you have enabled the "Sort by category" feature in the settings, you can type a category for the quest and it will be sorted in the main menu regarding to that category.

Description - Will be displayed to players inside all available quests and on the screen when the player starts the quest. We recommend keeping it simple but informative.

Complete message - Will be displayed to players on the screen when the quest is finished. Can be useful to show the player which reward did he get.

Do time - time in seconds for the quests will fail or succeed the quest depending on the next parameter. Leaving this parameter black will disable this function and the player will play quests for as long as he wants

Fail/Succeed quest on time end - This parameter will affect quest only if Do time is set. Failing quest on the time end can solve problems with players going AFK while playing important quests. Succeeding quest on time end can be useful with looped quests, especially for MilitaryRP quests.

Loop quest tasks - Can be enabled only if Do time is set. Will make your quests repeated after the player completes all tasks. Can be used in many cases, especially as a bus driver, city service, military/police patrol, and more. If Fail quest on time end parameter is set, quest Do time will be reset on each loop.

Reward player on each loop - will reward the player on each quest loop complete if you set up quests rewards (more about rewards later). If you turn this option off, the player will get his reward only when he manually stops looped quest or Succeed quest on time end option is set.

Fail quest on player death - will fail the quest if the player dies.

Players limit for the quest - Here you can set how many players can play the same quest at the same time. If you have a lot of events happening on the quests, such as car/NPC/entity spawn, we recommend setting the limit only for 1 player.

Players amount needed to start - Here you can set how many players will be needed online on the server before anyone can start the quest.

Setup team limits - Same as the previous parameter, but you can choose an online request for each team.

Cooldown on finish/fail - Cooldown before any other player can start the quest if it was finished or failed

Disable quest replay - Will disable replaying quest to a player if he already completed the quests. Can be useful for story-driven quests.

Require completed quest - Will require another completed quest for a player before he can start this one. Can be useful for story-driven quests.

Team whitelist - Set a team whitelist. Only whitelisted teams will have access to this quest.

The whitelist is a blacklist - will turn the whitelist to the blacklist. All teams from the whitelist will not have access to this quest.

Enabling quest or linking it to an NPC - this option will variate depending on your server settings. Enabling this option will activate the quest and make it playable to all players, otherwise, this quest can be only play-tested by admins. If you assign this quest to an NPC, it can be played by a player only through that NPC. We recommend doing that only after you playtested the quest.

Set custom icon - Allows setting a custom icon for the quest. The icon will be displayed instead of an information icon. To set the icon enter the icon URL. 
Note. Icon must be in a png format and for a better look must be square. 68 by 68 pixels is a recommended size.

image-1621612746799.png

Setup quest blacklist - here you can select a list of quests that will be disabled for the player if he played the current quest at least one time. This can help create storylines with choice.

Objectives

Overall information

To add a new objective press om Add new objective button. To edit an objective click on it. Note, objectives will be played in order from the first to the last one. If you will need to change the objectives order you can right-click on an objective and choose one of the options - Move objective up or down in order, or swap objective with another. By choosing the Swap option target objective will be highlighted, by clicking on the other objective you will swap their places in play order.

image-1621615670512.png

To remove the objective chose the Remove option from the dropdown menu when you right-click it. To edit objective parameters and set up events for each objective just click on it.

Objective settings

The objective description is a requirement for each objective type. The description will be displayed to a player on the hud and must contain information regarding the current objective for better information

Here is the list of objective types and specifications for them:

Kill NPC

Will create NPC assassination objective. Objective settings will be:

Allow other players to kill NPCs - By enabling this option you will allow any players to kill quest NPCs, otherwise, only the player who started the quest will be able to kill

Show entities location to the player - By enabling this option player will see markers on the NPCs within the distance you set by the next parameter.

Min. distance to NPCs - Here you set how far from an NPCs player must be, to see the marker.

Map marker - an icon that will be displayed on the HUD indicating the NPC.

Note that, the Spawn NPC event is required to be set for this objective. Spawn NPC event must have NPC is an objective target option enabled. You can create only one target NPC and also some non-target NPCs which will act as decoys or protection for the target. The objective will succeed only if you kill the target NPC, other NPC will remain even if the objective succeeded. If NPC is an objective target option is enabled for multiple NPCs you will need to kill all of them to continue.

Move to point

Will create a simple objective, where you need to reach a point on the map. Objective settings will be:

Distance to point - where you can set how close the player must be to the objective point to continue. A lower number means the player must be closer to the point.

Move point - point on the map. Can be set to your local position, aiming position on copy position from the entity you are looking at.

Map marker - an icon that will be displayed on the HUD.

Mark area - will mark the area where you must enter. Like here:

image-1621689190854.png

Ignore quest vehicle - this option is useful only if you have a quest vehicle spawned earlier. By checking it you will be able to enter the area and continue the quest without your vehicle. In another case, the quest will continue only if you enter the area inside your quest vehicle.

Leave area

Same as the Move to point objective but you need to exit an area on the map. Objective settings will be:

Distance to point - where you can set how far away from leave point the player must travel to continue. A lower number means the player must travel a shorter distance.

Leave point - point on the map. Can be set to your local position, aiming position on copy position from the entity you are looking at.

Mark area - will mark the area which you must leave. Same as the Move to point objective

Ignore quest vehicle - this option is useful only if you have a quest vehicle spawned earlier. Same as the Move to point objective

Wait Time

Simple timer which player needs to wait before the next objective starts.

Time to wait - Time in seconds player needs to wait.

Show the timer to player - will show how much time you need to wait near the objective description.

Player must stay in area - an area size that will be linked to the timer if you enter a value. Leave the values blank to disable this and the following option. If you enter a value, the player will need to stay inside the given area, if he leaves the area before the timer runs out, the quest will be failed.

Area position - position of the area on the map. Can be set to your local position, aiming position on copy position from the entity you are looking at.

Mark area - will mark the area where you must stay. Same as the Move to point objective

Ignore quest vehicle - this option is useful only if you have a quest vehicle spawned earlier. Same as the Move to point objective

Collect quest ents

In this objective, you will need to collect quest entities by pressing the use button on them. Will require Spawn quest entity event. More entities spawned via Spawn quest entity event - more of them you will need to collect before you can continue the quest.

Show entities location to the player - will show distance in meters to the closest entity neer the objective description.

Search area size - Size of the area that will be marked on the map so the player can easily navigate to the collectible entities.

Search area position - position of the area on the map. Can be set to your local position, aiming position on copy position from the entity you are looking at.

Mark area - will mark the search area. Same as the Move to point objective

Talk to NPC

This objective will appear only if you have Simple NPCs addon installed. This objective can trigger premade dialog from Simple NPC and the quest can be continued only if the answer in the dialogue has an MQS Continue mark. More about it in the integration guide.

Select an NPC - Here you can select one of the available NPCs from the map.

Dialog ID to open - The ID of the premade dialog line that will be opened if you speak to the NPC.

Map marker - an icon that will be displayed on the HUD and mark the NPC.

Events

Overall information

Events are a list of actions that will happen when you start an objective. This may help you to change your quest environment dynamically as the player progress through the quest. You can remove or duplicate an event if you right-click them.

Spawn entity

This event will spawn any entity you want. If you need to spawn a prop enter prop_physics as the entity class. You can first spawn an entity, customize it and then just use Copy buttons to use all information from the entity.

ezgif-3-7d0fa57915c1.gif

Spawn quest entity

This event will spawn an entity that you will need to collect for the Collect quest ents objective. The same method can be applied to set up an entity as for the Spawn entity event. You can also choose if the entity will be arcade-styled or just look like a normal entity. Pointer above the entity is optional too.

1.gif

By adding a number inside Hold [E] key field you will add a delay in seconds before the player will pick up the entity. The delay is in seconds.

2.gif

Manage do time

Basically, you can reset do time to quest's original time or just add some more time to the base timer. This can be useful for time trial quests.

Give weapon

Gives the player a weapon. Just enter the weapon class you want to give.

Strip weapon

Strip a weapon from the player. Just enter the weapon class you want to strip. Can be useful if you want to give the player a weapon only for a few objectives

Give ammo

Gives ammo to the player. You can choose the amount of ammo to give and find ammo type from the list. The list will have all ammo used on the server. 

Spawn NPC

This event will spawn an NPC which can be hostile or friendly to the player. NPCs spawned this way will ignore damage from other players as well as players themself. To copy the NPC class name, go to the Q menu and right-click on the NPC you want to use, and choose the Copy to clipboard option. Then paste the class to the MQS menu. You can leave the NPC model blank and it will use the default model for this class or change it to a custom model by entering the path to the model or copying it from a spawned NPC.

Note if you use this event on a Kill NPC objective you will need to set at least one NPC to be the objective target. You can use multiple NPCs as an objective target, this way player will need to kill all the NPCs marked as an objective targets. You also can create more NPCs without this mark to act as a distraction or protection for the target NPCs.

Remove all entities

Will remove all entities created by the Spawn entity event. Can be useful to keep fewer entities if you have a long quest.

Set HP

Will set a custom amount of HP to the player or can restore full HP.

Set armor

Will set a custom amount of armor to the player from 0 to 255. 

Spawn vehicle

Will create a vehicle tide to the quests and convert it to the vehicle-based quest. Supports default vehicles and simfphys vehicles. If the vehicles will be somehow removed or destroyed, the quest will fail. A small vehicle setup guide:
To copy the vehicle class name, go to the Q menu and right-click on the vehicle you want to use, and choose the Copy to clipboard option. Then paste the class to the MQS menu and choose vehicle type. To set a spawn position we recommend spawn and place the vehicle where you need it to spawn and then copying its position. To avoid sticking the vehicle in the ground place it slightly above the ground.

ezgif-2-a9288072d123.gif

Remove vehicle

Will remove quest vehicle created by the Spawn vehicle event with a delay you set.

Music player

This allows playing sound/music via a weblink or from Gmod content. Music will automatically be stopped on quest end/fail. If you want to stop music on certain objectives, start this event again with no link or path.

Teleport player

Will teleport player to the given location, as simple as that.

Rewards

To give the player a reward after finishing a quest you need to enable a reward in the left column, and then edit reward properties in the right one.

For now, you can give the player these rewards:

  • Give special weapon
  • Give DarkRP money - only for DarkRP gamemode
  • Leveling System - XP reward if you have this addon installed
  • GlorifiedLeveling - XP and LvL reward if you have this addon installed
  • Pointshop and Pointshop 2 - Points/Item reward if you have one of these addons installed

Additional information

To finish quest setup you will need to click Submit quest button, and if it is active or assigned to the NPC it will be available to play for all players.

If you want to transfer and edit a quest from another map or you just need a copy of a quest you made earlier, enter the Copy data menu. The left column will contain all current quests and the right one will contain quests from the map you enter to the search field.