MuEditor remoto en MUEMU

Bienvenidos a un nuevo tutorial, hoy aprenderemos a configurar el MuEditor (Editor base de los files MUEMU) de forma remota.
¿Pero para que sirve el editor de forma remota?
Sirve para poder usar la aplicación desde cualquier sistema sin necesidad de ingresar a la pc servidora.
Este tipo de prácticas se aplica a quienes alojan el servidor en un VPS y desean utilizar su propia pc para utilizar el editor, de esta forma, evitan el ingreso al sistema virtual.



Para configurar el MuEditor de MUEMU de forma remota, debemos seguir estos sencillos pasos:

1)Ingresamos a la PC server y liberamos el puerto 1433 (Puerto por defecto utilizado por nuestro motor de datos para conexiones remotas) en el firewall (En el caso que nuestra pc server sea un VPS) y en el firewall+router (En el caso que nuestra pc server sea una pc casera conectada a un router)
Recuerden abrir el puerto en modo TCP

Visualizando la interfaz del firewall en Windows 7

2)Ahora copiamos la carpeta MuEditor y la llevamos a la pc en donde deseamos utilizarlo.
Una vez descargados los archivos, abrimos el llamado Config.ini y analizamos su contenido:
EnableTrusted = Desactivamos esta linea colocando un 0
SERVER = IP de la pc en donde se encuentra el servidor
PORT = Puerto remoto SQL (Por defecto: 1433)
ME_DB = Nombre de la base de datos (Por defecto: MuOnline)
USER = Nuestro usuario SQL (Por defecto: sa)
PASS = Nuestro password SQL
El archivo editado a forma de ejemplo nos quedará de la siguiente forma:
EnableTrusted = 0
SERVER = 190.110.15.147
PORT = 1433
ME_DB = MuOnline
USER = sa
PASS = testsql
Recuerden hacer la misma edicion en ambos bloques, es decir, en el bloque [Me_MuOnline] y en el bloque [MuOnline]

Configurando la conexion remota en el mueditor

3)Si todo esta correcto, al iniciar nuestro MuEditor.exe, este se conectará a nuestra base de datos de forma remota.

MuEditor funcionando de forma remota

Para una mayor seguridad, recomendamos que en la configuración del firewall, modifiquen el "Ambito" para permitir que solo la IP de nuestra pc se conecte a ese puerto (Si tenemos la web alojada en un webhosting, tambien debemos agregarla al listado de conexiones permitidas)
Esto evita que se puedan conectar a nuestro SQL desde una ip desconocida, de esta forma tendremos mayor seguridad.

Durante la configuración del editor remoto, nos podemos encontrar con un sin fin de problemas o errores.
Estos pueden deverse a:
a)Error básico en los datos de conexión IP-SQL-PASSWORD
b)Puerto por defecto SQL modificado o puertos ruteados
c)Puerto SQL no liberado (Regla en firewall con error de configuración)
d)Puerto abierto en modo UPD
e)Protocolo MSSQLSERVER desactivado
f)Utilizaron el ambito de "Dirección IP remota" y la ip permitida no es la actual.
g)Otros...

Backups con SQL Server 2008 R2

Bienvenidos a un nuevo tutorial, hoy aprenderemos a crear backups usando como motor de datos el SQL Server 2008.
Como siempre hemos resaltado, tener copias de seguridad de nuestra base de datos es de suma importancia ya que nos puede ayudar a recuperar nuestros datos en caso de perderlos.
¿Cuál sería la frecuencia ideal para crear backups?
La frecuencia depende básicamente del movimiento que tiene nuestro servidor, este movimiento es dado por la cantidad de usuarios que tengamos activos en el juego. Lo recomendable es hacer un backup completo al menos una vez a la semana, de esta forma en caso de restaurar la copia realizada el rollback solo afectará el avanze en esos siete días.



Para hacer un backup con el SQL Server 2008 debemos seguir estos pasos:

1)Iniciamos el SQL Server Management Studio.

Visualizando la interfaz del SQL Server 2008

2)Una vez iniciada la aplicación, logueamos con la autenticación de windows o con la del SQL mediante nuestros datos).

Visualizando la interfaz de login del SQL Server 2008

3)Ahora nos posicionamos sobre la entrada DataBases, desplegamos sus opciones y sobre la base de datos "MuOnline" (o sobre la base que deseamos realizar el backup) hacemos un clic derecho.
Seguido, seleccionamos "Tasks" y la opción "Back Up..."

Seleccionando la opcion backup

4)En nuestra nueva ventana, debemos observar el cuadro final, el llamado "Destination" para ver si tenemos cargada alguna ruta.
En el caso de que exista, le hacemos un clic izquierdo y seguido un clic en "Remove" para quitarla.

Eliminando rutas cargadas

5)Ahora, sobre el mismo cuadro, hacemos un clic en el boton "Add".
En nuestra nueva ventana, debemos seleccionar la ruta en donde alojaremos nuestro backup. Para eso hacemos un clic en [...]

Seleccionando ruta para alojar el backup

6)En nuestra nueva ventana, seleccionamos el disco/carpeta en donde alojaremos nuestra copia y debajo, en el campo "File name" le asignamos un nombre.

Seleccionando ruta y asignando un nombre al backups

7)Luego le damos "OK" a todos los dialogos y nuestro motor de datos comenzará a procesar la copia. El tiempo de demora dependerá del tamaño de nuestro base de datos.
Finalizado, veremos algo similar a lo siguiente:

Backups realizado con exito

8)Para verificar que todo este correcto, ingresamos a la ruta que hemos seleccionado en el paso 6), en mi caso fue en el disco C:\, y buscamos nuestro backup.

Visualizando la copia de seguridad

Este tutorial, fue realizado bajo el SQL Server 2008 R2 en Ingles.

Configurar el BonusManager.dat en MUEMU

Bienvenidos a un nuevo tutorial, hoy aprenderemos a configurar el archivo BonusManager.dat
En este archivo es el responsable por el evento conocido como: "HappyHour" el cual consiste en que determinado momento, se incrementa la experiencia y el drop del juego de forma automática.
El BonusManager además de aumentar la exp y drop, nos permite incrementar otros aspectos que veremos a continuación.



1)El archivo BonusManager se encuentra en la siguiente ruta: Muserver\Data\Event
El contenido del archivo, es similar al siguiente:

Visualizando la interfaz del archivo BonusManager.dat

2)Lo primero que deben identificar, siempre que se encuentran con archivos de este tipo, es la cantidad de secciones que tiene. En este caso las secciones o bloques las podemos percibir de manera muy simple, son los números que se encuentran aislados en la parte superior izquierda.
Veamos cuantas secciones tiene nuestro archivo BonusManager

Visualizando las secciones del archivo BonusManager

3)Como podemos observar, tenemos 3 secciones.
La sección 0, la sección 1 y la sección 2
¿Pero, qué significa eso?
Eso significa que al asignarle un "Nº" a una sección, debemos repetir ese mismo valor en las siguientes, de esa forma, podemos identificar una misma configuración en las demás secciones.

Comenzemos con la primera sección, la "0", esta sección es la responsable por dar inicio al evento. Analicémoslo.
Index: Nº que identificará el evento a lo largo de las siguiente secciones.
Year: Año en que iniciará el evento. *=Todos los años
Month: Mes en que iniciará el evento. *=Todos los meses
Day: Día que iniciará el evento. *=Todos los dias
DoW: Día que finaliza el evento. *=Nunca
Hour: Hora en que iniciará el evento. (Formato en 24hs)
Minute: Minuto en que iniciará el evento.
Second: Segundo en que iniciará el evento.
4)Continuemos con la siguiente sección, la "1"
En este apartado definiremos el mensaje de inicio, mensaje de finalización y la duración del evento.
Index: Como lo habiamos explicado anteriormente, aca debemos repetir el mismo valor que que hemos colocado en el campo index de la sección 0.
StartMessage: Número que identificará el mensaje para el inicio del evento, en este ejemplo será el 492 (Lo veremos en detalle a continuación).
FinalMessage: Número que identificará el mensaje para la finalización del evento, en este ejemplo será el 493 (Lo veremos en detalle a continuación).
BonusTime: Tiempo de duración del evento medidos en segundos.
Tanto el mensaje de inicio como el mensaje de finalización parten de un numéro. Ese número y mensaje deben ser definidos antes en el archivo Message.txt el cual se encuentra alojado en la siguiente ruta: Muserver\Data
Una vez abierto el archivo, nos dirigimos a la última linea, en mi caso la 491 y justo debajo agregaremos las siguientes lineas, una debajo de la otra:
492 "Y el mensaje de inicio de evento que deseas, por ejemplo: Evento ON"
493 "Y el mensaje de finalización del evento, por ejemplo: Evento OFF"
Luego, guardamos los cambios. (Presten mucha atención, el mensaje debe estar entre comillas)

Visualizando las dos lineas agregadas al archivo Message

5)Y finalmente llegamos a la última sección, la 2. Aqui podemos definir el tipo de bonus, mapa afectado, etc. Analicémoslo:
Index: Una vez más, en este campo debemos volver a colocar el mismo nº de index que hemos colocado en las anteriores secciones.
BonusIndex: Define el tipo de bonus:
0= Incrementa la experiencia del servidor en adicional de porcentaje
1= Incrementa la master experiencia del servidor en adicional de porcentaje
2= Incrementa el drop de items del servidor en adicional de porcentaje
3= Incrementa la posibilidad de aumentar el drop de items del archivo "ItemDrop.txt" (x/1000000)
4= Incrementa la posibilidad de aumentar el drop excelent. (x/1000000)
5= Incrementa la posibilidad de aumentar el drop ancient. (x/1000000)
6= Aumenta la cantidad de GoblinPoints
7= Aumenta la cantidad de Resets
8= Aumenta la cantidad de MasterResets
BonusValue_AL0: Valor que incide sobre el BonuxIndex seleccionado. Solo afecta a las cuentas FREE
BonusValue_AL1: Valor que incide sobre el BonuxIndex seleccionado. Solo afecta a las cuentas VIP 1
BonusValue_AL2: Valor que incide sobre el BonuxIndex seleccionado. Solo afecta a las cuentas VIP 2
BonusValue_AL3: Valor que incide sobre el BonuxIndex seleccionado. Solo afecta a las cuentas VIP 3
ItemIndex: Número de ItemIndex al que será aplicado el evento. Si deseamos que se aplique a cualquier item, ponemos el valor -1
Sino recuerdas como calcular el ItemIndex puedes verlo haciendo Clic Aqui
ItemLevel: Nivel del item al que será aplicado el evento.
MapNumber: Número de mapa en donde se transcurrirá el evento. Si deseamos que se realizé en cualquier mapa, ponemos el valor -1
Sino recuerdas el número de cada mapa puedes verlo haciendo Clic Aqui
MonsterClass: Número de monster al que será aplicado el evento.
Sino recuerdas el número de cada monster puedes verlo haciendo Clic Aqui
MonsterLevelMin: Nivel mínimo que deberá tener el monster para que se aplique el evento.
Para ver el nivel del monster, deberán hacerlo sobre el archivo monster.txt
MonsterLevelMax: Nivel máximo que deberá tener el monster para que se aplique el evento.
Para ver el nivel del monster, podrán hacerlo sobre el archivo monster.txt
6)Ahora veamos todo junto en un ejemplo:
Supongamos que deseamos configurar el BonusManager de la siguiente manera:
En la sección 0, en donde definimos los horarios, queremos que el bonus inicie todos los años, días, meses pero queremos que sea tres veces al día de la siguiente forma:
a)A las 17:30 hs
b)A las 19:30 hs
c)A las 21:30 hs
Como sabran, solo podemos configurar un horario por linea, entonces lo que haremos será agregar tres lineas bajo el mismo index, en este ejemplo, nuestro index será el nº 0
La primera sección configurada nos quedará asi:

Visualizando la seccion 0

7)Continuemos con la sección 1, aca definimos mensaje de inicio, mensaje de finalización y duración del evento.
En este ejemplo usaremos el mensaje "492" y "493" el cual ya hemos visto anteriormente.
La duración del evento será de 45 minutos, entonces hacemos 45*60 = 2700 (ya que debemos calcular el tiempo en segundos)
La sección 1 configurada nos quedará asi:

Visualizando la seccion 1

8)Y finalmente llegamos a la última sección, la 2. Aqui definimos, como ya hemos visto, el bonus que tendrá nuestro evento entre otras cosas.
El responsable del bonus es el "BonusIndex"
Para este ejemplo, usaremos el BonusIndex=0, es decir, el que "Incrementa la experiencia del servidor en adicional de porcentaje" y usaremos un BonusValue_AL0=100, de esta forma, aumentaremos la exp. en 100% a todos los usuarios FREE del servidor.
Adicionalmente, el evento transcurrirá en cualquier mapa, bajo cualquier monsters, etc...
La sección 2 configurada nos quedará asi:

Visualizando la seccion 2

9)Ahora verifiquemos los resultados. Primero veamos la exp. antes del evento:

Visualizando la experiencia dentro del juego con el evento off

10)Como podemos observar, tenemos dos valores de experiencia recibida antes del evento (En el spot teniamos 2 monsters diferentes)
Exp= 4750
Exp= 5160
Si recuerdan, nosotros hemos usado el BonusValue_AL0=100, eso significa que aumentamos en 100% la exp. cuando el evento comienza.
Presten atención a ese detalle: "el 100" es porcentaje, no es +100 sino +100% (Lo que matemáticamente hablando no es lo mismo)
Haciendo los cálculos obtenemos lo siguiente:
Exp base= 4750 + 100% = 9500
Exp base= 5160 + 100% = 10320
Veamos que sucede con la experiencia con el evento activo:

Visualizando la experiencia dentro del juego con el evento on

Y efectivamente, al iniciar el evento la experiencia del juego aumenta en 100%

-Información adicional:
*Para que el bonusmanager funcione, se debe activar previamente en el archivo GameServerInfo - Event.dat el cual se encuentra en la ruta: Muserver\GameServer\DATA
La linea que activa el evento es la siguiente:
;==================================================
; Bonus Manager Settings
;==================================================
BonusManagerSwitch = 1
1=Activado
0=Desactivado

*No usen reload cuando modifiquen el horario, ya que muchas veces no lo toma, deberán reiniciar el server.
*Como hemos podido observar, podemos poner varias lineas en una misma sección con el mismo index, como por ejemplo poner varios horarios bajo el mismo nº index.

Configurar el MapManager.txt en MUEMU

Bienvenidos a un nuevo tutorial, hoy veremos como configurar el archivo MapManager.txt el cual podemos encontrar en los files MUEMU en la siguiente ruta: Muserver\Data
¿Pero, para sirve este archivo y que podemos configurar en él?

El MapManager.txt nos permite personalizar varias características como la experiencia, dropexc, dropAcc, etc en cada mapa del juego, es decir, podemos realizar configuraciones de manera independiente.



1)Lo primero que haremos, será abrir el archivo para visualizar su contenido:

Visualizando la interfaz del archivo MapManager.txt

2)Ahora, analicémoslo.
Index: Hace referencia al Nº del mapa, sino recuerdas que número representa cada mapa, pueden revisar nuestro tutorial haciendo Clic Aqui

NonPK: Nos permite configurar la característica del mapa en referencia al PVP.
*=Configuración General
0=PVP Activado
1=PVP Desactivado
2=PVP activado + Pk desactivado (El personaje no se convierte en PK)

ViewRange: Rango de visión (Este valor no está relacionado al zoom de la cámara, sino al rango de visión que tendrá el personaje en referencia a un objeto, lo explicaremos en detalles después)

ExperienceRate: Desde aqui podremos aumentar, mantener o disminuir la experiencia en determinado mapa.
100 = Mantiene el valor de la experiencia ya establecida en el servidor
200 = Dobla el valor de la experiencia
300 = Triplica el valor de la experiencia
50 = Reduce a la mitad la experiencia del servidor

ItemDropRate: Valor referente al drop de items. x/1000000

ExcItemDropRate: Valor referente al drop de items excelentes. x/1000000

SetItemDropRate: Valor referente al drop de items ancient. x/1000000

SocketItemDrop: Configuración referente al drop de items Sokets. 0=Deshabilitado, 1=Habilitado.

HelperEnable: Configuración referente al MuHelper. 0=Deshabilitado, 1=Habilitado

GensBattle: Convierte el mapa en Gens Battle. 0=Mapa normal, 1=Gens Battle Zone.

Comment: Apartado de referencias.

2)Recuerden: estas configuraciones solo afectan al mapa que hemos colocado en el campo inicial.
Lo que veremos ahora será el tema que dejamos pendiente respecto al "ViewRange", como ya hemos explicado, no hace referencia al zoom de la camara, sino a la distancia que le permite "ver" a nuestro personaje.
Para entenderlo mejor, veamos esto en un ejemplo, configuraremos al mapa lorencia de la siguiente forma:
0 * 20 100 100 1000 0 0 1 0 //Lorencia
En donde el valor 20 hace referencia a la columna "ViewRange"

Visualizando la configuracion de la columna ViewRange

3)Ahora veremos de que se trata esta configuración y como efecta al juego.

Visualizando la posicion de los personajes dentro del juego

4)Como podemos observar el personaje "test" se encuentra en la posicion X=152,Y=128 y el personaje llamado "mututorial" se encuentra en la posición X=152, Y=127

Lo que haremos ahora, será mover al personaje "mututorial" 20 pasos, es decir, X+20
Entonces, si la posición inicial es X=152 y a este le sumamos 20, el resultado final de ecuación sería X=172

Visualizando el personaje en la posicion x 172

5)Al configurar el ViewRange con el valor 20 significa que los personajes podrán verse si las distancias son menores o iguales al valor de la variable (En este caso, ViewRange=20, esto cuenta tanto en X como en Y).
Pero que pasa si nos movemos 21 posiciones, es decir, x=173 (Un valor a más del definido en la variable).
Veamos el resultado:

Visualizando el personaje en la posicion x 173

6)Efectivamente, el personaje "Mututorial" ya no visualiza al personaje "test".
De eso se trata el ViewRange, y no solo afecta el rango de visión entre personajes, sino que tambien afecta a diversos objetos como NPCs, monsters, etc...

No lo olviden, esta configuración afecta tanto a la distancia X como a la distancia Y, sumando o restando, es decir, tomamos un punto neutro y de ahi establecemos las distancias.

Editar WCoinC, WCoinP y GoblinPoint en MUEMU

Bienvenidos a un nuevo tutorial, hoy aprenderemos a editar WCoinC, WCoinP y GoblinPoint mediante una query en nuestra base de datos utilizando files MUEMU.
Cabe mencionar que este tutorial será realizado sobre el motor de datos SQL Server 2008 R2, si bien no abrá problema con ejecutar la consulta en otro tipo de SQL, hacemos esta mención ya que luego tenemos consultas sobre la interfaz del programa en referencia al que usa cada uno de ustedes.
Por otra parte, si bien existen programas que nos pueden permitir realizar esta tarea de forma sencilla, siempre es bueno tener una segunda opción y de paso, aprender un poco un más.



1)Lo primero que haremos será iniciar nuestro SQL Server Management Studio y hacemos un clic en "Connect" (En este ejemplo haremos la autenticación mediante: Windows Authentication)

Visualizando la interfaz del SQL Server 2008

2)El siguiente paso será hacer un clic en "New Query"

Visualizando la interfaz del SQL Server 2008

3)Ahora, del lado derecho del SQL pegamos la siguiente sentencia:
Use MuOnline
update cashshopdata set WCoinC=WCoinC+'0',WCoinP=WCoinP+'0',GoblinPoint=GoblinPoint+'0' where AccountID='Login'
Visualizando la query en el SQL Server 2008

4)Lo que debemos hacer ahora es modificar en la sentencia los valores 0 por los deseados y la palabra "Login" por el ID de la cuenta a editar.
En el caso que solo tengamos la intención de agregar por ejempo WcoinP, modificamos solo ese valor y dejamos en 0 los demas valores

Entonces, supongamos que deseamos editarle a la cuenta "test01" 500 WcoinC y 500 WcoinP, la sentencia final sería la siguiente:
Use MuOnline
update cashshopdata set WCoinC=WCoinC+'500',WCoinP=WCoinP+'500',GoblinPoint=GoblinPoint+'0' where AccountID='test01'
Para actualizar la base de datos luego de nuestra configuración apretamos el boton F5 o hacemos un clic en "Execute"
Atención: si al momento de ejecutar la sentencia no les aparece el mensaje "1 row(s) affected" eso significa que el id o login colocado no existe en la base de la tabla cashshopdata.

Ejecutando la sentencia en el SQL Server 2008

Si todo esta correcto, la cuenta recibirá los puntos establecidos en la sentencia.
De manera adicional, en el caso en que lo que deseamos es quitar o restar puntos, lo que haremos será "sumar un valor negativo", ejemplo: supongamos que deseamos restarle a la cuenta "test01" 150 GoblinPoint, la sentencia seria la siguiente
Use MuOnline
update cashshopdata set WCoinC=WCoinC+'0',WCoinP=WCoinP+'0',GoblinPoint=GoblinPoint+'-150' where AccountID='test01'
Para finalizar, presten mucho atención a la hora de ejecutar cualquier tipo de sentencias, ya que muchas veces nos podemos encontrar en la red con cosas asi: [... WCoinP='0', WCoinC='0',GoblinPoint='0' ...] esto tambien es válido, pero cuidado, este tipo de sentencias hace directamente un seteo de la columna y no contempla el valor que ya tenemos definido.



Para ejemplificar lo anterior supongamos que tenemos una cuenta que tiene 700 WcoinP y deseamos sumarle a ese valor 100 mas, la sentencia que podemos llegar a encontrarnos sería:
Use MuOnline
update cashshopdata set WCoinC='0',WCoinP='100',GoblinPoint='0' where AccountID=''
El error en este caso será que estaremos dando los 100 puntos pero borrando los 700 puntos que tenía la cuenta previamente, es por eso que la sentencia debe ser WCoinP=WCoinP+'100', de esta forma sumamos al valor que ya tenemos los 100 puntos que deseamos agregar, dando como resultado 800 como puntos finales.