Crear servidor Ascent para World of Warcraft actualizado 2º post

Iniciado por frekency, 10 Agosto 2007, 00:21 AM

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

frekency


Última Actualización: Miércoles, 15 de Agosto de 2007
World of Warcraft & The Burning Crusade Versión 2.1.3

Ante todo una pequeña introducción:

Yo empecé como vosotros con una idea para crear un servidor, cuando yo empecé era la epoca de mangos que prevalecia ante el wowemu ahora resulta que las cosas cambian, y es antrix o ascent el que está por encima de mangos, está claro que esto cambiara otra vez, y sera asi siempre siempre saldrán nuevos emuladores mejores que los anteriores, una cosa hay que tener clara, yo no gano nada con este post, al contrario aparte de que no gano dinero lo unico que hago es motivaros a mejorar el vuestro por lo que la competencia aumentará, y muchos admins intentaran acabar conmigo xDD.

Pero ay un tema que me gustaría tocar, y que hacen en muy pocos manuales y es sobre el tema de la ilegalidad, antrix o ascent de por sí no es ilegal, de echo su uso es completamente legal, el problema que cuando metemos una base de datos, ya sea terranet, obdb o la que sea estamos metiendo en el servidor contenido del propio juego, y este contenido esta registrado por lo que al hacer eso se convierte en ilegal el servidor, y podria caernos una multa considerable, así que no me responsabilizo del contenido de esto.

Antes de comenzar voy a agradecer a b014v3rt ( creo que es la primera vez que escribo el nick con todos los numeritos ) por el anterior post, que la verdad ha dado mucho de sí, pero como todos sabeis ya se convertía una lata, porque el tutorial no estaba actualizado, y la solución a vuestros fallos se encontraban entre sus muchisimas páginas, por eso el crear este 2º post, con todo actualizado, así como una lista de fallos posibles, y recordad que yo no me hago responsable.

Primer Post creado por b01n4v3rt

Una ultima cosa antes de comenzar y que quiero que todos tengais claro y esque no debeis crear un servidor si...:


- No sabes Lo Que Que Es Una IP
- No sabes La diferencia entre IP LAN y WAN.
- No sabes que Son Puertos y Como se relacionan Con La IP.
- No Sabes que Es un Router, y Mucho Menos si Tienes uno instalado.
- No Sabes Como Usar google O El boton search.
- Sabes Como usar 'google' o 'search' Pero Te reusas a Usarlos.
- No estas dispuesto a Intentar Las cosas Por ti Mismo.
- Esperas Que alguien Te haga un Servidor.
- Esperas Cobrarle a Los Jugadores o Ganar Mucho Dinero.
- solo Quieres ser GM
- Planeas Hostear El Servidor y Jugar en La Misma Computadora.
- No eres dedicado.

Esto es algo que ha rulado por internet pero tienen bastante razon, de que te sirve crear un servidor, si ni si quiera conoces el concepto en sí, así que si no sabes algo de eso, informate antes porque si preguntas alguna duda en referencia a si, no se si tengo un router o que es una ip o un dominio, no serás respondido al menos por mi parte. Tambien no esperes que tu servidor sea igual en todo al oficial, sin ningun fallo ya que el emulador antrix o ascent es un proyecto en constante desarrollo para mejorarlo pero hasta la fecha, no ha saldio la version definitiva, asi que evita la pregunta, "Quiero hacer un servidor, pero el antrix que tengo tiene muchos fallos me gustaría encontar uno que no los tenga, donde puedo hacerlo?"

El contenido del tutorial, lo pondre estructurado, así estará todo mucho mas organizados, habra una respuesta especifica, donde estarán todas las descargas que necesitais para la realización del servidor, así como uno que os explicara como sacar las ultimas versiones y compilarlas vosotros mismos.


1. Instalaciones previas.

  - Instalando los .NET Framework.
  - Instalando Mysql.
  - Instalando el cliente SQLyog.
  - Instalando servidor web Xampp.
  - Creación de un dominio para nuestro servidor.
  - Configuración del archivo host y apertura de puertos.

2. Instalando la base de datos.

  - Instalar OBDB.
  - Instalar Terranet.
  - Traducir Quests.
  - Querys a ejecutar.

3. Instalando el Emulador y configuración del mismo.

  - ¿Porqué elegir antrix o ascent a otros emuladores?
  - Instalación del emulador.
     - Extraer Mapas.
     - Extraer archivos DBC.
     - Configuración básica.
     - Configuración para red local.
     - Arrancando el Servidor.

4. Instalaciones de páginas para el servidor.

  - Instalar página para crear cuentas.
  - Instalar página de estadisticas.
  - Instalación y uso de Puppy.
 
5. Descargas

6. Descargas alternativas.

  - ¿Qué es subversión?
     - Instalar Tortoise SVN.
  - Obtener Revisiones
     - Ultima revisión de la base de datos OBDB.
     - Última revisión de ascent.
     - Compilar ascent en Windows.
     - Compilar ascent en Linux.
     - Obtener cualquier version de OBDB, o de Ascent-Antrix

7. Posibles fallos

8. Administración de vuestro servidor

  - Crear un usuario con privilegios o GM.
  - Comandos GM (Parcialmente traducidos).
  - Configuración Avanzada.
  - Actualizando el servidor y la Base de datos.
  - Hacer copias de seguridad de vuestra base de datos.

9. Personalización de nuestro servidor

  - Crear un NPC.
  - Crear una quest.
  - Crear objetos.
 
10. Conclusión y Agradecimientos.



frekency

#1
1. Instalaciones previas.

Partimos de que vamos a querer tener, un servidor al publico, con una página de creacion de cuentas y una que nos muestre unas estadisticas, a tiempo real del servidor, necesitaremos las siguientes aplicaciones: (Recuerdo que todas las descargas se encontraran en el apartado correspondiente)

- Instalando los .NET Framework:

Bueno la plataforma .net es un componente que añadimos a nuestro windows, y nos facilita y administra la ejecucion de programas creados para el sistema operativo Windows, es completamente necesario tener esto instalado ya que sino no podremos ejecutar el emulador:

.NET Framework

.NET Framework 2

.NET Framework 3
Si, ya se que dije que las descargas estarían aparte, pero con esto hago una excepción :D.

- Instalando Mysql:

- Primero hay que saber la diferencia entre un servidor mysql y un cliente como por ejemplo SQLyog, porque muchas veces me han dicho cosas como voy a reinstalar la base de datos, y desinstalan tambien el mysqlyog y no tiene nada que ver, esto solo lo usaremos para conectarno a nuestro servidor y manejar nuestras bases de datos, bueno al lio, lo descargamos y ejecutamos, luego solo tenemos que seguir estas pautas:

-   Next
-   Custom
-   Si no viene en la lista de cosas a instalar el C Include Files / Lib Files para instalar hacemos click sobre la x que tien al lado de color rojo y luego marcamos, This features will be instaled on local hard drive. Luego pulsamos next.
-   Install (Esperamos a que acabe)
-   Next
-   Next
-   Marcamos Configure the MySQL Server now, y le damos a Finish
-   Next
-   Detailed Configuration
-   Si marcamos Developer Machine ( le estamos diciendo que solo queremos el mysql para usar servidores y no mas aplicaciones), si marcarmos Server machine ( le decimos que usaremos mas de una aplicacion al mismo teimpo), marcamos Next
-   Multifunctional Database, Next
-   Manual Setting ( Elegimos entre 300 – 500 conections ), Next
-   Next
-   Standard Character Set, Next
-   Next
-   Escribimos nuestra pass de root, y marcamos enable root access from remote machines ( solo si nuestro servidor va a ser controlado desde otro ordenador), Next
-   Execute

- Instalando el cliente SQLyog:

Descargamos e instalamos el SQLyog, no tiene ninguna dificultad.

- Instalando servidor web Xampp:

Descargamos e instalamos el Xampp y ejecutamos el servidor apache, con esto podremos tener nuestra página web, una cosa no instalar el mysql con el xampp porque ya lo hicimos antes, si lo instalais aparte de tener un lio del copon podeis tener errores de compatibilidad e historias raras, asi que solo ejecutad el servicio apache.

- Creación de un dominio para nuestro servidor:

Esto es recomendable para aquellas personas que tienen una ip dinamica ( osea que cambia ), pero tambien es recomendable para aquellas que tienen una estatica o fija, ya que siempre quedará mejor un nombre como miservidor.no-ip.com ha nuestra ip, claro que yo siempre recomiendo comprar un dominio .com .net o el que sea pero eso ya es opcional xDD.

Vamos a ir a lo facil entramos en la página de no-ip.com: http://www.no-ip.com/
Nos creamos una cuenta y nos logueamos, una vez logueados en el menú Hosts/Redirects, marcamos Add, en hostname ponemos un nombre da igual cual sea pero será el nombre que estara cara al publico asi que elegir uno bueno, luego en la lista desplegable elegimos el dominio, no-ip.com, no-ip.info, no-ip.biz da igual, el resto lo dejamos como esta y pulsamos Create Host.

Bien pongamos el ejemplo que yo me creé el dominio prueba.no-ip.com, usaré  este dominio en todo el proceso de instalación vosotros solo teneis que cambiarlo por el que os hayais creado.

Los que tengais ip estática, esto bastará pero los que las tengais dinamica, existe un programa muy útil llamado No-Ip Duc. Instaladlo y cuando lo ejecutais os logueais en el programa, el programa realiza una comprobacion cada x tiempo, si vuestro dominio no está actualizado con vuestra ip actual, volverá a redireccionarlo, solo lo teneis que poner y olvidaros del tema.

- Configuración del archivo host y apertura de puertos:

Este paso para mí es uno de los más importantes, ya que olvidarse de esto, puede fastidiarnos el resto del proceso, así que lo hacemos ahora y nos lo quitamos de encima, primero tenemos que saber cual es nuestra ip local:

- En inicio, pulsamos ejecutar y escribimos cmd, luego dentro de la consola tecleamos ipconfig, apuntamos nuestra dirección ip que será del estilo 192.168.x.x más adelante tenemos que abrir los puertos a esta dirección.

-Ahora en inicio, ejecutamos lo siguiente, copialo y pegalo así no habrá fallos: %windir%\system32\drivers\etc una vez dentro del archivo creamos la siguiente linea: Dirección IP dominio, en mi caso sería:
192.168.x.x prueba.no-ip.com con esto vuestro servidor estará abierto a todo el que quiera entrar.

NOTA: Tenemos que añadir tambien otra linea con 127.0.0.1 localhost
En definitiva os tiene que quedar solo:
127.0.0.1 localhost
IpLocaldelservidor dominio.

- Pero para que todo el contenido funcione y si teneis un router teneis que abrir los siguientes puertos a la direccion ip que os salió antes, todos son tcp:  8129, 8093, 8090, 8085, 3724, 80, 3306. Tambien aseguraos de tener desactivado el firewall de windows ya que puede interferir mucho.

Bueno despues de todo esto ya podemos seguir con la instalacion del servidor.



frekency

#2
2. Instalando la base de datos.

- Instalar OBDB

Bueno a mi parecer todavía obdb sigue siendo la mejor base de datos que hay, no solo por el echo de que se actualize constantemente, sino porque es la oficial para ascent o antrix, de echo los que trabajan con obdb, trabajan tambien conjuntamente con los del emulador, para añadir mas compatibilad aun. Recomiendo usar siempre la versión mas estable de esta base de datos, aunque eso es un rollo a mi parecer, lo mejor es conseguir las ultimas revisiones y probarlas y ayudar a arreglar los fallos y demas, de todas maneras en el apartado de descarga siempre tendreis dos tipos, una la estable y otra la más actual. Bueno os descargais la que querais y seguimos el proceso:

- Abrimos el SQLyog y nos conectamos a nuestro servidor mysql poniendo nuestros datos, dominio, usuario y pass, una vez dentro crearemos una base de datos nueva, que será la referencia que tendra nuestro servidor, para ello solo tenemos que pulsar en DB, y luego create DB, ponemos por ejemplo ascent, y la creamos.

- Primero realizamos una instalacion básica de nuestra base de datos, tenemos que coger, e importar el archivo obdb-def.sql, con lo que nos importará una base de datos limpia, para hacer esto solo tenemos que pulsar boton derecho sobre la base de datos que acabamos de crear (ascent) y luego marcamos Restore From SQL Dump, buscamos ese archivo y luego pulsamos execute, esperais un par de minutos o incluso menos, y tendreis vuestra instalación limpia de la base de datos.

Nota: Hacer esto solo la primera vez y solo si no estais actualizando, porque si ya teneis una instalada y meteis este archivo, os borrará todas las cuentas, y será un poco molesto :D.

Como decía esto mete una base de datos limpia, pero lo que nos interesa realmente es meter todo los npcs, objetos, criaturas y quest.

- Nos vamos a la carpeta de la obdb, y buscamos el archivo dbimport.bat, pulsamos boton derecho editar, y nos sale esto:

@echo off
set user=ascent
set pass=ascent
set db=ascent
set server=localhost

Pues bien, cambiamos los datos que nos dicen por los nuestros, una vez echo esto guardamos y lo ejecutamos, empezará a importar tablas y tardará unos 5 o 10 minutos como mucho... Cuando acabe ya estará todo listo, tan solo tendriais que crearos una cuenta, pero eso un poco más abajo.

Luego está el tipo de persona que quiere hacer un funserver o servidor divertido y esto recibe este nombre porque en el se consigue todo, con menos esfuerzo ya sea objetos, nivel, oro, monturas y demás, con la obdb venia una carpeta con unos archivos sql que teneis que importar, para que vuestro servidor sea aun más funserver, esto mete vendedores basicamente por todos lados que venden de todo, esta carpeta fue eliminada más adelante por motivos de seguridad del servidor, pero yo os la he subido si quereis meterla solo teneis que ir importando uno a uno los archivos.

- Instalar Terranet

Si por el contrario decidiis que os gusta más terranet pues vamos a ello, la ventaja que tiene terranet esque aunque tarden más en sacar actualizaciones, cuando lo hacen sacan actualizaciones estables, se toman su tiempo pero lo hacen bien. Así que descargaros la ultima revisión será lo mejor.

- Como hizimos con obdb tenemos que importar las tablas para las cuentas, y esto lo hacemos entrando en la carpeta, Character & Logonserv Tables, importamos el archivo o los archivos que haya dentro y listo. Esto será rápido.

- Luego nos metemos en TNPS Database, y dentro habrá un .rar con la autentica base de datos en todo su esplendor, importar esto nos llevará un rato bueno, así que salir y respirar algo de aire fresco :D

- Traducir Quests

Bueno, seguramente querreis vuestras quest traduciditas, pues para esto os bajais el archivo de las traducciones, la verdad esque no se quien lo hizo pero sea quien sea se lo agradezco, a pesar de no estar todas, pero si la mayoria, solo teneis que ir importando los archivos uno a uno, según os interese ami particularmente solo me interesa quest, porque la traducción de los nombres y los objetos son un poco ridiculos.

- Querys a ejecutar.

Si vais a usar una version de ascent superior a la 1071 teneis que ejecutar este query con el sqlyog, simplemente marcais la bd, y luego copiais el codigo este en la ventana de al lado, haceis boton derecho sobre el, query y execute all queries:

ALTER TABLE creatureloot MODIFY column percentchance float(0) NOT NULL default 0;
ALTER TABLE fishingloot MODIFY column percentchance float(0) NOT NULL default 0;
ALTER TABLE itemloot MODIFY column percentchance float(0) NOT NULL default 0;
ALTER TABLE objectloot MODIFY column percentchance float(0) NOT NULL default 0;
ALTER TABLE prospectingloot MODIFY column percentchance float(0) NOT NULL default 0;
ALTER TABLE skinningloot MODIFY column percentchance float(0) NOT NULL default 0;
alter table creatureloot add column heroicpercentchance float(0) default 0;
alter table creatureloot add column mincount int(30) default 1;
alter table creatureloot add column maxcount int(30) default 1;
alter table fishingloot add column heroicpercentchance float(0) default 0;
alter table fishingloot add column mincount int(30) default 1;
alter table fishingloot add column maxcount int(30) default 1;
alter table objectloot add column heroicpercentchance float(0) default 0;
alter table objectloot add column mincount int(30) default 1;
alter table objectloot add column maxcount int(30) default 1;
alter table itemloot add column heroicpercentchance float(0) default 0;
alter table itemloot add column mincount int(30) default 1;
alter table itemloot add column maxcount int(30) default 1;
alter table prospectingloot add column heroicpercentchance float(0) default 0;
alter table prospectingloot add column mincount int(30) default 1;
alter table prospectingloot add column maxcount int(30) default 1;
alter table skinningloot add column heroicpercentchance float(0) default 0;
alter table skinningloot add column mincount int(30) default 1;
alter table skinningloot add column maxcount int(30) default 1;


Si usais una version de ascent superior a la 1132

alter table creature_proto change health minhealth int(30) unsigned not null;
alter table creature_proto add column maxhealth int(30) unsigned not null after minhealth;
update creature_proto set maxhealth=minhealth;
alter table creature_proto change level minlevel int(30) unsigned not null;
alter table creature_proto add column maxlevel int(30) unsigned not null after minlevel;
update creature_proto set maxlevel=minlevel;
alter table creature_proto add column invisibility_type int(30) unsigned not null;
alter table creature_proto add column death_state int(30) unsigned not null;



frekency

#3
3. Instalando el Emulador y configuración del mismo.

- ¿Porqué elegir antrix o ascent a otros emuladores?

Bueno esto es muy fácil, imagino que si montais un servidor quereis que los que entren se sientan agusto y se queden, esto se consigue con varias cosas, primero que en el server no haya lag y segundo que haya pocos bugs, pues antrix o ascent al estar escrito completamente en lenguaje C, soportar mayores personas conectadas y que usa unas 20 consultas menos que mangos por ejemplo, da mayor estabilidad, y evita caidas a cada rato, claro tambien hay que saber elegir una buena reivisión, no todas funcionan, yo siempre pondré la revisión estable, y la ultima que haya salido, vosotros elegid la que querais. Bueno os descargais una de las dos, esta configuración de aqui vale para cualquier revisión, si por casualidad se cambiase algo, lo actualizaría.

- Instalación del emulador.

Una vez descargada la versión que nos interese, procederemos a ubicar los archivos del servidor, lo mejor es crear una carpeta llamada servidor o ascent o como la querais llamar, pero es mejor ubicarla en la unidad C:, aseguraos de que tengais los siguientes archivos: Archivos de configuración: Antrix.conf o Ascent.conf, realms.conf, logornserver.conf, ascent.exe o antrix.exe, logonserver.exe, archivos .dll y la carpeta script_bin, pero esto de por si no es suficiente, porque tenemos que poner dos carpetas más una para los archivos dbc y otra para los archivos map, tambien podemos poner una carpeta scripts para los archivos .gm (aun nose para que sirven exactamente,  supongo que añaden nuevos eventos al juego, si alguien me lo especifica lo pondré), pero esto es opcional y no es necesario para arrancar el servidor. Lo que si necesitamos son los archivos map y los dbc...

- Extraer Mapas.

Debido a su gran tamaño unos 900 mb descomprimido y unos 230 comprimido, no se incluyen en el pack del servidor pero si hay una aplicación ad.exe que os ayudará a sacar vuestros propios archivos de mapas, os descargais el ad.exe para vuestra version del juego, si es la española sera el esEs, lo teneis que ubicar en C:\Archivos de programa\World of Warcraft o donde tengais la carpeta de vuestro juego, luego creais una carpeta llamada maps y ejecutais el ad.exe, tardará un buen rato pero cuando acabe tendreis vuestros mapas listos, y solo teneis que meter esa carpeta dentro de la del servidor.

Consejo: Es bueno que si el server es para versiones 2.1.1 2.1.2 y 2.1.3 extraigais los mapas de la ultima version que hay.


- Extraer archivos DBC.

Los archivos dbc es recomendable extraerlos uno mismo, pero aveces ocurre que hay problemas de compatibilidad de estos archivos con el propio emulador, y ocurre algo típico como el bug de las spells o cualquier otra cosa, por eso yo pondré ha descargar unos que siempre funcionan, de todas maneras os explico como sacar los vuestros propios:

- Os descargais el MyWarcraftStudio, y lo ejecutais, una vez dentro os vais a file, open MPQ Archive, buscais la localizacion de la carpeta esEs en  mi caso de vuestro wow por ejemplo en el mio sería así: C:\Archivos de programa\World of Warcraft\Data\esES pero si teneis otra versión pues usais esa, una vez dentro seleccionais el archivo locale-xxXX.MPQ, ahora en el menú de la izquierda te saldra una lista, pues busca DBFilesClient, boton derecho y Extrac Folder, cuando te diga donde guardarlo, vete a la carpeta del servidor y escribe dbc, cuando extraiga todo por completo, nombrais la carpeta que os ha creado DBFilesClient, por DBC ( Tiene que estar en mayusculas).

- Configuración básica.

Bueno una vez que tenemos todos los archivos, tenemos que configurar los 3 archivos de configuración y ya podemos proceder a arrancar el servidor.

Esta configuración es basica, con ella podreis abrir vuestro servidor, pero más adelante explicaré para que sirve cada linea o al menos lo intentaré :D.

Abrimos el Antrix.conf o el Ascent.conf y buscamos estas lineas:

<WorldDatabase Hostname = "host" Username = "username" Password = "passwd" Name = "database" Port = "3306" Type = "1">
<CharacterDatabase Hostname = "host" Username = "username" Password = "passwd" Name = "database" Port = "3306" Type = "1">


En Host: Ponemos nuestro dominio.
En username: El usuario de nuestro mysql ( Por defecto: root ).
En passwd: Nuestra pass.
En database: El nombre de la base de datos que creamos con el SQLyog.

El resto dejadlo como está.

Si veis esto:

#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# Die Directive
#
#    If this triggers it means you didn't read your config file!
#    Just comment it or remove it when you've read this.
#
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#

<die msg="I am a newb who didn't even read half my config file!">


Eliminadlo sin compasión, porque como lo tengais no os dejara abrir el servidor xDD.

Por ultimo, buscais esto:

<LogonServer DisablePings = "0"
             RemotePassword = "change_me_world">


En change_me_world poneis una contraseña cualquiera no tiene porque ser la de la base de datos, pero apuntarla que la usaremos más adelante.

Con esto terminamos en Antrix.conf o Ascent.conf, nos creará un servidor con rates 1x osea lo más bajo posible, esto es igual que en el servidor oficial, costará conseguir más las cosas. Teneis que poner un espacio al final del todo.

Abrimos el logonserver.conf

Buscamos esto, y lo cambiamos para nosotros:

<LogonDatabase Hostname = "host"
               Username = "user"
               Password = "pass"
               Name     = "dbname"
               Port     = "3306"
               Type     = "1">


En Database Hostname: Ponemos nuestro dominio.
En username: El usuario de nuestro mysql ( Por defecto: root ).
En passwd: Nuestra pass.
En name: El nombre de la base de datos que creamos con el SQLyog.

Más abajo:

<Client MinBuild = "6739"
        MaxBuild = "6739">

Aquí teneis que cambiar para que acepte una version del juego o otra por ejemplo el build de la 2.1.3 es 6898 con que pongais esto:

<Client MinBuild = "6739"
        MaxBuild = "6898">


Podrán entrar desde la 2.1.1 (Build 6739) hasta la 2.1.3 (Build 6898).

Más abajo está esto:

<LogonServer RemotePassword = "change_me_logon">

Cambiad change_me_logon y poned la misma pass que antes, acordaos de dejar un espacio al final del todo.

Abrimos el reamls.conf

<LogonServer Address = "127.0.0.1"
             Port = "8093"
             Name = "Default Logon"
             RealmCount = "1">


En Server Adress: ponemos nuestro dominio.
En Name podemos poner el que queramos.

Y por último en:

<Realm1 Name = "Test Realm"
        Address = "127.0.0.1:8129"
        Icon = "PVP"
        Colour = "1"
        Population = "1.0"
        TimeZone = "1">

Cambiamos Test Realm por el nombre del reino y 127.0.0.1 por nuestro dominio, tiene que quedar así, dominio:8129 sinó no funcionara.

Guardamos todo y ya hemos terminado la configuración, vamos a arrancar el servidor.

- Configuración para red local.

Bueno a petición popular voy a explicar como se hace esto, la cosa es bien facil, solo es cambiar un par de tonterías pero voy a poner la configuración que necesitais desde 0, osea os explicare todo el proceso desde el principio.

Partimos de que tenemos todo bajado y la base de datos instalada, la diferencia esque para esto no necesitamos dominio ya que trabajaremos con localhost.

Primero editaremos el archivo host: Es importante borrar todo el contenido ya que una linea más puede causar conflictos, cuando abramos el archivo host, escribimos solo esto:

127.0.0.1 localhost

Si despues de hacer todo esto no podemos entrar en nuestro servidor en vez de poner eso pondremos esto:

NuestraIpLocal localhost

La ip local la sacamos haciendo un ipconfig en la consola de comandos.

Bueno despues de hacer esto, recordar que todo que hagamos ahora tendra como referencia localhost, el dominio no tendrá nada que ver ya que no nos hará falta, despues de modificar el archivo host si queremos conectar a nuestra base de datos, en el sqlyog, cuando conectemos y nos pida la dirección pondremos localhost.

Pasamos a configurar los 3 archivos de configuración.

Antrix.conf o Ascent.conf

<WorldDatabase Hostname = "host" Username = "username" Password = "passwd" Name = "database" Port = "3306" Type = "1">
<CharacterDatabase Hostname = "host" Username = "username" Password = "passwd" Name = "database" Port = "3306" Type = "1">


En Hostname: Ponemos localhost
En Username: El usuario de mysql ( por defecto root ).
En Password: La pass con la que nos conectamos al mysql.
En Name: El nombre de la base de datos.

El resto dejadlo como está.

Si veis esto:

#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# Die Directive
#
#    If this triggers it means you didn't read your config file!
#    Just comment it or remove it when you've read this.
#
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#

<die msg="I am a newb who didn't even read half my config file!">



Eliminadlo sin compasión, porque como lo tengais no os dejara abrir el servidor xDD.

Por ultimo, buscais esto:

<LogonServer DisablePings = "0"
             RemotePassword = "change_me_world">


En change_me_world poneis una contraseña cualquiera no tiene porque ser la de la base de datos, pero apuntarla que la usaremos más adelante.

Con esto terminamos en Antrix.conf o Ascent.conf, nos creará un servidor con rates 1x osea lo más bajo posible, esto es igual que en el servidor oficial, costará conseguir más las cosas. Teneis que poner un espacio al final del todo.

Abrimos el logonserver.conf

Buscamos esto, y lo cambiamos para nosotros:

<LogonDatabase Hostname = "host"
               Username = "user"
               Password = "pass"
               Name     = "dbname"
               Port     = "3306"
               Type     = "1">



En Database Hostname: Ponemos nuestro localhost.
En username: El usuario de nuestro mysql ( Por defecto: root ).
En passwd: Nuestra pass.
En name: El nombre de la base de datos que creamos con el SQLyog.

Más abajo:

<Client MinBuild = "6739"
        MaxBuild = "6739">


Aquí teneis que cambiar para que acepte una version del juego o otra por ejemplo el build de la 2.1.3 es 6898 con que pongais esto:

<Client MinBuild = "6739"
        MaxBuild = "6898">


Podrán entrar desde la 2.1.1 (Build 6739) hasta la 2.1.3 (Build 6898).

Más abajo está esto:

<LogonServer RemotePassword = "change_me_logon">

Cambiad change_me_logon y poned la misma pass que antes, acordaos de dejar un espacio al final del todo.

Abrimos el reamls.conf

<LogonServer Address = "127.0.0.1"
             Port = "8093"
             Name = "Default Logon"
             RealmCount = "1">



En Server Adress: ponemos localhost
En Name podemos poner el que queramos.

Y por último en:

<Realm1 Name = "Test Realm"
        Address = "127.0.0.1:8129"
        Icon = "PVP"
        Colour = "1"
        Population = "1.0"
        TimeZone = "1">

Cambiamos Test Realm por el nombre del reino y 127.0.0.1 por nuestro dominio, tiene que quedar así, localhost:8129 sinó no funcionara.

Guardamos todo y ya hemos terminado la configuración, vamos a arrancar el servidor.

Esto es todo, arrancamos el servidor, solo recordar que en el reamlist.wtf tenemos que poner esto:

set realmlist IPinternadelServidor

Si no no nos conectará. Espero que les sea de utilidad.

- Arrancando el Servidor.

Para arrancar solo hay que ejecutar el logonsever.exe y luego ascent.exe o antrix.exe, si todo os ha ido bien os cargará del tirón, sino revisar el apartado de fallos posibles para arreglar lo que sea.



frekency

#4
4. Instalaciones de páginas para el servidor.

- Instalar página para crear cuentas.

Nos descargamos el archivo SPORA, de la sección de descargas, una vez descargado solo hay que descomprimirlo en la carpeta httdocs de nuestro xampp, mejor hacerlo dentro de otra carpeta por ejemplo, creamos una carpeta llamada cuentas y ubicamos la web hay, una vez echo esto tenemos que configurarla para que conecte a nuestro servidor.

Si abrimos el index.php con el bloc de notas tenemos una cosa así:

$lang="en"; // Language ("en" - english, "ru" - russian)
$host="127.0.0.1"; // HOST for Antrix database
$user="root"; // USER for Antrix database
$password="password"; // PASS for Antrix database
$db="antrix"; // NAME of Antrix database
$hostr="127.0.0.1"; // HOST for Login database
$userr="root"; // USER for Login database
$passwordr="password"; // PASS for Login database
$dbr="antrix"; // NAME of Login database
$database_encoding = 'CP1251'; // Set encoding
$img_base = "img/"; // Image dir
$server = "127.0.0.1"; // Antrix Server Address
$port = "8129"; // Antrix Server Port
$title="WoW Server"; // Insert the title of your server here
$lock_acc=0; // Lock created account to IP address (1 - on, 0 - off)
$lock_reg=0; // Registration only one (or more) account from one IP address
// 0 - not limit, 1 - one acc, 2 - two acc, etc...


La configuración es sencilla solo tenemos que ir sustituyendo:

127.0.0.1 -- Por nuestro dominio o host.
Password -- Por nuestra pass, la de la base de datos.
Antrix -- Por el nombre de nuestra base de datos.
Y el user suele ser siempre por defecto root si no lo hemos cambiado dejemoslo así.

Luego nos aseguramos de que el xampp está activado y ponemos en el explorador lo siguiente: nuestrodominio/cuentas/ y nos saldrá la web, está en ingles pero con un poco de conocimiento se puede traducir en cuestion de 5 minutos.

Nota: Las cuentas tardan en crearse 10 minutos por defecto, más adelante lo podremos cambiar.

- Instalar página de estadisticas.

Si queremos una página que nos ofrezca unas estadisticas, a tiempo real de nuestro servidor, solo nos tenemos que descargar el archivo del apartado de descargas y es igual que el anterior, lo ponemos en una carpeta dentro de httdocs, por ejemplo una que se llame stats. Abrimos el archivo config.php con el bloc de notas y tendremos esto:

$config['mysql_host'] = 'host'; //MySQL Host
$config['mysql_user'] = 'mysqluser'; //MySQL Username
$config['mysql_pass'] = 'passuser'; //MySQL Password
$config['mysql_dbname'] = 'database'; //Database Name


Lo editamos como ya sabemos para que conecte a nuestra base de datos, ahora esta página necesita un archivo que genera automaticamente el emulador llamado stats.xml pero lo necesita en el mismo directorio de la web, asi que vamos a configurar donde tiene que colocarlo, así como el tiempo para que haga esto. Nos vamos al antrix.conf o ascent.conf y buscamos la siguiente linea:

<StatDumper FileName = "stats.xml" Interval = "120000">

Cambiamos stats.xml por el directorio donde quieres que salga el archivo, por ejemplo en mi caso es: C:\xampp\htdocs\stats\ luego cambiamos el intervalo 120000 equivale a 2 minutos, pues ponemos lo que queramos y cada x tiempo generará un archivo con estadisticas sobre el servidor. Por ejemplo en mi caso lo que tendría que poner es:

<StatDumper FileName = "C:\xampp\htdocs\stats\stats.xml" Interval = "120000">

La página tambien trae un apartado para crear cuentas, y está casi completamente traducida por mí, así que teneis casi todo el trabajo echo xDD. Si trasteais por el archivo server_stats.xsl podeis cambiar valores de la web y añadir cosas o quitarlas.

- Instalación y uso de Puppy.

La base de datos obdb trae una pequeña utilidad, desconocida por muchos pero de gran ayuda, los que no sabeis ids de npcs, objetos o criaturas, podeis usar esto, descargais el archivo puppy, editais el db.php:

$db_server='localhost';
$db_username='antrix';
$db_password='antrix';
$db_dbname='antrix';


Luego lo poneis en el xampp y cuando lo abrais os saldra un buscador, poneis el nombre de lo que querais, teneis que tener en cuenta que si vuestra base de datos no esta traducida, de nada os sirve poner nombres en español, porque no estarán, al igual que si está traducida, no debeis poner nombres en ingles, cuando busqueis y os muestre todo lo que hay con ese nombre os mostrará el id de lo que hayais buscado, y os proporcionará más información.




frekency

#5
5. Descargas.

- 1. Instalaciones previas

Mysql 5.0.41

Mirror 1 Mirror 2

MySQL 6.0
Mirror 1 Mirror 2

XAMPP 1.6.3a

Mirror 1 Mirror 2 Mirror 3

No-IP DUC 2.2.1

Mirror 1

- 2. Instalando la base de datos.

OBDB 2:

Ultima Revisión: 238:

Filebeam Rapidshare Megapuload

Revisión Estable: 214 :

Filebeam Rapidshare

Base de datos Funserver:

Filebeam Rapidshare Megapuload

Terranet:

Ultima Revisión: 8:

Filebeam Rapidshare Depositfiles

Otros:

Traduccion Quest, Npcs e Items:

Mirror 1 Mirror 2 Mirror 3

- 3. Instalando el Emulador y configuración del mismo.

Revisión Estable: 1085:

Filebearn Rapidshare Megaupload

Última Revisión: 1046:

Filebearn Rapidshare Megaupload

Última Revisión: 1085 (Código Fuente):

Filebearn Rapidshare Megaupload

- Extraer Mapas.

Ad.exe para versiones superiores a la 2.1.1:

