Partagez
Aller en bas
avatar
freezia
Staffeux retraité

Nombre de messages : 1734
Distinction : Elu membre de l'année 2009 haut la main.
Inventeur du Mapping Show.

caricaturatationeur de la comu'
[ Dudu']
Date d'inscription : 18/02/2008

[xp] Combat Côté personnalisable avec events

le Sam 23 Fév 2008 - 12:28
Préavis (Introduction) :

C'est complètement dépassé puisque maintenant il existe le script "Rye CBS Starter" imitant mon système mais avec plus de réalisme et d'options . (L'event c'est bien mais le ruby c'est mieux quand on maîtrise ^^)
Cliquez là pour les intéréssés !

Mais bon à l'époque quand ce script n'éxistait pas j'ai inventé un petit système pour le rendre plus réaliste .
Le but est de partir à la base de ce script là à placer au dessus de main, à un résultat plus réaliste par les commandes événementiels .

Spoiler:
#==============================================================================
#++?????????(?????????)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




Car, en effet, ce script remplaçe le battler par le character du héro en combat et imite un combat vue de côté 1.0 .
Mais il n'était pas du tout approfondi pour faire de ce script un système réaliste : effectivement quand un héro attaque il fait simplement un pas à gauche et l'animation d'attaque s'affiche sur le monstre .



Vous me direz que c'est pas super n'est ce pas ?

Et bien dans ce tuto je vais vous montrez comment personnalisé l'animation avec des events .


Au Boulot ! (Pratique) :

Si vous ne l'avez pas déjà fait créer un nouveau projet et insérrez y le script sur lequel nous travaillons et nommez le comme bon vous semble .

Telechargeons ce character que vous mettrez dans le dossier Character du projet bien entendu .



Direction ensuite dans Ressources et importez-y le character télécharger .
Spoiler:

On va dans la base de donnée puis rubrique héros et là mettez le chara importé à la place de celle de Arshes .

Nous allons télécharger un autre chara même si cette fois il est spécial .
Donc oui : telecharger ce character .



Effectivement ce sera le character qui imitera la posture de notre héros dans les combats .
avatar
freezia
Staffeux retraité

Nombre de messages : 1734
Distinction : Elu membre de l'année 2009 haut la main.
Inventeur du Mapping Show.

caricaturatationeur de la comu'
[ Dudu']
Date d'inscription : 18/02/2008

Re: [xp] Combat Côté personnalisable avec events

le Sam 23 Fév 2008 - 12:28
C'est simple à faire : télécharger le châblon de character et ouvrez le avec paint .
Spoiler:

Ouvrez une autre session de paint avec le character dont vous voulez faire une posture de combat .

Posture d'Attaque : Et prenez y par exemple la posture à l'êxtreme droite de la deuxième ligne, coupez la et mettez la a la première posture de la deuxième ligne du chablon (de préférence placez la bien vers le plus bas et le plus a droite de la case, ainsi se sera plus facile de s'y repérer), importez une icone faisant office d'arme et mettez la lui sur sa main tendu .

Posture de Surplace : Puis prenez la deuxième posture de la deuxième ligne et mettez exactement à la même place dans le chablon, puis pareillement que tout à l'heure mettez lui une arme à sa main tendu .

Finalisation : Dès que vous avez fini vos petite touches persos, prenez le sot à peinture et mettez toutes les cases de la même couleur et puis c'est bon vous n'avez plus qu'à enregistrez .

Si vous avez fait ces modifications n'oubliez donc pas de changer le character de Arshes par celui que vous avez pris pour modèle pour faire la posture de combat .

Revenons à notre sujet principale .

Aller sur la map et creer un événement en Proccesus Parallèle et activez-y un interrupteur nommez "Après Combat" .
Spoiler:

Retour dans la base de donnée et on est parti pour la rubrique événements communs
Créer un nouvel événement en Processus Parallèle avec comme interrupteur de déclenchement celui que nous venons de creer .
Spoiler:

Cette manipulation nous servira à ce que dès que le combat sera terminer, notre héros puisse revenir de sa forme de position de combat à celle qu'il adopte sur les maps .

Aller dans groupe de monstres et prenez le premier grouppe qui vous tombe sous la main et mettez comme declencheur "Tous les 1 tours à partir du tour 1" .
et faîtes changer l'apparence du héro Arshes en celui de la posture de combat .
Spoiler:

Ainsi votre héros changera sa forme en posture de combat (il faudra faire la même opération pour chaque groupe que vous utiliserez dans un projet)

Aller sur la map et creer un événement Par la touche action et faîtes démmarer un combat avec le groupe de monstres dont nous nous sommes occupés .
Spoiler:

Enregistrez le tout, démarrez la démo et voyez par vous même le résultat ^^ "Arshes" est devenu plus cédible que ses compagnons .

Remarque : Si vous deviez modifier l'apparence du héro n'oubliez pas de désactiver l'événement commun puis de le reactiver
par la suite .
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum