"When you first come, no one knows you. When help them out, they all know you. When you leave, they all love you. When you come back, they've already forgotten you." -- copy into your sig if you think this quote speaks true!
If you are one of the very few teenagers that know what real rap is and don't blindly listen to the hate statements (rap is crap), then put this in your sig. I say this in the name of Common, Mos Def, Lupe Fiasco, 2Pac, Nas, Talib Kweli, Eminem, and many others. -Exiled One
Law, my friend, it's good to see you're getting such excellent feedback. This menu may be just what I was looking for. Yes, I'm using RMXP now. Hopefully I'll be able to do this script justice. Excellent job.
__________________________
<div style="margin:20px; margin-top:5px"><div style="margin-bottom:2px">[Show/Hide] Random Sig. Stuff!</div><div style="margin: 0px; padding: 6px; border: 1px inset;"><div style="display: none;">
Why is it so hard to find someone who cares about you, when it's easy enough to find someone who looks down on you? Three Days Grace; "Someone Who Cares"
They say just hold onto your hope, but you know, if you swallow your pride you will choke. Alexisonfire; "Midnight Regulations"
A sin I didn't care for, but a sin that paid my debts. A sin that fed my children, and burned my smiles in cigarettes. Protest The Hero; "Blindfolds Aside"
It's all been a lie, I don't ever want to know why, you've mastered the art of deceiving me. Disturbed; "Deceiver"
The sky's a brick wall, the ground's a juggernaut, each day they get a bit closer, between them I am caught. Alexisonfire; "This Could Be Anywhere In The World"
"When you first come, no one knows you. When help them out, they all know you. When you leave, they all love you. When you come back, they've already forgotten you." -- copy into your sig if you think this quote speaks true!
If you are one of the very few teenagers that know what real rap is and don't blindly listen to the hate statements (rap is crap), then put this in your sig. I say this in the name of Common, Mos Def, Lupe Fiasco, 2Pac, Nas, Talib Kweli, Eminem, and many others. -Exiled One
Group: Revolutionary
Posts: 130
Type: Artist
RM Skill: Intermediate
Right, I've got a bit of an error.
It says: Script 'Custom_Menu' line114: TypeError Occurred. undefined superlass 'window_base'
Here is my line 114: class Window_Location < Window_Base
I tried popping a '>' in at the end of Window_Base, but that didn't seem to work.
I've not really messed with the Scripting part of RMXP before so I'm not sure how the code is supposed to look. Whats wrong this line Law?
Thanks! x
__________________________
Illustrator/GraphicDesigner, if you want somert... Like an illustration or a logo? Just ask! (Nothing too crazy though) ;) For the love, the art, the game, the metal and the sex... And thanks for the freebies. Out Now! Awaiting reviews and feedback.
Current Project: Exodus: Escape Fort Bullwark Engine: RMXP Completion: Chapter One, 100% Release Date: Out now, Winter 2009 Download Link:Via MediaFire
"When you first come, no one knows you. When help them out, they all know you. When you leave, they all love you. When you come back, they've already forgotten you." -- copy into your sig if you think this quote speaks true!
If you are one of the very few teenagers that know what real rap is and don't blindly listen to the hate statements (rap is crap), then put this in your sig. I say this in the name of Common, Mos Def, Lupe Fiasco, 2Pac, Nas, Talib Kweli, Eminem, and many others. -Exiled One
Group: Revolutionary
Posts: 130
Type: Artist
RM Skill: Intermediate
No this was my first Custom Script. I've since tried the Bestiary and HP/SP image scripts but the custom menu was the first.
__________________________
Illustrator/GraphicDesigner, if you want somert... Like an illustration or a logo? Just ask! (Nothing too crazy though) ;) For the love, the art, the game, the metal and the sex... And thanks for the freebies. Out Now! Awaiting reviews and feedback.
Current Project: Exodus: Escape Fort Bullwark Engine: RMXP Completion: Chapter One, 100% Release Date: Out now, Winter 2009 Download Link:Via MediaFire
"When you first come, no one knows you. When help them out, they all know you. When you leave, they all love you. When you come back, they've already forgotten you." -- copy into your sig if you think this quote speaks true!
If you are one of the very few teenagers that know what real rap is and don't blindly listen to the hate statements (rap is crap), then put this in your sig. I say this in the name of Common, Mos Def, Lupe Fiasco, 2Pac, Nas, Talib Kweli, Eminem, and many others. -Exiled One
Hi Law... great scrip'! But whenever I try to load it, it can't find my mapXYZ.rxdata file where my starting position is... If you could help me out that'd be fantastic!
__________________________
.
Completed Games:
Games Under Devlopment: (Recruiting testers, PM me)
"When you first come, no one knows you. When help them out, they all know you. When you leave, they all love you. When you come back, they've already forgotten you." -- copy into your sig if you think this quote speaks true!
If you are one of the very few teenagers that know what real rap is and don't blindly listen to the hate statements (rap is crap), then put this in your sig. I say this in the name of Common, Mos Def, Lupe Fiasco, 2Pac, Nas, Talib Kweli, Eminem, and many others. -Exiled One
Group: Revolutionary
Posts: 130
Type: Artist
RM Skill: Intermediate
Hmmm...
Sorry to be a pain in the arse but it's working-ish. I just tried it all again after testing it on a blank project and... Voila! It worked. So yeah, it looks all nice.
But then... When I run my game, I get another error. This time it is because I have the Save option in the main menu disabled. This seems to be conflicting with the script.
The error: line234: NoMethodError Occurred undefined method 'disable_item' for #<Window_Command_New:0x2c03600>
Here are my lines (234 in bold): # If save is forbidden if $game_system.save_disabled # Disable save @command_window.disable_item(4) end
Again... Not sure how the script should look here.
Also, I have a quick question for you.
If I wanted to keep the same actor but change their face image in the menu through out the game, how would I go about this?
Would I have to call upon the script to change which image it reads...? Or is there a way to do this using events?
Thanks again, it looks all sassy. x
This post has been edited by Zeffa: Oct 6 2009, 06:39 AM
__________________________
Illustrator/GraphicDesigner, if you want somert... Like an illustration or a logo? Just ask! (Nothing too crazy though) ;) For the love, the art, the game, the metal and the sex... And thanks for the freebies. Out Now! Awaiting reviews and feedback.
Current Project: Exodus: Escape Fort Bullwark Engine: RMXP Completion: Chapter One, 100% Release Date: Out now, Winter 2009 Download Link:Via MediaFire
Group: Local Mod
Posts: 1,348
Type: Scripter
RM Skill: Skilled
Rev Points: 5
QUOTE
But then... When I run my game, I get another error. This time it is because I have the Save option in the main menu disabled. This seems to be conflicting with the script.
The error: line234: NoMethodError Occurred undefined method 'disable_item' for #<Window_Command_New:0x2c03600>
Here are my lines (234 in bold): # If save is forbidden if $game_system.save_disabled # Disable save @command_window.disable_item(4) end
Again... Not sure how the script should look here.
Yeah, I've been getting that error also but I just deleted those lines since they seemed to be useless but then I realized that the save option in the menu isn't grey anymore when you disabled it, so I've finally found out how to fix it
After line 452 of my script, add these couple of lines:
CODE
#-------------------------------------------------------------------------- # * Disable Item # index : item number #-------------------------------------------------------------------------- def disable_item(index) draw_item(index, disabled_color) end
Now you should be set
QUOTE
Also, I have a quick question for you.
If I wanted to keep the same actor but change their face image in the menu through out the game, how would I go about this?
Would I have to call upon the script to change which image it reads...? Or is there a way to do this using events?
One way you could do this is by making several actors in the database that are the same character. Then when you want to change the face of the actor, use the 'change actor graphic' event command and then click actor and choose the new actor. This will not change how your character will look since all the actors in the actors tab of the database are the same character. But, when you set it to the different actor, the face graphic would be changed since it went to a different actor.
"When you first come, no one knows you. When help them out, they all know you. When you leave, they all love you. When you come back, they've already forgotten you." -- copy into your sig if you think this quote speaks true!
If you are one of the very few teenagers that know what real rap is and don't blindly listen to the hate statements (rap is crap), then put this in your sig. I say this in the name of Common, Mos Def, Lupe Fiasco, 2Pac, Nas, Talib Kweli, Eminem, and many others. -Exiled One
Group: Revolutionary
Posts: 130
Type: Artist
RM Skill: Intermediate
Cheers mate, that is awesome!
Yeah you explained the bottom part sound. Will give this a try.
>> Yep it's all working fine! Thanks again!
This post has been edited by Zeffa: Oct 7 2009, 05:05 AM
__________________________
Illustrator/GraphicDesigner, if you want somert... Like an illustration or a logo? Just ask! (Nothing too crazy though) ;) For the love, the art, the game, the metal and the sex... And thanks for the freebies. Out Now! Awaiting reviews and feedback.
Current Project: Exodus: Escape Fort Bullwark Engine: RMXP Completion: Chapter One, 100% Release Date: Out now, Winter 2009 Download Link:Via MediaFire
"When you first come, no one knows you. When help them out, they all know you. When you leave, they all love you. When you come back, they've already forgotten you." -- copy into your sig if you think this quote speaks true!
If you are one of the very few teenagers that know what real rap is and don't blindly listen to the hate statements (rap is crap), then put this in your sig. I say this in the name of Common, Mos Def, Lupe Fiasco, 2Pac, Nas, Talib Kweli, Eminem, and many others. -Exiled One
Group: Member
Posts: 4
Type: Developer
RM Skill: Skilled
Hey Law,
I really like your script and the layout of the menu is excellent. Except one little request I have. I recently found Amaranth's 'Super Simple Journal Script' and the idea of this journal used to keep track of quest entries is also something I really would like to use. The problem is that when these 2 scripts are combined (working together) get an error code on line 283 @location_window.update so I up'd the number of instances (items, steps, etc..) from 5 to 6 and it still error'd. So I deleted that line and it seems to work fine. But the location ability obviously doesn't work now. If you could please assist me with this I would appreciate this.
Group: Member
Posts: 4
Type: Developer
RM Skill: Skilled
Sorry bout that, I got side tracked.
The journal script is this;
CODE
#====================================================================== ======== # ** Journal #------------------------------------------------------------------------------ # This window displays a journal. #==============================================================================
class Window_Journal < Window_Selectable # ------------------------ def initialize super(0, 32, 460, 330) @column_max = 1 refresh self.index = 0 end
#-------------------------------------------------------------------------- # * Draw the contents of the item window #-------------------------------------------------------------------------- def refresh if self.contents != nil self.contents.dispose self.contents = nil end
# variables @journal_height = (2)*32 # y coord of entire journal (# of entries - 1) * 32 @n = 0 # y coord for each entry @item_max = 0 # max items to dispaly
# draw the bitmap. the text will appear on this bitmap self.contents = Bitmap.new(width - 32, height+@journal_height)
# populate your journal with entries. Each entry must match its switch number! @data = [] @data[1] = "Task 1" @data[2] = "Task 2" @data[3] = "Task 3"
for i in 1..3 if $game_switches[i] == true draw_item(i) @item_max += 1 end end
end
#-------------------------------------------------------------------------- # * Draw an individual item in the window # index : Index of the item to be drawn #--------------------------------------------------------------------------
#------------------------------------------------------------------------------ #============================================================================== #============================================================================== #====================*Law's Custom Menu Screen*================================ #=========================Author: The Law G14================================== #============================Version 1.0======================================= #============================================================================== #------------------------------------------------------------------------------ #============================================================================== # ** Game_Map #------------------------------------------------------------------------------ # This class handles the map. It includes scrolling and passable determining # functions. Refer to "$game_map" for the instance of this class. #==============================================================================
class Game_Map #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- attr_accessor :tileset_name # tileset file name attr_accessor :autotile_names # autotile file name attr_accessor :panorama_name # panorama file name attr_accessor :panorama_hue # panorama hue attr_accessor :fog_name # fog file name attr_accessor :fog_hue # fog hue attr_accessor :fog_opacity # fog opacity level attr_accessor :fog_blend_type # fog blending method attr_accessor :fog_zoom # fog zoom rate attr_accessor :fog_sx # fog sx attr_accessor :fog_sy # fog sy attr_accessor :battleback_name # battleback file name attr_accessor :display_x # display x-coordinate * 128 attr_accessor :display_y # display y-coordinate * 128 attr_accessor :need_refresh # refresh request flag attr_reader :passages # passage table attr_reader :priorities # prioroty table attr_reader :terrain_tags # terrain tag table attr_reader :events # events attr_reader :fog_ox # fog x-coordinate starting point attr_reader :fog_oy # fog y-coordinate starting point attr_reader :fog_tone # fog color tone attr_reader :name #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize @map_id = 0 @display_x = 0 @display_y = 0 end #-------------------------------------------------------------------------- # * Setup # map_id : map ID #-------------------------------------------------------------------------- def setup(map_id) # Put map ID in @map_id memory @map_id = map_id # Load map from file and set @map @map = load_data(sprintf("Data/Map%03d.rxdata", @map_id)) # set tile set information in opening instance variables tileset = $data_tilesets[@map.tileset_id] @tileset_name = tileset.tileset_name @autotile_names = tileset.autotile_names @panorama_name = tileset.panorama_name @panorama_hue = tileset.panorama_hue @fog_name = tileset.fog_name @fog_hue = tileset.fog_hue @fog_opacity = tileset.fog_opacity @fog_blend_type = tileset.fog_blend_type @fog_zoom = tileset.fog_zoom @fog_sx = tileset.fog_sx @fog_sy = tileset.fog_sy @battleback_name = tileset.battleback_name @passages = tileset.passages @priorities = tileset.priorities @terrain_tags = tileset.terrain_tags # Initialize displayed coordinates @display_x = 0 @display_y = 0 # Clear refresh request flag @need_refresh = false # Set map event data @events = {} for i in @map.events.keys @events[i] = Game_Event.new(@map_id, @map.events[i]) end # Set common event data @common_events = {} for i in 1...$data_common_events.size @common_events[i] = Game_CommonEvent.new(i) end # Initialize all fog information @fog_ox = 0 @fog_oy = 0 @fog_tone = Tone.new(0, 0, 0, 0) @fog_tone_target = Tone.new(0, 0, 0, 0) @fog_tone_duration = 0 @fog_opacity_duration = 0 @fog_opacity_target = 0 # Initialize scroll information @scroll_direction = 2 @scroll_rest = 0 @scroll_speed = 4 @name = load_data("Data/MapInfos.rxdata")[@map_id].name end end
#============================================================================== # ** Window_Location #----------------------------------------------------------------------------- # A window that shows your current Location. #==============================================================================
#============================================================================== # ** Window_MenuStatus #------------------------------------------------------------------------------ # This window displays party member status on the menu screen. #==============================================================================
class Window_MenuStatus < Window_Selectable #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize super(0, 0, 480, 480) self.contents = Bitmap.new(width - 32, height - 32) refresh self.active = false self.index = -1 end #-------------------------------------------------------------------------- # * Draw Face Graphic # actor : actor # x : draw spot x-coordinate # y : draw spot y-coordinate #-------------------------------------------------------------------------- def draw_actor_face_graphic(actor, x, y) bitmap = RPG::Cache.picture(actor.id.to_s) self.contents.blt(x, y, bitmap, Rect.new(0, 0, bitmap.width, bitmap.height)) end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear @item_max = $game_party.actors.size for i in 0...$game_party.actors.size x = 64 y = i * 116 actor = $game_party.actors[i] draw_actor_face_graphic(actor, x - 64, y) draw_actor_name(actor, x + 93, y) draw_actor_class(actor, x + 135, y + 32) draw_actor_level(actor, x + 40, y + 32) draw_actor_state(actor, x + 270, y) draw_actor_exp(actor, x + 40, y + 64) draw_actor_hp(actor, x + 236, y + 32) draw_actor_sp(actor, x + 236, y + 64) end end #-------------------------------------------------------------------------- # * Cursor Rectangle Update #-------------------------------------------------------------------------- def update_cursor_rect if @index < 0 self.cursor_rect.empty else self.cursor_rect.set(0, @index * 116, self.width - 32, 96) end end end
#============================================================================== # ** Scene_Menu #------------------------------------------------------------------------------ # This class performs menu screen processing. #==============================================================================
class Scene_Menu #-------------------------------------------------------------------------- # * Object Initialization # menu_index : command cursor's initial position #-------------------------------------------------------------------------- def initialize(menu_index = 0) @menu_index = menu_index end #-------------------------------------------------------------------------- # * Main Processing #-------------------------------------------------------------------------- def main # Make command window s1 = $data_system.words.item s2 = $data_system.words.skill s3 = $data_system.words.equip s4 = "Status" s5 = "Journal" s6 = "Save" s7 = "End Game" @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7]) @command_window.index = @menu_index # If number of party members is 0 if $game_party.actors.size == 0 # Disable items, skills, equipment, and status @command_window.disable_item(0) @command_window.disable_item(1) @command_window.disable_item(2) @command_window.disable_item(3) end # If save is forbidden if $game_system.save_disabled # Disable save @command_window.disable_item(4) end @command_window.x = 480 # Make play time window @playtime_window = Window_PlayTime.new @playtime_window.x = 480 @playtime_window.y = 256 # Make location window @location_window = Window_Location.new @location_window.x = 480 @location_window.y = 326 # Make gold window @gold_window = Window_Gold.new @gold_window.x = 480 @gold_window.y = 416 # Make status window @status_window = Window_MenuStatus.new @status_window.x = 0 @status_window.y = 0 # Execute transition Graphics.transition # Main loop loop do # Update game screen Graphics.update # Update input information Input.update # Frame update update # Abort loop if screen is changed if $scene != self break end end # Prepare for transition Graphics.freeze # Dispose of windows @command_window.dispose @playtime_window.dispose @location_window.dispose @gold_window.dispose @status_window.dispose end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update # Update windows @command_window.update @playtime_window.update @location_window.update @gold_window.update @status_window.update # If command window is active: call update_command if @command_window.active update_command return end # If status window is active: call update_status if @status_window.active update_status return end end #-------------------------------------------------------------------------- # * Frame Update (when command window is active) #-------------------------------------------------------------------------- def update_command # If B button was pressed if Input.trigger?(Input::B) # Play cancel SE $game_system.se_play($data_system.cancel_se) # Switch to map screen $scene = Scene_Map.new return end # If C button was pressed if Input.trigger?(Input::C) # If command other than save or end game, and party members = 0 if $game_party.actors.size == 0 and @command_window.index < 4 # Play buzzer SE $game_system.se_play($data_system.buzzer_se) return end # Branch by command window cursor position case @command_window.index when 0 # item # Play decision SE $game_system.se_play($data_system.decision_se) # Switch to item screen $scene = Scene_Item.new when 1 # skill # Play decision SE $game_system.se_play($data_system.decision_se) # Make status window active @command_window.active = false @status_window.active = true @status_window.index = 0 when 2 # equipment # Play decision SE $game_system.se_play($data_system.decision_se) # Make status window active @command_window.active = false @status_window.active = true @status_window.index = 0 when 3 # status # Play decision SE $game_system.se_play($data_system.decision_se) # Make status window active @command_window.active = false @status_window.active = true @status_window.index = 0 when 4 # journal # Play decision SE $game_system.se_play($data_system.decision_se) # Switch to journal scene $scene = Scene_Journal.new when 5 # save # If saving is forbidden if $game_system.save_disabled # Play buzzer SE $game_system.se_play($data_system.buzzer_se) return end # Play decision SE $game_system.se_play($data_system.decision_se) # Switch to save screen $scene = Scene_Save.new when 6 # end game # Play decision SE $game_system.se_play($data_system.decision_se) # Switch to end game screen $scene = Scene_End.new end return end end #-------------------------------------------------------------------------- # * Frame Update (when status window is active) #-------------------------------------------------------------------------- def update_status # If B button was pressed if Input.trigger?(Input::B) # Play cancel SE $game_system.se_play($data_system.cancel_se) # Make command window active @command_window.active = true @status_window.active = false @status_window.index = -1 return end # If C button was pressed if Input.trigger?(Input::C) # Branch by command window cursor position case @command_window.index when 1 # skill # If this actor's action limit is 2 or more if $game_party.actors[@status_window.index].restriction >= 2 # Play buzzer SE $game_system.se_play($data_system.buzzer_se) return end # Play decision SE $game_system.se_play($data_system.decision_se) # Switch to skill screen $scene = Scene_Skill.new(@status_window.index) when 2 # equipment # Play decision SE $game_system.se_play($data_system.decision_se) # Switch to equipment screen $scene = Scene_Equip.new(@status_window.index) when 3 # status # Play decision SE $game_system.se_play($data_system.decision_se) # Switch to status screen $scene = Scene_Status.new(@status_window.index) end return end end end #=============================================================================== # ** Window_Command_New #------------------------------------------------------------------------------- # This code allows the command window in the menu to display icons. #===============================================================================
#-------------------------------------------------------------------------- # * Draw the contents of the item window #-------------------------------------------------------------------------- def refresh if self.contents != nil self.contents.dispose self.contents = nil end
# variables @journal_height = (@data.size - 1)*32 # y coord of entire journal (# of entries - 1) * 32 @n = 0 # y coord for each entry @item_max = 0 # max items to display
# draw the bitmap. the text will appear on this bitmap self.contents = Bitmap.new(width - 32, @journal_height)
for i in 1..@data.size if $game_switches[i + @offset] == true draw_item(i) @item_max += 1 end end
end
#-------------------------------------------------------------------------- # * Draw an individual item in the window # index : Index of the item to be drawn #--------------------------------------------------------------------------
end #============================================================================== # ■ Scene_Status #------------------------------------------------------------------------------ # This class contains the windows for the character status menu that can be # accessed from the main menu. #==========================================================================
class Scene_Journal #-------------------------------------------------------------------------- # ● Initialize the Status menu #-------------------------------------------------------------------------- def initialize(callback = 0) #callback from menu @callback = callback end
loop do Graphics.update Input.update update if $scene != self break end end
Graphics.freeze @journal_window.dispose
end #-------------------------------------------------------------------------- # ● Draw the Status menu #-------------------------------------------------------------------------- def update @journal_window.update if @journal_window.active update_item return end end
#-------------------------------------------------------------------------- # ● Update menu after player makes a selection #-------------------------------------------------------------------------- def update_item
# Cancel key pressed (go to menu) if Input.trigger?(Input::B) or Input.trigger?(Input::L) $game_system.se_play($data_system.cancel_se) if @callback == 0 $scene = Scene_Menu.new(4) else $scene = Scene_Map.new end return end
end
end class Scene_Map alias journal_update update
def update journal_update if Input.trigger?(Input::L) $scene = Scene_Journal.new(1) end end end
This post has been edited by The Law G14: Dec 6 2009, 05:59 PM
"When you first come, no one knows you. When help them out, they all know you. When you leave, they all love you. When you come back, they've already forgotten you." -- copy into your sig if you think this quote speaks true!
If you are one of the very few teenagers that know what real rap is and don't blindly listen to the hate statements (rap is crap), then put this in your sig. I say this in the name of Common, Mos Def, Lupe Fiasco, 2Pac, Nas, Talib Kweli, Eminem, and many others. -Exiled One
"When you first come, no one knows you. When help them out, they all know you. When you leave, they all love you. When you come back, they've already forgotten you." -- copy into your sig if you think this quote speaks true!
If you are one of the very few teenagers that know what real rap is and don't blindly listen to the hate statements (rap is crap), then put this in your sig. I say this in the name of Common, Mos Def, Lupe Fiasco, 2Pac, Nas, Talib Kweli, Eminem, and many others. -Exiled One
My current scripts are SDK, RGSS.Map, RGSS.Window.Movable, Map Name HUD < all of these basically allow me to have a pop-up displaying the name of the map(s) I walk onto.
I also have Window_Message to allow facesets to be displayed.
Group: Local Mod
Posts: 1,348
Type: Scripter
RM Skill: Skilled
Rev Points: 5
It should be under all your custom scripts (Including the SDK) and yes, it is compatible with my equipment screen and skill screen. Also, it's supposed to be changing the screen that opens once you open up the menu. And thanks for using my scripts
This post has been edited by The Law G14: Dec 6 2009, 05:54 PM
"When you first come, no one knows you. When help them out, they all know you. When you leave, they all love you. When you come back, they've already forgotten you." -- copy into your sig if you think this quote speaks true!
If you are one of the very few teenagers that know what real rap is and don't blindly listen to the hate statements (rap is crap), then put this in your sig. I say this in the name of Common, Mos Def, Lupe Fiasco, 2Pac, Nas, Talib Kweli, Eminem, and many others. -Exiled One