Jaos Dawn

jaosdawn

Script de nivel - Setmaptile

Script de nivel - Setmaptile
 
 
 
Ahora podrás hacer un setmaptile con un script de nivel
Base R/S/E/FR/LG
Idioma es

Un setmaptile es un comando de XSE que sirve para cambiar un bloque en el mapa en el que te encuentres en tiempo de ejecución. El problema que tiene es que si tú cambias algún bloque de un mapa, este cambio sólo será visible hasta que se vuelva a cargar dicho mapa, por lo que no podemos hacer un cambio permanente.

Para llevar a cabo lo que en verdad queremos hacer vamos a utilizar un script de nivel. El script utilizado será obviamente de tipo setmaptile.

Contenido

 [ocultar]

Algunos detalles

Voy a poner un ejemplo para que esto se entienda bien, además, el ejemplo va a ser de mi hack.

Al llegar al tercer pueblo, hay un policía que te dice que la entrada a la cueva se ha cerrado a causa de un terremoto y que pronto la abrirán. Para que se habra hay que conseguir la medalla de ese pueblo. Pues lo que yo utilizo para hacer esto es un setmaptile. Pero, al ir hacia la entrada, vemos que aparece la montaña sin entrada, cuando, en realidad, si abres el mapa con advance map si que está dicha entrada.

Esto se debe a que en un setmaptile hay que hacerlo a la inversa. Es decir, en el editor de mapas no pondrás el bloque que aparece en un principio, sino el que aparecerá después. Esto se hace para evitar ciertos problemas con el comportamiento de los bloques y así evitar errores. Por supuesto, cabe destacar que en algunas ocasiones también se utiliza al contrario, pero eso son excepciones poco dadas.

Hagamos el script

El script que voy a poner es el de mi hack, el de la cueva:

'---------------
#org 0x8088AE
checkflag 0x215
if 0x0 goto 0x88088B9
release
end

'---------------
#org 0x8088B9
setmaptile 0x1A 0x5 0x79 0x1
special 0x8E
end

Estoy utilizando una flag porque es necesario utilizar una para que desaparezca el policía y otros dos minis, pero siempre que os podáis ahorrar flags, hacedlo y utilizad variables.

Bueno, ahí podéis ver un setmaptile. Lo que hace es comprobar la flag y, si no está activada, va al otro offset y se ejecuta el setmaptile, haciendo así que no se pueda ver la puerta. De todas formas, explicaré un poco el setmaptile para que no os liéis:

setmaptile 0x(X) 0x(Y) 0x(Bloque) 0x(comportamiento)

La "X" simboliza la coordenada en el eje X al igual que la "Y" simboliza la coordenada en el eje Y. El bloque obviamente es el bloque por el que se va acambiar. El bloque se puede averiguar poniendo el puntero encima del bloque en cuestión en advance map y el propio programa te ofrece detalles sobre dicho bloque, entre otros, su valor hexadecimal, que es lo que tendremos que poner en el comando. Y, por último, el comportamiento. Hay dos comportamientos:

0x0 -> Se puede pasar 0x1 -> No se puede pasar

Después del setmaptile tenéis que añadir un special, en este caso (y en todos en los que hagáis un setmaptile) será el "special 0x8E".

Ya que tenemos nuestro script y lo hemos comprendido todo a la perfección, lo compilamos y podemos pasar al siguiente paso.

El cabezal del mapa

Ahora vamos al cabezal. Para hacer esto, es muy recomendable leer el tutorial Script de nivel - 02 Validates Values, ya que ahí se explican algunas cosas que no explicaré aquí.

Bien, lo que haremos será ver si ya hay un script de nivel de tipo setmaptile. Si lo hay, tendremos que editarlo, ya que sólo puede haber uno por mapa. Y si no lo hay, pues lo creamos pulsando "Add" y eligiendo el script de tipo setmaptile.

Hecho esto, lo único que tenemos que hacer es poner el offset del script donde dice "Script offset" y le damos a "Save map scripts". Este script normalmente funciona sin convertir el offset de los script del mapa en un script de nivel, de todas formas, conviene hacerlo para evitar errores. Si queréis hacerlo, está explicado en el manual Script de nivel - 02 Validates Values.

Cuando todo esto este hecho, ya tendremos nuestro script de nivel de tipo setmaptile.

Para finalizar

Para acabar, me gustaría hacer algunas aclaraciones. Si hacéis un setmaptile mediante script de nivel que dependa de una flag/variable, tendréis que activar/cambiar el valor a la misma para que el setmaptile deje de ejecutarse. Si hacéis esto en otro mapa, no habrá ningún problema, pero si lo hacéis en el mapa en cuestión, el setmaptile ya estará ejecutado, con lo cual sólo volverá a la normalidad al volver a cargar el mapa.

Pero esto se puede evitar de una forma. Que es haciendo un setmaptile cambiando el bloque que pusimos mediante el script de nivel por el bloque original. De esta forma, no tendremos que recargar el mapa para que el bloque original esté perfectamente funcional.


Javi4315 07:23 29 mar 2011 (EDT)

Hoy habia 5 visitantes (20 clics a subpáginas) ¡Aqui en esta página!

48.858309 2.294533 Eiffel Tower, Paris, France Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis