RMRK is retiring.
Registration is disabled. The site will remain online, but eventually become a read-only archive. More information.

RMRK.net has nothing to do with Blockchains, Cryptocurrency or NFTs. We have been around since the early 2000s, but there is a new group using the RMRK name that deals with those things. We have nothing to do with them.
NFTs are a scam, and if somebody is trying to persuade you to buy or invest in crypto/blockchain/NFT content, please turn them down and save your money. See this video for more information.
DT's Difficulty

0 Members and 1 Guest are viewing this topic.

**
Rep: +0/-0Level 55
RMRK Junior
Works perfectly, thank you so much!!

****
Rep:
Level 71
Your welcome, sorry about that bug.

**
Rep: +0/-0Level 48
RMRK Junior
Hey, so I have a question regarding difficulty and saving / loading.

For the purposes of my game, I disabled the ability to select the difficulty from the main menu (Just because I don't want my friends to say they "beat" my game on a super hard difficulty by playing easy-mode all the way through and then switching the difficulty on the last boss).

Problem with my situation is that I have the difficulty selection at the start of the game, and the script will run fine when it comes to the initial run.

However, I noticed that when I save and close the game out entirely, the game seems to essentially "forget" what difficulty I originally selected, and will then just use normal difficulty by default.

Is there some piece of code or way to ensure that the game will remember what difficulty I've chosen, instead of having it revert back to normal mode every time I load up the game?

****
Rep:
Level 71
I'll try to get around fixing it, I'm really busy right now. Unfortunately RPG Maker doesn't have a simple command like PlayerPrefs.SetInt("Difficulty", 1). I tried for a little while using a bunch of stuff in the data manager but it doesn't seem to work.

*
*crack*
Rep:
Level 64
2012 Most Unsung Member2012 Best NewbieFor frequently finding and reporting spam and spam bots
Code: [Select]
#===============================================================================
#
# DT's Difficulty
# Author: DoctorTodd
# Date (06/24/2012)
# Version: (1.0.0) (VXA)
# Level: (Medium)
# Email: Todd@beacongames.com
#
#===============================================================================
#
# NOTES: 1)This script will only work with ace.
#        2)A difficulty must be selected before the first battle or the game WILL
#        CRASH.
#
#===============================================================================
#
# Description: Lets the player select the games difficulty.
#
# Credits: Me (DoctorTodd)
#
#===============================================================================
#
# Instructions
# Paste above main.
#
#===============================================================================
#
# Free for any use as long as I'm credited.
#
#===============================================================================
#
# Editing begins 38 and ends on 71.
#
#===============================================================================
module TODDDIFFICULTY
 
  #Easy Text.
  EASYT = "Easy"
 
  #Normal Text.
  NORMALT = "Normal"
 
  #Heroic Text.
  HEROICT = "Heroic"
 
  #Hard Text.
  HARDT = "Hard"
 
  #Easy enemy parameters multiplier.
  EASYM = 0.5
 
  #Heroic enemy parameters multiplier (Normal is skipped since it's what put
  #you into the database).
  HEROICM = 1.5
 
  #Hard enemy parameters multiplier.
  HARDM = 2
 
  #The text above where the selection is made.
  TEXT = "Please select a difficulty:"
 
  #Menu command?
  MENU = true
 
  #Sound effect to play when difficulty is selected.
  SE = "Darkness8"
 
  #Switch to allow cancelling the difficulty selection.
  #MUST NOT BE ON WHEN SELECTING FOR THE FIRST TIME.
  SWITCH = 5

end
#==============================================================================
# ** Game_Enemy
#------------------------------------------------------------------------------
#  This class handles enemies. It used within the Game_Troop class
# ($game_troop).
#==============================================================================

class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # * Get Base Value of Parameter
  #--------------------------------------------------------------------------
  alias todd_difficulty_gmen_param_base param_base
  def param_base(param_id, *args)
  n1 = todd_difficulty_gmen_param_base(param_id, *args)
  n2 = case $game_system.todd_difficulty
  when 0 then TODDDIFFICULTY::EASYM
  when 1 then 1
  when 2 then TODDDIFFICULTY::HEROICM
  when 3 then TODDDIFFICULTY::HARDM
  end
  return n1 * n2
 end
end


#==============================================================================
# ** Game_System
#------------------------------------------------------------------------------
#  This class handles system data. It saves the disable state of saving and
# menus. Instances of this class are referenced by $game_system.
#==============================================================================

class Game_System
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :todd_difficulty            # save forbidden
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  alias todd_difficulty_gamesystem_init initialize
  def initialize
    @todd_difficulty = 0
    todd_difficulty_gamesystem_init
  end
end

#==============================================================================
# ** Window_DifficultySelection
#==============================================================================

class Window_DifficultySelection < Window_HorzCommand
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0)
  end
  #--------------------------------------------------------------------------
  # * Get Window Width
  #--------------------------------------------------------------------------
  def window_width
    Graphics.width/2 + 20
  end
  #--------------------------------------------------------------------------
  # * Get Digit Count
  #--------------------------------------------------------------------------
  def col_max
    return 4
  end
  #--------------------------------------------------------------------------
  # * Create Command List
  #--------------------------------------------------------------------------
  def make_command_list
    msgbox_p($game_system.todd_difficulty)
    add_command(TODDDIFFICULTY::EASYT,     :easy)
    add_command(TODDDIFFICULTY::NORMALT,   :normal)
    add_command(TODDDIFFICULTY::HEROICT,    :heroic)
    add_command(TODDDIFFICULTY::HARDT, :hard)
  end
