Partagez
Aller en bas
Skillo
Skillo
Staffeux retraité

Nombre de messages : 526
Age : 30
Localisation : Rennes
Distinction : J'aime ce gars :P
(by Coco')
Scripteur apprenti, futur Berka !
(par Tretian)
Membre anonyme de la communauté, caché derrière son PC
(???)
super prof de script
[Dudu']
Résident permanent de la Chat Box
[Autoproclamé]
Adepte du XDDD [Yak' Very Happy]
Fanatique hystérique de Raymond le français [Un connu]
Date d'inscription : 19/01/2008

[Script][RGSS3] Combats aériens pour VX Ace Empty [Script][RGSS3] Combats aériens pour VX Ace

le Ven 4 Jan 2013 - 1:23
Hey guys!
J'avais du temps à perdre du coup j'ai décider de me remettre au RGSS ça me manquait un peu.
Du coup je commence simple en proposant un script que j'avait fait pour VX 1er du nom. Je l'ai adapté et épuér pour qu'il soit le plus modulable possible.

Ce script vous permettra de:
_Activer les combats aériens
_Créer des groupes d'ennemis qui apparaîtront uniquement en l'air
_Remplacer l'équipe par le vaisseau en cas de combat et ainsi pouvoir faire des combats de vaisseaux.


Script Battle_Ship à placer avant votre system de combat(genre SBS ou ABS) pour plus de sûreté:
Spoiler:

Code:


#==============================================================================
# **Battle_Ship fait par Skillo
#------------------------------------------------------------------------------
#  Ce script vous permet d'activer les combats en l'air, de definir les enemy que vous ne croiserez
# qu'en étant dans votre vaisseau, de definir si c'est votre equipe ou votre navire qui se bat afin
# de faire eventuelement des combatss de vaisseaux
#==============================================================================
module AirShip
 
  # ici sera définie si les combats en vaisseau seront activer par default en début de jeu
  # Airship_Battle = true/false
  # Pour  activer ou desactiver les combats aériens en cours de jeu, faites un appel de script et mettez y:
  # $game_system.airship_battle = true/false
  Airship_Battle = true
 
  # ici sera définiela liste des groupe de combats que vous croiserez uniquement en vaisseau
  # Ennemy = [id de l'ennemi 1, id de l'ennemi 2, id de l'ennemi 3, etc...]
  Ennemy = [2,3]
 
  # ici sera définie si le vaiseau prendra, par default, la place de l'equipe pendant  les combats en vaisseau.
  # Battle_Ship = true/false
  # Pour  activer ou desactiver le changement en cours de jeu, faites un appel de script et mettez y:
  # $game_system.airship_actor_battle = true/false
  Battle_Ship = true
 
  # ici sera defini le numero du Héros jouant le role de vaisseau (à definir dans la BDD)
  # Battle_Ship_actor = id de l'actor
  Battle_Ship_actor = 9
 
end

#==============================================================================
# ** Game_System
#------------------------------------------------------------------------------
#  This class handles system-related data. Also manages vehicles and BGM, etc.
# The instance of this class is referenced by $game_system.
#==============================================================================

class Game_System
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :airship_battle       
  attr_accessor :airship_actor_battle 
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  alias airship_game_system_initialize initialize
  def initialize
    airship_game_system_initialize
    @airship_battle = AirShip::Airship_Battle
    @airship_actor_battle = AirShip::Battle_Ship
  end
end
 

#==============================================================================
# ** Game_Player
#------------------------------------------------------------------------------
#  This class handles maps. It includes event starting determinants and map
# scrolling functions. The instance of this class is referenced by $game_map.
#==============================================================================

class Game_Player
 
  #--------------------------------------------------------------------------
  # * Update Encounter
  #--------------------------------------------------------------------------
  def update_encounter
    return if $TEST && Input.press?(:CTRL)
    return if $game_party.encounter_none?
    return if in_airship? && !$game_system.airship_battle
    return if @move_route_forcing
    @encounter_count -= encounter_progress_value
  end
 
  #--------------------------------------------------------------------------
  # * Determine if battle is an airship battle
  #-------------------------------------------------------------------------- 
  def airship_battle?
    return $game_system.airship_battle && in_airship?
  end
 
 
  #--------------------------------------------------------------------------
  # * Determine if battles is a normal battle
  #-------------------------------------------------------------------------- 
  def normal_battle?(encounter)
    return !$game_system.airship_battle || $game_system.airship_battle && !in_airship? && !AirShip::Ennemy.include?(encounter.troop_id)
  end
 
 
  #--------------------------------------------------------------------------
  # * Create Group ID for Troop Encountered
  #--------------------------------------------------------------------------
  def make_encounter_troop_id
    encounter_list = []
    air_encounter_list = []
    weight_sum = 0
    air_weight_sum = 0
    $game_map.encounter_list.each do |encounter|
      next unless encounter_ok?(encounter)
      if airship_battle? && AirShip::Ennemy.include?(encounter.troop_id)
        air_encounter_list.push(encounter)
        air_weight_sum += encounter.weight
        puts "air_weight_sum : " + air_weight_sum.to_s
      elsif normal_battle?(encounter)
        encounter_list.push(encounter)
        weight_sum += encounter.weight
        puts "weight_sum : " + weight_sum.to_s
      end
    end
    if airship_battle?
      encounter_list = air_encounter_list
      weight_sum = air_weight_sum
    end
    if weight_sum > 0
      value = rand(weight_sum)
      encounter_list.each do |encounter|
        value -= encounter.weight
        return encounter.troop_id if value < 0
      end
    end
    return 0
  end
end 

#==============================================================================
# ** Game_Party
#------------------------------------------------------------------------------
#  This class handles the party. It includes information on amount of gold
# and items. The instance of this class is referenced by $game_party.
#==============================================================================
class Game_Party

  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :last_actors
  attr_accessor :actors
 
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  alias airship_game_party_initialize initialize
  def initialize
    airship_game_party_initialize
    @last_actors = []
  end
 
  #--------------------------------------------------------------------------
  # * Processing at Start of Battle
  #--------------------------------------------------------------------------
  alias airship_on_battle_start on_battle_start
  def on_battle_start
    if $game_system.airship_battle && $game_system.airship_actor_battle
      if $game_player.in_airship?
        @last_actors = @actors
        @actors = [AirShip::Battle_Ship_actor]
      end
    end
    airship_on_battle_start
  end
 
  #--------------------------------------------------------------------------
  # * Processing at End of Battle
  #--------------------------------------------------------------------------
  alias airship_on_battle_end on_battle_end
  def on_battle_end
    if $game_system.airship_battle && $game_system.airship_actor_battle && $game_player.in_airship?
      @actors = @last_actors
    end
    airship_on_battle_end
  end
end
Voilà une démo est disponible pour VX ici si vous voulez absolument une démo pour Ace j'essaierai de voir si je trouve du temps.

Je sais que c'est un peu léger pour l'instant mais j'ai la motivation qui reviens ^^
et je vais essayer d'enchainer les petis script comme celui ci dans les semaines qui viennes tout en taffant sur un projet plus important.

Sur ce see ya later et laissez vos coms ça fait toujours plaisir.

+5 pts de participation

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum