Ok I love the character select script made by MogHunter,but the the only thing that sucks is that in this script it lets you choose characters in an awesome way, but when you bring up the choices it loads all actors in the database I was wondering if some one could edit it to where I can choose which characters in the database I want to use.
You can download the script and its demo here I do not own any of the contents of this demo.
http://www.atelier-rgss.com/RGSS/Menu/ACE_Menu07.html
I translated the the green text to english here.
http://pastebin.com/dkWARn49
Charcter Select
● ARCHIVED · READ-ONLY
-
-
Edit the array in the module for the actors you want to appear in the character select scene, I think its working properly but it's nearly 4 am here so there might be something I missed.SpoilerCode:
#============================================================================== # +++ MOG - Scene Character Select V1.0 +++ #============================================================================== # By Moghunter # http://www.atelier-rgss.com/ #============================================================================== # Tela de seleção de personagens. #============================================================================== # 1 - Deverão conter as seguintes imagens na pasta GRAPHICS/SYSTEM. # # Background # Char_Layout01 # Char_Layout02 # Char_Status_Layout # Number_Char # # 2 - Imagem de pose. (Opcional) # Para ativar a imagem de pose dos personagens, basta ter os arquivos de pose # gravados na pasta (GRAPHICS/PICTURES) # Você deverá nomear as imagens da seguinte forma. # # Character + ID_DO_PERSONAGEM # # Exemplo: # # Character1.png # #============================================================================== # Para chamar o script use o seguinte comando. # # SceneManager.call(Scene_Character_Select) # #============================================================================== # Edited by Xypher # # Change the array in the below module to include the actor's you want # in the character select scene. # #============================================================================== module CS_Setup Actors_array = [1, 2, 3, 4, 5, 6] end #============================================================================== # ■ Window_Base #============================================================================== class Window_Base < Window #-------------------------------------------------------------------------- # ● draw_picture_number(x,y,value,file_name,align, space, frame_max ,frame_index) #-------------------------------------------------------------------------- # X - Posição na horizontal # Y - Posição na vertical # VALUE - Valor Numérico # FILE_NAME - Nome do arquivo # ALIGN - Centralizar 0 - Esquerda 1- Centro 2 - Direita # SPACE - Espaço entre os números. # FRAME_MAX - Quantidade de quadros(Linhas) que a imagem vai ter. # FRAME_INDEX - Definição do quadro a ser utilizado. #-------------------------------------------------------------------------- def draw_picture_number(x,y,value, file_name,align = 0, space = 0, frame_max = 1,frame_index = 0) number_image = Cache.system(file_name) frame_max = 1 if frame_max < 1 frame_index = frame_max -1 if frame_index > frame_max -1 align = 2 if align > 2 cw = number_image.width / 10 ch = number_image.height / frame_max h = ch * frame_index number = value.abs.to_s.split(//) case align when 0 plus_x = (-cw + space) * number.size when 1 plus_x = (-cw + space) * number.size plus_x /= 2 when 2 plus_x = 0 end for r in 0..number.size - 1 number_abs = number[r].to_i number_rect = Rect.new(cw * number_abs, h, cw, ch) self.contents.blt(plus_x + x + ((cw - space) * r), y , number_image, number_rect) end number_image.dispose end #-------------------------------------------------------------------------- # ● draw_char_window_status #-------------------------------------------------------------------------- def draw_char_window_status(x,y) image = Cache.system("Char_Status_Layout") cw = image.width ch = image.height src_rect = Rect.new(0, 0, cw, ch) self.contents.blt(x , y , image, src_rect) image.dispose end end #=============================================================================== # ■ RPG_FileTest #=============================================================================== module RPG_FileTest #-------------------------------------------------------------------------- # ● RPG_FileTest.system_exist? #-------------------------------------------------------------------------- def RPG_FileTest.system_exist?(filename) return Cache.system(filename) rescue return false end #-------------------------------------------------------------------------- # ● RPG_FileTest.picture_exist? #-------------------------------------------------------------------------- def RPG_FileTest.picture_exist?(filename) return Cache.picture(filename) rescue return false end end #============================================================================== # ** Window_Character_Status #============================================================================== class Window_Character_Status < Window_Base attr_accessor :index #-------------------------------------------------------------------------- # ● initialize #-------------------------------------------------------------------------- def initialize(actor) super(0, 0, 400, 130) self.opacity = 0 actor_id = [] @index = actor CS_Setup::Actors_array.each do |i| actor_id.push($game_actors[i]) end @actor = actor_id[actor -1] refresh end #-------------------------------------------------------------------------- # ● Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear self.contents.font.bold = true self.contents.font.italic = true draw_char_window_status(0, 6) draw_actor_face(@actor, 0, 0) draw_actor_name(@actor, 140, -5) draw_actor_class(@actor, 60, 70) draw_picture_number(155,20,@actor.mhp, "Number_char",1) draw_picture_number(145,48,@actor.mmp, "Number_char",1) draw_picture_number(228,28,@actor.atk, "Number_char",1) draw_picture_number(297,28,@actor.def, "Number_char",1) draw_picture_number(207,68,@actor.mat, "Number_char",1) draw_picture_number(277,68,@actor.agi, "Number_char",1) end end #============================================================================== # ■ Scene Character Select #============================================================================== class Scene_Character_Select #-------------------------------------------------------------------------- # ● Initialize #-------------------------------------------------------------------------- def initialize setup create_layout create_window_status create_char_image reset_position(0) end #-------------------------------------------------------------------------- # ● Setup #-------------------------------------------------------------------------- def setup @char_index = 1 @char_max = CS_Setup::Actors_array.size @pw_x = 300 @aw_x = 200 @nw_x = 100 end #-------------------------------------------------------------------------- # ● Main #-------------------------------------------------------------------------- def main Graphics.transition execute_loop execute_dispose end #-------------------------------------------------------------------------- # ● Execute Loop #-------------------------------------------------------------------------- def execute_loop loop do Graphics.update Input.update update if SceneManager.scene != self break end end end #-------------------------------------------------------------------------- # ● create_background #-------------------------------------------------------------------------- def create_layout @background = Plane.new @background.bitmap = Cache.system("Background") @background.z = 0 @layout_01 = Sprite.new @layout_01.bitmap = Cache.system("Char_Layout01") @layout_01.z = 10 @layout_02 = Sprite.new @layout_02.bitmap = Cache.system("Char_Layout02") @layout_02.blend_type = 1 @layout_02.z = 1 end #-------------------------------------------------------------------------- # ● create_window_status #-------------------------------------------------------------------------- def create_window_status @window_status = [] for i in 1..CS_Setup::Actors_array.size @window_status[i] = Window_Character_Status.new(i) @window_status[i].z = 7 end check_active_window end #-------------------------------------------------------------------------- # ● create_window_status #-------------------------------------------------------------------------- def create_char_image @actor_picture = [] actor_id = [] hrm = 1 #~ for i in 1..CS_Setup::Actors_array.size CS_Setup::Actors_array.each do |i| actor_id.push($game_actors[i]) actor = actor_id[i - 1] @actor_picture[hrm] = Sprite.new file_name = "Character" + i.to_s file_name = "" unless RPG_FileTest.picture_exist?(file_name) @actor_picture[hrm].bitmap = Cache.picture(file_name) hrm += 1 end check_active_picture end #-------------------------------------------------------------------------- # ● check_active_window #-------------------------------------------------------------------------- def check_active_window for i in 1..CS_Setup::Actors_array.size @pw = @char_index - 1 @pw = 1 if @pw > @char_max @pw_y = 32 @pw = @char_max if @pw < 1 @aw = @char_index @aw_y = 160 @nw = @char_index + 1 @nw = 1 if @nw > @char_max @nw = @char_max if @nw < 1 @nw_y = 288 case @window_status[i].index when @pw,@aw,@nw @window_status[i].visible = true else @window_status[i].visible = false end end end #-------------------------------------------------------------------------- # ● check_active_picture #-------------------------------------------------------------------------- def check_active_picture for i in 1..CS_Setup::Actors_array.size case @window_status[i].index when @pw,@aw,@nw @actor_picture[i].visible = true @actor_picture[@pw].z = 4 @actor_picture[@aw].z = 6 @actor_picture[@nw].z = 4 @actor_picture[@pw].opacity = 120 @actor_picture[@aw].opacity = 255 @actor_picture[@nw].opacity = 120 else @actor_picture[i].visible = false end end end #-------------------------------------------------------------------------- # ● terminate #-------------------------------------------------------------------------- def execute_dispose RPG::BGM.fade(2500) Graphics.fadeout(60) Graphics.wait(40) RPG::BGM.stop for i in 1..CS_Setup::Actors_array.size @window_status[i].dispose @actor_picture[i].bitmap.dispose @actor_picture[i].dispose end @background.bitmap.dispose @background.dispose @layout_01.bitmap.dispose @layout_01.dispose @layout_02.bitmap.dispose @layout_02.dispose end #-------------------------------------------------------------------------- # ● update #-------------------------------------------------------------------------- def update @background.ox += 1 update_select update_slide_window update_slide_image end #-------------------------------------------------------------------------- # ● update_slide_window #-------------------------------------------------------------------------- def update_slide_window @window_status[@aw].x += 1 if @window_status[@aw].x < 0 @window_status[@nw].x -= 2 if @window_status[@nw].x > -30 @window_status[@pw].x -= 2 if @window_status[@pw].x > -30 slide_window_y(@pw,@pw_y) slide_window_y(@aw,@aw_y) slide_window_y(@nw,@nw_y) end #-------------------------------------------------------------------------- # ● update_slide_image #-------------------------------------------------------------------------- def update_slide_image slide_picture_x(@pw,@pw_x,15) slide_picture_x(@aw,@aw_x,5) slide_picture_x(@nw,@nw_x,15) end #-------------------------------------------------------------------------- # ● slide_picture_x #-------------------------------------------------------------------------- def slide_picture_x(i,x_pos,speed) if @actor_picture[i].x < x_pos @actor_picture[i].x += speed @actor_picture[i].x = x_pos if @actor_picture[i].x > x_pos end if @actor_picture[i].x > x_pos @actor_picture[i].x -= speed @actor_picture[i].x = x_pos if @actor_picture[i].x < x_pos end end #-------------------------------------------------------------------------- # ● slide_window_y #-------------------------------------------------------------------------- def slide_window_y(i,y_pos) if @window_status[i].y < y_pos @window_status[i].y += 15 @window_status[i].y = y_pos if @window_status[i].y > y_pos end if @window_status[i].y > y_pos @window_status[i].y -= 15 @window_status[i].y = y_pos if @window_status[i].y < y_pos end end #-------------------------------------------------------------------------- # ● reset_position #-------------------------------------------------------------------------- def reset_position(diretion) check_active_window check_active_picture case diretion when 0 @window_status[@pw].y = -64 @actor_picture[@pw].x = 100 when 1 @window_status[@nw].y = 440 @actor_picture[@nw].x = 400 end end #-------------------------------------------------------------------------- # ● update_select #-------------------------------------------------------------------------- def update_select if Input.trigger?(Input::DOWN) or Input.trigger?(Input::LEFT) Sound.play_cursor @char_index += 1 @char_index = 1 if @char_index > @char_max if @char_max < 3 reset_position(0) else reset_position(1) end elsif Input.trigger?(Input::UP) or Input.trigger?(Input::RIGHT) Sound.play_cursor @char_index -= 1 @char_index = @char_max if @char_index < 1 reset_position(0) elsif Input.trigger?(Input::C) Sound.play_ok $game_party.add_actor(@char_index) SceneManager.return end end end $mog_rgss3_scene_character_select = true -
Thanks a million we both are so happy now we can do more with this.
-
Annyone got a screen of ho it looks?
-
Screen shot just try the demo in the first link.
