Buenas.
Por fin actualizo este tutorial!!!
Lo voy a estructurar mejor, además de que voy a añadir algunos scripts nuevos.
Más tarde terminaré de organizarlo todo que ya es mu tarde.
Cuando tenga más o menos todos los cripts en el tuto, lo organizaré mejor, por niveles de dificultad.
Qué es un script?
Un script de pokemon es todo lo que engloba movimientos automaticos sin que nosotros pulsemos botones, textos,combates,
eventos,pokemon salvajes etc...
No sé exactamente, pero creo que se puede afirmar que un juego de Pokemon tiene mucho más que 600 scripts,y creo que 600 es muy poco.
Qué es un offset?
Se puede decir que un offset es una carpeta que contiene todos los datos de un script. Se usan offsets libres para crear scripts nuevos sin reemplazar antiguos.Los offsets libres no contienen ningún script,por eso no hay fallos al usar los LIBRES.
Qué es un puntero?
Un puntero es como la dirección de la casa de tus amigos. Si quieres ir a su casa tienes que ir a esa dirección.
Los punteros se pueden llamar como quieras, desde que sean una sola palabra.
Ellos se encargan de que si se cumple cierto requisito te redireccionarán al puntero que has elegido y ese puntero contendrá
más comandos
Qué es un comando?
Un comando es como un programa .exe, un ejecutable.
Cuando lo usamos, se activa usando su función, ya sea dar pokemon,quitar items, pagar dinero,hacer una msgbox etc...
Hay montones de comandos aunque alrededor de 1 sexto de esos comandos se desconocen.
Creo que estás listo para adentrarte en el mundillo del Scripting...
Empezemos por lo básico...
Te recominedo descargar este Pack de Herramientas que es el que yo siempre uso:
http://wahackforo.com/t-13816/hacktools-4-0-deluxe-edition
Gracias a RogellParadox~ por crear el pack ya que es muy útil y tiene muchisimas herramientas.
Empezemos por usar el FSF para buscar un offset libre.
Abrimos el FSF y escojemos nuestro ROM.
Después LE daremos a Buscar, y después de haber encontrado el offset libre pinchamos en Copiar.
Ahora vamos al Advance Map y pegamos el offset que acabamos de copiar en donde pone Script Offset
Después de pegarlo pinchamos en Open Script.
ATENCIÓN: No borreis el $ del script offset o os dará error. Seleccionad el 000000 y reemplazadlo por el offset.
Ahora en el XSE (Editor de scripts) eliminamos lo que aparece y escribimos:
#dynamic 0x
Esto hay que ponerlo en todos los scripts que se hagan.
Si os equivocais o dejais el 0x en blanco dará error.
Os acostumbraréis a que en el offset la gente ponga 0x800000 pero eso es solo para ejemplo.
Despues de poner el dynamic, ponemos esto:
#dynamic 0x
#org @inicio
Sin estos dos comandos nada funcionará.
Pasemos a lo siguiente:
#dynamic 0x
#org @inicio
lock
faceplayer
El lock hará que los minis no se muevan mientras decorre el script.
El faceplayer hará que el mini con el que hable te mire.
Ahora viene la parte donde ya empieza NUESTRO script.
Aqui se pueden poner los comandos que queramos de manera a dar forma a nuestro script.
Poner applymovementts para que el muñeco se mueva, msgboxs,givepokemon y demás. Todo depende de nuestra imaginación
para crear un script que se encaje en nuestro hack o história.
A continuación pondremos un msgbox porque es un comando facilisimo.
#dynamic 0x
#org @inicio
lock
faceplayer
msgbox @frase 0x0
release
end
El msgbox hará una caja de texto. Cual es el texto eso vendrá delante.
el @frase es el puntero en el cual estará el texto.
No os preocupeis podeis usar el puntero @frase en el nº de scripts que quieras.
Si lo usas en un script para que no aparezca el mismo texto en el segundo texto del script basta poner otro puntero como @frase2.
[SPOILER="Tipos de MSGBOX"]
En el 0x0 del msgbox se puede poner:
0x0 : Se usa en el giveitem (por eso aparece el último 0x0)
0x1 : Es como en el giveitem pero este es para las pokeballs perdidas
0x2 : Este se usa en los letreros y carteles.
0x3 : Igual al 0x6 solo que en este el mini te mirará a la cara, no necesitas usar el faceplayer en el script
0x4 : Una msgbox normal solo que no se va a cerrar sin que pulses el botón A
0x5 : Abre un YES/NO box. Más tarde lo explico.
0x6 : Es una caja de texto normal, pero sin el faceplayer que contiene el 0x2
0xA : Este es solo para Esmeralda, sirve para hacer una llamada por el PokeNAV
El release es el contrario del lock, libera los minis del efecto de lock.
El end indica que el script acabó.
Ahora el texto:
#dynamic 0x
#org @inicio
lock
faceplayer
msgbox @frase 0x0
release
end
#org @frase
Que he hecho?
Estoy preparando el texto.
Después del omando end se deja una linea y en la siguiente se pone #org y después el mismo puntero que pusimos en el msgbox @frase 0x0.
Después pinchamos debajo del #org
y pulsamos Ctrl + T.
Y ahí escribiriemos el texto que queremos que aparezca en el msgbox.
Después pinchamos en Convertir y después en Insertar.
Ahora el texto contendrá cosas como /l y /n en algunas partes, pero no os preocupeis porque eso es solo para delimitar las lineas del texto, no aparece en el mensaje.
Ahora miramos la barra de herramientas que está al lado de donde dice archivo:
Pinchamos en el icono de las 2 ruedas dentadas.
Se llama Compilar.
Despues pinchamos en Cerrar.
Y ahora pinchamos en el icono a la derecha de Dirección, el que tiene una llave inglesa y un destornillador, se llama descompilar.
Una vez hecho eso, miramos a ver si el script noha quedado mal.
No os preocupeis que ahora en vez de empezar #dynamic 0x.... aparecerá diferente,pero eso no importa,
solo no debe quedrse como cuando abrimos el script y aparecia
-------------
#org 0xoffset que copiaste
Si lo que está arriba es lo único que aparece perdiste todo el script, por eso recomiendo que antes de descompilar
copiemos todo el script.
Tened cuidado al hacer Ctrl + V, si sin querer haceis Ctrl + B como me ha pasado unas 80 veces, el XSE tendrá error y se apagará sin que puedas recuperar tu script.(Yo hice scripts largísimos y acabé por perderlo todo.)
Por aquí nos quedamos ya son 00:50 y ya me he llevado una bronca por estar despierto hasta tan tarde,blablabla.
Si teneis alguna duda preguntadme y os lo contestaré ya sea aqui o por MP o por mensaje de visitante.
[/SPOILER]
------------------------------------------------------------
msgbox @??? 0x0
Este es el script más báscio y el más usado. Es una caja de texto.
[SPOILER="-PAYMONEY-"]
paymoney 0x0 0x0
Este Script es para que pagues una cantidad de dinero. (La cantidad de dinero es el 1er 0x0. Obviamente tiene que estar en HEX.
El 2do 0x0 no sirve de nada.No lo tocamos. )
givemoney 0x0 0x0
Este comando es muy útil a la hora de hacer juegos de apuestas,y más cosas. Como dice el nombre alguien te da cierta cantidad de dinero.
Como en el PAYMONEY el primer 0x0 es la cantidad de dinero a recibir, y como es obvio hay que escribirlo en HEX.
El segundo 0x0 no se toca.
[/SPOILER]
[SPOILER="-CHECKITEM-"]
checkitem 0x0 0x0
Este Script sirve para que alguien mire si tienes cierto objeto. ( Que será el 1er 0x0.Será el ID del objeto en HEX.
Y el 2do 0x0 será la cantidad que del objeto que mira. )
giveitem 0x0 0x0 0x0
Este comando es básico. Recibes un objeto ya sea de una persona,de una pokeball tirada en el suelo etc...
El primer 0x0 es el ID del Item, que porsupuesto, tiene que estar en HEX. El segundo 0x0 es la cantidad de items que recibirás.
El tercer 0x0 es el tipo del mensaje.Si quieres que el item te lo dé alguien pones 0x0. Si quieres que sea encontrada por el suelo pones 0x1
removeitem 0x0 0x0
Este comando se encarga de quitarte un item. El primer 0x0 será el ID del item en HEX y el segundo la cantidad de items que te van a quitar.
Bastante bueno para hacer partes donde los del Team Rocket te quitan objetos clave o cosas importantes en el hack.
Hay que usar antes el checkitem para saber si tienes el objeto en cuestión.
additem 0x0 0x0
Que diferencia tiene del giveitem? Pues 2 muy sencillas, solo tiene dos 0x0 en vez de tres, y el giveitem nos muestra un texto
al recibir el item, mientras que el additem no lo hace.
La verdad es que aún no se me ha ocurrido ninguna idea para usarlo aunqeu ya lo conocia.
Poca gente lo conoce, debido a que casi nadie lo usa y lo deja aparte.
addpcitem 0x0 0x
Este sirve para que te añada cierto objeto al PC del Jugador.( Será el 1er 0x0
que es el ID del Item en HEX.
Y el 2do 0x0 es la cantidad del objeto que te añade al PC.
Está también el "checkpcitem"
que sirve para ver si el Jugador tiene cierto objeto en el PC.
Funciona igual.
El 1er 0x0 es el objeto a verificar.
Y el 2do 0x0 es la cantidad a verificar. )
[/SPOILER]
[SPOILER="GIVEPOKEMON"]
givepokemon 0x0 0x0 0x0 0x0 0x0 0x0
Otro comando indispensable. El givepokemon está presente en todo hack, es uno de los comandos secundarios que más se usa.
Los primarios son la msgbox,check y setflag etc...
El primer 0x0 es el nº del Pokemon en HEX,el segundo 0x0 es el nivel del Pokemon,tambien en HEX, y por ultimo el tercer 0x0 es el ID del item que lleva ese Pokemon. Los otros tres 0x0 no se tocan.
countpokemon
Este comando no requiere ningún parámetro.
Pero va seguido de unos comandos...
compare LASTRESULT 0x0
Que hace esto?? Se encarga de comparar el nº de Pokemon que el comando countpokemon verificó (0 a 6) con el nº que definas en el 0x0 el cual será 1,2,3,4,5 o 6.
if 0x1 goto [MENTION=18367]blablabla[/MENTION]
if 0x0 goto @blebleble
Algunos os preguntareis que es esto. La mayoria ya sabe pero este tuto sirve para que los ex.profesionales se desoxiden y para que los principiantes se conviertan en pro players del hacking. El if que significa "si (condición)" en ingles se encarga de redirigirte a cierto punto de un script.
Cuando se usan flags es imprescindible usarlo.
Como funciona? pues el
if 0x1 significa que (en el contexto de este comando) si se cumplen los requisitos (el nº de pokemon contados por el countpokemon es superior al nº que se puso en el compare LASTRESULT) te redirige a un puntero el cual llame blablabla por que si pero podeis poner lo que querais siempre que sea una sola palabra sin espacios.
El goto [MENTION=18367]blablabla[/MENTION] significa que si cumples el requisito que está detrás del goto (0x0 o 0x1) se te redireccionará al puntero blablabla.
El @ siempre señala que es un puntero.
[/SPOILER]
[SPOILER="-SHOWPOKEPIC-"]
showpokepic 0x0 0x0 0x0
Este Script te enseña la imagen de un Pokémon. ( El Pokémon que enseñará será el ID del Pokemon deseado en HEX que será el 1er 0x0.
El 2do 0x0 es la posición de la X y el 3er 0x0 es la posición de la caja Y.
Va seguido de "hidepokepic" que sirve paa cerrar la ventana en la que sale el pokemon. )
[/SPOILER]
Espero que os guste mi Tutorial sobre Scripts es el primer Tutorial que hago en todo WAH y que por encima es sobre lo que peor se me da, ¡SCRIPTS!
Espero que os sirva para vuestros hacks.
Si os gusta ya sabéis que hacer...
Si no entendéis algo me avisáis.
Si creéis que falta algo para mi próximo post o que me ayudaría a mejorar en el foro
me lo decís.