GameMaker Studio · GML
Grupos y clanes
Los grupos (clanes/gremios) permiten a los jugadores unirse. Un jugador pertenece a lo sumo a un grupo. La membresia tiene roles y permisos, todos aplicados en el servidor.
Habilitar Grupos
Activa Grupos en el panel y establece los valores predeterminados (politica de ingreso, maximo de miembros). No se necesita configuracion del cliente mas alla de una sesion activa.
join_policy es uno de "open", "request", "invite_only", "closed".
Crear un Grupo
Crea un grupo con un nombre y opciones opcionales, luego lee group_created. El creador se convierte en el lider.
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
}Explorar y Unirse
Busca grupos y unete a uno abierto (o solicita unirte a un grupo de solo solicitud).
gmda_listGroups("clan"); // -> groups_listed
gmda_joinGroup("group_id"); // grupos abiertos -> 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
}Info del Grupo y Miembros
Obtiene un grupo con su lista de miembros. Omite el id para tu propio grupo.
gmda_getGroupInfo(); // tu grupo -> group_info_loaded
gmda_getGroupInfo("group_id"); // un grupo especifico# 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
}Invitaciones
Invita a un jugador, lista invitaciones y responde o cancela.
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
}Solicitudes de Ingreso
Para grupos de solo solicitud: los jugadores piden unirse, los oficiales aprueban o rechazan.
gmda_createGroupRequest("group_id", "let me in"); // -> group_request_created
gmda_listGroupRequests(); // -> group_requests_listed
gmda_respondGroupRequest("request_id", true); // aprobar -> 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
}Gestionar Miembros
Lideres y oficiales pueden expulsar miembros, cambiar roles y transferir el liderazgo.
gmda_kickGroupMember("player_key"); // -> group_member_kicked
gmda_assignGroupRole("player_key", "admin"); // -> group_member_role_assigned
gmda_transferGroupLeadership("player_key"); // -> group_leadership_transferredLos roles los define el servidor (p. ej. "admin", "member"); "leader" se asigna solo mediante transferencia.
Salir y Disolver
Cualquier miembro puede salir; el lider puede disolver el grupo entero.
gmda_leaveGroup(); // -> group_left
gmda_disbandGroup(); // solo el lider -> group_disbanded