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  [ 24 messages ]  Aller à la page 1, 2, 3  Suivant
Auteur Message
 Sujet du message: Animated Battlers by Minkoff
MessagePublié: 07 Juin 2009, 13:40 
Roi
Roi
Avatar de l’utilisateur

Inscrit le: 13 Aoû 2006, 00:00
Messages: 2417
Localisation: Montréal, QC
Logiciel(s) préféré(s): RMXP, VS2008
Point(s) Fort(s): Script
Points d'aide: Illimité

Créations :

- Séparation d'inventaire

- Sprite_Text


Voir ses créations

Animated Battlers


Auteur: Minkoff

Description: Ce script permet d'afficher des battlers animés et de rendre la vue des combats de cotés.

Installation: Copier le script au dessus de main. Le nom n'a pas d'importance.
Les battlers doivent suivre le modèle (voir plus bas), à sélectionner dans la base de données onglet "Héros", données "Apparence en combat".

Modèles:
Image

Image

Image

Image


Haut
 Profil  
 
 Sujet du message: Re: Animated Battlers by Minkoff
MessagePublié: 07 Juin 2009, 13:42 
Roi
Roi
Avatar de l’utilisateur

Inscrit le: 13 Aoû 2006, 00:00
Messages: 2417
Localisation: Montréal, QC
Logiciel(s) préféré(s): RMXP, VS2008
Point(s) Fort(s): Script
Points d'aide: Illimité

Créations :

- Séparation d'inventaire

- Sprite_Text


Voir ses créations

Script:

Code: Tout sélectionner
#==============================================================================
# ** Sprite_Battler
#------------------------------------------------------------------------------
#  Animated Battlers by Minkoff
#==============================================================================

class Sprite_Battler < RPG::Sprite
  #--------------------------------------------------------------------------
  # * Initialize
  #--------------------------------------------------------------------------
  alias cbs_initialize initialize
  def initialize(viewport, battler = nil)
    @speed = 7
    @frames = 4
    @poses = 10
    @stationary_enemies = true
    @stationary_actors = false
    @calculate_speed = true
    @phasing = true
    @frame = 0
    @pose = 0
    @last_time = 0
    @last_move_time = 0
    cbs_initialize(viewport, battler)
    viewport.z = 99
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  alias cbs_update update
  def update
    return unless @battler

    # Regular Update
    cbs_update

    # Start Routine
    unless @started
      @width = @width / @frames
      @height = @height / @poses
      @display_x = @battler.screen_x
      @display_y = @battler.screen_y
      @destination_x = @display_x
      @destination_y = @display_y
    end

    # Setup Sprite
    self.src_rect.set(@width * @frame, @height * @pose, @width, @height)
    self.mirror = @battler.is_a?(Game_Enemy) unless @started

    # Position Sprite
    self.x = @display_x
    self.y = @display_y
    self.z = @display_y
    self.ox = @width / 2
    self.oy = @height

    # Setup Animation
    time = Graphics.frame_count / (Graphics.frame_rate / @speed)
    if @last_time < time
      @frame = (@frame + 1) % @frames
      if @frame == 0 or @reload
        if @freeze
          @frame = @frames - 1
          return
        end
        @pose = state
      end
    end
    @last_time = time

    # Move It
    move if moving

    # Finish Up
    @started = true
  end
  #--------------------------------------------------------------------------
  # * Current State
  #--------------------------------------------------------------------------
  def state
    # Damage State
    if [nil,{}].include?(@battler.damage)
      # Battler Fine
      @state = 0
      # Battler Wounded
      @state = 2 if @battler.hp < @battler.maxhp / 4
      # Battler Dead
      @state = 2 if @battler.dead?
    end
    # Guarding State
    @state = 3 if @battler.guarding?
    # Moving State
    if moving
      # Battler Moving Left
      @state = 4 if moving.eql?(0)
      # Battler Moving Right
      @state = 5 if moving.eql?(1)
    end
    # Return State
    return @state
  end
  #--------------------------------------------------------------------------
  # * Move
  #--------------------------------------------------------------------------
  def move
    time = Graphics.frame_count / (Graphics.frame_rate.to_f / (@speed * 5))
    if @last_move_time < time

      # Pause for Animation
      return if @pose != state

      # Phasing
      if @phasing
        d1 = (@display_x - @original_x).abs
        d2 = (@display_y - @original_y).abs
        d3 = (@display_x - @destination_x).abs
        d4 = (@display_y - @destination_y).abs
        self.opacity = [255 - ([d1 + d2, d3 + d4].min * 1.75).to_i, 0].max
      end

      # Calculate Difference
      difference_x = (@display_x - @destination_x).abs
      difference_y = (@display_y - @destination_y).abs

      # Done? Reset, Stop
      if [difference_x, difference_y].max.between?(0, 8)
        @display_x = @destination_x
        @display_y = @destination_y
        @pose = state
        return
      end

      # Calculate Movement Increments
      increment_x = increment_y = 1
      if difference_x < difference_y
        increment_x = 1.0 / (difference_y.to_f / difference_x)
      elsif difference_y < difference_x
        increment_y = 1.0 / (difference_x.to_f / difference_y)
      end
     
      # Calculate Movement Speed
      if @calculate_speed
        total = 0; $game_party.actors.each{ |actor| total += actor.agi }
        speed = @battler.agi.to_f / (total / $game_party.actors.size)
        increment_x *= speed
        increment_y *= speed
      end
     
      # Multiply and Move
      multiplier_x = (@destination_x - @display_x > 0 ? 8 : -8)
      multiplier_y = (@destination_y - @display_y > 0 ? 8 : -8)
      @display_x += (increment_x * multiplier_x).to_i
      @display_y += (increment_y * multiplier_y).to_i
    end
    @last_move_time = time
  end
  #--------------------------------------------------------------------------
  # * Set Movement
  #--------------------------------------------------------------------------
  def setmove(destination_x, destination_y)
    unless (@battler.is_a?(Game_Enemy) and @stationary_enemies) or
           (@battler.is_a?(Game_Actor) and @stationary_actors)
      @original_x = @display_x
      @original_y = @display_y
      @destination_x = destination_x
      @destination_y = destination_y
    end
  end
  #--------------------------------------------------------------------------
  # * Movement Check
  #--------------------------------------------------------------------------
  def moving
    if (@display_x != @destination_x and @display_y != @destination_y)
      return (@display_x > @destination_x ? 0 : 1)
    end
  end
  #--------------------------------------------------------------------------
  # * Set Pose
  #--------------------------------------------------------------------------
  def pose=(pose)
    @pose = pose
    @frame = 0
  end
  #--------------------------------------------------------------------------
  # * Freeze
  #--------------------------------------------------------------------------
  def freeze
    @freeze = true
  end
  #--------------------------------------------------------------------------
  # * Fallen Pose
  #--------------------------------------------------------------------------
  def collapse
    return
  end
end

#==============================================================================
# ** Game_Actor
#==============================================================================

class Game_Actor
  #--------------------------------------------------------------------------
  # * Actor X Coordinate
  #--------------------------------------------------------------------------
  def screen_x
    if self.index != nil
      return self.index * 45 + 450
    else
      return 0
    end
  end
  #--------------------------------------------------------------------------
  # * Actor Y Coordinate
  #--------------------------------------------------------------------------
  def screen_y
    return self.index * 35 + 200
  end
  #--------------------------------------------------------------------------
  # * Actor Z Coordinate
  #--------------------------------------------------------------------------
  def screen_z
    return screen_y
  end
end

#==============================================================================
# ** Scene_Battle
#==============================================================================

class Scene_Battle
  #--------------------------------------------------------------------------
  # * Action Animation, Movement
  #--------------------------------------------------------------------------
  alias cbs_update_phase4_step3 update_phase4_step3
  def update_phase4_step3(battler = @active_battler)
    @rtab = !@target_battlers
    target = (@rtab ? battler.target : @target_battlers)[0]
    @moved = {} unless @moved
    return if @spriteset.battler(battler).moving
    case battler.current_action.kind
    when 0 # Attack
      if not (@moved[battler] or battler.guarding?)
        offset = (battler.is_a?(Game_Actor) ? 40 : -40)
        @spriteset.battler(battler).setmove(target.screen_x + offset, target.screen_y)
        @moved[battler] = true
        return
      elsif not battler.guarding?
        @spriteset.battler(battler).pose = 6 + rand(2)
        @spriteset.battler(battler).setmove(battler.screen_x, battler.screen_y)
      end
    when 1 # Skill
      @spriteset.battler(battler).pose = 8
    when 2 # Item
      @spriteset.battler(battler).pose = 8
    end
    @moved[battler] = false
    @rtab ? cbs_update_phase4_step3(battler) : cbs_update_phase4_step3
  end
  #--------------------------------------------------------------------------
  # * Hit Animation
  #--------------------------------------------------------------------------
  alias cbs_update_phase4_step4 update_phase4_step4
  def update_phase4_step4(battler = @active_battler)
    for target in (@rtab ? battler.target : @target_battlers)
      damage = (@rtab ? target.damage[battler] : target.damage)
      if damage.is_a?(Numeric) and damage > 0
        @spriteset.battler(target).pose = 1
      end
    end
    @rtab ? cbs_update_phase4_step4(battler) : cbs_update_phase4_step4
  end
  #--------------------------------------------------------------------------
  # * Victory Animation
  #--------------------------------------------------------------------------
  alias cbs_start_phase5 start_phase5
  def start_phase5
    for actor in $game_party.actors
      return if @spriteset.battler(actor).moving
    end
    for actor in $game_party.actors
      unless actor.dead?
        @spriteset.battler(actor).pose = 9
        @spriteset.battler(actor).freeze
      end
    end
    cbs_start_phase5
  end
  #--------------------------------------------------------------------------
  # * Change Arrow Viewport
  #--------------------------------------------------------------------------
  alias cbs_start_enemy_select start_enemy_select
  def start_enemy_select
    cbs_start_enemy_select
    @enemy_arrow.dispose
    @enemy_arrow = Arrow_Enemy.new(@spriteset.viewport2)
    @enemy_arrow.help_window = @help_window
  end
end

#==============================================================================
# ** Spriteset_Battle
#==============================================================================

class Spriteset_Battle
  #--------------------------------------------------------------------------
  # * Change Enemy Viewport
  #--------------------------------------------------------------------------
  alias cbs_initialize initialize
  def initialize
    cbs_initialize
    @enemy_sprites = []
    for enemy in $game_troop.enemies.reverse
      @enemy_sprites.push(Sprite_Battler.new(@viewport2, enemy))
    end
  end
  #--------------------------------------------------------------------------
  # * Find Sprite From Battler Handle
  #--------------------------------------------------------------------------
  def battler(handle)
    for sprite in @actor_sprites + @enemy_sprites
      return sprite if sprite.battler == handle
    end
    return false
  end
end

#==============================================================================
# ** Arrow_Base
#==============================================================================

class Arrow_Base < Sprite
  #--------------------------------------------------------------------------
  # * Reposition Arrows
  #--------------------------------------------------------------------------
  alias cbs_initialize initialize
  def initialize(viewport)
    cbs_initialize(viewport)
    self.ox = 14 # 32
    self.oy = 10 # 40
  end
end


Haut
 Profil  
 
 Sujet du message: Re: Animated Battlers by Minkoff
MessagePublié: 03 Sep 2010, 18:32 
Villageois (Nv 1)
Avatar de l’utilisateur

