Hey guys, the question you are still asking that why it shows ??? as a reward because you haven't finished the quest yet. If you don't want it to show the reward without ??? at all time find these:
Sorry to say but that throws out an error when you try to view the quest (open window fine, but select a quest and) cannot convirt nil into string self.contents.draw_text(t3, 250, self.width, 32, msg[4])
and would still like to auto change between quests as you scroll down and not have to 'select' them each time. new players wont know you have to select the next one to change the quest text and may think it's a bug or something.
This post has been edited by Taiine: Sep 7 2010, 09:26 AM
Group: Member
Posts: 59
Type: None
RM Skill: Undisclosed
I've tried and tried again, and No, can't say that it works... if a better scripter foud a way, they'd be welcome to enlighten us...
Also, in response to my own statement before about the thing where YOU move but the map does not...
During transition from one map to another, you are no longer able to simply move from point a to point b anymore through this method...
Set up an event to dim the screen, like 10 frames should work, wait ten frames, and then transfer. Once in the new map, you need to set where CENTER of your screen would be... that means tthat where your guy transfers to, automatically becomes the center of the screen... Then, in the same Auto Event, set player Event location to where you actually want him to appear... then erase that event... or do a self-switch and another page or something, to go on to your other auto event settings before releasing the map into parallel events. And then have your screen lighten back to its normal mode.
That's how I got it to work.
This post has been edited by Lethal Visions: Sep 16 2010, 11:02 AM
Group: Member
Posts: 18
Type: None
RM Skill: Undisclosed
I know this is old, but I was wondering if you were still working on this? Just curious if you knew why it would kill the FPS? It goes from 60fps to 45 or so... You think it's cause it's a static window on screen, or is there something to edit? Also how can I get two variables next to eachother like this:
Time: 2:30 Day: Monday
instead of
Time: 2:30 Day: Monday
I did it before, but deleted the script because it was the older one with the saving problem.... Now I forgot what I did...
#=========================================================================== #=========================================================================== # Tornado Quest Book # Version 1.0 # Author: Storm # http://rpgxpultimate.darkbb.com # Edited by: Night_Runner ( as seen at RPGRevolution.com :p ) # # Instructions: # Place the script above main. # # Use $scene = Scene_QuestBook.new to call it. # # Use $game_party.add_quest(id) to add quest. # # Use $game_party.delete_quest(id) to delete quest. # # Use $game_party.finish_quest(id) to finish quest. # # Use $game_party.unfinish_quest(id) to unfinish quest. # # In condition branch, at the script tab enter $game_party.quest_complete?(id) # to check if that quest have completed yet. # # Features: # Can custom menus name. # Opacity configable. # Customable complete quest color. # Customable incomplete quest color. # Able to set return scene. # Auto replace text in the message. # Replacements configable. # # Compatibility: # Most of things. (Haven't test to any yet. :P) # # Credits and Thanks: # Storm - For making it. # Game_Guy - For teach me how to use array. # #=========================================================================== #=========================================================================== module TNDqb #========================================================================== = # START CONFIG #==========================================================================
#============================== General Config ============================== # General Config. #========================================================================= QB_Name = "Quest Book" #Quest Book name Author_Name = "Author" #Author name Title_Name = "Title" #Title name Reward_Name = "Reward" #Reward name Status_Name = "Status" #Reward name Complete = "Complete" #Complete name Incomplete = "Incomplete" #Incomplete name Unknown = "???" #Unknown Name Opacity = 200 #Windows Opacity Screen = 1 #(0 = black,1 = map,"quoted string" = picture) ShowCompleteQuests = true # true / false , Show Complete Quests in the book?
Cmp_Color = Color.new(0, 255, 0, 255) #Complete color Incmp_Color = Color.new(255, 0, 0, 255) #Incomplete Color
Return = Scene_Map #Return Scene
#================================ Ignore Part =============================== # Ignore Parts Under This. #========================================================================= Quest = []
#============================ Replacement Config =========================== # Replacements, this will auto replace texts in your message # # Replace = ["text","replace"] # NOTE: Maximum of replaces is 10. Replaces cannot be add or remove. # Cannot include {name1}, {name2}, {name3} and {name4} # # Completed Replacements: (Do not add) # {name1} = 1st actor's name # {name2} = 2nd actor's name # {name3} = 3rd actor's name # {name4} = 4th actor's name #======================================================================== Replace1 = ["",""] Replace2 = ["",""] Replace3 = ["",""] Replace4 = ["",""] Replace5 = ["",""] Replace6 = ["",""] Replace7 = ["",""] Replace8 = ["",""] Replace9 = ["",""] Replace10 = ["",""]
#PART 1 Quest[1] = ["Missing Puppy","Mr.Bean","Mr.Bean wants you to go and find his missing puppy.","1000 G"] Quest[2] = ["Mountain Explore","Tom","Tom asked {name1} to go and explore Mt.River.","A thing (What thing?)"]
#========================================================================= # END CONFIG #========================================================================= end
#==================== # Game_Party #==================== class Game_Party attr_accessor :quest attr_accessor :qComplete alias tnd_qb_init initialize def initialize @quest = [] @qComplete = [] tnd_qb_init end
def add_quest(id) msg = TNDqb::Quest[id] return if msg == nil unless @quest.include?(id) @qComplete.delete(id) @quest.push(id) end end
def delete_quest(id) msg = TNDqb::Quest[id] return if msg == nil if @quest.include?(id) @qComplete.delete(id) @quest.delete(id) end end
def finish_quest(id) msg = TNDqb::Quest[id] return if msg == nil if @quest.include?(id) @qComplete.push(id) end end
def unfinish_quest(id) msg = TNDqb::Quest[id] return if msg == nil if @quest.include?(id) @qComplete.delete(id) end end
def quest_complete?(id) return if id == nil msg = TNDqb::Quest[id] return if msg == nil if @qComplete.include?(id) return true else return false end end
end
#==================== # Bitmap #==================== class Bitmap def format_text(text, width) words = text.split(' ') return words if words.size == 1 result, current_text = [], words.shift words.each_index {|i| if self.text_size("#{current_text} #{words[i]}").width > width result.push(current_text) current_text = words[i] else current_text = "#{current_text} #{words[i]}" end result.push(current_text) if i >= words.size - 1} return result end end
for i in 0...[$game_party.actors.size, 4].min actor = $game_party.actors[i] @text = @text.gsub("{name#{i+1}}", actor.name) end
draw_msg(@text, 0, 64)
if $game_party.qComplete.include?(@quest_id) self.contents.draw_text(t3, 250, self.width, 32, msg[3]) self.contents.font.color = TNDqb::Cmp_Color self.contents.draw_text(t4, 282, self.width, 32, TNDqb::Complete) else self.contents.draw_text(t3, 250, self.width, 32, msg[3]) self.contents.font.color = TNDqb::Incmp_Color self.contents.draw_text(t4, 282, self.width, 32, TNDqb::Incomplete) end end def draw_msg(msg, x, y) text = self.contents.format_text(msg, 380) text.each_index {|i|self.contents.draw_text(x, y + i*32, 544, 32, text[i])} end def set_quest(id) return if @quest_id == id @quest_id = id refresh end end
#==================== # Scene_QuestBook #==================== class Scene_QuestBook def main
# Create a variable for the last index of the RHS Menu @last_displayed_quest_index = -2
if TNDqb::Screen.is_a?(Integer) if TNDqb::Screen == 1 @back = Spriteset_Map.new end else @back = Sprite.new @back.bitmap = RPG::Cache.picture(TNDqb::Screen) end
#Command window setup @quest = $game_party.quest.clone if not TNDqb::ShowCompleteQuests @quest.each {|id| @quest.delete(id) if $game_party.qComplete.include?(id)} @quest.compact! end
@msg = [] @quest.each {|i| next if $game_party.qComplete.include?(i) @msg.push(TNDqb::Quest[i][0]) } @msg = [""] if @msg.size < 1
#Make main windows @title = Window_QuestTitle.new @main = Window_QuestMain.new
#Refresh quest data @main.set_quest(@quest[@command_window.index]) #Goto command_refresh command_refresh
Graphics.transition loop do Graphics.update Input.update #Update windows and inputs update inputUpdate #Break if scene is not Scene_QuestBook if $scene != self break end end Graphics.freeze
#Dispose windows if TNDqb::Screen == 1 @back.dispose end @command_window.dispose @title.dispose @main.dispose end
def inputUpdate if Input.trigger?(Input::B) #Play Cancel SE $game_system.se_play($data_system.cancel_se) #Return to set scene $scene = TNDqb::Return.new elsif @last_displayed_quest_index != @command_window.index #Refresh quest data @main.set_quest(@quest[@command_window.index]) #Goto command_refresh command_refresh @last_displayed_quest_index = @command_window.index end end
def update #Updates @command_window.update @title.update @main.update end end
And I added an extra customisation option, to stop drawing complete quests
__________________________
K.I.S.S. Want help with your scripting problems? Upload a demo! Or at the very least; provide links to the scripts in question.
Group: Member
Posts: 16
Type: None
RM Skill: Undisclosed
Thank you. For my next project, i'm attempting to do a game kinda like the disgaea's games, but, i needed an upgrade skill script, *Kinda like the third one* this will help me out alot.
There are bugs in the script, but i did fix them.
sorry, last one also had a bug, now, its fixed.
CODE
#====================================================================== ======== # Upgrade Skill Shop para RMVX #============================================================================== # By Nechigawara Sanzenin # Editado e traduzido por Raphinha # Translated from Portuguese to English by 69HotStuff96 # Fixed by tresheriff #============================================================================== #============================================================================== =begin
To call the event just post the following code:
$scene = Scene_Skill_Upgrade.new
If you want to make a skill upgrade to another one, all you have to do is post [up(ID if the name it will upgrade to)]
Example - If you want skill 1 to be upgraded to skill 2, just insert the code below in the notes section of skill 1: [up2]
In that same notes section, you can also input a price for the upgrade
Example - If you want the price to be 150, just insert the code below:
[pu150]
=end #============================================================================== #module SKILL_SHOP #============================================================================== module UP_SKILL_SHOP # Setting Wait_Lv_Up = false # Wait one level to upgrade skill? Show_cha = true # Show hero battler? # Upgrade Text How_Upgrade = "Select Character" Upgrade = "Upgrade" Cant_Upgrade = "" Cancel = "Cancel" Next_Lv = "Next Lv" Can_use = "%s usable" Upgrade_to = "Next" None = "None" # Price Data For Non Set PRICE = 100 # Id of Next Skill def self.skill_upgrade(id) text = $data_skills[id].note text.scan(/\[up([0-9]+)\]/) upgrade = $1.to_i return upgrade end # Add Price def self.skill_upgrade_price(id) text = $data_skills[id].note ene = self.skill_upgrade(id) enable = (ene != 0) if enable == true text.scan(/\[pu([0-9]+)\]/) if $1.to_i != 0 then price = $1.to_i else price = PRICE end return price elsif enable == false price = 0 end return price end end #============================================================================== #class Game_Actor #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- def setup(actor_id) actor = $data_actors[actor_id] @actor_id = actor_id @name = actor.name @character_name = actor.character_name @character_index = actor.character_index @face_name = actor.face_name @face_index = actor.face_index @class_id = actor.class_id @weapon_id = actor.weapon_id @armor1_id = actor.armor1_id @armor2_id = actor.armor2_id @armor3_id = actor.armor3_id @armor4_id = actor.armor4_id @level = actor.initial_level @exp_list = Array.new(101) make_exp_list @exp = @exp_list[@level] @skills = [] @up_skills = [] @up = [] for i in self.class.learnings learn_skill(i.skill_id) if i.level <= @level end clear_extra_values recover_all end #-------------------------------------------------------------------------- def up_skills result = [] for i in @up_skills result.push($data_skills[i]) end return result end #-------------------------------------------------------------------------- def learn_up_skill(skill_id) unless skill_learn?($data_skills[skill_id]) @up_skills.push(skill_id) @up_skills.sort! end end #-------------------------------------------------------------------------- def forget_skill?(skill_id) @skills.delete(skill_id) @up_skills.delete(skill_id) end #-------------------------------------------------------------------------- def skill_learn?(skill) if @skills.include?(skill.id) return true if @up_skills.include?(skill.id) return true end else return false end end #-------------------------------------------------------------------------- def up_learn_skill(skill_id) unless @skills.include?(skill_id) @skills.push(skill_id) @skills.sort! end end #-------------------------------------------------------------------------- def skill_can_use?(skill) return false if @up_skills.include?(skill.id) return false unless skill_learn?(skill) return super end #-------------------------------------------------------------------------- def up_skill?(skill) return @up_skills.include?(skill.id) end end #============================================================================== #class Window_Skill_ShopBuy #============================================================================== class Window_Skill < Window_Selectable #-------------------------------------------------------------------------- def refresh @data = [] for skill in @actor.skills @data.push(skill) if skill.id == @actor.last_skill_id self.index = @data.size - 1 end end for skill in @actor.up_skills @data.push(skill) end @item_max = @data.size create_contents for i in 0...@item_max draw_item(i) end end #-------------------------------------------------------------------------- def draw_item(index) rect = item_rect(index) self.contents.clear_rect(rect) skill = @data[index] if skill != nil rect.width -= 4 enabled = @actor.skill_can_use?(skill) draw_item_name(skill, rect.x, rect.y, enabled) if @actor.up_skill?(skill) text = UP_SKILL_SHOP::Next_Lv else text = @actor.calc_mp_cost(skill) end self.contents.draw_text(rect, text, 2) end end end #============================================================================== #class Window_Skill_Upgrade #============================================================================== class Window_Skill_Upgrade < Window_Selectable #-------------------------------------------------------------------------- def initialize(x, y, width, height) super(x, y, width, height) @actor = nil self.index = 0 refresh end #-------------------------------------------------------------------------- def actor=(actor) if @actor != actor @actor = actor refresh end end #-------------------------------------------------------------------------- def skill return @data[self.index] end #-------------------------------------------------------------------------- def refresh self.contents.clear unless @actor == nil @data = [] for skill in @actor.skills @data.push(skill) end @item_max = @data.size create_contents for i in 0...@item_max draw_item(i) end end end #-------------------------------------------------------------------------- def draw_item(index) rect = item_rect(index) self.contents.clear_rect(rect) skill = @data[index] if skill != nil rect.width -= 4 enabled1 = UP_SKILL_SHOP.skill_upgrade(skill.id) != 0 id_2 = UP_SKILL_SHOP.skill_upgrade(skill.id) skill2 = $data_skills[id_2] enabled2 = @actor.skill_learn?(skill2) == false price = UP_SKILL_SHOP.skill_upgrade_price(skill.id) enabled3 = (price != 0 and $game_party.gold >= price) enabled = (enabled1 and enabled2 and enabled3) draw_item_name(skill, rect.x, rect.y, enabled) unless enabled1 and enabled2 self.contents.draw_text(rect, UP_SKILL_SHOP::Cant_Upgrade , 2) else self.contents.draw_text(rect, price , 2) end end end #-------------------------------------------------------------------------- def update_help @help_window.set_text(skill == nil ? "" : skill.description) end end #============================================================================== #class Window_Next_Skill_Upgrade #============================================================================== class Window_Next_Skill_Upgrade < Window_Selectable #-------------------------------------------------------------------------- def initialize(x, y) super(x, y, 304, WLH + 32) @skill = nil refresh end #-------------------------------------------------------------------------- def refresh self.contents.clear if @skill != nil self.contents.font.color = system_color text = UP_SKILL_SHOP::Upgrade_to cx = contents.text_size(text).width self.contents.draw_text(4, 0, cx, WLH, text) enabled = UP_SKILL_SHOP.skill_upgrade(@skill.id) != 0 unless enabled none_text = UP_SKILL_SHOP::None self.contents.draw_text(4, 0, 200, WLH, none_text , 2) else id_2 = UP_SKILL_SHOP.skill_upgrade(@skill.id) skill2 = $data_skills[id_2] sx = contents.text_size(skill2.name).width set_x = sx + 24 draw_item_name(skill2, self.contents.width - set_x, 0, enabled) end end end #-------------------------------------------------------------------------- def skill=(skill) if @skill != skill @skill = skill refresh end end end #============================================================================== #class Window_Skill_Hero_Upgrade #============================================================================== class Window_Skill_Hero_Upgrade < Window_Selectable #-------------------------------------------------------------------------- def initialize(x, y) super(x, y, 240, 304) refresh self.active = false self.index = 0 end #-------------------------------------------------------------------------- def refresh self.contents.clear @item_max = $game_party.members.size self.contents.font.color = system_color self.contents.draw_text(4, 0, 200, WLH, UP_SKILL_SHOP::How_Upgrade) for actor in $game_party.members x = 4 y = WLH * (2 + actor.index * 2) draw_actor(actor, x, y) end end #-------------------------------------------------------------------------- def draw_actor(actor, x, y) self.contents.font.color = normal_color if UP_SKILL_SHOP::Show_cha name = actor.character_name index = actor.character_index size = contents.text_size(actor.name).width draw_character(name, index, x + 20 + size , y + 30) end self.contents.draw_text(x, y, 200, WLH, actor.name) end #-------------------------------------------------------------------------- def update_cursor if @index < 0 self.cursor_rect.empty elsif @index < @item_max y = WLH * (2 + @index * 2) unless UP_SKILL_SHOP::Show_cha self.cursor_rect.set(0, y , contents.width, WLH) else self.cursor_rect.set(0, y - 4, contents.width,34) end end end end #============================================================================== #class Scene_Skill_Upgrade #============================================================================== class Scene_Skill_Upgrade < Scene_Base #-------------------------------------------------------------------------- def start super create_menu_background create_command_window @viewport = Viewport.new(0, 0, 544, 416) @help_window = Window_Help.new @gold_window = Window_Gold.new(384, 56) @dummy_window = Window_Base.new(0, 112, 544, 304) @skill_window = Window_Skill_Upgrade.new(240, 112, 304 , 248) @skill_window.active = false @skill_window.visible = false @skill_window.help_window = @help_window @hero_window = Window_Skill_Hero_Upgrade.new(0, 112) @hero_window.visible = false @hero_window.active = false @upgrade_window = Window_Next_Skill_Upgrade.new(240,360) @upgrade_window.visible = false end #-------------------------------------------------------------------------- def terminate super dispose_menu_background dispose_command_window @help_window.dispose @gold_window.dispose @dummy_window.dispose @skill_window.dispose @hero_window.dispose @upgrade_window.dispose end #-------------------------------------------------------------------------- def update super update_menu_background @help_window.update @command_window.update @gold_window.update @dummy_window.update @skill_window.update @hero_window.update @upgrade_window.update if @command_window.active update_command_selection elsif @skill_window.active update_skill_selection elsif @hero_window.active update_hero_selection end end #-------------------------------------------------------------------------- def create_command_window s1 = UP_SKILL_SHOP::Upgrade s2 = UP_SKILL_SHOP::Cancel @command_window = Window_Command.new(384, [s1, s2], 2) @command_window.y = 56 end #-------------------------------------------------------------------------- def dispose_command_window @command_window.dispose end #-------------------------------------------------------------------------- def update_command_selection @help_window.set_text("") if Input.trigger?(Input::B) Sound.play_cancel $scene = Scene_Map.new elsif Input.trigger?(Input::C) case @command_window.index when 0 Sound.play_decision @command_window.active = false @dummy_window.visible = false @skill_window.visible = true @hero_window.visible = true @hero_window.active = true @upgrade_window.visible = true when 1 Sound.play_decision $scene = Scene_Map.new end end end #-------------------------------------------------------------------------- def update_skill_selection skill = @skill_window.skill @upgrade_window.skill = skill if Input.trigger?(Input::B) Sound.play_cancel @skill_window.active = false @hero_window.active = true elsif Input.trigger?(Input::C) enabled1 = UP_SKILL_SHOP.skill_upgrade(skill.id) != 0 id_2 = UP_SKILL_SHOP.skill_upgrade(skill.id) skill2 = $data_skills[id_2] enabled2 = @actor.skill_learn?(skill2) == false @price = UP_SKILL_SHOP.skill_upgrade_price(skill.id) enabled3 = (@price != 0 and $game_party.gold >= @price) enabled = (enabled1 and enabled2 and enabled3) unless enabled Sound.play_buzzer else Sound.play_decision learn_target(id_2,skill.id) end end end #-------------------------------------------------------------------------- def update_hero_selection @help_window.set_text("") @actor = $game_party.members[@hero_window.index] @skill_window.actor = @actor skill = @skill_window.skill @upgrade_window.skill = skill if Input.trigger?(Input::B) Sound.play_cancel @command_window.active = true @dummy_window.visible = true @skill_window.visible = false @hero_window.visible = false @hero_window.active = false @upgrade_window.visible = false elsif Input.trigger?(Input::C) Sound.play_decision @skill_window.active = true @hero_window.active = false end end #-------------------------------------------------------------------------- def learn_target(skill_id1,skill_id2) Sound.play_shop unless UP_SKILL_SHOP::Wait_Lv_Up @actor.learn_skill(skill_id1) else @actor.learn_up_skill(skill_id1) end @actor.forget_skill(skill_id2) $game_party.lose_gold(@price) @skill_window.refresh @gold_window.refresh @hero_window.refresh @upgrade_window.refresh end end
This post has been edited by tresheriff: Sep 25 2010, 02:57 PM
All of the scripts are by me, for you. Don't be idiots about them and they'll love you. I don't take requests.
These are all complete, but I am willing to perhaps sneak in features suggested. Again, any requests will be ruthlessly mocked. Most of them require Battle Engine Melody, and all are meant to work alongside Melody as a whole.
Boss OptionsMake enemies universally resist states or damage (or be weak to them!), and have states/skills that ignore this defense. Also includes a handy <boss> tag, mostly useful for scripting dabblers Elemental Damage BoostsLet your states and equipment improve or hinder the amount of damage a battler does with specific elements. Good for equipment variety and party synergy Elemental HEC BoostsEasily tag your states and equipment to affect an actor's accuracy, evasion and critical rate while using or being targeted with different elements. This is much more interesting for equipment than stuff like "ATK+5" EXP & Gold BoostsAnd now, your states and equipment can raise or lower the EXP and/or Gold you win in battle State Infliction RatesWant a skill like Eye Jab to only have a 50% chance to inflict Blind, while the Darkness spell should have a 150% chance, penetrating enemy resistances to the state? You'll want this script
Not really supported now, I guess: Encounter ManagementLets you create repelling/attracting items and skills that affect the random encounter rate for a while. Melody has a better version by Yanfly himself, now
Future projects: -Critical Suite (Everything and anything having to do with critical hits) -Elemental Conversion (Like Fire Eater and whatnot from Final Fantasy, this causes the actor to absorb elemental damage) -Capacity Cores (Based on Tales of the Abyss. When you level up, you get your C.Core's stats on top of anything set in the database and other scripts)
Author Taiine Version 0.6 Updated Nov, 13th, 10 First Release Date Sep 30th, 10
Updates Corrected a big that caused an error if player saving was disabled. Fixed EXP Value alignment, it now centers like HP/SP Window now properly shifts over to center if you select Icons Only. (Demo is Properly Updated with these fix's)
Known Bugs None Reported for current version.
Introduction This Custom Menu System can be used if your game is planed to have no additional party members but the main hero. It displays all of the players Information on the first screen, eliminating the need for the old 'statis' screen.
This however does not prevent you from having a party, and there is an addishenal script command that can allow you to show the info of another party member in game. This does not truly 'switch' players, just what players info is shown. To truly switch between party members, you can use a party switch script along with this to achive that goal.
Features Removes the 'Status' window and places all information on the main window. Displays the players portrate. Ingame Script call to change witch party members info is shown (does not acually switch player) Option to change the menu to use Text + Icons, or Icons only
Script
Script
CODE
#============================================================================== # ** Solo Player Custom Menu System v0.6 # * by Taiine # * Updated: Nov, 13th, 10 #------------------------------------------------------------------------------ # This Custom Menu System can be used if your game is planed to have no # additional party members but the main hero. It displays all of the players # Information on the first screen, eliminating the need for the old 'statis'. # # This however does not prevent you from having a party, and there is an # addishenal script command that can allow you to show the info of another # party member in game. This does not truly 'switch' players, just what players # info is shown. To truly switch between party members, you can use a party # switch script along with this to achive that goal. # #------------------------------------------------------------------------------ # Requires the following images to be in the Pictures Folder of your project # # Player Portrait: 96x96 File name of the player ID Example: 1.png # Gold Coin Icon: 24x24 Gold.png # # Requires the following images to be in the Icons Folder of your project # # Menu Icons: 24x24 # # Menu0.png (Inventory) # Menu1.png (Abilities) # Menu2.png (Equipment) # Menu3.png (Save Game) # Menu4.png (Quit Game) # #------------------------------------------------------------------------------ # * Credit: # The Law G14 - Player Portrait, Gold & Menu Icons # Night_Runner - General Godliness :P #==============================================================================
#============================================================================== # * Menu Status bar configuration #==============================================================================
module Taiine_CMS Main_player_id = 1 # ID Of the player as it is in the Database # To change in game use call script and place Taiine_CMS::Main_player_id = ID # Where ID is the ID of the player as it is in the Database
Menu_style = true # Sets rather to have the Menu be icons only or Icons and Text # Icons Only: true # Icons & Text: false end
#============================================================================== # ** Game_Map #------------------------------------------------------------------------------ # Edited to have the name of the map. #==============================================================================
class Game_Map #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- attr_reader :name #-------------------------------------------------------------------------- # * Setup #-------------------------------------------------------------------------- alias taiine_soloMenu_setup setup unless $@ def setup(*args) # Run the normal setup returnValue = taiine_soloMenu_setup(*args) # Get the name of the map @name = load_data("Data/MapInfos.rxdata")[@map_id].name # Returnt the original raturnValue return returnValue end end
#============================================================================== # ** Window Base #------------------------------------------------------------------------------ # Edited to draw the actors face. #==============================================================================
class Window_Base #-------------------------------------------------------------------------- # * Draw EXP # actor : actor # x : draw spot x-coordinate # y : draw spot y-coordinate #-------------------------------------------------------------------------- def write_actor_exp(actor, x, y) self.contents.font.color = system_color self.contents.draw_text(x, y, 24, 32, "EXP") self.contents.font.color = normal_color self.contents.draw_text(x + -2, y, 84, 32, actor.exp_s, 2) self.contents.draw_text(x + 82, y, 12, 32, "/", 1) self.contents.draw_text(x + 95, y, 84, 32, actor.next_exp_s) end #-------------------------------------------------------------------------- # * Alias draw_actor_exp #-------------------------------------------------------------------------- # If BlizzABS is active if method_defined?(:draw_actor_exp_original) # Do the preceeding code instead of draw_actor_exp_original alias draw_actor_exp_original write_actor_exp unless $@ # If BlizzABS is not active else # Do the preceeding code instead of draw_actor_exp alias draw_actor_exp write_actor_exp unless $@ 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, 96, 96)) end #-------------------------------------------------------------------------- # * Draw Picture #-------------------------------------------------------------------------- def draw_picture(picture_name, x, y) bitmap = RPG::Cache.picture(picture_name) cw = bitmap.width ch = bitmap.height src_rect = Rect.new(0, 0, cw, ch) self.contents.blt(x, y, bitmap, src_rect) end end
#=============================================================================== # ** Window_Command_Taiine_CMS #------------------------------------------------------------------------------- # This code allows the command window in the menu to display icons. #===============================================================================
class Window_Command_Taiine_CMS < Window_Selectable #----------------------------------------------------------------------------- # * Public Instance Variables #----------------------------------------------------------------------------- attr_reader :continue #----------------------------------------------------------------------------- # * Object Initialization #----------------------------------------------------------------------------- def initialize(index, continue) # Icons only? @icons_only = Taiine_CMS::Menu_style # If @icons_only is true: set the width to 64, otherwise, set the width # to 160 width = @icons_only ? 64 : 160 commands = ['Inventory' , 'Abilities', 'Equipment', 'Save', 'End Game'] super(0, 0, width, commands.size * 32 + 32) # window size @item_max = commands.size @commands = commands self.contents = Bitmap.new(width - 32, @item_max * 32) refresh self.index = 0 end #----------------------------------------------------------------------------- # * Draw Item #----------------------------------------------------------------------------- def draw_item(i, color) self.contents.fill_rect(0, i*32, 148, 32, Color.new(0, 0, 0, 0)) bitmap = RPG::Cache.icon("Menu#{i}") opacity = (color == normal_color ? 255 : 128) # Set the x offset of the icons based on the @icons_only # If the @icons_only is true, set the x of the icons to 5 # Otherwise, set the x of the icons to 104 x_icons = @icons_only ? 5 : 104 self.contents.blt(x_icons, 4 + i*32, bitmap, Rect.new(0, 0, 24, 24), opacity) # Skip the rest of it if it is in @icons_only mode return if @icons_only self.contents.font.color = color self.contents.draw_text(-49, i*32, 148, 32, @commands[i], 2) end #----------------------------------------------------------------------------- # * Refresh #----------------------------------------------------------------------------- def refresh self.contents.clear for i in 0...@item_max draw_item(i, normal_color) end end #-------------------------------------------------------------------------- # * Disable Item # index : item number #-------------------------------------------------------------------------- def disable_item(index) draw_item(index, disabled_color) end end
#============================================================================== # * Window_PlayTime #------------------------------------------------------------------------------ # Edited to right-align the text "Play Time". #==============================================================================
#============================================================================== # * Window MenuStatus #------------------------------------------------------------------------------ # Edited to be ubiquitous for the menu. #==============================================================================
class Window_MenuStatus < Window_Base #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize super(20, 0, 440, 480) #left, top, right, bottom self.z = 6000 self.contents = Bitmap.new(width - 32, height - 32) @playtime_sprite = Sprite.new() @playtime_sprite.bitmap = Bitmap.new(120, 32) @total_sec = 0 refresh end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear actor = $game_actors[Taiine_CMS::Main_player_id] # If Taiine_CMS::Main_player_id is to a actor that doesn't exist if actor.nil? # Tell the developer p "Your Taiine_CMS::Main_player_id (#{Taiine_CMS::Main_player_id}) actor does not exist." # Set the main actor the the 1st player in the party. actor = $game_party.actors[0] end # Draw the actors face/battler draw_actor(actor, 0, 10) # Draw the actors name (with shadow) draw_actor_name(actor, 100, 0) # Draw the actors level draw_actor_level(actor, 100, 40) # Draw the actors class draw_actor_class(actor, 100, 60) # Draw the actors state draw_actor_status(actor, 100, 80) # Draw the actors vitality & experience draw_actor_vitality(actor, 240, 8) # Draw the actors equipment draw_actor_equipment(actor, 5, 130) # Draw the actors parameters self.contents.font.size = 16 for i in 0..6 draw_actor_parameter(actor, 240, 130 + 32 * i, i) end self.contents.font.size = 22 # Draw location, Gold & Playtime draw_location(0, 384) draw_gold(150, 384) draw_playtime(300, 384) end #-------------------------------------------------------------------------- # * Draw Actor Graphic (Face / Battler) #-------------------------------------------------------------------------- def draw_actor(actor, x, y) draw_actor_face_graphic(actor, x, y) end #-------------------------------------------------------------------------- # * Draw Actor Name #-------------------------------------------------------------------------- def draw_actor_name(actor, x, y) self.contents.font.size = 30 self.contents.font.color = Color.new(0, 0, 0, 255) self.contents.draw_text(x + 1, y, 110, 40, actor.name) self.contents.font.color = normal_color self.contents.draw_text(x, y + 1, 110, 40, actor.name) self.contents.font.size = 22 end #-------------------------------------------------------------------------- # * Draw Actor Level #-------------------------------------------------------------------------- def draw_actor_level(actor, x, y) self.contents.font.size = 16 self.contents.font.color = system_color self.contents.draw_text(x, y, 96, 32, "Level:") self.contents.font.color = normal_color self.contents.draw_text(x + 40, y, 24, 32, actor.level.to_s, 0) self.contents.font.size = 22 end #-------------------------------------------------------------------------- # * Draw Actor Class #-------------------------------------------------------------------------- def draw_actor_class(actor, x, y) self.contents.font.size = 16 self.contents.font.color = system_color self.contents.draw_text(x, y, 96, 32, "Class:") self.contents.font.color = normal_color # Call Window_Base's draw_actor_class to draw the text for the class naem super(actor, x + 40, y) self.contents.font.size = 22 end #-------------------------------------------------------------------------- # * Draw Actor Status #-------------------------------------------------------------------------- def draw_actor_status(actor, x, y) self.contents.font.size = 16 self.contents.font.color = system_color self.contents.draw_text(x, y, 96, 32, "State:") self.contents.font.color = normal_color draw_actor_state(actor, x + 40, y) self.contents.font.size = 22 end #-------------------------------------------------------------------------- # * Draw Actor Vitality #-------------------------------------------------------------------------- def draw_actor_vitality(actor, x, y) self.contents.font.size = 16 draw_actor_hp(actor, x, y) draw_actor_sp(actor, x, y + 32) draw_actor_exp(actor, x, y + 64) self.contents.font.size = 22 end #-------------------------------------------------------------------------- # * Draw Actor Equipment #-------------------------------------------------------------------------- def draw_actor_equipment(actor, x, y) dy = 32 self.contents.font.size = 22 self.contents.font.color = system_color self.contents.draw_text(x + 35, y, 96, 32, "Equipment") self.contents.font.color = normal_color draw_item_name($data_weapons[actor.weapon_id], x, y + 1 * dy) draw_item_name($data_armors[actor.armor1_id], x, y + 2 * dy) draw_item_name($data_armors[actor.armor2_id], x, y + 3 * dy) draw_item_name($data_armors[actor.armor3_id], x, y + 4 * dy) draw_item_name($data_armors[actor.armor4_id], x, y + 5 * dy) end #-------------------------------------------------------------------------- # * Draw Location #-------------------------------------------------------------------------- def draw_location(x, y) self.contents.font.color = system_color self.contents.draw_text(x, y, 120, 32, "Location", 1) self.contents.font.color = normal_color self.contents.draw_text(x, y + 32, 150, 32, $game_map.name, 1) end #-------------------------------------------------------------------------- # * Draw Gold #-------------------------------------------------------------------------- def draw_gold(x, y) self.contents.font.color = system_color # Set the width of the gold word & gold_amount texts text_width = 120 # Set the name of the picture to use for the gold icon gold_icon_name = 'Gold' # Draw the text for the word for gold self.contents.draw_text(x, y, text_width, 32, $data_system.words.gold, 1) self.contents.font.color = normal_color # Get the string for the amount of gold gold_amount = $game_party.gold.to_s wg = contents.text_size(gold_amount).width # Get the width of the icon wi = RPG::Cache.picture(gold_icon_name).width # Calculate the starting x of the text st_x = x + text_width / 2 - wi / 2 - wg / 2 # Used hand calculations! # Draw the gold self.contents.draw_text(st_x, y + 32, 120, 32, gold_amount) # Draw the icon next to the text draw_picture(gold_icon_name, st_x + wg, y + 37) end #-------------------------------------------------------------------------- # * Draw Playtime #-------------------------------------------------------------------------- def draw_playtime(x, y) self.contents.font.color = system_color self.contents.draw_text(x, y, 120, 32, "Play Time", 1) @playtime_sprite.x = x + self.x + 16 @playtime_sprite.y = y + 32 + self.y + 16 @playtime_sprite.z = self.z redraw_playtime end #-------------------------------------------------------------------------- # * Redraw Playtime #-------------------------------------------------------------------------- def redraw_playtime @playtime_sprite.bitmap.clear @total_sec = Graphics.frame_count / Graphics.frame_rate hour = @total_sec / 60 / 60 min = @total_sec / 60 % 60 sec = @total_sec % 60 text = sprintf("%02d:%02d:%02d", hour, min, sec) @playtime_sprite.bitmap.font.color = normal_color @playtime_sprite.bitmap.draw_text(0, 0, 120, 32, text, 1) end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update # If the playtime needs to be updated if @total_sec != Graphics.frame_count / Graphics.frame_rate redraw_playtime end super end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def x=(val) # Move the @playtime_sprite @playtime_sprite.x += (val - self.x) unless @playtime_sprite.nil? # Run the super super(val) end #-------------------------------------------------------------------------- # * Dispose #-------------------------------------------------------------------------- def dispose @playtime_sprite.bitmap.dispose @playtime_sprite.dispose super end end
class Scene_Menu #-------------------------------------------------------------------------- # * Classwide Variables #-------------------------------------------------------------------------- @@menu_index = 0 #-------------------------------------------------------------------------- # * Object Initialization # menu_index : command cursor's initial position #-------------------------------------------------------------------------- def initialize(menu_index = 0) @menu_index = $scene.is_a?(Scene_Map) ? menu_index : @@menu_index end #-------------------------------------------------------------------------- # * Main Processing #-------------------------------------------------------------------------- def main Graphics.freeze # Makes the Map appear in the background @spriteset = Spriteset_Map.new # Navigation s1 = "Inventory" s2 = "Abilities" s3 = "Equipment" s4 = "Save Game" s5 = "Quit Game" @command_window = Window_Command_Taiine_CMS.new(180, [s1, s2, s3, s4, s5,]) @command_window.index = @menu_index @command_window.y = 140 - @command_window.height / 2 #Height @command_window.x = 450 #Left-Right placement @command_window.z = 6000 # 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) end # If save is forbidden if $game_system.save_disabled # Disable save @command_window.disable_item(3) end # Make status window @status_window = Window_MenuStatus.new # Move the windows if the menu is in icon only mode if Taiine_CMS::Menu_style == true @command_window.x += 53 @status_window.x += 53 end # 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 # Store the menu index @@menu_index = @command_window.index # Dispose of windows @command_window.dispose @spriteset.dispose @status_window.dispose end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update # Update windows @command_window.update @status_window.update @spriteset.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) @command_window.active = true @status_window.active = false # 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 # Get the index in the party of teh leading actor actor_index = $game_party.actors.index($game_actors[Taiine_CMS::Main_player_id]) # If the Taiine_CMS::Main_player_id is not in the party if actor_index.nil? # Tell the developer p "Your Taiine_CMS::Main_player_id (#{Taiine_CMS::Main_player_id}) actor is not in the party." # Set the actor_id to the first player in the party so it doesn't error actor_index = 0 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) @command_window.active = false @status_window.active = true # Switch to skill screen $scene = Scene_Skill.new(actor_index) when 2 # equipment # Play decision SE $game_system.se_play($data_system.decision_se) @command_window.active = false @status_window.active = true # Switch to equip screen $scene = Scene_Equip.new(actor_index) when 3 # 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 4 # 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 end
Customization Requires the following images to be in the Pictures Folder of your project
Player Portrait: 96x96 File name of the player ID Example: 1.png Gold Coin Icon: 24x24 Gold.png
Requires the following images to be in the Icons Folder of your project
* Note: The icons used in the demo (not seen in the screenshot) are quick and rather 'ugly' this is to encourage YOU to pick your own rather then use the ones supplied in the demo. :3
Compatibility Not compatible with other Scripts that modify the main window (Scene_Menu). Can be used with other CMS's that do not modify the 'main' window.
Screenshot
Menu System Icons + Text & Icons Only
Note: The bars are NOT part of the script, they are from COGWHEEL's Plug 'n' Play Menu Bars The smaller text has been tested with various fonts, even some very fancy, and is still clear and readable.
Installation Paste the Script above Main. Place the images as mentioned under Customization
Terms and Conditions Can be used in Commercial & Non Commercial Games Credit MUST be given, not just in a forum topic but in the game as well (as all credits should be shown)
Credits The Law G14 - Player Portrait, Gold & Menu Icons Night_Runner - General Godliness :P
Added Notes This is the very first script I have attempted to create, and am very pleased with it. Yes, I will be attempting to extend this or make additional scrips that edit the rest of the menu systems (Inventory, Equipment, etc)
Group: Member
Posts: 82
Type: Event Designer
RM Skill: Skilled
QUOTE (Voidwalker @ Oct 1 2010, 12:37 PM)
Umm.. it s possible? Change the size of a Icon to make it more bigger in battle (Only Weapons)? Need some help with this
Weapons for this Charas _aatester.png ( 6.23K )
Number of downloads: 16
This should be in the script support section. However, if you are using the standard sideview script, just make an action sequence where the weapon size is scaled to whatever size you want (x2 I'd assume) in the configuration parts.