miércoles, 18 de agosto de 2010

Crear servidor de World of Warcraft 3.3.3a con MaNGOS

Hola!

Aquí estamos, supongo que preparados para empezar a montar nuestro propio servidor de wow en nuestro propio PC.

Voy a resumir brevemente lo que vamos a hacer en esta guía:

Vamos a crear un servidor en nuestro ordenador, para poder conectarnos a través de él. De momento no va a estar online, paso a paso.

¡¡Empezamos!!

Guía CCTW (Cómo Crear Tu WoW): Crear servidor de World of Warcraft con MaNGOS:

1-Herramientas:

.NET FrameWork 3.0

.NET FrameWork 3.5

MySQL 5.0

SQLyog 5.13

Repack Mangos 3.3.3 (11723)

2-Instalación


2.1-MySQL

>> Ejecutamos MySQL 5.0 para instalar. ->Next
>> Custom. ->Next
>> Standard Configuration. ->Next
>> Next
>> Modify Security Settings, pon password (apuntatela, es muy importante). ->Next
>> Comienza la instalación
>> Configuration y Next
>> Detailed Configuration. ->Next
>> Developer Machine. ->Next
>> Multifunctional DataBase. ->Next
>> Next
>> Manual Setting, en Concurrent conections es el número de personas que se van a conectar, yo me lo pongo a 5 cuando es para probar. ->Next
>> Next
>> Standard Character Set. ->Next
>> Next
>> Modify Security Settings, pones password. ->Next
>> Finish

2.2-SQLyog

>> Ejecutamos SQLyog para instalar. ->Next
>> Aceptas el acuerdo. ->Next
>> Install
>> Abre el SQLyog.
>> Te pedirá que te conectes a un Host de MySQL, dale a New y acepta.
>> Rellenalo como pongo a continuación:
MySQL Host Address: localhost
User name: root
Password: (la que habías usado antes para el MySQL, la que dije que apuntaras)
>> Lo demás lo dejas como está y le das a Connect.
>> Cierras el SQLyog.

2.3-Bases de datos

>> Descomprime Repack Mangos 3.3.3 (11723), tendrás 3 carpetas.
>> Te metes en server. En esta dirección: Server\mysql\data
>> Copias las siguientes carpetas: scriptdev2, realmd, mangos y characters.
>> Las pegas dentro del directorio donde instalaste MySQL: MySQL\MySQL Server 5.0\data, hay que pegarlo dentro de data.
>> Abres el SQLyog (si lo tenias abierto, cierralo y abrelo de nuevo, como antes, pero esta vez no tienes que darle a New, directamente a Connect y listo).
>> En el menú de la izquierda abre la base de datos: realmd, luego le das botón derecho sobre realmlist y seleccionas View Data.
>> Te aparecerá una tabla. En name pones el nombre del Reino.
>> En address tienes que poner 127.0.0.1
>> Encima de id, tienes unos botoncitos, el de la izquierda del todo hay uno que es para guardar. Guardas y cierras el SQLyog.

2.4-Configurar

>> Ahora vas a la carpeta Mangos - Server (cuando te descomprime 3, es una de las tres).
>> Haz click en el botón derecho sobre mangosd.conf y editalo con el bloc de notas.
>> Tienes que modificar estas lineas:

LoginDatabaseInfo = "127.0.0.1;3306;root;TU_CONTRASEÑA_DE_MYSQL;realmd"
WorldDatabaseInfo = "127.0.0.1;3306;root;TU_CONTRASEÑA_DE_MYSQL;mangos"
CharacterDatabaseInfo = "127.0.0.1;3306;root;TU_CONTRASEÑA_DE_MYSQL;characters"

>> Guarda el documento y cierralo.
>> Ahora haz click derecho sobre realmd.conf y editalo con el bloc de notas.
>> Tienes que modificar esta línea:

LoginDatabaseInfo = "127.0.0.1;3306;root;TU_CONTRASEÑA_DE_MYSQL;realmd"

>> Guarda el documento y cierralo.

3-Modificar realmlist de tu juego World of Warcraft 3.3.3a

>> Tienes que modificar el realmlist.wtf qu hay en tu juego WoW por esto:

set realmlist 127.0.0.1

4-Iniciar el servidor

>> Ejecuta: realmd
>> A continuación ejecuta: mangosd

5-Abre tu juego y en la pantalla de login tus datos de administrador son estos:

user: admin
pass: admin

>> Ya eres el GM de tu propio servidor World of Warcraft!

Un saludo!





martes, 17 de agosto de 2010

MaNGOS

Hola de nuevo!

En esta entrada os voy a hablar un poco de este emulador, como va a ser costumbre voy a tirar un poco de wikipedia (os quito el trabajo sucio).

MaNGOS (Massive Network Game Object Server ) es un proyecto educativo que pretende enseñar la programación de C++ y C# en tareas a gran escala, es open source, cross-platform, orientado a objetos MMORPG, y mantenido en SourceForge.net (desde September 21, 2006) y bajo la licencia GPL. Este proyecto es una de los más importantes proyectos de servidor opensource que soportan el protocolo de World of Warcraft.

En algunos casos se usa para mantener servidores privados, es decir, un hosting publico en contra de los Términos de Uso de MaNGOS. Sin embargo no fue ideado para ser un servidor privado de WoW, más bien para servir de punto de partida para la creación de otros juegos/proyectos.

MaNGOS está escrito en C++. Puede ser usado con los servidores de bases de datos MySQL and SQLite. Dispone de una interfaz de usuario web que está siendo desarrollada por terceros. MaNGOS está compuesto de 23 voluntarios. El proyecto Silvermoon sigue desarrollando nuevas versiones de la base de datos (PSDB).


Ahora que ya sabes un poquito más de esto vamos a entrar en materia.
En los servidores de World of Warcraft que estén bajo MaNGOS tienes una lista de comandos a tu disposición, para usr cuando quieras, y aquí tienes la lista:


Comandos de Usuarios(Level 0)


.acct ------------------ Muestra el nivel de acceso de su cuenta.
.commands ---------- Muestra una lista de los comandos disponibles para su nivel de la cuenta.
.dismount ------------ Te desmonta de una montura cuando quedas pillado en ella (seleccionarte o pulsar F1)
.info ------------------- Muestra el número de jugadores conectados.
.gmlist ---------------- Muestra una lista de los GMs disponibles en el juego.
.help $command ----- Muestra las instrucciones de uso para $command.
.showhonor ----------- Muesta tu ranking de honor.
.save ------------------ Guarda tus caracteres.
.start ------------------ Te teletransporta al punto de inicio de tu personaje.
.taxicheat #flag ------------------ Esconde o revela todas las rutas de taxis para el jugador seleccionado. Si no se selecciona a ningun caracter, oculta o revela todas las rutas de tu caracter. Usa #flag con valor de 1 para mostrarlas y #flag con valor de 0 para ocultarlas.


Comandos de Moderador (Level 1)


.announce $MessageToBroadcast ------------------ Envía un mensaje global a todos los jugadores en línea.
.gmoff ----------------------------- Desactiva el prefijo para su personaje.
.gmon ------------------------------ Permite el prefijo para su carácter.
.goname $playername ------------ Teletransportarse al jugador dado. Especifique el nombre del jugador. El nombre tiene que ponerse exacto como lo muestra el jugador (mayus. y minus.), ejem: OsuAQ, debe ponerse.goname OseAQ
.gps --------------------------- Muestra la información de la posición para un jugador o una criatura seleccionado. La información de la posición incluye X, Y, Z, y la orientación.
.modify $parameter $value ------ Modifica el valor de varios parámetros. Parametros soportados: hp, mana, rage, energy, gold, level, speed, swim, scale, bit, bwalk, aspeed, etc. Ejem: .modify hp 500000
.modify aspeed #speed ------ Modifica todas las velocidades: - correr, nadar, correr hacia atras- del jugador seleccionado. Si no se selecciona a ningún jugador, modifica su velocidad (#speed puede ser desde 0 hasta 50).
.modify bit #field #bit -------- Cambia el #bit del campo #field para el jugador seleccionado. Si no hay ningun jugador seleccionado, modifica a tu caracter.
.modify bwalk #speed ----------- Modifica la velocidad hacia atras del jugador seleccionado. Si no se selecciona a ningún jugador, modifica su velocidad (#speed puede ser entre 0 hasta 50).
.modify energy #energy --------- Modifica la energía del jugador seleccionado. Si no se selecciona a ningún jugador, modifica tu energía.
.modify faction #factionid #flagid #npcflagid #dynamicflagid --- Modifica la faccion y el flag de la criatura seleccionada. Sin argumentos, muestra la faccion y el flag de la criatura seleccionada.
.modify gold #money ------------ Agrega o quita el dinero del jugador seleccionado. Si no se selecciona a ningún jugador, modifica su dinero (el oro puede ser negativo al quitar el dinero).
.modify hp #newhp -------------- Modifica la hp del jugador seleccionado. Si no se selecciona a ningún jugador, modifica a su hp.
.modify level #level ----------- Modifica el nivel del jugador seleccionado. Si no se selecciona a ningún jugador, modifica su nivel (#level entre 1 hasta 99). Experiencia mia: yo llege a poner como nivel 1063 poniendo .level mas numero).
.modify mana #newmana ---------- Modifica el mana del jugador seleccionado. Si no se selecciona a ningún jugador, modifica su mana.
.modify rage #newrage ---------- Modifica la rabia(rage) del jugador seleccionado. Si no se selecciona a ningún jugador, modifica su rabia(rage).
.modify scale #scale ----------- Modifica la escala(tamaño) del jugador seleccionado. Si no se selecciona a ningún jugador, modifica su escala(tamaño).
.modify speed #speed ----------- Modifica la velocidad del jugador seleccionado. Si no se selecciona a ningún jugador, modifica su velocidad (#speed puede ser entre 0 hasta 50).
.modify spell ------------------ En el oficial (version inglesa) salia en blanco a si que aun no se tiene puesto.
.modify swim #speed ------------ Modifica la velocidad al nadar del jugador seleccionado. Si no se selecciona a ningún jugador, modifica su velocidad (#speed puede ser entre 0 hasta 50).
.namego $playername ------------ Teletransporta al jugador hasta tu posicion.
.recall $place ----------------- Teletransportarse por varios pueblos en el mundo. $place define el lugar de destino (Los lugares son: sunr, thun, cross, ogri, neth, thel, storm, iron, under, darr, y gm).
.whispers onoff --------------- Permite/inhabilita aceptar susurros(whispers) a GM de jugadores. En mangosd.conf esta la configuracion por defecto.
.goobject #object_guid --------- Teleporta su caracter hasta el objeto con guid #object_guid
.searchtele $substring --------- Busca y muestra todos los lugares del comando .tele que tengan $substring en su nombre.


Comandos de GM (Level 2)


