- RatMembre
- Nombre de messages : 84
Age : 35
Distinction : aucune
Date d'inscription : 23/03/2008
Actor Builder v0.9
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
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://rpgmakervx.1fr1.net/
#
#=================================
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
- RatMembre
- Nombre de messages : 84
Age : 35
Distinction : aucune
Date d'inscription : 23/03/2008
Re: Actor Builder v0.9
Lun 10 Nov 2008 - 19:57
Suite:
2ém: Scene_Build_Actor
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.
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.
- RatMembre
- Nombre de messages : 84
Age : 35
Distinction : aucune
Date d'inscription : 23/03/2008
Re: Actor Builder v0.9
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.
- ArayashikiMembre
- Nombre de messages : 655
Age : 34
Localisation : Trois lettres me demangent. Oserai-je ?
Distinction : FUCKING nouveau dieu du mal. Gros connard en chef.
Date d'inscription : 18/08/2008
Re: Actor Builder v0.9
Sam 15 Nov 2008 - 17:49
je parie dix de mes points en script qu'il a oublié le end de fin.
Re: Actor Builder v0.9
Ven 21 Nov 2008 - 19:13
Désolé Arayashiki mais je n'ai pas oublié les "end" ! !
Re: Actor Builder v0.9
Ven 21 Nov 2008 - 21:33
remplace la ligne 382 par:
- Code:
thisFaceNumber = (@actorFiles.index(face_name) *8) + face_index + 1
Re: Actor Builder v0.9
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.
Pensez à mettre des balises [code] pour éviter le désagrément la prochaine fois.
_________________
- RatMembre
- Nombre de messages : 84
Age : 35
Distinction : aucune
Date d'inscription : 23/03/2008
Re: Actor Builder v0.9
Sam 22 Nov 2008 - 10:25
OK, j'y penserai la prochaine fois
- SamuelMembre
- Nombre de messages : 16
Age : 34
Localisation : Québec, Canada
Distinction : aucune
Date d'inscription : 23/11/2008
Re: Actor Builder v0.9
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.
- leo99Membre
- Nombre de messages : 95
Localisation : Dans Espritland avec les dieux
Distinction : aucune
Date d'inscription : 29/05/2010
Re: Actor Builder v0.9
Mer 9 Juin 2010 - 15:35
Comment on fait si on veut supprimer les classes dispos ?
- Dudu'Staffeux retraité
- Nombre de messages : 2060
Age : 33
Distinction : Apprenti KGB-boy en avenir
[Coco' ]
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
Re: Actor Builder v0.9
Mer 9 Juin 2010 - 18:19
Wha nécro d'un ans est demie
sinon pk tu veux supprimer les Methode dispose?
sinon pk tu veux supprimer les Methode dispose?
- ZangtherOldMembre
- Nombre de messages : 1711
Date d'inscription : 07/08/2009
Re: Actor Builder v0.9
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
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
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum