RPG Creator : créez votre MMORPG ou RPG sans aucune connaissance en programmation


Disponible le 4 Juin !




- Jouez à votre jeu sur tablettes tactiles, Smartphones et navigateurs Web
- Personnalisez vos menus
- Dessinez facilement et rapidement vos cartes
- Créez des actions pour le combat A-RPG


www.rpgcreator.net


Heures au format UTC + 1 heure [ Heure d’été ]


Règles du forum


Consultez la liste des Scripts : cliquez ici



Publier un nouveau sujet Répondre au sujet  [ 5 messages ] 
Auteur Message
 Sujet du message: Menu pour plus de 4 héros
MessagePublié: 18 Aoû 2007, 18:18 
Ancien membre du staff
Ancien membre du staff
Avatar de l’utilisateur

Inscrit le: 11 Aoû 2006, 00:00
Messages: 1428
Niveau RPG Maker: IT'S OVER 9000!!!
Logiciel(s) préféré(s): RMXP/VX
Point(s) Fort(s): Scripts
Sexe: Masculin
Points d'aide: 26/60

Créations :

Voir ses créations

Bonjour tous le monde!

Je vous offre un petit script de menu que j'ai trouvé je ne sais plus où... (Il me semblait que c'était sur ce forum, mais je ne retrouve plus le post en question...)
Ce scripts permet d'avoir plein de héros en même temps! (Il est actuellement parametrer pour 20 héros, mais vous pouvez monter à l'infini!)
En combat, seul les 4 premiers héros combattent, mais vous pouvez changer l'ordre des héros hors combats, donc c'est bon.
J'ai un peu modifier le script, au passage. Il n'y avait pas de son lorsqu'on selectionnait les héros que l'on voulait inverser dans le menu, et il y avait un leger bug dans les battlers affichés (ils devaient à l'origine avoir le même nom que le character).

Et zou, un screen! (issue de mon jeu)
Image
(Pour le dragon jaune, il s'agit d'un autre perso se trouvant sur une ligne en dessous.)

Tout le code suivant, et ceux des posts suivant, ne forment QU'UN SEUL script. Nommée-le "Game_Party".
Code: Tout sélectionner
#=================================#
# Traduction par masterjojo.
# Modifié par Sihn
#=================================#

#==============================================================================
# ¦ Game_Party
#==============================================================================

class Game_Party
#--------------------------------------------------------------------------
# ? define instance variable
#--------------------------------------------------------------------------
attr_accessor :actors
#--------------------------------------------------------------------------
# Vous pouvez changer le nombre rouge par celui de votre
# choix: c'est le nombre max de personne pouvant integrer
# votre équipe (par défaut: 20).
#--------------------------------------------------------------------------
def add_actor(actor_id)
actor = $game_actors[actor_id]
if @actors.size < 20 and not @actors.include?(actor)
@actors.push(actor)
$game_player.refresh
end
end
end

#==============================================================================
# ¦ Window_Base
#==============================================================================

class Window_Base < Window
#--------------------------------------------------------------------------
# ? draw character's battle sprite
#--------------------------------------------------------------------------
def draw_actor_battlegraphic(actor, x, y, opacity = 255)
bitmap = RPG::Cache.battler(actor.battler_name, actor.battler_hue)
src_rect = Rect.new(0, 0, 111, 111)
self.contents.blt(x, y, bitmap, src_rect, opacity)
end
#--------------------------------------------------------------------------
# ? draw character's HP meter
#--------------------------------------------------------------------------
def draw_actor_hp_meter(actor, x, y, width = 70, type = 0)
if type == 1 and actor.hp == 0
return
end
self.contents.font.color = system_color
self.contents.fill_rect(x-1, y+27, width+2,5, Color.new(0, 0, 0, 255))
w = width * actor.hp / actor.maxhp
self.contents.fill_rect(x, y+28, w,1, Color.new(174, 68, 89, 255))
self.contents.fill_rect(x, y+29, w,1, Color.new(156, 61, 80, 255))
self.contents.fill_rect(x, y+30, w,1, Color.new(138, 53, 70, 255))
end
#--------------------------------------------------------------------------
# ? draw character's SP meter
#--------------------------------------------------------------------------
def draw_actor_sp_meter(actor, x, y, width = 70, type = 0)
if type == 1 and actor.sp == 0
return
end
self.contents.font.color = system_color
self.contents.fill_rect(x-1, y+27, width+2,5, Color.new(0, 0, 0, 255))
w = width * actor.sp / actor.maxsp
self.contents.fill_rect(x, y+28, w,1, Color.new(62, 72, 164, 255))
self.contents.fill_rect(x, y+29, w,1, Color.new(55, 65, 149, 255))
self.contents.fill_rect(x, y+30, w,1, Color.new(49, 57, 130, 255))
end
#--------------------------------------------------------------------------
# ? define method to draw squares
#--------------------------------------------------------------------------
def draw_square(x, y, width, color)
self.contents.fill_rect(x, y, width, 1, color)
self.contents.fill_rect(x, y, 1, width, color)
self.contents.fill_rect(x + width, y, 1, width + 1, color)
self.contents.fill_rect(x, y + width, width + 1, 1, color)
end
end

#==============================================================================
# ¦ Window_Gold
#------------------------------------------------------------------------------
# le texte a été remplacé par une icone
#==============================================================================

class Window_Gold < Window_Base
#--------------------------------------------------------------------------
# ? initialize
#--------------------------------------------------------------------------
def initialize
super(0, 0, 160, 64)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
refresh
end
#--------------------------------------------------------------------------
# ? refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
cx = 24
self.contents.font.color = normal_color
self.contents.draw_text(4, 0, 120-cx-2, 32, $game_party.gold.to_s, 2)
self.contents.font.color = system_color
bitmap = RPG::Cache.icon("032-Item01")
rect = Rect.new(0, 0, 24, 24)
self.contents.blt(124-cx, 0, bitmap, rect)
end
end

#==============================================================================
# ¦ Window_PlayTime
#------------------------------------------------------------------------------
# cette fenêtre a été compacté pour montrer toutes les commandes dans le menu
#==============================================================================

class Window_PlayTime < Window_Base
#--------------------------------------------------------------------------
# ? initialize
#--------------------------------------------------------------------------
def initialize
super(0, 0, 160, 64)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
refresh
end
#--------------------------------------------------------------------------
# ? refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@total_sec = Graphics.frame_count / Graphics.frame_rate
hour = @total_sec / 60 / 60
min = @total_sec / 60 % 60
sec = @total_sec % 60
text = sprintf("%02d:%02d:%02d", hour, min, sec)
self.contents.font.color = normal_color
self.contents.draw_text(4, 0, 120, 32, text, 2)
end
#--------------------------------------------------------------------------
# ? redefine update method
#--------------------------------------------------------------------------
def update
super
if Graphics.frame_count / Graphics.frame_rate != @total_sec
refresh
end
end
end

#==============================================================================
# ¦ Window_MenuStatus
#==============================================================================

class Window_MenuStatus < Window_Selectable
#--------------------------------------------------------------------------
# ? initialize
#--------------------------------------------------------------------------
def initialize
super(0, 0, 480, 480)
@column_max = 4
@item_max = $game_party.actors.size
self.contents = Bitmap.new(width - 32, row_max * 112)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize/1.2
refresh
self.active = false
self.index = -1
end

_________________
Image
- Scripteur à la retraite -


Haut
 Profil  
 
 Sujet du message: Re: Menu pour plus de 4 héros
MessagePublié: 18 Aoû 2007, 18:19 
Ancien membre du staff
Ancien membre du staff
Avatar de l’utilisateur

Inscrit le: 11 Aoû 2006, 00:00
Messages: 1428
Niveau RPG Maker: IT'S OVER 9000!!!
Logiciel(s) préféré(s): RMXP/VX
Point(s) Fort(s): Scripts
Sexe: Masculin
Points d'aide: 26/60

Créations :

Voir ses créations

Code: Tout sélectionner
#--------------------------------------------------------------------------
# ? refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
for i in 0...$game_party.actors.size
x = i % 4 * 112
y = i / 4 * 112
actor = $game_party.actors[i]
#dessine un carré pour séparer les characters, changer couleur transparente par ce que vous voulez
#couleur désirée... (methode pour faire un carré ci-dessous)
draw_square(x, y, 111, disabled_color)
draw_actor_battlegraphic(actor, x, y, 150)#Rep
draw_actor_graphic(actor, x + 90, y + 50)
draw_actor_name(actor, x + 5, y)
self.contents.draw_text(x + 5, y + 20, 112, 32, "HP : #{actor.hp}")
self.contents.draw_text(x + 5, y + 40, 112, 32, "MP : #{actor.sp}")
draw_actor_level(actor, x + 5, y + 60)
draw_actor_state(actor, x + 5, y + 80)
draw_actor_hp_meter(actor, x + 5, y + 17)
draw_actor_sp_meter(actor, x + 5, y + 37)
end
end
#--------------------------------------------------------------------------
# ? define the page's top row
#--------------------------------------------------------------------------
def top_row
return self.oy / 112
end
#--------------------------------------------------------------------------
# ? define the page maximum rows
#--------------------------------------------------------------------------
def page_row_max
return (self.height - 32) / 112
end
#--------------------------------------------------------------------------
# ? defines a method to change the page's top row
#--------------------------------------------------------------------------
def top_row=(row)
if row < 0
row = 0
end
if row > row_max - 1
row = row_max - 1
end
self.oy = row * 112
end
#--------------------------------------------------------------------------
# ? update the cursor movement
#--------------------------------------------------------------------------
def update_cursor_rect
if @index < 0
self.cursor_rect.empty
return
end
row = @index / @column_max
if row < self.top_row
self.top_row = row
end
if row > self.top_row + (self.page_row_max - 1)
self.top_row = row - (self.page_row_max - 1)
end
self.cursor_rect.set(@index % 4 * 112, @index / 4 * 112 - self.oy, 112, 112)
end
end


#==============================================================================
# ¦ Window_Target
#==============================================================================

class Window_Target < Window_Selectable
#--------------------------------------------------------------------------
# ? initialize
#--------------------------------------------------------------------------
def initialize
super(0, 0, 336, 480)
@column_max = 2
@item_max = $game_party.actors.size
self.contents = Bitmap.new(width - 32, row_max * 112)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize/1.2
self.z += 10
refresh
end
#--------------------------------------------------------------------------
# ? refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
for i in 0...$game_party.actors.size
x = i % 2 * 112 + 36
y = i / 2 * 112
actor = $game_party.actors[i]
#dessine un carré pour séparer les characters, changer couleur transparente par ce que vous voulez
#coleur désirée... (methode pour faire un carré ci-dessous)
draw_square(x, y, 111, disabled_color)
draw_actor_battlegraphic(actor, x, y, 150)
draw_actor_graphic(actor, x + 90, y + 50)
draw_actor_name(actor, x + 5, y)
self.contents.draw_text(x + 5, y + 20, 112, 32, "HP : #{actor.hp}")
self.contents.draw_text(x + 5, y + 40, 112, 32, "MP : #{actor.sp}")
draw_actor_level(actor, x + 5, y + 60)
draw_actor_state(actor, x + 5, y + 80)
draw_actor_hp_meter(actor, x + 5, y + 17)
draw_actor_sp_meter(actor, x + 5, y + 37)
end
end
#--------------------------------------------------------------------------
# ? define the page's top row
#--------------------------------------------------------------------------
def top_row
return self.oy / 112
end
#--------------------------------------------------------------------------
# ? define the page maximum rows
#--------------------------------------------------------------------------
def page_row_max
return (self.height - 32) / 112
end
#--------------------------------------------------------------------------
# ? defines a method to change the page's top row
#--------------------------------------------------------------------------
def top_row=(row)
if row < 0
row = 0
end
if row > row_max - 1
row = row_max - 1
end
self.oy = row * 112
end
#--------------------------------------------------------------------------
# ? update the cursor movement
#--------------------------------------------------------------------------
def update_cursor_rect
row = @index / @column_max
if row < self.top_row
self.top_row = row
end
if row > self.top_row + (self.page_row_max - 1)
self.top_row = row - (self.page_row_max - 1)
end
if @index <= -2
self.cursor_rect.empty
elsif @index == -1
self.cursor_rect.set(0, 0, self.width - 32, @item_max * 116 - 20)
else
self.cursor_rect.set(@index % 2 * 112 + 36, @index / 2 * 112 - self.oy, 112, 112)
end
end
end

#==============================================================================
# ¦ Scene_Menu
#==============================================================================

class Scene_Menu
#--------------------------------------------------------------------------
# ? initialize
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
@menu_index = menu_index
@actor_change = false
end
#--------------------------------------------------------------------------
# ? main
#--------------------------------------------------------------------------
def main
s1 = $data_system.words.item
s2 = $data_system.words.skill
s3 = $data_system.words.equip
s4 = "Statuts"
s5 = "Sauvegarder"
s6 = "Ordre"
s7 = "Quitter"
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])
@command_window.index = @menu_index
if $game_party.actors.size == 0
@command_window.disable_item(0)
@command_window.disable_item(1)
@command_window.disable_item(2)
@command_window.disable_item(3)
@command_window.disable_item(5)
end
if $game_system.save_disabled
@command_window.disable_item(4)
end
@playtime_window = Window_PlayTime.new
@playtime_window.x = 0
@playtime_window.y = 256 #224

@steps_window = Window_Steps.new
@steps_window.x = 0
@steps_window.y = 320

@gold_window = Window_Gold.new
@gold_window.x = 0
@gold_window.y = 416

@status_window = Window_MenuStatus.new
@status_window.x = 160
@status_window.y = 0

Graphics.transition

loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze

@command_window.dispose
@playtime_window.dispose
@steps_window.dispose
@gold_window.dispose
@status_window.dispose
end
#--------------------------------------------------------------------------
# ? update the windows
#--------------------------------------------------------------------------
def update
@command_window.update
@playtime_window.update
@steps_window.update
@gold_window.update
@status_window.update

if @command_window.active
update_command
return
end
if @status_window.active
update_status
return
end
end

_________________
Image
- Scripteur à la retraite -


Haut
 Profil  
 
 Sujet du message: Re: Menu pour plus de 4 héros
MessagePublié: 18 Aoû 2007, 18:20 
Ancien membre du staff
Ancien membre du staff
Avatar de l’utilisateur

Inscrit le: 11 Aoû 2006, 00:00
Messages: 1428
Niveau RPG Maker: IT'S OVER 9000!!!
Logiciel(s) préféré(s): RMXP/VX
Point(s) Fort(s): Scripts
Sexe: Masculin
Points d'aide: 26/60

Créations :

Voir ses créations

Code: Tout sélectionner
#--------------------------------------------------------------------------
# ? update the command window
#--------------------------------------------------------------------------
def update_command
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
return
end
if Input.trigger?(Input::C)
if $game_party.actors.size == 0 and @command_window.index < 4
$game_system.se_play($data_system.buzzer_se)
return
end
case @command_window.index
when 0 # Item
$game_system.se_play($data_system.decision_se)
$scene = Scene_Item.new
when 1 # Skill
$game_system.se_play($data_system.decision_se)
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 2 # Equip
$game_system.se_play($data_system.decision_se)
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 3 # Status
$game_system.se_play($data_system.decision_se)
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 4 # Save
if $game_system.save_disabled
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
$scene = Scene_Save.new
when 5 # party actors switch
$game_system.se_play($data_system.decision_se)
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 6 # End
$game_system.se_play($data_system.decision_se)
$scene = Scene_End.new
end
return
end
end
#--------------------------------------------------------------------------
# ? update the status window
#--------------------------------------------------------------------------
def update_status
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@command_window.active = true
@status_window.active = false
@status_window.index = -1
@actor_change = false
return
end
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
case @command_window.index
when 1 # Skill
if $game_party.actors[@status_window.index].restriction >= 2
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
$scene = Scene_Skill.new(@status_window.index)
when 2 # Equip
$game_system.se_play($data_system.decision_se)
$scene = Scene_Equip.new(@status_window.index)
when 3 # Status
$game_system.se_play($data_system.decision_se)
$scene = Scene_Status.new(@status_window.index)
when 5 # party actors switch
if @actor_change == true
$game_system.se_play($data_system.decision_se)
$game_party.actors[@old_index] = $game_party.actors[@status_window.index]
$game_party.actors[@status_window.index] = @new_actor
$game_player.refresh
@actor_change = false
@status_window.refresh
return
end
@old_index = @status_window.index
@new_actor = $game_party.actors[@status_window.index]
@actor_change = true
end
return
end
end
end

#==============================================================================
# ¦ Scene_Battle (Part 1)
#==============================================================================

class Scene_Battle
#--------------------------------------------------------------------------
# ? main
#--------------------------------------------------------------------------
def main
$game_temp.in_battle = true
$game_temp.battle_turn = 0
$game_temp.battle_event_flags.clear
$game_temp.battle_abort = false
$game_temp.battle_main_phase = false
$game_temp.battleback_name = $game_map.battleback_name
$game_temp.forcing_battler = nil
$game_system.battle_interpreter.setup(nil, 0)
@troop_id = $game_temp.battle_troop_id
$game_troop.setup(@troop_id)
#memorize actors in party and cut the party down to 4 actors
@party_mem = $game_party.actors
$game_party.actors = $game_party.actors[0..3]
s1 = $data_system.words.attack
s2 = $data_system.words.skill
s3 = $data_system.words.guard
s4 = $data_system.words.item
@actor_command_window = Window_Command.new(160, [s1, s2, s3, s4])
@actor_command_window.y = 160
@actor_command_window.back_opacity = 160
@actor_command_window.active = false
@actor_command_window.visible = false
@party_command_window = Window_PartyCommand.new
@help_window = Window_Help.new
@help_window.back_opacity = 160
@help_window.visible = false
@status_window = Window_BattleStatus.new
@message_window = Window_Message.new
@spriteset = Spriteset_Battle.new
@wait_count = 0
if $data_system.battle_transition == ""
Graphics.transition(20)
else
Graphics.transition(40, "Graphics/Transitions/" +
$data_system.battle_transition)
end
start_phase1
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
$game_map.refresh
Graphics.freeze
@actor_command_window.dispose
@party_command_window.dispose
@help_window.dispose
@status_window.dispose
@message_window.dispose
if @skill_window != nil
@skill_window.dispose
end
if @item_window != nil
@item_window.dispose
end
if @result_window != nil
@result_window.dispose
end
@spriteset.dispose
if $scene.is_a?(Scene_Title)
Graphics.transition
Graphics.freeze
end
if $BTEST and not $scene.is_a?(Scene_Gameover)
$scene = nil
end
end
#--------------------------------------------------------------------------
# ? battle end
#--------------------------------------------------------------------------
def battle_end(result)
$game_temp.in_battle = false
$game_party.clear_actions
for actor in $game_party.actors
actor.remove_states_battle
end
$game_troop.enemies.clear
if $game_temp.battle_proc != nil
$game_temp.battle_proc.call(result)
$game_temp.battle_proc = nil
end
$game_party.actors = @party_mem
$scene = Scene_Map.new
end
end


