JVLIVS CAESAR MODS FORUM
Estimado usuario invitado: Si se registra/conecta podrá tener la mejor ventaja, postear en el foro, ya que los invitados solo pueden leer.

JVLIVS CAESAR MODS FORUM

Imperium III Mods Forvm. Último Mod - MCI 9.0!
 
ÍndiceÍndice  FAQFAQ  BuscarBuscar  RegistrarseRegistrarse  ConectarseConectarse  

Comparte | 
 

 [TUTORIAL] Creación de formaciones

Ver el tema anterior Ver el tema siguiente Ir abajo 
AutorMensaje
El_Jüsticiero_Misteryoso
Equipo de Scripts
Equipo de Scripts
avatar

Cantidad de envíos : 369
Reputación : 35
Fecha de inscripción : 19/06/2010

MensajeTema: [TUTORIAL] Creación de formaciones   Sáb Ago 07, 2010 3:00 pm

Cómo he visto muchas propuestas de formaciones casi imposibles(pues imposible de todo no hay nada) hago este tutorial, para que descartis ideas por vosotros solos.

Lo primero a la hora de hacer una formación es modificar el archivo FORMATIONS.XML, en el pak DATA.
Ahí se recogen todas las formaciones del juego. Lo que haremos será añadir una nueva Clase de Formación.
De esta manera, y observando las que ya hay, añadimos:
<FormationClass>
</FormationClass>

Entre las etiquetas <Formations> y </Formations>

Ahora le pondremos los parámetros, en este ejemplo que voy a poner, daré una formación con todos los parámetros que se le pueden añadir y luego los explicaré:
<FormationClass Name="Ejemplo"
Description="Este es un ejemplo para el tutorial"
Width="4"
Height="4"
BonusLevel="4"
BonusDamage="2"
BonusArmor="2"
BonusRange="20"
BonusAttack="4"
BonusDefenceSlash="5"

OffsetFrontLineByY="10"
OffsetWingsByX="10"
OffsetWingsByY="10">

<Class Name="Unit" CentralBlock="2"/>
<Class Name="Melee" CentralBlock="2"/>
<Class Name="Horse" FrontLine="1"/>
<Class Name="Ranged" Wings="2"/>
<Class Name="BaseMage" CentralBlock="1"/>
<Class Name="Peasant" Wings="1"/>
</FormationClass>

Name y Description dan nombre y descripción a la clase de formación evidentemente. Debo mencionar que en los archivos XML no se pueden escribir acentos(´).
Width indica el número de unidades que tiene la formación de ancho, se nota sobre todo en la línea frontal.
Height el número de unidades que tiene la formación de largo(en vertical, por decirlo de manera sencilla).
Bonus Level: Puntos de nivel que bonifica la formación.
Bonus Damage: " " ataque " " " ".
Bonus Amor: Bonus de defensa.
Bonus Range: Bonus de distancia de disparo.
Bonus Attack: Bonus de ataque. (Esto no lo entiendo, pero es así).
Bonus Defence Slash: Bonus de defensa frente a ataques de cuerpo a cuerpo.

OffsetFrontLineByY: Distancia de la línea frontal al héroe.

OffsetWingsByX: Distancia de las alas a los laterales de la línea frontal.
OffsetWingsByY: Distancia en vertical de las alas a la línea frontal.

Las class, definen la posición de cada clase de objetos en las formaciones. (No he probado con muchos más, pero recomiendo usar sólo esas)
Unit=Unidades(En general)
Melee=Unidades de cuerpo a cuerpo
Horse=Caballeros(Incluídos tuaregs)
Ranged=Arqueros
BaseMage=Unidades mágicas
Peasant=Unidades que no atacan.

EL resto de parámetros de las etiquetas Class:
CentralBlock/Wings/FrontLine: Define la posición, por orden: Bloque Central/Alas/Línea Frontal.
El número entre comillas determina el orden. Ejemplo:
En el ejemplo impuesto por mí, las unidades mágicas estarían más al centro que las de combate cuerpo a cuerpo.

Una vez hemos creado nuestra clase, vamos a DATA/COMMANDS y abrimos HERO.XML.
Buscamos:
<cmd name="form-line-menu" priority="1"
method="move"
button="States/line form.bmp"
key="f"
rollover="Select Formation"
param="Line"
groupverifier="data/subai/hero_formation_menu_verify.vs"
menu="1"
>

<src obj="Hero"/>
</cmd>

Añadimos debajo el botón para cuando esté seleccionada nuestra formación poder seleccionar otra, añadiendo un comando con esta forma:
<cmd name="form-ejemplo-menu" priority="1"
method="move"
button="States/line form.bmp"
key="h"
rollover="Select Formation"
param="Ejemplo"
groupverifier="data/subai/hero_formation_menu_verify.vs"
menu="1"
>

<src obj="Hero"/>
</cmd>

En name ponemos el nombre de nuestro comando, tal cómo se hizo en el ejemplo.
En button se debe indicar la dirección del icono de nuestro comando(siempre en relación a la carpeta UI/CMDBAR), por ejemplo:
States/line form.bmp
Sería en realidad
ui/cmdbar/states/line form.bmp
NOTA: No diferencia mayúsculas y minúsculas.

En key escribimos la tecla que al pulsarla produce la activación del comando.

En rollover se escribe el texto que se muestra al pasar por encima el ratón.

En param poner el nombre de nuestra clase de formación, tal cual lo escribimos al crear la clase en Name.

El resto dejarlo así.

Ahora buscamos:
<cmd name="form-line" priority="1"
method="formation"
button="States/line form.bmp"
immediate="yes"
key="l"
rollover="Select Line formation"
param="Line"
groupverifier="data/subai/hero_formation_verify.vs"
menu="1"
>

<src obj="Hero"/>
</cmd>

Y añadimos debajo el comando para cuando se selecciona cambiar formación que salga para seleccionarla:
<cmd name="form-ejemplo" priority="1"
method="formation"
button="States/line form.bmp"
immediate="yes"
key="l"
rollover="Select Line formation"
param="Ejemplo"
groupverifier="data/subai/hero_formation_verify.vs"
menu="1"
>

<src obj="Hero"/>
</cmd>

Cómo vemos se hace lo mismo que con el otro, se cambia name, button, rollover, param y si se quiere key(evitar que haya letras repetidas, hay muhca gente que usa el teclado).

Por último hay que modificar en DATA/SUBAI el HERO_FORMATION_VERIFY, para añadir nuestro comando, siguiendo este ejemplo añadimos un if antes del return false. Quedando el archivo de esta manera(si hemos echo formaciones antes cada vez habrá mas ifs):
//bool, ObjList objs, str OUT reasonText

str cmd_name;
int menu_type;

if (objs.count != 1)
return false;

cmd_name = cmdwaiting;
if (cmd_name != "form-line-menu")
if (cmd_name != "form-block-menu")
if (cmd_name != "form-cavalry-menu")
if (cmd_name != "form-front-menu")
if(cmd_name != "form-ejemplo-menu")
return false;

reasonText = rollover(objs[0], true) + "\n" + FormDescription(cmdparam);
return true;


Si nos hemos fijado antes este es el archivo verify de nuestro comando menu.

Ahora sólo hay que ir al Imperivm, si no existe crear la carpeta DATA, dentro SUBAI y COMMANDS.
Colocamos cada archivo en su carpeta(FORMATIONS.XML directamente en DATA, HERO.XML en COMMANDS, y HERO_FORMATION_VERIFY dentro de SUBAI).
¡Y lo logramos!

Puede que parezca un poco royo leído, pero cuando lo hiciste te das cuenta de que es sencillo.


Dadme vuestra opinión sobre el tuto... lol! :36: :36: lol! :36: Very Happy Question study
Volver arriba Ir abajo
http://www.imperivmymas.es.kz
frikypani
Moderador
Moderador
avatar

Cantidad de envíos : 129
Edad : 28
Location : Murcia
Reputación : 38
Fecha de inscripción : 21/12/2009

MensajeTema: Re: [TUTORIAL] Creación de formaciones   Sáb Ago 07, 2010 3:17 pm

Muy bien explicado. La verdad es más sencillo de lo que parece, solo hay que probar a hacer una y las demás vienen solas.
Salu2
Volver arriba Ir abajo
http://usuarios.multimania.es/frikypani/index.html
Poliko
Equipo de Diseño
Equipo de Diseño
avatar

Cantidad de envíos : 351
Edad : 23
Location : albasete
Reputación : 15
Fecha de inscripción : 06/06/2010

MensajeTema: Re: [TUTORIAL] Creación de formaciones   Sáb Ago 07, 2010 7:55 pm

joder tio que currada de tuto, me estan dando ganas de hacer ya formaciones XDD. Yo la ultima vez que me metí en royo de scripting fue para hacer un objeto magico similar al papiro de los muertos, pero que consigue transformar a los guerreros en un animal aleatorio, incluso gallinas de las aldeas XDDD. Por cierto, os pongo aqui el script, me senti orgulloso cuando vi como funcionaba xdd:
El objeto se activa al "derrotar una unidad e..." es la opción anterior a "al ser equipado", si no no funciona:

//void, Obj attached

Unit u;

if (rand(1000) > 400)
return;
if(attached.AsUnit.InHolder)
return;

u = Place("CMaceman", attached.pos, attached.player);
u.SetStamina(5);
u.SetLevel(attached.AsUnit.level);
u.SetCommand("spawn");
SwapSelectedObj(attached, u);

if (rand(1000) > 400)
return;
if(attached.AsUnit.InHolder)
return;

u = Place("CWarElephant", attached.pos, attached.player);
u.SetStamina(5);
u.SetLevel(attached.AsUnit.level);
u.SetCommand("spawn");
SwapSelectedObj(attached, u);

if (rand(1000) > 900)
return;
if(attached.AsUnit.InHolder)
return;

u = Place("Hen", attached.pos, attached.player);
u.SetStamina(5);
u.SetLevel(attached.AsUnit.level);
u.SetCommand("spawn");
SwapSelectedObj(attached, u);

if (rand(1000) > 900)
return;
if(attached.AsUnit.InHolder)
return;

u = Place("LionM", attached.pos, attached.player);
u.SetStamina(5);
u.SetLevel(attached.AsUnit.level);
u.SetCommand("spawn");
SwapSelectedObj(attached, u);

if (rand(1000) > 900)
return;
if(attached.AsUnit.InHolder)
return;

u = Place("Wolf", attached.pos, attached.player);
u.SetStamina(5);
u.SetLevel(attached.AsUnit.level);
u.SetCommand("spawn");
SwapSelectedObj(attached, u);

if (rand(1000) > 1000)
return;
if(attached.AsUnit.InHolder)
return;

u = Place("LionF", attached.pos, attached.player);
u.SetStamina(5);
u.SetLevel(attached.AsUnit.level);
u.SetCommand("spawn");
SwapSelectedObj(attached, u);

EDITO: Se pueden poner valores negativos en las bonificaciones de la formación? como perder 6 de defensa y ganar 12 de ataque..., ah y otra cosa, en subai, como retoco los archivos? son .vs, no puedo hacerlo con el notepad, y tampoco me aparece el hero formations verify, el mas parecido se llama "HERO_FORM_RANGED_WINGS.VS"
Volver arriba Ir abajo
El_Jüsticiero_Misteryoso
Equipo de Scripts
Equipo de Scripts
avatar

Cantidad de envíos : 369
Reputación : 35
Fecha de inscripción : 19/06/2010

MensajeTema: Re: [TUTORIAL] Creación de formaciones   Dom Ago 08, 2010 6:27 am

Tiene que estar HERO_FORMATION_VERIFY.VS, busca bien. Los archivos VS se abren con Block de Notas, le das botón derecho, propiedades, se abre con... y seleccionas el block de notas.

Los valores negativos son extraños, porque a veces me funcionan, pero si la unidad tiene 0 defensa, y le doy -3, pues a veces queda con 2, con 1, etc.

Respecto a tu objeto te diré que es una forma de hacerlo, pero sería más fácil con un String Array. EJemplo:
StrArray tipo;
Unit u;
int i;

//Definimos los miembros del StrArray, si kieres añadir mas solo tienes que añadirlos aqui, el resto funcionara igual.
tipo[0] = "LionF";
tipo[1] = "Wolf";
tipo[2] = "LionM";
tipo[3] = "Hen";
tipo[4] = "CWarElephant";
tipo[5] = "CMaceman";

if (rand(1000) > 400)
return;
if(attached.AsUnit.InHolder)
return;

i = rand(tipo.size);

u = Place(tipo[ i ], attached.pos, attached.player);
u.SetStamina(5);
u.SetLevel(attached.AsUnit.level);
u.SetCommand("spawn");
SwapSelectedObj(attached, u);


El código está bien, si a lo mejor no funciona me avisas que es que metí algún "gambazo" al escribirlo sin el imperivm abierto xD.

La ventaja de este código es que todos tienen las mismas posibilidades de salir, mientras que en el tuyo el primero solo pasó una prueba aleatoria, mientras que para convertirse en "LionF" tiene k pasar 6. Por lo que sus probabilidades se reducen bastante.

De todas formas si ya lo hiciste tan largo el tuyo está bien. Un saudo.
Deww
Volver arriba Ir abajo
http://www.imperivmymas.es.kz
Poliko
Equipo de Diseño
Equipo de Diseño
avatar

Cantidad de envíos : 351
Edad : 23
Location : albasete
Reputación : 15
Fecha de inscripción : 06/06/2010

MensajeTema: Re: [TUTORIAL] Creación de formaciones   Dom Ago 08, 2010 10:30 am

yah se que se reducen mucho los de la leona, porque creo que era que salia 4 de cada 10 veces de 5 de cada 10 veces de 6 de cada 10 veces, vamos una probabilidad bajisima, algo asi como una de cada 30 veces. Por cierto, una cosa que nunca he conseguido y seguro que es facilisimo, el codigo para un objeto al estilo del amuleto del triunfo, pero que reponga 3 puntos de energía al matar un enemigo, sabes como es?

EDITO: Si, soy un cansino, pero sigo teniendo un error y no se cual es. Te imporrrtaria subir los 3 archivos retocados por ti para cambiar solo el nombre y las propiedades de tu formacion nueva para hacer yo una?. Esque creo que he fallado en cualquier tonteria de por ahí y no lo soluciono >.<
Volver arriba Ir abajo
El_Jüsticiero_Misteryoso
Equipo de Scripts
Equipo de Scripts
avatar

Cantidad de envíos : 369
Reputación : 35
Fecha de inscripción : 19/06/2010

MensajeTema: Re: [TUTORIAL] Creación de formaciones   Lun Ago 09, 2010 6:47 am

Los archivos modificados por mí ya vienen con el juego.
Asegurate de que ne formations, metiste tu formación antes de donde pone en la última línea "</Formations>",
y lo mismo con el HERO, ponlo antes de "</commands>".

Lo del objeto como el amuleto del triunfo que repone 3 · de energía es:
if (owner.IsValid())
if (owner.stamina < owner.maxstamina) {
owner.HealStamina(3);
CreateFeedback("StaminaBoost", owner.AsUnit);
}
Volver arriba Ir abajo
http://www.imperivmymas.es.kz
Poliko
Equipo de Diseño
Equipo de Diseño
avatar

Cantidad de envíos : 351
Edad : 23
Location : albasete
Reputación : 15
Fecha de inscripción : 06/06/2010

MensajeTema: Re: [TUTORIAL] Creación de formaciones   Lun Ago 09, 2010 1:24 pm

definitivamente no atino, lo dejo para los del equipo de scripts... mil gracias por el comando, le voy a sacar bastante uso.
Volver arriba Ir abajo
Contenido patrocinado




MensajeTema: Re: [TUTORIAL] Creación de formaciones   

Volver arriba Ir abajo
 
[TUTORIAL] Creación de formaciones
Ver el tema anterior Ver el tema siguiente Volver arriba 
Página 1 de 1.
 Temas similares
-
» Video Tutorial. Creación de Logos con GIMP 2 por Tharsis.
» [Mini tutorial] Creación de sprites de batalla.
» CREACIÓN DE FACES - TUTORIAL
» Rayman Gold/Designer Pequeño tutorial sobre qué son los EVE.
» TUTORIAL "Como rellenar la ficha"

Permisos de este foro:No puedes responder a temas en este foro.
JVLIVS CAESAR MODS FORUM :: Modding en General :: Modding en General :: Edición de Scripts-
Cambiar a: