Skip to content

Server Group

File: server/group.lua

Core group logic — create, disband, join, leave, invite, kick.

Events

EventDescription
wtf_group:server:createGroupCreate new group
wtf_group:server:disbandGroupDisband group
wtf_group:server:leaveGroupPlayer leaves group
wtf_group:server:invitePlayerInvite player to group
wtf_group:server:acceptInviteAccept group invite
wtf_group:server:denyInviteDeny group invite
wtf_group:server:kickMemberKick member
wtf_group:server:promoteMemberTransfer leadership
wtf_group:server:requestJoinRequest to join group
wtf_group:server:acceptJoinRequestAccept join request
wtf_group:server:denyJoinRequestDeny join request

Group Lifecycle

  1. Create: Player calls createGroup → DB.CreateGroup → DB.AddMember → sync all
  2. Invite: Leader calls invitePlayer → sends invite to target → 30s timeout
  3. Accept: Target calls acceptInvite → DB.AddMember → sync all
  4. Leave: Member calls leaveGroup → DB.RemoveMember → sync all
  5. Kick: Leader calls kickMember → DB.RemoveMember → notify kicked player
  6. Disband: Leader calls disbandGroup → DB.DeleteGroup → sync all

Join Request Flow

  1. Player calls requestJoin(groupId) → DB.AddMember(pending=true)
  2. Leader receives joinRequestReceived notification
  3. Leader calls acceptJoinRequest(cid) → DB.SetPending(false) → sync
  4. Or leader calls denyJoinRequest(cid) → DB.RemoveMember → notify

Config Limits

lua
Config.MinMembers = 1
Config.MaxMembers = 8
Config.InviteTimeout = 30  -- seconds
Config.GroupLimits = {
    default = { min = 1, max = 8 },
    heist = { min = 2, max = 6 },
    -- ...
}

AIFAZI — FiveM Resources