viernes, 15 de mayo de 2009

Se revelan los primeros prototipos de Stille-RO

Stille-RO es un proyecto al que me han invitado formar parte como un core desarrollador de scripts, debugger y sobre todo la aplicación del conocimiento que tengo sobre los jobs teóricamente y gracias a Gravity Interactive que me ha dejado formar parte del Staff de Desarrollo de Sakray Server de IRO.

El día de hoy a las 05:45 de la tarde se dieron a conocer los primeros prototipos de armas publicadas bajo el archivo comparitva en el cual hacen referencia a dos servidores elementales conocidos:

    1. Rock and Ro
    2. Azteca Ro

En este archivo podemos encontrar las implementaciones que ha realizado el equipo de programación del servidor y los futuros bonos que estos tendrán, la página se actualiza automáticamente cada 5 minutos gracias a la tecnología GWT.

La inversión del tiempo y los lapsos de fechas de entregas aun se desconocen, sin embargo a mi conocer el proyecto arranca a partir del 1 de Julio del presente año, no conozco más información sobre este proyecto sin embargo hasta donde se ha evaluado se tiene un 95% de estabilidad sobre todos los jobs, usando todos los prototipos, diseños e implementaciones que he desarrollado para eAthena, confió en que todo saldrá bien.

martes, 12 de mayo de 2009

Traductor simple (Google Translator API)

Hoy desarrollaremos un traductor simple en consola de Texto, utilizando el API de Google Translator.

El entorno de desarrollo que usare esta ocasión será Blue-J (por tratarse de una aplicación de ejemplo).

Bien para ello pedimos un nuevo proyecto e iniciamos una nueva clase, yo a mi clase le he puesto saludo.java.

Ahora importamos el API del servicio de traducción de Google, para ello nos dirigimos al menú Tool –> Preferences –> dentro de la ventana preferences seleccionamos Libraries –> posteriormente ADD para agregar la librería (tendremos que buscar la ruta donde la hemos guardado).

Para facilitarme la busqueda de API’s lo que yo he hecho es una carpeta en C: con el siguiente nombre C:\JavaAPI\Google donde almaceno las api’s de Google, ya que son varias.

Bien, ahora damos en OK para finalizar la configuración, reiniciamos el IDE y continuamos editando el código.

Para incluir la libería dentro del programa lo hacemos de la siguiente manera.

import com.google.api.translate.Language;
import com.google.api.translate.Translate;

Language, es el lenguaje del texto original antes de ser traducido.
Translate: es el lenguaje al que el texto será traducido.

import com.google.api.translate.Language;
import com.google.api.translate.Translate;
import java.io.*;

public class saludo
{

public static void main (String [] args) throws IOException
{
    // variables de contexto local
    String fraseEsp, fraseFran;

    //Define el Buffer de Entrada de información.
    BufferedReader br = new BufferedReader (new InputStreamReader(System.in));
    System.out.print ("Escribe una frase: ");
    fraseEsp = br.readLine();
     try
    {
        fraseFran = Translate.translate(fraseEsp, Language.SPANISH, Language.FRENCH);
        System.out.println (fraseFran);
    }
    catch (Exception error)
    {
        System.out.println ("No se puede completar la traducción");
    }
}

}

 

Examinando el código podemos notar la siguiente línea: fraseFran = Translate.translate(fraseEsp, Language.SPANISH, Language.FRENCH);

Básicamente lo que estamos haciendo es crear un paso de parámetros a la clase Translate la cual se encargará de traducir del idioma español al idioma francés cualquier frase que escribamos, siempre y cuando esta este correctamente escrita.

Por ejemplo: Mi grupo de música favorito es lacrimosa.

 

Como puedes ver, puedes construir aplicaciones tan sencillas usando las APi’s de Google

miércoles, 6 de mayo de 2009

Ser o no ser que dilema (eAthena element weapon is not elemental)

Bueno, no entraremos en controversias, para comenzar, después de la implementación de los Battle Grounds en el emulador, se decidió cambiar el tipo de ataque que los mobs tendrían, entiéndanse sus atribuciones en las armas dando origen a que las armas ya no fueran neutrales en los mobs si no que estas no tuvieran un elemento… ¿curioso no?, es por eso que los ataques se atribuían a un elemento ¿null?, y no te podías proteger ni por reducción, ni por cartas elementales.

Mi primera teoría: Los mobs habían cambiado el ataque de acuerdo al tipo elemento que era, teóricamente estaba equivocado eso no podía ser, puesto que después de hacer una primera prueba con 110% (una manteu) a todos los elementos aun me seguían pegando.

Entonces ¿qué rayos pasa?, siguiendo con el manteu a 110% y me seguían pegando, hasta que Eureka se me ocurre llamar a un Seyren haciendo que me persiguiera.

image

¿Por qué el Spiral Pirce del Seyren me curaba?, entonces me formule, algo ha de estar cambiado. Obvio no xD… después de 150 muertes aproximadamente.

Empecé a revisar línea a línea cada parte del código del emulador (debido a que el SVN esta caído y se me hace más fácil poder comparar ahí), y Eureka de nuevo, encontré algo que me llamo la atención.

//forced neutral for monsters

 

¿Y que sucede con lo otro?, empecé a trabajar en el archivo battle.c  buscando este pedazo de código.

 

if (!skill_num && tstatus->flee2 && rand()%1000 < tstatus->flee2)
    {    //Check for Lucky Dodge
        wd.type=0x0b;
        wd.dmg_lv=ATK_LUCKY;
        if (wd.div_ < 0) wd.div_*=-1;
        return wd;
    }

    t_class = status_get_class(target);
    s_ele = s_ele_ = skill_get_ele(skill_num, skill_lv);
    if (!skill_num || s_ele == -1) { //Take weapon's element
        s_ele = sstatus->rhw.ele;
        s_ele_ = sstatus->lhw.ele;
        if (flag.arrow && sd && sd->arrow_ele)
            s_ele = sd->arrow_ele;
        if (battle_config.attack_attr_none&src->type)
            nk|=NK_NO_ELEFIX; //Weapon's element is "not elemental"
                } else if (s_ele == -2) { //Use enchantment's element
        s_ele = s_ele_ = status_get_attack_sc_element(src,sc);
    }

Como podemos ver ahí encontramos la atribución a este post //Element is not elemental, o sea que a partir de esas implementación el ataque de las armas en mob no tiene ningún elemento. ¿Pareciera?

Bueno si tu servidor es elemental, con equipo de 4 slots y tus usuarios ya se acostumbraron a “subir de nivel” de esta forma sin que los mobs los maten, editamos la siguiente línea:

  nk|=NK_NO_ELEFIX; //Weapon's element is "not elemental"

De la siguiente manera:

nk &= ~NK_NO_ELEFIX;

 

De tal forma que la nueva versión del código es:

if (!skill_num && tstatus->flee2 && rand()%1000 < tstatus->flee2)
    {    //Check for Lucky Dodge
        wd.type=0x0b;
        wd.dmg_lv=ATK_LUCKY;
        if (wd.div_ < 0) wd.div_*=-1;
        return wd;
    }

    t_class = status_get_class(target);
    s_ele = s_ele_ = skill_get_ele(skill_num, skill_lv);
    if (!skill_num || s_ele == -1) { //Take weapon's element
        s_ele = sstatus->rhw.ele;
        s_ele_ = sstatus->lhw.ele;
        if (flag.arrow && sd && sd->arrow_ele)
            s_ele = sd->arrow_ele;
        if (battle_config.attack_attr_none&src->type)
                 // Remmi Atribution Change
            nk &= ~NK_NO_ELEFIX; // Forced neutral for monster by Remmi Change
    } else if (s_ele == -2) { //Use enchantment's element
        s_ele = s_ele_ = status_get_attack_sc_element(src,sc);
    }

Y ahora todo regresa a la normalidad, con mobs que nos curan si tenemos protección o inhumanidad a un elemento.

image

Recuerda que este es un cambio de eAthena y de Gravity, por favor considera las atribuciones a las modificaciones, una motivación o felicitación no esta de más y no te hagas del derecho del código, y si algún servidor elemental de los que actualmente conozco les dice que fue invención de ellos lo de los mobs con ataque Null no es cierto >.<.

Posdata: Gracias Geraldine por ayudarme a testear el código cambiado ^^

image

martes, 5 de mayo de 2009

Acid Demostration Gadget

 

:) Hoy mostrare el resultado de una pequeña aplicación realizada con Google Web Toolkit y Java.

Se trata de un pequeño gadget hecho para iGoogle el cual si eres jugador de Ragnarok OnLine y tienes un creator te puede servir para calcular el daño que realiazas al enemigo.

Soporta máximo int y vit 999.

El script a continuación permite agregarlo a una página web o blog :)

 

<script src="http://www.gmodules.com/ig/ifr?url=http://hldteam.comli.com/expe/acido/acid.xml&amp;synd=open&amp;w=318&amp;h=124&amp;title=Acid+Demostration+Calculator+%2F+Basica&amp;border=http%3A%2F%2Fwww.gmodules.com%2Fig%2Fimages%2F&amp;output=js"></script>

Añadir a IGoogle Add to Google

Actualmente me encuentro trabajando en mejoras para esta calculadora, si alguien se interesa en ella, o algún servidor quiere la formula customs puedo contribuir para el diseño de la misma :)

Install Fest

tux
tux,
orginalmente cargado por rdiwolf.
Festival de Instalación del Software Libre en la FCA, esto es en Mérida, Yucatán México, el día sábado 16 de mayo de 2009.

Flickr

This is a test post from flickr, a fancy photo sharing thing.