end
#==============================================================================
# ** Window_DifficultyName
#==============================================================================

class Window_DifficultyName < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, window_width, fitting_height(1))
    refresh
  end
  #--------------------------------------------------------------------------
  # * Get Window Width
  #--------------------------------------------------------------------------
  def window_width
    return Graphics.width/2 + 20
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    contents.clear
    draw_text(15, -27, 400, 80, TODDDIFFICULTY::TEXT)
  end
end
#==============================================================================
# ** Scene_Difficulty
#==============================================================================

class Scene_Difficulty < Scene_MenuBase
  #--------------------------------------------------------------------------
  # * Start Processing
  #--------------------------------------------------------------------------
  def start
    super
    create_command_window
    create_name_window
  end
  #--------------------------------------------------------------------------
  # * Create Command Window
  #--------------------------------------------------------------------------
  def create_command_window
    @command_window = Window_DifficultySelection.new
    @command_window.set_handler(:easy,      method(:command_easy))
    @command_window.set_handler(:normal,     method(:command_normal))
    @command_window.set_handler(:heroic,     method(:command_heroic))
    @command_window.set_handler(:hard,    method(:command_hard))
    @command_window.set_handler(:cancel,    method(:return_scene))if $game_switches[TODDDIFFICULTY::SWITCH] == true
    @command_window.x = Graphics.width/2 - 170
    @command_window.y = Graphics.height/2 - 50
  end
  #--------------------------------------------------------------------------
  # * Create Difficulty Window
  #--------------------------------------------------------------------------
  def create_name_window
    @name_window = Window_DifficultyName.new
    @name_window.x = Graphics.width/2 - 170
    @name_window.y = Graphics.height/2 - 97
  end
  #--------------------------------------------------------------------------
  # * [easy] Command
  #--------------------------------------------------------------------------
  def command_easy
    $game_system.todd_difficulty = 0
    Audio.se_play("Audio/SE/" + TODDDIFFICULTY::SE, 100, 100)
    return_scene
   end
  #--------------------------------------------------------------------------
  # * [normal] Command
  #--------------------------------------------------------------------------
  def command_normal
    $game_system.todd_difficulty = 1
    Audio.se_play("Audio/SE/" + TODDDIFFICULTY::SE, 100, 100)
    return_scene
   end
  #--------------------------------------------------------------------------
  # * [heroic] Command
  #--------------------------------------------------------------------------
  def command_heroic
    $game_system.todd_difficulty = 2
      Audio.se_play("Audio/SE/" + TODDDIFFICULTY::SE, 100, 100)
    return_scene
   end
  #--------------------------------------------------------------------------
  # * [hard] Command
  #--------------------------------------------------------------------------
  def command_hard
    $game_system.todd_difficulty = 3
        Audio.se_play("Audio/SE/" + TODDDIFFICULTY::SE, 100, 100)
    return_scene
   end
 end
 if TODDDIFFICULTY::MENU == true
#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
#  This class performs the menu screen processing.
#==============================================================================

class Scene_Menu < Scene_MenuBase
  #--------------------------------------------------------------------------
  # * Create Command Window
  #--------------------------------------------------------------------------
  alias todd_dif_menu_add_menu_command create_command_window
  def create_command_window
    todd_dif_menu_add_menu_command
    @command_window.set_handler(:dif,      method(:command_dif))
  end
end
  #--------------------------------------------------------------------------
  # * [Difficulty] Command
  #--------------------------------------------------------------------------
  def command_dif
  SceneManager.call(Scene_Difficulty)
  end
end

