Tutorial: Home/Part 10: Rewarding the Player
There are several ways we can reward the player for completing a course. We are able to reward the Player with ParkourLevels that allow them to unlock new courses, or achieve a ParkourRank that showcases how far they've progressed.
All can be configured to match any server requirements, and even allow developers to natively add their own functionality.
What are ParkourLevels?
A ParkourLevel is a value that signifies how far a player has progressed through the courses. It can be used to restrict players to certain courses, and unlock new ones.
A new Parkour player will have a ParkourLevel of 0, but they can receive new levels by completing more courses. Your level will only ever increase, you can not reduce a player's level.
There are currently 3 ways to achieve a new ParkourLevel.
/pa rewardlevel (course) (level) is the most basic one. This means when you complete the specified course, you will receive the specified level. If the player's level is currently higher than the reward level, it will not be changed.
The main purpose of this is incremental courses, so you would have to complete the Level1 course, before you could join the Level2 course, etc.
/pa rewardleveladd (course) (amount) this is a little bit more complex. This means when you complete the specified course, your level has the amount added to it. So if you had a ParkourLevel of 10, and completed the course which had a rewardLevelAdd of 2, your new ParkourLevel becomes 12.
The main purpose for this is for lobbies where you have to complete all of the courses to unlock a new lobby; If you had an "Easy" lobby with 5 courses, you would set the level requirement for "Medium" to 5, and add a rewardLevelAdd to 1 for each course in Easy, so they can be completed in any order. NOTE: For this you would have to enable /pa rewardonce (course) so they only get leveled up once per course.
/pa setlevel (player) (level) this can be used by Admins to manually set a player's level. This can be done for VIPS, or simply to quickly test what you've created is working as intended.
ParkourLevels can be used to apply restrictions to courses and lobbies. The validation will be based on the minimum level requirement. So if a course has a minimum level requirement of 10, and the player has a ParkourLevel of 12, this will work.
/pa setminlevel (course) (level) set the minimum level of the specified course to the specified level. Any player that now attempts to join this course will be prevented from doing so unless they have a high enough ParkourLevel.
/pa setlobby (name) (level) create a lobby and set the minimum level requirement for teleportation to the ParkourLevel specified. This is used if you organize your courses into separate lobbies and wish to prevent the player to teleport unless they have a high enough ParkourLevel.
What is a ParkourRank?
A ParkourRank is simply a title a player earns when they reach a certain level.
A basic example could be similar to the following, when they reach each ParkourLevel they get the specified ParkourRank:
5 - Beginner
10 - Amateur
20 - Professional
30 - Expert
50 - Master
There are currently 2 ways to achieve a new ParkourRank.
/pa rewardrank (level) (rank) as demonstrated above, this will create a ParkourRank for a corresponding ParkourLevel, when the achieve that level. It can be colour coded, for example /pa rewardlevel 50 &1Expert
/pa setrank (player) (rank) this will manually set a player's ParkourRank to the specified rank. Can be used for testing how it will look, or giving to VIPS, etc.
By default this functionality is disabled, to avoid interfering with the Server's chat plugin.
To enable, find Other.Parkour.ChatRankPrefix.Enabled in the config.yml, and set it to true.
You must decide if you want to use Parkour's chat implementation, or extend your current chat plugin.
If you choose to use Parkour's chat implementation, the chat string format is found in the Strings.yml under Event.Chat
If you choose to extend your current chat plugin, you must set Other.Parkour.ChatRankPrefix.OverrideChat to false in the config.yml. You can then add %RANK% to your chat plugin format, which the Parkour plugin will detect and replace with the player's ParkourRank.
Delaying / Limiting the Rewards
You are able to delay the time a reward is given to the player in days. For example the player could receive the prize on their first completion, but may have to wait 2 full days before they are able to receive the prize again.
This is achieved by entering /pa rewarddelay (course) (days).
You can also have the player only be rewarded a single time after they complete a course. This is heavily recommended if you are doing anything advanced with ParkourLevels, such as using rewardleveladd.
This is achieved by entering /pa rewardonce (course).
Unfortunately due to time constraints and more important features, this has been underutilized by the plugin itself. Fortunately due to the easy developer API, you can create a plugin that can build on top of Parkour that uses the currency. An example could be requiring a certain amount of Parkoins before a course can be purchased to join.