Inscrit le: 11 Fév 2011 Messages: 2151 Sujets: 114 Spécialité en worldedit: Chasser le Dragon, puis l'exterminer proprement avec une petite cuillère et une poêle.
Posté le: 03/09/11 17:40 Sujet du message: Créer un système d'administration (mute, kick, etc...)
Ce tutoriel portera sur la création d'un système d'administration/modération dans une map. Système présent dans certaines de mes maps comme BotEF.
Ce tutoriel sera en GUI uniquement.
Ce tuto vous explique comment créer les commandes suivantes : -kick, -mute, -unmute, -aa, -ra, -pause, -unpause, -visibility et -visibility off (tout ça pour l'instant.)
Les commandes seront utilisables en utilisant la couleur du joueur, le nom du joueur ou le numéro du slot du joueur. Et seront utilisables en fonction du nom du joueur.
Tout cela est faisable grâce à certaines fonctions GUI sur les strings.
I - L'initialisation :
Vous avez besoin de plusieurs variables que vous devrez set à l'initialisation de la map.
Basename de type Chaîne/String (français/anglais) avec un déploiement 16. Elle stockera les noms de chacun des joueurs.
Couleur_txt de type Chaîne/String (français/anglais) avec un déploiement 12. Elle stockera les couleurs des joueurs (en français ou en anglais, au choix)
Donc maintenant, dans un déclencheur Map Initialisation, vous devez set ces 2variables.
Gui:
Trigger:
Map initialisation
Evénements
Map initialization
Conditions
Actions
For each (Integer A) from 1 to 16, do (Actions)
Boucle - Actions
Set BaseName[(Integer A)] = (Name of (Player((Integer A))))
Set Couleur_txt[1] = red Set Couleur_txt[2] = blue Set Couleur_txt[3] = teal Set Couleur_txt[4] = purple Set Couleur_txt[5] = yellow Set Couleur_txt[6] = orange Set Couleur_txt[7] = green Set Couleur_txt[8] = pink Set Couleur_txt[9] = grey Set Couleur_txt[10] = lightblue Set Couleur_txt[11] = darkgreen Set Couleur_txt[12] = brown
Dans mon exemple, les couleurs sont en anglais, mais vous pouvez les mettre en français (rouge, bleu, cyan, violet, etc...).
Donc, maintenant qu'on a ces variables définies, nous allons passer aux autres déclencheurs, à commencer par la commande de Kick.
II - Commande de Kick
Le kick vous permet de faire perdre un joueur et de lui faire ainsi quitter la partie.
Dans la condition, j'ai mis mon nom comme exemple (et aussi comme ça vient de BotEF).
Vous avez besoin d'une condition (dans le or) par compte pouvant utiliser cette commande.
Gui:
Trigger:
Kick Other
Evénements
Joueur - Joueur 2 (Bleu) types a chat message containing -kick as Une sous-chaîne Joueur - Joueur 3 (Cyan) types a chat message containing -kick as Une sous-chaîne Joueur - Joueur 4 (Pourpre) types a chat message containing -kick as Une sous-chaîne Joueur - Joueur 5 (Jaune) types a chat message containing -kick as Une sous-chaîne Joueur - Joueur 6 (Orange) types a chat message containing -kick as Une sous-chaîne Joueur - Joueur 8 (Rose) types a chat message containing -kick as Une sous-chaîne Joueur - Joueur 9 (gris) types a chat message containing -kick as Une sous-chaîne Joueur - Joueur 10 (Bleu clair) types a chat message containing -kick as Une sous-chaîne Joueur - Joueur 11 (Vert foncé) types a chat message containing -kick as Une sous-chaîne Joueur - Joueur 12 (Marron) types a chat message containing -kick as Une sous-chaîne
Conditions
Or - Any (Conditions) are true
Conditions
BaseName[(Player number of (Triggering player))] Egal à Vladadamm [Admin] Egal à (Substring(BaseName[(Player number of (Triggering player))], 1, 7))
Actions
For each (Integer A) from 1 to 12, do (Actions)
Boucle - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
Or - Any (Conditions) are true
Conditions
(Substring((Entered chat string), 7, (Length of (Entered chat string)))) Egal à (Name of (Player((Integer A)))) (Substring((Entered chat string), 7, 8)) Egal à (String((Integer A))) (Substring((Entered chat string), 7, (Length of (Entered chat string)))) Egal à (Substring((Name of (Player((Integer A)))), 1, 5)) (Substring((Entered chat string), 7, (Length of (Entered chat string)))) Egal à Couleur_txt[(Integer A)]
Alors - Actions
Partie - Display to (All players) for 10.00 seconds the text: ((Name of (Triggering player)) + ( a kické + ((Name of (Player((Integer A)))) + de la partie.))) Partie - Defeat (Player((Integer A))) with the message: Vous avez été kic...
Sinon - Actions
Un autre système de kick, mieux expliqué mais moins complet est disponible ICI.
III - Système de Mute/Unmute :
La commande de Mute consiste à empêcher un autre joueur de parler. Jusqu'à ce que l'on utilise la commande d'Unmute pour lui redonner la possibilité de parler.
Il vous faut faire 2déclencheurs : Un pour le Mute, et un autre pour le Unmute.
Gui:
Trigger:
Mute
Evénements
Joueur - Joueur 2 (Bleu) types a chat message containing -mute as Une sous-chaîne Joueur - Joueur 3 (Cyan) types a chat message containing -mute as Une sous-chaîne Joueur - Joueur 4 (Pourpre) types a chat message containing -mute as Une sous-chaîne Joueur - Joueur 5 (Jaune) types a chat message containing -mute as Une sous-chaîne Joueur - Joueur 6 (Orange) types a chat message containing -mute as Une sous-chaîne Joueur - Joueur 8 (Rose) types a chat message containing -mute as Une sous-chaîne Joueur - Joueur 9 (gris) types a chat message containing -mute as Une sous-chaîne Joueur - Joueur 10 (Bleu clair) types a chat message containing -mute as Une sous-chaîne Joueur - Joueur 11 (Vert foncé) types a chat message containing -mute as Une sous-chaîne Joueur - Joueur 12 (Marron) types a chat message containing -mute as Une sous-chaîne
Conditions
Or - Any (Conditions) are true
Conditions
BaseName[(Player number of (Triggering player))] Egal à Vladadamm BaseName[(Player number of (Triggering player))] Egal à Wareditor BaseName[(Player number of (Triggering player))] Egal à DaKanibal BaseName[(Player number of (Triggering player))] Egal à Kisame97one [Admin] Egal à (Substring(BaseName[(Player number of (Triggering player))], 1, 7))
Actions
For each (Integer A) from 1 to 12, do (Actions)
Boucle - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
Or - Any (Conditions) are true
Conditions
(Substring((Entered chat string), 7, (Length of (Entered chat string)))) Egal à (Name of (Player((Integer A)))) (Substring((Entered chat string), 7, 8)) Egal à (String((Integer A))) (Substring((Entered chat string), 7, (Length of (Entered chat string)))) Egal à (Substring((Name of (Player((Integer A)))), 1, 5)) (Substring((Entered chat string), 7, (Length of (Entered chat string)))) Egal à Couleur_txt[(Integer A)]
(Player((Integer A))) Différent de (Triggering player)
Alors - Actions
Partie - Display to (All players) for 10.00 seconds the text: ((Name of (Triggering player)) + ( a mute + ((Name of (Player((Integer A)))) + !))) Joueur - Set name of (Player((Integer A))) to ( + (Name of (Player((Integer A)))))
Sinon - Actions
Gui:
Trigger:
Unmute
Evénements
Joueur - Joueur 2 (Bleu) types a chat message containing -unmute as Une sous-chaîne Joueur - Joueur 3 (Cyan) types a chat message containing -unmute as Une sous-chaîne Joueur - Joueur 4 (Pourpre) types a chat message containing -unmute as Une sous-chaîne Joueur - Joueur 5 (Jaune) types a chat message containing -unmute as Une sous-chaîne Joueur - Joueur 6 (Orange) types a chat message containing -unmute as Une sous-chaîne Joueur - Joueur 8 (Rose) types a chat message containing -unmute as Une sous-chaîne Joueur - Joueur 9 (gris) types a chat message containing -unmute as Une sous-chaîne Joueur - Joueur 10 (Bleu clair) types a chat message containing -unmute as Une sous-chaîne Joueur - Joueur 11 (Vert foncé) types a chat message containing -unmute as Une sous-chaîne Joueur - Joueur 12 (Marron) types a chat message containing -unmute as Une sous-chaîne
Conditions
Or - Any (Conditions) are true
Conditions
BaseName[(Player number of (Triggering player))] Egal à Vladadamm BaseName[(Player number of (Triggering player))] Egal à Wareditor BaseName[(Player number of (Triggering player))] Egal à DaKanibal BaseName[(Player number of (Triggering player))] Egal à Kisame97one [Admin] Egal à (Substring(BaseName[(Player number of (Triggering player))], 1, 7))
Actions
For each (Integer A) from 1 to 12, do (Actions)
Boucle - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
Or - Any (Conditions) are true
Conditions
(Substring((Entered chat string), 9, (Length of (Entered chat string)))) Egal à BaseName[(Integer A)] (Substring((Entered chat string), 9, 10)) Egal à (String((Integer A))) (Substring((Entered chat string), 9, (Length of (Entered chat string)))) Egal à (Substring(BaseName[(Integer A)], 1, 5)) (Substring((Entered chat string), 9, (Length of (Entered chat string)))) Egal à Couleur_txt[(Integer A)]
Alors - Actions
Joueur - Set name of (Player((Integer A))) to BaseName[(Integer A)] Partie - Display to (All players) for 10.00 seconds the text: ((Name of (Triggering player)) + ( a unmute + ((Name of (Player((Integer A)))) + !)))
Sinon - Actions
Ceci n'est pas un vrai mute, car à ma connaissance, il est impossible de reproduire par déclencheur le mute des bots.
Ce système ne vous permettra uniquement de ne pas voir les messages écrits par le joueur muté si vous n'allez pas dans la Messagerie (F12).
IV - Add admin/Remove Admin :
Ces deux commandes vous permettrons de rajouter les droits d'admins à un joueur, ou de les lui enlever.
Le système est simple, il modifie juste la valeur de la variable Basename d'un joueur en rajoutant [admin] ou [noob] (pour enlever) comme préfixe.
Gui:
Trigger:
Add admin
Evénements
Joueur - Joueur 2 (Bleu) types a chat message containing -aa as Une sous-chaîne Joueur - Joueur 3 (Cyan) types a chat message containing -aa as Une sous-chaîne Joueur - Joueur 4 (Pourpre) types a chat message containing -aa as Une sous-chaîne Joueur - Joueur 5 (Jaune) types a chat message containing -aa as Une sous-chaîne Joueur - Joueur 6 (Orange) types a chat message containing -aa as Une sous-chaîne Joueur - Joueur 8 (Rose) types a chat message containing -aa as Une sous-chaîne Joueur - Joueur 9 (gris) types a chat message containing -aa as Une sous-chaîne Joueur - Joueur 10 (Bleu clair) types a chat message containing -aa as Une sous-chaîne Joueur - Joueur 11 (Vert foncé) types a chat message containing -aa as Une sous-chaîne Joueur - Joueur 12 (Marron) types a chat message containing -aa as Une sous-chaîne
Conditions
Or - Any (Conditions) are true
Conditions
BaseName[(Player number of (Triggering player))] Egal à Vladadamm [Admin] Egal à (Substring(BaseName[(Player number of (Triggering player))], 1, 7))
Actions
For each (Integer A) from 1 to 12, do (Actions)
Boucle - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
Or - Any (Conditions) are true
Conditions
(Substring((Entered chat string), 5, (Length of (Entered chat string)))) Egal à (Name of (Player((Integer A)))) (Substring((Entered chat string), 5, 6)) Egal à (String((Integer A))) (Substring((Entered chat string), 5, (Length of (Entered chat string)))) Egal à (Substring((Name of (Player((Integer A)))), 1, 5)) (Substring((Entered chat string), 5, (Length of (Entered chat string)))) Egal à Couleur_txt[(Integer A)]
(Player((Integer A))) Différent de (Triggering player)
Alors - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Substring(BaseName[(Integer A)], 1, 6)) Egal à [noob]
Alors - Actions
Set BaseName[(Integer A)] = ([Admin] + (Substring(BaseName[(Integer A)], 7, (Length of BaseName[(Integer A)]))))
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Substring(BaseName[(Integer A)], 1, 7)) Différent de [Admin]
Alors - Actions
Set BaseName[(Integer A)] = ([Admin] + BaseName[(Integer A)])
Sinon - Actions
Sinon - Actions
Gui:
Trigger:
Remove admin
Evénements
Joueur - Joueur 2 (Bleu) types a chat message containing -ra as Une sous-chaîne Joueur - Joueur 3 (Cyan) types a chat message containing -ra as Une sous-chaîne Joueur - Joueur 4 (Pourpre) types a chat message containing -ra as Une sous-chaîne Joueur - Joueur 5 (Jaune) types a chat message containing -ra as Une sous-chaîne Joueur - Joueur 6 (Orange) types a chat message containing -ra as Une sous-chaîne Joueur - Joueur 8 (Rose) types a chat message containing -ra as Une sous-chaîne Joueur - Joueur 9 (gris) types a chat message containing -ra as Une sous-chaîne Joueur - Joueur 10 (Bleu clair) types a chat message containing -ra as Une sous-chaîne Joueur - Joueur 11 (Vert foncé) types a chat message containing -ra as Une sous-chaîne Joueur - Joueur 12 (Marron) types a chat message containing -ra as Une sous-chaîne
Conditions
Or - Any (Conditions) are true
Conditions
BaseName[(Player number of (Triggering player))] Egal à Vladadamm [Admin] Egal à (Substring(BaseName[(Player number of (Triggering player))], 1, 7))
Actions
For each (Integer A) from 1 to 12, do (Actions)
Boucle - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
Or - Any (Conditions) are true
Conditions
(Substring((Entered chat string), 5, (Length of (Entered chat string)))) Egal à (Name of (Player((Integer A)))) (Substring((Entered chat string), 5, 6)) Egal à (String((Integer A))) (Substring((Entered chat string), 5, (Length of (Entered chat string)))) Egal à (Substring((Name of (Player((Integer A)))), 1, 5)) (Substring((Entered chat string), 5, (Length of (Entered chat string)))) Egal à Couleur_txt[(Integer A)]
(Player((Integer A))) Différent de (Triggering player)
Alors - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Substring(BaseName[(Integer A)], 1, 7)) Egal à [Admin]
Alors - Actions
Set BaseName[(Integer A)] = ([noob] + (Substring(BaseName[(Integer A)], 8, (Length of BaseName[(Integer A)]))))
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Substring(BaseName[(Integer A)], 1, 6)) Différent de [noob]
Alors - Actions
Set BaseName[(Integer A)] = ([noob] + BaseName[(Integer A)])
Sinon - Actions
Sinon - Actions
V - Pause / Unpause :
Ces deux commandes, simples à coder vous permettront de mettre en pause ou d'enlever une pause n'importe quand dans la partie, en tapant -pause ou -unpause.
Ce n'est pas vraiment utile sur le fond. Mais ça peut toujours servir.
Gui:
Trigger:
Pause
Evénements
Joueur - Joueur 2 (Bleu) types a chat message containing -pause as Résultat équivalent Joueur - Joueur 3 (Cyan) types a chat message containing -pause as Résultat équivalent Joueur - Joueur 4 (Pourpre) types a chat message containing -pause as Résultat équivalent Joueur - Joueur 5 (Jaune) types a chat message containing -pause as Résultat équivalent Joueur - Joueur 6 (Orange) types a chat message containing -pause as Résultat équivalent Joueur - Joueur 8 (Rose) types a chat message containing -pause as Résultat équivalent Joueur - Joueur 9 (gris) types a chat message containing -pause as Résultat équivalent Joueur - Joueur 10 (Bleu clair) types a chat message containing -pause as Résultat équivalent Joueur - Joueur 11 (Vert foncé) types a chat message containing -pause as Résultat équivalent Joueur - Joueur 12 (Marron) types a chat message containing -pause as Résultat équivalent
Conditions
Or - Any (Conditions) are true
Conditions
BaseName[(Player number of (Triggering player))] Egal à Vladadamm BaseName[(Player number of (Triggering player))] Egal à Wareditor BaseName[(Player number of (Triggering player))] Egal à DaKanibal BaseName[(Player number of (Triggering player))] Egal à Kisame97one [Admin] Egal à (Substring(BaseName[(Player number of (Triggering player))], 1, 7))
Actions
Partie - Pause the game
Gui:
Trigger:
Unpause
Evénements
Joueur - Joueur 2 (Bleu) types a chat message containing -unpause as Résultat équivalent Joueur - Joueur 3 (Cyan) types a chat message containing -unpause as Résultat équivalent Joueur - Joueur 4 (Pourpre) types a chat message containing -unpause as Résultat équivalent Joueur - Joueur 5 (Jaune) types a chat message containing -unpause as Résultat équivalent Joueur - Joueur 6 (Orange) types a chat message containing -unpause as Résultat équivalent Joueur - Joueur 8 (Rose) types a chat message containing -unpause as Résultat équivalent Joueur - Joueur 9 (gris) types a chat message containing -unpause as Résultat équivalent Joueur - Joueur 10 (Bleu clair) types a chat message containing -unpause as Résultat équivalent Joueur - Joueur 11 (Vert foncé) types a chat message containing -unpause as Résultat équivalent Joueur - Joueur 12 (Marron) types a chat message containing -unpause as Résultat équivalent
Conditions
Or - Any (Conditions) are true
Conditions
BaseName[(Player number of (Triggering player))] Egal à Vladadamm BaseName[(Player number of (Triggering player))] Egal à Wareditor BaseName[(Player number of (Triggering player))] Egal à DaKanibal BaseName[(Player number of (Triggering player))] Egal à Kisame97one [Admin] Egal à (Substring(BaseName[(Player number of (Triggering player))], 1, 7))
Actions
Partie - Unpause the game
VI - Visibility / Whosyourdaddy :
Ces nouvelles commandes (visibility et visibility off) vous permettront à tout moment de voir la map en entier (sans fog, ni rien).
C'est comme la commande de cheat nommée Whosyourdaddy.
Pour mettre en place la commande -visibility (et son inverse "visibility off"), vous aurez besoin de créer une nouvelle variable (que j'appelle Visibility_AC dans mon exemple) de type Modificateur de Visibilité avec un déploiement 12.
Gui:
Trigger:
Visibility
Evénements
Joueur - Joueur 2 (Bleu) types a chat message containing -visibility as Résultat équivalent Joueur - Joueur 3 (Cyan) types a chat message containing -visibility as Résultat équivalent Joueur - Joueur 4 (Pourpre) types a chat message containing -visibility as Résultat équivalent Joueur - Joueur 5 (Jaune) types a chat message containing -visibility as Résultat équivalent Joueur - Joueur 6 (Orange) types a chat message containing -visibility as Résultat équivalent Joueur - Joueur 8 (Rose) types a chat message containing -visibility as Résultat équivalent Joueur - Joueur 9 (gris) types a chat message containing -visibility as Résultat équivalent Joueur - Joueur 10 (Bleu clair) types a chat message containing -visibility as Résultat équivalent Joueur - Joueur 11 (Vert foncé) types a chat message containing -visibility as Résultat équivalent Joueur - Joueur 12 (Marron) types a chat message containing -visibility as Résultat équivalent
Conditions
Or - Any (Conditions) are true
Conditions
BaseName[(Player number of (Triggering player))] Egal à Vladadamm
Actions
For each (Integer A) from 1 to 16, do (Actions)
Boucle - Actions
Visibilité - Destroy Visibility_AC[(Integer A)] Visibilité - Create an initially Activé visibility modifier for (Player((Integer A))) emitting Visibilité across (Entire map) Set Visibility_AC[(Integer A)] = (Last created visibility modifier)
Gui:
Trigger:
Visibility Off
Evénements
Joueur - Joueur 2 (Bleu) types a chat message containing -visibility off as Résultat équivalent Joueur - Joueur 3 (Cyan) types a chat message containing -visibility off as Résultat équivalent Joueur - Joueur 4 (Pourpre) types a chat message containing -visibility off as Résultat équivalent Joueur - Joueur 5 (Jaune) types a chat message containing -visibility off as Résultat équivalent Joueur - Joueur 6 (Orange) types a chat message containing -visibility off as Résultat équivalent Joueur - Joueur 8 (Rose) types a chat message containing -visibility off as Résultat équivalent Joueur - Joueur 9 (gris) types a chat message containing -visibility off as Résultat équivalent Joueur - Joueur 10 (Bleu clair) types a chat message containing -visibility off as Résultat équivalent Joueur - Joueur 11 (Vert foncé) types a chat message containing -visibility off as Résultat équivalent Joueur - Joueur 12 (Marron) types a chat message containing -visibility off as Résultat équivalent
Conditions
Or - Any (Conditions) are true
Conditions
BaseName[(Player number of (Triggering player))] Egal à Vladadamm
Actions
For each (Integer A) from 1 to 12, do (Actions)
Boucle - Actions
Visibilité - Destroy Visibility_AC[(Integer A)]
Ce tutoriel n'est pas encore complètement fini, et il manque des explications pour l'instant. _________________
Dernière édition par Vladadamm le 30/09/11 18:10; édité 2 fois
Inscrit le: 11 Fév 2011 Messages: 2151 Sujets: 114 Spécialité en worldedit: Chasser le Dragon, puis l'exterminer proprement avec une petite cuillère et une poêle.
Posté le: 05/09/11 16:43 Sujet du message:
Rajout d'une Partie V et d'une Partie VI pour compléter le système et le tutoriel.
A noter que je n'ai pas encore mis les explications en détails (mais ça arrive) _________________
Inscrit le: 11 Fév 2011 Messages: 2151 Sujets: 114 Spécialité en worldedit: Chasser le Dragon, puis l'exterminer proprement avec une petite cuillère et une poêle.
Posté le: 30/09/11 18:12 Sujet du message:
Rajout de plusieurs explications, qui seront sûrement un peu utiles. _________________
Inscrit le: 11 Fév 2011 Messages: 2151 Sujets: 114 Spécialité en worldedit: Chasser le Dragon, puis l'exterminer proprement avec une petite cuillère et une poêle.
Posté le: 30/09/11 19:14 Sujet du message:
Blacklabel a écrit:
Tu peux ajouter "Comment mettre un mode de jeu" s'il te plait ?
C'est pas la même chose ^^ Et cela dépend de beaucoup de choses. _________________
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum