Registrarse

[Script] [RH] Recopilación de scripts comentados

Fran Agustín

Si el sol besa tus ojos, ni cuenta te das.
Miembro insignia

Recopilación de Scripts Comentados

¿En qué consiste?

¡Muy buenas a todos! Bienvenidos a este humilde thread de caracter recopilatorio que, espero, se convierta en un útil recurso para todos los scripters, tanto para aprender como para ahorrar tiempo.
La idea del tema es reunir una gran cantidad de ejemplos de scripts, cuantos más mejor, que puedan servir para aprender y entender los comandos de una forma más práctica que en un tutorial. Asimismo, será útil para ahorrarnos tiempo a la hora de scriptear, ya que éstos estarán listos para insertar.
¿Por qué comentados? Sencillo: con el fin de entenderlos mejor, estos scripts han de estar explicados pero no tan a fondo como en un tutorial, sino con unas simples anotaciones (comentarios) dentro del mismo script que expliquen qué hace en su totalidad y qué hace cada comando.

Diferencias con otros temas recopilatorios

En este tema se recopilarán absolutamente todo tipo de scripts: de npcs, de gatillos, de nivel... Y, además, de todas las complejidades posibles: desde un simple msgbox hasta un sistema completamente nuevo, todo lo que quieran aportar es bienvenido.

Entonces, se diferencia del tema de Recopilación de Scripts de Relleno porque no serán solamente textos de relleno para los npcs secundarios sino todo tipo de scripts, incluso de gatillo o nivel que no tienen por qué involucrar npcs. De más está decir que este tema no reúne solamente scripts de relleno sino también scripts que pueden ser relevantes en tu proyecto.

Similarmente, se diferencia del Tema de scripts de Miscelánea por su amplio alcance. No reuniremos solamente los sistemas sino todos los scripts que haya.

Por último, debo decir que este no es una combinación de dos temas antiguos, de ninguna manera. Es una propuesta superadora. Con fines de practicidad lo haremos lo más extensivo posible, facilitando su utilización para usuarios que no puedan conectarse a internet cada vez que quieran consultar una duda y, además, evitando la necesidad de hacer un copy&paste para insertarlos en una ROM. Mantendré personalmente una carpeta en Gogle Drive que contendrá todos los scripts en formate .pks (editables con RA) o .rbc (editables con XSE de haber alguno), según corresponda, y .txt (por si sólo quieres leerlos y no tienes RA ni XSE).

¿Cómo puedo colaborar?

Si bien yo agregaré tantos scripts como ideas tenga (siempre que tenga tiempo), todos son bienvenidos. La idea es que toda la comunidad contribuya con lo que quiera y pueda.
¿Y cómo lo haces?
Bueno, es muy sencillo. Solamente tienes que crear un script y postearlo aquí mismo. Yo me encargaré de editar este post para añadirlo a la lista y de agregarlo a la carpeta de Google Drive.
Para ahorrarme algo de trabajo, agradeceré que sigan el siguiente formato:
Esquema dijo:
Comentarios explicando cómo funciona en líneas generales el script: ¿qué hace?

Comandos del script (propiamente dicho), comentados con una explicación de qué hace puntualmente el comando.

Textos

Movimientos
Aclaraciones
Si bien la idea es explicar todos los comandos, eso no quiere decir que haya que hacerlo en cada script. No es obligatorio explicar cada línea en cada script pero sí dar una explicación de los comandos que sean la base y, especialmente, si son raros o difíciles de entender.
Asimismo, si llevan parámetros, sería bueno puntualizar con lo que hacen en ese caso en particular. Por ejemplo, si hago un givepokemon con un bulbasaur, el comentario dirá algo como "Este comando te da un bulbasaur" y no "Este comando te da un pokémon".
Ejemplo dijo:
Correcto
givepokemon BULBASAUR 5 0 0 0 0 'Este comando te da un bulbasaur al nivel 5 sin objeto

Incorrecto
givepokemon BULBASAUR 5 0 0 0 0 'Este comando te da un pokémon
Por último, con el fin de mantener un formato en común: agradecería que pusieran primero todos los snippets, luego los textos y al final los movimientos.

Código:
[SCRIPT]
// Este script se ejecuta al hablar con un npc.
// Lo que hace es:
//     - Girar al npc para que mire al jugador.
//     - Mostrar en pantalla el mensaje "¡Hey! ¿Cómo te va todo?"

#dynamic 0x800000 // Este comando indica dónde empezar a buscar espacio libre
#org @main
lock // Este comando interrumpe el movimiento del npc 
loadpointer @texto // Aquí cargamos el texto a mostrar en la RAM
callstd 2 // Y aquí mostramos una caja de texto que lo contiene en pantalla
release // Permite al npc volver a moverse
end // Finaliza el script 

#org @texto // Este es el texto que se mostrará en pantalla
// Los símbolos '$$' indican el final del texto, no se mostrarán en pantalla.
= ¡Hey! ¿Cómo te va todo?$$
[/SCRIPT]

¿Existe alguna restricción?

De ninguna manera.
Yo solamente postearé scripts de Red Alien y, como siempre, les recomiendo que hagan lo mismo. Sin embargo, no obligaré a nadie. Cada uno puede aportar scripts hechos para el editor que sea: RA, XSE, PKSV, SEA...
Dentro de la carpeta de Google Drive podrán encontrar una subcarpeta para cada editor, si es que hay scripts para él. Así que no teman, nadie va a morderlos por su elección de herramientas. ¡Lo único que hacen falta son ganas de ayudar un poco a la comunidad!

Usuarios que han colaborado

  • @EnamoratDeKatie

Lista de Scripts

Carpeta de Google Drive

Código:
[SCRIPT]
// Este script se ejecuta al hablar con un npc.
// Lo que hace es:
//     - Girar al npc para que mire al jugador.
//     - Mostrar en pantalla el mensaje "¡Hey! ¿Cómo te va todo?"

#dynamic 0x800000 // Este comando indica dónde empezar a buscar espacio libre
#org @main
lock // Este comando interrumpe el movimiento del npc 
loadpointer @texto // Aquí cargamos el texto a mostrar en la RAM
callstd 2 // Y aquí mostramos una caja de texto que lo contiene en pantalla
release // Permite al npc volver a moverse
end // Finaliza el script 

#org @texto // Este es el texto que se mostrará en pantalla
// Los símbolos '$$' indican el final del texto, no se mostrarán en pantalla.
= ¡Hey! ¿Cómo te va todo?$$
[/SCRIPT]
Código:
[SCRIPT]
// Este script se ejecuta al hablar con un npc.
// Lo que hace es:
//     - Girar al npc para que mire al jugador.
//     - Mostrar en pantalla el mensaje "¡Hey! ¿Cómo te va todo?"


#dynamic 0x800000 // Este comando indica dónde empezar a buscar espacio libre
#org @main
lock // Este comando interrumpe el movimiento del npc 
faceplayer // Este comando hace que el npc mire al jugador
loadpointer @texto // Aquí cargamos el texto a mostrar en la RAM
callstd 6 // Y aquí mostramos una caja de texto que lo contiene en pantalla
release // Permite al npc volver a moverse
end // Finaliza el script 

#org @texto // Este es el texto que se mostrará en pantalla
// Los símbolos '$$' indican el final del texto, no se mostrarán en pantalla.
= ¡Hey! ¿Cómo te va todo?$$
[/SCRIPT]
Código:
[SCRIPT]
// Este script se ejecuta al hablar con un npc.
// Lo que hace es:
//     - Pregunta al jugador si sabe de scripts con una caja de SI/NO
//     - Si la respuesta es afirmativa, salta y festeja con otro mensaje.
//     - En caso contrario, exclama y se sorprende.

#include "stdlib/std.rbh" // Incluye algunas definiciones generales
#include "stdlib/stdmoves.rbh" // Incluye definiciones de movimientos

#dynamic 0x800000 // Este comando indica dónde empezar a buscar espacio libre
#org @main
lock // Este comando interrumpe el movimiento del npc 
faceplayer // Este comando hace que el npc mire al jugador
loadpointer @texto // Aquí cargamos el texto a mostrar en la RAM
callstd 5 // Y aquí mostramos una caja de texto que lo contiene en pantalla
if (LASTRESULT == 1) { // Si la variable 0x800D tiene valor 1, dijo que sí
    applymovement 1 @movimientosi // Mueve al npc 1 según @movimientosi
    loadptr @sisabe
    callstd 6
    release // Permite al npc volver a moverse libremente
    end // Termina el script
}
else {
    applymovement 1 @movimientono // Mueve al npc 1 según @movimientono
    loadptr @nosabe
    callstd 6
    release
    end
}

#org @texto // Este es el texto que se mostrará en pantalla
// Los símbolos '$$' indican el final del texto, no se mostrarán en pantalla.
= ¿Sabes de scripts?$$

#org @sisabe
= ¡Sí sabe! ¡Sí sabeee!$$

#org @nosabe
= ¿¡Cómo!? ¿Aún no leísto un tuto?$$

#org @movimientosi
say_happy // Muestra una carita sobre su cabeza
jump_up // Salta en el lugar mirando hacia arriba
jump_up
jump_up
jump_up
look_right // Mira hacia la derecha (volver a mirar al jugador)
move_end // Termina los movimientos

#org @movimientono
say_!! // Muestra dos signos de exclamación sobre su cabeza
move_end
[/SCRIPT]
Código:
[SCRIPT]
// Este script se ejecuta al hablar con un npc (pensado para una pokeball).
// Lo que hace es:
//     - Darle al prota una poción.
//     - Mostrar un mensaje diciendo que la encontró
//     - Hace desaparecer la pokeball
//     - Impide que la pokeball vuelva a aparecer

#include "stdlib/std.rbh" // Incluye algunas definiciones generales
#include "stdlib/stditems.rbh" // Incluye definiciones de objetos

#dynamic 0x800000 // Este comando indica dónde empezar a buscar espacio libre
#org @main
// Este comando te da 1 poción y muestra un mensaje diciendo que la encontraste
giveitem ITEM_POTION 1 MSG_FIND
hidesprite 1 // Esconde al npc con imagen de pokeball
setflag 0x100 // Activa la flag número 0x100 para que no vuelva a aparecer
end // Finaliza el script 
[/SCRIPT]
Código:
[SCRIPT]
// Este script se ejecuta al hablar con un npc.
// Lo que hace es:
//     - Revisar si ya le ha dado un pokémon al jugador.
//     - Si no se lo ha dado, revisar si es chico o chica.
//     - Si es chico, le da un jynx.
//     - Si es chica, le da un electabuzz.
//     - Impide que te de otro pokemon al volver a hablarle.

#include "stdlib/std.rbh" // Incluye algunas definiciones generales
#include "stdlib/stditems.rbh" // Incluye definiciones de objetos
#include "stdlib/stdpoke.rbh" // Incluye definiciones de pokémon

#define es_chico 0 // En lugar de escribir 0, escribiremos 'es_chico'

#dynamic 0x800000 // Este comando indica dónde empezar a buscar espacio libre
#org @main
lock // Este comando interrumpe el movimiento del npc 
faceplayer // Este comando hace que el npc mire al jugador
if (0x40FF != 0) { // Si la variable 0x40FF es distinta a 0, ya te dio un poke
    loadptr    [MENTION=36134]Yat[/MENTION]ediunpoke
    callstd 6
    release // Permite al npc moverse de nuevo
    end // Finaliza el script
}

checkgender // Este comando revisa si el jugador es chico o chica
if (LASTRESULT == es_chico) { // Si la variable 0x800D tiene valor 0, es chico
    loadptr    [MENTION=35709]pokemo[/MENTION]nchico
    callstd 6
    // Te da un jynx al nivel 5 con una baya aranja
    givepokemon JYNX 5 ITEM_ORANBERRY 0 0 0
    addvar 0x40FF 1 // Impide que te vuelva a dar el poke si le hablas otra vez
    release 
    end 
}
else { // Si el valor es 1, es chica
    loadptr    [MENTION=35709]pokemo[/MENTION]nchica
    callstd 6
    // Te da un electabuzz al nivel 5 con una baya meloc
    givepokemon ELECTABUZZ 5 ITEM_PECHABERRY 0 0 0
    addvar 0x40FF 1 // Impide que te vuelva a dar el poke si le hablas otra vez
    release
    end
}

#org    [MENTION=35709]pokemo[/MENTION]nchico
= Te daré un Jynx.$$

#org    [MENTION=35709]pokemo[/MENTION]nchica
= Te daré un electabuzz.$$
[/SCRIPT]
Código:
[SCRIPT]
// Este script se ejecuta al hablar con un npc.
// Lo que hace es:
//     - Revisar cuántos pokémon tiene el jugador en el equipo
//     - Si tiene menos de 6 (el equipo no está lleno), lo completa con pikachus
//     - En caso contrario, no hace nada (ni un mensaje)

#include "stdlib/std.rbh" // Incluye algunas definiciones generales
#include "stdlib/stditems.rbh" // Incluye definiciones de objetos
#include "stdlib/stdpoke.rbh" // Incluye definiciones de pokémon

#dynamic 0x800000 // Este comando indica dónde empezar a buscar espacio libre
#org @main
lock // Este comando interrumpe el movimiento del npc 
faceplayer // Este comando hace que el npc mire al jugador
loadptr @mensaje // Carga un mensaje en la RAM
callstd 6 // Muestra el mensaje cargado en una caja de texto en pantalla
countpokemon // Guarda en la variable 0x800D la cantidad de pokémon en el equipo

while (LASTRESULT < 6) { // Mientras el equipo no esté lleno, se ejecuta esto
    loadptr @tomapikachu
    callstd 6
    // Te da un pikachu al nivel 1 con una poción
    givepokemon PIKACHU 1 ITEM_POTION 0 0 0
    countpokemon // Actualiza el valor de 0x800D con la cantidad de pokémon en el equipo
}

release // Permite al npc moverse libremente
end // Finaliza el script

#org @mensaje
= Te llenaré el equipo de Pikachus.$$

#org @tomapikachu
= Toma un Pikachu.$$
[/SCRIPT]
Código:
[SCRIPT]
// Este script se ejecuta al pisar un bloque predeterminado del mapa.
// Lo que hace es:
//     - Mostrar en pantalla el mensaje "¡Hey! ¿Cómo te va todo?"
//     - Sumar 1 a la variable 0x40FF para que no vuelva a ejecutarse la
//        próxima vez que pises ese espacio.

#dynamic 0x800000 // Este comando indica dónde empezar a buscar espacio libre
#org @main
loadpointer @texto // Aquí cargamos el texto a mostrar en la RAM
callstd 2 // Y aquí mostramos una caja de texto que lo contiene en pantalla
addvar 0x40FF 1 // Esto suma 1 a la variable para que el script no se ejecute de nuevo
end // Finaliza el script 

#org @texto // Este es el texto que se mostrará en pantalla
// Los símbolos '$$' indican el final del texto, no se mostrarán en pantalla.
= Siento algo... Extraño.$$
[/SCRIPT]


 

MetalKaktus

A la luz del quinto día, mira al este
Miembro insignia
NPC RANDOM BUFFER

Código:
//Este script se ejecuta al hablar con un NPC.
//Lo que hace es:
//Te dirá el mismo texto una y otra vez pero alternando aleatoriamente 
//entre Vaporeon, Flareon y Jolteon.

#dynamic 0x800000
#org @start
lock
faceplayer
random 0x3   //genera un valor aleatorio entre 0 y 2 y lo almacena en la variable 0x800D (LASTRESULT)
addvar 0x800D 134     //en la variable 0x800D guardamos el número de pokedex de Va`poreon, por ser el
//primero en la Pokedex
bufferpokemon 0x0 0x800D     //cargamos en el primer buffer el pokemon
//con el numero de pokedex que coincida con el valor almacenado en la variable
msgbox @string 0x6
release
end

#org @string
= Mi evolución de Eevee favorita es\n[buffer1] !
 
Arriba