Kompilacja serwera MaNGOS
Wymagane pakiety i biblioteki do kompilacji:
- build-essential (dla użytkowników debiana)
- GCC 3.3 lub wersje wyższe
- make
- libtool
- automake
- autoconf
- glibc & glibc-dev
- mysql-server5.x
- libmysql++-dev
- OpenSSL
- libssl-dev
- zlibc
- subversion
- git
- git-core
- script
Po pobraniu i zainstalowaniu w/w pakietów wydajemy kolejno następujące komendy w terminalu:
update-alternatives --config git
/usr/bin/git-scm
Tworzymy np. w katalogu domowym folder do którego pobierzemy kod źródłowy MaNGOS'a:
mkdir /home/nazwa_uzytkownika/mangos
cd /home/nazwa_uzytkownika/mangos
i wydajemy następujące polecenie w terminalu:
git clone git://github.com/mangos/mangos.git
Kolejną rzeczą jaką musimy zrobić to pobranie kodu źródłowego ScriptDev2, na początku musimy utworzyć katalog ScriptDev2 w katalogu mangos/src/bindings/ tak. Dalej pobieramy ScriptDev2 oraz dodajemy patch. Powyższe czynności wykonamy za pomocą następujących komend (odpowiednio w kolejności):
mkdir src/bindings/ScriptDev2
svn co https://scriptdev2.svn.sourceforge.net/svnroot/scriptdev2/ src/bindings/ScriptDev2
git apply src/bindings/ScriptDev2/patches/MaNGOS-2008-12-22-ScriptDev2.patch
UWAGA: w tym miejscu musimy poprawić miejsce gdzie pobrał nam się kod SD2.
Wchodzimy do katalogu src/bindings/ScriptDev2 i tutaj widzimy iż kod SD2 jest w dodatkowym folderze scriptdev2 (wielkość liter ma znaczenie!!!). Wchodzimy do katalogu
scriptdev2 zaznaczamy cały kod źródłowy i wklejamy go do katalogu wyższego
ScriptDev2.
W terminalu wchodzimy do katalogu naszego kodu źródłowego MaNGOS:
cd /home/nazwa_uzytkownika/mangos
i wykonujemy kolejno następujące komendy:
autoreconf --install --force
aclocal
autoheader
autoconf
automake --add-missing
automake src/bindings/ScriptDev2/Makefile
mkdir objdir
cd objdir
../configure --prefix=/opt/mangos --sysconfdir=/opt/mangos/etc --enable-cli --enable-ra --datadir=/opt/mangos
make
make install
make clean
cd ..
rm -r objdir
UWAGA: Ścieżki w tej komendzie
../configure --prefix=/opt/mangos --sysconfdir=/opt/mangos/etc --enable-cli --enable-ra --datadir=/opt/mangos
możemy zmienić na własne np.
../configure --prefix=/home/nazwa_uzytkownika/serwer --sysconfdir=/home/nazwa_uzytkownika/serwer/etc --enable-cli --enable-ra --datadir=/home/nazwa_uzytkownika/serwer
Jeśli wszystko dobrze zrobiliśmy, MaNGOS powinien skompilować się bez żadnych błędów.
Instalacja oraz konfiguracja serwera MaNGOS: (wymagany zaktualizowany klient do wersji 3.0.3)
UWAGA: Jeśli aktualizujemy serwer z wersji 2.4.3 wystarczy tylko wypakować ponownie pliki DBC, mapy i vmapy.Wymagane oprogramowanie:
- System operacyjny Linux
- System operacyjny Windows (potrzebny do wypakowania wszystkich plików z klienta)
- Klient 2.4.3 (enGB lub enUS)
- MaNGOS (http://www.wizzi.pl/index.php?topic=326.0)
- MiniManager (https://sourceforge.net/projects/mmfpm/)
- MySQL 5.0 serwer
- ad.exe (https://mangos.svn.sourceforge.net/svnroot/mangos/trunk/contrib/extractor/ad.exe)
- WinMPQ (http://wow-en.curse-gaming.com/downloads/details/4454/winmpq/)
- GLIBC 2.4
- wine (http://www.winehq.org/)
- Apache2
- PHP5
Instalacja ManGOS:Tworzymy folder (standardowo ten)
/opt/mangos (pamiętaj o przeczytaniu pliku README który znajduje się wraz z plikami binarnymi, gdyż folder instalacyjny może się różnić od tego podanego przeze mnie)
Wypakowujemy BIN, ETC, LIB, MANGOS do
/opt/mangos (j/w)
Utwórz folder
/opt/mangos/maps (j/w)
Utwórz folder
/opt/mangos/dbc (j/w)
Instalacja MySQLŚciągnij i zainstaluj paczkę MySQL zgodna z twoja dystrybucja i w miarę najnowsza.
W celu łatwego dostępu do MySQL (zmiany hasła lub wprowadzenia zmian/małych aktualizacji aktualizacji-
ale nie importowania dużych plików jak pełne bazy) polecam phpMyAdmin.
Uwaga: standardowo MYSQL dostęp użytkownika: root i hasło: <<puste>>, chyba tylko dla localhost
Instalacja bazy danychTworzymy 4 bazy "
mangos", "
characters", "
realmd" i
scriptdev2, następnie otwieramy terminal (konsolę) otwieramy katalog z naszą bazą (np cd ~/Desktop/baza) i importujemy nasze bazy wydając te komendy:
mysql --user=nazwa_użytkownika --password=hasło mangos < nazwa_bazy.sql (baza mangos)
mysql --user=nazwa_użytkownika --password=hasło characters < characters.sql (baza characters)
mysql --user=nazwa_użytkownika --password=hasło realmd < realmd.sql (baza realmd)
mysql --user=nazwa_użytkownika --password=hasło scriptdev2 < scriptdev2_structure.sql, scriptdev2_script_texts.sql (baza scriptdev2)
(nazwa_użytkownika oraz hasło zmieniamy na swoje dane, czyli login i hasło do bazy mysql)
Importowanie baz może zając jakiś czas więc czekajcie cierpliwie :P (szczególnie baza mangos)
Do bazy mangos dodajemy także plik .sql znajdujące się z reguły w katalogu ScriptDev2 (mangos_full_scripts.sql).
Wypakowywanie MAP, DBC i MPQ plików z klienta:Umieść plik ad.exe w katalogu z klientem a następnie tworzymy tam folder i odpalamy ad.exe:
cd ~/.wine/drive_c/WoW/ (w zależności gdzie zainstalowałeś klienta)
sudo mkdir maps
wine ad.exeGdy ad.exe zakończy pracę wypakowujemy WinMPQ i otwieramy folder i odpalamy WinMPQ:
cd ~/.wine/drive_c/WinMPQ
wine WinMPQ.exeOtwieramy plik
locale-enGB.MPQ (znajdujący sie w katalogu Data/enGB lub Data/enUS naszego klienta), zaznaczamy wszystkie wpisy które zaczynają się z
DBCFilesClient, a następnie klikamy
Extract i zapisujemy je w folderze dbc (najlepiej zapisać je odrazu w folderze naszego serwera /opt/mangos/dbc). Wypakowywujemy w ten sam sposób jeszcze te pliki: patch-enGB.MPQ i patch-enGB-2.MPQ(oba pliki wypakowujemy tylko gdy używamy klientów z wersja nie kończącą się zerem np. x.x.2) (
koniecznie w tej kolejności)
Kopiujemy także folder z mapami do katalogu z serwerem (/opt/mangos/maps)
Wypakowywanie vmap(Jeśli nie posiadamy vmap w naszych plikach binarnych serwera pobieramy wszystkie pliki stąd VAMP (https://mangos.svn.sourceforge.net/svnroot/mangos/trunk/contrib/vmap_extract_assembler_bin/) i wklejamy pliki do katalogu vamp (/opt/mangos/vamp) jeśli nie mamy takiego folderu tworzymy go)
Uruchamiamy plik
vmapextract_v2.exe (może to zająć trochę czasu w zależności od prędkości twojego komputera), tworzymy katalog vmap tam gdzie znajduje się plik vmap_assembler.exe, następnie odpalamy program
vmap_assembler.exe (wine vmap_assembler.exe [ścieżka_gdzie_znajduję_się_assambler]/vmaps). Gdy program wypakuje pliki kopiujemy folder vmaps do folderu z naszym serwerem (/opt/mangos/).
Konfiguracja mangosd, realmd, scrpitdev2 (/opt/mangos/etc):mangosd.confDataDir = "/opt/mangos/"
LoginDatabaseInfo = "127.0.0.1;3306;login;haslo;realmd" (login i hasło do konta które stworzyliście w Navicat)
WorldDatabaseInfo = "127.0.0.1;3306;login;haslo;mangos"
realmd:
LoginDatabaseInfo = "127.0.0.1;3306;login;haslo;realmd"
realmd.confLoginDatabaseInfo = "127.0.0.1;3306;login;haslo;realmd"
scriptdev2.confScriptDev2DatabaseInfo = "127.0.0.1;3306;login;haslo;scriptdev2"
Aby odpalić serwer wydajemy te dwie komendy:
./mangos-worldd -c ../etc/mangosd.conf
./mangos-realmd -c ../etc/realmd.confInstalacja strony (MiniManager)Wypakowujemy MiniManager i kopiujemy folder
upload do folderu naszego serwera WWW (/var/www/htdocs). Otwieramy plik
config.php znajdujący się w katalogu
scripts naszej strony i konfigurujemy dostęp do baz SQL:
$realm_db = Array(
'addr' => "127.0.0.1:3306", //SQL server IP:port this realmd located on
'user' => "użytkownik", //SQL server login this realmd located on (nazwa użytkownika mysql)
'pass' => "hasło", //SQL server pass this realmd located on (hasło użytkownika mysql)
'name' => "realmd", //realmd DB name
'encoding' => "utf8" //SQL connection encoding
);
$mangos_db = Array(
1 => array( //position in array must represent realmd ID
'id' => 1, //Realm ID
'addr' => "127.0.0.1:3306", //SQL server IP:port this DB located on
'user' => "użytkonik", //SQL server login this DB located on (nazwa użytkownika mysql)
'pass' => "hasło", //SQL server pass this DB located on (hasło użytkownika mysql)
'name' => "mangos", //World Database name
'encoding' => "utf8", //SQL connection encoding
'db_rev' => "UDB rev.0.8.1" //db rev. used
),
);
$characters_db = Array(
1 => array( //position in array must represent realmd ID
'id' => 1, //Realm ID
'addr' => "127.0.0.1:3306", //SQL server IP:port this DB located on
'user' => "użytkownik", //SQL server login this DB located on (nazwa użytkownika mysql)
'pass' => "hsało", //SQL server pass this DB located on (hasło użytkownika mysql)
'name' => "characters", //Character Database name
'encoding' => "utf8", //SQL connection encoding
), //NOTE: THIS USER MUST HAVE AT LEAST READ ACCESS ON THE WORLD DATABASE
Poradnik zaktualizowany do wersji klienta 2.3.3
Witam, mam kilka pytań.
Mozesz przedstawić to jak zainstalować przez same komendy? Mam ubuntu 7.10 i dostep doniego przez ssh ...
i tu tez mam pytanie odnosnie mysql'a:
mysql --user=nazwa_użytkownika --password=hasło mangos < nazwa_bazy.sql (baza mangos)
tu wgrywamy do bazy mangos pliczek nazwa_bazy.sql ... tak ?
mysql --user=nazwa_użytkownika --password=hasło mangos < characters.sql (baza characters)
a tutaj do bazy mangos pliczek characters.sql? ale czy czasem już od dawna nietrzymamy characterów w bazie mangos tylko w bazie characters? kiedys tak było ale nie pamiętam dokładnie ...
możecie tez napisać jaka jest komenda do podglądu wszystkich procesów w ubuntu i do ich zamykania?
Pozdrawiam Michał
Hej, masz rację to wymaga poprawienia, bazę characters wypakowuje się do bazy characters.
Witam mam problem z uruchomieniem. Uruchamiam przez putty.exe (zdalnie z innego PC)i mam pytanie.. jak uruchamiam realmd w tle (./mangos-realmd -c ../etc/realmd.conf &) nastepnie wychodze przez ctrl + C i włączam worldd (./mangos-worldd -c ../etc/mangosd.conf ) wszystko działa dobrze az nie postanowie wyłaczyć puuty, po jego wyłaczeniu serwer przestaje działać i niemoge sobie pograć? Ktoś moze mi powiedzieć jak uruchomić te 2 aplikacje i móc sie wylogować. Żeby chodziły cały czas tak jak np. mysql. Proszę o szybką odpowiedz.
juz sobie poradziłem :)
mam problem z wypakowaniem Vmap:
Tutaj jest opis z błedami ale korzystałem z poradnika na stronie mangosa i mam takie błedy
root@MY-PC:/opt/mangos/vmap# ./vmapextract_v2.exe
Extract V2.4 2007_07_12. Beginning work ....
Game path: Data\
Scanning for locales.
Could not open data directory for reading. Aborting.
Extract wmo complete (No errors)
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
wine: Unhandled exception 0x40000015 at address 0x4226ae (thread 0009), starting debugger...
Process of pid=0008 has terminated
No process loaded, cannot execute 'echo Modules:'
Cannot get info on module while no process is loaded
No process loaded, cannot execute 'echo Threads:'
process tid prio (all id:s are in hex)
No process loaded, cannot execute 'detach'
Nastepnei uzywam komende:
root@MY-PC:/opt/mangos/vmap# ./vmap_assembler.exe /opt/mangos/vmap/buildings vmap
exit with errors
Co o tym myślisz? potrafisz pomóc ?
CytujGame path: Data\
Scanning for locales.
Could not open data directory for reading. Aborting.
Jak sam widzisz problem jest ze ścieżka do folderu data, czy jesteś pewien iż dobrze wpisałeś ścieżkę ?
no tak, ale i gdzie mam zrobic taki folder, bo niewiem juz ... nigdzie niema o tym w poradniku ...
//EDIT: i mam jeszcze jedno pytanie które chce tylko zarysować. Czemu przy kompilacji mangosa zawsze kompilacja za pierwszym razem nie wychodzi, musze kompilować 2-3 razy? wie ktoś cos na ten temat? priorytetem jest u pytanie odnośnie Vmap
Jak wypakowuje vamps za pomoca vmapextract powstaje mi folder buildings. co z nim zrobic?? do usuniecia czy co??
Usuwasz wszystko prócz folderu vmaps. Tylko pliki wewnątrz tego folderu będą Ci potrzebne.
zeby wypakowac Vmapy trzeba mieć całego zainstalowanego wowa czy wystarczą już wypakowane mapy - bo czytałem ze do zrobienia Vmap wystarcza tylko mapy ...
Spróbuj, ja zawsze wypakowuje z pełnego klienta.
Witam mam problem z uruchomieniem. Uruchamiam przez putty.exe (zdalnie z innego PC) wpisuje w konsoli ./mangos-worldd -c ../etc/mangosd.conf i wszystko ładnie się odpala dochodzi do moment " mangos > " i stoi . Próbowałem uruchomić proces w screen'ie - screen -S mangos ./mangos-worldd -c ../etc/mangosd.conf
ale nie wiem z jakich powodów screen sie nie zamyka dalej stoi na mangos > po tym jak sie wczyta.
Jak mam zatem odpalić drugi proces ./mangos-realmd -c ../etc/realmd.conf - bo jak dam ctrl + c to zamykam pierwszy.
Kolega michal3148 wyżej opisał że miał ten sam problem i jakoś sobie z nim poradził ale nie był łaskaw opisać jak
Odpal drugą konsole i w niej wydaj komendę bądź zakładkę w obecnym oknie terminalu.
Ups w odpowiem na mojego posta - przyda się takim początkującym przedszkolakom linuxa jak ja
aby uruchomić mangosa np poprzez konsole shh ( program putty)
nalezy wpisac w konsoli:
screen -S mangos ./mangos-worldd -c ../etc/mangosd.conf
(gdzie nazwa mangos jest nazwą procesu ( screen'a )
po czym klikamy ctrl+a+d - dzieki czemu wychodzimy z uruchomionego procesu.
Następnie wpisujemy w konsoli:
screen -S realmd ./mangos-realmd -c ../etc/realmd.conf
(gdzie nazwa realmd jest nazwą procesu ( screen'a )
po czym klikamy ctrl+a+d aby wyjsc z owego procesu.
Teraz mangosa mamy uruchomionego w tle.
Jeśli teraz chcemy wejść do danego procesu wpisujemy w konsoli ( w zależności do którego procesu checmy wejść )
screen -r mangos lub screen -r realmd
Jesli chcemy zobaczyć wszystkie procesy działające na naszym serwerze w tle wpisujemy w konsoli
screen -r
Uwaga ważna jest wielkość liter -S i -r przy wpisywaniu.
a tu https://wiki.rootnode.net/wikka.php?wakka=Screen (https://wiki.rootnode.net/wikka.php?wakka=Screen) znajdziecie opis stosowania screena w shh'lu
Poradnik zaktualizowany.
A możesz podać jak wyłączyć mangos-worldd :P
Witam. Czy mógłby ktoś z was zaaktualizować ten poradnik? Dodać konkrety? Krok po kroku co i jak? Przejrzałem już kilka tutków na angielskich forach, i tutaj sporo brakuje. I mimo tego łącząc wasz tutek i inne, podczas kompilacji mam błędy. Czy może ktoś napisać krok po kroku co i jak?
http://getmangos.com/community/showthread.php?t=4011
Porównaj poradniki...
Z tego poradnika też korzystałem. Nie wiem czemu. Podczas kompilacji w konsoli pokazuje się kilkanaście warningów. Przy patchowaniu pokazuje się kilkanaście nawiasów jakby to był wybór do nie wiem czego. Po dwóch kompilacjach w folderze opt/mangos/ jest 4 inne foldery, zrzucam to do jednego dodaje mapy dbc i vmapy wpisuje tą komende na uruchomienie i pisze że "no such file or directory ", przy użyciu screen'a uruchamiał sie pokazywało sie to samo co przy zwykłym i zamykał.
Sprawdź patch SD2 możliwe że się zmienił, poradnik jest po to by opisać co robić po kolei, ja osobiście gdy korzystam z poradników jakichkolwiek (i źródeł SVN) sprawdzam jakie pliki są patchowane/dodawane. Poradnik ma Wam pomóc we własnej kompilacji, lecz nie jest jego zadaniem poprowadzenie za rączkę krok po kroku. Wtedy niczego się nie nauczysz i nie wyciągniesz żadnych wniosków z kompilowania czegokolwiek (nie mam tu na myśli nawet serwera MaNGOS).
//edit
jeśli sam zauważasz błędy zgłaszaj je, na pewno zostaną dodane do poradnika bądź pomogą innym. Każdy może się w czymś mylić...
Zauważyłem brak tego
Cytuj
apt-get install build-essential binutils gcc g++ cpp automake autoconf make libmysql++-dev libtool libssl-dev subversion patch zlibc libc6 git-core
Komenda do zainstalowania tych pakietów.
Spróbuje jeszcze raz skompilować bez użycia tego patcha.
Co do uczenia się samemu. Kompilowałem wg poradnika mangosa pod windowsem. I zauważyłem jeden spory błąd, który nigdzie, nie widziałem żeby był opisany. Ale wiedziałem co robić, wystarczyło kilka poleceń w google wpisać. Ale niestety tu przy linuxie nie potrafię znaleść niestety odpowiedzi na te błędy. Dlatego poprosiłem o poradnik kompilacji krok po kroku.
Ale skoro pliki powstają, to winą tego patcha może być to że się nie uruchamia mangos ? I że wywala mi ten błąd "no such file or directory" Przecież pliki są w katalogu.
Wypisałem wszystkie pakiety które są wymagane do pobrania, ta komenda jest tylko dal linuksów opartych na debianie...
Winą nie uruchamiania się serwer (a binarki są na pewno skompilowane bez błędów) może być problem z system, nie posiada jakiś bibliotek trudno stwierdzić...
Hmmm.. a jak sie dowiedzieć jakich?
To może mi powiedz na jakiej dystrybucji najłatwiej to skompilować. Bo ja już głupieje.
W niektórych przypadkach musisz dodać biblioteki które skompilowałeś (w windowsie są to .dll) i wrzucić je do katalogu /var/lib. Poza tym sprawdź czy masz aby na pewno wszystkie pakiety które są opisane w poradniku, jeśli chodzi o dystrybucję to nie wiem, zależy to od Ciebie, ja kompilowałem na Debianie i Ubuntu.
Ja na debianie i ubuntu mam ten sam błąd "no such file in directory". Nie wiem już co kombinować żeby jakoś go uruchomić.
Bez patcha na debianie mam błąd :
Cytuj../../../src/game/Player.cpp:4242: error: missing terminating " character
../../../src/game/Player.cpp: In member function 'uint32 Player::DurabilityRepair(uint16, bool, float, bool)':
../../../src/game/Player.cpp:4242: error: 'Wrong' was not declared in this scope
../../../src/game/Player.cpp:4242: error: expected `;' before 'dQualityModEntry'
make[3]: *** [Player.o] Błąd 1
make[3]: Opuszczenie katalogu `/root/mangos/objdir/src/game'
make[2]: *** [all-recursive] Błąd 1
make[2]: Opuszczenie katalogu `/root/mangos/objdir/src'
make[1]: *** [all-recursive] Błąd 1
make[1]: Opuszczenie katalogu `/root/mangos/objdir'
make: *** [all] Błąd 2
Po użyciu komendy:
Cytujgit am src/bindings/ScriptDev2/patches/MaNGOS-2008-12-22-ScriptDev2.patch
mam bląd:
Cytujerror: configure.ac: does not match index
error: src/bindings/.gitignore: already exists in working directory
error: src/bindings/Makefile.am: does not match index
error: src/mangosd/Makefile.am: does not match index
Patch failed at 0001.
When you have resolved this problem run "git-am --resolved".
If you would prefer to skip this patch, instead run "git-am --skip".
Czyli spatchowac nie moge... Bez patcha skompilować tez nie moge.
Druga sprawa w var/lib w jaki folder mam wrzucic te bilbioteki ? bo tam jest tyle tych folderów że głowa malutka
Co do lib wrzucasz do kat. lib głównego, natomiast ten błąd hmm jest dziwny, zgłoś go na forum SD2 może tam pomogą Ci ja niestety nie wiem co może być powodem tego błędu.
Z błędem dałem sobie rade. Powiedz co robic:
wpisuje:
screen -S mangos ./mangos-worldd -c ../etc/mangosd.conf
i pojawia mi sie:
Cytuj
./mangos_worldd: nie ma takiego pliku ani katalogu
---------------------
dobra rozwiązałem problem.
Chodziło o zmiane nazw plików mangosd.conf.dist wystarczylo sie dist pozbyc i wsio działa jak należy.
-------------------------
Teraz inna sprawa:
Odpalam serwer przez mc. Bo za pomoca komend nie działa. Próbowałem najpierw
cd mangos
potem
screen -S mangos ./mangos-worldd -c ../etc/mangosd.conf
ale to nie odpala serwa. A chce odpalić serwer tak żebym mógł potem putty zamknąć. Jakiej komendy mam użyć (debian)?
A czy może mi ktoś dać Link do Skompilowanych już plików pod Linuxa :) Pod Patch 3.2.0?
Mangos nie obsługuje jeszcze patcha 3.2.0 więc nie znajdziesz takich binarek.