informatique:jeux_videos:jeux_actuels_et_ou_recents:world_of_warcraft:serv3.0.9:mangos

Cette doc n'est plus à jour. Pour installer et configurer Mangos voir ici : https://github.com/mangos/MaNGOS

On installe un serveur WoW avec mangos sous Debian. Ca semble fonctionner pas mal avec le dernier client 2.4.3 (Burning Crusade) à part quelques parties non traduites et surement des bugs.

  • Configuration matérielle :
    • machine virtuelle Xen {'cap': 0, 'weight': 512}
    • 1 vCPU : 1x Core2Duo T7200 2 Ghz
    • 1,5 Go de RAM
    • 20 Go d'espace disque
    • Bande passante : 100 Mbits
  • Configuration logicielle :
    • OS : Debian 4.0
    • Kernel : 2.6.18-6-xen-686 #1 SMP
    • MySQL : 5.0.32-7etch6
    • Trinity Core rev 53
    • Trinity Database rev 40
    • ACID 0.0.4 - Full Release
    • Auction House Bot : Revision:110
  • Statut du serveur :
    • World
    • Realm

Installation

apt-get install zlibc gcc g++ make automake autoconf mysql binutils cpp libc6 libc6-dev libc6-i686 libgcc1
libmysql++-dev linux-header-`uname -r` linux-kernel-headers linux-kernel-devel makedepend mysql-client-5.0
mysql-common mysql-server python libssl0.9.8 libssl-dev openssl ssl-cert subversion g77 zlib1g-dev screen mc bunzip libstdc++ libtool unrar

Il faut parfois adapter, pour ma part j'ai installé sur une machine virtuelle Xen et certains packages diffèrent. Un apt-get install build-essential peut installer aussi certains packages du type gcc et compagnie. Certains packagent existent peut-être déjà sur la machine, à vous de voir.

On créé un user pour ne pas lancer le truc en root :

adduser -d /home/wowsvr wowsvr
passwd wowsvr
cd /home/wowsvr
mkdir mangos

On récupère la dernière version de l'émulateur :

svn checkout https://mangos.svn.sourceforge.net/svnroot/mangos/trunk

On récupère aussi ScriptDev2 :

mkdir -p trunk/src/bindings
cd trunk/src/bindings
svn co http://scriptdev2.svn.sourceforge.net/svnroot/scriptdev2 ScriptDev2/

Et puis aussi AuctionBot si le serveur n'est pas très peuplé :

svn co http://svn2.assembla.com/svn/auctionhousebot/trunk AuctionBot/

Puis on prépare la compilation :

cd ../..
patch -p0 < src/bindings/ScriptDev2/patches/MaNGOS-rXXXX-Scriptdev2.patch
patch -p0 < src/bindings/AuctionBot/auctionhousebot.patch

On reconfigure :

autoreconf --install --force
autoconf
./configure --prefix=/home/wowsvr/mangos --sysconfdir=/home/wowsvr/mangos/etc --with-python --enable-cli --enable-ra --datadir=/home/wowsvr/mangos

Et on compile :

make
make install

Récupérer les fichier ci-dessous et les décompresser sous /home/wowsvr/mangos :

dbc_2.4.3.tar.bz2

maps_2.4.3.tar.bz2

vmaps_2.4.3.tar.bz2

Au final on a ça :

wowsvr@WoWvm:~/mangos$ ls -ltr
total 288
drwxr-x--- 2 wowsvr wowsvr 114688 Aug 22 12:58 maps
drwxr-x--- 2 wowsvr wowsvr  12288 Aug 22 13:04 dbc
drwxr-x--- 3 wowsvr wowsvr   4096 Aug 22 14:49 mangos
drwxr-x--- 3 wowsvr wowsvr   4096 Aug 22 14:49 scriptdev2
drwxr-x--- 2 wowsvr wowsvr   4096 Aug 22 14:49 lib
drwxr-x--- 2 root   root     4096 Aug 23 12:18 lost+found
drwxr-x--- 2 wowsvr wowsvr   4096 Aug 23 19:19 bin
drwxr-x--- 2 wowsvr wowsvr   4096 Aug 24 08:20 etc
drwxr-x--- 2 wowsvr wowsvr 135168 Aug 24 10:12 vmaps

