Buenos días, tardes o noches. De antemano, muchas gracias por leer mi publicación.

Tengo varias dudas acerca de varias cosas sobre RPG Maker XP, pero son cuatro en particular las que me impiden avanzar en mi proyecto.

Pueden responder a cualquiera con libertad si es que saben cómo ayudarme:

  1. Más droops.
    Esté no es un problema que me impida seguir con mi proyecto, pues ya lo tengo resuelto… a medias.
    En RPG Maker XP, los enemigos sólo pueden soltar tres cosas: Experiencia, Dinero y Un objeto específico con una cierta probabilidad, sólo uno y no más, no es posible crear una lista de posibles objetos. Éste problema lo resolví de manera muy rudimentaria haciendo lo siguiente:
    Creando un objeto por enemigo, un objeto que es el que dropea el enemigo al ser derrotado. Un objeto que al ser gastado en el menú, dropea al azar uno o varios objetos de una lista específica creada en un evento común. Tiene la utilidad de poder leer a través de un mensaje, qué objeto u objetos te ha dropeado. Las parte negativa es que no puedes gastar varios de éstos seguidos sin interrupciones, ni siquiera si no se coloca ningún mensaje, pues el menú se cierra automáticamente al llamarse el evento común.
    Además, tengo que crear un objeto por enemigo y un evento común por objeto. Quisiera saber si es posible hacer que los enemigos tengan una lista más amplia de posibles drops, ya sea con un script o con alguna modificación.

  2. Trinckets.
    Éste problema igualmente está resuelto a medias… pero muy a medias.
    En el juego, el jugador siempre tiene control de un personaje en específico, pero a lo largo de la aventura, otros personajes se pueden unir al grupo. La cosa es que éstos aliados no son siempre los mismos y ya he diseñado (con interruptores y variables) una forma de ir cambiando entre aliados según le convenga al jugador. Dejando aliados en una localización específica y permitiendo que haya espacio libre para meter en el grupo a otros personajes aliados (ya que hay un límite de cuatro personajes por grupo). La cosa es que es obligatorio que el personaje principal forme parte del grupo, así que el jugador sí o sí deberá jugar con él, y ese es el punto de partida para mi solución.
    Según el accesorio que el personaje principal lleve equipado, ciertos eventos del juego serán diferentes, pues éstos accesorios fungen como trinckets, y tienen distintos efectos. Hay eventos comunes que cambian sus probabilidades en torno a dichos trinckets y puertas que sólo se abren dependiendo de si tienes el trincket correcto equipado.
    La cosa es… que no hay más, es todo muy limitado. El efecto o los efectos de los “trinckets” sólo funcionan si específicamente el personaje principal los tiene equipados, no funciona si otro personaje los tiene equipados (en teoría puedo hacer un enorme if else que me permita hacer que funcione con todos, pero no haré eso, ya que en el juego hay muchos personajes, y ese if else sería extremadamente grande) y además, realmente no son trinckets propiamente dicho. No tienen ningún efecto fuera de eventos o algún efecto pasivo que se aplique durante los combates y tampoco pueden hacer cosas como tener efectos especiales, como por ejemplo, que si el personaje que lo tenga equipado muere, el trincket desaparezca y automáticamente el personaje que murió reviva al instante en el combate (parecido al tótem de la inmortalidad de Minecraft, pero aplicado a RPG Maker XP).
    Los objetos como accesorios no tienen acceso a eventos comunes si no es por medio de estados, y de todas formas, los eventos comunes tampoco son viables. Debido a que no distinguen entre el usuario y los personajes. Me explico: Suponiendo que un evento común pudiera hacer el efecto descrito (del tótem de la inmortalidad), se aplicaría únicamente al personaje principal o ya directamente a todo el grupo, ya que no hay forma de que un evento común sea capaz de ver qué personaje en específico tiene el trincket y cuál ha muerto para que sólo a ese personaje se le aplique.
    Me gustaría saber si hay alguna solución o alguna forma de crear eventos que distingan a los personajes de manera individual como usuarios individuales de cada objeto en específico. Alternativamente, quisiera saber si es posible que un evento común pueda activarse si cualquier personaje en el grupo actual tiene tal o cual objeto equipado, sin hacer distinción de qué personaje específicamente es el que lo tiene equipado, sino que únicamente mire si al menos uno del grupo lo tiene equipado sin más.
    Añadido a ésto, quisiera saber si es posible que los personajes puedan tener más cosillas donde tener objetos equipados, pues como se habrán dado cuenta por lo que describo, a falta de una ranura específica para trinckets, he utilizado la de los accesorios (lo que implica que sólo puedes tener uno de los dos).

  3. Inventario.
    El inventario en RPG Maker XP es ilimitado y cada objeto se puede stackear en 99 unidades. Quiero saber si es posible limitar el máximo de objetos que puede tener el inventario, si es posible hacer que cada personaje puede tener un inventario individual (y por ende, si el personaje sale del grupo, ese inventario queda inaccesible para el jugador) y si es posible que cada objeto tenga un máximo de unidades en su stack.

  4. Armas.
    Previamente había hecho una publicación preguntando casi lo mismo que haré a continuación. Si bien en ese momento parecía resulta, mucho me temo que la solución que se me dio es igual de rudimentaria y poco útil que el resto que he tenido que usar para suplir las limitaciones del motor. Como ya lo mencioné antes, un evento común no es capaz de distinguir entre personaje y usuario, un evento común que sea llamado por una habilidad (técnica) no será capaz de impedir que dicha habilidad pueda verse inutilizable para un personaje en específico.
    Ademas, el utilizar habilidades para crear el sistema de armas implica que no será posible utilizar ese mismo sistema de armas en cualquier otro personaje que sí use habilidades asociadas a otra cosa que no sean armas. Por lo que es un sacrificio, estaría sacrificando mi sistema de magias para hacer uso de un sistema de armas, y no sería posible usar ambos con uno o más personajes de ninguna forma.
    Quisiera saber si es posible que un objeto clasificado como “arma” pueda ser equipado y de esa manera, éste mismo deba hacer uso de un objeto en específico que funja de munición, y que de acabarse dicha munición: El personaje en cuestión automáticamente equipe otra arma que no requiera munición (un cuchillo por ejemplo), haga uso de una hipotética arma secundaria (suponiendo que pueda tener su espacio dedicado o ranura para ser equipada) y/o el arma de fuego en cuestión quedd inutilizable hasta obtener más munición; y por ende, el personaje no pueda seguir atacando.