.addmove ----------------------- Agrega tu localización actual como waypoint para la criatura seleccionada.
.addspw #creatureid ------------ Invoca una criatura con el id(#creatureid).
.changelevel #level ------------ Cambia el nivel de la criatura seleccionada por #level (#level puede ser desde 1 hasta 63).
.delete ------------------------ Suprime la criatura seleccionada del mundo.
.demorph ----------------------- Quita los aspectos del jugador seleccionado.
.displayid #displayid ---------- Cambia la identificación del modelo de la criatura seleccionada #displayid
.factionid #factionid ---------- Fija la facción de la criatura seleccionada a #factionid
.guid -------------------------- Muestra el GUID para el jugador seleccionado.
.item #guid #amount --------------------------- Adiciona una cantidad (#amount) el objeto con GUID (#guid) al vendedor seleccionado.
.itemmove #sourceslotid #destinationslotid ---- Mueve un objeto desde el slot #sourceslotid hasta #destinationslotid en tu inventario.
.itemrmv #guid -------------------------------- Elimina el objeto con GUID(#guid) de el vendedor seleccionado.
.kick $playername ----------------------------- Patea al jugador del mundo.
.npcflag #npcflag -------------- Cambia los NPC flags de la criatura seleccionada a #npcflag.
.random #flag --------------------------------- Permite o inhabilita el movimiento al azar para la criatura seleccionada (Utilice #flag con valor 1 para permitir, utilice #flag con valor 0 para inhabilitar el movimiento al azar).
.run #flag ------------------------------------ Permite o inhabilita el movimiento corriente para una criatura seleccionada (Utilice #flag con valor 1 para permitir, utilice #flag con valor 0 para inhabilitar el funcionamiento).
.subname $Name -------------------------------- Cambia el subnombre de la criatura o del jugador seleccionado o referido en $Name.
.ticket on/off/#num/$character_name ----------- Activa/Desactiva que los GM muestren o no un nuevo tiquet directamente, $character_name para mostrar los tiquets de este caracter, #num para mostrar los tiquets con número #num.
.delticket all/#num/$character_name ----------- Usa all para borrar todos los tiques en el server, $character_name para borrar los tiques de este caracter, #num para borrar el tiquet con número #num.
.gocreature #creature_guid -------------------- Teletransporta a tu caracter hasta la criatura con el GUID #creature_guid.
.prog ------------------------- Teletransporta a tu caracter hacia la Isla de los Programadores.
.run #flag -------------------- Habilita/Deshabilita el movimiento de correr para la criatura seleccionada. Si #flag es de valor 1 lo habilita, si es de valor 0 lo deshabilita.
.targetobject [#go_id#go_name_part] ---------- Localiza y muestra el lugar del gameobject mas cercano. Si #go_id o #go_name_part son dados, entonces localiza y muestra la posicion del gameobject con id #go_id o que el nombre incluye parcialmente a #go_name_part.
.delobject #go_guid -------------------- Borra un gameobject con el GUID #go_guid.

Comandos de Administrador (Level 3)


.addgo #id ----------------------------- Agrega un objeto del juego a su posicion #id.
.addgrave ------------------------------ Agrega un cementerio en tu localización actual.
.additem #itemid #itemcount ------------ Adiciona una cantidad(#itemcount) de objetos con el id(#itemid) a tu inventario. Si #itemcount es omitido, solo un objeto sera agregado.
.addsh --------------------------------- Adiciona un Spirit Healer en tu locacion actual.
.addspirit ----------------------------- Invoca un Spirit Healer en el lugar actual, si hay alguno definido para el lugar actual (comando deshabilitado).
.addweapon ----------------------------- (Todavia no esta activo).
.allowmove ----------------------------- Permite o inhabilita el movimiento para la criatura seleccionada.
.anim #emoteid ------------------------- Reproduce un emote(#emoteid) para tu caracter.
.aura #spellid ------------------------- Agrega el aura(#spellid) a su carácter.
.bank ---------------------------------- Vea, saque y meta cosas en su inventario del banco.
.createguild $GuildLeaderName $GuildName ------ Crea un clan $GuildLeaderName y el Maestro del clan $GuildName.
.die ----------------------------------- Mata al jugador seleccionado. Si no se selecciona a ningún jugador, te matara a ti.
.distance ------------------------------ Muestra la distancia desde su caracter hasta la criatura seleccionada.
.emote #emoteid ------------------------ Hacer que la criatura seleccionada emote with an emote of id #emoteid.
.explorecheat #flag -------------------- Revela u oculta todos los mapas para el jugador seleccionado. Si no se selecciona a ningún jugador, oculta o revela los mapas para tu jugador (Utilize #flag con valor de 1 para habilitar, utilize #flag con valor de 0 para inhabilitar).
.gameobject #id ------------------------ Agrega un gameobject a su posición.
.getvalue #field #isInt ---------------- Consigue el campo de la criatura seleccionada #field. Si no se selecciona a ninguna criatura, consige el contenido de su campo (Utiliza #isInt con valor 1 si el contenido previsto del campo es un número entero).
.go #position_x #position_y #position_z #mapid --------------- Teletransportarse a las coordenadas dadas.
.hidearea #areaid ---------------------- Oculta el área(#areaid) al jugador seleccionado. Si no se selecciona a ningún jugador te oculta esta área a ti.
.hover #flag --------------------------- Habilita o desabilita el modo de flotar para tu caracter (Usa #flag con valor de 1 para habilitar, usa #flag con valor de 0 para desabilitar el flotar).
.learn #parameter ---------------------- Aprende una magia con id(#parameter). Si quieres aprender todas las magias predeterminadas de los Game Masters, usa: .learn all, y si quieres aprender todas las magias de tu clase usa: .learn all_myclass.
.learnsk #skillId #level #max ---------- Aprende la habilidad con id(#skill) con un level(#level) y un valor maximo de #max para el jugador seleccionado. Si no se selecciona a ningun jugador, tu aprenderas la habilidad.
.levelup #numberoflevels --------------- Incrementa el nivel del jugador seleccionado por #numberoflevels. Si #numberoflevels es omitido, el nivel sera incrementado en 1. Si no se selecciona a ningun jugador, incrementara tu nivel.
.loadscripts --------------------------- Recarga la biblioteca de scripts en caso de que fuera cambiada mientras el servidor estuviera activo.
.Mod32Value #field #value -------------- Adiciona #value al campo(#field) de tu caracter.
.morph #displayid ---------------------- Cambia tu modelo actual al id(#displayid).
.NewMail? #flag ------------------------ Manda una notificacion de correo nuevo con el flag(#flag).
.npcinfo ------------------------------- Exhibe una lista de los detalles de la criatura seleccionada.
.npcinfoset ---------------------------- Por hacer.
.object #displayid $save --------------- Adiciona un nuevo objeto de tipo Buzon con el id(#displayid) en tu posicion actual. Si $save es de valor 'true', salva el objeto en la base de datos.
.QNM #flag ----------------------------- Query next mail time with flag #flag.
.security $name #level ----------------- Establece el nivel de seguridad del jugador con nombre($name) al nivel(#level) (#level puede ser entre 0 hasta 5).
.setvalue #field #value #isInt --------- Establece el campo(#field) de la criatura seleccionada con el valor de #value. Si no hay ninguna criatura seleccionada, pone el establece de tu campo (Usa el #isInt con valor 1 si #value es integro).
.showarea #areaid ---------------------- Revela el área al jugador seleccionado. Si no se selecciona a ningún jugador, revela esta área para ti.
.standstate #emoteid ------------------- Cambia el emote de tu caracter mientras estas quieto a #emoteid.
.unaura #spellid ----------------------- Elimina el aura con id (#spellid) de tu caracter.
.unlearn #startspell #endspell --------- Olvida el rango de magias con id entre #startspell hasta #endspell. Si no se escribe #endspell, solo olvida la magia con id(#startspell).
.unlearnsk #parameter ------------------ Olvida una habilidad con id(#parameter) para el caracter seleccionado. Si no se selecciona a ningun caracter, tu olvidaras la habilidad.
.update #field #value ------------------ Actualiza el campo(#field) del caracter seleccionado o criatura con el valor de #value.
.wchange #weathertype #status ---------- Establece el clima a #weathertype con una intensidad #status.
.worldport #continent #position_x #position_y #position_z -------- Teletransporta a las cordenadas especificas en este continente.
.additem #itemID #amount --------------- Adiciona la cantidad #amount de un objeto con ID(#id) a ti si nadie esta seleccionado.
.additemset #setID --------------------- Adiciona el grupo(#setID) de objetos a la mochila del jugador seleccionado y si no hay ningun jugador seleccionado, te lo adiciona a ti.
.shutdown #seconds --------------------- Cerrar el servidor en #seconds.
.cshutdown ----------------------------- Cancelar el apagado del el servidor.
.reset #flag --------------------------- Resetea las estadisticas y talentos. Si #flag es una estadistica, este comando resetea todas las estadisticas del jugador seleccionado a sus valores originales para el nivel 1. Si #flag es un talento, este comando elimina todos los talentos del jugador seleccionado.
.maxskill ----------------------- Establece todas las habilidades del jugador seleccionado a su maximo valor para el nivel actual.


Para terminar, comentarte que en la mayoria de las consolas (MS-DOS), cuando las tienes abiertas, tienes la opción de darle a "help" (sin comillas) y te saldrán los comandos que están a tu disposición, esto lo comento ahora para cuando tengais MaNGOS ya ejecutando en vuestro ordenador y tengais la ventana de la consola, al poner "help" os saldrán los comandos. Para crear cuentas, ver vuestro grado de privilegio, banear, eliminar item, etc..etc...
Y esto es todo sobre MaNGOS.
Un saludo!

Quiero...

¡Quiero tener mi propio servidor privado de World of Warcraft!
¡Quiero ser game master de mi servidor!
¡Quiero ser administrador!
¡Quiero...Quiero...Quiero...!


Todo llega a su tiempo, y como querer es poder, y poder es tener, en este blog podrás aprender a crear tu propio server de World of Warcraft, paso a paso, como si no supieses nada de nada de lo que te hablamos.
Para empezar se necesitan unos conocimientos previos, antes de que siga leyendo, antes de nada.
Si no te gusta leer estas en un blog equivocado, porque aqui se aprende tragando y tragando palabras, es decir, leyendo.


1-Conocimientos Previos:


Los servidores piratas no tienen el cliente original del juego oficial de World of Warcraft, por lo que usan un emulador. Como su palabra indica un emulador lo que hace es emular algo, ¿y qué emula?, emula el cliente del WoW. Nunca logrará ser el cliente tal y como es, pero se asemeja, dejemoslo ahí, porque decir que se parece mucho sería mentiros, digamos que se parece.


Si ya tienes experiencia en jugar en servidores privados sabrás de que estoy hablando, las famosas misiones buggeadas, misiones que no se hacen de esa manera, pero que se modifican para que se pueden hacer, auque realmente no sean asi...etc, etc...


Vamos a empezar citando algunos e estos emuladores que usaremos en un futuro:


Trinity

Mangos

Arcemu


Nosotros empezaremos instalando un servidor privado en nuestro pc con el emulador Mangos.
Del emulador Mangos hablaré detalladamente más adelante.
Ya sabemos que vamos a necesitar un emulador para emular el cliente, bien, ya sabemos algo más.


Siguiente paso, imagínate la cantidad de personajes, misiones, raids, arenas, item, etc..etc.. que hay para poder programar, arreglar errores y demás, puede que ya estes deduciendo a donde quiero llegar, y si, estabas en lo cierto, Bases de Datos.
Es lo principal, lo más importante que tienes que saber, ¿qué es?, ¿para qué sirve?, ¿como crear una Base de Datos?, digamos que es la columna vertebral de nuestro servidor wow.
Vale muy bien, pero ¿y ahora qué hago?. Bien, te explicaré. Nosotros nos basaremos en un lenguaje específico de bases de datos, hablo de SQL. Aquí no vas a aprender a ser un experto en bases de datos ni algo parecido, aquí únicamente aprenderás a crear tu base de datos para el servidor, y más tarde poder modificarla y entenderla, algo importante.
Asi que es tarea tuya el informarte sobre SQL, y aprender un poco si quieres adentrarte en este mundo de las bases de datos, un campo muy importante para la Informática.


Los programas que emplearemos para modificar las bases de datos van a ser:


MySQL

SQLyog


Tirando un poco de Wikipedia os diré que MySQL es un sistema de gestión de base de datos relacional, multihilo y multiusuario con más de seis millones de instalaciones.
Y SQLyog es uno de los mejores GUI's para el MySQL en su versión Enterprise, ya que es la que permite hacer uso de los Sotre Procedures que soporta el MySQL 5.
Perfecto, ya tenemos idea de emuladores y bases de datos referentes a servidores de World of Warcraft.


Para empezar yo creo que ya está bastante bien, así que esta entrada queda finalizada.


Espero que hayáis aprendido algo y os haya servido para coger las siguientes entradas con más ganas y más conocimientos.
Un saludo!
 

Cómo Crear Tu WoW © 2008 . Distributed by Blogger Templates. Design By: SkinCorner