Jump to content

I'm familiar with RPGMaker XP, but I cannot figure out how to mod this game. Please help.


SedContra

Recommended Posts

Hi, and thanks in advance for your help. My situation is exactly as the title says. I'll give a bit more information. I'm trying to make three mods, which I've listed in order of ambition. The first should be fairly easy. The second will be a lot of work, but it shouldn't be especially difficult. The third will be a major undertaking. I'm encountering several obstacles.

 

Goals:

  1. Create a TM Tutor in Lapis Ward who will teach a Pokemon any TM for an exorbitant fee. (I'm thinking 75k for most TMs, and 125k for the really good ones like earthquake, ice beam, and so on.)
  2. Modify some dialogue throughout the game as a favor to a friend.
  3. Create a quest system for tracking down rare Pokemon (similar to the Gen II legendary dogs system) so that people who are willing to put in the work to get e.g. an Abra in the early game can do so.

 

Obstacles:

  1. Setup. I could not find any helpful resources on modding existing RPGMaker XP games. To access the Reborn resources, scripts, and maps, I created a new RPGMaker project (call it TM Mod), then added the Reborn data, audio, etc. folders to my TM Mod project folder. This allowed me to access and edit Reborn maps and events. But I am not sure that it is the correct way to access and edit those things. I'm worried that if I've set it up incorrectly, my mods will ultimately fail when I try to apply them to an existing Reborn installation.
    Question: How should I be setting up my RPGMaker XP project to create mods?
  2. Playtesting. Maybe because I set up incorrectly, when I try to playtest what I've done, I get "Error: File PBS\Townmap.txt not found." For obvious reasons, being unable to playtest what I've made is not good.
    Question: What do I need to do so that I can playtest my work as I go?
  3. Publishing. I'm obviously very far off from publishing even the basic first mod, but I want to be sure that when I do publish, I do it properly. To me, that means providing all the files my mod needs to work and minimizing the incompatibility with other mods.
    Question: When I'm publishing a mod I've made, how do I know what files I need to include?
     

Thank you for your patience and your help. I really appreciate it, and I hope soon I'll be able to contribute something valuable to this community.

Link to comment
Share on other sites

I'll assess obstacles then your goals.

 

1. In order to edit a game you need two things. The first is an rxproj file which is how you open and edit most if the game. The other is PBS file if you want to edit some of the data files like trainer teams. You probably are looking more for the former which can be created by starting a new project and copy and dragging all the files from Reborn to replace them. PBS can be found in faq

 

2. See PBS file above. You don't need to run debug/playtesting mode unless you do PBS file changes. It is better to open the game as you normally would to play it. But just drag and drop the PBS folder into the games folder and it should work.

 

3. It depends on what you did. Something like Redux contains so many edits it's better to just upload the full game. Most people would just want to compress and upload the data folder. Though maybe asking @Waynolt about how SWM works wouldn't be a bad idea. If you want to upload to site only we will have to talk.

 

Now for goals.

 

1. I guess the best approach would be for this would be massive edits to the tutor text file in the PBS then a massive amount of eventing for this. Maybe someone has an alternative method to cut it down but it sounds like you'll have to manually add all TMs into tutor moves.

 

2. I do this all the time. Enter and space bar are great shortcuts to reduce the time needed to get this done. Just ping me if you can't find something specific and I can tell you where it is in the map. They are found on boxes within the map unless you are talking victory or last mon quotes.

 

3. There was a system like the legendary dogs for a couple event mon Pokemon but it turned out to be broken and was replaced. I'm not even sure if it's possible as that's probably an Ame or Marc question.

 

I will support the endeavor but I feel like you are biting off more than you can chew being a greenhorn.

 

 

  • Upvote 2
Link to comment
Share on other sites

I would also recommend that instead of doing all TMs to pick 10-20 and divide them into groups of 4 with the price being shards for each group. Start with the most desired moves the sprinkle your way down to group 4. That'll save you a lot of time when making this tutor. Or you can do unorthodoxed methods for payments. It's not really a big deal bit a suggestion since moves like charge beam are near worthless due to how early you get it.

 

I only know how to do this the manual way. Wouldn't surprise me if someone cooks up a program to make a tutor event easier to make.

Link to comment
Share on other sites

1 minute ago, Commander said:

Start with the most desired moves the sprinkle your way down to group 4. That'll save you a lot of time when making this tutor.

I may do that, if only for balance's sake. Why would that save time making the tutor? I haven't started making the tutor code, so I don't understand why breaking it up will be faster.

Link to comment
Share on other sites

I'd like to add something to what @Commander wrote:
 

On 4/5/2019 at 5:05 PM, Commander said:

1. I guess the best approach would be for this would be massive edits to the tutor text file in the PBS then a massive amount of eventing for this. Maybe someone has an alternative method to cut it down but it sounds like you'll have to manually add all TMs into tutor moves.

Alterntatively, you can add a custom script 😀
You'll need a custom function to find all of the TM moves, and then add it to an event in Lapis' map.

I would suggest duplicating the Relearner function and editing that, so that half the work is pretty much done... for example:

Spoiler

 


def aaaStartAllTMsScreen
  iCost = 125000 #Edit this to change the cost
  
  iRet = Kernel.pbMessage(_INTL("Hey, kiddo... wanna teach your peeps somethin' real cool? It'll cost ya ${1}", iCost), [_INTL("I'm listening..."), _INTL("No")], 2)
  
  if ($Trainer.money >= iCost)
    if iRet == 0
      scene=PokemonScreen_Scene.new
      screen=PokemonScreen.new(scene,$Trainer.party)
      screen.pbStartScene(_INTL("Choose a Pokémon."),false)
      iMon=screen.pbChoosePokemon
      if iMon >= 0
        pbFadeOutIn(99999){
           scene=MoveRelearnerScene.new
           screen=MoveRelearnerScreen.new(scene)
           screen.aaaGetTMMovesForTutor($Trainer.party[iMon], iCost)
        }
      end
    else
      Kernel.pbMessage(_INTL("Hey, no problem pal!"))
    end
  else
    Kernel.pbMessage(_INTL("Yeah, like you could afford it..."))
  end
end


class MoveRelearnerScreen
  def aaaGetTMMovesForTutor(pokemon, iCost)
    moves = []
    if $ItemData && pokemon && !(pokemon.isEgg?) && !(pokemon.isShadow? rescue false)
      for aItem in 0...$ItemData.length
        if pbGetPocket(aItem) == 4 # TM pocket
          if $PokemonBag.pbQuantity(aItem) == 0 #Why list TMs that the player already has?
            atk = $ItemData[aItem][ITEMMACHINE] # ITEMMACHINE   = 8
            moves.push(atk) if !pokemon.knowsMove?(atk) && pbSpeciesCompatible?(pokemon.species, atk, pokemon)
          end
        end
      end
    end
    
    if moves.length > 0 
      @scene.pbStartScene(pokemon,moves)
      loop do
        move=@scene.pbChooseMove
        if move<=0
          if @scene.pbConfirm(
            _INTL("Give up trying to teach a new move to {1}?",pokemon.name))
            @scene.pbEndScene
            return false
          end
        else
          if @scene.pbConfirm(_INTL("Teach {1}?",PBMoves.getName(move)))
            if pbLearnMove(pokemon,move)
              $Trainer.money = $Trainer.money-iCost
              @scene.pbEndScene
              return true
            end
          end
        end
      end
    else
      Kernel.pbMessage(_INTL("Mmm no, that one ain't cool enough for my stuff."))
      @scene.pbEndScene
      return false
    end
  end
end

 

 


In the event, then, you can simply call it by using "aaaStartAllTMsScreen"

 

 

 

On 4/5/2019 at 3:45 PM, SedContra said:

Question: When I'm publishing a mod I've made, how do I know what files I need to include?

The easiest way would be to keep track of the ones you edited or created.

If you added or modified a map, you have to include it.

If you added a custom script, you need to include it. (Reborn Episode 18 is able to load scripts from the folder Data/Mods: create a .txt file, rename its extension to .rb, and paste its code in there: the game will load it without needing to include and replace Scripts.rxdata)

Etc...

Link to comment
Share on other sites

5 minutes ago, Waynolt said:

Alterntatively, you can add a custom script 😀
You'll need a custom function to find all of the TM moves, and then add it to an event in Lapis' map.

I would suggest duplicating the Relearner function and editing that, so that half the work is pretty much done... for example: 

That was going to be my approach, but I just realized that if I do it that way, it will be hard to group them into price categories (except maybe by base power or something like that).

 

6 minutes ago, Waynolt said:

The easiest way would be to keep track of the ones you edited or created.

If you added or modified a map, you have to include it.

If I add a variable, is that stored in the map where I create it, every map that uses the variable for an event, or somewhere else entirely?

Link to comment
Share on other sites

11 minutes ago, SedContra said:

That was going to be my approach, but I just realized that if I do it that way, it will be hard to group them into price categories (except maybe by base power or something like that).

If you can't find an objective rule to use to specify the cost automatically, then there's really no way around it (that I can think of): you'll have to do it manually...
 

11 minutes ago, SedContra said:

If I add a variable, is that stored in the map where I create it, every map that uses the variable for an event, or somewhere else entirely?

Depends on how you add it... afaik:

$ variables are globals, and for the most part are not stored
@ variables are mostly stored by the object using them

variables without symbols are freed when the script is done with them

There is a set of game variables (stored/loaded as $data_system.variables in the script and accessible with the Debug menu - can't remember how to access them in the events' editor) that gets saved, but you have to make sure you're using one that isn't already used for something else (because it's essentially a set of global variables, that can be used by e.g. any map in the game)...

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...