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 - Xuroth

1
I'm faced with a conundrum. I'm part of a Guild Wars 2 guild that has its own SMF forum board. I want to add an editable table (add entries and columns) for a roster. I can't seem to find any widgets on Google that will let me do this. About the best I can find, is to either switch to a guild host site that offers the roster feature (not acceptable) or just keep downloading new text files, editing them, and reupload them (which is a pain).

Basically, I want to have a form that the officers (who are the only ones with access to this utility) can add in a players name, and other info easily. Sort through the table by name, invited by, etc. and be able to update activity status for the player/edit notes.

I thought of MySQL (which is a bit above my head), using other websites' member areas to manage the roster, trying to use a spreadsheet (need the sorting feature), and racking my brain trying to find new search terms in Google to get it. I found several examples of what I want, but they are not usable.

Widgetbox had a clan roster app, but its uneditable.
Tablepress is perfect, aside from the fact it requires Wordpress blog.
A few are paid apps.
Most are utilities reserved for members of Guildhead, Enjin, and other guild site hosts.


Essentially, what I'm asking for: Does anyone know of a widget/app/whatever that you can install into a webpage? Preferably without a DB, because for a small-ish guild, that is overkill. (In my opinion)

It needs:
Easy to use - some officers are not very computer savvy
Editable -update ranks (pro/demotion, inactive, notes)
Sortable - to find members based on stats
Modifiable - to add new columns/stats


Does anyone know how to do this or where to find it? Ive been Googling for hours, and it's gotten me nowhere. You guys have been a great help in the past, helping me troubleshoot my RPG Maker projects, and editing scripts, so I figured I would come here to ask for help.
2
Tutorials / Story Development - Characters
September 22, 2011, 07:41:19 am
Story Development - Characters

by: Xuroth
Last Edited 10.27.2011






Contents:


  •  Introduction

  •  Credits

  •  General Information

  •  Naming

  •  Character Biography

  •  Character Motivation/Personality




Introduction

   Welcome to my tutorial on Character Development. Now, I hope I don't lose anyone, and I am sure most of the people reading this already design their own characters. For these people, I simply want to help them make sure that their characters are believable and realistic. For others, I attempt to explain how characters that are used in stories and games should be well thought out and designed. I try to demonstrate why a character should appear to be real, and ideas to help that become easier.



Credits:

   Angroth - Original Draft/Ideas
   Xanqui - Original Draft/Ideas
   Xuroth - Updated and Expanded

To Angroth and Xanqui: I can't remember how much of this you guys/gals wrote, but I know I started by changing some spelling and grammatical errors, then adding a sentence or two before practically re-writing it and ending up with this. I didn't omit any details on purpose, but I wished to expand on certain details I find important. Please remember this is a rough first draft so it is not complete. Thanks for the start of this document. It may lead to another complete rewrite with better descriptions and more content later on... thanks again.


Note by Xuroth:: ShowHide
I don't remember exactly where, but I found the first part of this text a couple years ago and realized how incomplete it was. It still is, but after "losing" it for 2 years oh a hard drive, I feel I rounded it off nicely. This is a basic first draft, and is in no way complete. Each section deserves to be its own document and to be added to, but quite simply put, I just wanted to finish a basic draft so I may return to my stories... (and I hardly ever finish anything so I felt I needed to work on this some more). If you have any problems with this text just post and I will eventually update this.





General Information:
   Lets try to avoid cliches (no long, silver haired villains with a huge, long katana with a desire to destroy the world). I know, Sephiroth can be considered as one of the best villains in RPGs by some (and not quite the best by others). However, certain instances arise when cliches can not be avoided. These times will require quick thinking and imagination. But this is just advice after all.

   The truth is... Cliches aren't all bad.

Cliche: Definition: ShowHide
Quote from: WikipediaA cliches is an expression, idea, or element of an artistic work which has been overused to the point of losing its original meaning or effect, rendering it a stereotype, especially when at some earlier time it was considered meaningful or novel.


   Essentially, a cliche is when something large and noticeable is used again and again and again and aga- well you get the point. You can improve (i.e. improve upon the original idea) or change a cliche by understanding a couple of things about cliches. For example, most players take gravity for granted in a game. It's not considered cliche, but is more widely used than the "damsel in distress" story template. Granted, some games could be all about a world which only produces anti-gravity. And that would be a lot of science/magic to explain to the character, and would be very...err...creative...

