Partagez
Aller en bas
Rat
Rat
Membre

Nombre de messages : 84
Age : 30
Distinction : aucune
Date d'inscription : 23/03/2008

Actor Builder v0.9 Empty Actor Builder v0.9

le Lun 10 Nov 2008 - 19:57
Bonjour alors j'ai trouver ce script plus que fort interessant sur la communaute de rpg evolutions, alors j'ai penser que le mettre ici serait une bonne idee

Auteur:(Si j'ai bien compris) cmpsr2000 a la demande de l'un de leur menbre .
Les explications sont normalement fournit avec les script, mais sont en anglais!


Consiste en : A cree votre hero, de l'avatar, au sex, de la class et de la race, ainsi que le reste des menbres de votre équipe.

Il faut crée 2 script dans material, au-dessus du main.

1er : Window_Build_Actor
Spoiler:
Code:

#=================================
#
#                http://www.rpgmakervx-fr.com/
#
#=================================


class Window_Build_Actor < Window_Selectable

  attr_reader :finished
 
  def initialize(x, y, width, height, actorIDs)
    super(x, y, width, height)
    @column_max      = 1
    @item_max        = 4
    @yOffset          = 0
    @xOffset          = 0
    @leftMarginStart  =((4 - actorIDs.length) * 60) - 88
    @actorIndex      = 0
    @actorIDs        = actorIDs
    @faceNumber      = 1
    @faceNames        = []
    @faceIndices      = []
    @finished        = false
    self.index        = 0
   
    #Change these to change the icons for the left and right arrows!
    @rightIcon        = 218
    @leftIcon        = 222
   
    initGenders
    initRaces
    initActorData
    buildFaceArrays
    refresh
  end
 
  def initActorData
    @data = []
    for x in 0..3
      @data[0 + (x * 5)] = @actorFiles[0]
      @data[1 + (x * 5)] = 0
      @data[2 + (x * 5)] = 1
      @data[3 + (x * 5)] = 0
      @data[4 + (x * 5)] = 1
    end
  end
 
  def initRaces
    @raceNames  = [ #Comment out races you don't want to include!
                    #(or make your own). make sure to update the list below!
                "Human",
                "Elf",
                "Dwarf",
                "Undead",
                "Demon",
                "Other"
                ]
    #-----------------------------------------------------------------------
    #0 is human, 1 is elf, etc. if you customized your races above make sure
    #to update the numbers here or it won't filter right!
    #again, comment out the line if you are not alowing choices from the
    #coresponding file
    #-----------------------------------------------------------------------
    @races      = [#Actor1 Races
                  0, 0, 0, 0, 0, 0, 0, 0,
                 
                  #Actor2 Races
                  0, 0, 0, 0, 0, 0, 0, 0,
                 
                  #Actor3 Races
                  0, 0, 0, 0, 1, 1, 2, 5,
                 
                  #Evil Races
                  0, 0, 0, 0, 0, 0, 0, 0,
                 
                  #Monster Races
                  3, 3, 4, 4, 4, 4, 3, 4,
                 
                  #People1 Races
                  0, 0, 0, 0, 0, 0, 0, 0,
                 
                  #People2 Races
                  0, 0, 0, 0, 0, 0, 0, 0,
                 
                  #People3 Races
                  0, 0, 0, 0, 0, 0 ,0, 0,
                 
                  #People4 Races
                  0, 0, 0, 0, 0, 0, 0, 0,
                 
                  #Spiritual Races
                  1, 1, 1, 0, 5, 5, 5, 5
                  ]
  end
 
  def initGenders
    @actorFiles =  [ #to hide a file, comment out the line!
                      "Actor1",
                      "Actor2",
                      "Actor3",
                      "Evil",
                      "Monster",
                      "People1",
                      "People2",
                      "People3",
                      "People4",
                      "Spiritual"
                      ]
    #-----------------------------------------------------------------------
    #1 is male, 0 is female. bonus points if you get the sexual reference ;)
    #again, comment out the line if you are not alowing choices from the
    #corrosponding file
    #-----------------------------------------------------------------------
    @genders = [  #Actor1 Genders
                  1, 0, 1, 0, 1, 0, 1, 1,
                 
                  #Actor2 Genders
                  1, 0, 1, 0, 1, 0, 1, 0,
                 
                  #Actor3 Genders
                  1, 0, 1, 0, 1, 0, 1, 0,
                 
                  #Evil Genders
                  1, 1, 1, 1, 1, 1, 1, 1,
                 
                  #Monster Genders
                  1, 1, 1, 1, 1, 0, 0, 0,
                 
                  #People1 Genders
                  1, 0, 1, 0, 1, 0, 1, 0,
                 
                  #People2 Genders
                  1, 0, 1, 1, 1, 0, 1, 0,
                 
                  #People3 Genders
                  0, 1, 0, 1, 1, 0 ,1, 0,
                 
                  #People4 Genders
                  1, 0, 1, 0, 1, 1, 1, 1,
                 
                  #Spiritual Genders
                  0, 0, 0, 0, 0, 0, 0, 1
                  ]
    @genderNames = ["Female", "Male"]
  end
 
  def refresh
    self.contents.clear
    drawCharacterInfo
  end
 
  def update
    if cursor_movable?
      last_index = @index
      if Input.repeat?(Input::DOWN)
        cursor_down(Input.trigger?(Input::DOWN))
        refreshNeeded = true
      end
      if Input.repeat?(Input::UP)
        cursor_up(Input.trigger?(Input::UP))
        refreshNeeded = true
      end
      if Input.repeat?(Input::RIGHT)
        changeParameter(0)
        refreshNeeded = true
      end
      if Input.repeat?(Input::LEFT)
        changeParameter(1)
        refreshNeeded = true
      end
      if Input.repeat?(Input::R)
        cursor_pagedown
        refreshNeeded = true
      end
      if Input.repeat?(Input::L)
        cursor_pageup
        refreshNeeded = true
      end
      if Input.trigger?(Input::C)
        if @choosingParty
          if @index == 0
            exitScene
          else
            @choosingParty = false
            @actorIndex = @actorIDs.length - 1
          end
        else
          @actorIndex += 1
          if @actorIndex > @actorIDs.length - 1
            @actorIndex = @actorIDs.length - 1
            @choosingParty = true
          else
            @faceNumber = 1
          end
        end
        refreshNeeded = true
      end
      if Input.trigger?(Input::B)
        @actorIndex -= 1
        refreshNeeded = true
        if @actorIndex < 0
          @actorIndex = 0
          refreshNeeded = false
        end
      end
      if @index != last_index
        Sound.play_cursor
      end
    end
    update_cursor
    refresh if refreshNeeded
  end
 
  def actorDataIndex
    return @actorIndex * 5
  end
 
  def item_rect(index)
    rect = Rect.new(0, 0, 0, 0)
    rect.width = 108
    rect.height = WLH
    rect.x = (index % @column_max * (rect.width + @spacing)) + @xOffset
    rect.y = (index / @column_max * WLH) + @yOffset
    return rect
  end
 
  def changeParameter(direction)
    case @index
    when 0
      buildFaceArrays
      changeFace(direction)
    when 1
      changeGender(direction)
    when 2
      changeRace(direction)
    when 3
      changeClass(direction)
    end
  end
 
  def buildFaceArrays
    @faceNames.clear
    @faceIndices.clear
    gender      = @data[2 + actorDataIndex]
    race        = @data[3 + actorDataIndex]
    totalFaces  = @races.length - 1
    for x in 0..totalFaces
      if @races[x] == race and @genders[x] == gender
        face_name = @actorFiles[x / 8]
        @faceNames.push(face_name)
        @faceIndices.push(x)
      end
    end
    if @faceNames.length < 1
      changeGender(0)
    end
  end
 
  def changeFace(direction)
    lastFace = @faceNumber - 1
    index = 0
    case direction
    when 0 #right
      #if it's the same set of faces, just move up one otherwise do nothing
      #(thus allowing index to be reset to 0)
      for x in 0..(@faceIndices.length - 1)
        if @faceIndices[x] == lastFace
          index = x + 1
          if index > (@faceIndices.length - 1)
            index = @faceIndices.length - 1
            Sound.play_buzzer
          end
        end
      end
      faceIndex = @faceIndices[index]
      @faceNumber = faceIndex + 1
      @data[0 + actorDataIndex] = @actorFiles[faceIndex / 8]
      @data[1 + actorDataIndex] = faceIndex % 8
    when 1 #left
      #if it's the same set of faces, just move down one otherwise do nothing
      #(thus allowing index to be reset to 0)
      for x in 0..(@faceIndices.length - 1)
        if @faceIndices[x] == lastFace
          index = x - 1
          if index < 0
            index = 0
            Sound.play_buzzer
          end
        end
      end
      faceIndex = @faceIndices[index]
      @faceNumber = faceIndex + 1
      @data[0 + actorDataIndex] = @actorFiles[faceIndex / 8]
      @data[1 + actorDataIndex] = faceIndex % 8
    end
  end
 
  def changeGender(direction)
    genderChanged = false
    gender = @data[2 + actorDataIndex]
    case direction
    when 0
      if gender == 1
        Sound.play_buzzer
      else
        gender = 1
        genderChanged = true
      end
    when 1
      if gender == 0
        Sound.play_buzzer
      else
        genderChanged = true
        gender = 0
      end
    end
    if genderChanged
      @data[2 + actorDataIndex] = gender
      buildFaceArrays
      changeFace(direction)
    end
  end
   
  def changeRace(direction)
    raceChanged = true
    race = @data[3 + actorDataIndex]
    case direction
    when 0
      race += 1
      if race > @raceNames.length - 1
        race = @raceNames.length - 1
        raceChanged = false
        Sound.play_buzzer
      end
    when 1
      race -= 1
      if race < 0
        race = 0
        raceChanged = false
        Sound.play_buzzer
      end
    end
    if raceChanged
      @data[3 + actorDataIndex] = race
      buildFaceArrays
      changeFace(direction)
    end
  end
 
  def changeClass(direction)
    classIndex = @data[4 + actorDataIndex]
    case direction
    when 0
      classIndex += 1
      if classIndex > $data_classes.length - 1
        classIndex = $data_classes.length - 1
        Sound.play_buzzer
      end
    when 1
      classIndex -= 1
      if classIndex < 1
        classIndex = 1
        Sound.play_buzzer
      end
    end
    @data[4 + actorDataIndex] = classIndex
  end
 
  def drawCharacterInfo
    @item_max = 4
    @xOffset = @leftMarginStart #initial offset (left margin)
    @yOffset = 116
    for x in 0..@actorIndex
      @xOffset += 116 #space between characters
      face_name      = @data[0 + (x * 5)]
      face_index      = @data[1 + (x * 5)]
      gender          = @data[2 + (x * 5)]
      race            = @data[3 + (x * 5)]
      classIndex      = @data[4 + (x * 5)]
      className      = $data_classes[classIndex].name
      thisFaceNumber  = (@actorFiles.index(face_name) * 8) + face_index + 1
      face_text  = "Face " + thisFaceNumber.to_s
      draw_face(face_name, face_index, 0 + @xOffset, 16, size = 96)
      rect = item_rect(0)
      self.contents.clear_rect(rect)
      self.contents.draw_text(rect.x, rect.y, 108, WLH, face_text)
      rect = item_rect(1)
      self.contents.clear_rect(rect)
      self.contents.draw_text(rect.x, rect.y, 108, WLH, @genderNames[gender])
      rect = item_rect(2)
      self.contents.clear_rect(rect)
      self.contents.draw_text(rect.x, rect.y, 108, WLH, @raceNames[race])
      rect = item_rect(3)
      self.contents.clear_rect(rect)
      self.contents.draw_text(rect.x, rect.y, 108, WLH, className)
    end
    if @choosingParty
      endPrompt
    else
      drawArrows
    end
  end
 
  #-----------------------------------------------------------------------------
  # Draws the left/right arrows for the currently highlighted category
  #-----------------------------------------------------------------------------
  def drawArrows
    index = actorDataIndex
    rect = item_rect(@index)
    case @index
    when 0
      if @faceNumber > 1
        draw_icon(@leftIcon, rect.x - 24, rect.y)
      end
      if @faceNumber - 1 < @faceIndices[@faceIndices.length - 1]
        draw_icon(@rightIcon, rect.x + 108, rect.y)
      end
    when 1
      if @data[2 + index] == 0
        draw_icon(@rightIcon, rect.x + 108, rect.y)
      else


        draw_icon(@leftIcon, rect.x - 24, rect.y)
      end
    when 2
      if @data[3 + index] > 0
        draw_icon(@leftIcon, rect.x - 24, rect.y)
      end
      if @data[3 + index] < @raceNames.length - 1
        draw_icon(@rightIcon, rect.x + 108, rect.y)
      end
    when 3
      if @data[4 + index] > 1
        draw_icon(@leftIcon, rect.x - 24, rect.y)
      end
      if @data[4 + index] < $data_classes.length - 1
        draw_icon(@rightIcon, rect.x + 108, rect.y)
      end
    end
  end
 
  #-----------------------------------------------------------------------------
  # Draws the prompt to exit character customization
  #-----------------------------------------------------------------------------
  def endPrompt
    if @index > 1
      @index = 0
    end
    @item_max = 2
    @xOffset = 224
    @yOffset = 324
    query = "Is this party configuration correct?"
    rect = item_rect(0)
    self.contents.draw_text(100, rect.y - 24, 400, WLH, query)
    self.contents.clear_rect(rect)
    self.contents.draw_text(rect.x, rect.y, 108, WLH, "Yes")
    rect = item_rect(1)
    self.contents.clear_rect(rect)
    self.contents.draw_text(rect.x, rect.y, 108, WLH, "No")
  end
 
  def exitScene
    updateActors
    @finished = true
  end
 
  def updateActors
    for x in 0..@actorIDs.length-1
      name      = @data[0 + (x * 5)]
      index    = @data[1 + (x * 5)]
      class_id  = @data[4 + (x * 5)]
      if $data_actors[@actorIDs[x]] != nil
        $data_actors[@actorIDs[x]].class_id = class_id
        $game_actors[@actorIDs[x]].setup(@actorIDs[x])
        $game_actors[@actorIDs[x]].set_graphic(name, index, name, index)
      end
    end
  end
 
end



Dernière édition par Rat le Lun 10 Nov 2008 - 21:18, édité 4 fois
Rat
Rat
Membre

Nombre de messages : 84
Age : 30
Distinction : aucune
Date d'inscription : 23/03/2008

Actor Builder v0.9 Empty Re: Actor Builder v0.9

le Lun 10 Nov 2008 - 19:57
Suite:

2ém: Scene_Build_Actor
Spoiler:
Code:

class Scene_Build_Actor < Scene_Base

  def initialize(actorIDs,setNames = true)
    @actorIDs = actorIDs
    @setNames = setNames
  end
   
  def start
    super
    @actorIndex = 0
    @actor = $game_actors[@actorIDs[@actorIndex]]
    @maxNameLength = 10
    create_menu_background
    @viewport = Viewport.new(0, 0, 544, 416)
    @build_actor_window = Window_Build_Actor.new(0, 0, 544, 416, @actorIDs)
    @name_input_window = Window_NameInput.new
    @name_edit_window = Window_NameEdit.new(@actor, @maxNameLength)
    @build_actor_window.viewport  = @viewport
    @name_input_window.viewport  = @viewport
    @name_edit_window.viewport    = @viewport
    @name_input_window.active    = false
    @name_input_window.visible    = false
    @name_edit_window.active      = false
    @name_edit_window.visible    = false
    @build_actor_window.active    = true
  end
 
  def update
    super
    update_menu_background
    @build_actor_window.update
    if @build_actor_window.finished
      if @setNames
        updateNames
      else return_scene
      end
    end
  end
 
  def updateNames
    @build_actor_window.active    = false
    @name_input_window.visible    = true
    @name_input_window.active    = true
    @name_edit_window.visible    = true
    @name_edit_window.active      = true
    @name_input_window.update
    @name_edit_window.update
    if Input.repeat?(Input::B)
      if @name_edit_window.index > 0            # Not at the left edge
        Sound.play_cancel
        @name_edit_window.back
      end
    elsif Input.trigger?(Input::C)
      if @name_input_window.is_decision          # If cursor is positioned on [OK]
        if @name_edit_window.name == ""          # If name is empty
          @name_edit_window.restore_default      # Return to default name
          if @name_edit_window.name == ""
            Sound.play_buzzer
          else
            Sound.play_decision
          end
        else
          Sound.play_decision
          @actor.name = @name_edit_window.name  # Change actor name
          if @actorIndex == @actorIDs.length - 1
            return_scene
          else
            @actorIndex += 1
            @actor = $game_actors[@actorIDs[@actorIndex]]
            @name_edit_window = Window_NameEdit.new(@actor, @maxNameLength)
          end
        end
      elsif @name_input_window.character != ""  # If text characters are not empty
        if @name_edit_window.index == @name_edit_window.max_char    # at the right edge
          Sound.play_buzzer
        else
          Sound.play_decision
          @name_edit_window.add(@name_input_window.character)      # Add text character
        end
      end
    end
  end

 
  #--------------------------------------------------------------------------
  # * Termination Processing
  #--------------------------------------------------------------------------
  def terminate
    super
    dispose_menu_background
    @viewport.dispose
    @build_actor_window.dispose
    @name_edit_window.dispose
    @name_input_window.dispose
  end
  #--------------------------------------------------------------------------
  # * Return to Original Screen
  #--------------------------------------------------------------------------
  def return_scene
    $scene = Scene_Map.new
  end
end

Pour appeler le script fait :

Appeler un script :

POur le premier personnage:

actors = [1]
$scene = Scene_Build_Actor.new(actors,
false)

ou

Pour les 2 a 4em personnages:

actors = [2,3,4]
$scene = Scene_Build_Actor.new(actors)

En faite il faut modifier:

actors = [x] et remplace le x par le numero de l'acteur dans la data.

Voila, en esperant que vous ayez compris.
Kopa 91
Kopa 91
Membre

Nombre de messages : 98
Age : 23
Localisation : France , Essonne 91
Distinction : aucune
Date d'inscription : 06/02/2008
http://gto-shonan-14-days-fan.e-monsite.com/

Actor Builder v0.9 Empty Re: Actor Builder v0.9

le Sam 15 Nov 2008 - 16:18
Sa a l'air génial , mais :

Actor Builder v0.9 Sans_t15
Rat
Rat
Membre

Nombre de messages : 84
Age : 30
Distinction : aucune
Date d'inscription : 23/03/2008

Actor Builder v0.9 Empty Re: Actor Builder v0.9

le Sam 15 Nov 2008 - 17:33
Hum c'est bizarre je n'ai pas cette erreur, car normalement a la ligne 397 et bien c'est vide, regarde si il n'y a pas d'élément écrit a cette ligne.
Arayashiki
Arayashiki
Membre

Nombre de messages : 655
Age : 29
Localisation : Trois lettres me demangent. Oserai-je ?
Distinction : FUCKING nouveau dieu du mal. Gros connard en chef.
Date d'inscription : 18/08/2008

Actor Builder v0.9 Empty Re: Actor Builder v0.9

le Sam 15 Nov 2008 - 17:49
je parie dix de mes points en script qu'il a oublié le end de fin.
Kopa 91
Kopa 91
Membre

Nombre de messages : 98
Age : 23
Localisation : France , Essonne 91
Distinction : aucune
Date d'inscription : 06/02/2008
http://gto-shonan-14-days-fan.e-monsite.com/

Actor Builder v0.9 Empty Re: Actor Builder v0.9

le Ven 21 Nov 2008 - 19:13
Désolé Arayashiki mais je n'ai pas oublié les "end" ! Actor Builder v0.9 409170 !
avatar
Az'
Membre

Nombre de messages : 3317
Age : 74
Date d'inscription : 22/12/2007

Actor Builder v0.9 Empty Re: Actor Builder v0.9

le Ven 21 Nov 2008 - 19:28
Rajoutes-en un, ne te pose pas tant de question, fais des essais...
Berka
Berka
Administrateur

Nombre de messages : 1832
Age : 29
Localisation : Paris
Distinction : rubyste déglingué
9ème dan en scripting-no-jutsu

Nouveau Justine Beber ;P
Date d'inscription : 16/12/2007
http://rpgruby.olympe-network.com

Actor Builder v0.9 Empty Re: Actor Builder v0.9

le Ven 21 Nov 2008 - 21:33
remplace la ligne 382 par:
Code:
      thisFaceNumber = (@actorFiles.index(face_name) *8)  + face_index + 1
un Cool s'est glissé
Kopa 91
Kopa 91
Membre

Nombre de messages : 98
Age : 23
Localisation : France , Essonne 91
Distinction : aucune
Date d'inscription : 06/02/2008
http://gto-shonan-14-days-fan.e-monsite.com/

Actor Builder v0.9 Empty Re: Actor Builder v0.9

le Ven 21 Nov 2008 - 22:04
Merci berka ca marche à présent !
Widowan
Widowan
Fondateur
Nombre de messages : 1435
Age : 37
Localisation : France
Distinction : Sergent
Tyran professionnel
Date d'inscription : 15/12/2007
https://www.rpgmakervx-fr.com

Actor Builder v0.9 Empty Re: Actor Builder v0.9

le Ven 21 Nov 2008 - 23:05
Merci Le Rat, ca a l'air sympa x)
Pensez à mettre des balises [code] pour éviter le désagrément la prochaine fois.

_________________
"Si le monde appartiens à ceux qui se lèvent tôt, et si le royaume des cieux est destiné aux simples d'esprit, alors j'essaye juste de squatter un peu..."
Rat
Rat
Membre

Nombre de messages : 84
Age : 30
Distinction : aucune
Date d'inscription : 23/03/2008

Actor Builder v0.9 Empty Re: Actor Builder v0.9

le Sam 22 Nov 2008 - 10:25
OK, j'y penserai la prochaine fois Smile
Samuel
Samuel
Membre

Nombre de messages : 16
Age : 29
Localisation : Québec, Canada
Distinction : aucune
Date d'inscription : 23/11/2008

Actor Builder v0.9 Empty Re: Actor Builder v0.9

le Jeu 27 Nov 2008 - 3:13
Le script est vraiment super, mais il ne change pas l'apparence du personnage et sa j'ai trouver sa triste. Peut-être ajouter un truc pour que sa le fasse. Wink
leo99
leo99
Membre

Nombre de messages : 95
Localisation : Dans Espritland avec les dieux
Distinction : aucune
Date d'inscription : 29/05/2010

Actor Builder v0.9 Empty Re: Actor Builder v0.9

le Mer 9 Juin 2010 - 15:35
Comment on fait si on veut supprimer les classes dispos ?
Dudu'
Dudu'
Staffeux retraité

Nombre de messages : 2060
Age : 28
Distinction : Apprenti KGB-boy en avenir
[Coco' Smile]
Hamsterphile de service ^^
[Balby' le Fake]
Grand prof de la MA
[Skillo]
Ce grand programmateur, mon coeur, ma vie ! [Hamu']
Date d'inscription : 22/06/2009

Actor Builder v0.9 Empty Re: Actor Builder v0.9

le Mer 9 Juin 2010 - 18:19
Wha nécro d'un ans est demie
sinon pk tu veux supprimer les Methode dispose?
ZangtherOld
ZangtherOld
Membre

Nombre de messages : 1711
Date d'inscription : 07/08/2009

Actor Builder v0.9 Empty Re: Actor Builder v0.9

le Mer 9 Juin 2010 - 19:28
Methodes ??

Je pense qu'il parle de classe de personnage xD

Pour les classes, je pense que ce sont ce qui est appellé races dans le script. Faut que tu modifier a cet endroit la.


PS : Nécro de 2 ans entre nous ^^, Nov 2008
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum