Custom Monster en MUEMU [Parte I]

Bienvenidos a un nuevo tutorial, hoy veremos veremos la primera parte de la configuración del Custom Monster en los files MUEMU.
Este archivo nos permite hacer diversas cosas, como por ejemplo: crear un evento (Boss Atrack), premiar con WCoinC/WCoinP/GoblinPoint/etc al matar un determinado monster en forma de monospot/spot, etc

En esta primera parte, veremos algo sencillo, tomaremos un monster X, le modificaremos sus propiedades, y al matarlo tendremos un aviso global y recompensa del mismo.
Entonces comenzemos:



1)Lo primero que debemos hacer es definir algun monster del juego que queremos usar para este nuevo evento.
A modo ejemplo nosotros lo haremos con el monster "Aegis", pero lo importante no es el nombre del monster si su ID, en este caso el 147
Recuerden que pueden saber el ID de cada monster ingresando al archivo monster.txt alojado en Muserver\Data\Monster

Visualizando el id del monster en el archivo monster.txt

2)Una vez que tenemos el ID del monster, ingresamos a la carpeta Muserver\data y abrimos el archivo llamado Message.txt
Una vez dentro del archivo nos posicionamos sobre la última línea (Arriba del End) y observamos cual es el número que acompaña el index, le sumamos 1 y lo escribimos debajo.
Ejemplo: La última línea (arriba del end) en este ejemplo es la 491, entonces escribiré debajo 492, y entre comillas, escribimos el mensaje que queremos que aparezca a la hora de matar el monster, por ejemplo "%s elimino a Aegis" (El "%s" es la variable que imprime el nombre del jugador, no es obligatorio agregarla)

Visualizando el id del monster en el archivo monster.txt

3)Ahora abrimos al archivo CustomMonster.txt alojado en la siguiente ruta: Muserver\Data\Custom e iremos completando las columnas guiandonos con la siguiente explicación:
Index:Número o ID del monster (Aca debemos agregar el nº que hemos ingresado en el paso 1), en este ejemplo sería el 147)
MapNumber: Número de mapa en donde estará nuestro monster.(En este ejemplo hemos seleccionado al mapa 10, es decir, Icarus. Sino recuerdas los nº de los mapas puedes revisar en nuestros tutoriales)
MaxLife: Valor máximo de vida que tendrá nuestro monster.
DamageMin: Valor referente al daño minimo
DamageMax: Valor referente al daño máximo
Defense: Valor referente a la defensa
AttackRate: % de ataque
DefenseRate: % de defensa
ExperienceRate: % de experiencia
KillMessage: Número del mensaje que aparecerá al matar el monster. (Aca debemos agregar el nº que hemos ingresado en el paso 2), en este ejemplo sería el 492)
InfoMessage: Podemos agregar el mismo número que en Kill Message ya que esta columna se usa para anunciar su aparición pero en este caso no lo veremos sino en el próximo tutorial en donde haremos esto mismo pero en forma de evento o invación.
RewardValue1: Recomenpensa 1: cantidad de GloblinPoints que recibirá al matar el monster.
RewardValue2: Recomenpensa 2: cantidad de GloblinPoints que recibirá al matar el monster.
*Si lo desean, poremos usar el propio archivo monster.txt para orientarnos en algunos valores como ataque, defensa, etc.
El archivo editado en nuestro caso, nos quedará asi:

Visualizando CustomMonster ya editado

4)Finalmente, debemos agregar el monster al archivo monstersetbase.txt el cual se aloja en Muserver\Data\Monster

Visualizando el monstersetbase ya editado con los parametros

5)Reinciamos el servidor y probamos.
El monster debe aparecer en las coordenadas indicadas en el archivo monstersetbase.txt

Visualizando el monster Aegis

Como podemos ver, al matar el monster 147 aparecio el mensaje y obtuvimos nuestro premio.
En este caso el premio fue 100 GloblinPoints pero podemos cambiarlo por otro premio como por ejemplo: WcoinC.
Para eso tenemos que modificar el procedimiento almacenado dbo.WZ_CustomMonsterReward en la linea del UPDATE.

Para culminar con esta primera parte, tengamos en cuenta que ese monster se regenera en el tiempo que tengamos configurado en el archivo monster. Caso que modifiquemos el tiempo de regeneración tambien afectará otros spots que tengamos con ese mismo mob.

Tengan en cuenta que nosotros seleccionamos un monster típico del mapa Kalima como lo es; Aegis, y lo pusimos en el mapa Icarus, ya que si hubiesemos seleccionado el mismo mapa Kalima, los spots que tengamos creados con ese mob tambien participarían del evento.

Entonces, como consejo, si seleccionan por ejemplo un monster de Tarkan, no utilizen como mapa del evento al mismo Tarkan, porque sino deberán quitar todos los spots de ese mapa que tenga el mismo index del mob, por eso la recomendación es utilizar un mapa diferente a donde comunmente se encuentran dicho mob.

Configurar el EventItemBag en MUEMU

Bienvenidos a un nuevo tutorial, hoy aprenderemos a modificar los EventItemBag en los files MUEMU.
Pero ¿Qué son los EventItemBag?
Los EventItemBag en realidad es una carpeta, la cual contiene variados archivos .txt en donde cada uno de ellos reprensenta el drop/premios/etc de un evento o box.

La configuración de estos EventItemBag son muy similares entonces haremos este tutoriales tomando uno de ellos al azar.
Talvez por ser uno de los mas conocidos, lo haremos con el 011 - Box of Kundun 5.txt



1)Entonces, lo primero que haremos será ingresar a Muserver\Data\EventItemBag y abrimos el archivo llamado 011 - Box of Kundun 5.txt

Visualizando la carpeta  EventItemBag

2)Analicemos su contenido:
Comenzemos con el primer bloque, el 0
EventName: Nombre referente al evento/box/etc (Variable no editable)
DropZen: Valor numérico que representa la cantidad de zen a dropear.
ItemDropRate: Porcentaje referente al drop de un item x/100.
ItemDropCount: Cantidad de items que dropeará
SetItemDropRate: Porcentaje referente al drop ancient x/10000 (El item no necesita estar en la listado del segundo bloque)
ItemDropType: 0=Utiliza la configuración de adicional de los items que se encuentran en el bloque dos, 1= hace variar el adicional del item de forma ramdon
Fireworks: Junto al drop tambien será dropeado fuegos artificiales (1=si, 0=no)
Hay mucha contradicción en la opcion ItemDropType, pero basados en los MUEMU originales los resultados fueron los detallados. Esta opción no hace un random en las opción excelent, de echo esta variación la realiza con la variable en 0 o en 1.
Tampoco tiene relación a los items ancient, ya que este valor lo controla la variable SetItemDropRate y trabaja de forma similar al ItemDropRate sobre el zen.

Visualizando las kundon

3)Ahora vamos a analizar el bloque número 1
Section: grupo al que pertenece el item
Type: posición en la que se encuentra el item
MinLevel: nivel mínimo con el que podrá caer el item
MaxLevel: nivel máximo con el que podrá caer el item
Skill: 1= si, 0=no
Luck: 1= si, 0=no
Option: Adicional de defensa (1=+4,2=+8,3=+12,4=+16,5=+20,6=+24,7=+28)
*Para que esta configuración no sea ramdon es necesario que el ItemDropType sea igual a 0
Excellent: Cantidad de opciones excellents que podrá tener un item (0-7)
*En este caso no definimos la opc. exc sino la cantidad de ellas.
Visualizando el bloque dos

4)Y finalmente tenemos la posibilidad de configurar que los items caigan con opc. sockets o ancient.
Para esto debemos crear un nuevo bloque, el 2.
Para crearlo copiamos las siguientes lineas y las pegamos debajo el "end" del bloque 1
2
//Section Type MinLevel MaxLevel Skill Luck Option Excellent SetOption SocketOption

end
Como pueden observar, se agregan dos nuevas opciones, analicémolas:
SetOption: 1=Habilita el item ancident, 0=Desactiva el item ancident
SocketOption: 0=Desactiva el socket del item, 1=Libera 1 slot, 2=Libera 2 slots, 3=Libera 3 slots, 4=Libera 4 slots, 5=Libera 5 slots
Bloque dos MUEMU

Aunque estas configuraciones no siempre responden de la forma deseada, recomendamos realizar nuestros propios test antes de hacerlas efectivas dentro del juego.
Recuerden realizar un backups previo a las modificaciones, ya que cualquier error en este tipo de configuración podrá generar inestabilidad al servidor (Crash)

Dominio y WebHosting

Bienvenidos a un nuevo tutorial, hoy veremos un tema relacionado a definiciones.
La idea de este tutorial es aclarar terminología de forma tal que seamos capaces de diferenciar entre: "Dominio" y "Webhosting"

En tutoriales anteriores hemos hablado un poco sobre esto, pero la idea es aclarar y ejemplicar estos dos conceptos con el fin de no mezclarlos.

La grande confunción, se dá muchas veces entre lo que es el "Dominio" y lo que es el "Webhosting"



¿Qué es el dominio?
Para explicarlo de una forma sencilla, un dominio es una dirección que al escribirla en nuestro navegador, nos lleva a un destino (Atraves de los DNS), conocido como: sitio web.

¿Qué es el Webhosting?
Es una fracción de disco en la que podemos alojar diversos archivos. Esta fracción de disco corre bajo un sistema windows/linux en donde puedes instalar tu página web MuOnline.

Sabiendo que es cada término, veamos lo siguiente:
1)¿Podemos tener un dominio sin tener un webhosting?
La respuesta es: si. Pero aca debemos pensar lo siguiente, si el dominio es una dirección la cual nos lleva a un destino ¿Cuál será ese destino?
Hagamos una analogía para responder esto, pensemos al dominio como la dirección en donde se encuentra nuestra casa, y pensemos a nuestra casa como el webhosting.
Si yo voy a la dirección indicada lo que sucederá será que no me encontraré con nada, porque la casa no existe aunque la dirección este correcta.

2)¿Podemos tener un webhosting sin tener un dominio?
La respuesta es: si. Y volviendo a usar la misma analogía, ahora lo que tenemos es la casa pero no tenemos la dirección para encontrarla. La casa existe; es nuestro webhosting, pero como vamos a llegar a ella sino tenemos la dirección para encontrarla. (Aca debemos hacer una salvación, aunque el webhosting no tenga un dominio se podrá acceder por medio de la IP)

Dominio y Webhosting son términos complementares, generalmente van juntos porque uno requiere del otro para el correcto funcionamiento.

3)¿Qué son dominios y webhosting free?
Cuando hablamos de dominios, generalmente se nos viene a la cabeza .com pero existen otros tipos de dominios, denominados FREE (Gratuitos) como son lo comunmente usados: .sytes.net, .servegame.com , zapto.org
Y cuando hablamos de webhosting gratuitos nos referimos a la utilización de nuestra propia PC bajo la aplicación XAMPP/APACHE, IIS, etc.

4)¿Podemos tener un dominio .com en un webhosting free?
La respuesta es: Si.
Pero cuidado, como el webhosting es free, es decir, será nuestra propia PC y lo mas probable es que tengamos una ip dinámica, vamos a tener muchos problemas para direccionar nuestro .com a nuestra ip.
En este caso, seguramente requiera de alguna app. que sea capaz de delegar los DNS (Como los que ofrece DynDNS o el propio y popular NoIP)

5)¿Podemos tener un dominio free en un webhosting pago?
La respues es: Si.
En este caso, la tarea es más sencilla porque nuestro webhosting tendrá una ip estática lo que facilitará la configuración desde el panel de nuestro dominio.

6)¿Cómo se adquiere un dominio pago?
Aca debemos tener en cuenta el concepto "adquirir", "comprar", etc... los dominios se renuevan y se le da prioridad de renovación a su actual dueño.
Hoy en día el tiempo máximo de renovación es 10 años, y el minimo es 1 año.
Siempre debemos estar atentos a estos tiempos, ya que si olvidamos de renovar el dominio podemos estar frente a un gran problema si nuestra intención era conservarlo.
Tambien esta la situación inversa, en donde configuramos la renovación automática y dejamos seteados nuestros datos de la tarjeta de crédito. En este caso, nuestro dominio se renovará sin consulta y el débito tambien asi lo será aunque nuestra intención no lo sea.

7)¿Los webhosting pagos tienen la misma metodología que los dominios en cuanto a la renovación?
No, los webhosting son mas flexibles y se alquilan por el tiempo mínimo de 1 mes y el tiempo máximo que puedan acordar con la empresa proveedora.
Lo vencimientos tambien son tema flexible ya que puedes solicitar prórroga para efectuar el pago.

8)¿Que diferencias hay entre un dominio gratuito y un dominio pago?
Son muchas las diferencias, mas allá que uno es pago y el otro es gratuito existen una seríe de tips:
a)La facilidad de recordar la dirección de un dominio pago sobre un dominio gratuito.
b)Posibilidad de tener un correo electrónico corporativo.
c)Da un aspecto profesional a nuestro sitio.
d)Ayuda al posicionamiento de nuestro sitio en los buscadores.

9)¿Que diferencias hay entre un webhosting gratuito y un webhosting pago?
Al igual que lo comentado con los dominios, tambien existen algunos tips que los diferencian:
a)No depender de nuestro sistema para alojar nuestro sitio web (Dado por el consumo de memoria de la aplicación)
b)Velocidad de transferencia superior a la que podemos tener con nuestra conexión.
c)Seguridad, en todos los aspectos (Ataques DOS, DDOS, vulneabilidades, etc)
*Cuidado, cuando hablamos de vulneabilidad no nos referimos a que nuestra página web es más segura cuando está en un webhosting pago que cuando está en un hosting gratuito, es exactamente la misma, si nuestra web es inyectable, lo será independientemente en donde la alojemos.

10)¿Qué es lo que se recomienda?
Si van a optar por un webhosting Free, es decir, usar nuestra propia pc, recomendamos XAMPP o IIS
Si van a optar por un dominio Free, recomedamos NoIP
Si van a optar por un dominio pago y webhosting Free, recomendamos adquirir el dominio pago en algun sitio que cuente con soporte para gestionar DNS con ips dinámicas (Actualmente NoIP ofrece este servicio)
Si va a optar por un hosting pago y un dominio pago, adquieran todo junto en la misma empresa, no lo hagan por separado ya que se evitan el translado del dominio o el direccionamiento del mismo.

Dominio y WebHosting, parecen ser la misma cosa y apesar de que no lo sean, siempre van juntos de la mano ya que en donde esta uno, tendremos seguramente la presencia del otro.

Eliminar logs mediante un .bat

Bienvenidos a un nuevo tutorial, hoy aprederemos a eliminar los logs o archivos creados por las aplicaciones de nuestro servidor Mu Online.
Para quien no lo sabe, los logs son "Registros" que crean nuestras aplicaciones (Siempre y cuando las tengamos habilitadas)
Generalmente estos registros se guardan en un archivo .txt y dentro se almacena información relevante en dos grandes aspectos:
a)Información que detalla lo sucedido dentro del juego, en relación a los personajes, como trades, posts, etc
b)Información que detalla lo sucedio con la aplicación, como errores, conexiones, etc.

Si estos archivos guardan información relevante o importante ¿Por que deberíamos eliminarlos?
El sentido de este tutorial no es eliminar la información, justamente, estamos haciendo mención a la importancia del contenido, pero como ya hemos dicho, estas informaciones se guarda en espacios físicos en donde se aloja el servidor y con el tiempo estos archivos comienzan a representar un grande porcentaje de nuestro espacio.



Esta inofensiva práctica (La de guardar y acumular logs o registros) puede convertirse en una verdadera pesadilla con varias consecuencias.
Veamos un ejemplo concreto de lo que puede llegar a suceder:
Supongamos que tenemos un servidor corriendo con aprox. 50 personajes online y por esas casualidades (O mejor dicho: un descuido en el área de mantenimiento del servidor) nos quedamos sin espacio en el disco

¿Qué creen que sería lo peor que puede suceder?
Han escuchado hablar alguna vez de la "Memoria virtual" o "Paginación"; sin entrar en detalles técnicos para no extendernos, cuando nuestro sistema no dispone de suficiente memoria ram, esta "ocupa" espacio físico de nuestro disco para "emularla", al no tener espacio suficiente ni memoria ram, el sistema queda totalmente incapacitado de procesar datos y aca entramos en primer grande problema, consecuencias: varias.

¿Y que sucede con el servidor MuOnline?
Si nos quedamos sin espacio en disco, los avances que realizen nuestros jugadores no serán almacenados, porque toda esa información que realiza cada personaje la graba nuestro servidor en la base de datos.
Esa información son datos físicos, los cuales no se destruyen cuando un personaje sale del juego, sino al contrario, se guardan en las diferentes tablas y columnas de nuestro SQL.
Al no tener espacio, estos datos se perderán y como consecuencia todos los personajes entrarán en un bucle infinito de rollback hasta que volvamos a disponer de espacio nuevamente. Consecuencias: varias.

Estos dos casos hipotéticos son algunos de los escenarios de todo lo que puede llegar a suceder, pero existen un sin fin más.

1)Para evitar esto, necesitamos ejecutar "tareas de mantenimiento" (Semanal, mensual, etc, el tiempo dependerá de nuestro servidor y de las limitaciones de nuestro sistema)
Una de estas tareas es la eliminación de Logs o registros (Nuevamente, como hemos dicho anteriormiente, esta es información importante por lo que antes de eliminar suban el contenido a la nube o pasen estos registros a un disco con mayor capacidad y solo eliminen esta información cuando esten seguros que ya no la necesitarán.)

Estos logs o registros se guardan generalmente en carpetas llamadas "Logs" las cuales podemos encontrar dentro de cada aplicación en la carpeta Muserver, como por ejemplo las siguientes:
Muserver\GameServer\LOG
Muserver\ConnectServer\LOG
Muserver\DataServer\LOG
Las rutas de estos archivos varian dependiendo los files que estemos usando, ya sean Titan Tech, MuEMU, IGCN, etc.

Visualizando logs en la carpeta Muserver logs

2)Eliminar esos archivos de forma manual, es una tarea sencilla ya que podemos usar la combinación de teclas "Control+E" => "Supr" => "Enter" (Atención, recuerden que esta forma de eliminación no libera espacio en disco, ya que al hacer esto, enviamos el contenido a la papelera de reciclaje)
Para eliminar un archivo sin pasar por la papelera de reciclaje, debemos precionar la tecla "Shift" antes de precionar la tecla "Supr"
Como ya lo hemos dicho, es una tarea muy sencilla pero, en algunos files nos encontramos con lo siguiente:

Visualizando las carpetas con logs

3)Como podemos observar son muchas carpetas, y por cada una de ellas deberemos ingresar y eliminar los registros, luego repertir este procedimiento en todas las carpetas del juego, entonces lo que parecia una tarea sencilla, se convierte en una gran demanda de tiempo.(Recuerden que los mantenimientos se deben realizan con el servidor OFFLINE)
Entonces lo podemos hacer para simplificar esta tarea, es por ejemplo crear un archivo .bat que realize esto de forma rápida y sencilla.

Para esto, creamos un Documento de texto (Puede ser con el "Bloc de notas") le ponen el nombre que desean y luego de creado lo abrimos.
Dentro de el pegaremos lo siguiente
del C:\Muserver\GameServer\LOG /q
Analicemos su contenido:
del: Comando que nos permitira borrar/suprimer los archivos de la carpeta Logs ejecutado en .bat
C:\Muserver\GameServer\LOG: Ruta del archivo en donde se encuentras los archivos .txt a eliminar
/q: Evitamos la confirmación de eliminación del archivo.
Luego de eso, guardamos lo cambios y modificamos la extensión del archivo original [nombre].txt por [nombre].bat
Para modificar la extensión borramos el .txt y escribimos .bat
Sino podemos cambiarle la extensión, debemos ingresar a "Panel de Control" => "Opciones de carpeta"
Luego, en nuestra nueva ventana, hacemos un clic en "Ver" y nos desplazamos hasta la opción que dice "Ocultar las extensiones de archivos para tipos de archivo conocidos"
y destildamos la opción
Luego hacemos un clic en "Aplicar" y luego en "Aceptar"

Destildando la opción para poder modificar las extensiones de archivos

4)Finalmente para poner en funcionamiento nuestro "eliminador de archivos", bastará con ejecutar el [nombre].bat

En el paso 3) solo hemos cargado una ruta de una carpeta con registros a eliminar, lógicamente la tarea de ustedes será cargar el resto de las carpetas en donde se encuentren los logs que deseamos borrar ya que como hemos dicho antes, las rutas dependen o varian de acuerdo a los files que usemos.
Supogamos que deseamos eliminar los logs de la carpeta "ConnectServer" y el server se encuentra en el disco C:\, la ruta seria la siguiente:
del C:\Muserver\GameServer\LOG /q
del C:\Muserver\ConnectServer\LOG /q
Es decir, los vamos agregando uno debajo del otro.

Tambien, si deseamos automatizar aun este proceso, podemos usar el "Programador de Tareas de Windows" el cual podemos usar para indicarle que ejecute este archivo .bat cuando nosotros deseemos sin necesidad de nuestra presencia.

Instalacion pendiente SQL 2000

Bienvenidos a un nuevo tutorial, hoy veremos un problema relacionado al proceso de instalación del SQL Server 2000
Muchas veces al intentar instalar el SQL nos encontramos con un error muy frecuente, el cual consiste en que a la hora de ejecutar el asistente nos aparece un mensaje con la siguiente leyenda:
Una instalación anterior del programa creó operaciones de archivos pendientes en el equipo de instalación. Debe reiniciar el equipo antes de ejecutar la instalación

Error de instalacion anterior pendiente en SQL 2000

Si bien, el error parece solucionarse con tan solo reiniciar el sistema, no siempre corremos con esa suerte ya que hemos comprobado que no es realmente una solución infalible y puedes estar un largo periodo intentándolo sin éxito.



Para solucionar este problema podemos seguir estos sencillos pasos:
1)Hacemos clic en el boton "Inicio" o apretamos la tecla "Windows", seguido escribimos en el cuadro de búsqueda "regedit" y le damos "Enter"
(Si nos aparecere la ventana preguntando si deseamos permitir que este programa realize cambios en nuestro sistema, simplemente hacemos un clic en SI)

Ingresando al regedit

2)Como lo que haremos será una modificación en los registros del sistema, antes de comenzar haremos un backup de los mismos, para tener una copia de seguridad en caso que cometamos algun error.
Para esto, hacemos un clic en donde dice "Archivo" y seleccionamos la opción "Exportar"
Luego seleccionamos una ruta, le damos un nombre y hacemos un clic en "Guardar"

Ingresando al regedit

3)Una vez que tenemos la copia de seguridad, volvemos a nuestra aplicación regedit y desplegaremos las opciones de la siguiente forma:
"HKEY_LOCAL_MACHINE" => "SYSTEM" => "CurrentControlSet" =>"Control"
Para desplegar las opciones, hacemos doble clic sobre el nombre de la carpeta o podemos hacer un clic sobre el triángulito que acompaña la entrada.

Visualizando

4)Ahora, dentro la carpeta "Control" debemos buscar la sub-carpeta "Session Manager" (Las sub-carpetas se organizan por orden alfabético)
Una vez que la encontramos, hacemos un sólo clic en ella (No es necesario desplegar sus opciones) y nos posicionamos del lado derecho sobre la cadena llamada "PendingFileRenameOperations", la damos clic derecho y seleccionamos la opción "Eliminar"
Luego confirmamos el mensaje de eliminación.

Eliminando la cadena PendingFileRenameOperations del regedit

5)Finalmente, sin necesidad de reiniciar el sistema, volvemos a ejecutar el instalador de nuestro SQL Server 2000

Instalando el SQL sin el error de archivos pendientes

Recuerden siempre realizar un backup antes de modificar un archivo original.
Hacemos esta mención en la mayoría de los tutoriales no para ser reiterativos, sino, para que tomen conciencia de lo importante que es esta práctica a la hora de modificar cualquier archivo.

Agregar el main.exe al DEP de Windows

Bienvenidos a un nuevo tutorial, hoy aprenderemos a agregar una aplicación a nuestro DEP de Windows.
Para quienes no conocen, la Prevención de Ejecutación de Datos o más conocido con sus siglas como DEP es un sistema de seguridad incorporado a los sistemas bajo Windows que previene la ejecución de aplicaciónes como medida de seguridad.



¿De que forma afecta esto a los servidores Mu Online?
Lo que sucede es que aveces cuando deseamos ejecutar el cliente, específicamente la aplicación main.exe esta no se ejecuta y muchas veces es debido a este bloqueo que realiza nuestro sistema de forma automática.

Para solucionar esto, lo que debemos hacer es:
1)Ingresamos a "Equipo" => "Propiedades de Sistema" => "Configuración avanzada del sistema" o "Panel de control" => "Configuración avanzada del sistema"

Visualizando la opción Configuracion avanzada del sistema en Windows

2)En nuestra nueva ventana, lo que debemos hacer es un clic en "Configuración" en la opción correspondiente a "Rendimiento"

Visualizando la opción de rendimiento

3)En nuestra nueva ventana hacemos un clic en la opción "Prevención de ejecución de datos" y luego tildamos la opción con la leyenda: "Activar DEP para todos los programas y servicios excepto los que seleccione"

Visualizando la opción DEP

4)Al tildar la leyenda anterior, se activará la opción "Agregar..." la cual nos permitirá adicionar excepciones a nuestro control de seguridad de datos.
Entonces hacemos un clic en el boton "Agregar..." y lo que nos aparecerá será una nueva ventana para buscar nuestra aplicación, en este caso, el main.exe
Luego hacemos un clic en "Aplicar" y luego en "Aceptar"

Aplicación main.exe agregada al DEP y aceptando el cuadro de dialogo

Finalmente, para que los cambios tengan efecto debemos reiniciar nuestro sistema.
Si bien, estos pasos pueden llegar a resolver nuestro problema, es posible que existan otros factores que influyan a la hora de ejecutar una aplicación y esta iniciarse.
Cuando hablamos de aplicación, recuerden que siempre hacemos referencia al main.exe (Aunque tambien se puede aplicar a cualquier otra aplicación)
Estos factores pueden ser:
a)El antivirus
b)Una error en la propia aplicación
c)Una modificación la cual puede a ver dañado el ejecutable
d)Un virus
e)Otros
a)La mayoria de los antivirus detectan a las aplicaciones relacionadas al Mu Online como virus, ya sea porque fueron encriptadas, o hasta por su funcionamiento o comportamiento, entonces lo que podemos hacer en el caso del main.exe es agregarlo como excepción.
Como la cantidad de antivirus que existen son varios y variados, veremos como hacerlo con uno de los más usados, me refiero al AVAST
Para esto, abrimos la interfaz del AVAST, en la parte superior derecha, hacemos un clic en "Menu" => "Opciones"

Opción AVAST

a.1)Ahoras, nos deslizamos hasta la opción "Exclusiones" (En opciones "General") y hacemos un clic en el boton "Examinar"

Visualizando la opción excepciones

a.2)En nuestra nueva ventana buscamos la carpeta del cliente y la tildamos.
Seguido, hacemos un clic en el boton "Aceptar" y luego en "Añadir"
Para finalizamos hacemos un clic en aceptar.

Agregando a excepcion el cliente MuOnline

b)Un error en la aplicación puede deberser a varios motivos, a veces producido en el mismo procedimiento de descarga o por una incompatiblidad de nuestro sistema, en este caso para tener seguridad que no se trate de un error durante la descarga, intentamos repetirla y para tener seguridad que no se trata de ninguna incompatiblidad, prueben la misma aplicación en varios sistemas.

c)Muchas veces modificamos el main.exe, ya sea para editar la IP, el serial o la versión y cometemos un error y terminamos dañanado la aplicación. En este caso, la solución es sencilla, eliminamos el archivo editado y volvemos a comenzar. Para tener seguridad que el error fue nuestro, podemos probar ejecutando el main.exe antes de ser modificado, ya que si abre (aunque no conecte) sin lugar a duda el error lo estamos cometiendo en el proceso de edición.
Si la aplicación de forma original tampoco abre, entonces vuelve a leer el punto b)

d)Finalmente, un virus puede dañar nuestros .exe o modificarlos sin nuestro consentimiento. Si este es el caso, podemos verificar volviendo a reemplazarlo por su original.
Una forma simple de comprobar esto, es si al momento de reemplazarlo el peso del archivo es diferente, es probable que tengamos algun virus en nuestro sistema.
Realiza un backups geneneral y utiliza algun antivirus para realizar un scanner completo del sistema.

Arma de una o dos manos en MUEMU

Bienvenidos a un nuevo tutorial, hoy aprenderemos a modificar la cantidad de manos que usa el personaje para utilizar un arma (Swords, axes, etc) en los files MUEMU

Para universalizar el concepto, vamos a definir lo que es arma de una mano y arma de dos manos ya que no siempre todos entendemos de la misma forma.
Arma de una mano: es aquella arma que será ocupada tanto en el slot arma como en el slot shield de forma simultanea. Otra característica es que este tipo de arma ocupa siempre un espacio horizontal (X=1) en el inventario/baul
Son ejemplo de arma de una mano las siguientes: Kriss, Short Sword, Rapier, Small Axe, etc...

Arma de dos manos: es aquella arma que solo podrá ser ocupada en el slot correspondiente al arma. Otra característica es que este tipo de armas ocupan siempre dos espacios horizontales (X=2) en el inventario/baul.
Son ejemplo de armas de dos manos las siguientes: Daybreak, Legendary Sword, Dark Reign Blade, Sword Dancer, Explosive Blade, etc...
De todas forma, en la descripción del item podremos identificar si se trata de un arma de una o dos manos.



1)En este primer ejemplo lo que haremos será configurar un arma de dos manos, para poder usada como arma de una sola mano.
Usaremos la Explosion Blade, la cual de forma original es una arma de dos manos.
Primero trabajaremos del lado del servidor, para eso ingresamos a la siguiente ruta: Muserver\Data\Item y abrimos el archivo llamado item.txt
Luego, nos posicionamos sobre la linea del item, en este caso, sobre el index 23 y modificaremos la variable X, la cual posee un valor 2 por 1 (Recuerdes que X es el tamaño de forma horizontal que ocupa el item, si deseas saber mas acerca de esto puedes hacer Clic Aqui)
Luego guardamos los cambios y hacemos un reaload.

Editando la columna X del item.txt

2)Nuestros siguientes pasos, serán sobre el cliente.
Pero antes de continuar necesitamos de una herramienta que nos ayudará a editar los archivos del cliente, se trata del "BmdDec.exe" la cual ya se encuentra disponible para su descarga.
Con esta aplicación podremos convertir archivos .bmd en .txt, editarlos y luego volver a convertirlos en .bmd nuevamente
Entonces, ejecutamos el .exe y como se trata de una versión Season 8, hacemos un clic en donde dice "Ex803" => "Item.bmd -> Client"
(Si desean editar el item.bmd de un cliente Season 6 MUEMU, hacemos clic en Ex603 -> Item.bmd)

Visualizando la aplicación BmdDec

3)Ahora, debemos seleccionar el archivo item_/lang/.bmd a convertir en item_/lang/.txt
En este ejemplo, lo haremos con el item_eng.bmd el cual se aloja en la siguiente ruta: Cliente MuOnline\Data\Local\Eng (Si ustedes usan otro lenguaje como el Spn o Por, deberán seleccionar el item correspondiente a la carpeta de su lenguaje)

Visualizando el item_eng.bmd

4)Si todo esta correcto, el programa cargará la ruta del archivo item_eng.bmd.
Simplemente hacemos un clic en el boton ENCRYPT/DECRYPT

Desencriptando el archivo item_eng.bmd

5)En nuestra nueva ventana, debemos seleccionar la ruta en donde deseamos guardar el archivo ya "desencriptado", es decir, en formato .txt para su edición.
Le damos un nombre y hacemos clic en donde dice "Guardar", en este ejemplo al archivo lo hemos llamado "ItemDec" y lo hemos guardado en la misma ruta que se encuentra en item_eng.bmd

Desencriptando el archivo item_eng.bmd

6)Ahora localizamos el archivo, lo abrimos y nos posicionamos sobre la linea correspondiente al item "Explosion Blade".
Ahora nos posicionamos sobre la columna TwoHand y cambiamos el valor 1 por 0 (Con este cambio le indicamos al cliente que se trata de un arma de una mano) y el otro cambio es sobre la columna X, modificando el valor 2 por 1 (De la misma forma que lo hicimos sobre el item.txt del server)
Luego de eso guardamos los cambios en el archivo.

Modificando el archivo item.txt

7)Nuestro siguiente y último paso será, encriptar nuevamente el archivo para transformalo en .bmd
Para eso volveremos a usar la misma aplicación, pero esta vez hacemos un clic en "Ex803" => "Encrypt" => item.txt(Client)

Encriptando el archivo item.txt

8)Ahora buscamos el archivo .txt que hemos editado. En nuestro caso sería el ItemDec.txt

Encriptando el archivo item.txt

9)El programa volverá a cargar nuestra ruta. Luego hacemos un clic en el boton ENCRYPT/DECRYPT

Desencriptando el archivo item_eng.bmd

10)Finalmente, el programa nos pedirá la ruta y nombre para guardar el archivo ya editado y convertido a .bmd, en este caso nosotros reemplazaremos el mismo item_eng.bmd
(Recuerden siempre realizar un backups antes de modificar un archivo, sino desean reemplazar el original le pueden poner otro nombre, hacer un copia del original y renombrar el archivo para reemplazarlo posteriormente)

Visualizando el item_eng.bmd

11)Para verificar que todo este correcto, ingresamos a juego al comprobarlo.

Visualizando los cambios dentro del juego

12)Si lo que deseamos hacer, es justamente lo contrario, es decir, que un arma de una mano sea usada por dos manos, debemos invertir los pasos.
Tomemos como ejemplo la "Sword Flameberge", ya que originalmente es un arma de una mano, lo que haremos será convertirla en arma de dos manos.
Entonces como lo hicimos anteriormente, comenzemos por el lado del server, abrimos el archivo item.txt el cual se encuentra en la siguiente ruta: Muserver\Data\Item, nos posicionamos sobre la linea del item y modificando el valor 1 de la columna X por 2.
Luego guardamos los cambios y hacemos un reaload.

Modificando la columna X del archivo item.txt

13)Al igual que en los pasos anteriores, abrimos el item_/lang/.bmd y lo convertimos en .txt
Una vez localizado nuestro archivo, lo abrimos y nos posicionamos sobre la linea correspondiente al item "Sword Flameberge".
Ahora nos posicionamos sobre la columna TwoHand y cambiamos el valor 0 por 1 (Con este cambio le indicamos al cliente que se trata de un arma de dos manos) y el otro cambio es sobre la columna X, modificando el valor 1 por 2 (De la misma forma que lo hicimos sobre el item.txt del server)
Luego de eso guardamos los cambios en el archivo.

Modificando la columna X del archivo item.bmd

14)Ahora convertimos el archivo al formato .bmd y verificamos los cambios dentro del juego
Un detalle final muy importante, si bien el tutorial finalizo, no podemos olvidarnos del editor, es decir, sino aplicamos los cambios en el editor esto ocasionará un bug del inventario/baul dado a que los espacios de los items no condicen entre Server-Cliente-Editor

Para solucionar esto de forma rápida y sencilla lo que haremos será copiar el archivo item_/lang/.bmd ya editado , y lo pegamos en nuestro escritorio. Ahora lo renombramos a simplemente item.bmd, lo volvemos a copiar y lo pegamos en la ruta del editor, la que por defecto sería: Muserver\MuEditor\Data y reemplazamos (Si no desean reemplazar el original podemos hacer una copia previa)

Visualizando los item modificando dentro del MuEditor

En tutoriales siguientes veremos que otros archivos podemos desencriptar y encriptar con esta fabulosa herramienta.

Reload desde el GameServer en MUEMU

Bienvenidos a un nuevo tutorial, hoy aprenderemos a cargar los cambios efectuados en el servidor sin necesidad de reiniciarlo.

En la mayoría de los servidores Mu Online, en la aplicación GameServer.exe existe una opción llamada RELOAD, esta opción despliega un conjunto de opciones que dependiendo de cual seleccionemos cargará los cambios sin necesidad de apagar y prender el servidor.

Veamos una imagen para saber de que se trata:

Visualizando el gameserver de los files MUEMU

Veamos para que sirve cada opción
1)Reload CashShop: esta opción recarga lo modificado en los siguientes archivos:
Muserver\Data\CashShop\CashShopPackage.txt
Muserver\Data\CashShop\CashShopProduct.txt
Muserver\GameServer\DATA\GameServerInfo - Common.dat
2)Reload ChaosMix: esta opción recarga lo modificado en los siguientes archivos:
Muserver\GameServer\DATA\GameServerInfo - ChaosMix.dat
3)Reload Character: esta opción recarga lo modificado en los siguientes archivos:
Muserver\GameServer\DATA\GameServerInfo - Character.dat
Muserver\Data\Character\DefaultClassInfo.txt
4)Reload Command: esta opción recarga lo modificado en los siguientes archivos:
Muserver\GameServer\DATA\GameServerInfo - Command.dat
5)Reload Common: esta opción recarga lo modificado en los siguientes archivos:
Muserver\GameServer\DATA\GameServerInfo - Common.dat
Muserver\Data\Effect.txt
Muserver\Data\Util\ExperienceTable.txt
Muserver\Data\Util\Filter.txt
Muserver\Data\Util\GameMaster.txt
Muserver\Data\Move\Gate.txt
Muserver\Data\MapManager.txt
Muserver\Data\MapServerInfo.txt
Muserver\Data\Message.txt
Muserver\Data\Move\Move.txt
Muserver\Data\Move\Movesummon.txt
Muserver\Data\Util\Notice.txt
Muserver\Data\Util\ResetTable.txt
6)Reload Custom: esta opción recarga lo modificado en los siguientes archivos:
Muserver\GameServer\DATA\GameServerInfo - Custom.dat
Muserver\Data\Custom [Todos los archivos contenidos en esta carpeta]
7)Reload Event: esta opción recarga lo modificado en los siguientes archivos:
Muserver\GameServer\DATA\GameServerInfo - Event.dat
Muserver\Data\Event [Todos los archivos contenidos en esta carpeta]
8)Reload EventItemBag: esta opción recarga lo modificado en los siguientes archivos:
Muserver\DATA\EventItemBagManager.txt
Muserver\Data\EventItemBag [Todos los archivos contenidos en esta carpeta]



9)Reload Hack: esta opción recarga lo modificado en los siguientes archivos:
Muserver\GameServer\DATA\GameServerInfo - Common.dat
Muserver\Data\Hack\HackPacketCheck.txt
10)Reload Item: esta opción recarga lo modificado en los siguientes archivos:
Muserver\Data\Item [Todos los archivos contenidos en esta carpeta]
11)Reload Monster: esta opción recarga lo modificado en los siguientes archivos:
Muserver\Data\Monster [Todos los archivos contenidos en esta carpeta]
12)Reload Move: esta opción recarga lo modificado en los siguientes archivos:
Muserver\Data\Move [Todos los archivos contenidos en esta carpeta]
13)Reload Quest: esta opción recarga lo modificado en los siguientes archivos:
Muserver\Data\Quest [Todos los archivos contenidos en esta carpeta]
Muserver\Data\QuestWorld [Todos los archivos contenidos en esta carpeta]
14)Reload Shop: esta opción recarga lo modificado en los siguientes archivos:
Muserver\Data\shop [Todos los archivos contenidos en esta carpeta]
Muserver\Data\ShopManager.txt
15)Reload Skill: esta opción recarga lo modificado en los siguientes archivos:
Muserver\GameServer\DATA\GameServerInfo - Skill.dat
Muserver\GameServer\DATA\Skill\MasterSkillTree.txt
Muserver\GameServer\DATA\Skill\Skill.txt
16)Reload Util: esta opción recarga lo modificado en los siguientes archivos:
Muserver\Data\Util [Todos los archivos contenidos en esta carpeta]
No olviden lo siguiente, cuando hacemos un reload sobre las opciones de la aplicación del GameServer.exe solo afecta a las carpetas/archivos de esa misma aplicación, si modificamos un archivo contenido en la siguiente ruta: Muserver\GameServerCS\DATA es necesario que el reload sea realizado sobre el GameServer.exe pero de la carpeta GameServerCS

Editar shops en MUEMU

Bienvenidos a un nuevo tutorial, en este oportunidad veremos como editar los shops en los files MUEMU.
Si bien la edición de shops en estos files es similar a la de cualquier otro tipo de archivos hoy vamos a ver algunos aspectos adicionales.

Los shops se encuentran en la siguiente ruta Muserver\Data\Shop y cada .txt corresponde a un NPC el cual se identifica con el nombre del mismo.

Visualizando la carpeta shop en los files MUEMU

1)Abriremos uno al azar y analizaremos su contenido (Columnas)
Section= Grupo al que pertecene el item (Para entenderlo mejor puedes hacer Clic Aqui)
Type= Posición en la que se encuentra el item dentro de ese grupo (Para entenderlo mejor puedes hacer Clic Aqui)
Level= Nivel que tendrá el item (0-15)
Dur= Durabilidad del item (0-255)
Skill= Skil del item (1=Activado, 0=Desactivado)
Luck= Suerte del item (1=Activado, 0=Desactivado)
Option= Defensa adicional (0-7)
Excellent= Tipo de opción excellent que tendrá el item. (0-63)
En lo que respecta al grupo, type, level, durabilidad, skill y luck no hay mucho más que explicar ya que eso se encuentra todo detallado en los tutoriales publicados, pero en lo que respecta a option y excellent nos encontramos con valores 0-7 y 0-63 respectivamente ¿Pero que identifica cada valor?



Comenzemos con la variable option, como ya hemos lo explicitado, esta columna hace referencia al adicional de defensa que tendrá el item y los valores configurables son de 0-7
Veamos a que hace referencia cada valor:
0=+0 adicional de defensa
1=+4 adicional de defensa
2=+8 adicional de defensa
3=+12 adicional de defensa
4=+16 adicional de defensa
5=+20 adicional de defensa
6=+24 adicional de defensa
7=+28 adicional de defensa
Por otro lado la variable Excellent permite configurar las opciones excelents que tendrá nuestro item, ¿Pero qué significa de 0-63? Veasmolo
Opciones excelent en armas:
1=Increases the amount of Mana received for hunting monsters + Mana/8
2=Increases the amount of Life received for hunting monsters + Life/8
4=Increase Attack (Wizardry) speed +7
8=Increase Attack +2%
16=Increase Attack +Level/20
32=Exellent damage +10%

Opciones excelent en sets:
1=Increases the amount of Zen received for hunting monsters + 30%
2=Defense success Rate +10%
4=Reflect Damage +5%
8=Decreases Damage +4%
16=Increase Maximum Mana +4%
32=Increase Maximum Life +4%

Opciones en wings:
1=Increases Life
2=Increases Mana
4=Damage from Breaking Enemy Defense +3%
8=Increase Maximum AG
16=Increase Attack (Wizardry) Speed +5
32= No usado
Entonces, como podrán observar cada opción excellent es representanda por un valor númerico, pero aun no respondemos ¿Por qué la configuración admite valores de 0-63 si el valor máximo disponible es 32 (Salvo en la wings, ya que el valor 32 en este tipo de items no tiene uso)?

La respuesta está en que cada valor idenfica una opción por separado, pero si queremos un item que tenga todas las opciones (Full opc.) debemos sumar todos los valores: 1+2+4+8+16=63 de ahi que al colocar el valor 63 el item adquiere todas las opciones excellents.
Pero si sólo queremos que nuestro item tenga sólo tres opciones, pero tres opciones específicas ¿Cómo deberiamos configurarlo ?
La respuesta es nuevamente sumando los valores de las opciones excellents deseadas.

2)Veasmolo en un ejemplo práctico, supongamos que queremos que en el NPC se venda la "Legenday Sword" pero con las siguientes características:
Item a vender: Legendary Sword
Level: +8
Durabilidad: 80
Skill: Activado
Luck: Desactivado
Option: +16
Excellent: Tres opciones exc. que serán las siguientes:
- Increases the amount of Mana received for hunting monsters + Mana/8 +
- Increase Attack +2%
- Exellent damage +10%
Nuestro archivo configurado quedará editado la siguiente forma:

Visualizando la configuracion del shop con el items configurado

3)Y ahora verificamos los cambios dentro del juego

Visualizando las caracteristicas del items editado en el juego

Y efectivamente nuestro item aparece con las caracterísitcas configuradas, por si quedo alguna duda, en el campo Excellent se coloco el valor 41, ya que como hemos dicho, debemos sumar los valores de las opciones excellents que queremos que tenga nuestro item:
Si retomamos al ejemplo, las opciones excelents fueron las siguientes:
1 - Increases the amount of Mana received for hunting monsters + Mana/8 +
8 - Increase Attack +2%
32 - Exellent damage +10%
Las cuales sumadas dan el siguiente resultado: (1 + 8 + 32)= 41

Para finalizar, si bien existen programas que realizen este procedimiento de forma más rápida, siempre insistimos que la idea en aprender el origen de las cosas.

Personalizar el drop de los items en MUEMU

Bienvenidos a un nuevo tutorial, hoy aprenderemos a personalizar el drop en los files MUEMU.
El drop personalizado nos permite configurar con que regularidad los items pueden llegar a caer dentro del juego.

Esta configuración no es obligatoria ya que el servidor trae por default los drop establecidos, pero por medio de este complemento podemos personalizar el drop de un item específico.

Tambien podemos usar este tipo de configuración para realizar algun evento ya que podremos hacer caer un item con características especificas que los usuarios deberán buscar.



El archivo responsable de esta personalización es el: ItemDrop.txt el cual se encuentra en la siguiente ruta: Muserver\Data\Item

1)Entonces, para comenzar abrimos el archivo, y analizemos su contenido:
Index= Identificador del item (Para conocer este valor pueden hacer Clic Aqui)
Level= Nivel con el que caerá el item (De 0 a 15)
Grade= Opción excelente fija que tendrá el item (De 1 a 63)
Option0= Index de la opción del item (Relacionado al ItemDropRate.txt)
Option1= Index de la opción del item (Relacionado al ItemDropRate.txt)
Option2= Index de la opción del item (Relacionado al ItemDropRate.txt)
Option3= Index de la opción del item (Relacionado al ItemDropRate.txt)
Option4= Index de la opción del item (Relacionado al ItemDropRate.txt)
Option5= Index de la opción del item (Relacionado al ItemDropRate.txt)
Option6= Index de la opción del item (Relacionado al ItemDropRate.txt)
Duration= Duración del item en el servidor. (0=Item permanente)
*Presten atención a esto, ya que muchos confunden esta variable con la duración del item en el suelo y no se trata de eso, sino, de la duración del item en el servidor, es decir, pasado el tiempo de duración el item desaparecerá permanentemente del juego.
MapNumber= Número del mapa en donde caerá el item (-1= Cualquier mapa) (Para conocer el número de los mapas pueden hacer Clic Aqui)
MonsterClass= Número del monster que al matarlo podrá dropear el item (-1= Cualquier monster) (Para conocer el número de los monsters Clic Aqui)
MonsterLevelMin= Nivel mínimo que debe tener el monster para dropear el item (-1= Cualquier nivel)
MonsterLevelMax= Nivel máximo que debe tener el monster para dropear el item (-1= Cualquier nivel)
DropRate= Probabilidade de dropear el item al matar un monster (x/1000000)(-1= Drop máximo)
Comment= Esta columna es opcional y no modificará en nada la configuración, simplemente nos sirve para anotar el nombre del item para recordarlo
2)Comenzemos con algo sencillo, supongamos que deseamos personalizar el drop de la "Jewells of soul", y queremos que este item caiga en Aida, pero especificamente de los monsters "Forest ORC"
Nuestra configuración será la siguiente:
Index= 7182 //Es el index del item Jewell Of Soul
Level= 0 //No es necesario, ya que se trata de una jewell
Grade= 0 //No es necesario, ya que se trata de una jewell
Option0= * //No es necesario, ya que se trata de una jewell
Option1= * //No es necesario, ya que se trata de una jewell
Option2= * //No es necesario, ya que se trata de una jewell
Option3= * //No es necesario, ya que se trata de una jewell
Option4= * //No es necesario, ya que se trata de una jewell
Option5= * //No es necesario, ya que se trata de una jewell
Option6= * //No es necesario, ya que se trata de una jewell
Duration= 30 //Duración del items en segundos
MapNumber= 33 //Número correspondiente al mapa Aida
MonsterClass= 307 //Número correspondiente al monster Forest ORC
MonsterLevelMin= * //Nivel mínimo del monster, no es necesario porque lo hemos especificado
MonsterLevelMax= * //Nivel mínimo del monster, no es necesario porque lo hemos especificado
DropRate= -1 // Al ingresar el -1 colocamos el máximo % de dropeo.
Visualizando archivo itemdrop en MUEMU

3)Guardamos los cambios, hacemos un reload y verificamos.

Visualizando el drop de la jewells of soul dentro del juego

4)Efectivamente, el drop de la jewells of soul respondio a la configuración correctamente.
Ahora veamos un segundo ejemplo, pero esta vez con un item que tenga opción, por ejemplo la "Iris Armor", full opciones, que caiga en lorencia en rango de monster mínimo 0 a rango máximo 9
Index= 4132 //Es el index del item "Armor Dragon"
Level= 0 // Será el nivel de nuestro item, en este caso +0
Grade= 63 // Serán las opciones excelent que tendrá el item, en este caso lo haremos full opc.-
Option0= * //
Option1= * //
Option2= * //
Option3= * //
Option4= * //
Option5= * //
Option6= * //
Duration= 6000 //Duración del items, en este caso 10 minutos
MapNumber= 0 //Número correspondiente al mapa Lorencia
MonsterClass= * //Cualquier monsters
MonsterLevelMin= 0 //Nivel mínimo del monster
MonsterLevelMax= 9 //Nivel máximo del monster
DropRate= -1 // Al ingresar el -1 colocamos el máximo % de dropeo.
Guardamos los cambios, hacemos un reload y verificamos:

Visualizando el drop de la Armor iris dentro del juego

Y efectivamente, al matar un monster en lorencia que se encuentre en el rango este dropea nuestro item.
Recuerden, por cada drop de item que deseamos configurar, debemos agregar una nueva linea.
Tambien, si en MonsterClass colocamos *, estamos indicando que cualquier monster del juego dropeará ese item, en ese caso es recomendable establecer rangos con las variables MonsterLevelMin y MonsterLevelMax (Ya que si no lo hacemos, todos los monsters de todo el juego dropeará el item configurado), si el caso es al revés, es decir, especificamos el nº de monster en el campo MonsterClass no es necesario establecer el rango ya que los números de los monsters no se repiten, sino que cada uno tiene un valor único.

Para finalizar, la variable Duration se mide en segundos, y no esta de más recordales que 60 segundos equivale a 1 minuto y que 3600 segundos equivalen a 1 hora.

Verificar archivos mediante CRC32 en MUEMU

Bienvenidos a un nuevo tutorial, hoy aprenderemos a proteger nuestro cliente mediante la verificación CRC32 de los archivos del cliente en MUEMU.

Para entender mejor de que se trata, intentaremos explicarlo con palabras más sencillas.
Cuando ingresamos al cliente y si este usa el MHP-antihack, se ejecuta una comprobación (Mediante CRC32) de los archivos del juego tomando como contraste una lista (Checksum.List.db) alojada en nuestro MHPServer.
Si esa comprobación está correcta, el cliente iniciará, pero si en esta comprobación aparece algun problema (Dada por la modificación de algun archivo que este en lista de verificación por parte del cliente) el antihack bloqueará nuestro ingreso.

Este tipo de verificación se utiliza para evitar que archivos del cliente sean reemplazados/modificados/altereados con el simple fin de obtener alguna ventanja en el juego.

Para evitar eso, veamos el siguiente tutorial.

1)Lo primero que haremos, será crear una carpeta llamada "CRC32" en donde alojaremos todos los archivos que deseamos proteger, para quienes no tiene mucho conocimiento en este ámbito de seguridad, los archivos que recomendamos a proteger son: ah.emu, main.emu, main.exe, player.bmd entre otros, entonces copiamos esos archivos y los pegamos dentro de nuestra carpeta creada.

Visualizando los archivos agregados a la carpeta crc32

2)Nuestro siguiente paso será generar los códigos CRC32. Para esto podemos hacerlo de muchas formas, existen programas, generadores online, etc... En este ejemplo lo haremos con el propio WinRAR (Un software encargado de comprimir/descomprimir archivos) el cual la mayoria de los equipos ya lo tienen instalado.
Sino lo tienen instalado pueden descargarlo desde su sitio oficial haciendo Clic Aqui
Entonces, lo que haremos, será simplemente seleccionar todos los archivos, hacemos un clic derecho y seleccionamos la opción "Añadir a CRC32.rar"

Comprimiendo los archivos de la carpeta CRC32

3)Luego de generar nuestro archivo CRC32.rar lo abrimos y nos posicionamos sobre la última columna, la llamada CRC32 y copiamos el nombre del archivo seguido de su codigo alfanumérico (CRC32)
main.exe ---------- 514EEF6B
player.bmd -------- D25E0173
main.emu --------- 57A6C262
ah.emu ------------ 1AACD140
Comprimiendo los archivos de la carpeta CRC32

4)Nuestro siguiente paso será ingresar a la siguiente ruta: Muserver\MHPServer\Data y abrimos el archivo llamado: Checksum.List.db (Este tipo de archivos podemos abrirlo con cualquier procesador de textos, como por ejempo: notepad.exe)
Este archivo lo configuraremos de la siguiente forma:
La primera columna contendrá la ruta en donde se encuentra cada archivo y en la segunda columna debemos agregar 0x seguido del código CRC32
Recuerden que tanto la ruta como el código deben ir entre comillas.



Para completar la primera columna, no debemos tener en cuenta el nombre del cliente, sino debemos colocar nuestra ruta como si estuviesemos directamente sobre el.
Comenzemos con el primero archivo: el main.exe, entonces nuestra primera linea nos quedará asi:
"main.exe" "0x514EEF6B"
Nuestra segunda linea quedará asi:
"data/player/player.bmd" "0xD25E0173"
*Presten atención a la ruta, el archivo player.bmd no se encuentra en la raiz como el main.exe, sino que el mismo se encuentra dentro de la carpeta player contenida en la carpeta data
Nuestra tercera linea, quedará asi:
"main.emu" "0x57A6C262"
Y finalmente nuestra cuarta linea, quedará asi
"ah.emu" "0x1AACD140"
y la última linea corresponde al End que hará el cierre del código.

Visualizando el archivo Checksum.List.db ya editado

5)Finalmente ya podemos iniciar el servidor y verificar que todo funcione correctamente.
Lo que debería suceder es lo siguiente, si ingresamos con los archivos con los cuales hemos generado los CRC32, el juego debería funcionar sin problemas, pero si intentamos modificar un archivo e intentamos ingresar, el MHPServer.exe detectará el cambio de CRC32 (Ya que, cada vez que modificamos un archivo el CRC32 tambien se modifica.) y nos bloqueará el ingreso.
Veamoslo: modificaremos a modo de ejemplo el archivo player.bmd (El cual se encuentra en lista de verificación) y probaremos ingresar para ver que sucede:

Visualizando el bloqueo del antihack al ingresar al juego

Adicionalmente, si revisamos el log del antihack podemos finalmente constatar que el bloqueo del ingreso se debe a una modificación del archivo player.bmd (Recuerden que esa modificación la hemos realizado nosotros con el fin de verificar el funcionamiento del antihack.)
16:02:54 [HackDetected][][] IpAddress: ***********, HardwareId: 2CD2****-9H2D****-A46C****-D410****, DetectionType: FILE_DETECTION, CaptionName: data/player/player.bmd, ProcessName:
Recuerden que ustedes pueden colocar cualquier archivo para ser verificado.
Finalmente si agregamos el archivo item_eng.bmd al listado de verificación no quiere decir que tambien estemos protegiendo el item_spn.bmd ya que son dos archivos difentes con CRC32 diferentes en rutas diferentes.