Skip to content

Commandes en jeu

SylvaniaCore deploy edited this page Aug 31, 2026 · 2 revisions

Commandes en jeu


Ordres aux playerbots

⚠️ N'écrivez pas un nouveau système d'ordres. BotGroupAI::ProcessBotCommand (src/server/game/AI/PlayerAI/BotGroupAI/BotGroupAI.cpp:640) en implémente déjà un complet. Il a été découvert après avoir commencé à en réécrire un.

Deux canaux

Canal Qui peut parler
Groupe le chef de groupe uniquement ChatHandler.cpp:369 ne relaie que CHAT_MSG_PARTY_LEADER vers Group::ProcessGroupBotCommand
Chuchotement l'employeur, à un bot précis ChatHandler.cpp:301

⚠️ Tous les ordres prennent le préfixe !

Depuis l'ajout du dialogue LLM (18/08/2026), un ordre s'écrit !follow, pas follow. Sans le préfixe, un mot comme « stop » au milieu d'une phrase figeait le mercenaire. Toute documentation antérieure est périmée.

Les ordres

Ordre Effet
!summon Téléporte le bot auprès de son maître
!follow Reprend le suivi
!stop Reste sur place
!flee Fuit le combat
!attack Attaque la cible sélectionnée du maître
!rite Lance le sort de rituel
!<spellId> Force un sort connu
!c Liste le contenu de ses sacs
!e + lien d'objet Équipe
!ue + lien d'objet Retire
!s + lien d'objet Donne
!u + lien d'objet Utilise
!destroy + lien d'objet Détruit
!talent 1-3 Change de branche de talents
!setting Remise à niveau + rééquipement complet

Ciblage par préfixe (canal de groupe)

Par rôle : @tank · @heal · @dps · @melee · @ranged

Par classe, en pinyin (héritage de l'amont chinois) :

Préfixe Classe Préfixe Classe
@zs Guerrier @dk Chevalier de la mort
@qs Paladin @sm Chaman
@lr Chasseur @fs Mage
@dz Voleur @ss Démoniste
@ms Prêtre @xd Druide

Sans préfixe, l'ordre vaut pour toute la compagnie. Exemple : !@heal stop.

⚠️ Accusés de réception illisibles

Les confirmations envoyées par le core sont chuchotées en chinois GBK mal converti (consoleToUtf8 appliqué à des littéraux déjà cassés). Elles sont illisibles en jeu. C'est un chantier ouvert — voir Chantiers en cours.

Trois pièges corrigés (commit 5aeeb91c)

Aucun n'était visible depuis le code seul :

  1. stop n'arrêtait rien. Le suivi est un générateur MoveFollow du MotionMaster, que ClearMovement() ne retire pas — il faut vider la pile de mouvement.
  2. Le téléport aboutissait côté serveur mais pas côté client. Les positions étaient identiques en base, et pourtant les clients voisins ne voyaient pas le bot bouger : l'étape finale de BotAITeleport::Update diffusait un paquet portant un opcode CLIENT (CMSG_MOVE_FALL_LAND). Corrigé par DestroyForNearbyPlayers() + UpdateObjectVisibility(true).
  3. Jamais de TeleportTo direct sur un bot depuis un module. Passez par l'ordre summon de l'IA : seul BotAITeleport simule l'accusé de réception qu'un bot sans client ne peut pas envoyer.

Montures (commit 70e47be8)

La monture d'un bot de groupe calque celle du maître (à pied / terrestre / vol). Deux pièges du core découverts au passage :

  • TryUpMount() ne savait que monter, jamais descendre — d'où les bots éternellement en selle. Le démontage doit passer par RemoveAurasByType(SPELL_AURA_MOUNTED) : la monture portée peut venir de l'IA de terrain et ne pas être m_UseMountID.
  • BotAIFly::UpdateFly était désactivée par un return; sec en tête de corps. Réflexe à avoir dans ce core : avant de déboguer une fonction qui « ne fait rien », lisez sa première ligne.

Configurer le dialogue des mercenaires

!api <fournisseur> <modèle> <clé> [adresse]
!api off

Détails, fournisseurs et pièges : Module Mercenaires.


Commandes GM du Siège des Capitales

.siege status · .siege start · .siege stop · .siege recruit · .siege history (permission RBAC_PERM_COMMAND_EVENT).

ℹ️ Ces cinq commandes sont déclarées en C++ seulement : elles n'ont pas de ligne dans dc_world.command, donc .help siege ne renvoie rien et elles n'apparaissent pas dans .commands. Elles fonctionnent malgré tout — c'est un manque de documentation, pas de code.


Commandes GM / Admin

Le core expose 560 commandes, toutes préfixées d'un point en jeu (.npc info) et utilisables sans point depuis la console du worldserver. La liste vit dans la table dc_world.command (name, permission, help) — .help <commande> en donne la syntaxe exacte en jeu.

Elles sont classées ci-dessous par usage, pas par ordre alphabétique. La colonne Niv. donne le niveau minimum requis.

Le modèle de permissions

Ce core n'utilise pas un simple « niveau MJ » : il utilise RBAC, où chaque commande exige une permission nommée, et où chaque niveau de sécurité porte un rôle qui agrège ces permissions (dc_auth.rbac_permissions, rbac_linked_permissions, rbac_default_permissions).

Niveau Rôle Commandes accessibles
0 Joueur 15
1 Testeur 25
2 Modérateur 114
3 Maître de jeu 187
4 Administrateur 539

⚠️ L'échelle n'est pas strictement emboîtée

On attend qu'un niveau contienne tout le précédent. C'est faux entre 1 et 2 : le rôle Testeur est une branche latérale, pas un barreau de l'échelle. Quatre commandes qu'un Testeur possède manquent au Modérateur, et ne reviennent qu'au niveau 3 :

gm fly · npc info · respawn · revive

Conséquence concrète : un Modérateur ne peut pas faire .npc info, la commande d'inspection la plus élémentaire. Vérifié sur les tables RBAC de ce serveur — si un modérateur signale qu'une commande d'inspection lui est refusée, c'est probablement cela, pas un bug.

Dans les tableaux qui suivent, la colonne Niv. donne le niveau minimum : pour ces quatre commandes, lire « 1 (Testeur) ou 3+ ».

.account set gmlevel [$compte] #niveau [#realmid]

⚠️ Vingt et une commandes n'appartiennent à aucun niveau

Leur permission n'est portée par aucun rôle par défaut : même un compte de niveau 4 ne les a pas tant qu'elles ne lui sont pas accordées explicitement par .rbac account grant. Ce n'est pas un oubli — ce sont les commandes irréversibles ou sensibles :

Commande Pourquoi elle est hors des rôles
account create · account delete · account set password · account set gmlevel Création, suppression et élévation de comptes
character erase · character deleted delete · character deleted old Suppression définitive de personnages
rbac list · rbac account list · rbac account grant · rbac account deny · rbac account revoke Attribution des permissions elle-même
server exit · server set loglevel Arrêt brutal du processus, verbosité des journaux
account onlinelist · lookup title · modify currency · instance getbossstate · instance setbossstate · debug neargraveyard · reload all spell Divers, non rattachés

.rbac list énumère les permissions, .rbac account list $compte montre ce qu'un compte possède réellement. C'est le bon point de départ quand une commande répond « vous n'avez pas la permission » alors que le niveau semble suffisant.


🧭 Se déplacer et observer

Commande Niv. Effet
.appear [$perso] 2 Se téléporter auprès d'un joueur
.summon [$perso] 2 Faire venir un joueur à soi
.recall [$perso] 2 Renvoyer un joueur à sa position d'avant téléportation
.go xyz #x #y [#z [#carte [#orientation]]] 2 Aller à des coordonnées
.go zonexy #x #y [#zone] 2 Aller à des coordonnées de zone
.go grid #gridX #gridY [#carte] 2 Aller à une grille
.go creature #guid 2 Aller à une créature apparue
.go object #guid 2 Aller à un objet du monde
.go quest #questId 2 Aller au point de départ d'une quête
.go graveyard #id 2 Aller à un cimetière
.go taxinode #id 2 Aller à un nœud de vol
.go trigger #id 2 Aller à un déclencheur de zone
.tele #lieu 2 Se téléporter à un lieu nommé de game_tele
.tele name [$perso] #lieu 2 Y téléporter un joueur
.tele group #lieu 2 Y téléporter tout un groupe
.tele add $nom / .tele del $nom 4 Enregistrer / retirer un lieu nommé
.gps [$nom] 4 Position complète : carte, zone, areaId, phase, grille
.wpgps 4 Position au format d'un point de passage
.distance 4 Distance à la cible
.neargrave [alliance|horde] 4 Cimetière le plus proche
.showarea #areaId / .hidearea #areaId 4 Révéler / masquer une aire de la carte
.bindsight / .unbindsight 4 Voir par les yeux de la cible
.possess / .unpossess 4 Prendre le contrôle de la cible
.movegens 4 Pile des générateurs de mouvement de la cible

.gps est la commande de diagnostic la plus employée du projet. La table area_table de dc_hotfixes est vide — les noms d'aires vivent dans les DB2 sur disque — donc c'est le seul moyen d'obtenir l'areaId réel d'un joueur. Elle est purement informative : elle ne modifie rien, ce qui la rend compatible avec un test « sans commande MJ ». .movegens vaut d'être connue : c'est elle qui aurait montré tout de suite qu'un MoveFollow restait sur la pile d'un bot après un stop (voir plus haut).


🔍 Inspecter — le cœur du débogage

Commande Niv. Effet
.npc info 1 ou 3+ Entrée, GUID, faction, flags, ScriptName, phase, modèle du PNJ ciblé
.gobject info [$entry] 3 Idem pour un objet du monde
.gobject near 3 Objets du monde alentour
.gobject target [#id|$nom] 3 Cibler l'objet le plus proche correspondant
.pinfo [$perso|#GUID] 3 Fiche complète d'un joueur (compte, niveau, position, IP, bannissements)
.guid 3 GUID de la cible
.list creature #id [#max] 4 Toutes les apparitions d'une créature, avec leurs positions
.list object #id [#max] 4 Idem pour un objet du monde
.list item #id [#max] 4 Qui possède un objet donné
.list auras 4 Auras actives et passives de la cible
.list quests 3 Quêtes en cours de la cible
.list scenes 4 Scènes actives de la cible
.list mail $perso 4 Courrier reçu
.lookup creature $nom 4 Chercher une créature par nom
.lookup object $nom 4 Chercher un objet du monde
.lookup item $nom · .lookup itemset $nom 4 Chercher un objet / un ensemble
.lookup quest $nom 4 Chercher une quête
.lookup spell $nom · .lookup spell id #id 4 Chercher un sort
.lookup skill $nom · .lookup faction $nom 4 Chercher une compétence / une faction
.lookup area $nom · .lookup map $nom 4 Chercher une aire / une carte
.lookup taxinode $nom · .lookup tele $nom 4 Chercher un nœud de vol / un lieu nommé
.lookup event $nom 4 Chercher un événement de jeu
.lookup title $nom Chercher un titre (permission hors rôles)
.lookup player account|email|ip $valeur [#limite] 4 Retrouver les personnages d'un compte, d'un courriel, d'une IP

.list auras sur un joueur qui « ne voit plus les PNJ » montre immédiatement les auras de phase résiduelles (SPELL_PHASE_* 59073 / 59074 / 59087…) et les « Quest Invisibility ». C'est le raccourci de la procédure décrite dans la FAQ Dépannage.

Instances et navigation

Commande Niv. Effet
.instance stats 2 Statistiques des instances chargées
.instance listbinds 2 Sauvegardes d'instance de la cible
.instance unbind <mapid|all> [difficulté] 2 Libérer une sauvegarde d'instance
.instance savedata 2 Données persistantes de l'instance courante
.instance getbossstate $bossId Lire l'état d'une rencontre (permission hors rôles)
.instance setbossstate $bossId $état Forcer l'état d'une rencontre (idem)
.mmap loc 4 Sur quelle tuile de navigation on se trouve
.mmap loadedtiles 4 Tuiles actuellement chargées
.mmap path 4 Calculer et afficher un chemin jusqu'à la cible
.mmap testarea 4 Calculer les chemins de tous les PNJ alentour
.mmap stats 4 État du gestionnaire de navigation

.instance setbossstate est l'outil pour tester la fin d'un combat sans le jouer — utile quand on débogue un déclencheur de porte ou un crédit de quête accordé à la mort d'un boss.


🛠️ Débogage avancé

Commande Niv. Effet
.debug play cinematic #id 2 Jouer une cinématique
.debug play movie #id 2 Jouer une vidéo
.debug play sound #id 2 Jouer un son
.debug raidreset mapid [difficulté] 2 Réinitialiser globalement une carte
.debug areatriggers 4 Signaler chaque déclencheur de zone franchi
.debug phase 4 Phases actives de la cible
.debug boundary [fill] [durée] 4 Matérialiser la limite de déplacement d'une créature
.debug conversation $id 4 Déclencher une conversation
.debug send playerchoice $id 4 Envoyer un PlayerChoice
.debug loadcells [mapId] 4 Charger toutes les cellules d'une carte
.debug moveflags [$f1 [$f2]] 4 Lire / poser les drapeaux de mouvement
.debug movementforce apply #magnitude #x #y #z 4 Appliquer une force de mouvement
.debug movementforce remove 4 La retirer
.debug transport [start/stop] 4 Piloter un transport
.debug arena · .debug bg 4 Mode debug arène / champ de bataille
.debug Mod32Value #champ #valeur 4 Modifier un champ brut de l'objet
.debug neargraveyard [linked] Cimetière le plus proche, DBC ou base (hors rôles)
.dev [on/off] 4 Mode développeur

.debug boundary est précieux sur un boss qui « revient à sa place » sans raison : elle dessine la zone hors de laquelle la créature déclenche son retour. .debug send playerchoice permet de tester un PlayerChoice sans refaire la quête — rappel : le seul hook réellement appelé est OnPlayerChoiceResponse, pas OnCompleteQuestChoice.


👮 Modérer les joueurs

Commande Niv. Effet
.gm [on/off] 2 Activer / couper le mode MJ
.gm visible on/off 2 Se rendre visible ou invisible
.gm chat [on/off] 2 Préfixe MJ dans le chat
.gm ingame 2 MJ actuellement en jeu
.gm fly [on/off] 1 ou 3+ Vol
.gm list 4 Tous les comptes MJ
.kick [$perso] [$raison] 3 Déconnecter un joueur
.mute [$perso] $minutes [$raison] 2 Réduire au silence
.unmute [$perso] 2 Lever le silence
.freeze [#perso] [#durée] 2 Figer un joueur sur place
.unfreeze (#perso) 2 Le libérer
.listfreeze 2 Joueurs figés
.whispers on|off 2 Accepter ou refuser les chuchotements des joueurs
.ban account|character|ip|playeraccount $nom $durée $raison 4 Bannir
.unban account|character|ip $nom 4 Lever un bannissement
.baninfo account|character|ip $valeur 4 Détail d'un bannissement
.banlist account|character|ip [$filtre] 4 Liste des bannis

Tickets

Trois familles — bug, complaint (plainte), suggestion — qui prennent toutes les mêmes verbes :

Verbe Niv. Effet
list · closedlist · view $id 2 Lister les ouverts, les clos, voir le détail
comment $id $texte · close $id 2 Commenter, clore (sans supprimer)
assign $id $mj · unassign $id 3 Attribuer à un MJ, retirer l'attribution
delete $id 4 Supprimer définitivement (le ticket doit être clos)

Exemple : .ticket complaint assign 42 Anouky. .ticket reset [all\|bug\|complaint\|suggestion] (niv. 4) purge les tickets clos et remet le compteur à zéro, à condition qu'aucun ticket ne soit encore ouvert.


📢 Communiquer

Commande Niv. Effet
.announce $message 2 Annonce à tout le serveur
.nameannounce $message 2 Idem, signée du nom de l'auteur
.notify $message 2 Message en surimpression au centre de l'écran
.gmannounce $message 2 Annonce aux MJ seulement
.gmnameannounce $message 2 Idem, signée
.gmnotify $message 2 Surimpression, MJ seulement
.playall #soundId 3 Jouer un son pour tout le monde
.send message $perso $message 3 Message système à un joueur
.send mail $perso "$sujet" "$texte" 3 Courrier
.send money $perso "$sujet" "$texte" #or 3 Courrier avec argent
.send items $perso "$sujet" "$texte" itemid1[:count1]… 2 Courrier avec objets
.channel set ownership $canal [on/off] 4 Propriété d'un canal de discussion

.announce avant tout redémarrage : c'est un engagement du royaume, pas une politesse. Voir Exploitation du serveur.


🧍 Agir sur un personnage

État et statistiques

Commande Niv. Effet
.modify hp|mana|energy|rage|runicpower #valeur 2 Forcer une ressource
.modify money #or 2 Donner / retirer de l'argent
.modify xp #xp · .modify honor $montant 2 Expérience, honneur
.modify talentpoints #n 2 Points de talent
.modify drunk #valeur 2 Niveau d'ivresse
.modify scale #facteur 2 Taille du joueur ou de la créature ciblée
.modify mount #id #vitesse 2 Monture
.modify speed [walk|backwalk|swim|fly|all] #facteur 1 Vitesses de déplacement
.modify faction #faction #flag #npcflag #dynflag 2 Faction et drapeaux de la cible
.modify bit #champ #bit 2 Basculer un bit d'un champ
.modify spell 2 (non documenté en amont — « TODO »)
.modify gender male/female 3 Sexe
.modify standstate #emoteId 3 Posture
.modify reputation #repId (#valeur|$rang [#delta]) 3 Réputation avec une faction
.modify phase #phasemask 4 Phase
.modify currency #id #valeur Monnaie (permission hors rôles)
.levelup [$perso] [#n] 4 Monter de N niveaux
.setskill #skill #niveau [#max] 4 Poser une compétence
.maxskill 4 Toutes les compétences au maximum
.achievement add $achievement 4 Accorder un haut fait
.damage $montant [$école [$spellId]] 4 Infliger des dégâts
.die 4 Tuer la cible
.revive 1 ou 3+ Ressusciter
.combatstop [$perso] 3 Sortir du combat
.repairitems 3 Réparer l'équipement
.save 0 Écrire son personnage en base
.saveall 2 Écrire tous les personnages en base
.unstuck $perso [inn/graveyard/startzone] 0 Se désembourber
.dismount 0 Descendre de monture

Sorts, auras, objets

Commande Niv. Effet
.cast #spellId [triggered] 4 Lancer un sort sur la cible
.cast self|back|target #spellId 4 Sur soi / dans le dos / depuis la cible
.cast dest #spellId #x #y #z 4 Sur un point
.cast dist #spellId [#dist] 4 À une distance donnée
.aura #spellId / .unaura #spellId 4 Poser / retirer une aura
.cooldown [#spellId] 4 Réinitialiser les temps de recharge
.learn #spell [all] / .unlearn #spell [all] 4 Apprendre / oublier un sort
.learn all my class|spells|talents|pettalents 4 Tout apprendre pour sa classe
.learn all default [$perso] · .learn all lang · .learn all gm 4 Sorts par défaut, langues, sorts MJ
.learn all crafts · .learn all recipes [$métier] 4 Métiers et recettes
.additem #itemId|$nom|lien [#nombre] 4 Donner un objet
.additemset #itemSetId [#bonusListIDs] 4 Donner un ensemble
.itemmove #slotSource #slotDest 3 Déplacer un objet dans les sacs
.bank / .mailbox 4 Ouvrir sa banque / sa boîte aux lettres n'importe où
.titles add|remove #title 3 Accorder / retirer un titre
.titles current #title · .titles set mask #mask 3 Titre affiché, masque de titres
.morph #displayId / .demorph 3 Changer / rétablir l'apparence

⚠️ .cast … triggered change tout. Un sort lancé en mode déclenché devient instantané et non interruptible. C'est exactement ce qui rendait Bastillax intouchable — voir la FAQ Dépannage.

Remise à zéro et migration

Commande Niv. Effet
.reset talents|spells|stats|level|honor|achievements [$perso] 4 Réinitialiser un aspect
.reset all spells 4 Réinitialiser pour tous les joueurs
.character rename [$nom] [$nouveau] 3 Renommer
.character customize [$nom] 3 Forcer un passage au barbier
.character changerace|changefaction $nom 3 Changer race / faction
.character level [$perso] [#niveau] 4 Poser un niveau
.character reputation|titles [$perso] 3 Lister réputations / titres
.character changeaccount [$perso] $compte 4 Transférer vers un autre compte
.character deleted list [#guid|$nom] 4 Personnages supprimés
.character deleted restore #guid|$nom [$nouveau] 4 Restaurer un personnage supprimé
.character deleted delete #guid|$nom Purge définitive (hors rôles)
.character deleted old [#jours] Purge des suppressions anciennes (hors rôles)
.character erase $nom Effacement immédiat et définitif (hors rôles)
.pdump write $fichier $persoOuGUID 4 Exporter un personnage
.pdump load $fichier $compte [$nom] [#guid] 4 Réimporter un personnage

.pdump write est la sauvegarde à faire avant toute manipulation risquée sur un personnage — l'équivalent personnage du mysqldump avant modification de base.


🌍 Éditer le monde

PNJ

Commande Niv. Effet
.npc add #entry 3 Faire apparaître un PNJ et l'enregistrer en base
.npc add temp [loot/noloot] #entry 3 Apparition temporaire, non enregistrée
.npc delete [#guid] 3 Supprimer une apparition
.npc move [#guid] 3 Déplacer à sa position
.npc set model #displayId 3 Modèle
.npc set level #niveau 3 Niveau
.npc set factionid #faction 3 Faction
.npc set flag #npcflag 3 Drapeaux (donneur de quête, marchand, dresseur…)
.npc set phase #phasemask 3 Phase
.npc set spawndist #dist · .npc set spawntime #s 3 Rayon d'errance, délai de réapparition
.npc set movetype [#guid] stay/random/way [NODEL] 3 Type de déplacement
.npc set link $guid 3 Réapparition liée à une autre créature
.npc set entry $entry 4 Remplacer la créature par une autre entrée
.npc set data $champ $valeur 4 Poser une donnée de script
.npc set allowmove 4 Autoriser le mouvement
.npc add formation $chef 3 Intégrer à une formation
.npc add move #guid [#attente] 3 Ajouter un point de déplacement
.npc follow start / .npc follow stop 3 Faire suivre / arrêter
.npc add item #itemId [#max][#delai][#coutEtendu][#bonus] 3 Ajouter au stock d'un marchand
.npc delete item #itemId 3 Retirer du stock
.npc say|yell $message 2 Faire parler / crier
.npc whisper #playerguid $texte 2 Faire chuchoter
.npc textemote #emoteId 2 Émote textuelle
.npc playemote #emoteId 4 Émote visuelle
.npc evade [raison] [force] 4 Forcer le retour au point d'origine
.npc reload [all] 4 Recharger le PNJ ciblé
.cometome 4 Faire venir la créature ciblée à soi
.respawn 1 ou 3+ Faire réapparaître immédiatement les créatures mortes alentour

⚠️ .npc set flag et un ScriptName nouvellement posé ne prennent effet qu'au redémarrage. .npc reload met à jour le modèle, pas les créatures déjà apparues, et la liaison des scripts est figée au boot. C'est le piège n°1 des correctifs de contenu — voir Corriger le contenu. Les portails du Module Mercenaires sont posés avec .npc add 1000010.

Objets du monde

Commande Niv. Effet
.gobject add #id [#delaiReapparition] 3 Poser un objet et l'enregistrer
.gobject add temp #id 3 Objet temporaire, non enregistré
.gobject delete #guid 3 Supprimer
.gobject move #guid [#x #y #z] 3 Déplacer
.gobject turn #guid 3 Réorienter
.gobject activate #guid 3 Actionner (porte, levier, coffre)
.gobject set phase #guid #phasemask 3 Phase

.gobject activate est le moyen de vérifier qu'un levier ou une porte fonctionne sans faire la quête — utile pour isoler un défaut de script d'un défaut de conditions.

Chemins de patrouille

Commande Niv. Effet
.wp add 3 Ajouter un point de passage à la position courante
.wp show $option 3 Afficher un chemin (on $pathid, off, info…)
.wp load $pathid / .wp unload 3 Attacher / détacher un chemin à la créature ciblée
.wp event $sous-commande 3 Événements attachés aux points de passage
.wp reload $pathid 4 Recharger un chemin modifié en base

C'est l'outillage qui a servi à relever la route d'assaut de Hurlevent du Siège des Capitales — mais la route finale a été obtenue en enregistrant le trajet d'un joueur réel, bien meilleur que des coordonnées déduites.

Environnement et événements

Commande Niv. Effet
.wchange #type #intensité 4 Changer la météo
.linkgrave #graveyardId [alliance|horde] 4 Lier la zone courante à un cimetière
.event activelist 2 Événements de jeu actifs
.event #eventId 2 Détail d'un événement
.event start|stop #eventId 2 Démarrer / arrêter un événement
.scene play #sceneId 4 Jouer une scène
.scene playpackage #packageId #flags 4 Jouer un paquet de scènes
.scene cancel #packageId 4 Annuler
.scene debug 4 Mode debug des scènes

📜 Quêtes

Commande Niv. Effet
.quest add #questId 4 Ajouter la quête au journal
.quest complete #questId 4 La marquer terminée
.quest reward #questId 4 Accorder la récompense
.quest remove #questId 4 La retirer
.list quests 3 Quêtes actives de la cible
.go quest #questId 2 Aller au point de départ

🔴 Doctrine du royaume : .quest complete n'est pas une solution. Franchir un blocage à la commande masque le défaut au lieu de le corriger — et invalide le test. L'audit de la campagne Chasseur de démons a montré que six quêtes restaient infaisables normalement alors que la campagne avait été « terminée » ainsi. Ces commandes servent à reproduire un état pour déboguer, jamais à livrer du contenu cassé.


👥 Groupes, guildes, PvP

Commande Niv. Effet
.group list [$perso] 4 Composition d'un groupe
.group join $membre [$perso] · .group remove [$perso] 4 Ajouter / retirer
.group leader [$perso] · .group disband [$perso] 4 Chef, dissolution
.group summon [$perso] 4 Faire venir tout le groupe
.guild create [$chef] "$nom" · .guild delete "$nom" 4 Créer / supprimer une guilde
.guild rename "$ancien" "$nouveau" · .guild info 4 Renommer, informations
.guild invite [$perso] "$nom" · .guild uninvite [$perso] 4 Inviter / exclure
.guild rank [$perso] #rang 4 Rang
.arena create $chef "nom" #type · .arena disband #teamId 4 Créer / dissoudre une équipe
.arena rename "ancien" "nouveau" · .arena captain #teamId $nom 4 Renommer, capitaine
.arena info #teamId · .arena lookup $nom 3 Consulter
.honor add $montant · .honor add kill · .honor update 2 Honneur
.pvpstats 0 Victoires en champ de bataille sur la période
.deserter bg|instance add $durée 4 Poser le débuff de déserteur
.deserter bg|instance remove 4 Le retirer
.bf enable|start|stop|switch #battleId 4 Piloter un champ de bataille de zone
.bf timer #battleId #timer 4 En régler le minuteur
.lfg player · .lfg group · .lfg queue 2 État de la recherche de groupe
.lfg options [valeur] · .lfg clean 4 Options, purge de la file

Familiers

Commande Niv. Effet
.pet create 3 Créer un familier depuis la créature ciblée
.pet learn / .pet unlearn 3 Apprendre / oublier un sort de familier
.pet level #delta 4 Monter / descendre le niveau du familier

🖥️ Administrer le serveur

Arrêt, redémarrage, capacité

Commande Niv. Effet
.server info 4 Version, temps de fonctionnement, joueurs connectés
.server motd / .server set motd $texte 4 Message du jour
.server shutdown [force] #délai [#code] [raison] 4 Arrêt propre
.server restart [force] #délai [#code] [raison] 4 Redémarrage
.server idleshutdown #délai · .server idlerestart #délai 4 Idem, mais seulement quand le serveur est vide
.server shutdown|restart|idleshutdown|idlerestart cancel 4 Annuler l'opération programmée
.server set closed on/off 4 Fermer le royaume aux connexions
.server plimit [#n|player|moderator|gamemaster|administrator|reset] 4 Limiter les connexions, ou réserver à un niveau
.server corpses 4 Purger les cadavres
.server debug 4 Informations de débogage du serveur
.server exit Sortie brutale du processus (hors rôles)
.server set loglevel $facility $nom $niveau Verbosité des journaux (hors rôles)

idleshutdown plutôt que shutdown pour un déploiement non urgent : le serveur attend d'être vide. Attention néanmoins au watchdog, qui relance dans la minute — la marche à suivre est dans Exploitation du serveur.

Rechargement à chaud

.reload <table> (niveau 4) recharge une table sans redémarrer — 96 sous-commandes, une par table rechargeable, plus les groupes .reload all, .reload all quest, .reload all loot, .reload all npc, .reload all gossips, .reload all item, .reload all locales, .reload all scripts, .reload all achievement, .reload all area, .reload all spell.

.reload config relit worldserver.conf — c'est ce qui rend les clés HeroicLeap.* réglables à chaud (voir Configuration).

🔴 Trois limites qui font perdre des heures si on les ignore :

  • .reload creature_template refuse d'ajouter une entrée nouvelle (« you can not add new creatures without restarting ») et ne relie pas un ScriptName fraîchement posé — la liaison des scripts est figée au démarrage.
  • .reload smart_scripts ne recharge que le magasin : les créatures déjà vivantes gardent l'ancien script jusqu'à leur réapparition.
  • Les chaînes localisées servies par les DB2 ne se rechargent pas du tout : redémarrage et vidage du cache client. Voir Localisation francaise.

Désactiver du contenu

.disable add <type> $entry $flag $commentaire et .disable remove <type> $entry (niveau 4), où <type> vaut spell, quest, map, battleground, criteria, outdoorpvp, vmap ou mmap.

C'est la porte de sortie propre quand un contenu plante le serveur : on le désactive en base plutôt que de laisser les joueurs tomber dessus, le temps de le corriger.

Comptes

Commande Niv. Effet
.account 0 Son propre niveau d'accès
.account password $ancien $nouveau $confirmation 0 Changer son mot de passe
.account email … · .account lock ip|country [on/off] 0 Courriel, verrouillage de connexion
.account addon #addon 2 Extension autorisée pour son compte
.account set addon [$compte] #addon 4 Idem pour un autre compte
.account set sec email|regmail … 4 Courriels de sécurité
.account create|delete · .account set password|gmlevel (hors rôles — voir plus haut)
.account onlinelist Comptes connectés (hors rôles)
.bnetaccount create $compte $mdp 4 Créer un compte Battle.net
.bnetaccount gameaccountcreate $compte 4 Ajouter un compte de jeu
.bnetaccount link $email $login / .bnetaccount unlink $compte $mdp 4 Lier / délier
.bnetaccount listgameaccounts $email $mdp 4 Comptes de jeu rattachés
.bnetaccount set password $compte $mdp $mdp 4 Changer un mot de passe
.bnetaccount password|lock ip|lock country 0 Équivalents pour son propre compte

Hôtel des ventes automatique

.ahbot status [all] · .ahbot rebuild [all] · .ahbot reload (niveau 4), plus le réglage des quantités par qualité (.ahbot items gray|white|green|blue|purple|orange|yellow $n, ou .ahbot items pour les sept d'un coup) et de la répartition par faction (.ahbot ratio [alliance|horde|neutral] $ratio).

Tricherie MJ

Commande Niv. Effet
.cheat status 4 Ce qui est actif
.cheat god [on/off] 4 Invulnérabilité
.cheat power [on/off] 4 Ressources illimitées
.cheat cooldown [on/off] 4 Aucun temps de recharge
.cheat casttime [on/off] 4 Incantations instantanées
.cheat waterwalk on/off · .cheat taxi on/off 4 Marche sur l'eau, vols débloqués
.cheat explore #flag 4 Carte entièrement révélée

🔴 Le core amont auto-activait CHEAT_GOD au login de tout compte MJ, même en .gm off. Corrigé (7f2fe998), mais la leçon reste : tout test de combat effectué sur un compte MJ avant ce correctif est invalide, et .cheat status est le réflexe à avoir avant de conclure quoi que ce soit sur des dégâts. Voir FAQ Dépannage.


Aide en jeu

Commande Niv. Effet
.help [$commande] 0 Syntaxe et description d'une commande
.commands 0 Toutes les commandes accessibles à son niveau

Le texte affiché vient de la colonne help de dc_world.command — il est en anglais, hérité de l'amont, et .reload command le recharge après modification en base. Le traduire est un chantier ouvert et sans piège particulier : c'est de la donnée, pas du DB2.


Console du worldserver

Commande Effet
saveall Écrit l'état des joueurs en base — le seul moyen d'obtenir la vérité serveur
announce <texte> Annonce à tous
server shutdown <secondes> Arrêt propre
reload <table> Recharge une table (attention aux limites — voir Bases de donnees)

saveall est l'outil de diagnostic le plus important du serveur. Le client 7.3.5 met à jour la barre de vie depuis les paquets de combat log en plus des mises à jour de champs : un affichage qui bouge ne prouve pas que le serveur applique les dégâts. La vérité est en base, après saveall.

Clone this wiki locally