Commands#
Dog Walker Job registers no chat or console commands. Everything a player does starts at a dog's owner or at the dog itself, and the statistics live inside the dog panel. Other scripts reach it through the exports and events below.
Levels are not set by command. To change somebody's level, edit
levelandexperiencein theirqs_dog_walkerrow while they are offline. The row is read again from the database when they come back.
Client Exports#
For a HUD, a radial menu or another job that needs to know what the local player is doing.
Is the player walking a dog?
local walking = exports['qs-dogwalker']:isWalkingDog() -- true while at least one walk is runningHandy for blocking another job, a vehicle spawn or an emote while a dog is on the leash.
The player's level
local level, experience, required = exports['qs-dogwalker']:getPlayerLevel()
-- level current dog walker level
-- experience experience toward the next level
-- required experience the next level needsThe configured locations
local locations = exports['qs-dogwalker']:getLocations() -- Config.Locations, as configured
for id, location in ipairs(locations) do
print(id, location.dog_name, location.owner_name, location.employer_coords)
endUseful for a map, a phone app or a GPS that points players at the owners.
Refreshing the statistics
exports['qs-dogwalker']:openLeaderboard()
-- or by event, from the client or the server
TriggerEvent('qs-dogwalker:openLeaderboard')
TriggerClientEvent('qs-dogwalker:openLeaderboard', source)Fetches the three rankings, the countdowns and the last winners, and sends them to the Statistics view. That view lives inside the dog panel, so it is seen while the player has the panel open.
Server Exports#
Every answer comes from the server's own record of who is walking what — the same record walks are paid from — so a modified client can neither claim to be on a walk nor hide one.
IsPlayerOnMission
True while the player has at least one walk open. This is the name the other Quasar jobs export, so it is the one to use in a new integration.
if exports['qs-dogwalker']:IsPlayerOnMission(source) then
return -- busy walking a dog
endisPlayerOnDuty
The same question under its older name, kept for scripts that already call it.
local walking = exports['qs-dogwalker']:isPlayerOnDuty(source)getOnDutyCount
How many players are walking at least one dog right now — for a job centre, a city stats screen or a scoreboard.
local walkers = exports['qs-dogwalker']:getOnDutyCount()getPlayerLevel
Any player's dog walker level, read from the database the first time and cached after.
local level, experience, required = exports['qs-dogwalker']:getPlayerLevel(source)
if level >= 10 then
-- e.g. unlock a pet shop discount for experienced walkers
endEvents#
Showing a message in the job's style
Sends a notification through the same system the job uses — its own notifications, or your SendTextMessage when Config.DefaultNotifications is off.
-- server side
TriggerClientEvent('qs-dogwalker:sendNotification', source, 'notify', 'success', 'Good job today!')
-- type: 'success' · 'error' · 'warning' · 'info'About the Messages#
When the server refuses to start or pay a walk, it answers with a translation key rather than a sentence — DOG_ON_COOLDOWN, NOT_AT_THE_OWNER — so the player reads it in their own language. Common Errors lists every key and what it means.



