Resolva problemas comuns
Resource não inicia
Está com problemas para iniciar o seu produto? Clique aqui
Configurar o resource
Está com dúvidas de como configurar algo no sistema? Clique aqui

Sobre o sistema
O Groups System é um sistema completo de gestão de grupos/organizações para servidores MTA:SA. Com ele, jogadores podem criar grupos, convidar membros, gerenciar cargos, finanças, calendário de eventos, chat interno, registros de ponto e muito mais — tudo por uma interface visual intuitiva. Com as funções exportadas, você pode:- Consultar grupos cadastrados e suas informações;
- Manipular o saldo de um grupo (adicionar, definir ou remover);
- Criar e deletar eventos no calendário do grupo;
- Gerenciar membros: adicionar, remover e alterar cargo;
- Alterar permissões de um cargo dentro do grupo;
- Criar e remover convites;
- Verificar se um jogador possui determinada permissão;
- Pagar e coletar salários;
- Obter a foto de perfil escolhida pelo jogador;
- E integrar essas funcionalidades em qualquer outro sistema do seu servidor.
Funções Exportadas
Server-side
- getGroups ->
Retorna todos os grupos cadastrados - getGroupInfo ->
Retorna as informações de um grupo específico - getPlayerGroups ->
Retorna os grupos em que um jogador está - getOfficePlayer ->
Retorna o cargo de um jogador em um grupo - getPlayerProfilePhoto ->
Retorna a foto de perfil escolhida pelo jogador - addGroupBalance ->
Adiciona saldo ao grupo - setGroupBalance ->
Define o saldo do grupo - removeGroupBalance ->
Remove saldo do grupo - createGroupEvent ->
Cria um evento no calendário do grupo - deleteGroupEvent ->
Deleta um evento do calendário - setPlayerRoleInGroup ->
Altera o cargo de um membro - changeGroupPermissionRole ->
Altera uma permissão de um cargo - createInvite ->
Envia um convite para um jogador - removeInvite ->
Remove um convite pendente - addPlayerToGroup ->
Adiciona um jogador diretamente a um grupo - removePlayerFromGroup ->
Remove um jogador de um grupo - editGroupInfo ->
Edita informações gerais do grupo - playerHasPermission ->
Verifica se um jogador tem uma permissão no grupo - verifyGroup ->
Marca/desmarca um grupo como verificado (oficial) - deleteGroup ->
Deleta um grupo permanentemente - payGroupSalary ->
Paga os salários de todos os membros de um grupo - collectPlayerSalary ->
Coleta os salários pendentes de um jogador - managePanels ->
Abre painéis específicos do sistema para um jogador
getGroups
Side:server
Syntax
tablecom todos os grupos cadastrados, indexados pelogroupID(número).- Cada entrada contém:
nameGroup,members,events,balance,offices,activities,groupInfos,configurations,invites.
getGroupInfo
Side:server
Syntax
groupID(number): ID do grupo.
tablecom todas as informações do grupo em sucesso.falsese o grupo não existir.
getPlayerGroups
Side:server
Syntax
player(player): elemento do jogador.
tablecom a lista de grupos do jogador ({ {groupID = X}, ... }).falsese não encontrado ou sem grupos.
getOfficePlayer
Side:server
Syntax
player(player): elemento do jogador.groupID(number): ID do grupo.
tablecom campos:officeRank(number): hierarquia do cargo (número menor = cargo mais alto).roleName(string): nome do cargo.officeID(number): ID interno do cargo.
falseem falha.
getPlayerProfilePhoto
Side:server
Syntax
player(player): elemento do jogador.
- Valor/índice da foto de perfil escolhida pelo jogador em sucesso.
falseem falha.
addGroupBalance
Side:server
Syntax
groupID(number): ID do grupo.value(number): valor a ser adicionado.
- Soma o valor ao saldo atual do grupo.
- Registra automaticamente a entrada no histórico financeiro do dia atual.
- Salva na database.
setGroupBalance
Side:server
Syntax
groupID(number): ID do grupo.value(number): novo saldo.
- Define o saldo do grupo para exatamente o valor informado (sobrescreve o atual).
- Salva na database.
removeGroupBalance
Side:server
Syntax
groupID(number): ID do grupo.value(number): valor a ser subtraído.
- Subtrai o valor do saldo atual do grupo.
- Registra automaticamente a saída no histórico financeiro do dia atual.
- Salva na database.
createGroupEvent
Side:server
Syntax
groupID(number): ID do grupo.eventName(string): nome do evento.durationEvent(number): duração do evento (em segundos ou conforme seu padrão).iconEvent(string): ícone do evento.startTimestamp(number): timestamp Unix de início do evento (deve ser no futuro).monthCreation(number): número do mês em que o evento está sendo criado.dayCreation(number): dia do mês em que o evento está sendo criado.
falsesestartTimestampfor menor ou igual ao momento atual.
deleteGroupEvent
Side:server
Syntax
groupID(number): ID do grupo.eventTimestamp(number): timestamp do evento a deletar.eventName(string): nome do evento (usado para confirmar qual deletar quando há múltiplos no mesmo horário).
setPlayerRoleInGroup
Side:server
Syntax
player(player): elemento do jogador que terá o cargo alterado.groupID(number): ID do grupo.roleName(string): nome exato do cargo (deve existir dentro do grupo).
changeGroupPermissionRole
Side:server
Syntax
groupID(number): ID do grupo.roleName(string): nome do cargo.permission(string): nome da permissão (ex:'accessChat','manageMembers','administrator', etc.).status(boolean):truepara ativar,falsepara desativar.
| Permissão | Descrição |
|---|---|
accessCalendar | Acessar o calendário |
accessChat | Acessar o chat interno |
accessUtilities | Acessar o painel de utilidades |
accessData | Acessar dados e estatísticas |
accessFinancial | Acessar o financeiro |
accessManager | Acessar o gerenciador |
addEvents | Criar eventos no calendário |
removeEvents | Remover eventos do calendário |
punchCard | Bater ponto |
depositBalance | Depositar saldo |
withdrawBalance | Retirar saldo |
paySalaries | Pagar salários |
sendMessageGeneral | Enviar mensagem para todos os cargos |
sendMessageByRole | Enviar mensagem pelo cargo |
editGroupSettings | Editar configurações do grupo |
manageMembers | Gerenciar membros |
manageRoles | Gerenciar cargos |
manageInvitations | Gerenciar convites |
accessGroupDataLogs | Acessar logs do grupo |
administrator | Acesso total (administrador) |
kickMembers | Expulsar membros |
createInvite
Side:server
Syntax
playerInviter(player): jogador que está enviando o convite.groupID(number): ID do grupo para onde está convidando.player(player): jogador que está sendo convidado.
- Verifica se o jogador já está no grupo ou já tem convite pendente.
- Verifica se o jogador-alvo permite receber convites.
- Registra o convite no grupo e no perfil do jogador-alvo.
removeInvite
Side:server
Syntax
groupID(number): ID do grupo.player(player): jogador cujo convite será removido.
addPlayerToGroup
Side:server
Syntax
groupID(number): ID do grupo.player(player): jogador a ser adicionado.
- Adiciona o jogador ao grupo com o cargo de menor hierarquia disponível.
- Se
aclConfigurations.systemAclActive = true, adiciona o jogador à ACL do grupo automaticamente. - Salva o grupo no perfil do jogador.
removePlayerFromGroup
Side:server
Syntax
groupID(number): ID do grupo.player(player): jogador a ser removido.
- Remove o jogador da lista de membros do grupo.
- Remove o grupo do perfil do jogador.
- Se
aclConfigurations.systemAclActive = true, remove o jogador da ACL do grupo.
editGroupInfo
Side:server
Syntax
groupID(number): ID do grupo.info(string): campo a editar.value(any): novo valor.
info disponíveis
Valor de info | Tipo de value | O que muda |
|---|---|---|
'nameGroup' | string | Nome do grupo |
'membersLimit' | number | Limite máximo de membros |
'descriptionGroup' | string | Descrição do grupo |
'visibilityGroup' | boolean | Visibilidade pública (true) ou privada (false) |
playerHasPermission
Side:server
Syntax
player(player): elemento do jogador.groupID(number): ID do grupo.permissionName(string): nome da permissão (ver tabela em changeGroupPermissionRole).
truese o jogador possui a permissão (ou é dono/administrador do grupo).falsecaso contrário.
verifyGroup
Side:server
Syntax
groupID(number): ID do grupo.value(boolean):truepara marcar como verificado/oficial,falsepara remover.
deleteGroup
Side:server
Syntax
groupID(number): ID do grupo a ser deletado.
- Remove o grupo de todos os perfis de membros e pendencias de convites.
- Deleta a imagem de logo do grupo (se existir).
- Remove o histórico de chat do grupo.
- Se
aclConfigurations.systemAclActive = true, destrói a ACL do grupo. - Remove da database permanentemente.
payGroupSalary
Side:server
Syntax
groupID(number): ID do grupo.payerElement(player): jogador que está realizando o pagamento (usado nos logs). Pode sernilpara usar o dono do grupo.
deductBalance(boolean): sefalse, os salários são registrados sem descontar o saldo do grupo. Padrão:true.
trueem sucesso.false, "insufficient_balance"se o saldo do grupo for insuficiente.false, "group_not_found"se o grupo não existir.false, "license"se a licença for inválida.
collectPlayerSalary
Side:server
Syntax
playerElement(player): jogador que irá coletar os salários.
groupID(number): se informado, coleta apenas os salários deste grupo. Senil, coleta todos os pendentes.
true, valorTotalem sucesso — o valor total coletado é enviado automaticamente ao jogador conformewidthdrawConfigurations.false, "no_pending_salary"se não há salários pendentes.false, "player_not_found"se o jogador não estiver na database.false, "license"se a licença for inválida.
managePanels
Side:server
Syntax
typeManage(string): tipo de painel a abrir (ver tabela abaixo).groupID(number): ID do grupo (necessário em alguns tipos).tableArguments(table): argumentos adicionais (pode sernildependendo do tipo).
typeManage
| Valor | O que faz | groupID necessário? |
|---|---|---|
'openPanel' | Abre o painel principal de grupos para o jogador | Não |
'openDashboardGroups' | Abre o dashboard de um grupo específico | Sim |
'openFinancesGroups' | Abre a aba financeira do grupo | Sim |
'openCalendarGroups' | Abre o calendário do grupo | Sim |
'openChatGroups' | Abre o chat interno do grupo | Sim |
'openDatasGroups' | Abre a aba de dados/relatórios do grupo | Sim |
Observações
- Todas as exports exigem que o resource esteja ativo e com licença válida.
- As funções acima seguem exatamente o que está exportado no
meta.xmldosqh_groups. - O
sourceutilizado internamente nas notificações e triggers se refere ao jogador que chamou o evento. Ao usar as exports de outros resources, certifique-se de que o contexto desourceseja o correto.