A short anecdote about cliches:
Quote from: The.DarrenA friend once gave me advice on Story Development and the use of cliches as a tool. He would create the skeletons (i.e. frameworks) for stories, worlds, and characters. He would use a cliche, but then change a critical part of it by asking 'What if?' or by trying to make the idea more related to those he already had. He was capable of thinking up entire planes of existence in mere seconds. In short, a cliche is acceptable. After all, cliches are cliche because they work. But for the sake of imagination and creative storytelling, don't over use them. Change them.


   Now that your character is to be named according to racial and gender-based naming conventions, lets move on. We should examine... Age. When the story starts, your character needs a basic age. Now, (not-exactly-cliche-like-the-whole-gravity-thing-but-still-close) younger people, unless through a special upbringing, tend to not think about their actions as much as they should. They tend to be more reckless than not, and they jump right into a fight without contemplating it at all. Foresight is typically as elusive to the young, as youth is to the elderly. HOWEVER, this is not always the case. Thus, your characters' personalities should reflect some generalizations, but also include some exceptions. After all, it's not like a law of the universe that


#Awesome method naming
if player <= ~25
    player.make_stupid_choices
elsif player >=50
    player.be_wize_but_too_old_to_do_anything
else
    player.do_stuff_but_be_prepared
end


   Some people can be mature for their age, while some 'Wise Sages' can't stop thinking of giving 'advice' to young voluptuous females. Everyone is different, so remember this when we get to Personalities.

   Some people like to start with the name, some others prefer to develop the name as they go. Either way will work, although I think that defining a name in the beginning should help add an idea of your character. However, in the real world, some people live up to their name, while others do not. So try to add variety, as a little spontaneity helps make for a more realistic world.