Esas son todas mis dudas de momento. Siento mucho si hago cuestionamiento imposibles de resolver, pero mucho me temo que no he sido capaz de resolverlos por mi cuenta y realmente necesito ayuda. La información que he encontrado no está en mi idioma y tampoco es clara ni precisa, y los scripts que he encontrado, son más de lo mismo.

Muchas de estas preguntas se resumen en “se puede hacer, por código”, y no sé qué tanta experiencia tengas programando. Pero ahí va…

1- Es posible modificando el código. El mayor problema que tendrás es dónde meter esa información. Usualmente en una variable en un script, como un array o un hash. Pero fuera de eso, sí es posible añadir más drops para enemigos. Teniendo la información en algún sitio es cuestión de editar la parte donde el juego te da los tesoros, en start_phase5.

2- No entiendo lo de los eventos comunes, cuándo debe detonarse el evento y tal. Pero para revisar si alguien en el grupo tiene un objeto específico equipado puedes usar un llamar script con algo como esto:

r = false
$game_party.actors.each {|a| r=true if a.armor4_id==12}
$game_switches[1] = r

En este caso, si alguien en el grupo tiene el accesorio con ID 12, el interruptor 1 estaría activado.

Es posible añadir más espacios en el equipamento pero igual que muchas otras cosas, es hecho por código. A grandes rasgos requieres hacer tres cosas: añadir el campo en el personaje (la variable que guarda la ID, esto son tres líneas), modificar las partes donde el juego calcula cosas como estados y otras cosas de acuerdo al equipamento, y añadirlo a la interfaz de equipar. Si te animas a hacer esto dale a Ctrl-Shift-F en el editor de scripts y busca armor4_id, lo que sale ahí es más o menos lo que tienes que revisar e imitar, usualmente con añadir un armor5_id debería bastar para crear una segunda ranura de accesorio. Pero sí necesitas saber qué estás haciendo. .-.

3- Cambiar el máximo es fácil (relativamente), hacer inventarios por personaje no tanto. El máximo técnicamente depende de simplemente modificar el código para ganar items, y ciertas partes de las tiendas para que no te dejen comprar 99 objetos si sólo puedes cargar 8, por ejemplo.
El código relevante lo encuentras en las funciones gain_item(item_id, n) gain_weapon(weapon_id, n) y gain_armor(armor_id, n) de la clase Game_Party, y luego en Scene_Shop, en el método update_buy hay otra parte importante donde se calcula el máximo para comprar.

4- ¿Debe el personaje equipar munición? Creo que en general es posible hacer el sistema modificando el funcionamiento del comando atacar en general. Pero igual que lo anterior, hay que hacerlo por código. Este es el que menos tengo idea pero como mínimo necesitas dos cosas: gastar munición al atacar con el arma (esto creo es la parte fácil) y desactivar el ataque si el jugador no tiene munición.

    orochii agradezco la respuesta, pero mucho me temo que me he quedado exactamente igual…
    No tengo ni idea de Ruby, y francamente, preferiría avanzar sin hacer ninguna de esas cuatro cosas que tenía pensado, que aprender desde cero un lenguaje de programación que sólo utilizaré una única vez en toda mi vida. No es que no quiera, es más cuestión de mis propias limitaciones de tiempo. No me puedo dar ese lujo, no de momento por lo menos.

      MaruUwU cambió el título a Más drops, trinckets, inventario y armas. .

      MaruUwU Saludos! Intenté buscar una librería de scripts para rpg maker xp y no encontré ninguna. Si no encuentras una librería en google, tienes la opción de rebajar los estándares de tu proyecto o escoger un motor que se acomode a lo que necesitas.

      Si quieres un sistema de batallas frontal seria mejor que utilices RPG Maker VX Ace. Si no, RPG Maker MV. Este ofrece mas opciones de combate y posee una gran galería de plugins gratis. MZ si no tienes problemas con pagar. La mayoría de lo que deseas lo he visto gratis en plugins de RPG Maker MV, gratis con scripts de RPG Maker VX ACE y pagando con RPG Maker MZ.

        Dream como lo comenté previamente, prefiero seguir sin hacer ninguna de esas cuatro cosas que aprender Ruby para hacerlo todo de manera manual. Y no, no pienso cambiar de motor de ninguna manera.
        No te lo tomes a mal, pero todos mis assets están hechos para funcionar en RPG Maker XP, el cambiar de motor no sólo me retrasaría, sino que para variar, lejos de reducir mis estándares, los estaría aumentando enormemente. Tanto VX Ace como MV y posteriores usan gráficos más grandes que XP, y eso además de aumentar enormemente mi carga de trabajo, también arruinaría por completo el estilo gráfico del juego.

        Para variar, tampoco encontré nada parecido para VX o VX Ace, así que cambiar de motor no sólo no me beneficiaría, sino que justo al contrario, me perjudicaría enormemente y no ganaría nada con eso. El juego no ganaría nada en gráficos, ni en banda sonora, ni en jugabilidad, sólo estaría perdiendo.

          MaruUwU en cuanto al primero podrías probar con esto: https://www.neoseeker.com/forums/22121/t1490747-more-one-probable-item-reward/ en el spoiler del cuarto mensaje tienes un script, a lo mejor te sirve. De los otros veo mas complicado que encuentres algo que te sirva, aunque del tercero puede que haya alguna cosa parecida a lo que buscas.

            CalamarRojo gracias por la publicación. Probaré hacer justo eso y veré si funciona.