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.

Topics - Griver03

1
hi i need in the legacy class change script a lil fix.
if you want to select your class you can select the class you actually have already.
thats not very professional, so can someone make this lil fix for me even its only a cosmetic problem ?

Legacy Class Change:
Spoiler: ShowHide

#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Legacy Class Change by Legacyblade
# Version: 1.68
# Type: Class Changing Script
# Date 3-06-2009
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#  
#  This work is protected by the following license:
# #----------------------------------------------------------------------------
# #  
# #  Creative Commons - Attribution-Share Alike 3.0 Unported
# #  ( http://creativecommons.org/licenses/by-sa/3.0/ )
# #  
# #  You are free:
# #  
# #  to Share - to copy, distribute and transmit the work
# #  to Remix - to adapt the work
# #  
# #  Under the following conditions:
# #  
# #  Attribution. You must attribute the work in the manner specified by the
# #  author or licensor (but not in any way that suggests that they endorse you
# #  or your use of the work).
# #  
# #  
# #  Share alike. If you alter, transform, or build upon this work, you may
# #  distribute the resulting work only under the same or similar license to
# #  this one.
# #  
# #  - For any reuse or distribution, you must make clear to others the license
# #    terms of this work. The best way to do this is with a link to this web
# #    page.
# #  
# #  - Any of the above conditions can be waived if you get permission from the
# #    copyright holder.
# #  
# #  - Nothing in this license impairs or restricts the author's moral rights.
# #  
# #----------------------------------------------------------------------------
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#
# Compatibility:
#
# The script was coded to be 100% compatible with most, if not all scripts. I
# can't think of ANY script that wouldn't be compatible, but I will list those
# that I tested for compatibility.
#
# Blizz ABS is 100% compatible, and all other ABS scripts should be as well, due to how
# the class rank is added.
#
# CCoa's UMS is 100% compatible.
#
# The SDK 2.3 seemed to be compatible. Everything worked fine even with the SDK
# in the project.
#
# I'll keep testing scripts, and adding to this list.
#
# Incompatibility:
#
# No known incompatibility (if you run into an incompatibility, please tell me,
# so I can make a patch)
#
# Known Issues:
#
# none ^_^
#
# Features:
#
#   -> Define Special Classes that are unlocked for an actor only by a script
#      call (in case the player needs to pay for special training to unlock said
#      class).
#
#   -> Define how many times an actor must level up while using a certain
#      class/classes to unlock another class. (you can make the "Alchemist"
#      class require 3 levels as a mage, and 3 levels as a cleric). The system
#      is so versatile, that you can even require levels in Special Classes!
#
#   -> Define descriptions for each class that will be displayed in the class
#      change window. (supports multiple lines of description!)
#
#   -> Class Specific Skills. This allows you to set skills as class specific.
#      Class specific skills are only availible when an actor is a class that
#      the skill is specific to. You can even set a skill specific to multiple
#      classes (so the Paladin can use heal if he learned it as a cleric, so the
#      Gladiater can use "tackle" if he learned it as a lancer, etc.)
#
#   -> Linked Actor system. This allows you to define actors that, when they
#      change their class, change the class of actors that are "linked" to them.
#
#   -> Class Graphic system. You have the ability to cause both an actor's
#      charset AND their battler to change based on their current class.
#
#   -> Easily configurable settings that can affect every aspect of the system.
#
#   -> Completely lagfree!
#
#   -> Compatible with ANY CMS (provided you make a slight modification to
#      integrate the class change. This amounts to one line of code)
#
#
# Version History:
#
# For every minor update or bugfix, I will increase the version by .01
# For every new feature, I will increase the version be .1
# For every 10 feature updates, I will update the version by 1
#
# v1.00b:
#   -> Legacy Class Change released!
#
# v1.01b:
#   -> Fixed a bug in class selection, that would set the actor's class_id to the
#      index of the cursor, rather than the actual selected class_id.
#
# v1.02b:
#   -> Fixed a few miscellaneous lines of code that could, under certain circumstances, cause errors
#
# v1.10b:
#   -> Added the option to change an actor's graphic when the class changes.
#
# v1.11b:
#   -> Fixed a bug that kept the class list from scrolling
#
# v.1.20:
#   -> Left the beta stage.
#   -> Enhanced the level handeling. Now the skills are assigned based on class
#      level, rather than the actor's overall level.
#
# v.1.67:
#   -> Added the option to make multi-line descriptions! (no more trying to cram
#      the description into a single line!
#   -> Added the "linked actor" feature.
#   -> Added the "special classes" feature.
#   -> Added the Class Specific Skills feature.
#   -> Recoded the scene slightly to support any party size.
#   -> Changed when the Class List updates, for graphical nicety.
#   -> Increased compatibility with StormTronics CMS (by Blizzard). Now it only
#      takes a small edit to StorTronics to seamlessly integrate the Class Change
#      system. (I reworked the code so that there is an "on_cancel" method).
#   -> Optimized code
#   -> Fixed a slight bug with class descriptions.
#   -> Fixed a typo that would cause a player to level up when they're supposed
#      to level down.
#   -> Rewrote comments, and reordered code for readability.
#
# v.1.68:
#   -> Improved the way class level requirements are configured. It's easier now.
#
# Planned Features:
#    
#  -> Add the option to display classes that other members of the party have
#     learned, but the current actor has not. These locked, yet visible classes
#     would also show the required level of each class needed to unlock the class
#     rather than a class description. (almost finished, just needs some debugging)
#
# Useless facts:
#
# This was the first time I've ever successfully made a script. I learned a lot
# about everything I worked with, and can't wait to learn more about RGSS and
# programming in general. I hope you enjoy this, because it took a lot of effort
#
# Special Thanks:
#
#       - Blizzard for all his help. Without him, I couldn't have made it. Not
#         only did he help me fix the errors, he also gave me lectures on various
#         aspects of programming. This caused me to make LESS errors, and grow
#         in my programming skill. Thanks Blizz, this script wouldn't be here
#         today if you hadn't been there in that MIRC room, XD
#
#       - GubiD for when blizzard wasn't around in MIRC to answer my questions.
#         he helped me with a few errors that I had no idea how to fix (many of
#         them were some of the most n00bish errors too -_-). Thanks GubiD
#         couldn't have done it without ya!
#
#      - Sephirothtds for making TDS Class Change System incompatible with
#        the Blizz-ABS. If you'd made it compatible, I would have gone with your
#        script, and never figured out how to make one myself . Your script's
#        incompatibility with Blizz-ABS sparked my urge to learn to scrip. Thanks.
#
#       - Juan, who offered a few pointers.
#
#       - To all those who put up with me in the CP chat room when I'm ranting
#         about my newest error.
#
#       - To all the members of eminweb.com for nagging me enough to do my
#         administrative duty, which eventually cured me of my infamous laziness
#
#       - StarrodKirby86 for requesting the class graphic system, it made this
#         script have a feature not many class changing systems have.
#
#       - To the members of Chaos Project who offered feedback, and requested
#         features. Without your ideas, this would be a much simpler, more boring
#         system.
#
# Author Notes:
# PLEASE, make sure you've configured the script correctly before you report
# whatever error you're running into. IN PARTICULAR, check your class_requirements
# configuration. EVERYONE who's used the script reports an error that comes from
# an improper configuration of class_requirements.
#
# BUT, if you DO (or at least think you do) have correct configuration, and you
# run into a bug, PLEASE report it to me. Also, if you want a feature added,
# request it (preferably in the Legacy Class Change thread on eminweb.com),
# and I'll try to add it.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=


#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#                           START CONFIGURATION
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=

module LBConf
# If this is set to true, then changing an actor's class will also change its
# graphic.
 CLASS_GRAPHIC_CHANGE = true

# Put the ID of classes you want as "Special Classes" in this array(seperate
# entries with a comma). Special Classes will be unselectable unless an actor
# "learns" the class. (this is done by executing the following script call)
#
#    $game_actors[actor_id].learn_special_class(class_id)
#                       or
#    $game_party.actors[position].learn_special_class(class_id)
#
# "position" refers to the position an actor is in the party. 0 is the first
# party member (the one you see walking around the map), 1 is the seccond, and
# so on.
 SPECIAL_CLASS = [7]
 
# If an actor has a class specific skill, they will forget it when they change
# to a class that the skill is not specific to. They will, however, relearn the
# skill when they switch back to a class that the skill IS specific to.
#
# If you want to use class specific skills, you'll need to define which skills
# are specific to a certain class. Use the following format
#
#    when X then return[a,b,c...]
#
# where X is a class ID, and a,b,c (and whatever else you put in that array) are
# the IDs of skills you want to be specific to that class (remember to seperate
# them with commas). You can have skills specific to multiple classes (both the
# cleric, and the paladin can use "heal" if they've learned it.)
#
# If you don't want to use the class specific skill system, don't define any class
# specific skills.

 def self.class_spells(class_id)
   case class_id
   
     # I really don't feel like coming up with class specific skills for all the
     # classes. You have an example on how to set up the system, so do it
     # yourself.
     
     when 1 then return[1,2,3]
     when 2 then return[4,5,6]
     when 3 then return[7,8,9]
     when 4 then return[10,11,12]
     when 5 then return[13,14,15]
     when 6 then return[16,17,18]
     # what do you know, both the cleric and the paladin can use "heal" :P
       
     end
     
   return []
 end

# If you have CLASS_GRAPHIC_CHANGE set to true, you'll need to setup what graphic
# each class will need. use the following format
#
# when class_id then return 'text you want appended'
#
# an example (in this situation) is simpler than an explanation, so here you go
#
#    when 1 then return '_fighter'
#
# If the actor's charset is named "arshes" and battler is called "ArshesBattler",
# then when the actor is using class 1 (fighter by default), the charset will be
# named "arshes_fighter" and the battler will be named "ArshesBattler_fighter".
# if you don't want a class to have it's own graphic (or haven't made one yet),
# just don't define it below.

 def self.class_graphic(class_id)
   case class_id
     
     #Alright, this is where we tell the script that when the actor chooses the
     #fighter class, that it needs to look for the actor's default sprite with
     # _fighter appended to the end of it.
     when 1 then return '_Warrior'
   
     #graphic suffix for lancer class
     when 2 then return '_Monk'
   
     when 3 then return '_Thief'
       
     when 4 then return '_Blackmage'
     #This is what I do when I don't have a graphic ready yet, just comment
     #the line where you define the class graphic
     #when 3 then return '_warrior'
     
     #graphic suffix for cleric class
     when 5 then return '_Whitemage'
   
     #graphic suffix for mage class
     when 6 then return '_Redmage'
     
     #You'll notice that NONE of the other classes have any configuration data
     #this will cause using those classes to switch to the actor's default
     #graphic.
       
     end
   return ''
   
 end

 
# This next section is where you define the description for each class.
# use the following template for each class
#
#    when class_id then return ['line1','line2','line3]
#
# Although you won't get an error if you have more than three lines of
# description, the window is only big enough to fit three lines. Also, if you
# can't think up a description for a class, don't define one, and the script
# will assign it the default class description. (a blank line by default)
#
# To change the default description (for whatever reason) look for return ['']
# near the bottom of this section.
 def self.class_descriptions(class_id)
   case class_id
   
     #Description for Fighter
     when 1 then return ['Fighters wield swords, and some even wear red headbands!','That was an Arshes reference, if you couldn\'t tell.','You\'re probably too distracted by the THREE LINES of description to notice.']
       
     #Description for Lancer
     when 2 then return ['Lancers...they fight with lances...nuff said.','...','by the way, this class has THREE lines of description']
     
     #Description for Warrior
     when 3 then return ['Warriors, the big slow guys we all rely to do the physical damage.']
       
     #Description for Thief
     when 4 then return ['Thieves: gotta love em...unless of course they steal YOUR','hard earned gold!']
       
     #Description for Hunter
     when 5 then return ['Hunters are archers. What is wrong with just calling them ARCHERS, GAH!']
       
     #Description for Gunner
     when 6 then return ['People with a guns in the same battle as people with a swords...','wtf!?']

     end
     # if you want a default class description for those not defined, replace the
     # below array with a description like those above.
   return ['']
 end

# This is where you set the requirement for each class. Use the following format
#
# when class_id then result = [class1's required level,class2's required level,...]
#
# where class_id is the ID of the class that you want to have a requirement,
#  and"class1's required level, etc. are how many levels needed
# in that class to unlock the class
#
# REMEMBER TO SET THIS UP FOR YOUR OWN PROJECT! IF YOU HAVE MORE ENTRIES IN THE
# ARRAY THAN CLASSES IN THE DATABASE YOU WILL GET AN ERROR!

 def self.class_requirements(class_id)
   result = []    
   case class_id
       
     #to make a class have no requirements (unlocked by default), just don't
     #define requirements for it.
           
     #Requirement for Knight: 5 fighter, 5 lancer, 3 warrior
     when 7 then result =  [55,5,5,5,5,5,0,]
       
     end
     
   return result.unshift(0)

 end
 
# here is where you set up which actors are "linked". When an actor is "linked"
# to another actor, whenever the actor changes their class, the other's class
# will change to match it. Set it up in the following format.
#
# when X then return[a,b,c...]
#
# where X is the ID of the actor in question, and "a,b,c..." are the ID's
# of the actors linked to this actor, and are separated by commas. With this setup
# when actor X changes his class, it will also change actor a, b, and c's class.
# To make it so actor a changes the classes of the other actors, you'll have to
# set the link up for each actor involved. (if you want Arshes to be "linked" to
# his dark form, you'd do this.
#
# when 1 then return[2]
# when 2 then return[1]
#
# where 1 is the ID of Arshes, and 2 is the ID of Arshes' dark form.

   def self.linked_actors(actor_id)
     case actor_id
       when 5 then return [6]
       end
       
     return []
   
   end
end


#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#                             END CONFIGURATION
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=

class Game_Actor < Game_Battler
 attr_accessor :class_levels
 attr_accessor :unlocked_class
 attr_accessor :unlocked_specials
 #attr_accessor :locked_class
 attr_accessor :learned_class_skills
 attr_accessor :character_name
 attr_accessor :default_charset_name
 attr_accessor :battler_name
 attr_accessor :default_battler_name
 
# modify the actor setup for Legacy Class Change
 alias class_rank_level_LB setup  
 def setup(actor_id)
   class_rank_level_LB(actor_id)

# set up the initial default graphics (used by the graphic change system)
   @default_charset_name = @character_name
   @default_battler_name = @battler_name

# set up the class arrays used by the class changing system.
   @unlocked_class = []
   @unlocked_specials = []
   
# initialize the array that holds the class specific skills an actor has learned
   @learned_class_skills = []
   
# set up the class_levels
   @class_levels = Array.new($data_classes.size)    
   
   @class_levels.each_index {|i|
   if i == $data_actors[actor_id].class_id
     @class_levels[i] = 1
   else
     @class_levels[i] = 0
   end}

# initialize unlocked classes.
   (1...$data_classes.size).each{|class_id|
   unlock_class(class_id)}

 end
 
# method used to check if an actor meets the requirements for a class, and if he
# does, it will unlock the class for that actor
 def unlock_class(class_id)
   if !@unlocked_class.include?(class_id)
     if !LBConf::SPECIAL_CLASS.include?(class_id)
       requirement = LBConf.class_requirements(class_id)
       result = true
       requirement.each_index {|i|
       if @class_levels[i] < requirement[i]
         result = false
         break
       end}
     else
       result = false
       if unlocked_specials.include?(class_id)
         result = true
       end
     end
     if result
       @unlocked_class.push(class_id)
       @unlocked_class.sort!
     end
   end
 end

 
# method used to unlock a special class for an actor.
 def learn_special_class(class_id)
   if !@unlocked_specials.include?(class_id)
     @unlocked_specials.push(class_id)
     @unlocked_specials.sort!
    end
  end
 
# method used to lock a special class for an actor.  
  def forget_special_class(class_id)
    @unlocked_specials.delete(class_id)
    @unlocked_class.delete(class_id)
    @unlocked_specials.sort!
    @unlocked_class.sort!
 end

# modifies how levelups are assigned, so as to add to a class' level upon level
# up.
 def exp=(exp)
   @exp = [[exp, 9999999].min, 0].max
   # Level up
   while @exp >= @exp_list[@level+1] && @exp_list[@level+1] > 0
     @level += 1
     #@class_levels[class_id] += 1
       
   # modifies how skills are assigned, so that it's based on class level, rather
   # than overall level.
     $data_classes[@class_id].learnings.each {|j|
       if j.level == @class_exp[class_id][0]
         learn_skill(j.skill_id)
         if LBConf.class_spells(@class_id).include?(j.skill_id)
           @learned_class_skills.push(j.skill_id)
           @learned_class_skills.sort!
         end
           
       end
     }
   end
   # Level down
   while @exp < @exp_list[@level]
     @level -= 1
   end
   # Correction if exceeding current max HP and max SP
   @hp = [@hp, self.maxhp].min
   @sp = [@sp, self.maxsp].min
 end
end

#==============================================================================
# ** Class_Change_Scene
#------------------------------------------------------------------------------
#  Here's where the actual Class Changing Scene code starts!
#  Without this, you would just have some useless additions to the default
#  system!!! That wouldn't be much of a script, would it?
#==============================================================================

class Class_Change_Scene
 
 def initialize
 
# update the unlocked_level array for each actor
   $game_party.actors.each{|actor|
   (1...$data_classes.size).each{|class_id|
   actor.unlock_class(class_id)}}

#create the windows
   @actor_list = Window_Actor_List.new    
   @class_list = Window_Class_List.new
   @class_description = Window_Class_Description.new
   
#set window focus to the actor list
   @actor_list.last_index = 0
   @actor_list.index = 0
   @actor_list.active = true
   
   @last_class = 0
   
 end
 
 def main
     
   #enter the scene's loop
   Graphics.transition
   loop do
     Graphics.update
     Input.update
     update
     if $scene != self
       break
     end
   end
   
   # dispose of the windows created in the scene
   Graphics.freeze
   @actor_list.dispose
   @class_list.dispose
   @class_description.dispose
 end
   
 def update
   @actor_list.update
   @class_list.update
   @class_description.update
     
   # if focus is on the actor list, run the actor list's update method
   if @actor_list.active
      update_actor_list
     return
   end
   
   # if focus is on the class list, run the actor list's update method
   if @class_list.active
     update_class_list
     return
   end
 end
 
# This is the update method that will run when the actor list is the active window
 def update_actor_list
   
   # When the player moves the cursor over a new actor in the party, change the
   # text in the class list to whatever classes the highlighted actor has
   # unlocked.
   if @actor_list.index != @actor_list.last_index
     @class_list.class_list = $game_party.actors[@actor_list.index].unlocked_class
     @class_list.actor = $game_party.actors[@actor_list.index].id
     @class_list.refresh  
     @actor_list.last_index = @actor_list.index
   end
   
   # When the user presses the Cancel button, exit the entire menu
   if Input.trigger?(Input::B)
     on_cancel
   end
   
   # When the user presses the action button, activate the class list!
   if Input.trigger?(Input::C)
     $game_system.se_play($data_system.decision_se)

     #switch window focus to the class list
     @actor_list.active = false
     @class_list.index = 0
     @class_list.active = true
     
     #set the current class description, and draw the class description.
     @class_list.actor = $game_party.actors[@actor_list.index].id
     @class_description.actor = $game_party.actors[@actor_list.index].id
     @class_description.current_class = (@class_list.index + 1)
     @class_description.refresh
   return
   end
 end
 
 
# This is the update method that will run when the class list is the active window
 def update_class_list
   
   # When the player moves the cursor over a new class in the list, change the
   # text in the description window to the description of whatever class is
   # highlighted.
   if @class_list.current_class != @last_class
     @last_class = @class_list.current_class
     @class_description.current_class = (@class_list.current_class)
     @class_description.refresh
   end
   
   # When the user presses the Cancel button, return focus to the actor list
   if Input.trigger?(Input::B)
     $game_system.se_play($data_system.cancel_se)
     
     @class_description.current_class = 0
     @class_description.refresh
     @class_list.index = 0
     @class_list.index = -1
     @class_list.active = false
     @actor_list.active = true
     return
   end
   
   # When the user presses the action button, change the actor's class and
   # and graphic, then return focus to the actor list.
   if Input.trigger?(Input::C)
     $game_system.se_play($data_system.decision_se)
           
     #change the actor's class
     actor_class_change(@class_list.actor, @class_list.current_class)
     
     #refresh, and return focus to the actor list
     @class_description.current_class = 0
     @class_description.refresh
     @actor_list.refresh
     @class_list.index = -1
     @class_list.active = false
     @actor_list.active = true  
     return
   end
 end
 
#--------------------------------------------------------------------------
# * Change graphic
# method used to change the actor's graphics due to a class change.
#--------------------------------------------------------------------------
 def actor_graphics_change(actor_id)
   
   #change the actor's charset
   $game_actors[actor_id].character_name = ($game_actors[actor_id].default_charset_name +
   LBConf.class_graphic($game_actors[actor_id].class_id))

   #change the actor's battler
   $game_actors[actor_id].battler_name = ($game_actors[actor_id].default_battler_name +
   LBConf.class_graphic($game_actors[actor_id].class_id))

 end
 
#--------------------------------------------------------------------------
# * Change class
# method used to change the actor's class, and the class of those linked
# to the actor.
#--------------------------------------------------------------------------
 def actor_class_change(actor_id, class_id)
   
   #setup which actors' class needs to be changed.
   changed_actors = LBConf.linked_actors(actor_id)
   changed_actors.push actor_id
   
   #memorize which class specific skills the actor has learned for the current
   #class, then make the actor forget them
   LBConf.class_spells($game_actors[actor_id].class_id).each{|skill_id|
   $game_actors[actor_id].forget_skill(skill_id)}
   
   #change the actor(s) class.
   changed_actors.each{|actorz|
   $game_actors[actorz].class_id = class_id
   
   #remember any class specific spells the actor has forgotten forthe class
   #they're changing to.
   $game_actors[actorz].learned_class_skills.each{|skill_id|
   if LBConf.class_spells($game_actors[actorz].class_id).include?(skill_id)
     $game_actors[actorz].learn_skill(skill_id)
   end}
   
   #if graphic changing is enabled, change the actor's graphic.
   if LBConf::CLASS_GRAPHIC_CHANGE == true
     actor_graphics_change(actorz)
   end}
   
 end

# this is the method that is called to exit the menu. I did it this way for
# improved compatibility with StormTronics CMS (by Blizzard)
 def on_cancel
   $game_system.se_play($data_system.cancel_se)
   $game_player.refresh
   $scene = Scene_Map.new
   return
 end
end

class Window_Actor_List < Window_Selectable
 
 attr_accessor :last_index
 
 def initialize
   super(160, 0, 480, 352)
   self.contents = Bitmap.new(width - 32, height - 32)
   refresh
   self.active = false
   @last_index = -1
   self.index = -1
 end
 
 def top_row
   # Divide y-coordinate of window contents transfer origin by 1 row
   # height of 80
   return self.oy / 80
 end
 
 def top_row=(row)
   # Multiply 1 corrected row height by 80 for y-coordinate of window contents
   # transfer origin
   self.oy = [[row, 0].max, row_max - 1].min * 80
 end
 
 def page_row_max
   # Subtract a frame height of 32 from the window height, and divide it by
   # 1 row height of 80
   return (self.height - 32) / 80
 end

 def refresh
   self.contents.clear
   @item_max = $game_party.actors.size
   for i in 0...$game_party.actors.size
     x = 64
     y = i * 80
     actor = $game_party.actors[i]
     draw_actor_graphic(actor, x - 40, y + 55)
     draw_actor_name(actor, x, y)
     draw_actor_level(actor, x + 144, y)
     
a = $game_party.actors[i]
c = a.class_id
v = a.class_exp[c]
$game_variables[1] = c
$game_variables[2] = v[0]
     
     
     
     
     self.contents.draw_text(x, y + 32, width - 32, 32, ($data_classes[$game_party.actors[i].class_id].name + ' rank: ' + v[0].to_s))
   end
 end
 def update_cursor_rect
   # If cursor position is less than 0
   if @index < 0
     self.cursor_rect.empty
     return
   end
   # Get current row
   row = @index / @column_max
   # If current row is before top row
   if row < self.top_row
     # Scroll so that current row becomes top row
     self.top_row = row
   end
   # If current row is more to back than back row
   if row > self.top_row + (self.page_row_max - 1)
     # Scroll so that current row becomes back row
     self.top_row = row - (self.page_row_max - 1)
   end
   # Calculate cursor width
   cursor_width = self.width / @column_max - 32
   # Calculate cursor coordinates
   x = @index % @column_max * (cursor_width + 32)
   y = @index / @column_max * 80 - self.oy
   # Update cursor rectangle
   self.cursor_rect.set(x, y, cursor_width, 80)
 end
end

class Window_Class_List < Window_Selectable
 
 attr_accessor :actor
 attr_accessor :class_list
 attr_accessor :item_max
 attr_reader   :current_class
 
 def initialize
   super(0, 0, 160, 352)
   @actor = 1
   @class_list = $game_actors[@actor].unlocked_class
   @item_max = @class_list.length
   self.contents = Bitmap.new(width - 32, @item_max * 32)
   refresh
   @index = -1
   @active = false
   @current_class = 1
 end
 
 def refresh
   self.contents.clear
   @item_max = @class_list.size
   self.contents = Bitmap.new(width - 32, @item_max * 32)
   i = 0
   @class_list.each{|class_id|
   self.contents.draw_text(10, i, width - 32, 32, $data_classes[class_id].name)
   i += 32 }
 end
 
alias update_cursor_LB update_cursor_rect
 def update_cursor_rect
   update_cursor_LB
   if @index >= 0
     @current_class = @class_list[@index]
   end
 end
end

class Window_Class_Description < Window_Base

 attr_accessor :current_class
 attr_accessor :actor
 def initialize
   super(0, 352, 640, 128)
   @current_class = 0
   @actor = 0
   self.contents = Bitmap.new(width - 32, height - 32)
 end
 
 def refresh
   self.contents.clear
   draw_description(@current_class)
 end
 
 
 def draw_description(class_id)
   offset = 0
   description = LBConf.class_descriptions(class_id)
   description.each_index{|class_descrip|
   self.contents.draw_text(0, (0 + offset *32), width - 32, 32, description[class_descrip])
   offset = offset + 1}
 end
end



thx in advance

Please use [code][/code] tags when posting code. Thanks. ~ G_G
2
Script Requests / [XP] Class Change Skill Fix
May 13, 2012, 07:36:33 pm
hi, i need help with that what the title says :<_<:
everytime you change your class all leraned skills will be forgotten.
but if you switch back to it the learned skills are not relearned...
i want that if i switch back to a class that all skills that the class already have leraned get relearned !
hope someone can help me :^_^':
thx in advance
3
Script Requests / [XP] Environment Path
April 10, 2012, 06:37:58 pm
hi there again, i want to save my savvegames in the My Games folder like real games do that.
i tryed %PATH% and [PATH] allready but it doesnt work...
how can i use an environment path in rmxp ? (some games can that)
and if it works how can i check if the folder exists and if it not exists make rmxp to create it ?
because it crashes when a folder not exists...

