GameMaker Studio · GML
Groupes et clans
Les groupes (clans/guildes) permettent aux joueurs de se rassembler. Un joueur appartient a au plus un groupe. L'appartenance comporte des roles et des permissions, tous appliques sur le serveur.
Activer les Groupes
Activez les Groupes dans le panneau et definissez les valeurs par defaut (politique d'adhesion, nombre maximum de membres). Aucune configuration client n'est necessaire au-dela d'une session active.
join_policy est l'une des valeurs "open", "request", "invite_only", "closed".
Creer un Groupe
Creez un groupe avec un nom et des parametres optionnels, puis lisez group_created. Le createur devient le chef.
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
}Parcourir et Rejoindre
Recherchez des groupes et rejoignez-en un ouvert (ou demandez a rejoindre un groupe sur demande uniquement).
gmda_listGroups("clan"); // -> groups_listed
gmda_joinGroup("group_id"); // groupes ouverts -> 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
}Infos du Groupe et Membres
Recuperez un groupe avec sa liste de membres. Omettez l'id pour votre propre groupe.
gmda_getGroupInfo(); // propre groupe -> group_info_loaded
gmda_getGroupInfo("group_id"); // un groupe specifique# 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
}Invitations
Invitez un joueur, listez les invitations, et repondez ou annulez.
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
}Demandes d'Adhesion
Pour les groupes sur demande uniquement : les joueurs demandent a rejoindre, les officiers approuvent ou rejettent.
gmda_createGroupRequest("group_id", "let me in"); // -> group_request_created
gmda_listGroupRequests(); // -> group_requests_listed
gmda_respondGroupRequest("request_id", true); // approve -> 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
}Gerer les Membres
Les chefs et officiers peuvent expulser des membres, changer les roles, et transferer le commandement.
gmda_kickGroupMember("player_key"); // -> group_member_kicked
gmda_assignGroupRole("player_key", "admin"); // -> group_member_role_assigned
gmda_transferGroupLeadership("player_key"); // -> group_leadership_transferredLes roles sont definis par le serveur (p. ex. "admin", "member") ; "leader" n'est attribue que via un transfert.
Quitter et Dissoudre
Tout membre peut quitter ; le chef peut dissoudre tout le groupe.
gmda_leaveGroup(); // -> group_left
gmda_disbandGroup(); // chef uniquement -> group_disbanded