[URL=http://filebeam.com/06316c8c25ebd7f966fb996fa88a20ce]deDE
enGB enUS esES frFR spSP

- Extraer archivos DBC.

MyWarcraftStudio: 0.10:

Mirror 1

Archivos DBC:

Filebeam Rapidshare Megapuload

- Opcional.

Scripts .GM:

Filebeam Rapidshare Megapuload

- 4. Instalaciones de páginas para el servidor.

SPORA (Web para crear cuentas):

Filebeam Rapidshare Megapuload

Web de Estadísticas:

Filebeam Rapidshare Megapuload

Puppy:

Filebeam Rapidshare Megapuload

- 6. Descargas alternativas.

Tortoise SVN Versión 1.4.4:

Español Inglés

- Varias Utilidades

Addons:

Antrix Admin:

Filebeam Rapidshare Megapuload

Antrix Teleport:

Filebeam Rapidshare Megapuload

Atlasloot Enhanced 4.0:

Filebeam Rapidshare Megapuload



frekency

#6
6. Descargas alternativas.

- ¿Qué es subversión?

Según Wikipedia: Subversion es un software de sistema de control de versiones diseñado específicamente para reemplazar al popular CVS, el cual posee varias deficiencias. Es software libre bajo una licencia de tipo Apache/BSD y se lo conoce también como svn por ser ese el nombre de la herramienta de línea de comandos. Una característica importante de Subversion es que, a diferencia de CVS, los archivos versionados no tienen cada uno un número de revisión independiente. En cambio, todo el repositorio tiene un único número de versión que identifica un estado común de todos los archivos del repositorio en cierto punto del tiempo.

- Instalar Tortoise SVN.

Para descargar las ultimas revisiones mediante subversión usaremos el cliente Tortoise SVN, así que lo bajais y lo instalais.

- Obtener Revisiones

Para tener un orden vamos a crear dos carpetas, una la llamaremos OBDB y la otra Ascent.

- Ultima revisión de la base de datos OBDB

- Hacemos boton derecho sobre OBDB, svn checkout, escribimos esta url svn://svn.obdb.gromnet.net y pulsamos OK, y solo teneis que pulsar cada vez que querais lo ultimo boton derecho, svn update. Esperais un ratito y tendreis vuestra ultima revisión de la OBDB

- Última revisión de ascent.

- Hacemos boton derecho sobre ascent, svn checkout, escribimos esta url svn://emupedia.com/svn/ascent y pulsamos OK, y solo teneis que pulsar cada vez que querais lo ultimo boton derecho, svn update. Esperais un ratito y tendreis vuestra ultima revisión de ascent. Claro que ascent, viene como codigo fuente y tenemos que compilarlo...

- Compilar ascent en Windows.

Para compilar ascent, tenemos que tener o el visual .NET 2003 (Recomendado) o el 2005, yo no voy a dar los enlaces para conseguirlos, así que eso lo tendreis que hacer vosotros.

- Si lo teneis solo teneis que entrar en la carpeta win y vereis dos archivos ascentVC71 u ascentVC80 dependiendo de la versión del .net que tengais usareis uno o otro, luego solo teneis que hacer un build solution pulsando en build, y luego build solution.

- Cuando tengais todo listo y sin errores entramos en la carpeta src/scripts/ y hacemos lo mismo que hicimos antes.

- Cuando acabe todo el proceso tendremos nuestra versión compilada en la carpeta bin.

- Compilar ascent en Linux.

A los que prefirais, poner vuestro server en linux para mayor estabilidad, os dire como podeis compilarlo en las siguientes distribuciones, solo teneis que descargar el codigo fuente,  lo pondré para descargar o obtener la ultima revision con el tortoiseSVN.

Linux Debian:

- Necesitais: autoconf, gcc, g++, alib1g-dev, libmysql++-dev, libssl-dev, libtool, make
- Para configurarlo:
chmod a+x reconf
./reconf
./configure
- Para compilar:
make && make install

Linux Red Hat:
- Necesitais: automake17, autoconf 2.61, gcc, gcc-c++, libstdc++-devel, libtool, zlib-devel.
- Para configurar:
autoreconf -f -i or sh reconf
./configure --prefix=/opt/ascent
- Para compilar:
make
make install

Linux Fedora:
- Necesitais: automake17, autoconf 2.61, gcc, gcc-c++, libstdc++-devel, libtool, zlib-devel.
- Para configurar:
autoreconf -f -i
./configure
- Para compilar:
make clean
make
make install

Linux Ubuntu:
- Necesitais: Al menos las build-essential.
- Para configurar:
chmod +x reconf
./reconf
./configure --prefix=/directorio/donde/tu/quieres/tener/compilada/larevisión/
- Para compilar:
make
make install

Linux Gentoo:
- Necesitais: La ultima version de Linux Gentoo que haya salido.
- Para configurar:
autoreconf -f -i
./configure
- Para compilar:
make clean
make
make install

- Obtener cualquier version de OBDB, o de Ascent-Antrix

Alomejor os interesa tener una version anterior y por alguna razon no la encontrais, pues podeis usar esto para obtenerla en cuestion de minutos, para que no haya lios crearemos otra carpeta aparte y hacemos el mismo proceso solo que cuando pongamos la url ya sea para ascent o obdb, en el apartado de Revision, marcamos Revision y escribimos la que queremos, pulsamos OK, automaticamente descargará la versión que la hayamos indicado.



frekency

#7
7. Posibles fallos.

Bueno empiezo a recopilar los posibles fallos que os pueden aparecer, esto tardaré un poco más porque tengo que revisar todo el post anterior y son 70 páginas, así que paciencia:

- Error al instalar Mysql: Error 1335. The cabinet file ´product.cab´requiered for this installation is corrupt and cannot be used. This could indicate a network error, an error reading from the CD-ROM or a problem with this package.
- Para arreglar esto prueba a instalar la version 6.0 que he puesto en el apartado de descargas.

- Error : This application has requested the rutnime to terminate it in an unusual way. Please contact the application´s support team for more information.

- Esto se soluciona instalando el hotfix KB884538, puedes descargarlo de: Aquí

- Error: I am a newb who didn't even read half my config file!.
- Elimina las lineas del antrix.conf o ascent.conf: <die msg="I am a newb who didn't even read half my config file!">

- Error al intentar conectar a la bd con el SQLyog: 1130: dominio is not allowed to conect to this MySQL server
- Escribe esto en la consola de comandos: GRANT ALL PRIVILEGES ON nombrebasededatos.* TO usuario@tudominio identified by 'contraseña';
- Puedes comprobar que el dominio está actualizado o que simplemente no has empleado ningun caracter extraño como guiones en el nombre del dominio.
- Si usas xampp, no marques la casilla Svc al lado del Mysql, ya que reinstalara un mysql y reconfigurará, por eso os impide entrar.

- Error: Configuro la web, pero no me carga en el explorador.
- Comprueba que el apache esta corriendo, lo puedes comprobar con el control panel del xampp, si estuviese apagado y no puedes ponerlo running, desinstala el xampp, elimina la carpeta del disco duro para eliminar los restos, reinicia el pc y luego instala el xampp otra vez.

- Bug: No puedo usar dos auras al mismo tiempo.
- Soluciona esto usando los archivos dbc que pongo en la sección de descargas.



frekency

#8
8. Administración de vuestro servidor.

- Crear un usuario con privilegios o GM

Bueno a la hora de elegir a las personas que controlaran y dirigirán vuestro servidor teneis que tener cuidado y saber elegirlas correctamente, segun las funciones que querais que cumplan os puede interesar hacer un gm con plenos privilegios (az) o uno que controle por ejemplo a los npcs, para hacer esto...

Primero teneis que mirar los comandos que vienen mas abajo, en el titulo de cada comando hay una letra al lado, esa es la letra que representa a ese grupo de comandos, por ejemplo los comandos para banear son representados con una b, pero alomejor lo que nos interesa esque controlen todos los comandos, pues bueno nos tenemos que ir a la tabla accounts de nuestra base de datos y en la columna de  gm poneis az si quereis dar plenos poderes a esa cuenta, o si quereis que esa persona solo pueda usar comandos para banear (letra b) y comandos para controlar battlegrounds (e), poneis be.

- Comandos GM (Parcialmente traducidos).

Banstick Commands (b)

banchar (nombre):  Banea al pj, cuando este pj se desconecte ya no podra volver a entrar asta k se use el command UNBANCHAR.
unbanchar (nombre):  Le quita el baneo al pj
paralyze:  paraliza al objetivo
unparalyze:  despariza al objetivo

Chat Control (c)

allowwhispers: Permite el susurro de los jugadores <s> en el modo gmon.
blockwhispers: Bloquea el susurro de los jugadores <s> en el modo gmon.

Debug Commands (d)

se pone: .debug <subcommand> <args> en subcommand los siguientes:
infront *
showreact *
aimove *
dist *
face *
moveinfo *
setbytes *
getbytes *
unroot *
root *
landwalk *
waterwalk *

.castspell "id magia" // Daña con esa magia al objetivo.
.castspellne "spellid" // Daña con esa magia al objetivo (solo personajes, no tiene efectos or range/facing/etc.


.celldelete YES ** // Elimina todo las celdas actuaes del juego y db.
.celldelete YES YES ** // Elimina todo en el rango de una celda.
.addrestxp // Añade x puntos de descanso al personaje.
.generatename // Genera un nombre para la maskota, etc.
.attackerinfo // Enseña la informacion del mob o jugador atacante
.showattackers // Enseña el mobo jugador atacante en el minimapa.
.aggrorange // Enseña el aggro Range de la criatura.
.knockback "value" // Golpéa por detrás.
.fade "value" // ModThreatModifyer().
.threatMod "value" // ModGeneratedThreatModifyer().
.calcThreat "dmg" "spellId" - calcula la Amenaza.
.threatList // Devuelve la AI a la criatura seleccionada.
.gettptime // grabs transporter travel time
.itempushresult // envia resultados de la puja del item
.weather *
.setbit// *
.setvalue *
.getpos *

Battlegrounds Commands (e)

battleground: Main BG command table. Usage: .battleground <subcommand> <args>
setbgscore "Teamid" "Score" // Modifica la puntuacion del Battlegroud..
startbg // Comienza la battleground.
pausebg // Pausa la battleground.
bginfo // Despliega la informacion de la battleground.
battleground // Enseña el Menu BG
setworldstate "var" "val" // Var can be in hex. WS Value.
playsound "val" // Val can be in hex.
setbfstatus // No activada por ahora.
leave // Abandola battleground.

Extended Debug Commands (f)

.killbyplayer // Desconecta al jugador con elnombre "x".
.killbyaccount // Desconecta la sesion de la cuenta con el nombre "x".
.getrate // Da la rate "x".
.setrate // Modificas la rate "x".

GM Ticket Commands (g)

.gmTicket "subcomando" "arg"

get // Da el GM Ticket
getId // Da GM Ticket con la id
delId // Elimina el GM Ticket con la id

Invincibility Command (j)

.invincible:  invencible,nadie te ataca (mientras que tu no les ataques xD)

Invisibility Command (i)

.invisible // Te vuelve invencible y invisible (Nadie te ataca y tampoco te ven pero pueden leer tus mensajes)

Guild Commands (l)

createguild: No description entered.

Modify commands (m)

todo va con ".modify" delante...

hp: Vida ( este comando seria  .modify hp vdiamínima vidamáxima)
mana: Mana ( y este igual  .modify hp vidamínima vidamáxima)
rage (valor): Furia (ej:  .modify rage (valor))
energy (valor): Energia (ej:  .modify rage (valor))
armor (valor) : Armadura (ej:  .modify rage (valor))
holy (valor): Holy Resistance (ej:  .modify rage (valor))
fire (valor): Fire Resistance (ej:  .modify rage (valor))
nature (valor): Nature Resistance (ej:  .modify rage (valor))
frost (valor): Frost Resistance (ej:  .modify rage (valor))
shadow (valor): Shadow Resistance (ej:  .modify rage (valor))
arcane (valor): Arcane Resistance (ej:  .modify rage (valor))
damage: Daño (este comando seria .modify damage dañomínimo dañomáximo )
scale (valor):  Modifica el tamaño del personaje según el número que pongas.
gold (valor): Modifica el dinero ( .modify gold 10000 -> te da 1 de oro )
speed (valor): Modifica tu velocidad
nativedisplayid: Native Display ID
displayid: Display ID
flags: Unit Flags:
faction: Faction Template
dynamicflags: Dynamic Flags
talentpoints (valor): Modifica tus puntos de talento
loyalty // Lealtad
spirit // Espiritu
boundingraidus // Radio de limitación
combatreach // Alcance de combate
emotestate // Estado del NPC

More Modify Commands (m)

createaccount: .createaccount - Creas una cuenta con el formato .createaccount username password email
playerinfo: .playerinfo -Muestra informacion sobre un jugadore seleccionado (cuenta...)
mount: Montas en un modelo de ID XX
dismount: Te baja de la montura en la que estes
start: Te lleba a donde empezastes el juego
levelup: Eleva el nivel.
additem: Añade un objeto al inventario
removeitem: Eliminas un objeto  %u count %u.
learn: Aprende hechizo
unlearn: Olvidas hechizo
learnskill: .learnskill <skillid> (optional) <value> <maxvalue> - Aprendes habilidades.
advanceskill: advanceskill <skillid> <amount> - Advances skill line x times..
removeskill: .removeskill <skillid> - Eliminas habilidades
increaseweaponskill: .increaseweaponskill <count> - Increase eqipped weapon skill x times (defaults to 1).
removeauras: Removes all auras from target
setmotd: Establece el  MOTD  (Mensaje de Bienvenida)
additemset: Añades itemsets al inventari.
gotrig: Warps to areatrigger <id>
createinstance: Creates instance on map <map>
goinstance: Joins instance <instance> <x> <y> <z> <optional>
exitinstance: Exits current instance, return to entry point.
dbreload: Reloads some of the database tables
spawnspiritguide: Spawns a spirit guide (params: 1 = horde, 0 = alliance)
advanceallskills: Advances all skills <x> points.
unlockmovement: Unlocks movement for player.
modperiod: Changes period of current transporter.
npcfollow: El npc elegido te sigue
follow: Sets npc to not follow anything
formationlink1: Sets formation master.
formationlink2: Sets formation slave with distance and angle
formationclear: Removes formation from creature
playall: Plays a sound to the entire server.
addipban: Bans an ip address <address> <duration>
banaccounts: Bans accounts <name> <duration>
renamechar: Renames character x to y.
forcerenamechar: Forces character x to rename his char next login
getstanding: Gets standing of faction %u.
setstanding: Sets standing of faction %u.

Cheat Commands (m)

todo va con ".cheat" delante...

status: Shows active cheats.
taxi: Enables all taxi nodes.
cooldown: Enables no cooldown cheat.
casttime: Enables no cast time cheat.
power: No consumes maná
god: Modo dios
fly: Puedes volar
land: No puedes volar
explore: Se te revela el mapa
flyspeed: Modifica la velocidad de vuelo
stack: Enables aura stacking cheat.
morph (ID) : Te transformas en el npc con la ID seleccionada
demorph: Vuelves a tu estado normal.

Honor Modification Commands (m)

honor: Main honor system command table. Usage: .honor <subcommand> <args>
getpvprank: Gets PVP Rank
setpvprank: Sets PVP Rank
addpoints: Adds x amount of honor points/currency
addkills: Adds x amount of honor kills
globaldailyupdate: Daily honor field moves
singledailyupdate: Daily honor field moves for selected player only
pvpcredit: Sends PVP credit packet, with specified rank and points

Pet Commands (m)

todo va con ".pet" delante...

createpet (ID): Creas una mascota con la id que quieras
renamepet: Renames a pet to <name>.
enablerename: Enables pet rename.
addspell: Teaches pet <spell>.
removespell: Removes pet spell <spell>.

NPC Commands (n)

todo va con ".npc" delante...

vendoradditem (ID): Pone un objeto a un vendedor según la ID que le distes
vendorremoveitem (ID):  Quita un objeto a un vendedor según la ID que le distes
flags: Changes NPC flags
emote: emote - Sets emote state
run: No description entered.
addweapon: No description entered.
allowmove: No description entered.
addgrave: No description entered.
addspirit: No description entered.
faction: No description entered.
delete: Borra al npc seleccionado
info: te da la ID del npc seleccionado
guid: Shows selected object guid
addAgent: .npc addAgent <agent> <procEvent> <procChance> <procCount> <spellId> <spellType> <spelltargetType> <spellCooldown> <floatMisc1> <Misc2>
delAgent: .npc delAgent <procEvent> <spellId>
listAgent: .npc listAgent
reset: resets npc health/dmg from temp table.
export: Exports the npc to a sql file
say :  El npc dice lo que tu le pongas ( .npc say loquequierasquediga )
yell: .npc yell <Text> - Makes selected mob yell text <text>.
come: .npc come - Makes npc move to your position
return: .npc return - Returns ncp to spawnpoint.
spawn ID: crea un npc con la ID que le has dado en el lugar que te encuentras.
spawnlink: .spawnlink sqlentry
resetreputation: .resetreputation - Resets reputation to start levels. (use on characters that were made before reputation fixes.)
resetlevel: .resetlevel - Resets all stats to level 1 of targeted player. DANGEROUS.
resetspells: .resetspells - Resets all spells to starting spells of targeted player. DANGEROUS.
resettalents: .resettalents - Resets all talents of targeted player to that of their current level. DANGEROUS.
resetskills: .resetskills - Resets all skills.

GameObject Commands (o)

gobject: Main gameobject command table. Usage: .gobject <subcommand> <args>
select: Selects the nearest GameObject to you
delete: Deletes selected GameObject
spawn: Spawns a GameObject by ID
info: Gives you informations about selected GO
activate: Activates/Opens the selected GO.
enable: Enables the selected GO for use.
scale: Sets scale of selected GO
animprogress: Sets anim progress
export: Exports the current GO selected
statelink: .statelink sqlentry, Links a GO state to a Npc

Information Commands (p)

gm: Muestra GMs activos
gps: Muestra posicion en coordenadas XYZ
info: Server info
uptime: Muestra el tiempo que lleva el server levantado

Teleport (Recall)Commands [q]

todo va con ".recall" delante...

list: lista de los sitios a los que podemos teletransportarnos
port (valor): es el lugar al que nos teletransportaremos (de la lista anterior)
add: Añade una posicion al recall.
del: Elimina una posicion del recall.
portplayer: recall ports player

Life and Death Commands (r)

kill: .kill - Mata NPC o jugador seleccionado.
revive: Revives you.: 0, 0, 0},
reviveplr: Revives un jugador especifico.

Save Commands (s)

save:  Guarda tu personaje
saveall: Guarda todos los personajes

GM Tag Commands (t)

fmoff: Sets GM tag off
gmon: Sets GM tag on

Universal Commands (u)

Commands: Shows Commands
help: Shows help for command
announce (text): text es el mensaje que vas a mandar a todo el servidor
wannounce: Sends Widescreen Msg To All


Extended Teleport Commands (v)

appear (nombre): Es el nombre del jugador donde vamos a aparecer
summon (nombre): Es el jugador que vamos a teletransportar hasta nosotros
worldport: No description entered.

Waypoint Commands (w)

waypoint: waypointCommandTable
add: Add wp at current pos
show: Show wp's for creature
hide: Hide wp's for creature
delete: Delete selected wp
movehere: Move to this wp
flags: Wp flags
waittime: Wait time at this wp
emote: Emote at this wp
skin: Skin at this wp
change: Change at this wp
info: Show info for wp
movetype: Movement type at wp
generateNo description entered.Randomly generate wps
save: Save all waypoints
deleteall: Delete all waypoints

Admin Commands (z)

security: No description entered.
servershutdown: Initiates server shutdown in <x> seconds.
serverrestart: Initiates server restart in <x> seconds.
castall: Makes all players online cast spell <x>.

- Configuración Avanzada

Bueno aquí trataré de analizar los archivos de configuración por completo, es algo que nunca hize porque tampoco lo vi en ningun tutorial, así que aquí lo pondre. Lo que hiré explicando son las lineas que no estan comentadas.

Antrix.conf o Ascent.conf

<WorldDatabase Hostname = "host" Username = "username" Password = "passwd" Name = "database" Port = "3306" Type = "1">
<CharacterDatabase Hostname = "host" Username = "username" Password = "passwd" Name = "database" Port = "3306" Type = "1">


Estas dos lineas pertenecen a la sección de la base de datos, aquí es donde indicamos a donde debe conectar nuestro emulador, para obtener la información, npcs, items, spawns etc...

Basta con editar lo que viene entre parentesis:

Hostname: Nuestro host donde tenemos localizada la base de datos.
Username: El usuario de la conexion al mysql ( Por defecto root ).
Password: La pass que usamos para conectarnos al mysql.
Database: El nombre de la base de datos.
Port: Es el puerto que usa el Mysql para escuchar las conexiones entrantes. (Por defecto 3306)
Type: Es el tipo de cliente que usamos en nuestra base de datos, el 1 significa que usamos Mysql pero si usamos,  PostgreSQL tenemos que poner un 2 y si usamos Oracle 10g un 3.

<Listen Host = "0.0.0.0"
        WorldServerPort = "8129">


Esta son las lineas en las que el servidor escuchará las conexiones entrantes de los jugadores al mismo, se puede modificar pero si se deja como está no ocurre nada, podemos cambiar solo dos cosas:

Listen Host: Es la direccion en la que el server escucha las conexiones entrantes, cuando ponemos 0.0.0.0 significa que escucha en todas las direcciones.
WorldServerPort: Es el puerto en el que el servidor esta a la espera para que entren los jugadores, se puede cambiar pero ya que viene este por defecto mejor dejarlo.

<LogLevel Screen="0" File="-1" World="0">

Este es el apartado que usa el servidor para loguear lo que ocurre en el.
LogLevel Screen:
File:
Solo tenemos que cambiar el -1, que aquí significa desactivado, por el nivel que queremos que nos loguee en el servidor. Minimo (0), Errores (1), Detalles (2) y Completo (3)
World:[/b]Si está marcado como 0, no estará activado, asi que le ponemos un 1 si queremos que el emulador genere un archivo world.log en el directorio del servidor, que muestra todos los paquetes enviados y recibidos por los clientes.
Cuando averigüe más sobre este apartado lo colocaré.

<Server PlayerLimit = "100"
        PlrUpdateDistance = "80"
        Motd = "No MOTD specified."       
        SendBuildOnJoin = "1"
        SendStatsOnJoin = "1"
        EnableBreathing = "1"
        SpeedhackProtection = "0"
        LevelCap = "60"
        Expansion1LevelCap = "70"
        SeperateChatChannels = "0"
        CompressionThreshold = "1000"
        QueueUpdateInterval = "5000"
        KickAFKPlayers = "0"
        ConnectionTimeout = "180"
        RealmType = "1"
        AdjustPriority = "0"
        RequireAllSignatures = "0">


Aquí vienen predispuestas las opciones generales del servidor.

Server Playerlimit: Es obvio, no? Indicamos el numero limite de personas que pueden estar conectadas al mismo tiempo.
PlrUpdateDistance: Este es el valor que tenemos que indicar en yardas, para indicar la distancia en el que el jugaor puede ver y recibir actualizaciones del entorno, osea todo lo que le rodea, si ponemos un numero muy bajo tendra que hacercarse más para descubrir que tiene delante, aumentar mucho este valor puede consumir bastante el CPU del servidor.
Motd: Mensaje de Bienvenida que recibe todo jugador al conectarse al servidor.
Send Build On Join: Con esta opcion activada (1), todo jugador que entra puede ver la revision del servidor, osea el emulador que usa, para desactivarla cambiamos el 1 por un 0.
Send Stats On Join: Con esto activado, cuando un jugador entra se le muestra el numero de personas conectadas, así como el numero de GMs, para desactivarlo cambiar el 1 por un 0.
Breathing Setup:
Speedhack detection: Esto sirve para detectar personas que usen speedhack, cuando son detectadas son avisadas y a la proxima vez kickeadas del servidor, para activar cambiar el 0 por un 1.
Level Cap: Nivel máximo que se alcanza en el servidor.
Expansion 1 Level Cap: Nivel máximo que alcanzan los personajes de la expansión.
Seperate Channels Control: Separa los distintos canales entre la horda y la alianza, de tal manera que la horda no puede leer lo de la alianza y viceversa, por defecto está desactivado pero cambias el 0 por un 1 y listo.
Compression Threshold:
Queue Update Rate:
Kick AFK Players: kickea a los jugadores con el estado de ausente, por defecto está desactivado para activarlo poner un 1.
Connection Timeout:
Realm Type: Establece el tipo de reino, ya sea PVE-RPPVE (0) o PVP-RPPVP (1)
AdjustPriority:
RequireAllSignatures: No entiendo muy bien esto pero creo que quiere decir que si está activado, y se reciben 10 peticiones el servidor se apagará. Para activarlo poner 1.

<die msg="I am a newb who didn't even read half my config file!">

Mejor borrar esta linea, ya que a parte de anular todo el contenido del archivo, nos deja con una cara de idiotas :D.

<Rates Health="1"
       Power1="1"
       Power2="1"
       Power3="1"
       QuestReputation="1"
       KillReputation="1"
       Honor="1"
       PvPTimer="300000"
       Compression="1"
       XP="1"
       QuestXP="1"
       RestXP="1"
       Drop="1"
       DropMoney="1"
       Save="300000">


Bueno llegamos a un apartado con polemica, aquí se definen los Rates, con esto lo que hacemos es si lo subimos o bajamos añadimos multiplicadores a la funcion que representan, osea si en un apartado ponemos 3, lo que normalmente hacia con 1 imaginemos el caso de la vida, cuando te regenera a 1x lo hace a una velocidad, pero si está como 3x lo hace 3 veces más rápido, no se si me explico.

Bueno ahora os pondré a que afecta cada apartado y ya decidis que haceis con ellos.

Healt: Vida.
Power 1: Mana.
Power 2: Rabia o ira.
Power 3: Energía.
QuestReputation: La reputación que recibimos en cada quest al completarla.
KillReputation: La reputación que obtenemos al matar.
Honor: Pues eso el honor.
PVPTimer: Es lo que dura el PVP antes de que acabe, el numero es en milisegundos (300000 equivalen a 5 minutos)
Compression:
XP: La experiencia recibida al matar una criatura.
QuestXP: La experiencia recibida al completar una quest.
RestXP:
Drop: Esto indica el dropeo de items por cada criatura, mientras más alto, mas cantida de item soltara.
DropMoney: Lo mismo pero en oro.
Save: La frecuencia con la que se salvan todos los personajes. (300000 equivalen a 5 minutos)

<GMClient ReqGmClient = "0" GmClientChannel = "gm_sync_channel">

Aquí se trata el tema del canal de gm, puedes crear un canal para que los usuarios lo usen por si tienen algun problema, ya que si te activas en modo gm .gm on no podrán hacerte privados.

Simplemente tienes que cambiar GmClientChannel: Por el nombre de canal que quieras.

<Terrain MapPath = "maps" UnloadMaps = "1">

Aquí indicamo en que directorio queremos los mapas, podemos cambiar la carpeta pero sería una tonteria, porque conseguiriamos lo mismo de todas maneras si los mapas los quieres meter en otra carpeta tienes que indicarlo en la variable: Terrain MapPath =.


<Log Cheaters="0" GMCommands="0">


Aquí podemos indicarle varias cosas:

Log Cheaters: Esto si se activa logueara, todos los cheats que se usen en el juego, speedhacks o exploits. Activalo con un 1.
GMCommands: Logueará todos los comandos GM, solo tienes queactivarlo con un 1.

<Mail ReloadDelay="0"
      DisablePostageCostsForGM="1"
      DisablePostageCosts="0"
      DisablePostageDelayItems="1"
      DisableMessageExpiry="0"
      EnableInterfactionMail="1"
      EnableInterfactionMailForGM="1">


Configuración del sistema de correo dentro del juego.

ReloadDelay: Si activamos esto (1), le indicaremos al emulador que tiene que esperar un tiempo antes de recargar, el sistema de cartas.
DisablePostageCostsForGM: Desactiva el coste del envio de cartas solo a los GMs, para desactivarlo pon un 0.
DisablePostageCosts: Desactiva el coste del envio de cartas a contrarrembolso a todos los jugadores, para activarlo pon un 1.
DisablePostageDelayItems: Desactiva que por defecto haya que esperar una hora para que se envien los envios con items adjuntos. Para evitar esto, cambia el 1 por un 0.
DisableMessageExpiry: Con esta opcion activada, desactivamos la expiracion de los mensajes que tenemos en el buzon. Activar con un 1.
EnableInterfactionMail: Elimina la limitacion por facciones a la hora de enviar mensajes, se aplica a todos los jugadores: Desactivalo con un 0
EnableInterfactionMailForGM: Lo mismo que el anterior solo que nada más se aplican a los GMs

<StatDumper FileName = "stats.xml" Interval = "120000">

Con esto le indicas que debe hacer el emulador con el archivo de estadisticas que el mismo genera.

StatDumper FileName: Indica el directorio, y el nombre del archivo de estadisticas.
Interval: Intervalo en milisegundos que tarda el emulador en crear el archivo o en renovarlo.

<Startup Preloading = "0"
         BackgroundLootLoading = "1"
         EnableMultithreadedLoading = "1">


Startup Preloading:
BackgroundLootLoading:
EnableMultithreadedLoading:

Cuando averigüe más sobre este apartado lo colocaré.

<FloodProtection Lines = "0" Seconds = "0" SendMessage = "0">

Apartado para tratar el tema del flood en el servidor.

FloodProtection Lines:Aqui se indica el numero de mensajes o lineas seguidas que puede, escribir un jugador antes de que le de flood el contador se resetea cada x segundos. Desactivado (0)
Seconds:Edita el numero de segundos en el que tarda en resetearse el contador de flood. Desactivado (0)
SendMessage:Si esto está activado (1), cuando se llegue al nivel de fllod el servidor soltara un mensaje avisando esto y avisará el tiempo que tardará en poder volver a hablar.

<LogonServer DisablePings = "0"
             RemotePassword = "change_me_world">


Esta parte es una de las más importantes, pondremos una pass, que servira para conectar con el logonserver.exe, la pass que pongamos aquí será la misma que pongamos en el logonserver.exe sino no funcionará.

DisablePings: Con esto activado (1), le diremos al emulador que envie un ping para ver si la conexión sigue abierta.
RemotePassword: Cambia esto por la pass que quieras.

<die2 msg="I read nearly all my config file, but not the whole thing!">

Si, otra vez la linea esta aquí, eliminemosla sin compasión, solo sirve para molestar xDD

Logonserver.conf

<LogonDatabase Hostname = "host"
               Username = "user"
               Password = "pass"
               Name     = "dbname"
               Port     = "3306"
               Type     = "1">


Esto no tiene ninguna dificultad.

Hostname: Nuestro host donde tenemos localizada la base de datos.
Username: El usuario de la conexion al mysql ( Por defecto root ).
Password: La pass que usamos para conectarnos al mysql.
Database: El nombre de la base de datos.
Port: Es el puerto que usa el Mysql para escuchar las conexiones entrantes. (Por defecto 3306)
Type: Es el tipo de cliente que usamos en nuestra base de datos, el 1 significa que usamos Mysql pero si usamos,  PostgreSQL tenemos que poner un 2 y si usamos Oracle 10g un 3.

<Listen Host = "0.0.0.0"
        ISHost = "0.0.0.0"
        RealmListPort = "3724"
        ServerPort = "8093">


Aquí se especifica la direcciones que escuchará el servidor, esto mejor no tocarlo ya que tampoco molesta mucho.

<LogLevel Screen = "0"
          File = "-1">


LogLevel Screen: Dejarlo como está.
File:
Solo tenemos que cambiar el -1, que aquí significa desactivado, por el nivel que queremos que nos loguee en el servidor. Minimo (0), Errores (1), Detalles (2) y Completo (3)

<Rates AccountRefresh = "600">

Aquí especificamos el tiempo en el que el logonserver renueva las cuentas por defecto esta en 10 minutos, por eso aveces parece que al usar la página para crear cuentas, tienes que volver a abrir el servidor, pues no lo que pasa esque por defecto hay que esperar 10 minutos pero eso se puede cambiar en esta linea.

<Client MinBuild = "6739"
        MaxBuild = "6739">


Indica la revisión minima y la máxima del juego que aceptará de los jugadores que entren, por ejemplo la 2.1.1 del juego seria 6739 y la ultima 2.1.3 6898. Podeis ver la revisión de vuestro juego si entrais en el, en la ventana de nombre de usuario y pass abajo a la izquierda os vendrá.

<LogonServer RemotePassword = "change_me_logon">

Aquí hay que poner la pass que pusimos antes en el antrix.conf o el ascent.conf

Realms.conf

Este archivo no da tanto juego como los otros, solamente tiene dos bloques a editar.

<LogonServer Address = "127.0.0.1"
             Port = "8093"
             Name = "Default Logon"
             RealmCount = "1">


Editaremos esto segun nos interese.

LogonServer Address: Ponemos lo que nos interese, localhost para crear solo el servidor en red o un dominio o nuestra ip externa, para ponerlo al publico.
Port: El puerto por el que se accederá a nuestro reino.
Name: Nombre del logon.
Realmcount: Es el numero del reino, esto nos vendrá bien por si queremos abrir dos si aquí ponemos 1, en el siguiente bloque <Realm1 Name = "Test Realm" tenemos que poner 1, si por casualidad queremos otro reino osea uno 2, ponemos 2 y luego tenemos que cambiar el Realm1 por Realm2, pero esto ya lo veremos en otro momento.

<Realm1 Name = "Test Realm"
        Address = "127.0.0.1:8129"
        Icon = "PVP"
        Colour = "1"
        Population = "1.0"
        TimeZone = "1">


RealmNumero Name: Aquí tenemos que poner el número segun lo que hayamos puestoe n realmcount, y tambien el nombre de nuestro reino o servidor (no usar nombres raros)
Address: Cambiamos esto según lo hayamos puesto en todos los archivos, aseguraos de que poneis al final el :8129
Icon: Aquí indicamos el tipo de reino. PVP, Normal, RPPVP y RP.
Colour: El color del reino en la lista de reinos :D.
Population: Indica la cantidad poblacion del reino. 0 = bajo, 1 = medio y 2 = alto.
TimeZone: Esto nose todavía para que sirve :P, así que dejadlo como está.



- Actualizando el servidor y la Base de datos.

Para actualizar el servidor, tan solo teneis que bajaros la ultima version, y sustituirla por la que ya teneis, a excepcion de los archivos de configurción, haced esto hasta que yo diga que teneis que volver a configurar si por casualidad añaden alguna linea más.

Para actualizar la base de datos, solo teneis que importar la nueva actualización, peor no teneis que meter el archivo que os crea las tablas de cuentas porque esto hará que se borre todo, por ejemplo en la obdb solo teneis que usar el dbimport.bat. Cuando haceis esto las traducciones de las quest que tengais se borrarán, porque al usar el dbimport.bat vuelve a meter todas las tablas y sustituye las quest que teniais por las nuevas actualizadas ( en ingles ), así que teneis que volver a parchear para ponerlas en español.

- Hacer copias de seguridad de vuestra base de datos.

Para hacer esto, algo muy recomendable si soleis tocar la base de datos, solo teneis que pinchar boton derecho sobre la bd con el SQLyog, Backup Database as SQL Dump, poneis una localizacion para el archivo y un nombre y pulsais, export, llevará un rato pero cuando acabe ya teneis eso asegurado, si se fastidiase la base de datos solo teneis que importar la mas reciente que tengais, usando el Restore From SQL Dump.