thx alot in advance
4
RMXP Script Database / [XP] Buddy's CMS
April 09, 2012, 05:13:01 pm
    Buddy's CMS
    Authors: BuddySievers alias Griver03
    Version: v3.00
    Type: Custom Menu System
    Key Term: Custom Menu System



    Introduction
    Hi everyone, i decided to make an custom menu system because there is no one out there which have all the features which my has.
    Also i wanted to give the rm scene something back, after they helped me so much !


    Features

    • Choose between normal or icon command window.

    • Choose between vocab or icon for gold,playtime,steps and progress %.

    • Choose the side of the command and the extra windows.

    • Choose the contents of the extra windows. (playtime,steps,progress and location name.)

    • Choose the opacity of the windows.

    • Choose between normal transition or graphic transition.

    • Choose the transition fading time.

    • Choose between a picture, a mapback, a blur effect or nothing as background.

    • Have a load command in the menu.

    • Choose between facesets or actor spritesets in the menu scene.

    • Choose between facesets or actor spritesets in the status scene.

    • Choose between vocabs or icons for status effects.

    • Can have gradient bars behind the hp/sp/exp/parameters values.

    • A vocab module for easy editing of them.

    • Maybe some more which i forgot... (~_~')




    Screenshots
    Maybe comming next version...


    Demo



    Script



    Instructions
    Pls look in the script ! (i'm a bit lazy... :shy:)


    Compatibility
    • 100% compatible with SDK v2.4. (I didnt got any errors.)

    • 100% compatible with MACL v2.0. (I didnt got any errors.)

    • 100% compatible with MOUSIE! v2.0. (Everything worked fine.)

    • (Should work with any other mouse script too.)

    • Maybe causes some errors with menu modifications and other CMS'es...

    • Don't use with COGWHEEL Plug 'n' Play Menu Bars by DerVVulfman.

    • Don't use with Status Effects as Icons by Blizzard.

    • Don't use with Simple Facesets by Blizzard.

    • Don't use with Facesets for DSS by Zan.

    • Should be compatible with anything else, but if you find some compatibility issues then contact me pls and i will list them here !




    Known Bugs

    • The blur effect works only correct in fullscreen mode... (I will ask game_guy for some help with it !)




    Credits and Thanks

    • stardust (Manuel Schmuki) - For helping me with the icon command.

    • ForeverZer0 - For his Mapback scene converter snippet i used.

    • Blizzard - For his facesets script and the status icon script i used.

    • Zan - For his facesets script i used.

    • game_guy - For his snapshot script which is part of the blur effect script.

    • kellessdee - For his blur effect script i used.

    • Cogwheel/DerVVulfman - For the gradient bars script i used.

    • My Brother (My real brother) - For beta testing.

    • ASCII/Enterbrain - For their RM Series.

    • Don Miguel - For his translation of the RM2K.

    • (Without him the RM scene where probably never gone so public !)

    • And all who ever helped me. - Thx a lot !!!




    Author's Notes

    • This is my first own script, even if its more a edit of standrt classes and merges of custom scripts, i hope you will like it and give me some response and/or critic, i need it !

    • If you want me to add a specific function feel free to cantact me !

    • Pls credit me if you use this script. (^_^)

    • Maybe give the authors of the scripts i used credits too !

    • Also pls send me a link to your game, i want to test it of course !

    • Sorry for my bad english ! (~_~')




    Last Notes
    I hope that i dont forgot anything and done all correct :roll:

    5
    Script Requests / [XP] Custom Attributes
    March 08, 2012, 09:56:35 am
    hi there, i searched alot but i found nothing usefull...
    i want to add custom attributes like str,dex,agi and int.
    i tryed a bit around but nothing works, maybe because i dont even knew what i did ^^
    this would be usefull for many people so its not only a request for me and i think its a good idea to make such a script !

    i added my test projects, maybe its just a lil thing i forgot, maybe i did it completly wrong, but for shure it would be much
    better if everything comes with one script...

    what i need is:

    1.) Fixing the Error from Status Menu ( noMethod Error `+'for nil...)
    Maybe some more bugs...

    2.) Fixing the Level 1 Bug when using the array method from v1
    (At Level 1 you have 0 Points instead of 10, i fixed it for now with a scriptcall.)

    3.) Make a Script to Set Vit,Mnd,Chr,Lck +'s for Weapons and Armors.
    example:         Weapon ID[X] => 5, 5, 0, -5 #   +5 Vit,   +5 Mnd, +/-0 Chr,   -5 Lck
                         Weapon ID[X] => 0, 0, 10, 0 # +/-0 Vit, +/-0 Mnd,  +10 Chr, +/-0 Lck

    4.) Make a Script to Enfluence Skills with Vit,Mnd,Chr,Lck
    example:         Skill ID[X] => 0,  0,  0, 50 # 50% Lck Influence for Skill ID X
                         Skill ID[X] => 0, 25, 25,  0 # 25% Mnd, 25% Chr Influence for Skill ID X

    5.) Chr and Lck should be useable in Conditional Branch
    example:         If Lck is bigger than 30...
                         (i think thats already possible with "$game_party.actors
    • .lck_plus >= 30" ??)

      6.) If its not to much work it would be nice if the attributes use an curve like the normal attributes in the database.
      Because the Array method from v2 is not very nice...
      example:         when 1 # CharacterID[1]
                             vit_lv1 = 15
                             vit_lv99   = 999
                             vit_curve = fast
                             mnd_lv1 = 20
                             mnd_lv99   = 750
                             mnd_curve = normal
                             chr_lv1 = 20
                             chr_lv99   = 500
                             chr_curve = slow
                             lck_lv1 = 5
                             lck_lv99   = 150
                             lck_curve = normal
                           when 2 # CharacterID[2]...

      7.) "Job Stat Modifier" should be compatible with the new attributes.

      8.) maybe addon scripts like 2 and 3 but for items and states (buff states or items which increase the attribute)
      but thats not so important, at least to me xD

      if you need more informations then say so !

      i beg you, pls help me with that :shy:
      and thx in advance

      Test Project V1 + V2



    6
    hi again :^_^':

    ok first make a new project, insert Cim 1.1 below debug/above main.
    now start the game go into the item scene.
    you can select a category and choose it with pushing the c button (normally enter)
    or you push the down key.
    if you do so you are in the selected category and can select items.
    good, now you can see how it normally works !

    ok now insert the Expanded Details Script under CiM 1.1.
    now go again in the item scene and select a category with the c button,
    youll see somehow the maker makes an double c push of it...
    the first item in the category will be executed.

    everything elese works fine if i selected a item and push the shift button the expanded details comes up
    like it should...


    i hope its not a big deal to fix that :roll:
    pls help me.
    thx in advance, griver


    CiM 1.1
    http://pastebin.com/5t3tq2Q1

    Expanded Details
    http://pastebin.com/0RFZDwQB
    7
    hi there i have a question about scripting possibiltys.
    i use some scripts which use the actors name for sprite selection (legacy class change as example.)
    so i have to give my actors names in database.
    but i thought about to give the player the opportunity to select the actors name by their self.
    therefore are many scripts out there i know.
    but the problem is that the graphics need to be named like the actor....
    now my question is, is there a way to create a script which can do the following:

    check which name an actor have,
    copy a picture from the charaters folder and rename it in the way it needs to be named.

    example:

    This is how legacy wants to have it for actor 1 = "Aluxes_Warrior.png"
    But if i change the name by script, for example to "Peter"
    the graphic's name have to be "Peter_Warrior.png" too.

    now comes the new script to work
    in the characters folder is a grphic named "TEMP1_Warrior.png"
    now the script should copy the file and rename it to "Peter_Warrior.png"

    like i said i dont request that but i want to know if this is possible ?!
    thx in advance
    8
    Script Requests / [XP] MGC Neo MODE7 FF6 Airship
    July 09, 2011, 12:30:49 pm
    hi i would like to have an airship system like ff6 or secret of mana have,
    i only found a ff4 airship script which dont rotate the map, only it makes a 360° turn a a keypress.
    i want that the map turns when i push right left is this possible or already out there for XP ?
    i dont know exactly but i think that dargors ff6 sdk has this but its vx :\
    pls help me ^^
    thx in advance
    9
    Character Creation System
    Version: 0.99b
    Type: Additional Feature



    Introduction

    When i began to develop my MMORPG with RMX-OS i decided to make a character creation system for my game.
    I canceled the game and the project where almost forgotten, till KoenLemmen asked about a ccs which is compatibel
    with rmx-os and blizzabs so i decided to finish this system and release it finally !
    ITS ACTUALLY A BETA AND NOT 100% FINISHED READ THE INTRODUCTION OF THE DEMO FOR MORE INFORMATION !


    Features


    • Completly made with Events
    • Easy to Modify
    • Compatible with RMX-OS and BlizzABS
    • Choose Gender/Face/Haircolor/Class and Nation
    • Includes also a Fake Login System for RMX-OS



    Screenshots

    Coming soon... Maybe...


    Demo
    http://www.mediafire.com/?w0e5q8el0x8ti48 FIXED LINK !!!
    http://www.sendspace.com/file/64s0v7 MIRROR


    Instructions

    If you are unexpierenced with eventing it would be hard to understand !
    But if you understand how it works its very easy to use/modify.
    Just look through the events.
    Also read carefully the instructions at the beginning of the demo for more informations.


    Credits and Thanks


    • SquareEnix's Final Fantasy XI for inspiring me.
    • KoenLemmen for it, you gave me the motivation to finish it^^



    Author's Notes
    Any response/critic would be nice  ;)
    i hope that i have nothing forgot ^^
    10
    Script Requests / [XP] Weapon Skill Atrributes
    June 24, 2011, 05:11:13 pm
    ok i wonder if its possible to make an weapon skill system like final fantasy xi have ?

    Exampel:
    Warrior
    White Mage
    Samurai
    its called "Combat Skill Ratings" on the page.

    its selfexplaining i think.
    even without the levelcap and levl system its a great idea i thought.
    only the classification system would be nice too !
    eg. just a,b,c,d,e for the power % of weapons and maybe armors too ?!

    thx
    11
    Script Troubleshooting / [XP] Merging scripts
    June 24, 2011, 01:32:43 pm
    like the topic says i want to merge some of my scripts.
    (i want to make something like tons of addons)

    i think i have to rename the modules of all scripts to the same name.
    then i need to put all attr_accessor's together.
    at last thing i must put all module configs togehter.

    is there anything i forgot ?!

    thx in advance
    12
    Script Requests / [XP] Equipment Set Bonus
    June 20, 2011, 12:19:18 pm
    hi i wonder if there is already a script for set bonuses like in mmorpgs and some rpgs.
    if you got all parts of an set you get bonus stats thats very all of it.

    a bit better version of it is like aion have, you can set the bonus stats to an ammount of set parts i cant good english so its hard to explain for me.
    so i make an example for that  :^_^':

    1 Part - nothing
    2 Parts - STR +10
    3 Parts - STR +20
    4 Parts - STR +30,DEX +20
    5 Parts - STR +50,DEX +50

    the script should simply check if you got armor/weapon ids X,Y,Z... equiped and give you the bonuses. (x,y,z are ids of the armors weapons)
    sets should be made like this

    Set1 = [0,1,2,3,4] or Set1 = [0,0,1,2,3,4,5,6,7] for multiequip support.
    and so on.

    edit: it actually should look like this [11,3,2,6,19] weaponid 11, shieldid 3, helemtid 2, armorid 6, accid 19...

    i hope that someone could make this when its not yet made  :roll:

    thx in advance
    13
    hi again now i got almost everything finished in my class system the only thing left is the levelup system for jobs.
    i use legacy blades legacy class change script and want the job EXP part from R0 Job/Skill system in the legacy class change script.
    i tryed much things to cut the part out and integrate it in legacy class change but i dont get it...
    i dont want the jp or the skill system only the job exp !
    in the lagacy class chnage script the levelup method for job levels are like if you get an actor lrvrl up you get an job level up...
    so i want that the job exp for leveling up classes.
    like i said i didnt get it working so if someone maybe could help me by this ?!

    thx in advance


    Legacy Class Change

    RO SKILL/JOB System

    In the legacy class change script the level up method is on line 570 if that helps.
    14
    hi there i've found a script which uses items for skills.
    it has a check if you got the items and if not the skill is disabled.
    but it shows me an error even in a blank project so i want to ask if someone can take a look at it.
    maybe its not working because its from cogwheel and if i'm not wrong rtab is from him and maybe this is only for rtab...
    i dont know  :???:
    the error shows up when i use the skill in battle system (i used the standart config 1 potion and 2 high perfumes for heal)
    here the script
    Spoiler: ShowHide

    # Skills That Consume Items Ver 1.00
    # Distribution original support URL
    # http://members.jcom.home.ne.jp/cogwheel/

    #==============================================================================
    # ** Game_Actor
    #------------------------------------------------------------------------------
    #  This class handles the actor. It's used within the Game_Actors class
    #  ($game_actors) and refers to the Game_Party class ($game_party).
    #==============================================================================

    class Game_Actor < Game_Battler
      #--------------------------------------------------------------------------
      # * Setting of medium
      #--------------------------------------------------------------------------
      def medium(skill_id)
        case $data_skills[skill_id].name
        when "Heal"
          return [["Potion"], ["High Perfume", 2]]
        end
        return false
      end
      #--------------------------------------------------------------------------
      # * Get Item Name
      #--------------------------------------------------------------------------
      def item_name(name)
        for item in $data_items
          if item != nil and name == item.name
            return item.id
          end
        end
      end
      #--------------------------------------------------------------------------
      # * Determine if Skill can be Used
      #     skill_id : skill ID
      #--------------------------------------------------------------------------
      def skill_can_use?(skill_id)
        items = medium(skill_id)
        if items
          for item in items
            id = item_name(item[0])
            if $game_party.item_number(id) < (item[1] == nil ? 1 : item[1])
              return false
            end
          end
        end
        return super
      end
    end

    #==============================================================================
    # ** Scene_Battle (part 4)
    #------------------------------------------------------------------------------
    #  This class performs battle screen processing.
    #==============================================================================

    class Scene_Battle
      #--------------------------------------------------------------------------
      # * Make Skill Action Results
      #--------------------------------------------------------------------------
      def make_skill_action_result(battler)
        # Get skill
        @skill = $data_skills[battler.current_action.skill_id]
        # Verification whether or not it is cooperation skill
        speller = synthe?(battler)
        # If not a forcing action
        unless battler.current_action.forcing
          # When with SP and so on is cut off and it becomes not be able to use
          if speller == nil
            unless battler.skill_can_use?(@skill.id)
              # Shift to step 6
              battler.phase = 6
             return
            end
          end
        end
        # SP consumption
        temp = false
        if speller != nil
          for spell in speller
            if spell.current_action.spell_id == 0
              spell.sp -= @skill.sp_cost
            else
              spell.sp -= $data_skills[spell.current_action.spell_id].sp_cost
            end
          # Refreshing the status window
            status_refresh(spell)
          end
        else
          battler.sp -= @skill.sp_cost
          # Refreshing the status window
          status_refresh(battler)
        end
        # Setting animation ID
        battler.anime1 = @skill.animation1_id
        battler.anime2 = @skill.animation2_id
        # Setting common event ID
        battler.event = @skill.common_event_id
        # Setting the object side battler
        set_target_battlers(@skill.scope, battler)
        # Applying the effect of skill
        for target in battler.target
          if speller != nil
            damage = 0
            effective = false
            state_p = []
            state_m = []
            for spell in speller
              if spell.current_action.spell_id != 0
                @skill = $data_skills[spell.current_action.spell_id]
              end
              effective |= target.skill_effect(spell, @skill)
              if target.damage[spell].class != String
                damage += target.damage[spell]
              elsif effective == true
                effect = target.damage[spell]
              end
              state_p += target.state_p[spell]
              state_m += target.state_m[spell]
              target.damage.delete(spell)
              target.state_p.delete(spell)
              target.state_m.delete(spell)
            end
            if damage != 0
              target.damage[battler] = damage
            elsif effective = true
              target.damage[battler] = effect
            end
            target.state_p[battler] = state_p
            target.state_m[battler] = state_m
          else
            target.skill_effect(battler, @skill)
          end
        end
        # If item(s) are used
        if battler.is_a?(Game_Actor)
          items = battler.medium(@skill.id)
          if items
            for item in items
              id = battler.item_name(item[0])
              num = item[1] == nil ? 1 : item[1]
              # Check if consumable             
              if $data_items[id].consumable
                $game_party.gain_item(id, -num)
              end
            end
          end
        end
      end
    end

    #==============================================================================
    # ** Scene_Skill
    #------------------------------------------------------------------------------
    #  This class performs skill screen processing.
    #==============================================================================

    class Scene_Skill
      #--------------------------------------------------------------------------
      # * Frame Update (when target window is active)
      #--------------------------------------------------------------------------
      def update_target
        # If B button was pressed
       
        if Input.trigger?(Input::B)
          # Play cancel SE
          $game_system.se_play($data_system.cancel_se)
          # Erase target window
          @skill_window.active = true
          @target_window.visible = false
          @target_window.active = false
          return
        end
        # If C button was pressed
        if Input.trigger?(Input::C)
          # If unable to use because SP ran out
          unless @actor.skill_can_use?(@skill.id)
            # Play buzzer SE
            $game_system.se_play($data_system.buzzer_se)
            return
          end
          # If target is all
          if @target_window.index == -1
            # Apply skill use effects to entire party
            used = false
            for i in $game_party.actors
              used |= i.skill_effect(@actor, @skill)
            end
          end
          # If target is user
          if @target_window.index <= -2
            # Apply skill use effects to target actor
            target = $game_party.actors[@target_window.index + 10]
            used = target.skill_effect(@actor, @skill)
          end
          # If single target
          if @target_window.index >= 0
            # Apply skill use effects to target actor
            target = $game_party.actors[@target_window.index]
            used = target.skill_effect(@actor, @skill)
          end
          # If skill was used
          if used
            # If item(s) are used
            if @actor.is_a?(Game_Actor)
              items = @actor.medium(@skill.id)
              if items
                for item in items
                  id = @actor.item_name(item[0])
                  num = item[1] == nil ? 1 : item[1]
                  # Check if consumable             
                  if $data_items[id].consumable
                    $game_party.gain_item(id, -num)
                  end
                end
              end
            end
            # Play skill use SE
            $game_system.se_play(@skill.menu_se)
            # Use up SP
            @actor.sp -= @skill.sp_cost
            # Remake each window content
            @status_window.refresh
            @skill_window.refresh
            @target_window.refresh
            # If entire party is dead
            if $game_party.all_dead?
              # Switch to game over screen
              $scene = Scene_Gameover.new
              return
            end
            # If command event ID is valid
            if @skill.common_event_id > 0
              # Command event call reservation
              $game_temp.common_event_id = @skill.common_event_id
              # Switch to map screen
              $scene = Scene_Map.new
              return
            end
          end
          # If skill wasn't used
          unless used
            # Play buzzer SE
            $game_system.se_play($data_system.buzzer_se)
          end
          return
        end
      end
    end

    would be nice if its only a bug in the script ^^
    btw i cant use tons of addons so thats why i want to use this script ! (tons of addons isnt compatible to gtbs...)

    thx in advance
    15
    Script Requests / Rename SP Script
    June 12, 2011, 12:07:56 pm
    hi searching for a script to change the string of "SP" to "TP" or whatelse by "ClassID".
    means warrior have tp and mage have mp...
    the script by moghunter adds tp to every actor and not just rename the string, in his script actors have both...
    i want just rename by classID is that possible ?

    EDIT:
    http://rmrk.net/index.php/topic,42164.0.html
    this script can do this but its vx....
    16
    RMXP Script Database / [XP] Job Stat Modifier
    June 12, 2011, 11:40:35 am
    Job Stat Modifier
    Authors: Griver03 alias BuddySievers
    Version: 1.1
    Type: Class System Add-on
    Key Term: Actor Add-on



    Introduction

    With this script you can have class specific actor stats.
    Like in Final Fantasy XI - Online when you switch your
    class the stats  will get increased or decreased.


    Version Log

    1.0 - Release version.
    1.1 - Added the fix to the main script.


    Features


    • Modifie actor stats by class.

    • Can use integer values and decimal values.

    • Modifieable stats: MaxHP,MaxSP,STR,DEX,AGI,INT.




    Screenshots

    Not required...


    Demo

    Demo 1.0
    Demo 1.1


    Script

    Spoiler: ShowHide

    #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
    # Job Stat Modifier by Griver03 alias BuddySievers
    # Version: 1.1
    # Type: Job/Class System Addon
    # Date: 11.06.2011
    #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
    # Original Script: RO Job/Skill System by Blizzard.
    # Version: 2.1b
    # Date 2.1b: 22.1.2011
    # Type: Ragnarok Online Job/Skill System Clone
    #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
    #  
    #  This work is protected by the following license:
    # #----------------------------------------------------------------------------
    # #  
    # #  Creative Commons - Attribution-NonCommercial-ShareAlike 3.0 Unported
    # #  ( http://creativecommons.org/licenses/by-nc-sa/3.0/ )
    # #  
    # #  You are free:
    # #  
    # #  to Share - to copy, distribute and transmit the work
    # #  to Remix -- to adapt the work
    # #  
    # #  Under the following conditions:
    # #  
    # #  Attribution. You must attribute the work in the manner specified by the
    # #  author or licensor (but not in any way that suggests that they endorse you
    # #  or your use of the work).
    # #  
    # #  Noncommercial. You may not use this work for commercial purposes.
    # #  
    # #  Share alike. If you alter, transform, or build upon this work, you may
    # #  distribute the resulting work only under the same or similar license to
    # #  this one.
    # #  
    # #  - For any reuse or distribution, you must make clear to others the license
    # #    terms of this work. The best way to do this is with a link to this web
    # #    page.
    # #  
    # #  - Any of the above conditions can be waived if you get permission from the
    # #    copyright holder.
    # #  
    # #  - Nothing in this license impairs or restricts the author's moral rights.
    # #  
    # #----------------------------------------------------------------------------
    #
    #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
    #
    #        Special Thanks for helping me fixing a bug goes to Irrlicht.
    #
    #  
    # -Compatibility:
    #  
    #   100% compatible with SDK v2.4, not testet with older versions.
    #   100% compatible with MACL v2.0, idk if this is important.
    #   Works 100% with LegacyBlades Legacy Class Change script.
    #   Don't use this script with Blizzard's R0 Skill/Job System.
    #   Can cause incompatibility issues with other exotic Class/Job Systems.
    #   Should work with any CMS or CBS.
    #
    #
    # -Bugs:
    #
    #   No bugs found since Irrlicht's fix.
    #
    #
    # -Version Log:
    #
    #   1.0 - 11.06.2011 - Release Version.
    #   1.1 - 12.06.2011 - Added the fix to the main script.
    #
    # -Explanantion:
    #  
    #   With this script you can have class specific actor stats.
    #   Like in Final Fantasy XI - Online when you switch your class the stats  
    #   will get increased or decreased.
    #
    #                                 -Example-
    #
    #   ClassID[1] = Warrior      ClassID[2] = Thief       ClassID[3] = Blackmage
    #   MaxHP      = 1000         MaxHP      = 750         MaxHP      = 450
    #   MaxSP      = 250          MaxSP      = 350         MaxSP      = 500
    #   STR        = 100          STR        = 50          STR        = 20
    #   DEX        = 100          DEX        = 100         DEX        = 35
    #   AGI        = 50           AGI        = 100         AGI        = 50
    #   INT        = 25           INT        = 25          INT        = 150
    #
    #
    # -Features:
    #  
    #   - Modifie actor stats by class.
    #   - Can use integer values and decimal values.
    #   - Modifieable stats: MaxHP,MaxSP,STR,DEX,AGI,INT.
    #
    #
    # -Installation:
    #
    #   Put this script below Scene_Debug and above Main.
    #   I think its better to put this below CMS,CBS and Class/Job Systems.
    #
    #
    # -Configuration:
    #
    #   See below at line 118 or search for START.
    #
    #
    # -Credits:
    #  
    #   Blizzard for the original script.
    #   Irrlicht for fixing a bug with the hp/sp.
    #   Me for the idea, cutting, renameing and testing.
    #
    #
    # If you find any bugs, please report them here:
    # http://forum.chaos-project.com
    #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
    module JobStatModCFG
     
     def self.job_stat_mod(id)
       p_maxhp = p_maxsp = p_str = p_dex = p_agi = p_int = 0
       m_maxhp = m_maxsp = m_str = m_dex = m_agi = m_int = 1.0
       case id
    #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    # START Job Stat Modifier Database
    #  
    #   You are able to set up modifiers for actor stats that change depending on
    #   the current class/job. Use following template to set up your configuration:
    #
    #     when ID
    #       p_maxhp = PLUS
    #       p_maxsp = PLUS
    #       p_str = PLUS
    #       p_dex = PLUS
    #       p_agi = PLUS
    #       p_int = PLUS
    #       m_maxhp = MULTI
    #       m_maxsp = MULTI
    #       m_str = MULTI
    #       m_dex = MULTI
    #       m_agi = MULTI
    #       m_int = MULTI
    #
    #     ID    - the current class ID
    #     PLUS  - an integer value (default is 0)
    #     MULTI - a decimal value (default is 1.0)
    #
    #   The values that have p_ before that name are static modifiers. For example,
    #   if you use 100, then the given stat will increase by 100 if the actor has
    #   the given class. If you use -200, then it will decrease by 200 from the
    #   actor's basis.
    #   The values that have m_ before that name are dynamic modifiers. For
    #   example, if you use 1.1, then the given stat will increase by 10% if the
    #   actor has the given class. If you use 0.8, then it will decrease by 20%
    #   from the actor's basis.
    #  
    # Note:
    #  
    #   It might be a good idea to create a neutral class if you are using this
    #   feature. If you don't set up a class here, then the default values will be
    #   applied. Keep in mind that first all static modifiers will be applied and
    #   afterwards the dynamic modifiers.
    #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
       when 1 # ClassID[1]
         p_maxhp = 0
         p_maxsp = 0
         p_str = 0
         p_dex = 0
         p_agi = 0
         p_int = 0
         m_maxhp = 1.0
         m_maxsp = 0.5
         m_str = 1.0
         m_dex = 1.0
         m_agi = 1.0
         m_int = 0.5
       when 2 # ClassID[2]
         p_maxhp = 0
         p_maxsp = 0
         p_str = 0
         p_dex = 0
         p_agi = 0
         p_int = 0
         m_maxhp = 0.5
         m_maxsp = 1.0
         m_str = 0.5
         m_dex = 0.5
         m_agi = 0.5
         m_int = 1.0
      #when 3 # ClassID[3]
         #p_maxhp = 0
         #p_maxsp = 0
         #p_str = 0
         #p_dex = 0
         #p_agi = 0
         #p_int = 0
         #m_maxhp = 1.0
         #m_maxsp = 1.0
         #m_str = 1.0
         #m_dex = 1.0
         #m_agi = 1.0
         #m_int = 1.0
    #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    # END Job Stat Modifier Database
    #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
       end
       return [p_maxhp, m_maxhp, p_maxsp, m_maxsp, p_str, m_str, p_dex, m_dex,
           p_agi, m_agi, p_int, m_int]
     end
    end
    #==============================================================================
    # Game_Actor
    #------------------------------------------------------------------------------
    #  This is where the stats get modified.
    #==============================================================================
    class Game_Actor < Game_Battler
     #----------------------------------------------------------------------------
     # override base_maxhp
     #----------------------------------------------------------------------------
     alias base_maxhp_modifier_later base_maxhp
     def base_maxhp
       result, mods = base_maxhp_modifier_later, JobStatModCFG.job_stat_mod(@class_id)
       return ((result + mods[0]) * mods[1]).to_i
     end
     #----------------------------------------------------------------------------
     # override base_maxsp
     #----------------------------------------------------------------------------
     alias base_maxsp_modifier_later base_maxsp
     def base_maxsp
       result, mods = base_maxsp_modifier_later, JobStatModCFG.job_stat_mod(@class_id)
       return ((result + mods[2]) * mods[3]).to_i
     end
     #----------------------------------------------------------------------------
     # override base_str
     #----------------------------------------------------------------------------
     alias base_str_modifier_later base_str
     def base_str
       result, mods = base_str_modifier_later, JobStatModCFG.job_stat_mod(@class_id)
       return ((result + mods[4]) * mods[5]).to_i
     end
     #----------------------------------------------------------------------------
     # override base_dex
     #----------------------------------------------------------------------------
     alias base_dex_modifier_later base_dex
     def base_dex
       result, mods = base_dex_modifier_later, JobStatModCFG.job_stat_mod(@class_id)
       return ((result + mods[6]) * mods[7]).to_i
     end
     #----------------------------------------------------------------------------
     # override base_agi
     #----------------------------------------------------------------------------
     alias base_agi_modifier_later base_agi
     def base_agi
       result, mods = base_agi_modifier_later, JobStatModCFG.job_stat_mod(@class_id)
       return ((result + mods[8]) * mods[9]).to_i
     end
     #----------------------------------------------------------------------------
     # override base_int
     #----------------------------------------------------------------------------
     alias base_int_modifier_later base_int
     def base_int
       result, mods = base_int_modifier_later, JobStatModCFG.job_stat_mod(@class_id)
       return ((result + mods[10]) * mods[11]).to_i
     end
    #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
    # Job Stat Modifier Fix by Irrlicht
    # Date: 11.06.2011
    #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
     alias_method(:class_id_JobStatMod, :class_id=) unless method_defined?(:class_id_JobStatMod)
     def class_id=(class_id)
       class_id_JobStatMod(class_id)
       # set new hp/sp after class change.
       self.hp = hp
       self.sp = sp
     end
    end




    Instructions

    In the script.


    Compatibility

    100% compatible with SDK v2.4, not testet with older versions.
    100% compatible with MACL v2.0, idk if this is important.
    Works 100% with LegacyBlades Legacy Class Change script.
    Don't use this script with Blizzard's R0 Skill/Job System.
    Can cause incompatibility issues with other exotic Class/Job Systems.
    Should work with any CMS or CBS.


    Credits and Thanks


    • Blizzard for the original script.

    • Irrlicht for fixing a bug with the hp/sp.

    • Me for the idea, cutting, renameing and testing.




    Author's Notes

    I hope you like this  :^_^':
    Edit: Updatet to 1.1 - now the script is only one part.
    17
    hi i want to use the function of the ro job/skill script by blizzard to dercrease or increase the stats of the character by class.
    this part i want to use wth LegacyBlades LegacyClass Change Script.
    i was able to cut out anything of the ro job/skill script except the statt modifier parts but now there is the bug that when
    i change my class the hp/sp dont get decreased
    that means if i change to a class with less hp/sp then i still have the hp/sp from the class before...
    example: I change from Class1 HP1322/1322 to Class2 HP1322/768.

    so can anyone make a bug free standalone from the Job Stat Modifier pls ?
    18
    Script Requests / VX Script Port to XP
    June 05, 2011, 12:43:52 pm
    Hi again this time i have a really big thing here ^^
    its an rmvx script which is unique, that means is the only script in that kind on web i think :o
    Its called Yanfly Engine RD - Subclass Selection System, and it is a job system with subclass and many features.
    now my question is who can port this to xp  :naughty:
    i think this would be very hard and only possible to experts so guys pl~~~~~~~~~s convert it :roll:
    heres a link http://pastebin.com/8VuDv2yE
    19
    Script Requests / GTBS 1.5.1.4 Bestiary Plugin
    June 01, 2011, 12:51:33 pm
    hi can anyone pls make a plugin that the bestiary by blizzard works with gtbs from gubid ?
    her is a link for the gtbs newest version:
    http://www.creationasylum.net/forum/index.php?showtopic=20353
    and thx in advance  :roll:
    20
    Tutorial Requests / Menu with Icons
    May 30, 2011, 01:24:26 pm
    hi there i edited my standard menu in much things but i didnt get a clue how to add icons to the munu commands...
    i searched alot on google but no one had a tutorial or a script...
    ok there was a script but it doesnt worked and the creator has said that it was his first script and its crap  :o
    so can someone tell me how i can do that ?!
    i want the icons on the left side of the menu commands.
    pls help me and thx in advance
    21
    Chocobo System
    Version: V 1.0
    Type: Only a riding system yet^^



    Introduction

    ok here it is ^^
    with this system you can ride anything you want !
    if its a chocobo or a horse or a wtf else like a stone if ya want to ^^


    Features


    • ride anything you want, just use a other charset
    • license system for riding
    • comming soon: be the owner of a choc
    • comming soon: rent a choc
    • comming soon: Feed your choc
    • comming soon: to bring up a choc, with different colors
    • and many more ^^



    Screenshots

    not necessary :P


    Demo

    http://www.mediafire.com/?8799c4wbw9ta26v FIXED LINK !!!
    http://www.sendspace.com/file/272phd MIRROR


    Instructions

    How it works:
    its easy just look in the common events and the events on the map !


    Credits and Thanks


    • the original is by an unknown rm2k developer from germany, i found it 2001 at http://www.rpg-atelier.net
    • but they dont have any scripts there since they changed the site... (i search for the original author and post his name "when" i found it !)
    • besides that credits go to another unknown person who made the nice chocobo chars !
    • if someone knows the original authors pm me, and i chnage it ^^



    Author's Notes

    this system is a chaos-project exclusive release !
    its forbidden to post/upload it to other sites/boards without my permission !
    if you use this system use my name in the credits.
    sry for my bad english and have fun with it

    Griver03 alias BuddySievers
    22
    Script Requests / Simple Extension Request
    February 15, 2011, 12:17:33 pm
    hi again ^^

    i want to make a boat/airship scene in my game, with gloabal variables i define the time that the ship will need to come from a to b and back to a...

    but when no one is logged in and common events doesnt work, i cant do that client sided...
    so i need a server extension which sets global variables in a time you can set e.g all 3 sec's +1.

    example:
    Varibale47 - MaxCount2000 - Time3 (All 3 sec's the Variable47 gets +1 when it reaches 2000 it resets to 0)

    ship needs from a to b 1000 sec's and 1000 sec's back to a so it need 2000 sec's for one cycle.

    an other usefull thing what you can do whith this:

    a Rare Mob is defeatet, a cooldown timer will check his respawn client sided not possible if no users on...

    example:
    if Switch99 - Variable99 - MaxCount5000 - Time5 (Same as above but the counter only works when gloabal switch 99 is on, because when the counter has reached 5000, at the client side the switch will be turned off and the mob resapawn and the counter will only begin counting again when the switch will be turned on again)

    i think there are more possibilitys with a extension like this  ;)

    if someone could make this, that would be very nice

    thx in advance



    EDIT:
    this is very important to make !!!

    you can do many things with that, like:

    chests/treasures with cooldown
    raremob/raidboss respawn (even they not exist yet because we had no alliance system in blizz abs controller yet  :<_<: )
    boat/airship scenes (i have all what i need for that allready finished, and will release it when the extension exists !)
    mining spots with cooldown
    and many more so pls make this  :roll:

    if no one will make this for free pm me and i make you an offer  :P
    23
    Script Requests / Script Request
    February 14, 2011, 05:00:31 pm
    hi, i need a lil script to scroll the map more than 100 boxes, its not important if it is a limit breaker or a script where i need to call a scroll effect, and if it is possible it would be nice when you could use a unlimmited scroll call...

    thx in advance
    24
    Script Requests / [PAID] HUD Request
    February 13, 2011, 10:37:30 am
    because no one would do this for me, i pay a fee about 50€ in PaySafe Card or Ukash if someone gets this 100% working !
    if one of my requests isnt possible then tell me we can arrange something.

    here is my hud request:

    the hud based on a picture that you can change via variable. (so you can use a skin changer in menue or wtf^^)

    the chatbox size and allignment must be fixed.

    the hp/mp bars should have a %.

    the player name and his level should be shown.

    an atb bar for "blizz-abs recharge time" counter for the normal attacks. (like in ff12)

    an exp bar with %.

    status effects should be shown in the right side of the hud. (here i need a little script where i can set up a which effect id has which icon. the icons are in the pictures folder and 16x16 px)

    the radar size and allignment must be fixed.

    when you open the "fullscreen radar" a picture (map) should be shown instead of the greater radar and the little radar still remains, the map picture should be  configurable by map id. e.g: when the player is on map id 1, map_1.png is shown.

    it should be possible to activate/deactivate the complete hud with a script call.

    the chatbox, the skillbar and the radar cant be deactivated anymore only the complete hud !

    the active spell is shown by an red border around the square. by items its a green border.



    here are the pictures, there are 1. example pic, 2. a nearly clean hud and a description of the contents http://www.mediafire.com/?v9nmpp68dianbrd

    hope someone can make this for me, if ya need more informations or something then let me know  :)

    thx in advance, and greetings from germany