Inscrit le: 03 Sep 2010, 18:27
Messages: 5
Localisation: 54
Niveau RPG Maker: Moyen
Logiciel(s) préféré(s): RMXP , Gimp , Paint.. ^^'
Point(s) Fort(s): On va dire Event et map exterieure
Sexe: Masculin
Points d'aide: 0/60

Créations :

Voir ses créations

Bonjour , désolé si je dois me présenter avant de poster ou autre chose... mais j'ai un petit soucis avec le script
Enfin un soucis non , mais un inconvenient , je m'explique :
Le script est parfait , mais au niveau immobilité il y a un problème , car mon guerrier va aller dans le tas , donc la ligne 17 je mets @stationary_actors = false
Le problème c'est que pour mon archer... aller au corps a corps c'est pas son truc^^
J'aimerais qu'un scripteur plus doué que moi rajoute quelque ligne pur qu'on puisse choisir qui bouge ou pas , ou pour mettre un attributs immobile par exemple...
Merci d'avance j'espère , désolé pour le nécropost mais j'ai besoin d'aide...

Ychabod


Haut
 Profil  
 
 Sujet du message: Re: Animated Battlers by Minkoff
MessagePublié: 03 Sep 2010, 22:47 
Garde
Garde
Avatar de l’utilisateur

Inscrit le: 12 Avr 2009, 00:00
Messages: 373
Logiciel(s) préféré(s): RMXP
Point(s) Fort(s): Ruby
Sexe: Masculin
Points d'aide: Illimité

Créations :

Voir ses créations

Bonjour ychabod,

Je t'est codé l'add-on, script a collé dans un nouveau, a nommé comme tu le souhaite, et a placé au-dessus de main et en-dessous du script de combat donné dans ce poste :
Code: Tout sélectionner
ELEMENT_NAME = "Immobile"

class Game_Actor
  def mobile?
    unless (index = $data_system.elements.index(ELEMENT_NAME)).nil?
      $data_classes[@class_id].element_ranks[index] != 1
    end
  end
end
class Game_Enemy
  def mobile?
    unless (index = $data_system.elements.index(ELEMENT_NAME)).nil?
      $data_enemies[@enemy_id].element_ranks[index] != 1
    end
  end
end
class Sprite_Battler
  def setmove(destination_x, destination_y)
    return false if !@battler.mobile?
    @original_x, @original_y = @display_x, @display_y
    @destination_x, @destination_y = destination_x, destination_y
  end
end


L'utilisation est a peu prés comme tu la demandé, c'est a dire qu'il faut que tu crée un attribut dans l'onglet "Système" avec pour nom "Immobile" (sans les guillemets, le nom est modifiable ligne 1 de l'addon) .
Ensuite, lorsque une classe de héros ou un ennemi (l'addon fonctionne pour les 2) doit resté immobile, alors dans "Résiste au attributs :", met l'attribut "Immobile" (ou autre si tu a changer le nom ligne 1) à "A", si tu le met sur autre chose que sur A le héros/ennemi bougera lors de l'attaque.

Voila, Bonne chance ;)


Haut
 Profil  
 
 Sujet du message: Re: Animated Battlers by Minkoff
MessagePublié: 05 Sep 2010, 17:01 
Villageois (Nv 1)
Avatar de l’utilisateur

Inscrit le: 03 Sep 2010, 18:27
Messages: 5
Localisation: 54
Niveau RPG Maker: Moyen
Logiciel(s) préféré(s): RMXP , Gimp , Paint.. ^^'
Point(s) Fort(s): On va dire Event et map exterieure
Sexe: Masculin
Points d'aide: 0/60

Créations :

Voir ses créations

Merci beaucoup ca marche du tonerre ! ^^


Haut
 Profil  
 
 Sujet du message: Re: Animated Battlers by Minkoff
MessagePublié: 27 Oct 2010, 22:49 
Villageois (Nv 2)

Inscrit le: 31 Aoû 2010, 15:21
Messages: 31
Niveau RPG Maker: Intermédiaire
Logiciel(s) préféré(s): Rpg maker XP
Point(s) Fort(s): Le mapping, la prog événementielle
Sexe: Masculin
Points d'aide: 0/60

Créations :

Voir ses créations

Yosh tout le monde ! J'adore ce script, il est génial ! Par contre c'est normal que les battlers des ennemis genre le fantômes des RTPs, on ne voie qu'une partie de sa tete qui en plus disparaît et réapparaît ?
Enfin bref, vive ce script !
A+


Merci d'avoir ou ce message^^


Haut
 Profil  
 
 Sujet du message: Re: Animated Battlers by Minkoff
MessagePublié: 28 Oct 2010, 13:24 
Ancien membre du staff
Ancien membre du staff
Avatar de l’utilisateur

Inscrit le: 01 Juin 2008, 00:00
Messages: 1812
Localisation: Dans le pré
Niveau RPG Maker: Pas trop mal
Logiciel(s) préféré(s): RPG Maker XP
Point(s) Fort(s): Tout le pixel-art
Sexe: Féminin
Points d'aide: 33/60

Créations :

Voir ses créations

Tu as sûrement le mauvais nombre de poses : ce script en utilise 10, tu en as peut-être 11 ou 12. Après si c'est pas ça ... il peut être mal cadré.

_________________
Image
Mon jeu [démo] :
Image
Mon dA : ~trucbiduleBond
truc is back ? maybe ...


Haut
 Profil  
 
 Sujet du message: Re: Animated Battlers by Minkoff
MessagePublié: 30 Oct 2010, 23:02 
Villageois (Nv 2)

Inscrit le: 31 Aoû 2010, 15:21
Messages: 31
Niveau RPG Maker: Intermédiaire
Logiciel(s) préféré(s): Rpg maker XP
Point(s) Fort(s): Le mapping, la prog événementielle
Sexe: Masculin
Points d'aide: 0/60

Créations :

Voir ses créations

Euh oui en effet c'est eut être bien ça ^^ mais je pense que non : quand je parlais du fantôme des RTPs, je parlais de son battler de base, pas de son chara^^ donc, si j'ai bin compris, il faut que les monstres aussi aient des battlers-characters comme plus hauts ?

A+


Haut
 Profil  
 
 Sujet du message: Re: Animated Battlers by Minkoff
MessagePublié: 30 Oct 2010, 23:16 
Ancien membre du staff
Ancien membre du staff
Avatar de l’utilisateur

Inscrit le: 01 Juin 2008, 00:00
Messages: 1812
Localisation: Dans le pré
Niveau RPG Maker: Pas trop mal
Logiciel(s) préféré(s): RPG Maker XP
Point(s) Fort(s): Tout le pixel-art
Sexe: Féminin
Points d'aide: 33/60

Créations :

Voir ses créations

Oui, les monstres doivent aussi avoir des battlers en style 2.5, il me semble (du moins pour ce script). Il en existe d'autres qui utilisent des characters animés pour les héros et des battlers pour les monstres, mais je ne me rappelle plus exactement lesquels.
Une recherche sur le forum devrait être fructueuse ^^

_________________
Image
Mon jeu [démo] :
Image
Mon dA : ~trucbiduleBond
truc is back ? maybe ...


Haut
 Profil  
 
 Sujet du message: Re: Animated Battlers by Minkoff
MessagePublié: 31 Oct 2010, 10:35 
Garde
Garde
Avatar de l’utilisateur

Inscrit le: 26 Sep 2006, 00:00
Messages: 1973
Points d'aide: Illimité

Créations :

Voir ses créations

J'avais testé ce système (ou une version plus améliorée peut-être, il y avait plusieurs scripts dont un de config), et il me semble bien qu'on pouvait choisir entre ennemis animés comme les héros, ou juste battlers fixes.

_________________
Image
Image


Haut
 Profil  
 
Afficher les messages depuis:  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 24 messages ]  Aller à la page 1, 2, 3  Suivant

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


Qui est en ligne ?

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


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