Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Redd

1
News / Suggestions / Feedback / Re: Warning.
September 01, 2014, 04:04:13 pm
Yeah how do you turn off HTTPS? I'm pretty sure that's exactly what google is doing.
2
News / Suggestions / Feedback / Re: Warning.
August 29, 2014, 01:46:17 pm
Just wondering if you guys wanted to do anything to change it.
3
News / Suggestions / Feedback / Warning.
August 28, 2014, 02:17:04 pm
Sometimes when I do a google search for some scripts or whatever, and click on a link that directs to here, it comes up with a warning about how this page may not be the actual page and it will try to get your information and stuff like that. Obviously, I know this isn't the real deal, but it's still happening and that should be looked into. I'm using Chrome on Windows XP, don't know if that makes a difference or not.
I can't seem to get it to actually happen right now, but next time it does I'll be sure to post a screen shot.
4
News / Suggestions / Feedback / Re: RPGRevolution
August 28, 2014, 02:12:40 pm
I was going to say, Kaz is a big figure over there (at least, I'm pretty sure), and she knows you, so it'd be best to contact her. But looks like you've got it all sorted out x)
I'm really sad about R3 though... it's definitely a bummer.
5
Where do I put all of that? Inside Data/Scripts ??? Or do I just copy them and replace them with the scripts in RMXP?

EDIT: That was a stupid question. I put them all in the editor with Scene_Base at the top, and everything works now, but for some reason right when I start the game, the character creation comes up before anything else does. Also, now, this happens after I create my character. Similar to my original problem.

7
After switching to Dubealex's script, the character creation does not work at all now. I get an error message as soon as I start up my game.
8
Alright, I tried editing Window Maintenance with what you said and it just gave me an error on line 1 of the script. Just says that it's a syntax error.
I also currently have no fix for the train actor issue.

EDIT: Everything got really messed up after I tried that fix, so I transferred everything over to a new project and I'm going to try to get Ccoa's UMS working instead, since that hasn't given me trouble in the past.

EDIT EDIT: UMS was still giving me issues so I switched over to Dubealex's and that's working fine as of right now. I think I may have fixed the character thing... I had forgotten that the order of Blizzard's scripts had to be pretty exact. I let you guys know if this fixes the character creation.
9
There's the pastebin thing.
And thanks, I'll try it right when I get home.
10
I assume you meant Window_Message.
I changed that, but nothing happened. All of my messages still display at the top.
Thank you very much for the guide, don't know why I couldn't find it xD that problem is solved now :)

As for the caterpillar, it is the default Blizz ABS one. It's gotta be a conflict with Moonpearl's Character Maker, which isn't designed to be used in-game. It's really meant to be used as a standalone system to make characters for your games. I just modified it a little bit to look like it's supposed to be in there.
It consists of three scripts.

MP Common
Spoiler: ShowHide

#==============================================================================
# MOONPEARL'S COMMON STUFF
#==============================================================================

#------------------------------------------------------------------------------
# Overview
#------------------------------------------------------------------------------

# This script contains custom functions I use quite often, so instead of
# making copies for each script I write, I put them all here. Everything is
# needed to make this or that script of mine work - and is pretty useful for
# scripters anyway. If you're experiencing compatibility problems, or are not
# sure about a particular feature, please refer to its description.

# If you use any of those as a basis for your own script, consider it a
# giveaway. Express credit is not required, but is appreciated. Otherwise, a
# warm-hearted thank you will do.

# Cheers,

# Moonpearl (moonpearl12@gmail.com)
# http://moonpearl-gm.blogspot.com/


#------------------------------------------------------------------------------
# Table of Contents
#------------------------------------------------------------------------------

# NOTES -
# - Tweaks are completely safe since they do not modify any existing code
# - Classes are safe too because they are new to Ruby and RGSS code
# - Mods are relatively safe but might possibly cause issues - refer to the
#     entry's description for more information.

#------------------------------------------------------------------------------
# 050 - Buffer (tweak)
# 085 - Message Expression Evaluator (Window_Message mod)
# 207 - Automatic Windowskins (Window_Base mod)
# 240 - Automatic Transitions (Scene_Base mod)
# 289 - Variables & Switches Commands (Interpreter mod)
# 325 - Bitmask (class)
# 426 - Ruby Expansion (tweak)
# 536 - Dialog Boxes (tweak)
#------------------------------------------------------------------------------

#==============================================================================



#==============================================================================
# BUFFERS
#------------------------------------------------------------------------------
#  This sets variables and switches to serve as buffers and hold temporary
# information.
#==============================================================================

# Index of the temporary buffer variable
VAR_TEMP = 1
# Index of the temporary buffer switch
SW_TEMP = 1

# Retrieve the buffer variable
def temp
 return $game_variables[VAR_TEMP]
end

# Set the buffer variable
def set_temp(v)
 $game_variables[VAR_TEMP] = v
 return $game_variables[VAR_TEMP]
end

# Retrieve the buffer switch
def sw_temp
 return $game_switches[SW_TEMP]
end

# Set the buffer switch
def set_sw_temp(v)
 $game_switches[SW_TEMP] = v
 return $game_switches[SW_TEMP]
end


#==============================================================================
# MESSAGE EXPRESSION EVALUATOR
#------------------------------------------------------------------------------
#  This edit allows to display the result of Ruby expressions written directly
# in Show Message event commands using \f[<expression>].
#------------------------------------------------------------------------------
#  > EXAMPLE: "Three plus two is \f[3+2]." will be displayed as "Three plus
# two is 5."
#------------------------------------------------------------------------------
#  Most likely incompatible with any custom message systems. Simply remove this
# section if you have no use for it, or copy the outlined command to your
# custom Window_Message class.
#==============================================================================

class Window_Message < Window_Selectable
 #--------------------------------------------------------------------------
 # * Refresh
 #--------------------------------------------------------------------------
 def refresh
   self.contents.clear
   self.contents.font.color = normal_color
   x = y = 0
   @cursor_width = 0
   # Indent if choice
   if $game_temp.choice_start == 0
     x = 8
   end
   # If waiting for a message to be displayed
   if $game_temp.message_text != nil
     text = $game_temp.message_text
     # Control text processing
     begin
       last_text = text.clone
       text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
     end until text == last_text
     text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
       $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
     end
#--------------------------------------------------------------------------
     text.gsub!(/\\[Ff]\[([ \w\=\+\-\*\/\$\(\)\!\.\,\'\:\%\@]+)\]/) { eval $1 }
#--------------------------------------------------------------------------
     # Change "\\\\" to "\000" for convenience
     text.gsub!(/\\\\/) { "\000" }
     # Change "\\C" to "\001" and "\\G" to "\002"
     text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
     text.gsub!(/\\[Gg]/) { "\002" }
     # Get 1 text character in c (loop until unable to get text)
     while ((c = text.slice!(/./m)) != nil)
       # If \\
       if c == "\000"
         # Return to original text
         c = "\\"
       end
       # If \C[n]
       if c == "\001"
         # Change text color
         text.sub!(/\[([0-9]+)\]/, "")
         color = $1.to_i
         if color >= 0 and color <= 7
           self.contents.font.color = text_color(color)
         end
         # go to next text
         next
       end
       # If \G
       if c == "\002"
         # Make gold window
         if @gold_window == nil
           @gold_window = Window_Gold.new
           @gold_window.x = 560 - @gold_window.width
           if $game_temp.in_battle
             @gold_window.y = 192
           else
             @gold_window.y = self.y >= 128 ? 32 : 384
           end
           @gold_window.opacity = self.opacity
           @gold_window.back_opacity = self.back_opacity
         end
         # go to next text
         next
       end
       # If new line text
       if c == "\n"
         # Update cursor width if choice
         if y >= $game_temp.choice_start
           @cursor_width = [@cursor_width, x].max
         end
         # Add 1 to y
         y += 1
         x = 0
         # Indent if choice
         if y >= $game_temp.choice_start
           x = 8
         end
         # go to next text
         next
       end
       # Draw text
       self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
       # Add x to drawn text width
       x += self.contents.text_size(c).width
     end
   end
   # If choice
   if $game_temp.choice_max > 0
     @item_max = $game_temp.choice_max
     self.active = true
     self.index = 0
   end
   # If number input
   if $game_temp.num_input_variable_id > 0
     digits_max = $game_temp.num_input_digits_max
     number = $game_variables[$game_temp.num_input_variable_id]
     @input_number_window = Window_InputNumber.new(digits_max)
     @input_number_window.number = number
     @input_number_window.x = self.x + 8
     @input_number_window.y = self.y + $game_temp.num_input_start * 32
   end
 end
end


# ==============================================================================
# AUTOMATIC WINDOWSKINS
# ------------------------------------------------------------------------------
# Modifies the Window_Base class so that each type of window searches the
# windowskin folder for a specific windowskin, selects it if found, selects
# the default windowskin otherwise.
# ------------------------------------------------------------------------------
# EXAMPLE: the Window_Menu will search for Windowskins/Menu.png and automatically
# use it if it exists.
# ==============================================================================

class Window_Base < Window
 def initialize(x, y, width, height)
   super()
 #--------------------------------------------------------------------------
   str = type.to_s
   str.slice!("Window_")
   @windowskin_name = FileTest.exist?("Graphics/Windowskins/#{str}.png") ? str : $game_system.windowskin_name
 #--------------------------------------------------------------------------
   self.windowskin = RPG::Cache.windowskin(@windowskin_name)
   self.x = x
   self.y = y
   self.width = width
   self.height = height
   self.z = 100
 end
 
 def update
   super
 end
end


# ==============================================================================
# AUTOMATIC TRANSITIONS
# ------------------------------------------------------------------------------
# Modifies the Scene_Base class so that each type of scene searches the
# transition folder for a specific transition, selects it if found, selects
# the default transition otherwise. You may use a different transition for
# fade-in and fade-out.
# ------------------------------------------------------------------------------
# EXAMPLE: the Scene_Menu will search for Transitions/Menu.png and automatically
# use it if it exists.
# EXAMPLE 2: when exiting the menu, the Scene_Menu will search for
# Transitions/Menu-out.png and automatically use it if it exists.
# ------------------------------------------------------------------------------
# REQUIRES: Moonpearl's Scene_Base
# ==============================================================================

class Scene_Base
 def main
   setup
   str = type.to_s
   str.slice!("Scene_")
   # Execute transition
   if FileTest.exist?("Graphics/Transitions/#{str}.png")
     Graphics.transition(40, "Graphics/Transitions/" + str)
   else
     Graphics.transition
   end
   # Main loop
   while $scene == self
     # Update game screen
     Graphics.update
     # Update input information
     Input.update
     # Frame update
     update
   end
   terminate
   str = type.to_s
   str.slice!("Scene_")
   str += "-out"
   # Execute transition
   if FileTest.exist?("Graphics/Transitions/#{str}.png")
     Graphics.transition(40, "Graphics/Transitions/" + str)
     Graphics.freeze
   end
 end
end


# ==============================================================================
# VARIABLES & SWITCHES COMMANDS
# ------------------------------------------------------------------------------
# This allows to bind commands to changes in game variables by events.
# ------------------------------------------------------------------------------
# EXAMPLE: by entering the following, the first actor's HP will automatically
# change to the content of game variable #0001 each time the variable is
# changed via an event.
#   $variables_command[1] = Proc.new { |v| $game_actors[1].hp = v }
# ==============================================================================

$switches_command = {}
$variables_command = {}
class Interpreter
 alias mp_common_command_121 command_121
 def command_121
   mp_common_command_121
   for i in @parameters[0]..@parameters[1]
unless $switches_command[i].nil?
$variables_command[i].call($game_switches[i])
end
   end
 end

 alias mp_common_command_122 command_122
 def command_122
   mp_common_command_122
   for i in @parameters[0]..@parameters[1]
unless $switches_command[i].nil?
$variables_command[i].call($game_variables[i])
end
   end
 end
end


#==============================================================================
# BITMASK
#------------------------------------------------------------------------------
#  This class stores boolean information (true/false) as Integer bits, in
# order to save memory.
#==============================================================================

class Bitmask
 attr_reader :size
 
 def initialize(size = 1)
   @data = [0]
   resize(size)
 end
 
 def [](i)
   if i >= @size
     raise RangeError, "Bit ##{i} not defined (max = #{@size - 1}) in Bitmask#[]"
   end
   return @data[i >> 5][i % 32] == 1
 end
 
 def []=(i, b)
   case b
   when TrueClass, FalseClass
     if self[i] == b
       return nil
     else
       @data[i >> 5] ^= 2 ** (i % 32)
       return b
     end
   else
     raise TypeError, "TrueClass or FalseClass expected as parameters in Bitmask#[]="
   end
 end

 def &(other)
   bitmask = Bitmask.new(@size)
   for i in 0...@size
     bitmask[i] = self[i] & other[i]
   end
   return bitmask
 end
 
 def |(other)
   bitmask = Bitmask.new(@size)
   for i in 0...@size
     bitmask[i] = self[i] | other[i]
   end
   return bitmask
 end
 
 def each
   for i in 0...@size
     yield i if self[i]
   end
 end

def each_false
   for i in 0...@size
     unless self[i]
       yield i
     end
   end
 end
 
 def resize(size)
   while (size >> 5) >= @data.size
     @data << 0
   end
   @size = size
 end
 
 def to_s
   str = String.new
   for i in 0...@size
     if i & 7 == 0
       str << " "
     end
     str << @data[i >> 5][i & 31].to_s
   end
   return str
 end

 def ==(other)
   case other
   when Bitmask
     #return true if @data == other.data
     return false unless @size == other.size
     for i in 0...@size
       return false unless self[i] == other[i]
     end
     return true
   end
   return false
 end
 
 alias :inspect :to_s
end


# ==============================================================================
# RUBY EXPANSION
# ------------------------------------------------------------------------------
# Adds new functions to existing Ruby classes. Each new feature is commented
# individually.
# ==============================================================================

class Object
# Make all objects respond to :display for compatibility purposes
 alias :display :inspect
end

class Array
# Returns an item selected at random
 def sample
   return self[rand(self.size)]
 end

# Return a copy with items shuffled
def shuffle
src = self.clone
ary = Array.new()
until src.empty?
ary << src.delete(src.sample)
end
return ary
end

# Shuffle items
def shuffle!
self.replace(self.shuffle)
end
end

class Dir
 # Returns all files matching given extensions in specified directory as an array
 #  - directory: directory to be searched
 #  - filters: strings representing extensions to be kept
 def self.files(directory = self.pwd, *filters)
   ary = []
   for filename in self.entries(directory)
     next if File.directory?(filename) or filename == "." or filename == ".."
     if filters.empty? or filters.include?(File.extname(filename))
       ary << filename
     end
   end
   return ary
 end
 
 # Returns all subdirectories in specified directory as an array
 def self.subdirectories(directory = self.pwd)
   ary = []
   for filename in self.entries(directory)
     if File.directory?(filename)
       ary << filename
     end
   end
   return ary
 end
end

class File
 # Assess whether a filename is a directory name or not
 def self.directory?(filename)
   return false if filename == "."
   return true if self.extname(filename) == ""
   return false
 end
end

class Integer
# Computes self factorial
 def factorial
   f = 1
   for i in 1..self
     f *= i
   end
   return f
 end
 
# Compute number of combinations from k in self
#  - k: a positive integer less than or equal to self
 def combin(k)
   return self.factorial / (k.factorial * (n - k).factorial)
 end
end

class String
# Breaks string into several lines
#  - amount: max number of characters per line
 def break_into_lines(amount)
   if self.size <= amount
     yield self
   else
     i = 0
     until i >= self.size
       n = self[i, amount].reverse.index(" ")
       n = amount - (n.nil? ? 0 : n)
       yield self[i, n]
       i += n
     end
   end
 end
 
# Make string into a symbol name
 def symbolize
   return :empty if self.empty?
   return self.downcase.gsub(" ", "_").to_sym
 end
end

class Symbol
# Make symbol into a string ready fot display
 def display
   str = ""
   name = self.to_s
   name.split("_").each { |s| str += s.capitalize + " " }
   str = str.rstrip
   return str
 end
 
# Comparison functions, included for compatiblity purposes
 def ===(other)
   return (self <=> other) == 0
 end

 def >(other)
   case other
   when Numeric
     return nil
   end
   return (self <=> other) == 1
 end

 def <(other)
   case other
   when Numeric
     return nil
   end
   return (self <=> other) == -1
 end
 
 def <=>(other)
   return self.to_s <=> other.to_s
 end
end

# ==============================================================================
# DIALOG BOXES
# ------------------------------------------------------------------------------
# Makes dialog boxes to give warning messages and confirm choices.
# ==============================================================================

module RPG
 def self.warn(message)
   $game_system.se_play($data_system.decision_se)
   Graphics.freeze
   window = Window_Base.new(32, 192, 576, 96)
   window.contents = Bitmap.new(window.width - 32, window.height - 32)
   window.contents.draw_text(0, 0, window.width - 32, 32, message, 1)
   window.contents.draw_text(0, 32, 544, 32, "OK", 1)
   window.cursor_rect.set(208, 32, 128, 32)
   window.active = true
   window.z = 5000
   Graphics.transition
   loop do
     Input.update
     Graphics.update
     window.update
     if Input.trigger?(Input::C) or Input.trigger?(Input::B)
       $game_system.se_play($data_system.cancel_se)
       break
     end
   end
   Graphics.freeze
   window.dispose
   Graphics.transition
   return
 end
 
 def self.confirm(message)
   $game_system.se_play($data_system.buzzer_se)
   Graphics.freeze
   window = Window_Base.new(32, 192, 576, 96)
   window.contents = Bitmap.new(window.width - 32, window.height - 32)
   window.contents.draw_text(0, 0, window.width - 32, 32, message, 1)
   window.contents.draw_text(0, 32, 272, 32, "OK", 1)
   window.contents.draw_text(272, 32, 272, 32, "Cancel", 1)
   window.cursor_rect.set(72, 32, 128, 32)
   window.active = true
   window.z = 5000
   Graphics.transition
   index = 0
   result = nil
   while result.nil?
     Input.update
     Graphics.update
     window.update
     if Input.repeat?(Input::LEFT) or Input.repeat?(Input::RIGHT)
       $game_system.se_play($data_system.cursor_se)
       index += 1
       index %= 2
       window.cursor_rect.set(72 + 272 * index, 32, 128, 32)
     end
     if Input.trigger?(Input::C)
       $game_system.se_play($data_system.decision_se)
       result = index == 0
     end
     if Input.trigger?(Input::B)
       $game_system.se_play($data_system.cancel_se)
       result = false
     end
   end
   Graphics.freeze
   window.dispose
   Graphics.transition
   return result
 end
end

Bitmap Export
Spoiler: ShowHide

#=============================================================================
# ** Bitmap Export by Zeus81
#=============================================================================

class Bitmap
 
 RtlMoveMemory_pi = Win32API.new('kernel32', 'RtlMoveMemory', 'pii', 'i')
 RtlMoveMemory_ip = Win32API.new('kernel32', 'RtlMoveMemory', 'ipi', 'i')
 
 def address
   RtlMoveMemory_pi.call(a="\0"*4, __id__*2+16, 4)
   RtlMoveMemory_pi.call(a, a.unpack('L')[0]+8, 4)
   RtlMoveMemory_pi.call(a, a.unpack('L')[0]+16, 4)
   a.unpack('L')[0]
 end
 
 def export(filename)
   file = File.open(filename, 'wb')
   case format = File.extname(filename)
   when '.bmp'
     data, size = String.new, width*height*4
     RtlMoveMemory_ip.call(data.__id__*2+8, [size,address].pack('L2'), 8)
     file.write(['BM',size+54,0,54,40,width,height,1,32,0,size,0,0,0,0].pack('a2L6S2L6'))
     file.write(data)
     RtlMoveMemory_ip.call(data.__id__*2+8, "\0"*8, 8)
   when '.png'
     def file.write_chunk(chunk)
       write([chunk.size-4].pack('N'))
       write(chunk)
       write([Zlib.crc32(chunk)].pack('N'))
     end
     file.write("\211PNG\r\n\32\n")
     file.write_chunk("IHDR#{[width,height,8,6,0,0,0].pack('N2C5')}")
     RtlMoveMemory_pi.call(data="\0"*(width*height*4), address, data.size)
     (width*height).times {|i| data[i<<=2,3] = data[i,3].reverse!}
     deflate, null_char, w4 = Zlib::Deflate.new(9), "\0", width*4
     (height-1).downto(0) {|i| deflate << null_char << data[i*w4,w4]}
     file.write_chunk("IDAT#{deflate.finish}")
     deflate.close
     file.write_chunk('IEND')
   when ''; print("Export format missing for '#{filename}'.")
   else     print("Export format '#{format}' not supported.")
   end
   file.close
 end
end

And my edited version of the character maker itself
http://pastebin.com/GvniaAgU
11
So the Hermes fix fixed the message boxes appearing over people's heads, thank you very much for that :D The menu fix also works flawlessly :)
What it didn't fix though, is that all of my messages still display at the top of the screen regardless of my setting of displaying it in the middle or bottom. It's just all at the top for some reason.

This is what I'm talking about in number 2:

The player's name, in this instance, is supposed to be "Swordsm" but I do not know the correct code to use to put it in the message box, rather than above it like that. Usually in rmxp it's "n\[1]" but this just puts it above in Hermes' script it seems.

Also, on my last issue that I included in that update, here's what's happening.

The naked dude is the character I "created" in the last screenshot, but removing him from the party still keeps his graphic there. You can tell he isn't in the party because of the minimap, there's only three triangles. It's a little strange. Is there any event-based caterpillar I can use for Blizz-ABS? That may fix the problem, I feel.
12
Script Requests / Re: [XP] Character Data Exporter?
April 06, 2014, 10:01:26 pm
Wow this is superb and it exactly what I asked for and more! Thank you very much good sir!
13
Hey guys I'm having three issues here.

1. I am using Kendorei's menu system, and when I click into the menu, the pre menu for blizz abs does not show up. Instead, it goes straight to the menu system that I am using. I don't know what could possibly be causing this. Here is the link to the menu system http://www.rpgrevolution.com/forums/index.php?showtopic=26023

2. I am also using Hermes' Message Script. I have two issues with this one but the first is pretty simple... when I type in the normal code for displaying an actor's name in RMXP "n\
  • " it shows up as that's the character that's saying the thing that's in the message box instead of it actually being said by the character who is saying it. I have it appear over the sprite's heads using the "\p
  • " commands.

    3. My other problem with it is that ever since adding in Blizz ABS, all of my message windows are displayed on top of the screen, even if I want them to appear over an events head. I can't post the Hermes script here because it adds bits and pieces to the default scripts with the Inserter script, so I'll just give you a link to it: http://www.rpgrevolution.com/forums/index.php?showtopic=53488

    Here are all of the scripts I'm using (with the Inserter on the top, of course. I have problems if I don't run it every time the game starts up. This is okay though, the start up time isn't even 5 seconds).

    Spoiler: ShowHide


    If you can help it would be much appreciated :) I'll definitely add you in the credits of my game!

    EDIT: I also have another issue that I really can't figure out for the life of me. There must be a script to do this somehow. Anyway, I am using a slightly edited version of Moonpearl's character creator to enable the player to create their own character (using Looseleaf graphics (are those by Mack, by the way?)), but when I remove that actor from the party, his sprite still shows up with the Train Actor. I am at a complete loss at what to do. The system works in a way where any transparent/blank events that don't have their opacity set at 0 show up as the character that was created too. Maybe there is a script that just erases the 4th player from view? They aren't actually in the party or anything, they don't attack. They just follow. There is one more thing I am going to try and I'll get back to you guys if it works.

    EDIT EDIT: It didn't work. I tried using a dummy graphic but since it's transparent it obviously won't work xP maybe I can use a semi-transparent white lone pixel and nobody will notice.

    EDIT EDIT EDIT: That didn't work either. I need help xD
14
Resources / Musician for hire!
March 18, 2014, 04:59:43 pm
Hey guys, I recently quit my job to focus 100% on what I love to do most, and that's making music.
I can make songs for basically any reason you may need them, including video games, videos, movies, royalty free beats, and more.

To check out a lot of the video game music I've made, go to this link.
For some beats that I have made, go to this link.
To listen to some of my actual music, you can go to my Bandcamp page.

I have 3 years of experience making music electronically and every time I make a track I get better and better. I use a combination of Logic Pro 9 (mainly), Acoustica Mixcraft 5, and Audacity.

If any of you are interested, please send me an email at prescottofficial@gmail.com and we can discuss what you need and what rates. All of my music is royalty free (just a credit to Carter Eggenberger in your game or video is fine; music not needed but at slightly higher rates) and is generally $12 a piece (which I understand is pretty cheap), but we can work something else out if need be.

Thanks for taking the time to read this, and I hope I can make music for a lot of you!
15
Script Requests / [XP] Character Data Exporter?
February 10, 2014, 07:07:30 pm
Hey, if someone could make this REALLY fast for me that would be so great!
I'm going pretty in depth with the planning in my game, and we plan over at my friend's house, who doesn't have RMXP. So after spending an hour typing up all of one character's stats in a spreadsheet, I figured that there had to be an easier way to do it.

If someone could make a script SUPER FAST for me that would read the game's character data and export all of the stats for every character at every level into even like a notepad document, that would be sooooooo nice. Credit in-game would be given for your help.

It would just be like at level 1, this character has 99 hp, at level 2, at level 3, etc etc etc.

Thank you so much! :D
16
Thank you very much :D

level up for helping me out ;) I'm using your Event Sensor script in my game too, so thanks for that as well!
17
Script Troubleshooting / Problem with item combining
October 26, 2013, 05:42:13 pm
Hey everyone, I never post on here just because this seems more like a heavy development forum for smart people more than anything else...
but I have this one request. And it's fairly easy. Actually, really easy. I just can't figure out how to do it.

Here's the script I'm using (it's RPG Maker XP in case you couldn't tell):
#==============================================================================
# ** Menu Item Add-On:  Combine Option
#------------------------------------------------------------------------------
#    by DerVVulfman
#    version 1.2
#    02-11-2013
#    RGSS / RPGMaker XP
#==============================================================================
#
#  INTRODUCTION:
#
#  This little feature adds itself  to the default Scene_Item class,  allowing
#  the player to combine two individual items together to create a new item in
#  their party's cache of goods.
#
#------------------------------------------------------------------------------


# ===== REQUIRED HASH ARRAYS - DO NOT TOUCH ===================================
COMBINE, COMBINE_W, COMBINE_A = {}, {}, {}
#==============================================================================


  # ITEM-TO-ITEM COMBINABLES
  # ========================
  # Both values in the ITEMS array may be item IDs.
  #
  #         MERGE       ITEMS
  # ==============     ========
    COMBINE['I21']   = [ 5, 6 ]
    COMBINE['I22']   = [ 7, 8 ]
    COMBINE['I2']    = [ 2, 25 ]
    COMBINE['I4']    = [ 3, 18 ]
    COMBINE['I20']   = [ 4, 19 ]
    COMBINE['I26']   = [ 12, 15 ]
    COMBINE['I23']   = [ 16, 17 ]
    COMBINE['I27']   = [ 26, 15 ]
    COMBINE['I28']   = [ 27, 15 ]
    COMBINE['I13']   = [ 28, 15 ]


  # NON-COMBINABLES
  # ==========================
  # This allows you to let the player combine items that don't
  # actually work together to make... garbage!  Garbage is the
  # actual item in the database (by ID) that will be generated
  # if the player tries without success.
  #
    NON_COMBINE       = false   # If you fail to combine items and make garbage
    NON_COMBINE_ITEM  = 33      # The ID of the garbage item.
   
   
#==============================================================================
# ** Window_ItemCombine
#------------------------------------------------------------------------------
#  This window displays items in possession on the item and battle screens.
#==============================================================================

class Window_ItemCombine < Window_Selectable
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :first_item               # Initial item being combined
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(160, 64, 320, 416)
    @column_max = 1
    refresh
    self.index = 0
    @first_item = 0
  end
  #--------------------------------------------------------------------------
  # * Get Item
  #--------------------------------------------------------------------------
  def item
    return @data[self.index]
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    # Add item
    for i in 1...$data_items.size
      if $game_party.item_number(i) > 0
        @data.push($data_items[i])
      end
    end
    for i in 1...$data_weapons.size
      if $game_party.weapon_number(i) > 0
        @data.push($data_weapons[i])
      end
    end
    for i in 1...$data_armors.size
      if $game_party.armor_number(i) > 0
        @data.push($data_armors[i])
      end
    end
    # If item count is not 0, make a bit map and draw all items
    @item_max = @data.size
    if @item_max > 0
      self.contents = Bitmap.new(width - 32, row_max * 32)
      for i in 0...@item_max
        draw_item(i)
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Draw Item
  #     index : item number
  #--------------------------------------------------------------------------
  def draw_item(index)
    item = @data[index]
    case item
    when RPG::Item
      number = $game_party.item_number(item.id)
    when RPG::Weapon
      number = $game_party.weapon_number(item.id)
    when RPG::Armor
      number = $game_party.armor_number(item.id)
    end
    if NON_COMBINE == true
      # Set enabled color regardless
      self.contents.font.color = normal_color
    else
      # Set disabled color if not combinable
      self.contents.font.color = disabled_color
      # Check items on list
      if item.is_a?(RPG::Item)
        for items in COMBINE.keys
          if COMBINE[items].include?(@first_item)
            if COMBINE[items].include?(item.id)
              if @first_item == item.id
                if COMBINE[items][0] == COMBINE[items][1]
                  if $game_party.item_number(item.id) != 1
                    self.contents.font.color = normal_color
                  end
                end
              else
                self.contents.font.color = normal_color
              end
            end
          end
        end
      end
      # Check weapons on list
      if item.is_a?(RPG::Weapon)
        for items in COMBINE_W.keys
          if COMBINE_W[items][0] == @first_item
            if COMBINE_W[items][1] == item.id
              self.contents.font.color = normal_color
            end
          end
        end
      end
      # Check armor on list
      if item.is_a?(RPG::Armor)
        for items in COMBINE_A.keys
          if COMBINE_A[items][0] == @first_item
            if COMBINE_A[items][1] == item.id
              self.contents.font.color = normal_color
            end
          end
        end
      end
    end
    # The rest
    x = 4
    y = index * 32
    rect = Rect.new(x, y, self.width / @column_max - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(item.icon_name)
    opacity = self.contents.font.color == normal_color ? 255 : 128
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
    self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
    self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
    self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
  end
  #--------------------------------------------------------------------------
  # * Help Text Update
  #--------------------------------------------------------------------------
  def update_help
    @help_window.set_text(self.item == nil ? "" : self.item.description)
  end
end




#==============================================================================
# ** Scene_Item
#------------------------------------------------------------------------------
#  This class performs item screen processing.
#==============================================================================

class Scene_Item
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  alias combinable_main main
  def main
    # Create the decision option window
    @combine_decision         = Window_Command.new(160, ["Use", "Combine"] )
    @combine_decision.visible = false
    @combine_decision.active  = false
    @combine_decision.x       = 240
    @combine_decision.y       = 32
    @combine_decision.z       = 1000
    # Create the combinable item window
    @combine_window = Window_ItemCombine.new
    @combine_window.visible = false
    @combine_window.active  = false
    @combine_window.z       = 1000
    # The original call
    combinable_main
    # Dispose of windows
    @combine_decision.dispose
    @combine_window.dispose
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  alias combinable_update update
  def update
    @combine_decision.update
    @combine_window.update
    # If option wiindow is active: call update_combinable_decision
    if @combine_decision.active
      update_combinable_decision
      return
    end
    # If option wiindow is active: call update_combinable_decision
    if @combine_window.active
      update_combinable_selection
      return
    end
    # The original call
    combinable_update
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when item window is active)
  #--------------------------------------------------------------------------
  alias combinable_update_item update_item
  def update_item
    # If C button was pressed
    if Input.trigger?(Input::C)
      # Get currently selected data on the item window
      @item = @item_window.item
      # If not a use item
      unless @item.is_a?(RPG::Item)
        # Play buzzer SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # If it can't be used
      unless $game_party.item_can_use?(@item.id)
        # Play buzzer SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      did_check = update_combinable_check(@item.id)
      if did_check == true
        $game_system.se_play($data_system.decision_se)
        @combine_decision.visible   = true
        @combine_decision.active    = true
        @item_window.active         = false
        @combine_window.first_item  = @item.id
        @combine_window.refresh
        return
      end
    end
    # The original call
    combinable_update_item
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when item window is active)
  #--------------------------------------------------------------------------
  def update_combinable_check(id)
    effective = false
    # Sort through Hash and get keys
    for items in COMBINE.keys
      effective = true if COMBINE[items].include?(id)
    end
    return effective
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when combine decision window is active)
  #-------------------------------------------------------------------------- 
  def update_combinable_decision
    @combine_decision.refresh
    choice = @combine_decision.index
    # If B button was pressed
    if Input.trigger?(Input::B)
      @combine_decision.visible = false
      @combine_decision.active  = false   
      @item_window.active = true
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      case choice
        when 0; update_combinable_use  # USE
        when 1;  @item_window.help_window.set_text("Combining")
                  @combine_window.visible = true
                  @combine_window.active  = true
      end
      @combine_decision.visible   = false
      @combine_decision.active    = false
    end
    # Branch on choice if applicable
    return
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when item use window is active - remnant of item window)
  #-------------------------------------------------------------------------- 
  def update_combinable_use
    # Play decision SE
    $game_system.se_play($data_system.decision_se)
    # If effect scope is an ally
    if @item.scope >= 3
      # Activate target window
      @item_window.active = false
      @target_window.x = (@item_window.index + 1) % 2 * 304
      @target_window.visible = true
      @target_window.active = true
      # Set cursor position to effect scope (single / all)
      if @item.scope == 4 || @item.scope == 6
        @target_window.index = -1
      else
        @target_window.index = 0
      end
    # If effect scope is other than an ally
    else
      # If command event ID is valid
      if @item.common_event_id > 0
        # Command event call reservation
        $game_temp.common_event_id = @item.common_event_id
        # Play item use SE
        $game_system.se_play(@item.menu_se)
        # If consumable
        if @item.consumable
          # Decrease used items by 1
          $game_party.lose_item(@item.id, 1)
          # Draw item window item
          @item_window.draw_item(@item_window.index)
        end
        # Switch to map screen
        $scene = Scene_Map.new
        return
      end
    end   
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when item window is active)
  #-------------------------------------------------------------------------- 
  def update_combinable_selection
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Erase target window
      @item_window.active = true
      @combine_window.visible = false
      @combine_window.active = false
      return
    end   
    # If B button was pressed
    if Input.trigger?(Input::C)
      # Get currently selected data on the item window
      @combine_item = @combine_window.item
      object_combine = nil
      # Cycle through items
      if @combine_item.is_a?(RPG::Item)
        for items in COMBINE.keys
          if COMBINE[items].include?(@item.id)
            if COMBINE[items].include?(@combine_item.id)
              if @item.id == @combine_item.id
                if COMBINE[items][0] == COMBINE[items][1]
                  if $game_party.item_number(@item.id) != 1
                    object_combine = items
                  end
                end
              else
                object_combine = items
              end
            end
          end
        end
      end
      # Cycle through Weapons
      if @combine_item.is_a?(RPG::Weapon)
        for items in COMBINE_W.keys
          if COMBINE_W[items][0] == @combine_item
            if COMBINE_W[items][1] == @item.id
              object_combine = items
            end
          end
        end
      end
      # Cycle through Armors
      if @combine_item.is_a?(RPG::Armor)
        for items in COMBINE_A.keys
          if COMBINE_A[items][0] == @combine_item
            if COMBINE_A[items][1] == @item.id
              object_combine = items
            end
          end
        end
      end
      # Perform the combining
      if object_combine != nil
        $game_system.se_play($data_system.decision_se)
        return perform_combine(object_combine, @item, @combine_item)
      end
      # Perform garbage if turned on
      if NON_COMBINE == true
        $game_system.se_play($data_system.buzzer_se)
        return perform_combine(NON_COMBINE_ITEM, @item, @combine_item)
      end
      # Play buzzer SE
      $game_system.se_play($data_system.buzzer_se)
      @combine_window.visible = false
      @combine_window.active  = false
      @item_window.active     = true
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when actively performing combine)
  #-------------------------------------------------------------------------- 
  def perform_combine(combined_object, item1, item2)
    # Part 1:  Erase the item
    $game_party.lose_item(item1.id, 1)
    # Part 2:  Erase the item, weapon or armor
    case item2
    when RPG::Item   ; $game_party.lose_item(item2.id, 1)
    when RPG::Weapon ; $game_party.lose_weapon(item2.id, 1)
    when RPG::Armor  ; $game_party.lose_armor(item2.id, 1)   
    end   
    # If the item is defined as the Non-Combine Item value
    if combined_object == NON_COMBINE_ITEM
      # Part 2a: Add the Non-Combine Item
      $game_party.gain_item(NON_COMBINE_ITEM, 1)
    # Otherwise
    else
      # Part 3: Determine item type and ID
      if COMBINE.has_key?(combined_object)
        c_type = combined_object.slice(0,1)
        c_id   = combined_object.slice(1,(combined_object.size-1)).to_i
      end
      if COMBINE_W.has_key?(combined_object)
        c_type = combined_object.slice(0,1)
        c_id   = combined_object.slice(1,(combined_object.size-1)).to_i
      end
      if COMBINE_A.has_key?(combined_object)
        c_type = combined_object.slice(0,1)
        c_id   = combined_object.slice(1,(combined_object.size-1)).to_i
      end
      # Part 4: Add the item based on type
      c_type = c_type.upcase 
      case c_type
      when "I"; $game_party.gain_item(c_id, 1)
      when "W"; $game_party.gain_weapon(c_id, 1)
      when "A"; $game_party.gain_armor(c_id, 1)
      end
    end
    # Part 5: Refresh the item window
    @combine_window.visible = false
    @combine_window.active  = false   
    @item_window.refresh
    @item_window.active = true
    @item_window.index = 0
  end
end

I need the "Use" option to be taken out. It freezes up the game when it's clicked, and I don't need it, since I only have one item that affects the player, and it's through a common event so that runs before the item combining scene does. So I just want it to come up with the window that says "Combine" and that's it.
Thanks guys :) I use your scripts and I really admire your work, you are all fantastic at what you do.
18
I have figured it out! For some odd reason that I can't remember, I had used the =begin and =end tags in scripts 1 and 2 to disable blizz abs. So I just removed them and... problem solved!
I'm retarded :P
19
Well I mean it just barely stopped working, randomly :P
And no I have the option checked that says "Disable Blizz-ABS Controls in maps without enemies"

I have two common events that turn off the Hotkeys and HUD when i call it and then some to turn it off. Because at the beginning of the game there are clipscenes and it looks bad with all that stuff up there. Could that be a problem?

Also, NONE of the controls work, even if I start out on a different map oooooh wait I know what could be the problem!! I had someone over at RRR edit some piece of the script for me that makes it so that stuff doesn't display at the beginning... it could be shutting something off. Here's a link to my Blizz ABS Part 1 script - https://docs.google.com/document/d/1VoZ3tIWttitmcYGfziWwLteTVn2kkxFhN8GNcYyrGAM/edit?hl=en_US
20
I took out the SDK log stuff and it works perfectly... But how would that affect Blizz ABS?