frekency

#9
9. Personalización de nuestro servidor.

Bueno empieza el entrenamiento para personalizar vuestro servidor, a lo largo de los tres pasos, crear un npc, un item y una quest, aprenderemos no solo a personalizar nuestro servidor de manera inimaginables sino que nos familiaremos con la base de datos. El limite de lo que hagais lo poneis vosotros, ya que es cuestión de imaginación, poder se puede hacer practicamente cualaquier cosa.

Recordad: Haced un backup de vuestra bd antes de tocarla, si algo pasa no me vengais con mensajes de que se os ha fastidiado y no sabeis como arreglarla si haceis algo es porque vosotros quereis asi que yo no me responsabilizo.

Bueno empecemos, hace tiempo me dijeron que una misión al principio, en la que te entregaban unas mascotas a elegir entre 6, esas mascotas tipo gallina, cerdo, mono etc... quedaría bastante bien ami me parecio buena idea asi que la hice y quedo muy pero que muy bien sobre todo en plan de bienvenida a vuestro servidor, teneis que saber que los detalles marcan mucho a los jugadores cosas como esta no se encuentran en el oficial y puede ser un buen reclamo para atraer mas jugadores.

Bueno para ello primero nos crearemos una estructura así no nos perdemos, lo que haremos será lo siguiente:

- Crearemos un par de NPCs, que iniciarán una quest de bienvenida al servidor.
- El primer personaje iniciará la quest, y entregará un libro con una descripción dentro, el contenido es personalizable, yo pondría las normas del servidor o un mensaje de bienvenida.
- El segundo personaje terminará la quest y la quest termina entregandole el libro que te dio el primero, a cambio nos dará a elegir entre 6 mascotas: El cerdo, la gallina, la rata, una tortuga, un mono y un lurkey.

- Crear un NPC.

Un par de cosas son a tener en cuenta antes de meterse a crear npcs, primero el nombre (evidente), un transfondo (si lo tiene), esto viene a ser la historia del npc y lo más importante el aspecto que le queramos dar, luego tan factores como la altura, el nivel, si son jefes o no pero esto son pequeños detalles a rematar luego.

Bueno para este ejemplo yo voy a crear dos simpaticos goblins, en concreto este:
http://www.wowhead.com/?npc=8738.

Bueno primero necesitamos el displayid de este npc, para ello podemos buscar en la bd, el id 8738 en la tabla de creature_names, yo para hacer cosas como esta utilizo el navicat ya que ofrece un entorno más facil de seguir, en este caso el displayid de este npc es: 8009.

Vale ahora vamos al grano para crear el npc necesitamos manejar dos tablas, la creature_names y la creature_proto.

Para que no haya problemas con proximas actualizaciones le pondremos un identificado (id) alto del tipo 20000000.

Empecemos creamos una entrada nueva en la tabla creature_proto y lo primero que hacemos es poner el id 20000000, nivel voy a poner 10, faction la dejaremos en 0 así no atacará a nadie, el resto lo dejaré a vuestro gusto, si algo no lo quereis poner poneis el valor 0, solo interesa tocar 3 valores aquí, que son el id, la facción y el npc flags, que pondremos 0. Como ya dije esto es lo más básico, luego podeis modificarlo a vuestro gusto.

Ahora vamos a modificar el aspecto externo y el nombre de este personaje, es importante modificar las 2 tablas ya que sino no podremos meterlo en el juego.

Bueno nos vamos a la tabla creature_names, aquí tenemos que poner como prioridad, el id del npc: 20000000, el nombre y el subnombre, las flags en la que pondremos 0, y el displayid que pondremos 8009.

Una vez echo esto, simplemente abrimos el server y ponemos .npc spawn 20000000 haremos lo mismo con el otro npc solo que cambiaremos el nombre y el id 20000001 será el que pondremos.

- Crear objetos.

Bueno seguimos con las lecciones y el caso práctico para lo que tamos haciendo esto, el objeto que crearemos será un libro que facilmente puede ser leido al pulsar boton derecho sobre el, la función de este libro será la de entregarsela al npc 2 despues de que te lo de el npc 1, con esto recibiremos una de las 6 recompensas a elegir.

Ya que queremos hacer un libro, lo que necesitamos es tocar dos tablas basicamente: items e itempages esta segunda lo que hará sera dar un texto que se enlazará con el libro.

Como hicimos con el npc, necesitamos básicamente un id le daremos un valor alto para no hacer comflictos con posibles añadidos más adelante, por ejemplo le daremos el id 100000, tambien necesitamos un displayid, elegimos el de un libro por ejemplo este: http://www.wowhead.com/?item=21289 su id es de 21289, para saber el displayid solo buscamos esta entrada en nuestra tabla de items y nos sale que el displayid de este objeto es: 1155, tambien necesitamos una clase especial para el item, esto le dará la propiedad de libro por ejemplo nos impedirá que podamos equiparnoslo, la clase que usaremos es 9, si quereis saber alguna clase especial solo buscais un objeto similar con las mismas propiedades, buscais la entrada en la base de datos, tabla items y veis que pone en la columna class.

Bueno al lio, creamos una nueva entrada y lo primero que haremos será colocar el id del objeto, la clase y el displayid.
Evidentemente necesitamos un nombre, en los objetos o items los nombres tenemos que ponerlo 4 veces, por ejemplo yo lo voy a llamar Itemdeprueba (nombre original xDD). En field4, pondremos -1 (Esto creo que es para que no se pueda equipar, no estoy seguro), en quality ponemos 1, ya que tienen que tener alguna cualidad los valores pueden cambiar yo puse este, pero puedes poner cualquiera, ponemos el itemleve por ejemlo 1, en las siguientes columnas vemos que ponen cosas como speelid, spellcharge y un monton más esto lo que hace es añadir propiedades, como el poder usas spells y el numero de cargas.
Otra cosa que debemos tocar es el page_id, esto enlazará el libro con una pagina que pondremos en la tabla itempages, ponemos un valor alto pero apuntaroslo, por ejemplo 60000, page_language esto lo dejamos en 0, con ello hacemos que lo lea cualquier raza, page_material lo dejamos en 1, si queremos ponerle otro material, buscamos un objeto, si os gusta ese material pues buscais el objeto y lo copiais, donde pone quest_id es por si queremos que el objeto en cuestion inicie una quest eso no nos interesa ahora.
Por ultimo, tocaremos las columnas de ReqDisenchatSkill pondremos -1, asi desactivamos que se necesite una habilidad de desencantamiento, y en unk2 ponemos -1 tambien.

Guardamos los cambios y nos vamos a la tabla pageitems:

Esta tabla es bien sencilla, simplemente creamos una nueva entrada en la que pondremos el id que pusimos antes en el objeto en el apartado de page_id en este caso pusimos 60000, introducimos una nueva línea, escribimos un texto el que queramos y en la siguiente columna podemos crear otro enlace por si queremos otra página, el procedimiento es igual ponemos el id en next_page luego creamos otra linea, ponemos ese id nuevo y escribimos el texto, podemos hacer esto eternamente.

Guardamos los cambios y ya tenemos el item creado con el id: 200000. Luego solo un .additem 200000 si quereis probarlo. Recordar volver a abrir el servidor.

Es posible que hagais cambios en los items, npcs o en las quest y no aparezcan en vuestro server esto es porque teneis que borrar la carpeta chache de vuestro wow, y vereis lo nuevo.

- Crear una quest.

Bueno finalizamos el tuto en tres partes, para personalizar vuestro servidor, explicando como crear una quest, miremos que es lo que tenemos:

- Npc 1: ID 20000000
- Npc 2: ID 20000001
- Item-LibrodeBienvenida: ID 200000

Ahora solo nos queda crear la quest, asignarle sus propiedades, ponerle los objetos de recompensa, que pida el libro y luego asignar que npc inicia y cual la termina. Necesitamos las tablas: Quests, creature_quest_starter y creature_quest_finisher.
Empezamos con la tabla quests:
Básicamente necesitamos modificar esto, el resto lo dejaremos por defecto o si lo prefereis cambiadlo vosotros:
En Entry, ponemos un id alto por ejemplo 2000000, zoneid lo dejamos como 0, dejamos el resto como 0, excepto en: minlevel ponemos 1 y maxlevel ponemos 70, cambiamos Title donde pondremos el titulo de la quest, y modificamos tambien si queremos: details, objetives, completiontext, incompletetext y endtext, en reqitemid1 pondremos el id del objeto que creamos, esto le dira a la quest que para finalizarla neceistas ese item, tambien necesitamos cambiar el valor de ReqItemCount1 a 1, Bien todo lo que pone Req significia que para que la quest se complete necesitas eso.

Ahora le vamos a indicar las distintas recomensas a elegir con las columnas: RewChoiceItemId1 y RewChoiceItemCount1 tenemos 6 como esa simplemente ponemos el id del item para elegir y la cantidad que será en este caso 1, si en vez de poner el id en rewchoise lo ponemos en rewitem, se recibirá automaticamente sin elegir nada. Tambien podemos indicarle que recibamos dinero o exp, todo depende de lo que queramos. Por ultimo le indicaremos a la quest que cuando empieze, nos sea entregado el libro que necesita para finalizar:

Nos vamos a ReceiveItemId1 y ponemos el id de nuestro libro o el objeto que creasemos y luego en ReceiveItemCount1 ponemos la cantidad, que será 1.

Guardamos los cambios y ya tendremos creada la quest, ahora le indicaremos que npc la inicia y cual la acaba.

Nos vamos a Creature_quest_starter, y añadimos una linea nueva en la que pondremos el id del npc 1 y el id de la quest. Luego nos vamos a Creature_quest_finisher y pondremos una linea nueva con la id del npc 2 y la id de la quest.

Guardamos los cambios y abrimos el server, luego importamos los npcs y ya deberían iniciar la quest y acabarla.

Recordar que si haceis cambios teneis que borrar la carpeta caché para apreciarlos luego en el juego. Bueno esto ha sido todo, con esto finalizo el tutorial pero no os preocupeis que añadiré cosas más adelante.