if TODDDIFFICULTY::MENU == true
#==============================================================================
# ** Window_MenuCommand
#------------------------------------------------------------------------------
#  This command window appears on the menu screen.
#==============================================================================

class Window_MenuCommand < Window_Command
  #--------------------------------------------------------------------------
  # * Add Main Commands to List
  #--------------------------------------------------------------------------
  alias todd_dif_menu_command_add_to_menu add_main_commands
  def add_main_commands
     todd_dif_menu_command_add_to_menu
    add_command("Difficulty",   :dif,   main_commands_enabled)
  end
 end
end

Saves now :)
Look into attrs if you ever make a comeback to Ruby :D
Also replaced the Param_Base with Pacman's method :pacman:
« Last Edit: January 09, 2013, 12:18:18 AM by D&P3 »
All of my scripts are totally free to use for commercial use. You don't need to ask me for permission. I'm too lazy to update every single script post I ever made with this addendum. So ignore whatever "rule" I posted there. :)

All scripts can be found at: https://pastebin.com/u/diamondandplatinum3

**
Rep: +0/-0Level 48
RMRK Junior
Man, you're some kind of coding wizard or something to figure out the issue so quickly.

One thing that I'm noticing when I'm trying out your script though: when I initially start a new game / character, there are two windows that popup (one immediately after another) that both just say "0". I can hit okay for both of them and there don't seem to be any errors created, but is there some way to hide those windows?

Again though, thank you very much for your hard work and getting back to me on this issue so fast.

*****
my name is Timothy what's yours
Rep:
Level 79
Hello
2014 Most Missed Member2014 Zero to Hero2014 Best IRC Quote2012 Zero To HeroSecret Santa 2012 ParticipantContestant - GIAW 9For frequently finding and reporting spam and spam bots2011 Zero to Hero
Also replaced the Param_Base with Pacman's method :pacman:

 :gracie:

Also it seems you forgot to take out your 'everything's working' check, Chris. DoctorPsycho, find the line that says:
Code: [Select]
    msgbox_p($game_system.todd_difficulty)
and delete it. I think that's it.
« Last Edit: January 09, 2013, 12:30:58 AM by Pacman »
it's like a metaphor or something i don't know

****
Rep:
Level 71
Thanks for fixing it D&P3!

Quote
Look into attrs if you ever make a comeback to Ruby
I'll make sure to. Though I highly doubt I will. Now that I'm using Unity and Ruby was never really my language. I learned more with JavaScript then 1/20 of the time I spent with Ruby.
« Last Edit: January 09, 2013, 12:35:09 AM by DoctorTodd »

**
Rep: +0/-0Level 48
RMRK Junior
And that takes care of my popup problem! Thank you to all three of you guys for your superb help. You're fantastic.

*
*crack*
Rep:
Level 64
2012 Most Unsung Member2012 Best NewbieFor frequently finding and reporting spam and spam bots
Also it seems you forgot to take out your 'everything's working' check, Chris. DoctorPsycho, find the line that says:
Code: [Select]
    msgbox_p($game_system.todd_difficulty)
and delete it. I think that's it.
That was a derp on my part :|
My excuse is that I was multitasking on scripts :P
All of my scripts are totally free to use for commercial use. You don't need to ask me for permission. I'm too lazy to update every single script post I ever made with this addendum. So ignore whatever "rule" I posted there. :)

All scripts can be found at: https://pastebin.com/u/diamondandplatinum3

*****
my name is Timothy what's yours
Rep:
Level 79
Hello
2014 Most Missed Member2014 Zero to Hero2014 Best IRC Quote2012 Zero To HeroSecret Santa 2012 ParticipantContestant - GIAW 9For frequently finding and reporting spam and spam bots2011 Zero to Hero
No need to worry, I've lost count of how many times I've done that :P
it's like a metaphor or something i don't know

***
Rep:
Level 85
Is there any way to get this script working for ABS systems? This sounds awesome, and I was very sad when I read that it was uncompatible with ABS systems.

Kind regards,
Drakenkanon

****
Rep:
Level 71
I only tested it with Khas' ABS. Try it any way, this was a while ago and the ABS may haven't have been the issue. The problem was the game didn't load at all, the problem went away after I removed Khas' ABS but it came back. So it may actually work fine. I can't actually help you with this since I don't have RPG Maker any more.

**
Rep: +0/-0Level 71
RMRK Junior
Hey DoctorTodd, I've just put the script in, but right at the start of my game, just before it calls the script, this box appears with a 0 in it and an ok button. After pressing ok, the box disappears, then reappears. When i press ok again, it disappears, and the script loads. I've attached a screenshot of it. Just wondering if you've ever encountered this error and might know a way around it. Would be really thankful for any help  :)

****
Rep:
Level 71
Also it seems you forgot to take out your 'everything's working' check, Chris. DoctorPsycho, find the line that says:
Code: [Select]
    msgbox_p($game_system.todd_difficulty)
and delete it. I think that's it.
Doing this will fix it.

**
Rep: +0/-0Level 71
RMRK Junior
thanks. everything's fine now  :)

****
Rep:
Level 69
I really like this script, I'm going to use it.

Edit: Is there a way the game can check the difficulty? That way you could make some way to reward harder difficulties more.
« Last Edit: June 22, 2013, 09:51:32 PM by Mushu »

****
Rep:
Level 71
There is now. The variable ID in the settings will contain the difficulty number (0-3).
Code: [Select]
#===============================================================================
#
# DT's Difficulty
# Author: DoctorTodd
# Date (06/24/2012)
# Version: (1.0.0) (VXA)
# Level: (Medium)
# Email: Todd@beacongames.com
#
#===============================================================================
#
# NOTES: 1)This script will only work with ace.
#        2)A difficulty must be selected before the first battle or the game WILL
#        CRASH.
#
#===============================================================================
#
# Description: Lets the player select the games difficulty.
#
# Credits: Me (DoctorTodd), D&P3 for saving bug fix.
#
#===============================================================================
#
# Instructions
# Paste above main.
#
#===============================================================================
#
# Free for any use as long as I'm credited.
#
#===============================================================================
#
# Editing begins 38 and ends on 71.
#
#===============================================================================
module TODDDIFFICULTY
 
  #Easy Text.
  EASYT = "Easy"
 
  #Normal Text.
  NORMALT = "Normal"
 
  #Heroic Text.
  HEROICT = "Heroic"
 
  #Hard Text.
  HARDT = "Hard"
 
  #Easy enemy parameters multiplier.
  EASYM = 0.5
 
  #Heroic enemy parameters multiplier (Normal is skipped since it's what put
  #you into the database).
  HEROICM = 1.5
 
  #Hard enemy parameters multiplier.
  HARDM = 2
 
  #The text above where the selection is made.
  TEXT = "Please select a difficulty:"
 
  #Menu command?
  MENU = true
 
  #Sound effect to play when difficulty is selected.
  SE = "Darkness8"
 
  #Switch to allow cancelling the difficulty selection.
  #MUST NOT BE ON WHEN SELECTING FOR THE FIRST TIME.
  SWITCH = 5

  #Variable ID that contains the current difficulty.
  VARIABLE = 1

end
#==============================================================================
# ** Game_Enemy
#------------------------------------------------------------------------------
#  This class handles enemies. It used within the Game_Troop class
# ($game_troop).
#==============================================================================

class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # * Get Base Value of Parameter
  #--------------------------------------------------------------------------
  alias todd_difficulty_gmen_param_base param_base
  def param_base(param_id, *args)
  n1 = todd_difficulty_gmen_param_base(param_id, *args)
  n2 = case $game_system.todd_difficulty
  when 0 then TODDDIFFICULTY::EASYM
  when 1 then 1
  when 2 then TODDDIFFICULTY::HEROICM
  when 3 then TODDDIFFICULTY::HARDM
  end
  return n1 * n2
 end
end


#==============================================================================
# ** Game_System
#------------------------------------------------------------------------------
#  This class handles system data. It saves the disable state of saving and
# menus. Instances of this class are referenced by $game_system.
#==============================================================================

class Game_System
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :todd_difficulty            # save forbidden
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  alias todd_difficulty_gamesystem_init initialize
  def initialize
    @todd_difficulty = 0
    todd_difficulty_gamesystem_init
  end
end

#==============================================================================
# ** Window_DifficultySelection
#==============================================================================

class Window_DifficultySelection < Window_HorzCommand
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0)
  end
  #--------------------------------------------------------------------------
  # * Get Window Width
  #--------------------------------------------------------------------------
  def window_width
    Graphics.width/2 + 20
  end
  #--------------------------------------------------------------------------
  # * Get Digit Count
  #--------------------------------------------------------------------------
  def col_max
    return 4
  end
  #--------------------------------------------------------------------------
  # * Create Command List
  #--------------------------------------------------------------------------
  def make_command_list
    add_command(TODDDIFFICULTY::EASYT,     :easy)
    add_command(TODDDIFFICULTY::NORMALT,   :normal)
    add_command(TODDDIFFICULTY::HEROICT,    :heroic)
    add_command(TODDDIFFICULTY::HARDT, :hard)
  end
end
#==============================================================================
# ** Window_DifficultyName
#==============================================================================

class Window_DifficultyName < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, window_width, fitting_height(1))
    refresh
  end
  #--------------------------------------------------------------------------
  # * Get Window Width
  #--------------------------------------------------------------------------
  def window_width
    return Graphics.width/2 + 20
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    contents.clear
    draw_text(0, -27, 400, 80, TODDDIFFICULTY::TEXT)
  end
end
#==============================================================================
# ** Scene_Difficulty
#==============================================================================

class Scene_Difficulty < Scene_MenuBase
  #--------------------------------------------------------------------------
  # * Start Processing
  #--------------------------------------------------------------------------
  def start
    super
    create_command_window
    create_name_window
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update
  super

  end
  #--------------------------------------------------------------------------
  # * Create Command Window
  #--------------------------------------------------------------------------
  def create_command_window
    @command_window = Window_DifficultySelection.new
    @command_window.set_handler(:easy,      method(:command_easy))
    @command_window.set_handler(:normal,     method(:command_normal))
    @command_window.set_handler(:heroic,     method(:command_heroic))
    @command_window.set_handler(:hard,    method(:command_hard))
    @command_window.set_handler(:cancel,    method(:return_scene))if $game_switches[TODDDIFFICULTY::SWITCH] == true
    @command_window.x = Graphics.width/2 - 170
    @command_window.y = Graphics.height/2 - 50
  end
  #--------------------------------------------------------------------------
  # * Create Difficulty Window
  #--------------------------------------------------------------------------
  def create_name_window
    @name_window = Window_DifficultyName.new
    @name_window.x = Graphics.width/2 - 170
    @name_window.y = Graphics.height/2 - 97
  end
  #--------------------------------------------------------------------------
  # * [easy] Command
  #--------------------------------------------------------------------------
  def command_easy
    $game_system.todd_difficulty = 0
    Audio.se_play("Audio/SE/" + TODDDIFFICULTY::SE, 100, 100)
    $game_variables[TODDDIFFICULTY::VARIABLE] = 0
    return_scene
   end
  #--------------------------------------------------------------------------
  # * [normal] Command
  #--------------------------------------------------------------------------
  def command_normal
    $game_system.todd_difficulty = 1
    Audio.se_play("Audio/SE/" + TODDDIFFICULTY::SE, 100, 100)
    $game_variables[TODDDIFFICULTY::VARIABLE] = 1
    return_scene
   end
  #--------------------------------------------------------------------------
  # * [heroic] Command
  #--------------------------------------------------------------------------
  def command_heroic
    $game_system.todd_difficulty = 2
      Audio.se_play("Audio/SE/" + TODDDIFFICULTY::SE, 100, 100)
    $game_variables[TODDDIFFICULTY::VARIABLE] = 2
    return_scene
   end
  #--------------------------------------------------------------------------
  # * [hard] Command
  #--------------------------------------------------------------------------
  def command_hard
    $game_system.todd_difficulty = 3
    Audio.se_play("Audio/SE/" + TODDDIFFICULTY::SE, 100, 100)
    $game_variables[TODDDIFFICULTY::VARIABLE] = 3
    return_scene
   end
 end
 if TODDDIFFICULTY::MENU == true
#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
#  This class performs the menu screen processing.
#==============================================================================

class Scene_Menu < Scene_MenuBase
  #--------------------------------------------------------------------------
  # * Create Command Window
  #--------------------------------------------------------------------------
  alias todd_dif_menu_add_menu_command create_command_window
  def create_command_window
    todd_dif_menu_add_menu_command
    @command_window.set_handler(:dif,      method(:command_dif))
  end
end
  #--------------------------------------------------------------------------
  # * [Difficulty] Command
  #--------------------------------------------------------------------------
  def command_dif
  SceneManager.call(Scene_Difficulty)
  end
end

if TODDDIFFICULTY::MENU == true
#==============================================================================
# ** Window_MenuCommand
#------------------------------------------------------------------------------
#  This command window appears on the menu screen.
#==============================================================================

class Window_MenuCommand < Window_Command
  #--------------------------------------------------------------------------
  # * Add Main Commands to List
  #--------------------------------------------------------------------------
  alias todd_dif_menu_command_add_to_menu add_main_commands
  def add_main_commands
     todd_dif_menu_command_add_to_menu
    add_command("Difficulty",   :dif,   main_commands_enabled)
  end
 end
end

****
Rep:
Level 69
I don't know how I missed that. lol

This will make the game really flexible.  8)