|
  |
Character Select Menu Ver. 1.1c, Credit to Prexus |
|
|
|
|
Apr 24 2008, 01:28 AM
|

Level 12

Group: Revolutionary
Posts: 203
Type: Mapper
RM Skill: Skilled

|
1st of all,all credit gose to Prexus PARTY SELECTION SCRIPT (Version 1.1c) Features Creates a scene to rearrange your party. There are a variety of things to do in this system. You can remove and add characters from being available in the Reserves (non-party members), lock characters so you can't add or remove them, and make characters "Unavailable", which does about the same thing as Locking. The reasoning behind having two things like this is for representation purposes. A character who isn't in your party, but is temporarily unavailable COULD show up as being "Locked" (lock icon) but I didn't feel it looked as good as being "Unavailable" (greyed out.) But a character who IS in your party, but can't be removed, obviously wouldn't make sense as being Unavailable. You can also see the statistics of the character, as well as the face graphic, in a small window to the right of the Party/Reserves Locked.png:
Locked.png ( 2.92K )
Number of downloads: 1116 Script:
PartySelectScript.txt ( 9.73K )
Number of downloads: 3845Tutorial copy the script abuve and paste it abuve main Right click the icon "Locked.png" and save it in the Graphics\System\ directory into your own project. The initial starting party is automatically made available in your Reserves/Party. However, when adding a party member using the regular Event command, it doesn't automatically add the character to your Reserves. The reason being for temporary characters and such. To make a character FOUND in your reserves, put this line in a Call Script: CODE $data_actors[ID].found = true Change ID to the ID of the actor in the Database. Change true to false to remove the character from the reserves. To make a character LOCKED, put this line in a Call Script: CODE $data_actors[ID].required = true Change ID to the ID of the actor in the Database. Change true to false to unlock the character. To make the character UNAVAILABLE, put this line in a Call Script: CODE $data_actors[ID].unavailable = true Change ID to the ID of the actor in the Database. Change true to false to make the character available again. Instead of using $data_actors[id], you can also use $game_party.members[position].actor, which works better for things like the Skeleton, who locks the party leader (regardless of who it is.)
This post has been edited by puppeto4: May 22 2008, 12:03 PM
__________________________
|
|
|
|
|
|
|
|
|
Apr 24 2008, 03:10 AM
|

Group: Member
Posts: 1
Type: None
RM Skill: Undisclosed

|
Thanks for finding this!
|
|
|
|
|
|
|
|
|
May 1 2008, 12:24 PM
|
Level 9

Group: Revolutionary
Posts: 140
Type: None
RM Skill: Beginner

|
QUOTE (hagen843 @ Apr 24 2008, 02:52 AM)  I know this might sound stupid now, but can anywone tell me how to call the script?  Bump, hagen has a good point. I myself would like to have a way to call this script from the menu.
|
|
|
|
|
|
|
|
|
May 6 2008, 05:42 AM
|
Level 9

Group: Revolutionary
Posts: 140
Type: None
RM Skill: Beginner

|
Sorry for the double post, but this fell off the front page and we still haven't been informed how to call this script, and I'd like to know how to do so from the menu.
|
|
|
|
|
|
|
|
|
May 6 2008, 06:06 AM
|

Group: Banned
Posts: 0
Type: None
RM Skill: Undisclosed

|
Reminds me of Final Fantasy 6. Good job!
__________________________
Don't post porn like I did! This Public Safety Announcement is brought to you by the leadership team of RRR.
|
|
|
|
|
|
|
|
|
May 6 2008, 06:30 AM
|

Because Tomorrow Will Surely Come...

Group: Revolutionary
Posts: 1,137
Type: None
RM Skill: Skilled

