-
Notifications
You must be signed in to change notification settings - Fork 3
Commandes en jeu
-
Ordres aux playerbots —
!follow,@tank, équipement -
Configurer le dialogue des mercenaires —
!api -
Commandes GM du Siège des Capitales —
.siege - Commandes GM / Admin — les 560 commandes du core, par usage
- Console du worldserver
⚠️ 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.
| Canal | Qui peut parler | Où |
|---|---|---|
| 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 |
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.
| 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 |
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.
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.
Aucun n'était visible depuis le code seul :
-
stopn'arrêtait rien. Le suivi est un générateurMoveFollowduMotionMaster, queClearMovement()ne retire pas — il faut vider la pile de mouvement. -
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::Updatediffusait un paquet portant un opcode CLIENT (CMSG_MOVE_FALL_LAND). Corrigé parDestroyForNearbyPlayers()+UpdateObjectVisibility(true). -
Jamais de
TeleportTodirect sur un bot depuis un module. Passez par l'ordresummonde l'IA : seulBotAITeleportsimule l'accusé de réception qu'un bot sans client ne peut pas envoyer.
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 parRemoveAurasByType(SPELL_AURA_MOUNTED): la monture portée peut venir de l'IA de terrain et ne pas êtrem_UseMountID. -
BotAIFly::UpdateFlyétait désactivée par unreturn;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.
!api <fournisseur> <modèle> <clé> [adresse]
!api off
Détails, fournisseurs et pièges : Module Mercenaires.
.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 siegene renvoie rien et elles n'apparaissent pas dans.commands. Elles fonctionnent malgré tout — c'est un manque de documentation, pas de code.
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.
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 |
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]
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 $comptemontre 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.
| 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 |
.gpsest la commande de diagnostic la plus employée du projet. La tablearea_tablededc_hotfixesest vide — les noms d'aires vivent dans les DB2 sur disque — donc c'est le seul moyen d'obtenir l'areaIdréel d'un joueur. Elle est purement informative : elle ne modifie rien, ce qui la rend compatible avec un test « sans commande MJ »..movegensvaut d'être connue : c'est elle qui aurait montré tout de suite qu'unMoveFollowrestait sur la pile d'un bot après unstop(voir plus haut).
| 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 aurassur 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.
| 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 setbossstateest 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.
| 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 boundaryest 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 playerchoicepermet de tester un PlayerChoice sans refaire la quête — rappel : le seul hook réellement appelé estOnPlayerChoiceResponse, pasOnCompleteQuestChoice.
| 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 |
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.
| 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 |
.announceavant tout redémarrage : c'est un engagement du royaume, pas une politesse. Voir Exploitation du serveur.
| 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 |
| 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 … triggeredchange 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.
| 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 writeest la sauvegarde à faire avant toute manipulation risquée sur un personnage — l'équivalent personnage dumysqldumpavant modification de base.
| 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 flaget unScriptNamenouvellement posé ne prennent effet qu'au redémarrage..npc reloadmet à 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.
| 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 activateest 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.
| 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.
| 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 |
| 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 completen'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é.
| 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 |
| 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 |
| 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) |
idleshutdownplutôt queshutdownpour 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.
.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_templaterefuse d'ajouter une entrée nouvelle (« you can not add new creatures without restarting ») et ne relie pas unScriptNamefraîchement posé — la liaison des scripts est figée au démarrage..reload smart_scriptsne 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.
.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.
| 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 |
.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).
| 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_GODau 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 statusest le réflexe à avoir avant de conclure quoi que ce soit sur des dégâts. Voir FAQ Dépannage.
| 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.
| 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) |
saveallest 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èssaveall.
SylvaniaCore — GPL v2 · La Légion de Sylvania · Discord contributeurs World of Warcraft® et Blizzard Entertainment® sont des marques déposées de Blizzard Entertainment, Inc. Projet non affilié.
Démarrer
Comprendre
Modules
Développer