Voila, fin du code! Je rapelle que tous cela ne forme qu'un seul et unique script.

_________________
Image
- Scripteur à la retraite -


Haut
 Profil  
 
 Sujet du message: Re: Menu pour plus de 4 héros
MessagePublié: 24 Mar 2011, 20:11 
Artisan (Nv 3)
Avatar de l’utilisateur

Inscrit le: 12 Mar 2011, 12:35
Messages: 144
Niveau RPG Maker: Correct
Logiciel(s) préféré(s): RPG Maker XP
Point(s) Fort(s): Event',Scripts
Sexe: Masculin
Points d'aide: 1/60

Créations :

Voir ses créations

juste une question ,comment on fait en combat avec autant de héros ?

_________________
Mes points forts :
Scripts ; Scénario ; (Inventer des noms) ; Eventmaking ; Charas
Mes points faibles:
Tilesets
Image
Image


Haut
 Profil  
 
 Sujet du message: Re: Menu pour plus de 4 héros
MessagePublié: 24 Mar 2011, 20:22 
Garde
Garde
Avatar de l’utilisateur

Inscrit le: 27 Fév 2007, 01:00
Messages: 1438
Localisation: France
Niveau RPG Maker: Plutôt bon
Logiciel(s) préféré(s): RMXP
Point(s) Fort(s): Event Making
Sexe: Masculin
Points d'aide: Illimité

Créations :

Voir ses créations

Bon, je sais pas si tu as remarqué mais la moitié des problèmes que tu as sur ce forum pourraient être évités si tu lisais les messages des autres.

Si tu avais lu le premier message de cette page attentivement tu aurais vu:
Sihn a écrit:
En combat, seul les 4 premiers héros combattent, mais vous pouvez changer l'ordre des héros hors combats, donc c'est bon.

Et en plus, si tu avais un doute tu aurais pu tester toi-même tout simplement, y'en a pour 5 minutes.

_________________
« Travailler en collaboration, cela veut dire prendre la moitié de son temps à expliquer aux autres que leurs idées sont stupides. »
- Georges Molinski

« J'adore aider les gens mais je deteste aider des personnes qui n'en valent pas la peine. »
- Lidenvice


Haut
 Profil  
 
Afficher les messages depuis:  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 5 messages ] 

Heures au format UTC + 1 heure [ Heure d’été ]


Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 2 invités


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Rechercher pour:
Sauter vers:  
cron
RPG Creative Forum version 5 ; Tous droits réservés
phpBB Group (Traduit par Xaphos)
Optimisé pour une résolution 1024*728