🤓Exemples - Équipes
Ce document contient des exemples pratiques pour la gestion des équipes avec le plugin Horizons.
Table des matières
Gestion basique des équipes
Vérifier l'équipe d'un joueur
command /myteam:
trigger:
set {_team} to team of player
if {_team} is set:
send "&a🏆 Vous êtes dans l'équipe: &6%{_team}%" to player
send "&7Nom d'affichage: &e%display name of team {_team}%" to player
send "&7Préfixe: %prefix of team {_team}%" to player
send "&7Score actuel: &a%score of team {_team}% points" to player
else:
send "&cVous n'êtes dans aucune équipe!" to player
Rejoindre une équipe
command /jointeam <text>:
trigger:
set {_teamName} to arg-1
if team {_teamName} exists:
if player has a team:
send "&cVous êtes déjà dans une équipe! Utilisez /leaveteam d'abord." to player
else:
set team of player to {_teamName}
send "&a✅ Vous avez rejoint l'équipe &6%{_teamName}%!" to player
broadcast "&e%player% a rejoint l'équipe &6%{_teamName}%!"
else:
send "&cL'équipe '%{_teamName}%' n'existe pas!" to player
Quitter son équipe
command /leaveteam:
trigger:
if player has a team:
set {_team} to team of player
remove player from their team
send "&a✅ Vous avez quitté l'équipe &6%{_team}%!" to player
broadcast "&e%player% a quitté l'équipe &6%{_team}%!"
else:
send "&cVous n'êtes dans aucune équipe!" to player
Systèmes de score
Système de récompense basé sur le score
command /checkreward:
trigger:
set {_team} to team of player
if {_team} is set:
set {_score} to score of team {_team}
if {_score} >= 1000:
send "&a🎉 Votre équipe a débloqué le rang LÉGENDAIRE!" to player
give diamond sword named "&6Épée Légendaire" to player
else if {_score} >= 500:
send "&e⭐ Votre équipe a le rang EXPERT!" to player
give iron sword named "&eÉpée d'Expert" to player
else if {_score} >= 100:
send "&7🥉 Votre équipe a le rang DÉBUTANT!" to player
give stone sword named "&7Épée de Débutant" to player
else:
send "&cVotre équipe n'a pas encore de rang. Score: %{_score}%" to player
else:
send "&cVous devez être dans une équipe!" to player
Système de bonus quotidien
every day at 12:00:
broadcast "&6🌟 Distribution des bonus quotidiens!"
loop all teams:
set {_team} to loop-value
set {_score} to score of team {_team}
set {_memberCount} to size of members of team {_team}
# Bonus basé sur l'activité
if {_memberCount} >= 5:
add 100 to score of team {_team}
set {_bonus} to 100
else if {_memberCount} >= 3:
add 50 to score of team {_team}
set {_bonus} to 50
else:
add 25 to score of team {_team}
set {_bonus} to 25
# Notification aux membres
loop all members of team {_team}:
send "&a💰 Bonus quotidien: +%{_bonus}% points pour votre équipe!" to loop-value-2 parsed as player
Système de pénalités
on death of player:
if player has a team:
set {_team} to team of player
remove 10 from score of team {_team}
send "&c💀 Votre mort a coûté 10 points à votre équipe!" to player
# Notification à l'équipe
loop all members of team {_team}:
if loop-value parsed as player is not player:
send "&c⚠️ %player% est mort! L'équipe perd 10 points." to loop-value parsed as player
Classements et leaderboards
Leaderboard complet
command /leaderboard:
aliases: /lb, /top, /classement
trigger:
send "&6╔══════════════════════════════════════╗" to player
send "&6║ &l🏆 CLASSEMENT DES ÉQUIPES &6║" to player
send "&6╚══════════════════════════════════════╝" to player
set {_teams::*} to all teams sorted by score
set {_position} to 1
loop {_teams::*}:
set {_team} to loop-value
set {_score} to score of team {_team}
set {_members} to size of members of team {_team}
set {_displayName} to display name of team {_team}
if {_position} <= 10:
# Médailles pour le top 3
if {_position} is 1:
set {_medal} to "&6🥇"
else if {_position} is 2:
set {_medal} to "&7🥈"
else if {_position} is 3:
set {_medal} to "&c🥉"
else:
set {_medal} to "&e%{_position}%."
send "%{_medal}% &f%{_displayName}% &7- &a%{_score}% pts &7(%{_members}% membres)" to player
add 1 to {_position}
send "&6════════════════════════════════════════" to player
Leaderboard personnel
command /teamstats:
trigger:
set {_team} to team of player
if {_team} is set:
set {_teams::*} to all teams sorted by score
set {_position} to 1
loop {_teams::*}:
if loop-value is {_team}:
exit loop
add 1 to {_position}
set {_score} to score of team {_team}
set {_members::*} to members of team {_team}
set {_displayName} to display name of team {_team}
send "&6╔══════════════════════════════════════╗" to player
send "&6║ &l📊 STATS DE L'ÉQUIPE &6║" to player
send "&6╚══════════════════════════════════════╝" to player
send "&eÉquipe: &f%{_displayName}%" to player
send "&ePosition: &a#%{_position}%" to player
send "&eScore: &a%{_score}% points" to player
send "&eMembres (%size of {_members::*}%):" to player
loop {_members::*}:
send "&7 - &f%loop-value%" to player
else:
send "&cVous n'êtes dans aucune équipe!" to player
Commandes d'administration
Création d'équipe avancée
command /createteam <text> <text> <text>:
permission: admin.teams
usage: /createteam <nom> <préfixe> <nom_affichage>
trigger:
set {_name} to arg-1
set {_prefix} to arg-2
set {_displayName} to arg-3
if team {_name} exists:
send "&cL'équipe '%{_name}%' existe déjà!" to player
else:
create team {_name} with prefix {_prefix} and display name {_displayName}
send "&a✅ Équipe '%{_name}%' créée avec succès!" to player
send "&7Préfixe: %{_prefix}%" to player
send "&7Nom d'affichage: &e%{_displayName}%" to player
broadcast "&6📢 Nouvelle équipe créée: &e%{_displayName}%!"
Gestion des scores par admin
command /teamscore <text> <text> [<number>]:
permission: admin.teams.score
usage: /teamscore <équipe> <set/add/remove> [montant]
trigger:
set {_team} to arg-1
set {_action} to arg-2
set {_amount} to arg-3
if team {_team} doesn't exist:
send "&cL'équipe '%{_team}%' n'existe pas!" to player
stop
if {_action} is "set":
if {_amount} is set:
set score of team {_team} to {_amount}
send "&a✅ Score de l'équipe %{_team}% défini à %{_amount}%!" to player
else:
send "&cVeuillez spécifier un montant!" to player
else if {_action} is "add":
if {_amount} is set:
add {_amount} to score of team {_team}
send "&a✅ +%{_amount}% points ajoutés à l'équipe %{_team}%!" to player
else:
send "&cVeuillez spécifier un montant!" to player
else if {_action} is "remove":
if {_amount} is set:
remove {_amount} from score of team {_team}
send "&a✅ -%{_amount}% points retirés de l'équipe %{_team}%!" to player
else:
send "&cVeuillez spécifier un montant!" to player
else:
send "&cAction invalide! Utilisez: set, add ou remove" to player
Transfert de joueur
command /transferplayer <player> <text>:
permission: admin.teams.transfer
usage: /transferplayer <joueur> <équipe>
trigger:
set {_targetPlayer} to arg-1
set {_targetTeam} to arg-2
if team {_targetTeam} doesn't exist:
send "&cL'équipe '%{_targetTeam}%' n'existe pas!" to player
stop
if {_targetPlayer} has a team:
set {_oldTeam} to team of {_targetPlayer}
send "&7%{_targetPlayer}% était dans l'équipe: &e%{_oldTeam}%" to player
set team of {_targetPlayer} to {_targetTeam}
send "&a✅ %{_targetPlayer}% a été transféré dans l'équipe %{_targetTeam}%!" to player
send "&a📧 Vous avez été transféré dans l'équipe &6%{_targetTeam}%!" to {_targetPlayer}
Événements et notifications
Système de notifications d'équipe
function teamBroadcast(team: text, message: text):
loop all members of team {_team}:
send {_message} to loop-value parsed as player
on join:
wait 1 second
if player has a team:
set {_team} to team of player
teamBroadcast({_team}, "&a👋 %player% s'est connecté!")
send "&a🏠 Bienvenue dans l'équipe &6%{_team}%!" to player
on quit:
if player has a team:
set {_team} to team of player
teamBroadcast({_team}, "&c👋 %player% s'est déconnecté!")
Système de milestones d'équipe
function checkTeamMilestone(team: text):
set {_score} to score of team {_team}
# Vérifier les paliers
if {_score} is 100:
broadcast "&6🎯 L'équipe &e%{_team}% &6a atteint 100 points!"
loop all members of team {_team}:
give 5 emeralds to loop-value parsed as player
else if {_score} is 500:
broadcast "&6🎯 L'équipe &e%{_team}% &6a atteint 500 points!"
loop all members of team {_team}:
give diamond to loop-value parsed as player
else if {_score} is 1000:
broadcast "&6🎯 L'équipe &e%{_team}% &6a atteint 1000 points!"
loop all members of team {_team}:
give diamond sword named "&6Épée Légendaire" to loop-value parsed as player
# Déclencher la vérification quand le score change
every 30 seconds:
loop all teams:
checkTeamMilestone(loop-value)
Chat d'équipe
command /tc <text>:
aliases: /teamchat
usage: /tc <message>
trigger:
if player has a team:
set {_team} to team of player
set {_prefix} to prefix of team {_team}
set {_message} to arg-1
loop all members of team {_team}:
send "&8[&6ÉQUIPE&8] %{_prefix}%%player%&7: &f%{_message}%" to loop-value parsed as player
else:
send "&cVous devez être dans une équipe pour utiliser le chat d'équipe!" to player
Notes importantes
Performance : Les boucles sur toutes les équipes peuvent être coûteuses. Utilisez-les avec modération.
Synchronisation : En mode multi-serveur, les changements d'équipes sont automatiquement synchronisés.
Permissions : Adaptez les permissions selon votre configuration serveur.
Stockage : Les données d'équipes sont persistantes et sauvegardées automatiquement.