Naming:

   Now, go ahead, and try to find a name. For this tutorial, I will develop a character named Fyren. (I got the name by looking at the word 'Forum' and changing letters. Once I had a decent combination, I changed the flow of the name to make it better suiting a character. I realize this is not the best name in RPG genre or at all really. It's just a simple Idea, that will become developed as we go.)

   Let's make sure their name reflects their nationality/race/gender. We don't need an Orc named Sally-Sue John XXXXIII, from the country of Turkey. None of it fits. Here, if your game is based off Earth settings, do some research on names and nationalities, and language structure. If your game is more fantasy set, remember there are certain commonly known races that have their own particular naming conventions. Orcs, for instance are very guttural and short in naming conventions, while Elves (moon elves/ high elves in general) use complex (sometimes unpronounceable) and sophisticated names. Now, this is your game, and your rules. You can choose to smash all the standards and do it however you wish. However, to make your "Believability Factor" go up, you should consider trying to keep to some basic knowledge. If lots of people know that chromatic dragons are more  rash and tend to be more violent (though some may not know this, unfortunately), then it makes your game more realistic when metallic dragons are more calm and patient then their fiery (bad pun) cousins. However, this could be considered, 'cliche', as it appears in more than a couple games that have been around for a long while.




Character Biography:

   Now we have a name. Fyren... try just imagining a character named Fyren. What would he/she look like? Try to build a body in your mind. Fyren... brings to mind a male (just fit in what you need or want, if you can't just create a character). So, using an average size, average build, male body, we will develop this character. The name also brings to mind a person who is either of a sophisticated background, or some young impatient hooligan. Because sophisticated and intelligent people generally think things through, and because Fyren is a main character, I feel the plot may be better served by using a young impatient character, though we will avoid some cliches in this process. Now, I have a good picture of Fyren, but I have explained very little about him. Let me introduce him.

Meet Fyren:
QuoteFyren is a very hard worker. He was found mysteriously and brought up on a farm for 24 years. While living a simple life, Fyren has always dreamed of grand adventures. He has problems (take note here, very important, and I will explain why in a little bit) making friends, so he used to play pretend all alone once his chores were done. While dedicated to getting everything done, he likes to try to find shortcuts instead, though this usually backfires, and ends in more work.


   Do you see what I did by just looking at the word forum? I have a character that is not extremely young like some RPG's, and he has a problem meeting up with people. This is crucial. Now whether you are designing a game or writing a novel, Fyren must now choose his actions carefully when around people if he is ever to work together. Or maybe you can be creative and have him be just a loner. But all that is plot based and beyond the scope of this particular document. I merely want to create options for later.




Character Personality/Motivation:

   Quite simply, the core of a character. What is s/he going to do? And more importantly, WHY? This is what gives the character depth. It lays out the mindset of this vision. it helps the reader/player to identify/relate with the character. It transforms a semi interesting paragraph into a living breathing entity (in the reader/player's mind anyway).

   Another tool that helps develop characters: Flaws. Yes, mistakes help define a character as a person. This creates memorable and exciting characters.

   Every person in the real world has goals and ambitions. Some are based off the person's interests, some based off the setting/environment they grew/live in. People can create new goals by the success or failure of past attempts (this is also very important, creating characters that grow. More in next section). To put it simply, everyone wants to do something and there's almost always a reason why. I want to be a software engineer later in life. Science, math, and computers are strong influences on my mind. Thus i need to strengthen my skills in these areas. What do I do? I take classes and I also practice them. Why does the main character go chasing after the "damsel in distress"? Either it must be one hell of a booty call to make him risk his life, or he must love her.

   BUT WHY? Why would our hero love this particular person? Is it past history? Similar interests? Hot body? (maybe not so much. But seriously, think: 8-bit Zelda... now she was HAWT). Maybe it's the fact they are friends like Mario and Princess Peach (though its kinda vague why Bowser kidnaps her all the time...) The point is, the character must have a reason to do what they do during the story. (this is incredibly important with villains too!)

   The most common sources of motivation is setting, plot, and other characters. Setting is everyplace your character visits or has visited, while plot is the experiences s/he goes through. Fyren, as vague as he is, has no set plot at the moment (...yet...) So almost all motivation is derived from the setting and surrounding characters. Wait! I don't have a Setting! There are no other characters (yet)! It's ok. You can skip this part, just don't forget about it. In another post/document I will illustrate how setting affects characters, their thoughts and their actions. It's okay to come back and change a couple of details, just make sure that those details are reflected as you go back through the process (use your characters to foreshadow a bit).

   Now, you may remember English classes from many years ago, and you might remember something called Static vs. Dynamic and Flat vs. Round character types. Here is my version of that lesson, greatly generalized to give you a basic idea of what I mean.

Growing Characters:: ShowHide

   Flat:
   I start here because any character starts flat. As you add details you give the character depth. Flat characters are best in really short stories and some movies, but usually not in longer texts or lead roles because they don't have a lot of characteristics. As you add more detail to them they become Round.

   Round:
   Round characters have many characteristics explained to the reader/player, so they are better suited for major parts in the story. These characters are not typical in short stories due to the depth of their personalities. A story-writer should be careful with these types of characters to not belay all their details at once to the reader/player. Some foreshadowing perhaps. More on introductions in another article.
   
   Static:
   Okay, static characters (in my honest opinion) suck. but some situations like short poems and brief texts call for a static character. I even use a couple in my stories as baddies met toward the beginnings. A character is static if they learn very little and change very little throughout the story, if they change/learn at all.

   Dynamic:
   This is my favorite. Just like the real world, I believe characters should change. Now They may not have to become a new person every chapter, but its good to keep them learning and occasionally have a "growth spurt" where they kind of change their outlook. In RPGs this is symbolized by "leveling up". The gain from life experience has led to a small growth by the character. I think this is a great way to visualize your character growing. This also applies outside of just battle, too...

Quote from:  Example 1So Fyren, during his adventures has been ambushed many times. Due to his experience and growth, he will be more aware of his surroundings to try to avoid another trap. He may not avoid the second or third, but every time makes him a little more aware. It will be harder to trick him.


Quote from: Example 2Lets say you and I have battles where we unleash magic spells at each other. If I always start with fire, you will learn that and strategize accordingly. But twists happen and I will anticipate your learning my basic strategy. Assuming you would use air to redirect or water to douse the flames, I will use lightning once to start. You wouldn't expect it. The point here is that your characters should grow, but not be able to predict everything (like Rock-Paper-Scissors). Life is unpredictable and it's exciting that way!


   In conclusion, Dynamic Round characters are well thought out and realistic characters that are easy for people to identify with and even to some people, they may even become your character, if only temporarily. Flat and or static characters should be those that interact less with the events of the story. You could also use them to help demonstrate how different the main characters are. Well-designed and thought-out characters make a story great.


   Typically, your characters may not be real people, but they should appear as such. They are the result of a process, fed by inspiration, developed by their world and time, and changed by the actions of others (as well as their own.) There is no mold, no cookie-cutter tool to create characters (unless, of course, your characters ARE cookies...) They should be real. They may lack a physical body, but otherwise they are as deep and developed as you or I.




Ending Note:
   I found this file sitting around on one of my hard drives (again). By now this document is about 4 years old, so I felt I could finish my additions to it and upload it here. Hopefully somebody will find it useful. It took me about 2.5 hours to format it properly and another 2 hours to finish it (editing, revising, lots of typing, etc.) I hope you enjoyed it!
3
RMXP Script Database / [XP] Enhanced Details
March 10, 2011, 07:00:46 pm
Enhanced Details
Authors: Xuroth
Version: 0.9
Type: Details Display
Key Term: Menu Add-on



Introduction

This is my first script! This script allows you to show details for your Items, Weapons, Armors, Skills, and Characters. This is just a very basic system.


Features


  • Show Item details!

  • Show Armor details!

  • Show Weapon details!

  • Show Skill details!

  • Show Character Biographies!

  • Display 10 lines of text!

  • Display Custom Pictures in Scene!




Screenshots
I suppose you can have one: ShowHide




Demos
http://www.mediafire.com/?5dyfj896yfsj132 MediaFire (195.14KB)(Version 0.7)
http://www.mediafire.com/?mk3knsq3b2ueccd MediaFire (230.16KB)(Version 0.9) <- NEW


Script


Spoiler: ShowHide

#===============================================================================
#                                Expanded Details
#                                   by: Xuroth
#                                      v0.9
#-------------------------------------------------------------------------------
#  Intro: This script allows you to display details for any selected item.
#         You can use this for adding a bit more depth to your game. To view
#         details, just go to your Item Menu and press the Shift key!
#
#
#  Features:
#      - Display 10 lines of text for more info than other similar scripts
#      - Reads data from text files
#      - Skill Details
#      - Character Biography
#      - Shows custom pictures (Requested by LiTTleDRAgo)
#     
#  Planned Future Features:
#      - Unlimited lines
#      - Optional Detailed Stats
#      - and more!
#
#-------------------------------------------------------------------------------
#  How to set up:
#        You will need 5 text files named 'Item_Detail.rxdata',
#        'Weapon_Detail.rxdata', 'Armor_Detail.rxdata', 'Skill_Detail.rxdata',
#         and 'Actor_Detail.rxdata. These are simple .txt files renamed with
#         the .rxdata extension. The first 10 lines are reserved, but every 10
#         lines after that is used for each item. example:
#
#         lines 11-20 = object #1 in database(actors, skills, items, etc)
#
#-------------------------------------------------------------------------------
#  Version History
#      -0.5 Initial Completion
#      -0.6 Updated some code, bug fixes
#      -0.7 Added Skill Descriptions, Initial release
#      -0.8 Added Character Bios, modified code
#      -0.9 Added custom graphics display, modified code
#
#-------------------------------------------------------------------------------
#  Credits:
#      - Xuroth (for script)
#      - game_guy (for help with alias)
#      - DerVVulfman (help with basic coding and original idea)
#      - Blizzard
#      - ForeverZer0
#
#   Thanks to all the above scripters! Just by making your awesome scripts, you
#   all have inspired me to take up the art. Thanks for helping me with various
#   problems, and I hope to learn more from all of you!
#
#===============================================================================

#=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
##
##                             Configuration
##
#=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#  For now, there are only a few constants that can be edited to customize the
#  the look. In future versions, there will be more to change as I add new
#  features.
#     TITLE_FONT     -Define which font to use for the object name
#     TITLE_SIZE     -font size for the object name
#     TITLE_COLOR    -Item name color (R, G, B, O)
#     
#     DESC_FONT      -Font style for the description text
#     DESC_SIZE      -Size of the text in the description
#     DESC_COLOR     -Color of Description text...
#
#     BIO_NAME       -String that should be displayed for actor biographies
#     DESC_NAME      -String for the 'Description:' header
#
#     USE_PIC        -Set to true to use a picture from "Graphics/Pictures"
#  Thats it for now. Enjoy!
#-------------------------------------------------------------------------------
module Xuroth
  DESC_FONT = 'Tahoma'
  DESC_SIZE = 20
  DESC_COLOR = Color.new (255, 255, 255, 255) #White is default
 
  TITLE_FONT = 'Tahoma'
  TITLE_SIZE = 24
  TITLE_COLOR = Color.new(0, 255, 0, 255) #Green by default
 
  BIO_NAME = 'Biography:'
  DESC_NAME = 'Description:'
  #Set the value below to true to use a graphic in the window. For item, weapons,
  #skills, and armors, just name the files exactly like the object in the
  #database, only lowercase. These MUST be in the Graphics/Pictures folder.
  #If the picture does not exist, the system should be fine. Pics must be .png!
  USE_PIC = true
end

#-------------------------------------------------------------------------------
#
#                           End of Configuration
#
#=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
class Window_Details < Window_Base
 
  #--------------------------------------------------
  # => Sets up the window
  #-------------------------------------------------- 
  def initialize
    super(0, 0, 640, 480) #call from Window_Base to create a window
    self.contents = Bitmap.new(width - 32, height - 32)    #set up the text
    self.contents.font.name = Xuroth::TITLE_FONT
    self.contents.font.size = Xuroth::TITLE_SIZE
    self.contents.font.color = Xuroth::TITLE_COLOR
    #z-layer makes the detail window appear overtop all the item windows
    self.z += 10
    @details = [] #declares a variable to hold the details information later
    #call the refresh_reset method
    refresh_reset
  end
 
  #--------------------------------------------------
  # => Resets the window so text doesn't get messy
  #-------------------------------------------------- 
  def refresh_reset
    #clears the window
    self.contents.clear
  end
 
  #--------------------------------------------------
  # => Refreshes the window with details
  #-------------------------------------------------- 
  def refresh
    #set a local variable to the global $selected_item value
    item = $selected_item.id
    @color = Xuroth::TITLE_COLOR
    #tests to see if item is an Item
    if $selected_item.is_a?(RPG::Item)
      #get the item's name
      item_name = $data_items[item].name
      #get the item's icon
      item_icon = $data_items[item].icon_name
      bitmap = RPG::Cache.icon(item_icon)
      #now draw the icon!
      self.contents.blt(5, 8, bitmap, Rect.new(0, 0, 24, 24), 255)
      #and set a variable to hold the file name. named the same as other
      #detail scripts in case you want to use this one (for some reason)
      #and dont want to re-write all your lore (though your formatting
      #will likely need to be edited.)
      @detail_file = File.open("Data/Item_Detail.rxdata")
      @desc_hdr = false #use DESCNAME Header
      if Xuroth::USE_PIC
         @picfilename = $data_items[item].name
           if @picfilename != nil
             if FileTest.exist?("Graphics/Pictures/#{@picfilename}.png")
                bitmap2 = RPG::Cache.picture("#{@picfilename}")
                rect2 = Rect.new(0, 0, bitmap2.width, bitmap2.height)
                self.contents.blt(600 - bitmap2.width - 32, 0, bitmap2, rect2)
              else
                @picfilename = ''
              end
           end
       end
    #tests to see if the item is a Weapon
    elsif $selected_item.is_a?(RPG::Weapon)
      #get the name, icon, and file name as before
      item_name = $data_weapons[item].name
      item_icon = $data_weapons[item].icon_name
      bitmap = RPG::Cache.icon(item_icon)
      #now draw the icon!
      self.contents.blt(5, 8, bitmap, Rect.new(0, 0, 24, 24), 255)
      @detail_file = File.open("Data/Weapon_Detail.rxdata")
      @desc_hdr = false #use DESCNAME Header
      if Xuroth::USE_PIC
         @picfilename = $data_weapons[item].name
           if @picfilename != nil
             if FileTest.exist?("Graphics/Pictures/#{@picfilename}.png")
                bitmap2 = RPG::Cache.picture("#{@picfilename}")
                rect2 = Rect.new(0, 0, bitmap2.width, bitmap2.height)
                self.contents.blt(600 - bitmap2.width - 32, 0, bitmap2, rect2)
              else
                @picfilename = ''
              end
           end
       end
    #tests to see if the item is an Armor
    elsif $selected_item.is_a?(RPG::Armor)
      #and again, fetch name and icon
      item_name = $data_armors[item].name
      item_icon = $data_armors[item].icon_name
      bitmap = RPG::Cache.icon(item_icon)
      #now draw the icon!
      self.contents.blt(5, 8, bitmap, Rect.new(0, 0, 24, 24), 255)
      @detail_file = File.open("Data/Armor_Detail.rxdata")
      @desc_hdr = false #use DESCNAME Header
      if Xuroth::USE_PIC
         @picfilename = $data_armors[item].name
           if @picfilename != nil
             if FileTest.exist?("Graphics/Pictures/#{@picfilename}.png")
                bitmap2 = RPG::Cache.picture("#{@picfilename}")
                rect2 = Rect.new(0, 0, bitmap2.width, bitmap2.height)
                self.contents.blt(600 - bitmap2.width - 32, 0, bitmap2, rect2)
              else
                @picfilename = ''
              end
           end
       end
    elsif $selected_item.is_a?(RPG::Skill)
      item_name = $data_skills[item].name
      item_icon = $data_skills[item].icon_name
      bitmap = RPG::Cache.icon(item_icon)
      #now draw the icon!
      self.contents.blt(5, 8, bitmap, Rect.new(0, 0, 24, 24), 255)
      @detail_file = File.open("Data/Skill_Detail.rxdata")
      @desc_hdr = false #use DESCNAME Header
      if Xuroth::USE_PIC
         @picfilename = $data_skills[item].name
           if @picfilename != nil
             if FileTest.exist?("Graphics/Pictures/#{@picfilename}.png")
                bitmap2 = RPG::Cache.picture("#{@picfilename}")
                rect2 = Rect.new(0, 0, bitmap2.width, bitmap2.height)
                self.contents.blt(600 - bitmap2.width - 32, 0, bitmap2, rect2)
              else
                @picfilename = ''
              end
           end
       end
    else    #Else, $selected_item must be a character.
      item_name = $game_party.actors[$selected_item].name
      actor = $game_party.actors[$selected_item]
      draw_actor_graphic(actor, 16, 48)
      @detail_file = File.open("Data/Actor_Detail.rxdata")
      @desc_hdr = true #Use the BIONAME Header
      if Xuroth::USE_PIC
         @picfilename = $game_party.actors[$selected_item].name
           if @picfilename != nil
             if FileTest.exist?("Graphics/Pictures/#{@picfilename}.png")
                bitmap2 = RPG::Cache.picture("#{@picfilename}")
                rect2 = Rect.new(0, 0, bitmap2.width, bitmap2.height)
                self.contents.blt(600 - bitmap2.width - 32, 0, bitmap2, rect2)
              else
                @picfilename = ''
              end
           end
       end

    end
    if item_name == nil
      item_name = 'Nobody'
    end
    self.contents.font.color = Xuroth::TITLE_COLOR
    self.contents.draw_text(32, 8, 256, 24, item_name)
    self.contents.font.color = Xuroth::DESC_COLOR
    #now call the method that actually gets and displays the detailed info!
    fetch_details(item)
    show_details(3, 72)
  end

  #--------------------------------------------------
  # => Gets Details and stores them into an array
  #--------------------------------------------------
  def fetch_details(item)
    #array that holds details:
    description =
    [
    item * 10,
    item * 10 + 1,
    item * 10 + 2,
    item * 10 + 3,
    item * 10 + 4,
    item * 10 + 5,
    item * 10 + 6,
    item * 10 + 7,
    item * 10 + 8,
    item * 10 + 9
    ]
    #stores all lines into variable
    @details = @detail_file.readlines
    #now set up !?Another?! variable used for processing the data.
    @desc = []
    #now set it to hold only 10 lines at a time!
    for i in 0..9
      @desc[i] = @details[description[i]]
    end
    #finished! now run the display details method!
    return
  end
 
  #--------------------------------------------------
  # => Displays the contents of the array as text
  #--------------------------------------------------
  def show_details(x, y)
    #draw the Description title
    self.contents.font.color = Xuroth::DESC_COLOR
    if @desc_hdr == true
      self.contents.draw_text(x, y + 96, 640, 32, Xuroth::BIO_NAME)
    else
      self.contents.draw_text(x, y + 96, 640, 32, Xuroth::DESC_NAME)
    end
    self.contents.font.color = Xuroth::DESC_COLOR
    #draw all 10 lines normally
      for i in 0..9
        if @desc[i] == nil #checks if i is nil. if so, fixes it!
          @desc[i] = ' '
        else
          self.contents.draw_text(x - 32, y + 128, 640, 32, @desc[i])
          y += 20
        end
      end
  #method end
  end
#class end
end

#===================================================================
# >>>  Scene_Item
#===================================================================
     # This edits several methods via alias
     # and adds a new method for checking
     # input.

class Scene_Item


alias detail_main main
  def main
   
    @detail_window = Window_Details.new
    @detail_window.visible = false
    @detail_window.active = false
    detail_main
    @detail_window.dispose
  end

  alias detail_update update
  def update
    detail_update
    $selected_item = @item_window.item
    if @item_window.active
      update_item
      return
    end
    if @detail_window.active
    update_details
      return
    end
  end

  def update_details
   if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      unless $game_party.item_can_use?(@item.id)
        @item_window.refresh
      end
      @item_window.active = true
      @detail_window.visible = false
      @detail_window.active = false
      @detail_window.refresh_reset
      return
    end
  end

 
  alias new_update_item update_item
  def update_item
    new_update_item
    if Input.trigger?(Input::A)
      # Below if-then statement checks for blank item, and cancels
      # the input.
      if $selected_item == nil
        return
      end     
      $game_system.se_play($data_system.decision_se)
      @detail_window.refresh
      @item_window.active = false     
      @detail_window.visible = true
      @detail_window.active = true
    end
  end
end

#===================================================================
# >>>  Scene_Skill
#===================================================================

class Scene_Skill

  alias skill_detail_main main
  def main
    @detail_window = Window_Details.new
    @detail_window.visible = false
    @detail_window.active = false
    skill_detail_main
    @detail_window.dispose
  end

  alias detail_update update
  def update
    detail_update
    $selected_item = @skill_window.skill
    if @skill_window.active
      update_skill
      return
    end
    if @detail_window.active
      update_details
      return
    end
  end

  def update_details
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      unless @actor.skill_can_use?(@skill.id)
        @skill_window.refresh
      end
      @skill_window.active = true
      @detail_window.visible = false
      @detail_window.active = false
      @detail_window.refresh_reset
      return
    end
  end

  alias new_update_skill update_skill
  def update_skill
    new_update_skill
    if Input.trigger?(Input::A)
      if $selected_item == nil
        return
      end
      $game_system.se_play($data_system.decision_se)
      @detail_window.refresh
      @skill_window.active = false
      @detail_window.visible = true
      @detail_window.active = true
    end
  end
end

#===================================================================
# >>>  Scene_Item
#===================================================================
class Scene_Status
  def main

    @detail_window = Window_Details.new
    @actor = $game_party.actors[@actor_index]
    $selected_item = @actor
    @status_window = Window_Status.new(@actor)
    @status_window.visible = true
    @status_window.active = true
    @detail_window.visible = false
    @detail_window.active = false
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @status_window.dispose
    @detail_window.dispose
  end
 
  alias actor_detail_update update
  def update
    actor_detail_update
    $selected_item = @actor_index
    if @status_window.active
      update_actor
      return
    end
    if @detail_window.active
      update_details
      return
    end
  end
 
    def update_details
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @status_window.active = true
      @detail_window.visible = false
      @detail_window.active = false
      @detail_window.refresh_reset
      return
    end
  end

  def update_actor
    if Input.trigger?(Input::A)
      if $selected_item == nil
        return
      end
      $game_system.se_play($data_system.decision_se)
      @detail_window.refresh
      @status_window.active = false
      @detail_window.visible = true
      @detail_window.active = true
    end
  end
end





Instructions

You need 4 text files to make this work. You need 5 text files to make this work. They have to be named "Armor_Detail.rxdata", "Item_Detail.rxdata", "Skill_Detail.rxdata",  "Weapon_Detail.rxdata" and "Actor_Details.rxdata"(without the quotes). Place these in your /Data folder.
Also, due to my scripting ability (or lack thereof), each item starts every 11th line. The first armor will display from line 11 to line 20 of the text file. The first ten lines of each file should be either empty or contain the placeholder text I included in the demo.
I will try to update this later to allow the script to automagically determine the number of lines, and possibly make the window scrollable. But for now, this is it.

To use this, just insert above main. It only edits Scene_Item and Scene_Skill so as long as its below those, it should work just fine.


Compatibility

Probably won't work with custom item windows or skill windows such as those used by fancy CMS'. This was designed from the DMS, and I am a n00b scripter after all. I may figure out a way to increase compatibility with CMS' later
Also, this script uses aliased methods and does not rewrite any existing methods, only adds to them.


Credits and Thanks


  • Xuroth (for making this script)

  • Jackatrades (for the original idea)

  • game_guy (for help with alias)

  • DerVVulfman (for help with basic coding and the original idea)

  • Blizzard (Inspiration)

  • ForeverZer0 (Inspiration and help with coding)

  • LiTTleDRAgo (requesting graphics)


Thanks to you guys, I was able to complete this system. You guys Rock!


Author's Notes

Remember: You need the text files re-named as .rxdata files. You can grab mine from the demo and edit them to match your game (if you use it)
I am reworking the code, so if any scripters have any advice on ways to improve the code, let me know!
v1.0 will have a redesigned window layout.
This is a VERY basic system. It has potential for more, but it is only my FIRST script.

Post any bugs you find here, and I will try to fix them... if I can.
4
Script Troubleshooting / [XP] Edit RTP methods issue
March 09, 2011, 04:13:34 pm
I've been trying to work on my scripting skills and I've had a couple of issues with getting methods in new classes to be called. I dont understand what the difference between alias and the reserved word super is supposed to be. I've tried reading the RTP scripts to see, but when I try to emulate them and modify something, my methods never get called.

I played around with changing the color of the title HP in Window_BattleStatus so that when in battle, 'HP' is shown green. this was just a simple way to try to alias methods, though Im not sure if this is done correctly.

This DOES change the Name of 'HP', but I am curious if this would be no-no for compatibility? Essentially, I re-wrote def refresh so that it calls my method draw_colored_hp instead of draw_actor_hp.

Basically, in terms of compatibility and/or scripting ettiquette, is this acceptable?

Man, I suck at this!: ShowHide



HP_COLOR = Color.new(128, 255, 128, 255) # Green
# this constant is just here to make it configurable, even though
# it could be just placed below...
class Window_BattleStatus
# I doubt if I even need the alias, as the new refresh method
# directly calls the color edit method.

  alias draw_colored_hp draw_actor_hp
  def draw_colored_hp(actor, x, y, width = 144)
draw_actor_hp(actor, x, y, width = 144)
self.contents.font.color = HP_COLOR
self.contents.draw_text(x, y, 32, 32, $data_system.words.hp)
# This is to change the color of 'HP' or whatever the game
# calls it. As this is a test, I am just
# trying to see if this is acceptable practice.
  end


  def refresh
# This method directly calls the color edit method, so I don't
# think I need the alias above. However, if I do not change
# the refresh method to call my method, then mine never gets
# called, alias or not... I don't understand the right way to
# use alias maybe?

self.contents.clear
@item_max = $game_party.actors.size

for i in 0...$game_party.actors.size
  actor = $game_party.actors
  actor_x = i * 160 + 4
  draw_actor_name(actor, actor_x, 0)
  draw_colored_hp(actor, actor_x, 32, 120) #changed from draw_actor_hp
  draw_actor_sp(actor, actor_x, 64, 120)

  if @level_up_flags
     self.contents.font.color = normal_color
      self.contents.draw_text(actor_x, 96, 120, 32, "LEVEL UP!")
  else
    draw_actor_state(actor, actor_x, 96)
  end

end

  end

end