Pular para o conteúdo principal

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
Hero Dark

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

Side: server Syntax
Return
  • table com todos os grupos cadastrados, indexados pelo groupID (número).
  • Cada entrada contém: nameGroup, members, events, balance, offices, activities, groupInfos, configurations, invites.
Example

getGroupInfo

Side: server Syntax
Required arguments
  • groupID (number): ID do grupo.
Return
  • table com todas as informações do grupo em sucesso.
  • false se o grupo não existir.
Example

getPlayerGroups

Side: server Syntax
Required arguments
  • player (player): elemento do jogador.
Return
  • table com a lista de grupos do jogador ({ {groupID = X}, ... }).
  • false se não encontrado ou sem grupos.
Example

getOfficePlayer

Side: server Syntax
Required arguments
  • player (player): elemento do jogador.
  • groupID (number): ID do grupo.
Return
  • table com campos:
    • officeRank (number): hierarquia do cargo (número menor = cargo mais alto).
    • roleName (string): nome do cargo.
    • officeID (number): ID interno do cargo.
  • false em falha.
Example

getPlayerProfilePhoto

Side: server Syntax
Required arguments
  • player (player): elemento do jogador.
Return
  • Valor/índice da foto de perfil escolhida pelo jogador em sucesso.
  • false em falha.
Example

addGroupBalance

Side: server Syntax
Required arguments
  • groupID (number): ID do grupo.
  • value (number): valor a ser adicionado.
Behavior
  • Soma o valor ao saldo atual do grupo.
  • Registra automaticamente a entrada no histórico financeiro do dia atual.
  • Salva na database.
Example

setGroupBalance

Side: server Syntax
Required arguments
  • groupID (number): ID do grupo.
  • value (number): novo saldo.
Behavior
  • Define o saldo do grupo para exatamente o valor informado (sobrescreve o atual).
  • Salva na database.
Example

removeGroupBalance

Side: server Syntax
Required arguments
  • groupID (number): ID do grupo.
  • value (number): valor a ser subtraído.
Behavior
  • Subtrai o valor do saldo atual do grupo.
  • Registra automaticamente a saída no histórico financeiro do dia atual.
  • Salva na database.
Example

createGroupEvent

Side: server Syntax
Required arguments
  • 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.
Return
  • false se startTimestamp for menor ou igual ao momento atual.
Example

deleteGroupEvent

Side: server Syntax
Required arguments
  • 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).
Example

setPlayerRoleInGroup

Side: server Syntax
Required arguments
  • 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).
Example

changeGroupPermissionRole

Side: server Syntax
Required arguments
  • groupID (number): ID do grupo.
  • roleName (string): nome do cargo.
  • permission (string): nome da permissão (ex: 'accessChat', 'manageMembers', 'administrator', etc.).
  • status (boolean): true para ativar, false para desativar.
Permissões disponíveis Example

createInvite

Side: server Syntax
Required arguments
  • playerInviter (player): jogador que está enviando o convite.
  • groupID (number): ID do grupo para onde está convidando.
  • player (player): jogador que está sendo convidado.
Behavior
  • 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.
Example

removeInvite

Side: server Syntax
Required arguments
  • groupID (number): ID do grupo.
  • player (player): jogador cujo convite será removido.
Example

addPlayerToGroup

Side: server Syntax
Required arguments
  • groupID (number): ID do grupo.
  • player (player): jogador a ser adicionado.
Behavior
  • 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.
Example

removePlayerFromGroup

Side: server Syntax
Required arguments
  • groupID (number): ID do grupo.
  • player (player): jogador a ser removido.
Behavior
  • 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.
Example

editGroupInfo

Side: server Syntax
Required arguments
  • groupID (number): ID do grupo.
  • info (string): campo a editar.
  • value (any): novo valor.
Campos info disponíveis Example

playerHasPermission

Side: server Syntax
Required arguments
  • player (player): elemento do jogador.
  • groupID (number): ID do grupo.
  • permissionName (string): nome da permissão (ver tabela em changeGroupPermissionRole).
Return
  • true se o jogador possui a permissão (ou é dono/administrador do grupo).
  • false caso contrário.
Example

verifyGroup

Side: server Syntax
Required arguments
  • groupID (number): ID do grupo.
  • value (boolean): true para marcar como verificado/oficial, false para remover.
Example

deleteGroup

Side: server Syntax
Required arguments
  • groupID (number): ID do grupo a ser deletado.
Behavior
  • 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.
Example

payGroupSalary

Side: server Syntax
Required arguments
  • groupID (number): ID do grupo.
  • payerElement (player): jogador que está realizando o pagamento (usado nos logs). Pode ser nil para usar o dono do grupo.
Optional arguments
  • deductBalance (boolean): se false, os salários são registrados sem descontar o saldo do grupo. Padrão: true.
Return
  • true em 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.
Example

collectPlayerSalary

Side: server Syntax
Required arguments
  • playerElement (player): jogador que irá coletar os salários.
Optional arguments
  • groupID (number): se informado, coleta apenas os salários deste grupo. Se nil, coleta todos os pendentes.
Return
  • true, valorTotal em sucesso — o valor total coletado é enviado automaticamente ao jogador conforme widthdrawConfigurations.
  • 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.
Example

managePanels

Side: server Syntax
Required arguments
  • 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 ser nil dependendo do tipo).
Valores de typeManage Example

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.xml do sqh_groups.
  • O source utilizado 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 de source seja o correto.