Partagez
Aller en bas
Rhydan
Rhydan
Membre

Nombre de messages : 249
Age : 24
Localisation : Grenoble
Distinction : aucune
Date d'inscription : 16/11/2013
https://www.youtube.com/channel/UCFGbrXwKcYmj1OZaodTXo1w

Résolu [résolu]Changement pour choix de personnage

le Dim 13 Juil 2014 - 2:09
Salut a tous !

Alors voilà mon problème, actuellement, dans mon jeu, on peu choisir entre 4 perso différent, 2 de chaque sexe avec des nom déjà prédéfini.

J'utilise pour cela, ce script :

MOG - Scene Charactere Select V1.0:
#==============================================================================
# +++ MOG - Scene Character Select V1.0 | Hidden Characters Unselectable Mod
#==============================================================================
# By Moghunter
# Hidden Characters Unselectable Mod Author: SoulPour777
# Description: Adds other characters you do not want to be seen into the
# character selection.
# http://www.atelier-rgss.com/
#==============================================================================

=begin
Notes:

The $MOG_Actor_Playable = 6 is the variable that takes how many characters
in the database you want to be shown when the character select script call
is activated. Changing the variable value would also change the number
of actors shown. Please do not edit nor change MOG_Actor_Hidden_Number's
value.
=end
class Mog_Set_Up

 def initialize
   $MOG_Actor_Playable = 6
   $MOG_Actor_Hidden_Number = $MOG_Actor_Playable + 1
 end

end


class Window_Base < Window

 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
     for i in 1...$MOG_Actor_Hidden_Number
       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
    $MOG = Mog_Set_Up.new
    @char_max = $MOG_Actor_Playable
    create_window_status
    create_char_image
    reset_position(0)      
end
 
#--------------------------------------------------------------------------
# ● Setup
#--------------------------------------------------------------------------
def setup
    @char_index = 1
    @char_max = $data_actors.size - 1
    @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...$MOG_Actor_Hidden_Number
         @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 = []
     for i in 1...$MOG_Actor_Hidden_Number  
         actor_id.push($game_actors[i])
         actor = actor_id[i - 1]
         @actor_picture[i] = Sprite.new
         file_name = "Character" + i.to_s
         file_name = "" unless RPG_FileTest.picture_exist?(file_name)
         @actor_picture[i].bitmap = Cache.picture(file_name)
     end  
     check_active_picture
 end
 #--------------------------------------------------------------------------
 # ● check_active_window
 #--------------------------------------------------------------------------  
 def check_active_window
    for i in 1...$MOG_Actor_Hidden_Number  
       @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...$MOG_Actor_Hidden_Number  
       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...$MOG_Actor_Hidden_Number  
         @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


Ce qui me donne ceci :
[résolu]Changement pour choix de personnage Charac10

Mais j'aimerais changer pour avoir un choix tel que dans les jeux "Pokémon".

Un choix "Garçon/Fille", avec pourquoi la, la possibilité de choisir un nom.

Auriez vous des scripts pour faire cela s\'il vous plaît ?


Dernière édition par Rhydan le Mer 16 Juil 2014 - 18:30, édité 1 fois
Ewaldar
Ewaldar
Membre

Nombre de messages : 1387
Age : 26
Localisation : Suisse
Distinction : aucune
Date d'inscription : 29/12/2011
http://ewaldar.wixsite.com/les-ames-perdues

Résolu Re: [résolu]Changement pour choix de personnage

le Dim 13 Juil 2014 - 8:51
Hello,

Tu n'as pas besoin de modifier le script, car tu utilises une commande de script, en sélectionnant les personnages par leur numéro IDque tu veux. Ainsi, dans un événement avant cette sélection, tu mets une condition par interrupteur que tu nommes Choix homme.

Si cet interrupteur est activé, ton perso est un homme, alors tu ne sélectionnes que les perso homme de ta base de données. Si la condition n'est pas remplie, ton perso sera une femme, tu n'indiques donc que les perso femme de ta base de données.

Pour le nom, une fois que tu as choisi ton personnage, tu as une commande te permettant de modifier le nom du personnage. Simplement définir combien de lettres disponibles et tu es bon.

Simplement, je n'utilise pas ce script, mais une version modifiée par Tsukihime : http://www.himeworks.com/2013/08/19/player-selection-mog-edition/
Rhydan
Rhydan
Membre

Nombre de messages : 249
Age : 24
Localisation : Grenoble
Distinction : aucune
Date d'inscription : 16/11/2013
https://www.youtube.com/channel/UCFGbrXwKcYmj1OZaodTXo1w

Résolu Re: [résolu]Changement pour choix de personnage

le Lun 14 Juil 2014 - 19:30
Je suis pas super doué pour tout ce qui est script >< une démo possible ?
Rhydan
Rhydan
Membre

Nombre de messages : 249
Age : 24
Localisation : Grenoble
Distinction : aucune
Date d'inscription : 16/11/2013
https://www.youtube.com/channel/UCFGbrXwKcYmj1OZaodTXo1w

Résolu Re: [résolu]Changement pour choix de personnage

le Mer 16 Juil 2014 - 18:30
Résolu par un autre moyen

[résolu]Changement pour choix de personnage Prog10

Je ne fait pas d'explication dessus mais si certain veulent utiliser ce systeme et ne comprenne pas mon screen, n'hésitez pas a me demander Smile

Contenu sponsorisé

Résolu Re: [résolu]Changement pour choix de personnage

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum