FANDOM


Esta página explica cómo se utilizan los objetos en el juego, incluyendo cómo se reciben y entregan, contar cuántas unidades de un objeto tiene el jugador, verificar qué clase de objeto es un objeto, y mucho más.

Entregar un objeto al jugador Editar

Hay tres formas de entregar un objeto al jugador:

Script Lo que hace
Kernel.pbReceiveItem(PBItems::POTION) Este script le entrega un objeto al jugador. Como en todas partes, la parte "POTION" del script es el nombre interno del objeto.

Se muestra dos mensajes: uno indica que el objeto ha sido recibido (y si es una MT/MP, el movimiento que enseña también es mostrado), y el segundo mensaje indica que el jugador ha puesto el objeto en el bolsillo adecuado de su Mochila. Si el objeto es Restos, el primer mensaje dirá que "algunos Restos" fueron recibidos.

Este script debería ser usado cuando se recibe un objeto de un PNJ, porque muestra los mensajes de que el jugador lo ha "obtenido" al objeto (es decir, de otra persona, en lugar de encontrarlo).

Kernel.pbItemBall(PBItems::POTION) Este script funciona de la misma forma que el anterior, salvo que el primer mensaje indica que el jugador ha encontrado el objeto (en lugar de obtenerlo). Además, si el objeto no puede ser introducido en la Mochila, el segundo mensaje dirá que dicha Mochila está llena, y el objeto no será levantado.

Este script es usado en las balls con objetos. Cuando se crea una ball con un objeto, este script es configurado en el evento de la ball automáticamente cuando el juego es compilado, por lo que no necesitarás utilizado la mayoría de la veces.

$PokemonBag.pbStoreItem(:POTION,quantity) Este script en particular es usado por los dos métodos anteriores. Es este script el que realmente agrega el objeto en la Mochila, y no muestra ningún mensaje.

Si la Mochila está llena al momento de intentar agregar objetos, se agregarán todos los que sean posibles y se ignorarán los demás, pero se tratará como si no se hubieran tomado objetos (es decir, el método devolverá FALSE).

Se debe comprobar de antemano si el jugador tiene especio suficiente para almacenar todos los objetos que se quieran agregar. Normalmente, ésto no será un problema, ya que por defecto todos los bolsillos de la Mochila tienen un tamaño infinito.

Normalmente no será necesario utilizar manualmente este script nunca.

Los tres scripts de arriba devolverán TRUE si el objeto ha sido agregado a la Mochila del jugador, y FALSE en caso contrario.

Dado que cada ranura de la Mochila puede contener un máximo de 99 unidades de un objeto, si se intenta dar al jugador más de esta cantidad, los excedentes se moverán a una ranura nueva. Por ejemplo, si el jugador tiene 97 Pociones y de alguna forma obtiene 5 más, 2 de esas Pociones irán a la ranura existente y los otros 3 irán a una ranura nueva.

Entregar varios objetos Editar

Los primeros dos scripts de la tabla anterior pueden dar más de 1 unidad de un objeto. Por ejemplo:

Kernel.pbReceiveItem(PBItems::POKEBALL,5)
Kernel.pbReceiveItem(PBItems::ORANBERRY,2,_I("Bayas Aranja"))
Kernel.pbItemBall(PBItems::POTION,2)
Kernel.pbItemBall(PBItems::WISEGLASSES,3,_I("un par de Gafas Especiales"))

Además del objeto, hay dos parámetros más: la cantidad y el "plural". Los dos parámetros son opciones; si no se informa la cantidad, se agregará 1 como en la tabla de arriba.

Si el script está agregando más de 1 unidad del objeto, y el "plural" no es informado, entonces el mensaje mostrado agregará una "s" al final del nombre del objeto (por ejemplo, "Poké Balls", "Pocións"). Si se informa el "plural", entonces será usado en lugar del nombre del objeto (por ejemplo, "Bayas Aranja", "un par de Gafas Especiales").

Se deberá agregar un "plural" en caso que no quede bien escrito el plural como el nombre común más una "s" al final. En caso de que sea correcto sólo con agregar la "s", entonces se puede omitir este parámetro.

Eliminar un objeto de la Mochila Editar

Para eliminar un objeto que tiene el jugador, se usa el script:

$PokemonBag.pbDeleteItem(:POTION)

Para borrar varias unidades del mismo objeto, se puede agregar la cantidad como segundo parámetro, entonces:

$PokemonBag.pbDeleteItem(:POTION,5)

Este script devuelve TRUE si el objeto ha sido borrado, y FALSE en caso contrario. Este script no muestra ningún mensaje para indicar si el objeto ha sido eliminado.

Tenga en cuenta que si el script intenta borrar más de un objeto de la Mochila, entonces se borrarán todos los que sean posible (es decir, todos ellos), pero luego el script devolverá FALSE, porque no se habrán podido borrar todos los objetos que se querían.

Antes de borrar un objeto, se debería comprobar que el jugador tiene tantas unidades como las que se quieren borrar, de forma que el script se pueda ejecutar exitosamente.

Contar un objeto en la Mochila Editar

Para determinar la cantidad de unidades de un objeto en particular que tiene el jugador, se utiliza el siguiente script:

$PokemonBag.pbQuantity(:POTION)

Este script devuelve un valor, y no hace nada más por sí mismo. Este valor debería ser guardado como una variable, o ser usado como parte de una validación comparando este valor con algún otro, por ejemplo:

itemquant=$PokemonBag.pbQuantity(:POTION)
$game_variables[42]=$PokemonBag.pbQuantity(:POTION)
$PokemonBag.pbQuantity(:POTION)==5
$PokemonBag.pbQuantity(:POTION)>0

La validación de si el jugador tiene al menos 1 unidad de un objeto suele hacerse para determinados Objetos Claves, como un Tarjeta Llave. Estos objetos no tienen efectos por sí mismos, pero las puertas se abren cuando el jugador interactúa con ellas mientras lleva el objeto en su Mochila. Esto se hace usando el último ejemplo en un comando de evento de "Condiciones y efectos".

Elegir un objeto de la Mochila Editar

Para hacer que el jugador seleccione un objeto de la Mochila, se utiliza cualquier de los siguientes scripts:

Kernel.pbChooseItem
Kernel.pbChooseItem(1)

Este método devuelve el ID del objeto seleccionado (o 0 si no se ha seleccionado ninguno). El argumento es opcional, y es el número de la Variable Global en la que se guarda el valor devuelto (además de devolver ese valor).

Para hacer que el jugador seleccione entre una lista específica de objetos, se utiliza el siguiente script:

pbChooseItemFromList(_I("Selecciona un objeto"),1,:POTION,:REPEL,:POKEBALL)

Este método devuelve el ID del objeto seleccionado, o -1 si la selección ha sido cancelada. El segundo argumento (en este caso, el número 1) es la Variable Global en la que se guarda el valor devuelto (además de devolver ese valor).

Se pueden listar cualquier cantidad de objetos. Al jugador se le presentará una lista con los objetos de los que tenga al menos 1 unidad. Si el jugador no tiene ninguno de los objetos de la lista, este método devolverá/guardará automáticamente 0 sin presentar ningún mensaje.

Otras verificaciones Editar

Abajo se muestra una lista de otras maneras de revisar o manipular un objeto.

Script Descripción
PBItems.getName(PBItems::POTION) Devuelve el nombre del objeto.
pbGetPrice(PBItems::POTION) Devuelve el valor del objeto, es decir, el precio que pagaría el jugador al comprarlo. El precio al venderlo es la mitad de este valor.
pbIsImportantItem?(PBItems::POTION) Devuelve TRUE si el objeto es un Objeto Clave o un MO (es decir, un objeto que no se puede vender ni tirar); devuelve FALSE en caso contrario.
pbIsKeyItem?(PBItems::POTION) Devuelve TRUE si el objeto es un Objeto Clave (es decir, está guardado en el bolsillo 8); devuelve FALSE en caso contrario.
pbIsMachine?(PBItems::POTION) Devuelve TRUE si el objeto es una MT o una MO; FALSE en caso contrario.
pbIsTechnicalMachine?(PBItems::POTION) Devuelve TRUE si el objeto es una MT; FALSE en caso contrario.
pbIsHiddenMachine?(PBItems::POTION) Devuelve TRUE si el objeto es una MO; FALSE en caso contrario.
pbIsHiddenMove?(PBMoves::CUT) Devuelve TRUE si el movimiento puede ser enseñado por alguna MO; FALSE en caso contrario.
pbGetPocket(PBItems::POTION) Devuelve el número de bolsillo donde está guardado el objeto.
pbIsMail?(PBItems::POTION) Devuelve TRUE si el objeto es una Carta; FALSE en caso contrario.
pbIsPokeBall?(PBItems::POTION) Devuelve TRUE si el objeto es una Poké Ball o una Cepo Ball; FALSE en caso contrario.
pbIsSnagBall?(PBItems::POTION) Devuelve TRUE si el objeto es una Cepo Ball, o si es una Poké Ball cuando $PokemonGlobal.snagMachine=true; FALSE en caso contrario.
pbIsBerry?(PBItems::POTION) Devuelve TRUE si el objeto es una baya; FALSE en caso contrario.
pbClosestHiddenItem Devuelve la ubicación del objeto oculto más cercano; devuelve nil si no hay ninguno al alcance (es decir, dentro de un cuadrado de 17 tiles a cada lado, con el jugador en el medio). Usado por el Buscaobjetos.
$PokemonBag.pbCanStore?(:POTION,5) Devuelve TRUE si hay espacio en la Mochila para una cantidad dada de un determinado objeto; FALSE si no lo hay.