¡Bienvenido a Universo Maker!
¿Es esta la primera vez que visitas el foro? Si es así te recomendamos que te registres para tener completo acceso a todas las áreas y secciones del foro, así también podrás participar activamente en la comunidad. Si ya tienes una cuenta, conectate cuanto antes.
Iniciar Sesión Registrarme

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo Mensaje [Página 1 de 1.]

#1 El potencial de las fórmulas de batalla el Jue Jun 28, 2012 4:27 am

Killer690

avatar
Bueno, esta no es la primera vez que posteo este mismísimo post, sin embargo, creo que siempre es útil recibir comentarios y compartir la idea en diferentes foros ^_^

Prologo:
Bueno, como ya deberían saber, VXACE posee una característica única en su tipo que permite moldear las fórmulas de daño a tu gusto, el día de hoy, tomando la ayuda de un post de Fomar0153 les traigo algunas sabrosas noticias que de seguro, les gustarán.

Introducción:
Bueno, primero que nada, recordar que con la iniciación de XP, Enterbrain salió completamente de su subtitulo "Crea juegos sin saber programación", sin embargo, podrías hacer juegos mediante los scripts que los demás hacían por ti, por esta razón muchos se quedaron atrás utilizando RPG2003, RPG2000(No digo que sea la única razón, por supuesto), sin embargo, con la llegada de ACE muchas(Casi todas) las funciones de 2000/2003 se restablecieron y además, lograron combinar el eventeo con el scripteo, como podrán ver en el siguiente post.

Importante(Explicado específicamente para MasterXG)

Primer Capitulo: Familiarizando(Útil para los que usan la versión en japonés o son un 0 a la izquierda en scripts)
Spoiler:
Cuando comienzas a utilizar un RPG Maker con scripts, te das cuenta de que muchos piden scripts para cosas que fácilmente puedes eventear; de hecho, muchas de las cosas que se anotarán aquí, podías eventearla en 2000/2003 previamente, sin embargo, el costo de esfuerzo y tiempo eran excesivos. Para comprender como realizar las fórmulas debes saber los códigos más básicos de RUBY; los ejercicios matemáticos.
Realmente no es tan díficil:

+ Suma: suma los valores a y b, dando algo como esto
25 + 30
- Resta: resta el valor a con el b, dando como resultado algo como esto; si el resultado fuese negativo, RGSS devuelve 0, por lo que no hay curación por daños negativos.
30 - 15
* Multiplicación: Múltiplica el valor a por el valor b para dar el resultado.
15 * 3
:, / División: Divide el valor a por el valor b, los daños son redondeados hacia arriba siempre. # No estoy segur@ de cual símbolo es la división.
sqroot Raíz Cuadrada: Revisa la raíz cuadrada del valor específico. #No estoy segur@ del todo...
Tan Tangente: Saca la tangente...
Cos Coseno: Saca el coseno...
Y bueno, muchas más, pero dudo que sean usadas jejeje.

Ahora que tenemos algo de base, debemos aprendernos los índicadores, en VXACE son simplemente dos:
a y b, siendo a el atacante y b el defensor, cuando especificas primerizamente la fórmula de combate, debes indicar cual será el atacante y el defensor, de esta manera no todas las defensas serán las mismas; algo como esto es posible.
a.mat + 15 - b.mdf -30 (Magia del atacante + 15 - Defensa Mágica del defensor - 30)
a.agi * 50 - b.def + b.mdf * 10(Agilidad del atacante * 50 - Defensa Física + Defensa Mágica del defensor * 10)
sqroot a.mat *100 - b.def * 4(La raíz cuadrada de la magia del atacante *100 - la defensa física del defensor * 4) # Absolutamente NO probado
los indicadores son simples; un indicador y un atributo.
Lista de atributos:

level: Nivel actual del indicador(Solo actores)
mhp : Máxima Salud del indicador
hp: Salud Actual del indicador
tp: TP Actual del indicador(No existe mtp por que sería 100 siempre)
atk : Ataque del indicador
def: Defensa del indicador
mat: Ataque Mágico del indicador
mdf: Defensa mágica del indicador
luk: Suerte del indicador
\v[x]: Valor de la variable X.
Una vez entendido esto, ya puedes realizar cualquier tipo de fórmula loca para tu juego jejeje.

Segundo Capitulo: Fomar0153
Aquí viene lo que Fomar0153 ha posteado con respecto a las fórmulas, con su autorización lo he traducido y posteado.
Spoiler:
¿Como hacer la mayoría de las Fórmulas personalizadas?
El día de hoy, temprano, en chat irc de rpgmaker(Foro oficial) la conversación terminó siendo de scripts, entonces alguien habló algo que incluía
"Comidas favoritas: Puedo especificar que cuando los actores coman sus comidas favoritas, repongan una cantidad extra de hp"
Entonces creé un script que no tengo interés de lanzar al futuro. RPG Maker VX ACE nuevamente prueba cuan versátil es por que esto puede ser implementado en una sola notebox. De hecho es esta fórmula en particular:
if b.id == 1 ; 500; else ; 100; end;
b.id == 1 ? 500 : 100

Miremos exactamente que hacemos. ambos chequean un estatus condicional llamado:
b.id == 1
Para la fórmula general hay una referencia al ataque o defendiente, quienes pueden o no ser los mismos.
Como sea lo que chequeamos es que la b.id es igual a 1. Por favor entender que este ejemplo es acerca de un objeto que será solamente usado en miembros de grupo y por ende b siempre será un miembro de grupo. Así que debemos tener en cuenta que el == 1 se refiere y referirá siempre en el primer miembro de la database de actores(Eric por defecto)
Ahora miremos al resto de estas líneas:
if b.id == 1; 500; else; 100; end;
Si has programado antes lo entenderás fácilmente, de lo contrario, esto se explica así:
if b.id ==1
500
else
100
end

Si la id del personaje es la número 1, el objeto recuperará 500, de lo contrario este recuperará 100.
La otra forma es más corta, sin embargo, más díficil de entender si no te familiarizas con RUBY
b.id == 1 ? 500 : 100
aún tiene la condicional que chequea si el actor es el número 1, sin embargo, el resto del código está condensado, veamos como va esto:
Condición ? Cumplida : No Cumplida
Debo decir 2 cosas antes de seguir con esto; para una fórmula complicada es mejor utilizar la ruta larga y simple (La del if) que la otra fórmula y la otra cosa es que a pesar de la potencia de la notebox solo puedes escribir una cantidad determinada de caracteres y por ende no podrás escribir códigos demasiado complejo(Menos mal que es a y b y no atacante y defensor). Y bueno, si el código está mal escrito tu personaje solo fallará y fallará en vez de dar un error en el juego.

Tercer Capitulo: Recetas Médicas
Spoiler:
1.- La mitad de tu grupo son humanoides o robots y requieren un objeto especial de curación para ellos.
Hay un montón de respuestas creativas, sin embargo, por el bien del tutorial, se mantendrá lo más simple posible
b.id ==1 or b.id ==3 or b.id ==4 ? 500 : 0
Cosas a tener en cuenta: No hay espacios después del "==" por que es espacio malgastado, lo otro son los "ors" los cuales debes tener cuidados, pueden ser funcionales, pero algunas veces causan problemas
Nota de Killer690: Simplemente asignó un montón de personajes para que puedan utilizar las curaciones, si quien utiliza la curación es uno de ellos sanará 500, de lo contrario, no será nada.

