GameMaker Studio · GML
Grupos e clãs
Grupos (clãs/guildas) permitem que jogadores se unam. Um jogador pertence a no máximo um grupo. A associação possui papéis e permissões, todos aplicados no servidor.
Habilitar Grupos
Ative os Grupos no painel e defina os padrões (política de entrada, máximo de membros). Nenhuma configuração no cliente é necessária além de uma sessão ativa.
join_policy é um destes: "open", "request", "invite_only", "closed".
Criando um Grupo
Crie um grupo com um nome e configurações opcionais, depois leia group_created. O criador se torna o líder.
gmda_createGroup("My Clan", { tag: "CLAN", join_policy: "request" }); // -> group_created# group: Dictionary
{
"id": String, # pass this to join/info/request
"name": String,
"tag": String,
"description": String,
"join_policy": "open" | "request" | "invite_only" | "closed",
"max_members": int,
"member_count": int,
"created_at": String,
"my_role": String # your role in this group
}Navegando e Entrando
Busque grupos e entre em um aberto (ou solicite entrada em um grupo apenas por solicitação).
gmda_listGroups("clan"); // -> groups_listed
gmda_joinGroup("group_id"); // grupos abertos -> group_joined# groups: Array, each group (no my_role here):
{
"id": String,
"name": String,
"tag": String,
"description": String,
"join_policy": String,
"max_members": int,
"member_count": int,
"created_at": String
}Informações e Membros do Grupo
Obtenha um grupo com sua lista de membros. Omita o id para o seu próprio grupo.
gmda_getGroupInfo(); // próprio grupo -> group_info_loaded
gmda_getGroupInfo("group_id"); // um grupo específico# group: Dictionary (same shape as Create a Group), or {} if you have none
# members: Array, each member:
{
"player_key": String,
"player_name": String,
"role": String,
"joined_at": String
}Convites
Convide um jogador, liste os convites e responda ou cancele.
gmda_sendGroupInvite("player_key"); // -> group_invite_sent
gmda_listGroupInvitations(); // -> group_invitations_listed
gmda_respondGroupInvitation("invitation_id", true); // -> group_invitation_responded# group_invitations_listed -> invitations: Array, each:
{
"id": String,
"direction": "incoming" | "outgoing",
"group_id": String,
"group_name": String,
"counterpart": {
"player_key": String,
"player_name": String
},
"status": String,
"message": String,
"created_at": String,
"responded_at": String, # null while pending
"expires_at": String
}Solicitações de Entrada
Para grupos apenas por solicitação: jogadores pedem para entrar, oficiais aprovam ou rejeitam.
gmda_createGroupRequest("group_id", "let me in"); // -> group_request_created
gmda_listGroupRequests(); // -> group_requests_listed
gmda_respondGroupRequest("request_id", true); // aprovar -> group_request_responded# group_requests_listed -> requests: Array, each:
{
"id": String,
"direction": "incoming" | "outgoing",
"group_id": String,
"group_name": String,
"player": {
"player_key": String,
"player_name": String
},
"status": String,
"message": String,
"created_at": String,
"responded_at": String # null while pending
}Gerenciando Membros
Líderes e oficiais podem expulsar membros, alterar papéis e transferir a liderança.
gmda_kickGroupMember("player_key"); // -> group_member_kicked
gmda_assignGroupRole("player_key", "admin"); // -> group_member_role_assigned
gmda_transferGroupLeadership("player_key"); // -> group_leadership_transferredOs papéis são definidos pelo servidor (ex.: "admin", "member"); "leader" é atribuído somente via transferência.
Saindo e Dissolvendo
Qualquer membro pode sair; o líder pode dissolver o grupo inteiro.
gmda_leaveGroup(); // -> group_left
gmda_disbandGroup(); // apenas líder -> group_disbanded