[Hilo oficial] MaNGOS / TrinityCore 2

Iniciado por Ariath, 27 Junio 2010, 01:16 AM

0 Miembros y 1 Visitante están viendo este tema.

Ariath

Bueno, al final he optado por crear un nuevo hilo antes que fusionar los anteriores.

Como la guía, ésta vez irá en PDF, no voy a reservar posts. La misma la pondré aquí en cuanto la tenga terminada.

Quien quiera postear en el hilo para preguntar dudas o comentar cualquier cosa referente al tema del que trata el mismo puede hacerlo perfectamente.

Aunque aquí vaya a dejar más adelante mi guía, esto no es un hilo dedicado a ésta guía, sino a cualquier cosa que tenga que ver con la emulación con MaNGOS y TrinityCore 2.

Salu2


P.D: De momento, dejo los antiguos hilos vivos, pero cerrados, por si alguien quisiera ver algo (al menos del de Trinity). Cuando la guía la termine, esos hilos irán al vacío.

P.D 2: Esto lo dejo aquí de manera provisional:

Guía de compilación de MaNGOS bajo Ubuntu 10.04

Huelga decir, que el que se meta a montar un servidor en Linux, tiene que saber manejarse con él

Las instrucciones van a ser muy sencillas y precisas. En este ejemplo voy a trabajar en mi escritorio (/home/ariath/Escritorio), y todo el servidor lo voy a dejar en el (la carpeta se llamará MaNGOS, la ruta temporal de compilación se llamará objdir, y la ruta donde se depositará todo el resultado de la compilación será /bin/Linux_Release, dentro de MaNGOS).

Todo esto está extraído en cierto modo del Wiki de MaNGOS:


1º. Dependencias necesarias: build-essential, gcc, g++, cpp, automake, git-core, autoconf, make, patch, libmysql++-dev, libtool, libcurl4-openssl-dev, libssl-dev, grep, binutils, subversion, zlibc, libc6, mysql-server-5.1, unrar


2º. Una vez lo tengáis todo instalado (al instalar MySQL os pedirá que introduzcáis el password a usar para el usuario root), procedemos a descargar MaNGOS:

Código (bash) [Seleccionar]
git clone git://github.com/mangos/mangos.git /home/ariath/Escritorio/MaNGOS


3º. Después, descargamos ScriptDev2 mediante Subversion:

Código (bash) [Seleccionar]
svn checkout https://scriptdev2.svn.sourceforge.net/svnroot/scriptdev2/ /home/ariath/MaNGOS/src/bindings/ScriptDev2


4º. Descargamos YTDB:

Código (bash) [Seleccionar]
svn checkout http://svn2.assembla.com/svn/ytdbase /home/ariath/Escritorio/YTDB


5º. Descargamos ACID:

Código (bash) [Seleccionar]
svn checkout https://sd2-acid.svn.sourceforge.net/svnroot/sd2-acid/trunk/wotlk/ /home/ariath/Escritorio/ACID


6º. Ahora vamos a compilar MaNGOS, pero antes es preciso parchearlo para que ScriptDev2 se compile con el (esto solo se hace en Linux). Primero nos situamos en el directorio de MaNGOS:

Código (bash) [Seleccionar]
cd /home/ariath/Escritorio/MaNGOS

Y a continuación hacemos:

Código (bash) [Seleccionar]
git am src/bindings/ScriptDev2/patches/MaNGOS-*

Ahora nos preparamos para compilar MaNGOS:

Código (bash) [Seleccionar]

autoreconf --install --force
mkdir objdir
cd objdir

../configure --prefix=/home/ariath/Escritorio/MaNGOS/bin/Linux_Release --sysconfdir=/home/ariath/Escritorio/MaNGOS/bin/Linux_Release/etc --datadir=/home/ariath/Escritorio/MaNGOS/bin/Linux_Release

make
make install



7º. Con lo anterior hemos hecho lo siguiente: Después de crear el directorio temporal para la compilación, hemos configurado el script de compilación de MaNGOS para que nos deposite todo en la ruta que habíamos elegido antes (que es la indicada por --prefix)

Todos los archivos de configuración irán a parar a una carpeta llamada etc (ubicada en la ruta indicada en --sysconfdir), y cualquier otra cosa irá a la ruta indicada por --datadir)

Ya después de esto, solo quedará configurar los archivos de configuración alojados en /home/ariath/Escritorio/MaNGOS/bin/Linux_Release/etc , usar Wine para ejecutar los extractores de DBCs y Maps (o eso, o extraer los datos del juego desde un Windows), e instalar las bases de datos.

Chukin

#1
Pffrr... :-[ Como primera vez que intento compilar MaNGOS me tira un error al compilar ScriptDev2,les dejo el registro:

http://paste2.org/p/929858

No se porque sale eso ya trate de compilar el VC80,VC90 y VC100 y nada,tambien descargue de nuevo la fuente y nada,esto ya me tiene muy jodido..

HELP MEEE  :-(

Salu2!!


Ariath

Lo primero, os recomiendo que, para publicar textos largos (como la salida del compilador), uséis servicios como http://paste2.org/new-paste , ahí pegas lo que quieras, y cuando pinchas en Submit (enviar), te genera un enlace a lo que has pegado.

Es una especie de "imageshack", pero para texto.


Lo segundo, ese tipo de errores, de identificadores no declarados, puesto que ScriptDev2 es parte de MaNGOS, muchas veces vienen porque el MaNGOS que estás usando está más actualizado que el propio ScriptDev2.

Yo he tenido una experiencia similar, cuando en una ocasión actualicé ambos, y la compilación del ScriptDev2 me devolvió un error haciendo una alusión a una función que no existía (la cual era propia de MaNGOS).

Al final resultó que MaNGOS había modificado unas funciones, y simplemente tuve que esperar a que los de ScriptDev2 se pusieran al día (para eso es para lo que sirve ver el registro de cambios de cada proyecto ;) ).

Estas cosas ocurren con relativa frecuencia cuando usamos las últimas revisiones disponibles de todo, porque siempre puede haber algo que todavía no se haya actualizado debidamente.

Salu2

Chukin

Gracias por responder y por el consejo,solo me queda esperar..


PD:Eh editado el mensaje con un link generado con paste2,gracias por el tip.


Ariath

#4
Dime qué revisiones de MaNGOS y ScriptDev2 tienes actualmente, a lo mejor te puedo orientar.

Salu2


P.D: Estas webs tenerlas en mente siempre:

ScriptDev2 changelog: http://scriptdev2.svn.sourceforge.net/viewvc/scriptdev2/?view=log
MaNGOS changelog: http://github.com/mangos/mangos/commits/master

En tu caso, por ejemplo, en un mensaje de hace unas 3 semanas, en el changelog de ScriptDev2 dicen esto (me he limitado a buscar en el changelog el texto CREATURE_TYPEFLAGS_CAN_ASSIST):

Cita de: SD2 Changelog
Update sources with CREATURE_TYPEFLAGS_CAN_ASSIST. Requires Mangos 10153

Lo que te he ennegrecido es muy importante. En el mensaje hacen referencia a que han actualizado el código fuente utilizando la variables CREATURE_TYPEFLAGS_CAN_ASSIST, e indican, que requiere la revisión 10153 de MaNGOS.

Dicho de otra manera, si intentas compilar de esa revisión de ScriptDev2 en adelante, con una revisión de MaNGOS inferior a la que te exigen, tendrás errores.


P.D 2: Por cierto, cuando tengas errores de este tipo, no pierdas el tiempo intentando compilar las 3 soluciones, porque dan los mismos resultados.

Yo me limito a compilar siempre la VC90, porque es la correspondiente al Visual C++ 2008, el cual es el Visual C++ más usado hoy día.


P.D 3: Otra recomendación. Aparte de que siempre tengáis en cuenta las revisiones que estáis intentando compilar de los proyectos, si la revisión que intentáis compilar es la última disponible, y por lo que sea no os compila, no os pongáis nerviosos ni os desesperéis. Simplemente probar a compilar revisiones anteriores.

El desesperarse con estas cosas queriendo echarlas a andar como sea es la ruta más corta al abandono. Nunca intentéis montar un servidor teniendo en la cabeza la idea de que queréis que os vaya bien todo a la primera y en ese mismo día, porque sino se cumple eso...

Chukin

Esas son algunas cosas que aun no aprendo hacer ya que siempre descargaba mangos ya compilado y luego la base de datos y asi como hay millones de tutoriales en web..pero ahora que me meto a compilarlo yo mismo me lio mucho,y hay algunas cosas que debo aprender a saber,como por ejemplo saber la revision de cada cosa que tienes..otra cosa mas es como hacer o de que repositorio descargar tal y tal revision porque solo conozco un repositorio y supongo que de ahi descargas la revision mas nueva.

Ahora mismo eh actualizado ScriptDev2,pero como dices el problema va a hacer de MaNGOS y no de ScriptDev2,y no funciono a lo hora de compilarlo como era de imaginarselo,y pues ahora pasare a actualizar MaNGOS,si me funciona ya te cuento.


Salu2!


Ariath

Si la gente, en vez de hacer tutoriales sobre como preparar servidores ya hechos, los hubiera hecho para enseñar a hacerlos... otro gallo nos cantaría :P .

A ver, saber la revisión de cada cosa es fácil. La revisión de MaNGOS siempre la incluyen en el fichero src\shared\revision_nr.h .


Aquí un ejemplo del contenido de ese fichero:

Cita de: revision_nr.h
#ifndef __REVISION_NR_H__
#define __REVISION_NR_H__
#define REVISION_NR "10231"
#endif // __REVISION_NR_H__

En negrita la revisión.

Luego, para cualquier cosa descargada mediante Subversion tienes 2 maneras, dependiendo de cómo uses el programa.

Si lo usas por consola: svn info CARPETA

Donde CARPETA es la carpeta descargada de la cual quieres saber su revisión actual.
En este caso tendrías una salida similar a esta:

Citar
Path: ACID
URL: https://sd2-acid.svn.sourceforge.net/svnroot/sd2-acid/trunk/wotlk
Repository Root: https://sd2-acid.svn.sourceforge.net/svnroot/sd2-acid
Repository UUID: c17dde95-a24a-0410-8362-edf8568f06ff
Revision: 35
Node Kind: directory
Schedule: normal
Last Changed Author: X-Savior
Last Changed Rev: 35
Last Changed Date: 2010-03-19 17:16:44 +0100 (vie, 19 mar 2010)

Y si usas Subversion desde una interfaz gráfica, pues todas tienen una opción para ver información de la carpeta en cuestión.

Luego, lo de los repositorios. De un repositorio puedes descargar desde la revisión más nueva que tenga de algo, hasta la primera que tuvo, puesto que almacenan todos los cambios sufridos por las cosas entre revisiones.

Lo único que tienes que saber es cómo pedirles una revisión en concreto. Ésto en Subversion en sumamente fácil, y en Git, aunque no tiene mucha complicación, es algo más enrevesado.

En Subversion, si quieres descargar la revisión 10 de algo, por ejemplo, tendrías que hacer:
svn checkout -r 10 url carpeta

Y si usas interfaz gráfica, todas te proveen en el momento de ir a hacer la descarga, de una zona donde especificar una revisión si quieres.

En el caso de Git es un poco más enrevesado debido a la manera que tiene Git de funcionar. Aunque quieras la primera revisión de algo alojado en Git, primero tienes que clonar el repositorio, y luego tienes que reiniciarlo a la revisión deseada.

En este aspecto es fundamental conocer los HASH de las revisiones que te interesan (los HASH son unas cadenas alfanuméricas que actúan como identificadores de cada revisión, ya que Git no usa un número para esto).

Una vez conoces el HASH de la revisión que quieres, y tras haber clonado primeramente el repositorio, solo tienes que hacer lo siguiente (estando DENTRO de la carpeta que descargaste):

git reset --hard HASH

En ese momento, el contenido de dicha carpeta se "reiniciará" a la revisión indicada por el HASH dado.


Yo personalmente, siempre mantengo actualizado todo, siempre me bajo las últimas versiones, y si veo que no compilan, me espero algún día que otro para ver si se soluciona, actualizo y vuelvo a probar.

A los que suelen montar versiones antiguas, como la 3.1.3, 3.2.2, etc ... creo que es mejor estar a la última en este caso, pues en las últimas revisiones se solucionan muchas mas cosas que en las anteriores.

Salu2

Chukin

Pues en el archivo revision_nr me sale esto:

#ifndef __REVISION_H__
#define __REVISION_H__
#define REVISION_ID "*"
#define REVISION_DATE "*"
#define REVISION_TIME "*"
#endif // __REVISION_H__


Que curioso no?


Ariath

Pos si...

Yo de ti descargaría la última versión disponible de MaNGOS, ScriptDev2, YTDB y ACID, y con eso comenzaría a trabajar.

Salu2

Chukin

Pff..pues bien descargue todo otra vez (menos Acid porque si man no recuerdo solo se necesesita cuando usas UDB),y leche! al fin compile todo bien,luego saque mas o menos lo final y recuerdo que siempre vi unos archivos .conf y ahi no taban por lo que le pregunte a un amigo y me dijo que me metiera a src y luego mangosd y realmd y ahi encontraria unos archivos como con 3 extensiones respectivamente y luego las copiara a la carpeta final y les borrara lo que seguia de conf y ya quedo!...bueno no  :¬¬
Ahora pense y recorde que hacia falta una carpeta llamada DBC (creo..),en fin... xD Como la extraigo o de donde la descargo?


Salu2!