On se connecte en root à la base de données (ce n'est pas le même utilisateur root que le système). Par défaut il n'y a pas de password. C'est pas mal de mettre un password avant de commencer :

mysql -u root -p
mysql> use mysql;
mysql> SET PASSWORD FOR root@localhost=PASSWORD('new_password');
mysql> exit

On récupère la base de données UDB (Unified DB) qui est un fournisseur parmi d'autres (Silvermoon,etc) :

cd /home/wowsvr
svn co http://unifieddb.svn.sourceforge.net/svnroot/unifieddb
cd /home/wowsvr/unifieddb/trunk/Full_DB
unrar e UDB_0.10.3_Core_6240_SD2_473.rar 

On créé les bases de données :

cd /home/wowsvr/mangos/mangos/sql/
mysql -u root -p
mysql> source create_mysql.sql
mysql> use characters ;
mysql> source characters.sql
mysql> use realmd ;
mysql> source realmd.sql
mysql> exit

cd /home/wowsvr/unifieddb/trunk/Full_DB/
mysql -u root -p
mysql> use mangos ;
mysql> source ../UDB_0.10.3_Core_6240_SD2_473.sql
mysql> exit

On met à jour la base en passant les patchs UDB dispos sous ../Updates, on les passe dans l'ordre :

cd ../Updates/0.10.3_additions
mysql -u root -p
mysql> use mangos ;
mysql> source 358_corepatch_mangos_6241_to_6346.sql
mysql> use characters ;
mysql> use mangos ;
mysql> source 358_updatepack_mangos.sql
mysql> source 359_corepatch_mangos_6347_to_6439.sql
mysql> use realmd;
mysql> source 359_corepatch_realmd_6347_to_6439.sql
mysql> use mangos ;
mysql> source 359_updatepack_mangos.sql
mysql> use mangos ;
mysql> source 360_corepatch_mangos_6440_to_6539.sql
mysql> source 360_updatepack_mangos.sql
mysql> use realmd ;
mysql> source 360_corepatch_realmd_6440_to_6539.sql
mysql> exit

Maintenant on patche en prenant les updates fournis par Mangos > 6539, toujours dans l'ordre :

cd /home/wowsvr/mangos/mangos/sql/updates/
ls -1 *mangos*.sql|egrep "^6[5-9]"|egrep -v "^62[0-3]|^64[2-4]"|while read i
do
mysql -u root --password=PASSWORD mangos < $i
done

Ensuite on patche la base mangos avec ScriptDev21)/Acid2). On recupère les fichiers pour patcher la base Mangos avec ces 2 composants :

cd /home/wowsvr
svn co http://sd2-acid.svn.sourceforge.net/svnroot/sd2-acid/
cd /home/wowsvr/scriptdev2/sql
mysql -u root -p
mysql> use mangos ;
mysql> source mangos_full_scripts.sql
mysql> exit

cd /home/wowsvr/sd2-acid/full_release/0.0.3
mysql -u root -p
mysql> use mangos ;
mysql> source 003_acid_631_mangos.sql
mysql> exit

Puis on repasse la requête mangos full au ças où Acid ait foutu la grouille (rare mais déjà produit) :

cd /home/wowsvr/scriptdev2/sql
mysql -u root -p
mysql> use mangos ;
mysql> source mangos_full_scripts.sql
mysql> exit

De la même façon on patch dans cet ordre :

cd /home/wowsvr/scriptdev2/sql
mysql -u root -p
mysql> source create_database.sql
mysql> use scriptdev2 ; 
mysql> source scriptdev2_structure.sql
mysql> exit

cd /home/wowsvr/sd2-acid/full_release/0.0.2
mysql -u root -p
mysql> use scriptdev2 ;
mysql> source 003_acid_631_scriptdev.sql
mysql> source ../../../scriptdev2/sql/updates/rXXX_scriptdev2.sql -> on passe les SQL > 631
mysql> exit