|
OK,to everybody who want to use this from menu,download this :
Scene_Menu_Party_Changer_.txt ( 5.09K )
Number of downloads: 1363And This :
Scene_Party.txt ( 9.97K )
Number of downloads: 965Or copy it below: CODE #============================================================================== # ** Vocab #------------------------------------------------------------------------------ # This module defines terms and messages. It defines some data as constant# variables. Terms in the database are obtained from $data_system. #============================================================================== module Vocab # Party def self.party return "Party" end end #============================================================================== # ** End Vocab #------------------------------------------------------------------------------ ############################################################################### #============================================================================== # ** Scene_File #------------------------------------------------------------------------------ # This class performs the save and load screen processing. #============================================================================== class Scene_File < Scene_Base #-------------------------------------------------------------------------- # * Return to Original Screen #-------------------------------------------------------------------------- def return_scene if @from_title $scene = Scene_Title.new elsif @from_event $scene = Scene_Map.new else $scene = Scene_Menu.new(5) end end end #============================================================================== # ** End Scene_File #------------------------------------------------------------------------------ ############################################################################### #============================================================================== # ** Scene_End #------------------------------------------------------------------------------ # This class performs game end screen processing. #============================================================================== class Scene_End < Scene_Base #-------------------------------------------------------------------------- # * Return to Original Screen #-------------------------------------------------------------------------- def return_scene $scene = Scene_Menu.new(6) end end #============================================================================== # ** End Scene_End #------------------------------------------------------------------------------ ###############################################################################
#============================================================================== # ** Scene_Menu #------------------------------------------------------------------------------ # This class performs the menu screen processing. #============================================================================== class Scene_Menu < Scene_Base #-------------------------------------------------------------------------- # * Create Command Window #-------------------------------------------------------------------------- def create_command_window s1 = Vocab::item s2 = Vocab::skill s3 = Vocab::equip s4 = Vocab::status s5 = Vocab::party s6 = Vocab::save s7 = Vocab::game_end @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7]) @command_window.index = @menu_index if $game_party.members.size == 0 # If number of party members is 0 @command_window.draw_item(0, false) # Disable item @command_window.draw_item(1, false) # Disable skill @command_window.draw_item(2, false) # Disable equipment @command_window.draw_item(3, false) # Disable status @command_window.draw_item(4, false) # Disable party end if $game_system.save_disabled # If save is forbidden @command_window.draw_item(5, false) # Disable save end end #-------------------------------------------------------------------------- # * Update Command Selection #-------------------------------------------------------------------------- def update_command_selection if Input.trigger?(Input::B) Sound.play_cancel $scene = Scene_Map.new elsif Input.trigger?(Input::C) if $game_party.members.size == 0 and @command_window.index < 5 Sound.play_buzzer return elsif $game_system.save_disabled and @command_window.index == 5 Sound.play_buzzer return end Sound.play_decision case @command_window.index when 0 # Item $scene = Scene_Item.new when 1,2,3 # Skill, equipment, status start_actor_selection when 4 # End Game $scene = Scene_Party.new(true, false) when 5 # Save $scene = Scene_File.new(true, false, false) when 6 # End Game $scene = Scene_End.new end end end end #============================================================================== # ** End Scene_Menu #------------------------------------------------------------------------------ CODE #============================================================================== # ** Prexus - Party Manager (v1.1c) #------------------------------------------------------------------------------ # This is a Party Management system, created by Prexus. It allows you to # change your party makeup, out of a reserve of characters. It also allows you # to lock characters, making them mandatory, and make characters unavailable. # # See thread at RMXP.org for instructions: # http://www.rmxp.org/forums/index.php?topic=42685.msg402326#msg402326 # # - Changelog (v1.1c) # * Fixed a graphical error in the party reserves window # # - (v1.1b) # * Fixed a bug with the draw_item_name method, added the width parameter # - (v1.1) # * Added functionality to see player's equipment (press the A button) # #==============================================================================
module RPG class Actor def setup @found = false @unavailable = false @required = false end attr_accessor :found attr_accessor :unavailable attr_accessor :required end end
class Game_Actors attr_reader :data alias prex_party_g_actors_initialize initialize def initialize prex_party_g_actors_initialize $data_actors.each do |actor| actor.setup if actor @data[actor.id] = Game_Actor.new(actor.id) if actor end end end
class Scene_File < Scene_Base alias prex_party_s_file_write_save_data write_save_data alias prex_party_s_file_read_save_data read_save_data def write_save_data(file) prex_party_s_file_write_save_data(file) Marshal.dump($data_actors, file) end def read_save_data(file) prex_party_s_file_read_save_data(file) $data_actors = Marshal.load(file) end end
class Scene_Title < Scene_Base alias prex_party_s_title_command_new_game command_new_game def command_new_game prex_party_s_title_command_new_game $game_party.members.each {|s| s.actor.found = true if s} end end
class Window_Base < Window def draw_item_name(item, x, y, enabled = true, width = 172) if item != nil draw_icon(item.icon_index, x, y, enabled) self.contents.font.color = normal_color self.contents.font.color.alpha = enabled ? 255 : 128 self.contents.draw_text(x + 24, y, width, WLH, item.name) end end end
class Scene_Party < Scene_Base def initialize(from_menu, from_event) @from_menu = from_menu @from_event = from_event end def start super create_menu_background create_windows end def create_windows @member_window = Window_CurrentMember.new @party_window = Window_CurrentParty.new @party_window.active = true @selectable_window = Window_SelectMember.new end def update_windows @member_window.update @party_window.update @selectable_window.update if @party_window.active @member_window.set_member(@party_window.member) elsif @selectable_window.active @member_window.set_member(@selectable_window.member) end end def terminate super @member_window.dispose @party_window.dispose @selectable_window.dispose end def update super update_windows update_input end def update_input if Input.trigger?(Input::A) if @member_window.mode == 1 @member_window.set_mode(0) elsif @member_window.mode == 0 @member_window.set_mode(1) end end if @party_window.active if Input.trigger?(Input::B) Sound.play_cancel return_scene elsif Input.trigger?(Input::C) member = @party_window.member if member != nil if member.actor.unavailable or member.actor.required Sound.play_buzzer return end end Sound.play_decision @party_window.active = false @selectable_window.active = true @selectable_window.index = 0 end elsif @selectable_window.active if Input.trigger?(Input::B) Sound.play_cancel @selectable_window.index = -1 @selectable_window.active = false @party_window.active = true elsif Input.trigger?(Input::C) member = @selectable_window.member if member != nil if member.actor.unavailable Sound.play_buzzer return end end Sound.play_decision $game_party.remove_actor(@party_window.member.id) if @party_window.member != nil $game_party.add_actor(@selectable_window.member.id) if @selectable_window.member != nil @selectable_window.refresh @party_window.refresh @selectable_window.index = -1 @selectable_window.active = false @party_window.active = true end end end def return_scene if @from_menu $scene = Scene_Menu.new(4) elsif @from_event $scene = Scene_Map.new end end end
class Window_CurrentMember < Window_Base attr_reader :mode def initialize(member = nil, mode = 0) super(304, 80, 192, 256) create_contents @member = member @mode = 0 refresh end def member return @member end def set_member(member) old_member = @member @member = member refresh if old_member != @member end def set_mode(mode) @mode = mode if [0, 1].include?(mode) refresh end def refresh self.contents.clear return unless @member x, y = 0, 0 self.draw_actor_face(@member, x, y, 48) self.draw_actor_name(@member, x + 52, y) self.draw_actor_class(@member, x + 52, y + WLH) self.draw_actor_level(@member, x, y + WLH*2) case @mode when 0 self.draw_icon(142, self.contents.width - 24, y + WLH*2) self.contents.draw_text(x, y + WLH*2, self.contents.width - 12, WLH, 'Equip', 2) self.draw_actor_hp(@member, x, y + WLH*3, 160) self.draw_actor_mp(@member, x, y + WLH*4, 160) self.draw_actor_parameter(@member, x, y + WLH*5, 0) self.draw_actor_parameter(@member, x, y + WLH*6, 1) self.draw_actor_parameter(@member, x, y + WLH*7, 2) self.draw_actor_parameter(@member, x, y + WLH*8, 3) when 1 self.draw_icon(143, self.contents.width - 24, y + WLH*2) self.contents.draw_text(x, y + WLH*2, self.contents.width - 12, WLH, 'Stat', 2) for i in 0...@member.equips.size item = @member.equips[i] self.draw_item_name(item, x, y + WLH*(3+i), true, self.contents.width - 24) end end end end
class Window_CurrentParty < Window_Selectable def initialize super(48, 80, 256, 64) @item_max = 4 @column_max = @item_max create_contents self.index = 0 refresh end def member return $game_party.members[self.index] end def refresh for i in 0...@item_max rect = item_rect(i) self.contents.clear_rect(rect) end for i in 0...$game_party.members.size rect = item_rect(i) bitmap = Cache.character($game_party.members[i].character_name) sign = $game_party.members[i].character_name[/^[\!\$]./] if sign != nil and sign.include?('$') cw = bitmap.width / 3 ch = bitmap.height / 4 else cw = bitmap.width / 12 ch = bitmap.height / 8 end n = $game_party.members[i].character_index src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch) if $game_party.members[i].actor.unavailable self.contents.blt(rect.x, rect.y, bitmap, src_rect, 128) else self.contents.blt(rect.x, rect.y, bitmap, src_rect, 255) end if $game_party.members[i].actor.required lock_bitmap = Cache.system("Locked") self.contents.blt(rect.x + rect.width - lock_bitmap.width, rect.y + rect.height - lock_bitmap.height, lock_bitmap, lock_bitmap.rect) end end end def item_rect(index) rect = Rect.new(0, 0, 0, 0) rect.width = (contents.width + @spacing) / @column_max - @spacing rect.height = 32 rect.x = index % @column_max * (rect.width + @spacing) rect.y = index / @column_max * 32 return rect end end
class Window_SelectMember < Window_Selectable def initialize super(48, 144, 256, 192) calculate_actors @item_max = @actors.size + 1 @column_max = 4 self.index = -1 self.active = false refresh end def calculate_actors @actors = [] for a in $game_actors.data @actors << a if a != nil and a.actor.found and !$game_party.members.include?(a) end end def member return @actors[self.index] end def refresh self.contents.clear calculate_actors @item_max = @actors.size + 1 for i in 0...@actors.size rect = item_rect(i) bitmap = Cache.character(@actors[i].character_name) sign = @actors[i].character_name[/^[\!\$]./] if sign != nil and sign.include?('$') cw = bitmap.width / 3 ch = bitmap.height / 4 else cw = bitmap.width / 12 ch = bitmap.height / 8 end n = @actors[i].character_index src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch) if @actors[i].actor.unavailable self.contents.blt(rect.x, rect.y, bitmap, src_rect, 128) else self.contents.blt(rect.x, rect.y, bitmap, src_rect, 255) end if @actors[i].actor.required lock_bitmap = Cache.system("Locked") self.contents.blt(rect.x + rect.width - lock_bitmap.width, rect.y + rect.height - lock_bitmap.height, lock_bitmap, lock_bitmap.rect) end end end def item_rect(index) rect = Rect.new(0, 0, 0, 0) rect.width = (contents.width + @spacing) / @column_max - @spacing rect.height = 32 rect.x = index % @column_max * (rect.width + @spacing) rect.y = index / @column_max * 32 return rect end end Now now,you don't need above script anymore,since I redifined it,so if you use the original script,it will cause errors to you.So use only both script that I post here. To call it from map now,you'll need to write this,since I modified it : CODE $scene = Scene_Party(false, true) And,for menu,it already provided in the script in this post. ┐(-`◡◡´;-)┌cheers,puppeto4.
__________________________
|
|
|
|
|
|
|
|
|
May 16 2008, 09:49 AM
|
Level 2

Group: Member
Posts: 19
Type: Event Designer
RM Skill: Skilled

|
Wait... I can't get the code to lock a character from the beginning of the game... What exactly is this "Call Script" you are talking about? I've never done much scripting, but I need my main character to be locked, because without at least one character being locked, you can put everyone into the reserve, and have no party members - and then you can't go back in and put them back in the main party; the "Party" menu option grays out.
|
|
|
|
|
|
|
|
|
May 16 2008, 10:05 AM
|

Because Tomorrow Will Surely Come...

Group: Revolutionary
Posts: 1,137
Type: None
RM Skill: Skilled

|
Put the code in an event and have it run when you want the character to be locked. btw,if you can't figure out how to use this,go to page 3 of event commands,and use "Script..." command Put this line : CODE $data_actors[ID].required = true Change "ID" to the actor ID(in the database) that you want to lock. (・∀・)cheers,puppeto4.
__________________________
|
|
|
|
|
|
|
|
|
May 16 2008, 08:59 PM
|
Level 2

Group: Member
Posts: 19
Type: Event Designer
RM Skill: Skilled

|
Yeah, I did that... since you start the game with the main character, I put an event next to the player starting position, and had it autorun, using the script you mentioned, puppet. (I do read the previous posts, unlike some people I've been on other forums with. lol.) And I assume by [ID] you mean the number of the character such as 001, 002, etc... but when I load up a test play, it won't allow me to move. And it's not frozen, the water around him is moving.
|
|
|
|
|
|
|
|
|
May 16 2008, 10:59 PM
|

Because Tomorrow Will Surely Come...

Group: Revolutionary
Posts: 1,137
Type: None
RM Skill: Skilled

|
 No,no,you are almost there. Ok,you use an event which run with autorun trigger, right? At the end of the first page of the event, put "Control Self Switch # On" Then, make a second page for the event. In that page tick "Self Switch # On" for the condition and don't put anything on that page(event graphic,command or whatever). And don't use autorun trigger for this page,instead use action trigger only. cheers,puppeto4.
__________________________
|
|
|
|
|
|
|
|
|
May 17 2008, 08:10 PM
|
Level 1

Group: Member
Posts: 11
Type: Event Designer
RM Skill: Skilled

|
Anyone else notice that you can remove all characters from your party? And run around with no Sprite? Also be unable to access anything but Save and End Game?
Im sure its a quick fix, but I dunno how.
Just a check to see if the party player # = 0 or something
__________________________
|
|
|
|
|
|
|
|
|
May 17 2008, 09:45 PM
|

Because Tomorrow Will Surely Come...

Group: Revolutionary
Posts: 1,137
Type: None
RM Skill: Skilled

|
QUOTE (Avarant87 @ May 18 2008, 11:24 AM)  Anyone else notice that you can remove all characters from your party? And run around with no Sprite? Also be unable to access anything but Save and End Game?
Im sure its a quick fix, but I dunno how.
Just a check to see if the party player # = 0 or something That's why the script has lock character function,so that there will be at least one actor left in the party at one time. Refer to my posts above on how to use lock actor feature. ◕ ◡ ◕ cheers,puppeto4.
__________________________
|
|
|
|
|
|
|
|
|
May 17 2008, 11:23 PM
|
Level 1

Group: Member
Posts: 11
Type: Event Designer
RM Skill: Skilled

|
QUOTE (puppeto4 @ May 17 2008, 08:59 PM)  QUOTE (Avarant87 @ May 18 2008, 11:24 AM)  Anyone else notice that you can remove all characters from your party? And run around with no Sprite? Also be unable to access anything but Save and End Game?
Im sure its a quick fix, but I dunno how.
Just a check to see if the party player # = 0 or something That's why the script has lock character function,so that there will be at least one actor left in the party at one time. Refer to my posts above on how to use lock actor feature. ◕ ◡ ◕ cheers,puppeto4.  Yeah, but what if I don't want any specific character to be forced in the party? Something like Final Fantasy Tactics. No Real Party.
__________________________
|
|
|
|
|
|
|
|
|
May 18 2008, 12:09 AM
|

Because Tomorrow Will Surely Come...

Group: Revolutionary
Posts: 1,137
Type: None
RM Skill: Skilled

|
Ok,fixed that one,get the script below :
Scene_Party_InMenuAccess.txt ( 15.18K )
Number of downloads: 336Or copy it below: CODE #============================================================================== # ** Prexus - Party Manager (v1.1c) #------------------------------------------------------------------------------ # This is a Party Management system, created by Prexus. It allows you to # change your party makeup, out of a reserve of characters. It also allows you # to lock characters, making them mandatory, and make characters unavailable. # # See thread at RMXP.org for instructions: # http://www.rmxp.org/forums/index.php?topic=42685.msg402326#msg402326 # # - Changelog (v1.1c) # * Fixed a graphical error in the party reserves window # # - (v1.1b) # * Fixed a bug with the draw_item_name method, added the width parameter # - (v1.1) # * Added functionality to see player's equipment (press the A button) # #==============================================================================
module RPG class Actor def setup @found = false @unavailable = false @required = false end attr_accessor :found attr_accessor :unavailable attr_accessor :required end end
class Game_Actors attr_reader :data alias prex_party_g_actors_initialize initialize def initialize prex_party_g_actors_initialize $data_actors.each do |actor| actor.setup if actor @data[actor.id] = Game_Actor.new(actor.id) if actor end end end
class Scene_File < Scene_Base alias prex_party_s_file_write_save_data write_save_data alias prex_party_s_file_read_save_data read_save_data def write_save_data(file) prex_party_s_file_write_save_data(file) Marshal.dump($data_actors, file) end def read_save_data(file) prex_party_s_file_read_save_data(file) $data_actors = Marshal.load(file) end end
class Scene_Title < Scene_Base alias prex_party_s_title_command_new_game command_new_game def command_new_game prex_party_s_title_command_new_game $game_party.members.each {|s| s.actor.found = true if s} end end
class Window_Base < Window def draw_item_name(item, x, y, enabled = true, width = 172) if item != nil draw_icon(item.icon_index, x, y, enabled) self.contents.font.color = normal_color self.contents.font.color.alpha = enabled ? 255 : 128 self.contents.draw_text(x + 24, y, width, WLH, item.name) end end end
class Scene_Party < Scene_Base def initialize(from_menu, from_event) @from_menu = from_menu @from_event = from_event end def start super create_menu_background create_windows end def create_windows @member_window = Window_CurrentMember.new @party_window = Window_CurrentParty.new @party_window.active = true @selectable_window = Window_SelectMember.new end def update_windows @member_window.update @party_window.update @selectable_window.update if @party_window.active @member_window.set_member(@party_window.member) elsif @selectable_window.active @member_window.set_member(@selectable_window.member) end end def terminate super @member_window.dispose @party_window.dispose @selectable_window.dispose end def update super update_windows update_input end def update_input if Input.trigger?(Input::A) if @member_window.mode == 1 @member_window.set_mode(0) elsif @member_window.mode == 0 @member_window.set_mode(1) end end if @party_window.active if Input.trigger?(Input::B) Sound.play_cancel return_scene elsif Input.trigger?(Input::C) member = @party_window.member if member != nil if member.actor.unavailable or member.actor.required Sound.play_buzzer return end end Sound.play_decision @party_window.active = false @selectable_window.active = true @selectable_window.index = 0 end elsif @selectable_window.active if Input.trigger?(Input::B) Sound.play_cancel @selectable_window.index = -1 @selectable_window.active = false @party_window.active = true elsif Input.trigger?(Input::C) member = @selectable_window.member if member != nil if member.actor.unavailable Sound.play_buzzer return end end if $game_party.members.size == 1 and member == nil Sound.play_buzzer return end Sound.play_decision $game_party.remove_actor(@party_window.member.id) if @party_window.member != nil $game_party.add_actor(@selectable_window.member.id) if @selectable_window.member != nil @selectable_window.refresh @party_window.refresh @selectable_window.index = -1 @selectable_window.active = false @party_window.active = true end end end def return_scene if @from_menu $scene = Scene_Menu.new(4) elsif @from_event $scene = Scene_Map.new end end end
class Window_CurrentMember < Window_Base attr_reader :mode def initialize(member = nil, mode = 0) super(304, 80, 192, 256) create_contents @member = member @mode = 0 refresh end def member return @member end def set_member(member) old_member = @member @member = member refresh if old_member != @member end def set_mode(mode) @mode = mode if [0, 1].include?(mode) refresh end def refresh self.contents.clear return unless @member x, y = 0, 0 self.draw_actor_face(@member, x, y, 48) self.draw_actor_name(@member, x + 52, y) self.draw_actor_class(@member, x + 52, y + WLH) self.draw_actor_level(@member, x, y + WLH*2) case @mode when 0 self.draw_icon(142, self.contents.width - 24, y + WLH*2) self.contents.draw_text(x, y + WLH*2, self.contents.width - 12, WLH, 'Equip', 2) self.draw_actor_hp(@member, x, y + WLH*3, 160) self.draw_actor_mp(@member, x, y + WLH*4, 160) self.draw_actor_parameter(@member, x, y + WLH*5, 0) self.draw_actor_parameter(@member, x, y + WLH*6, 1) self.draw_actor_parameter(@member, x, y + WLH*7, 2) self.draw_actor_parameter(@member, x, y + WLH*8, 3) when 1 self.draw_icon(143, self.contents.width - 24, y + WLH*2) self.contents.draw_text(x, y + WLH*2, self.contents.width - 12, WLH, 'Stat', 2) for i in 0...@member.equips.size item = @member.equips[i] self.draw_item_name(item, x, y + WLH*(3+i), true, self.contents.width - 24) end end end end
class Window_CurrentParty < Window_Selectable def initialize super(48, 80, 256, 64) @item_max = 4 @column_max = @item_max create_contents self.index = 0 refresh end def member return $game_party.members[self.index] end def refresh for i in 0...@item_max rect = item_rect(i) self.contents.clear_rect(rect) end for i in 0...$game_party.members.size rect = item_rect(i) bitmap = Cache.character($game_party.members[i].character_name) sign = $game_party.members[i].character_name[/^[\!\$]./] if sign != nil and sign.include?('$') cw = bitmap.width / 3 ch = bitmap.height / 4 else cw = bitmap.width / 12 ch = bitmap.height / 8 end n = $game_party.members[i].character_index src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch) if $game_party.members[i].actor.unavailable self.contents.blt(rect.x, rect.y, bitmap, src_rect, 128) else self.contents.blt(rect.x, rect.y, bitmap, src_rect, 255) end if $game_party.members[i].actor.required lock_bitmap = Cache.system("Locked") self.contents.blt(rect.x + rect.width - lock_bitmap.width, rect.y + rect.height - lock_bitmap.height, lock_bitmap, lock_bitmap.rect) end end end def item_rect(index) rect = Rect.new(0, 0, 0, 0) rect.width = (contents.width + @spacing) / @column_max - @spacing rect.height = 32 rect.x = index % @column_max * (rect.width + @spacing) rect.y = index / @column_max * 32 return rect end end
class Window_SelectMember < Window_Selectable def initialize super(48, 144, 256, 192) calculate_actors @item_max = @actors.size + 1 @column_max = 4 self.index = -1 self.active = false refresh end def calculate_actors @actors = [] for a in $game_actors.data @actors << a if a != nil and a.actor.found and !$game_party.members.include?(a) end end def member return @actors[self.index] end def refresh self.contents.clear calculate_actors @item_max = @actors.size + 1 for i in 0...@actors.size rect = item_rect(i) bitmap = Cache.character(@actors[i].character_name) sign = @actors[i].character_name[/^[\!\$]./] if sign != nil and sign.include?('$') cw = bitmap.width / 3 ch = bitmap.height / 4 else cw = bitmap.width / 12 ch = bitmap.height / 8 end n = @actors[i].character_index src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch) if @actors[i].actor.unavailable self.contents.blt(rect.x, rect.y, bitmap, src_rect, 128) else self.contents.blt(rect.x, rect.y, bitmap, src_rect, 255) end if @actors[i].actor.required lock_bitmap = Cache.system("Locked") self.contents.blt(rect.x + rect.width - lock_bitmap.width, rect.y + rect.height - lock_bitmap.height, lock_bitmap, lock_bitmap.rect) end end end def item_rect(index) rect = Rect.new(0, 0, 0, 0) rect.width = (contents.width + @spacing) / @column_max - @spacing rect.height = 32 rect.x = index % @column_max * (rect.width + @spacing) rect.y = index / @column_max * 32 return rect end end #============================================================================== # ** Vocab #------------------------------------------------------------------------------ # This module defines terms and messages. It defines some data as constant # variables. Terms in the database are obtained from $data_system. #============================================================================== module Vocab # Party def self.party return "Party" end end #============================================================================== # ** End Vocab #------------------------------------------------------------------------------ ############################################################################### #============================================================================== # ** Scene_File #------------------------------------------------------------------------------ # This class performs the save and load screen processing. #============================================================================== class Scene_File < Scene_Base #-------------------------------------------------------------------------- # * Return to Original Screen #-------------------------------------------------------------------------- def return_scene if @from_title $scene = Scene_Title.new elsif @from_event $scene = Scene_Map.new else $scene = Scene_Menu.new(5) end end end #============================================================================== # ** End Scene_File #------------------------------------------------------------------------------ ############################################################################### #============================================================================== # ** Scene_End #------------------------------------------------------------------------------ # This class performs game end screen processing. #============================================================================== class Scene_End < Scene_Base #-------------------------------------------------------------------------- # * Return to Original Screen #-------------------------------------------------------------------------- def return_scene $scene = Scene_Menu.new(6) end end #============================================================================== # ** End Scene_End #------------------------------------------------------------------------------ ###############################################################################
#============================================================================== # ** Scene_Menu #------------------------------------------------------------------------------ # This class performs the menu screen processing. #============================================================================== class Scene_Menu < Scene_Base #-------------------------------------------------------------------------- # * Create Command Window #-------------------------------------------------------------------------- def create_command_window s1 = Vocab::item s2 = Vocab::skill s3 = Vocab::equip s4 = Vocab::status s5 = Vocab::party s6 = Vocab::save s7 = Vocab::game_end @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7]) @command_window.index = @menu_index if $game_party.members.size == 0 # If number of party members is 0 @command_window.draw_item(0, false) # Disable item @command_window.draw_item(1, false) # Disable skill @command_window.draw_item(2, false) # Disable equipment @command_window.draw_item(3, false) # Disable status @command_window.draw_item(4, false) # Disable party end if $game_system.save_disabled # If save is forbidden @command_window.draw_item(5, false) # Disable save end end #-------------------------------------------------------------------------- # * Update Command Selection #-------------------------------------------------------------------------- def update_command_selection if Input.trigger?(Input::B) Sound.play_cancel $scene = Scene_Map.new elsif Input.trigger?(Input::C) if $game_party.members.size == 0 and @command_window.index < 5 Sound.play_buzzer return elsif $game_system.save_disabled and @command_window.index == 5 Sound.play_buzzer return end Sound.play_decision case @command_window.index when 0 # Item $scene = Scene_Item.new when 1,2,3 # Skill, equipment, status start_actor_selection when 4 # End Game $scene = Scene_Party.new(true, false) when 5 # Save $scene = Scene_File.new(true, false, false) when 6 # End Game $scene = Scene_End.new end end end end #============================================================================== # ** End Scene_Menu #------------------------------------------------------------------------------ What I fix is that the party will at least need one member in the party every time. To call it from map now,you'll need to write this,since I modified it : CODE $scene = Scene_Party(false, true) And,for menu,it already provided in the script in this post. (-`◡◡´-)cheers,puppeto4.
__________________________
|
|
|
|
|
|
|
|
|
May 18 2008, 11:07 AM
|
Level 1

Group: Member
Posts: 11
Type: Event Designer
RM Skill: Skilled

|
QUOTE (puppeto4 @ May 17 2008, 11:23 PM)  Ok,fixed that one,get the script below :
Scene_Party_InMenuAccess.txt ( 15.18K )
Number of downloads: 336Or copy it below: CODE #============================================================================== # ** Prexus - Party Manager (v1.1c) #------------------------------------------------------------------------------ # This is a Party Management system, created by Prexus. It allows you to # change your party makeup, out of a reserve of characters. It also allows you # to lock characters, making them mandatory, and make characters unavailable. # # See thread at RMXP.org for instructions: # http://www.rmxp.org/forums/index.php?topic=42685.msg402326#msg402326 # # - Changelog (v1.1c) # * Fixed a graphical error in the party reserves window # # - (v1.1b) # * Fixed a bug with the draw_item_name method, added the width parameter # - (v1.1) # * Added functionality to see player's equipment (press the A button) # #==============================================================================
module RPG class Actor def setup @found = false @unavailable = false @required = false end attr_accessor :found attr_accessor :unavailable attr_accessor :required end end
class Game_Actors attr_reader :data alias prex_party_g_actors_initialize initialize def initialize prex_party_g_actors_initialize $data_actors.each do |actor| actor.setup if actor @data[actor.id] = Game_Actor.new(actor.id) if actor end end end
class Scene_File < Scene_Base alias prex_party_s_file_write_save_data write_save_data alias prex_party_s_file_read_save_data read_save_data def write_save_data(file) prex_party_s_file_write_save_data(file) Marshal.dump($data_actors, file) end def read_save_data(file) prex_party_s_file_read_save_data(file) $data_actors = Marshal.load(file) end end
class Scene_Title < Scene_Base alias prex_party_s_title_command_new_game command_new_game def command_new_game prex_party_s_title_command_new_game $game_party.members.each {|s| s.actor.found = true if s} end end
class Window_Base < Window def draw_item_name(item, x, y, enabled = true, width = 172) if item != nil draw_icon(item.icon_index, x, y, enabled) self.contents.font.color = normal_color self.contents.font.color.alpha = enabled ? 255 : 128 self.contents.draw_text(x + 24, y, width, WLH, item.name) end end end
class Scene_Party < Scene_Base def initialize(from_menu, from_event) @from_menu = from_menu @from_event = from_event end def start super create_menu_background create_windows end def create_windows @member_window = Window_CurrentMember.new @party_window = Window_CurrentParty.new @party_window.active = true @selectable_window = Window_SelectMember.new end def update_windows @member_window.update @party_window.update @selectable_window.update if @party_window.active @member_window.set_member(@party_window.member) elsif @selectable_window.active @member_window.set_member(@selectable_window.member) end end def terminate super @member_window.dispose @party_window.dispose @selectable_window.dispose end def update super update_windows update_input end def update_input if Input.trigger?(Input::A) if @member_window.mode == 1 @member_window.set_mode(0) elsif @member_window.mode == 0 @member_window.set_mode(1) end end if @party_window.active if Input.trigger?(Input::B) Sound.play_cancel return_scene elsif Input.trigger?(Input::C) member = @party_window.member if member != nil if member.actor.unavailable or member.actor.required Sound.play_buzzer return end end Sound.play_decision @party_window.active = false @selectable_window.active = true @selectable_window.index = 0 end elsif @selectable_window.active if Input.trigger?(Input::B) Sound.play_cancel @selectable_window.index = -1 @selectable_window.active = false @party_window.active = true elsif Input.trigger?(Input::C) member = @selectable_window.member if member != nil if member.actor.unavailable Sound.play_buzzer return end end if $game_party.members.size == 1 and member == nil Sound.play_buzzer return end Sound.play_decision $game_party.remove_actor(@party_window.member.id) if @party_window.member != nil $game_party.add_actor(@selectable_window.member.id) if @selectable_window.member != nil @selectable_window.refresh @party_window.refresh @selectable_window.index = -1 @selectable_window.active = false @party_window.active = true end end end def return_scene if @from_menu $scene = Scene_Menu.new(4) elsif @from_event $scene = Scene_Map.new end end end
class Window_CurrentMember < Window_Base attr_reader :mode def initialize(member = nil, mode = 0) super(304, 80, 192, 256) create_contents @member = member @mode = 0 refresh end def member return @member end def set_member(member) old_member = @member @member = member refresh if old_member != @member end def set_mode(mode) @mode = mode if [0, 1].include?(mode) refresh end def refresh self.contents.clear return unless @member x, y = 0, 0 self.draw_actor_face(@member, x, y, 48) self.draw_actor_name(@member, x + 52, y) self.draw_actor_class(@member, x + 52, y + WLH) self.draw_actor_level(@member, x, y + WLH*2) case @mode when 0 self.draw_icon(142, self.contents.width - 24, y + WLH*2) self.contents.draw_text(x, y + WLH*2, self.contents.width - 12, WLH, 'Equip', 2) self.draw_actor_hp(@member, x, y + WLH*3, 160) self.draw_actor_mp(@member, x, y + WLH*4, 160) self.draw_actor_parameter(@member, x, y + WLH*5, 0) self.draw_actor_parameter(@member, x, y + WLH*6, 1) self.draw_actor_parameter(@member, x, y + WLH*7, 2) self.draw_actor_parameter(@member, x, y + WLH*8, 3) when 1 self.draw_icon(143, self.contents.width - 24, y + WLH*2) self.contents.draw_text(x, y + WLH*2, self.contents.width - 12, WLH, 'Stat', 2) for i in 0...@member.equips.size item = @member.equips[i] self.draw_item_name(item, x, y + WLH*(3+i), true, self.contents.width - 24) end end end end
class Window_CurrentParty < Window_Selectable def initialize super(48, 80, 256, 64) @item_max = 4 @column_max = @item_max create_contents self.index = 0 refresh end def member return $game_party.members[self.index] end def refresh for i in 0...@item_max rect = item_rect(i) self.contents.clear_rect(rect) end for i in 0...$game_party.members.size rect = item_rect(i) bitmap = Cache.character($game_party.members[i].character_name) sign = $game_party.members[i].character_name[/^[\!\$]./] if sign != nil and sign.include?('$') cw = bitmap.width / 3 ch = bitmap.height / 4 else cw = bitmap.width / 12 ch = bitmap.height / 8 end n = $game_party.members[i].character_index src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch) if $game_party.members[i].actor.unavailable self.contents.blt(rect.x, rect.y, bitmap, src_rect, 128) else self.contents.blt(rect.x, rect.y, bitmap, src_rect, 255) end if $game_party.members[i].actor.required lock_bitmap = Cache.system("Locked") self.contents.blt(rect.x + rect.width - lock_bitmap.width, rect.y + rect.height - lock_bitmap.height, lock_bitmap, lock_bitmap.rect) end end end def item_rect(index) rect = Rect.new(0, 0, 0, 0) rect.width = (contents.width + @spacing) / @column_max - @spacing rect.height = 32 rect.x = index % @column_max * (rect.width + @spacing) rect.y = index / @column_max * 32 return rect end end
class Window_SelectMember < Window_Selectable def initialize super(48, 144, 256, 192) calculate_actors @item_max = @actors.size + 1 @column_max = 4 self.index = -1 self.active = false refresh end def calculate_actors @actors = [] for a in $game_actors.data @actors << a if a != nil and a.actor.found and !$game_party.members.include?(a) end end def member return @actors[self.index] end def refresh self.contents.clear calculate_actors @item_max = @actors.size + 1 for i in 0...@actors.size rect = item_rect(i) bitmap = Cache.character(@actors[i].character_name) sign = @actors[i].character_name[/^[\!\$]./] if sign != nil and sign.include?('$') cw = bitmap.width / 3 ch = bitmap.height / 4 else cw = bitmap.width / 12 ch = bitmap.height / 8 end n = @actors[i].character_index src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch) if @actors[i].actor.unavailable self.contents.blt(rect.x, rect.y, bitmap, src_rect, 128) else self.contents.blt(rect.x, rect.y, bitmap, src_rect, 255) end if @actors[i].actor.required lock_bitmap = Cache.system("Locked") self.contents.blt(rect.x + rect.width - lock_bitmap.width, rect.y + rect.height - lock_bitmap.height, lock_bitmap, lock_bitmap.rect) end end end def item_rect(index) rect = Rect.new(0, 0, 0, 0) rect.width = (contents.width + @spacing) / @column_max - @spacing rect.height = 32 rect.x = index % @column_max * (rect.width + @spacing) rect.y = index / @column_max * 32 return rect end end #============================================================================== # ** Vocab #------------------------------------------------------------------------------ # This module defines terms and messages. It defines some data as constant # variables. Terms in the database are obtained from $data_system. #============================================================================== module Vocab # Party def self.party return "Party" end end #============================================================================== # ** End Vocab #------------------------------------------------------------------------------ ############################################################################### #============================================================================== # ** Scene_File #------------------------------------------------------------------------------ # This class performs the save and load screen processing. #============================================================================== class Scene_File < Scene_Base #-------------------------------------------------------------------------- # * Return to Original Screen #-------------------------------------------------------------------------- def return_scene if @from_title $scene = Scene_Title.new elsif @from_event $scene = Scene_Map.new else $scene = Scene_Menu.new(5) end end end #============================================================================== # ** End Scene_File #------------------------------------------------------------------------------ ############################################################################### #============================================================================== # ** Scene_End #------------------------------------------------------------------------------ # This class performs game end screen processing. #============================================================================== class Scene_End < Scene_Base #-------------------------------------------------------------------------- # * Return to Original Screen #-------------------------------------------------------------------------- def return_scene $scene = Scene_Menu.new(6) end end #============================================================================== # ** End Scene_End #------------------------------------------------------------------------------ ###############################################################################
#============================================================================== # ** Scene_Menu #------------------------------------------------------------------------------ # This class performs the menu screen processing. #============================================================================== class Scene_Menu < Scene_Base #-------------------------------------------------------------------------- # * Create Command Window #-------------------------------------------------------------------------- def create_command_window s1 = Vocab::item s2 = Vocab::skill s3 = Vocab::equip s4 = Vocab::status s5 = Vocab::party s6 = Vocab::save s7 = Vocab::game_end @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7]) @command_window.index = @menu_index if $game_party.members.size == 0 # If number of party members is 0 @command_window.draw_item(0, false) # Disable item @command_window.draw_item(1, false) # Disable skill @command_window.draw_item(2, false) # Disable equipment @command_window.draw_item(3, false) # Disable status @command_window.draw_item(4, false) # Disable party end if $game_system.save_disabled # If save is forbidden @command_window.draw_item(5, false) # Disable save end end #-------------------------------------------------------------------------- # * Update Command Selection #-------------------------------------------------------------------------- def update_command_selection if Input.trigger?(Input::B) Sound.play_cancel $scene = Scene_Map.new elsif Input.trigger?(Input::C) if $game_party.members.size == 0 and @command_window.index < 5 Sound.play_buzzer return elsif $game_system.save_disabled and @command_window.index == 5 Sound.play_buzzer return end Sound.play_decision case @command_window.index when 0 # Item $scene = Scene_Item.new when 1,2,3 # Skill, equipment, status start_actor_selection when 4 # End Game $scene = Scene_Party.new(true, false) when 5 # Save $scene = Scene_File.new(true, false, false) when 6 # End Game $scene = Scene_End.new end end end end #============================================================================== # ** End Scene_Menu #------------------------------------------------------------------------------ What I fix is that the party will at least need one member in the party every time. To call it from map now,you'll need to write this,since I modified it : CODE $scene = Scene_Party(false, true) And,for menu,it already provided in the script in this post. (-`◡◡´-)cheers,puppeto4.  Thank you! So, is this new fix a 1 file thing? Cause I've tried to copy and paste this new one, and Im getting errors I didn't get before. Is this file replacing all of Scene_Menu or..? Feel kind of silly asking 'bout this; I can usually figure it out.
This post has been edited by Avarant87: May 18 2008, 11:20 AM
__________________________
|
|
|
|
|
|
|
|
|
May 18 2008, 11:21 AM
|
Level 1

Group: Member
Posts: 11
Type: Event Designer
RM Skill: Skilled

|
QUOTE (Elighja @ May 18 2008, 10:22 AM)  Okay is this to select your main character or to arrange party members? You could essentially use it as both I guess.
__________________________
|
|
|
|
|
|
|
|
|
May 18 2008, 02:36 PM
|
Level 2

Group: Member
Posts: 19
Type: Event Designer
RM Skill: Skilled

|
QUOTE (puppeto4 @ May 17 2008, 01:13 AM)   No,no,you are almost there. Ok,you use an event which run with autorun trigger, right? At the end of the first page of the event, put "Control Self Switch # On" Then, make a second page for the event. In that page tick "Self Switch # On" for the condition and don't put anything on that page(event graphic,command or whatever). And don't use autorun trigger for this page,instead use action trigger only. cheers,puppeto4.  Cool, it works now! Thanks puppet!
|
|
|
|
|
|
|
|
  |
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:
RPG RPG Revolution is an Privacy
Policy and Legal
|
|