2.- La comida favorita de un personaje es un sandwich de mantequilla de maní pero el otro es alérgico a este.
La manera de implementarlo será que, cuando Eric coma el sandwich recupere 100 puntos extra de salud, pero cuando Natalie lo coma, será envenenada pero se sanará la base.
if b.id==1;200;elsif b.id==2;b.add_state(2);0;else;100;end;
Esta es un poco más complicada, elsif es un código que chequea otra condición si la primera no se cumple, así que se leería como, si es Eric +200 de HP, si es Natalie estado 2(Veneno).
Nota de Killer690: Por supuesto, si no es ninguno de los dos, sanará +100 de Salud, ya que el "else" indica que la sanación básica será 100, si no me equivoco, puedes poner más de un elsif en un código, siempre y cuando los caracteres no te afecten.

3.- Tienes una habilidad de trueno que daña mucho más si estás en la parte de afuera, la cual es controlada por un interruptor.
El problema simplemente es para dar un ejemplo de interruptor.
$game_switches[x] ? 500 + a.mat * 4 – b.mdf * 2 : 200 + a.mat * 4 – b.mdf * 2
También he incorporado la fórmula estándar para que veas como puedes poner esto de alguna manera.
Notas de Killer690: ...Nada jejeje.

4.- Tengo una habilidad que quiero controlar en una variable
Bastante fácil, simplemente agrega
$game_variables[x] * 10
Notas de Killer690: No es necesario el *10, si mi comprensión lectora es lo suficientemente buena también puedes utilizar v[x] para usar una variable en una habilidad.

5.- Tengo un jugador y él hace habilidades de dados y quiero que él realice habilidades de dados como...Él lanza 2 dados de 6 caras, la habilidad daña 100 veces la cantidad salida por los dados, además el daño se duplicará si la suma de estos 2 es el 10 de la suerte
Bueno, esta es mucho más grande, así que fíjate bien, usaremos el método del "if" y el "rand(x)" el cual devuelve un valor de 0 a x-1"[s]Ej: rand(40): Valores desde 0 a 39[/s] significando que agregaremos un 1 para simular un dado. Necesitaremos crear variables locales también. NO USAR A y B
c=1+rand(6);d=1+rand(6);if c==1 and d==1;10000;elsif c==d;c*400;else;(c+d)*100;end;
No es perfecto, Me gustaría ver que ha lanzado en vez de ver el daño. En la próxima entrega veremos como hacerlo.
Notas de Killer690: No es tan complicado, se han asignado 2 variables: C, la cual es el valor del 2~6 y a D, la cual es el valor de 2 al 6 nuevamente, si c==1 y d==1 dañar 10000, por otra parte si c es igual a d el daño se dúplica, si no es ninguno de los dos, la suma de c + d *100 determinará el daño.

6.- Quiero hacer una habilidad como "Viento Blanco" una habilidad de Final Fantasy la cual restaura la salud actual del objetivo
Más fácil que la tabla del 1, simplemente haces esto:
b.hp
Por supuesto, puedes utilizar cualquier otro parámetro.

7.- ¿Qué tal con hacer Demi?
Demi es una habilidad que corta la salud del objetivo a un cuarto.
b.hp / 4
Notas de Killer690: recuerda NO usar mhp, de lo contrario tomará siempre el valor máximo de salud y le matarás de 4 golpes...A cualquiera.

8.- Quiero hacer una habilidad que tome los parámetros de otro actor para atacar.
Esto es más fácil de lo que crees, sobre todo si es de un actor en particular.
game_actors[1].atk * 4 – b.def * 2
¡Eric Ataca!

Infamous Bonbon: ¿Que tal si daña más alguna habilidad con cierta arma equipada?
Fomar0153: ¿Algo como esto tal vez?
a.weapons.include?($data_weapons[1]) ? 1000 : 200
Notas de Killer690: Lo que hace es chequear si el atacante(a) posee la arma número 1, si es así dañará +1000, de lo contrario, será 200.

Esop, espero les sirva de algo Ópalo Sonriente, me costó y tardé un kilo en traducir(Sin google, por supuesto)...Desde mi parecer era algo de había que tener en cuenta.
Gracias a Fomar0153, texto original
Página principal de Fomar0153

Espero les sirva de algo Ópalo Sonriente

Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.