On passe maintenant aux traductions (on peut aussi récupérer des traductions ici http://wowdb.fr/showthread.php?tid=8405, à tester) :

cd /home/wowsvr
svn co http://svn.assembla.com/svn/wowpfr
cd /home/wowsvr/wowpfr/public
mysql -u root -p
mysql> use mangos ;
mysql> source mangos_principale_fr.sql
mysql> source mangos_secondaire_fr.sql
mysql> use scriptdev2 ;
mysql> source _SD2_Traduction_principale_FR.sql
mysql> source _SD2_Traduction_secondaire_FR.sql
mysql> exit

Si on a ces erreurs :

ERROR 1146 (42S02) at line 7: Table 'scriptdev2.localized_texts' doesn't exist

C'est normal, la localisation n'est pas encore finie.

On choisit un nom pour le serveur, on ajoute son adresse IP (locale ou internet au choix) et on spécifie un password pour le user mangos :

mysql -u root -p
mysql> use realmd ;
mysql> UPDATE realmlist SET `name` = 'nom_du_serveur';
mysql> UPDATE realmlist SET `address` = 'AAA.BBB.CCC.DDD';
mysql> SET PASSWORD FOR mangos@localhost=PASSWORD('mangos');
mysql> exit

:!: J'ai remarqué un bug, lorsqu'on débute la partie le diablotin serviteur du maître démoniste est agressif et surtout level 46 … Il faut modifier sa faction pour éviter de se faire oneshot. J'ai mis Friendly, voir http://wiki.udbforums.org/index.php/Faction.dbc pour la liste des factions et les IDs.

mysql -u root -p
mysql> use mangos ;
mysql> UPDATE `creature_template` SET `faction_A` = '31', `faction_H` = '31' WHERE `creature_template`.`entry` =12922 LIMIT 1;
mysql> exit
Ce truc n'est peut être plus d'actualité, vérifier la faction avec un SELECT faction_A, faction_H from creature_template WHERE `creature_template`.`entry` = 12922; dans la base mangos.

Bravo, le plus dur est fait :)

Dans les fichiers de conf suivants modifier le password ou les autres infos le cas échéant :

wowsvr@WoWvm:~/mangos/etc$ grep 127.0.0.1 *
mangosd.conf:LoginDatabaseInfo     = "127.0.0.1;3306;mangos;PASSWORD;realmd"
mangosd.conf:WorldDatabaseInfo     = "127.0.0.1;3306;mangos;PASSWORD;mangos"
mangosd.conf:CharacterDatabaseInfo = "127.0.0.1;3306;mangos;PASSWORD;characters"
realmd.conf:LoginDatabaseInfo = "127.0.0.1;3306;mangos;PASSWORD;realmd"
scriptdev2.conf:ScriptDev2DatabaseInfo     = "127.0.0.1;3306;mangos;PASSWORD;scriptdev2"

:!: Modifier aussi la directive DataDir dans mangosd.conf pour pointer vers le répertoire qui contient les répertoires vmaps, maps et dbc. On peut utiliser ../
:!: Le paramètre vmap.enableLOS = 1 permet une meilleure gestion de l'espace.
:!: Le fichier scriptdev2.conf se trouve sous /home/wowsvr/trunk/src/bindings/ScriptDev2/scriptdev2.conf.
:!: Le paramètre LogsDir permet d'éviter d'avoir les logs dans le répertoire bin/.

On peut aussi modifier le fichier de conf mangosd.conf pour changer le jeu :

wowsvr@WoWvm:~/mangos/etc$ grep -i Rate mangosd.conf |egrep "XP|Money"|egrep -v "^#|70"
Rate.Drop.Money = 5
Rate.XP.Kill    = 5
Rate.XP.Quest   = 5
Rate.XP.Explore = 5

La on multiplie l'XP par 5 lors d'un kill de mob, d'une qûete ou de la visite d'une nouvelle zone. L'argent est aussi multiplié par 5. Le fichier est bien commenté et contient pas mal de paramètres.

Utilisation

Pour démarrer, on peut créer un script sous /home/wowsvr/mangos/bin/mangos :

#!/bin/bash

[[ $# -ne 1 ]] && echo "./mangos stop ou ./mangos start" && exit

case $1 in

        start)

        for i in realmd worldd
        do
        screen -A -m -d -S $i ~/mangos/bin/mangos-$i
        echo "Lancement de mangos-$i : OK"
        done
        ;;

        stop)

        for i in realmd worldd
        do
        killall mangos-$i
        echo "Arret de mangos-$i : OK"
        done
        ;;

        restart)

        ~/mangos/bin/mangos stop
        echo
        ~/mangos/bin/mangos start

        ;;

        status)
        clear
        for i in realmd worldd
        do
        echo "Status de mangos-$i"
        lsof -a -p `ps au|grep $i|grep -v grep|awk '{print $2}'` -i 2>/dev/null|grep LISTEN
        echo
        done

        ;;

        *)

        echo "Mauvais choix ... stop, start, restart ou status"
esac

Puis on lance le tout :

cd ~/mangos/bin
./mangos start

Pour lister les screens :

screen -list

Pour s'y connecter :

screen -r nom_du_screen

:!: Pour un serveur online il faut ouvrir les ports TCP 3724 et 8085. Pour ma part je n'autorise que certaines IPs :

for port in 3724 8085
do
/sbin/iptables -A INPUT -p tcp --dport $port -j DROP
done

for ip in AAA.BBB.CCC.DDD EEE.FFF.GGG.HHH
do
for port in 3724 8085
do
/sbin/iptables -I INPUT -p tcp --sport 1024: --dport $port -s $ip -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -I OUTPUT -p tcp --dport 1024: --sport $port -s $ip -m state --state ESTABLISHED -j ACCEPT
done
done

Si tout est OK ca donne ca :

wowsvr@WoWvm:~$ screen -list
There are screens on:
        17266.worldd    (Detached)
        17262.realmd    (Detached)
2 Sockets in /var/run/screen/S-wowsvr.

wowsvr@WoWvm:~$ screen -r 17266.worldd
Next game event check in 2535 seconds.
Game Event system initialized.
WORLD: World initialized

... snip ... snip ... snip ... snip ...

help          - Display this help message.
broadcast     - Announce in-game message.
create        - Create account.
delete        - Delete account and characters.
chardelete    - Delete character.
info          - Display Server infomation.
uptime        - Displays the server uptime.
motd          - Change or display motd.
kick          - Kick user.
ban           - Ban account|ip.
listbans      - List bans.
unban         - Remove ban from account|ip.
setgm         - Edit user privileges.
setpass       - Set password for account.
setbc         - Set user expansion allowed.
listgm        - Display user privileges.
loadscripts   - Load script library.
setloglevel   - Set Log Level.
corpses       - Manually call corpses erase global even code.
version       - Display server version.
idleshutdown  - Shutdown server with some delay when there are no active connections remaining.
shutdown      - Shutdown server with some delay.
exit          - Shutdown server NOW.
writepdump    - Write a player dump to a file.
loadpdump     - Load a player dump from a file.
saveall       - Save all players.
send          - Send message to a player.
tele          - Teleport player to location.
plimit        - Show or set player login limitations.
mangos>
  • Créer un compte GM avec BC activé :
mangos> create toto password
mangos> setbc toto 1
mangos> setgm toto 3
  • Une fois GM on peut utiliser tout un tas de commandes :

.level : pour passer un level
.level 10 : prendre 10 levels
.modify money 100000 : ajouter 100 000 pièces de cuivre

D'autres commandes sont listées ici :

http://www.reaper-x.com/2007/09/21/wow-mangos-gm-game-master-commands/

http://www.mangosproject.org/forum/index.php?showtopic=25135&hl=commands

On peut créer des armes en bidouillant la base de données (cf. http://wiki.udbforums.org) et même certains sites mâchent le travail : http://wow-v.com. On créé son arme et le site génère le code SQL à injecter dans la base de données. On peut faire la même chose pour les mobs, les PNJs, etc. On peut aussi s'attribuer des objets, par ex. celui-ci, il suffit de taper .additem 34540, ou bien chercher les compétences dans la base de données et se les attribuer avec .learn ou .setskill.

  • Trouver les ID :

Soit en ouvrant la base de données et en regardant dans les tables : item_template pour les items, creature_template pour les creatures. Pour les spells , les locations des .tele , etc (regardez les contenus des tables tout est là).

Soit en allant sur ces sites pour récupérer les IDs dans l'URL :

http://wow.allakhazam.com
http://www.thottbot.com
http://www.wowdbu.com
http://worldofwarcraft.judgehype.com
http://www.wowhead.com
http://wow.mmodb.com

MiniManager est un frontend web très utile pour gérer ses serveurs, cf. plus bas.

Ci-dessous les IDs d'un paquet d'entités :

Armures, Armes, Métiers, Langues et Portails

Commandes GM

IDs portails

Skills + métiers

Pour se simplifier la vie, un addon pour WoW : http://code.google.com/p/thegm/downloads/list

Liens


1)
Moteur d'AI plus développé
2)
Compléments de ScriptDev2
  • informatique/jeux_videos/jeux_actuels_et_ou_recents/world_of_warcraft/serv3.0.9/mangos.txt
  • Dernière modification : 2021/04/06 14:58
  • de ben