Server Group
File: server/group.lua
Core group logic — create, disband, join, leave, invite, kick.
Events
| Event | Description |
|---|---|
wtf_group:server:createGroup | Create new group |
wtf_group:server:disbandGroup | Disband group |
wtf_group:server:leaveGroup | Player leaves group |
wtf_group:server:invitePlayer | Invite player to group |
wtf_group:server:acceptInvite | Accept group invite |
wtf_group:server:denyInvite | Deny group invite |
wtf_group:server:kickMember | Kick member |
wtf_group:server:promoteMember | Transfer leadership |
wtf_group:server:requestJoin | Request to join group |
wtf_group:server:acceptJoinRequest | Accept join request |
wtf_group:server:denyJoinRequest | Deny join request |
Group Lifecycle
- Create: Player calls
createGroup→ DB.CreateGroup → DB.AddMember → sync all - Invite: Leader calls
invitePlayer→ sends invite to target → 30s timeout - Accept: Target calls
acceptInvite→ DB.AddMember → sync all - Leave: Member calls
leaveGroup→ DB.RemoveMember → sync all - Kick: Leader calls
kickMember→ DB.RemoveMember → notify kicked player - Disband: Leader calls
disbandGroup→ DB.DeleteGroup → sync all
Join Request Flow
- Player calls
requestJoin(groupId)→ DB.AddMember(pending=true) - Leader receives
joinRequestReceivednotification - Leader calls
acceptJoinRequest(cid)→ DB.SetPending(false) → sync - 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 },
-- ...
}