Task groups (server)

Membership and party helpers. Local queries and menu toggle live on client.

Prefer bridge.taskGroups after @Newb_Bridge/import.lua. Matching exports also exist (CreateTaskGroup, AddToTaskGroup, …).

Create / membership

MethodSignatureReturns
create(groupId: string, leaderSrc?: number)boolean
add(groupId: string, src: number)boolean
remove(groupId: string, src: number)boolean
clear(groupId: string)boolean
delete(groupId: string)boolean
local groupId = ('delivery_%s'):format(src)
bridge.taskGroups.create(groupId, src)

Queries

MethodSignatureReturns
has(groupId: string, src: number)boolean
isLeader(groupId: string, src: number)boolean
getLeader(groupId: string)number | false
setLeader(groupId: string, src: number)boolean
getMembers(groupId: string)number[]
getPlayerGroups(src: number)string[]
getMemberCount(groupId: string)number
getPrimaryGroupId(src: number)string?
if not bridge.taskGroups.has(groupId, src) then return end
local members = bridge.taskGroups.getMembers(groupId)
for i = 1, #members do
    TriggerClientEvent('MyJob:Client:SyncCrew', members[i], payload)
end

Party helpers

MethodSignatureReturns
createWithOptions(src: number, options: table)string? group id
leaveAllGroups(src: number)void
joinByCode(src: number, code: string)boolean, string?, string?
kickMember(groupId: string, actor: number, target: number)boolean
disband(groupId: string, actor: number)boolean
getBrowsableGroups()table[]
buildClientGroup(groupId: string)menu-ready group table or nil

createWithOptions options: { id?, name?, image?, maxPlayers?, public? }.

local groupId = bridge.taskGroups.createWithOptions(src, {
    name = 'Moonshine Run',
    maxPlayers = 4,
    public = true,
})
if not groupId then return end
exports.Newb_Bridge:OpenTaskGroupMenu(src)

Server only has OpenTaskGroupMenu. CloseTaskGroupMenu / IsTaskGroupMenuOpen are client exports.

Events

Emitted by Newb_Bridge:

EventWhen
Newb_Bridge:server:taskGroupCreatedGroup created
Newb_Bridge:server:taskGroupMemberAddedMember joined
Newb_Bridge:server:taskGroupMemberRemovedMember left / kicked
Newb_Bridge:server:taskGroupLeaderChangedLeader changed
Newb_Bridge:server:taskGroupClearedMembers cleared
Newb_Bridge:server:taskGroupDeletedGroup deleted
AddEventHandler('Newb_Bridge:server:taskGroupMemberAdded', function(groupId, memberSrc)
    print(memberSrc, 'joined', groupId)
end)

End-to-end example

RegisterNetEvent('MyHeist:Server:StartCrew', function()
    local src = source
    local ped = GetPlayerPed(src)
    if ped == 0 or not DoesEntityExist(ped) then return end
 
    local groupId = bridge.taskGroups.createWithOptions(src, {
        name = 'Vault Crew',
        maxPlayers = 4,
        public = false,
    })
    if not groupId then return end
 
    TriggerClientEvent('MyHeist:Client:CrewReady', src, groupId)
end)