Comment faire un spécial pour vos héros estétique

La création de jeux indépendants/amateurs (tuto, entraide, questions...) sous les moteurs de la série RPG Maker.
Lemirage1998
Koruldia Warrior
Messages : 451
Localisation : Paris
Contact :

Comment faire un spécial pour vos héros estétique

Message non lu par Lemirage1998 » mar. févr. 23, 2010 6:08 pm

~~Introduction~~

Savez vous ce qu'est un spécial?
Sinon cliquez là

On va donc apprendre à en faire un qui ait de la gueule. (oui pas un petit laser nan mais alors :dent: )

Donc déjà vous devez savoir utiliser un minimum Paint ou autre Logi ( Photoshop ou Gimp sera nécessaire pour faire un beau Pop-up)

En making vous devez savoir:
Faire de belles anim' sinon j'aurai un petit tuyau qui pour vous peut être très pratique :p

Commençons!:

Etape 1, selectionner le perso (ha bon?)
J'ai choisi Tieff-01
Je fais toujours mes anims avec pour Template: Image

Donc placer bien votre perso sur toutes ses poses à la place des explosions (vous effacerez les explosions après le plaçage)

Mon résultat:
Image

Bon, à la base j'avais mis la barre dans l'anim' mais c'est une grosse erreur à ne pas faire!

1
Faites votre anim' (200 images pour un bô pouvoir :stupide: )
Image

Voilà!
(faîtes seulement 1 perso, moi j'en ai fait trois on va apprendre comment on appelle ça et son utilité)

2
Mettez les effets sonores (chaque fois qu'il touche, safaimal)

3
Alors!
Pourquoi j'ai mis 3 persos?
C'est ce que l'on appelle une "trainée" ça simbolise la vitesse du perso.
Alors, vous êtes content?
Il faut refaire toute votre aniiiim' (aaaaaaaaaaaaaaaaaaaaaaaaaaaaah!!!!!! :pleure: )

Reprenez votre anim'
Donc placer trois persos derrière celui dans l'anim en éclaircie (important sinon c'est moins estétique) vous devrez jouer avec les opacités pour plus d' estétique (important votre anim' doit pas être "trash".)

4
Les marques du coup.
Vous remarquerez une tite barre bleue dans mon anim'.
C'est important!
Ce sera la "marque du coup" (un petit exemple en screen: Image

Dans la première image où la barre apparait:
Petite et pas très visible

2ème:
Grossit, gagne de la visibilité et tourne (effet de rotation pour plus d'estétique, je fais chier avec l'estétique mais c'est très important :p)

3ème:
Reviens à la première

4ème:
Disparait.

Voilààà!
Vous avez quasiment fini votre spécial (il reste du boulot :peur: )

Maintenant il va falloir savoir "doser" le coup (qu'il tue pas le boss final au bout de trois fois quoi :happy: )

Donc je vous laisserai faire la compétence.....
Une fois fait prenez Photoshop ou Gimp et faîtes votre Pop-up: Image

L'image ne doit SURTOUT PAS dépasser les proportions suivantes: entre 60 de hauteur et 62 Largeur à 639 (obligatoire)

Une fois fini importé votre pop up.
Maintenant vous avez quasiment fini!
Une seule étape restante, l'événement commun:

Dedans vous devrez mettre: Afficher une image "pop-up" Définies par rapport au pixel central (important pour le zoom)
Au approches des coordonnées: X 320 Y 60

Sur le premier mettez:
longueur 100% hauteur 50% Opacité 162

Ensuite déplacer l'image du pop up:
toujours pixel central et même coordonnées X & Y
Longueur 100% hauteur 100% Opacité 255
(les déplacements d'images ne doivent pas être très longs car ils laguent énormément lors des combats)
Puis après ce déplacements il doit y avoir une petite attente (cf screen)
Image

Exemple: 3 frames déplacement, je la laisse 7 frames de plus (n'oubliez pas que ça lagguera donc pas trop long, il faut pratiquer les lags)

Puis enfin faites la grossir et disparaître:
Longueur 300% largeur 300%
Même coordonnées X & Y
Pixel central

Mettez dans votre compétence:

Appelle Cet événement commun:
Pop-up compétence

Ah oui!
Une dernière chose!
Faîtes une anim' de 3 images qui servira pour la compétence:
Image

Faîtes disparaître la "cible" (héros) pendant le nombre d'images du pouvoir
même si l'anim ne dure que 3 images elle fera disparaitre la cible autant de temps que vous lui dites (eh oui, c'est pareil pour les effets sonores et les flash ;))

Nommez cette anim' "MASQUER LE HEROS"
Puis dans la compétence:
Animation sur l'utilisateur: MASQUER LE HEROS
Animation sur la cible: (bah l'anim' du pouvoir)
Enfin il vous faut un script de combat style coté en voilà un tout con (pourrit) mais qui fera l'affaire (vous pourrez en prendre un autre mais IL FAUT QU' IL SOIT DE COTE vu votre anim' il faut que le perso soit à l'échelle)

A nommer: Battle_Custom

Code : Tout sélectionner

#=================================================      =============================
#++?????????(?????????)ver. 1.14++
#Script by ???
#http://rpg.para.s3p.net/
#-------------------------------------------------      -----------------------------
# ????????????????????????
#=================================================      =============================

module SDVA

X_LINE = 500 # ????????????
Y_LINE = 200 # ????????????
X_SPACE = 15 # ?????????????
Y_SPACE = 40 # ?????????????
X_POSITION = 25 # ??[????????]????
Y_POSITION = 0 # ??[????????]????

ATTACK_MOVE = true # ???????????( true / false )
SKILL_MOVE = true # ??????????????( true / false )
ITEM_MOVE = false # ???????????????( true / false )
MOVE_STEP = 1 # ????
MOVE_PIXEL = 10 # ???????????

PARTY_POS = 1 # ?????????( 0:? / 1:? / 2:? / 3:? )

WINDOWPOS_CHANGE = true # ??????????????????????( true / false )

end

#=================================================      =============================
# ? Game_Actor
#=================================================      =============================

class Game_Actor < Game_Battler
#-------------------------------------------------      -------------------------
# ? ????? X ?????
#-------------------------------------------------      -------------------------
def screen_x
if self.index != nil
# ?????
pos = $data_classes[self.class_id].position
x_pos = pos * SDVA::X_POSITION
scr_x = self.index * SDVA::X_SPACE + SDVA::X_LINE + x_pos
# ??????????
if self.current_action.move_action == true
# ????
scr_x += @shift_x
end
return scr_x
else
return 0
end
end
#-------------------------------------------------      -------------------------
# ? ????? Y ?????
#-------------------------------------------------      -------------------------
def screen_y
if self.index != nil
# ?????
pos = $data_classes[self.class_id].position
y_pos = pos * SDVA::Y_POSITION
scr_y = self.index * SDVA::Y_SPACE + SDVA::Y_LINE + y_pos
# ??????????
if self.current_action.move_action == true
# ????
scr_y += @shift_y
end
return scr_y
else
return 0
end
end
#-------------------------------------------------      -------------------------
# ? ????? Z ?????
#-------------------------------------------------      -------------------------
def screen_z
if self.index != nil
return self.index
else
return 0
end
end
end

#=================================================      =============================
# ? Game_Battler (???? 1)
#=================================================      =============================

class Game_Battler
#-------------------------------------------------      -------------------------
# ? ??????????
#-------------------------------------------------      -------------------------
attr_reader :pattern # ??????
attr_reader :trans_x # X???????
attr_reader :moving # ??????
#-------------------------------------------------      -------------------------
# ? ?????????
#-------------------------------------------------      -------------------------
alias initialize_sdva initialize
def initialize
initialize_sdva
move_reset
end
#-------------------------------------------------      -------------------------
# ? ??????
#-------------------------------------------------      -------------------------
def move
@moving = 1
if @step < SDVA::MOVE_STEP
# ??????????
@pattern = (@pattern + 1) % 4
@step += 1
move_step
else
# ????
@pattern = 1
@moving = 2
end
end
#-------------------------------------------------      -------------------------
# ? ????
#-------------------------------------------------      -------------------------
def move_step
# ???????????????????
case SDVA::PARTY_POS
when 0
@shift_y = @step * SDVA::MOVE_PIXEL
when 1
@shift_x = -(@step * SDVA::MOVE_PIXEL)
when 2
@shift_x = @step * SDVA::MOVE_PIXEL
when 3
@shift_y = -(@step * SDVA::MOVE_PIXEL)
end
end
#-------------------------------------------------      -------------------------
# ? ???????
#-------------------------------------------------      -------------------------
def move_reset
@moving = 0
@pattern = 0
@step = 0
@shift_x = 0
@shift_y = 0
end
end

#=================================================      =============================
# ? Game_BattleAction
#=================================================      =============================

class Game_BattleAction
#-------------------------------------------------      -------------------------
# ? ??????????
#-------------------------------------------------      -------------------------
attr_accessor :move_action # ??????????
#-------------------------------------------------      -------------------------
# ? ???
#-------------------------------------------------      -------------------------
alias clear_sdva clear
def clear
clear_sdva
@move_action = false
end
end

#=================================================      =============================
# ? Sprite_Battler
#=================================================      =============================

class Sprite_Battler < RPG::Sprite
#-------------------------------------------------      -------------------------
# ? ??????
#-------------------------------------------------      -------------------------
alias update_sdva update
def update
# ????????????????
if @battler.is_a?(Game_Actor)
# ????????????????????
# ??????
if @battler.battler_name != @battler_name or
@battler.battler_hue != @battler_hue or
@battler.current_action.basic == 0 or
@battler.current_action.kind != 3
# ????????????
@character_name = @battler.character_name
@character_hue = @battler.character_hue
# ???????????
self.bitmap = RPG::Cache.character(@character_name, @character_hue)
cw = self.bitmap.width / 4
ch = self.bitmap.height / 4
@width = cw
@height = ch
if @battler.current_action.move_action == true
# ????
@battler.move
else
@battler.move_reset
end
# ?????????
sx = @battler.pattern * cw
sy = SDVA::PARTY_POS * ch
self.src_rect.set(sx, sy, cw, ch)
self.ox = @width / 2
self.oy = @height
# ??????????? 0 ???
if @battler.hidden
self.opacity = 0
end
end
end
update_sdva
end
end

#=================================================      =============================
# ? Scene_Battle
#=================================================      =============================

class Scene_Battle
#-------------------------------------------------      -------------------------
# ? ????????????????????
#-------------------------------------------------      -------------------------
alias phase3_setup_command_window_sdva phase3_setup_command_window
def phase3_setup_command_window
phase3_setup_command_window_sdva
if SDVA::WINDOWPOS_CHANGE
# ???????????????????
case SDVA::PARTY_POS
when 0
x_pos = @active_battler.screen_x - (@actor_command_window.width/2)
y_pos = @active_battler.screen_y
when 1
x_pos = @active_battler.screen_x - @actor_command_window.width - 16
y_pos = @active_battler.screen_y - @actor_command_window.height
when 2
x_pos = @active_battler.screen_x + 16
y_pos = @active_battler.screen_y - @actor_command_window.height
when 3
x_pos = @active_battler.screen_x - (@actor_command_window.width/2)
y_pos = @active_battler.screen_y - @actor_command_window.height - 48
end
@actor_command_window.x = x_pos >= 0 ? x_pos : 0
@actor_command_window.x = x_pos+@actor_command_window.width <= 640 ? x_pos : 640-@actor_command_window.width
@actor_command_window.y = y_pos >= 0 ? y_pos : 0
@actor_command_window.y = y_pos+@actor_command_window.height <= 480 ? y_pos : 480-@actor_command_window.height
# ??????????????????
@actor_command_window.z = 9999
end
end
#-------------------------------------------------      -------------------------
# ? ?????? (??????? ???? 3 : ??????????)
#-------------------------------------------------      -------------------------
alias update_phase4_step3_sdva update_phase4_step3
def update_phase4_step3
if SDVA::ATTACK_MOVE
if @active_battler.current_action.basic == 0
@active_battler.current_action.move_action = true
end
end
if SDVA::SKILL_MOVE
if @active_battler.current_action.kind == 1
@active_battler.current_action.move_action = true
end
end
if SDVA::ITEM_MOVE
if @active_battler.current_action.kind == 2
@active_battler.current_action.move_action = true
end
end
# ??????????????????????
if @active_battler.is_a?(Game_Actor) and
@active_battler.current_action.move_action
# ?????
if @active_battler.moving == 2
update_phase4_step3_sdva
end
elsif @active_battler.moving == 0
update_phase4_step3_sdva
end
end
#-------------------------------------------------      -------------------------
# ? ?????? (??????? ???? 6 : ??????)
#-------------------------------------------------      -------------------------
alias update_phase4_step6_sdva update_phase4_step6
def update_phase4_step6
@active_battler.current_action.move_action = false
@active_battler.move_reset
update_phase4_step6_sdva
end
end

#=================================================      =============================
# ? Spriteset_Battle
#=================================================      =============================

class Spriteset_Battle
#-------------------------------------------------      -------------------------
# ? ?????????
#-------------------------------------------------      -------------------------
alias initialize_sdva initialize
def initialize
initialize_sdva
@viewport2.z = 1
end
end

#=================================================      =============================
# ? Arrow_Actor
#=================================================      =============================

class Arrow_Actor < Arrow_Base
#-------------------------------------------------      -------------------------
# ? ??????
#-------------------------------------------------      -------------------------
alias update_sdva update
def update
update_sdva
# ?????
if Input.repeat?(Input::DOWN)
$game_system.se_play($data_system.cursor_se)
@index += 1
@index %= $game_party.actors.size
end
# ?????
if Input.repeat?(Input::UP)
$game_system.se_play($data_system.cursor_se)
@index += $game_party.actors.size - 1
@index %= $game_party.actors.size
end
end
end

#=================================================      =============================
# ? Arrow_Enemy
#=================================================      =============================

class Arrow_Enemy < Arrow_Base
#-------------------------------------------------      -------------------------
# ? ??????
#-------------------------------------------------      -------------------------
alias update_sdva update
def update
update_sdva
# ?????
if Input.repeat?(Input::DOWN)
$game_system.se_play($data_system.cursor_se)
$game_troop.enemies.size.times do
@index += 1
@index %= $game_troop.enemies.size
break if self.enemy.exist?
end
end
# ?????
if Input.repeat?(Input::UP)
$game_system.se_play($data_system.cursor_se)
$game_troop.enemies.size.times do
@index += $game_troop.enemies.size - 1
@index %= $game_troop.enemies.size
break if self.enemy.exist?
end
end
end
end
Voilà ;)
Vous savez faire vos pouvoirs spéciaux maintenant, faîtes les coutés chers en PM :D

sayger
Koruldia God Warrior
Messages : 550
Localisation : Un trou paumé près de marseille

Message non lu par sayger » mar. févr. 23, 2010 6:51 pm

wooah... Bravo lemirage! :bravo:
Voila un tuto utile!

juste quelques précisions:
Avec quel logi tu utilise tout ça?
Comment faire des animés avec Gimp? : )

mercii
Image LE HUB VAINCRA _-_

Lemirage1998
Koruldia Warrior
Messages : 451
Localisation : Paris
Contact :

Message non lu par Lemirage1998 » mar. févr. 23, 2010 8:48 pm

C'est rpg maker XP ;)
Le perso qui a servi est donné avec le logi (Thieff01)
Tu peux le dl
Pour créer des pop-up faut grapher X)
Pour créer une anim' lit des tutos :clin:
nan je vais vite faire un tuto è_é

EDIT:
Dsl je suis pas sur mon vrai pc je ne fairai le tuto que demain :)

Avatar de l’utilisateur
KaYsEr
KoruTeam
KoruTeam
Messages : 5151
Localisation : Londres
Contact :

Message non lu par KaYsEr » mar. févr. 23, 2010 9:21 pm

Bonne idée de tutoriel ça car au moins c'est plus dur à gérer que les trucs genre "comment mettre un perso sur la map" (tuto super utile lol), bref c'est cool.

Et l'anim d'explosion baaah, elle explose bien !

C'est dans les RTPs ça ? Si c'est le cas alors ça veut dire que les battle-anim sont moins cheap que je pensais...
Image

Lemirage1998
Koruldia Warrior
Messages : 451
Localisation : Paris
Contact :

Message non lu par Lemirage1998 » mar. févr. 23, 2010 9:23 pm

C'est un charset des Rgss (Oops je confonds Rgss et RTP maintenant xD)
Au niveau des mouvements j'ai accentué un peu les mouvements de jambes sinan et j'ai incliné le perso

Avatar de l’utilisateur
KaYsEr
KoruTeam
KoruTeam
Messages : 5151
Localisation : Londres
Contact :

Message non lu par KaYsEr » mar. févr. 23, 2010 9:38 pm

Wi le chara je l'ai reconnu, mais les RTPSs ça regroupe aussi les animations d'effets spéciaux et là je parlais de l'explosion, elle a l'air mieux que d'habitude. (ça aurait été cool une vidéo pour voir ^^)
Image

Lemirage1998
Koruldia Warrior
Messages : 451
Localisation : Paris
Contact :

Message non lu par Lemirage1998 » mar. févr. 23, 2010 9:42 pm

nan l'explosion c'est pas un rtp

Avatar de l’utilisateur
KaYsEr
KoruTeam
KoruTeam
Messages : 5151
Localisation : Londres
Contact :

Message non lu par KaYsEr » mar. févr. 23, 2010 9:48 pm

Ha c'est bien ce que je croyais, ça me faisait penser à un rip du style Metal Slug dans le style.
Moi du coup j'utilise une autre méthode pour mes attaques >> vidéo.
(donc les explosions ça marche pareil avec particules, mais parfois un ptit soutient avec le système de battle anim pour la fin ça devrait être pas mal, genre discret...)
Image