Douad Petit membre
Nombre de messages : 44 Age : 31 Localisation : Osef :noel: Date d'inscription : 17/02/2010
| Sujet: [RMXP]Script D'overdrive Dim 28 Fév - 18:06 | |
| Voici un script d'overdrive à la FFX x) Placez ce script au dessus de Main et baptisez le Overdrive - Code:
-
# Script Overdrive (cf.FFX) traduit par Ojiro
# Voilà un script qui permet d'installer une jauge Overdrive
# qui se remplit selon les types : Aggresif, Tenace, Victorieux,
# Lache, Solo, Leade ou Revenant.
# Le type peut être modifié en cours de jeu grâce à :
# $game_actors [ID] overdrive_type = x
# A inserer dans une page d'évenement grâce à Insertion Script.
# ID est a remplacer par l'ID du joueur qui changera de type
# L'ID n'est pas la place du joueur dans l'équipe
# Mais le numéro que porte le personnage indiqué dans la liste
# des héros.
# "x" est a remplacer par le numéro du type qui sont :
# 0..Aggresif 1..Tenace 2..Victorieux 3..Lache 4..Solo
# 5..Leader 6..Revenant
# La jauge se remplira en fonction du type :
# Aggressif > Dommage d'une attaque porté sur un ennemi
# Tenace > Dommage d'une attaque porté sur vous
# Victorieux > Lors d'une victoire d'un combat
# Lache > Lors d'une fuite
# Solo > Lorsque le joueur est seul au combat
# Leader > Lors de n'importe quel action
# Revenant > Lorsque l'on meurt
# Ensuite pour définir une technique Overdrive il faut tout
# d'abord ajouter un attribut dans Système que vous
# appellez Overdrive
# Et ensuite il suffira de cocher l'attribut Overdrive
# pour les techniques Overdrives dans la liste des skills.
# Et les faires apprendre a vos personnage comme des techniques
# normales sauf qu'elles ne pourront pas être utilisés
# si la jauge n'est pas pleine.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ ?Overdrive - KGC_OverDrive? Traduit par Ojiro
#_/----------------------------------------------------------------------------
#_/ Jauge privé d'un joueur lui permettant d'activer une technique unique.
#_/============================================================================
#==============================================================================
# ? Paramètres ?
#==============================================================================
module KGC
# ?Jauge Max
# Indique la valeur pour que la jauge soit pleine
OD_jauge_MAX = 1000
# ?Progression de la barre Si
# Dépend du Drive Mode du joueur
# Pour le 0 et 1, le Drive s'effectue selon la valeurs des dommages reçus.
OD_GAIN_RATE = [10, 30, 200, 100, 160, 40, 160]
# ?jauge d'Overdrive incliné
OD_jauge_SLANT = true
# ?Position Y de la jauge overdrive en non Combat
OD_jauge_OFF_Y = 26
# ?Position Y de la jauge overdrive en Combat
OD_jauge_OFF_Y_BATTLE = 26
# ?Barre caché en non Combat / True (Vrai) ou False (Faux)
OD_jauge_HIDE = false
end
class Window_Base < Window
# ?Image de la jauge Overdrive
@@_od_jauge = RPG::Cache.picture("od_gauge.png")
end
#???????????????????????????????????????
$game_special_elements = {}
$imported = {}
$data_states = load_data("Data/States.rxdata")
$data_system = load_data("Data/System.rxdata")
$imported["OverDrive"] = true
# OverDrive??
$game_special_elements["overdrive"] = $data_system.elements.index("Overdrive")
#???????????????????????????????????????
#==============================================================================
# ¦ Game_Battler
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ? Exécute le processus d'origineExécute le processus d'origine?????
#--------------------------------------------------------------------------
attr_accessor :base_damage # Valeur des Dommmages de Base
#--------------------------------------------------------------------------
# ? Activation de l'Overdrive
#--------------------------------------------------------------------------
alias skill_can_use_KGC_OverDrive skill_can_use?
def skill_can_use?(skill_id)
# Activation de l'Overdrive
if self.is_a?(Game_Actor)
skill = $data_skills[skill_id]
if skill != nil && skill.element_set.include?($game_special_elements["overdrive"])
if self.overdrive < KGC::OD_jauge_MAX
return false
end
end
end
# Exécute le processus d'origine
return skill_can_use_KGC_OverDrive(skill_id)
end
#--------------------------------------------------------------------------
# ? Application effective d'une Aggresif normale
#--------------------------------------------------------------------------
alias attack_effect_KGC_OverDrive attack_effect
def attack_effect(attacker)
@base_damage = nil
# Exécute le processus d'origine
result = attack_effect_KGC_OverDrive(attacker)
if @base_damage == nil
# Retient les dommages de base d'origine
@base_damage = [attacker.atk - self.pdef / 2, 0].max *
(20 + attacker.str) / 20
end
# Dommages reçus
if result && self.damage.is_a?(Numeric)
# Augmentation d'Aggresif
if attacker.is_a?(Game_Actor) && self.is_a?(Game_Enemy) &&
attacker.overdrive_type == 0 && self.base_damage > 0
# Calcul du Drive
od_up = [[self.damage * KGC::OD_GAIN_RATE[0] * 10 / self.base_damage, 1].max, 160].min
# Drive
attacker.overdrive += od_up
# Lors des dégâts reçus
elsif attacker.is_a?(Game_Enemy) && self.is_a?(Game_Actor) &&
self.overdrive_type == 1 && self.base_damage > 0
od_up = [self.damage * KGC::OD_GAIN_RATE[1] * 10 / self.maxhp, 1].max
self.overdrive += od_up
end
end
return result
end
#--------------------------------------------------------------------------
# ? Application effective de la technique
#--------------------------------------------------------------------------
alias skill_effect_KGC_OverDrive skill_effect
def skill_effect(user, skill)
@base_damage = nil
# Exécute le processus d'origine
result = skill_effect_KGC_OverDrive(user, skill)
if @base_damage == nil
# Calcul de la Puissance
power = skill.power + user.atk * skill.atk_f / 100
if power > 0
power -= self.pdef * skill.pdef_f / 200
power -= self.mdef * skill.mdef_f / 200
power = [power, 0].max
end
# Calcul d'augmentation en pourcentage
rate = 20
rate += (user.str * skill.str_f / 100)
rate += (user.dex * skill.dex_f / 100)
rate += (user.agi * skill.agi_f / 100)
rate += (user.int * skill.int_f / 100)
# Retient les dommages de base
@base_damage = power * rate / 20
end
# Lors des Tenaces reçus
if result && self.damage.is_a?(Numeric)
# Augmentation des dégâts
if user.is_a?(Game_Actor) && self.is_a?(Game_Enemy) &&
user.overdrive_type == 0 && self.base_damage > 0
# Calcul du Drive
od_up = [[self.damage * KGC::OD_GAIN_RATE[0] * 10 / self.base_damage, 1].max, 160].min
# Drive
user.overdrive += od_up
# Lors des Tenaces reçus
elsif user.is_a?(Game_Enemy) && self.is_a?(Game_Actor) &&
self.overdrive_type == 1 && self.base_damage > 0
od_up = [self.damage * KGC::OD_GAIN_RATE[1] * 10 / self.maxhp, 1].max
self.overdrive += od_up
end
end
# Lors de l'utilisation de l'Overdrive
if user.is_a?(Game_Actor) && skill.element_set.include?($game_special_elements["overdrive"])
user.overdrive = 0
end
return result
end
end
#???????????????????????????????????????
#==============================================================================
# ¦ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ? Installation
#--------------------------------------------------------------------------
alias setup_KGC_OverDrive setup
def setup(actor_id)
# Exécute le processus d'origine
setup_KGC_OverDrive(actor_id)
@overdrive, @overdrive_type = 0, 0
end
#--------------------------------------------------------------------------
# ? Acquisition d'une jauge d'overdrive
#--------------------------------------------------------------------------
def overdrive
@overdrive = 0 if @overdrive == nil
return @overdrive
end
#--------------------------------------------------------------------------
# ? Opération de la jauge Overdrive
#--------------------------------------------------------------------------
def overdrive=(value)
@overdrive = 0 if @overdrive == nil
@overdrive = [[value, 0].max, KGC::OD_jauge_MAX].min
end
#--------------------------------------------------------------------------
# ? Acquisition du type d'Overdrive
#--------------------------------------------------------------------------
def overdrive_type
@overdrive_type = 0 if @overdrive_type == nil
return @overdrive_type
end
#--------------------------------------------------------------------------
# ? Opération du type d'Overdrive
#--------------------------------------------------------------------------
def overdrive_type=(value)
@overdrive_type = 0 if @overdrive_type == nil
@overdrive_type = value
end
end
#???????????????????????????????????????
#==============================================================================
# ¦ Window_Base
#==============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# ? Initialisation
#--------------------------------------------------------------------------
alias initialize_KGC_OverDrive_Base initialize
def initialize(x, y, width, height)
@od_jauge = @@_od_jauge
@od_g_width = @od_jauge.width / 3
@od_g_height = (@od_jauge.height - 2) / 3
# Exécute le processus d'origine
initialize_KGC_OverDrive_Base(x, y, width, height)
end
#--------------------------------------------------------------------------
# ? Image de la jauge overdrive
#--------------------------------------------------------------------------
def _od_jauge
return @@_od_jauge
end
#--------------------------------------------------------------------------
# ? Placement de la jauge
#--------------------------------------------------------------------------
def _od_jauge=(new_bitmap)
@@_od_jauge.dispose
@@_od_jauge = new_bitmap
end
#--------------------------------------------------------------------------
# ? Acquisition de l'image
#--------------------------------------------------------------------------
def od_jauge
return @od_jauge
end
#--------------------------------------------------------------------------
# ? Mise en place de la jauge
#--------------------------------------------------------------------------
def od_jauge=(new_bitmap)
@od_jauge = new_bitmap
end
#--------------------------------------------------------------------------
# ? Nom
#--------------------------------------------------------------------------
alias draw_actor_name_KGC_OverDrive draw_actor_name
def draw_actor_name(actor, x, y)
unless (!$game_temp.in_battle && KGC::OD_jauge_HIDE)
draw_actor_od_jauge(actor, x, y, 120)
end
# Exécute le processus d'origine
draw_actor_name_KGC_OverDrive(actor, x, y)
end
#--------------------------------------------------------------------------
# ? Jauge OD
#--------------------------------------------------------------------------
def draw_actor_od_jauge(actor, x, y, width)
# Jauge
if $game_temp.in_battle && self.is_a?(Window_BattleStatus)
@gs_od[actor.index] = actor.overdrive if @gs_od[actor.index] == nil
dx = actor.screen_x + 52 - @od_g_width
dy = y + ($game_temp.in_battle ? KGC::OD_jauge_OFF_Y_BATTLE : KGC::OD_jauge_OFF_Y)
dx -= 16 if $imported["HPSPAlter"] && !KGC::HPSP_DRAW_NAME_LUMP
gw = @gs_od[actor.index] * @od_g_width / KGC::OD_jauge_MAX
maximum = @gs_od[actor.index] == KGC::OD_jauge_MAX
else
@jauge_x = 0
dx = x + width - @od_g_width - 13
dy = y + ($game_temp.in_battle ? KGC::OD_jauge_OFF_Y_BATTLE : KGC::OD_jauge_OFF_Y)
gw = actor.overdrive * @od_g_width / KGC::OD_jauge_MAX
maximum = actor.overdrive == KGC::OD_jauge_MAX
end
# Schéma
if KGC::OD_jauge_SLANT
self.contents.fill_rect(dx, dy, @od_g_width + 7, 6, Color.new(0, 0, 0, 0))
# Graduation
gy = @od_g_height + 1
for i in 0...(@od_g_height + 2)
self.contents.blt(dx + i, dy + gy - i, @od_jauge, Rect.new(0, gy - i, @od_g_width + 2, 1))
end
# Effet de Substance
gy -= 1
gy2 = @od_g_height * (maximum ? 3 : 2) + 1
for i in 0...@od_g_height
self.contents.blt(dx + i + 2, dy + gy - i, @od_jauge, Rect.new(@jauge_x, gy2 - i, gw, 1))
end
# Normal
else
self.contents.fill_rect(dx, dy, @od_g_width + 2, @od_g_height + 2, Color.new(0, 0, 0, 0))
self.contents.blt(dx, dy, @od_jauge, Rect.new(0, 0, @od_g_width + 2, @od_g_height + 2))
gy2 = @od_g_height * (maximum ? 2 : 1) + 2
self.contents.blt(dx + 1, dy + 1, @od_jauge, Rect.new(@jauge_x, gy2, gw, @od_g_height))
end
end
end
#???????????????????????????????????????
#==============================================================================
# ¦ Window_BattleStatus
#==============================================================================
class Window_BattleStatus < Window_Base
#--------------------------------------------------------------------------
# ? Initialisation
#--------------------------------------------------------------------------
alias initialize_KGC_OverDrive initialize
def initialize
@jauge_x, @gs_od = 0, []
@od_g_width = @@_od_jauge.width / 3
@od_g_height = (@@_od_jauge.height - 2) / 3
# Exécute du processus d'origine
initialize_KGC_OverDrive
end
#--------------------------------------------------------------------------
# ? Rafraichissement
#--------------------------------------------------------------------------
alias refresh_KGC_OverDrive refresh
def refresh
# Exécute le processus d'origine
refresh_KGC_OverDrive
for i in 0...$game_party.actors.size
@gs_od[i] = $game_party.actors[i].overdrive
end
end
#--------------------------------------------------------------------------
# ? Renouvelement de la graduation
#--------------------------------------------------------------------------
alias update_KGC_OverDrive update
def update
# Exécute le processus d'origine
update_KGC_OverDrive
# L'image de la gauge est laissée
unless $imported["HPSPAlter"]
@jauge_x -= [@od_g_width / 20, 1].max
@jauge_x = @od_g_width * 2 if @jauge_x < 0
end
for i in 0...$game_party.actors.size
draw_actor_od_jauge($game_party.actors[i], 0, 0, 120)
end
end
end
#???????????????????????????????????????
#==============================================================================
# ¦ Scene_Battle
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ? Fin du combat
# result : Résultat (0:Victorieux 1:Lache 2:Défaite)
#--------------------------------------------------------------------------
alias battle_end_KGC_OverDrive battle_end
def battle_end(result)
case result
when 0 # Victorieux
for actor in $game_party.actors
next unless actor.exist?
# Quand le type d'OD est Victorieux
if actor.overdrive_type == 2
actor.overdrive += KGC::OD_GAIN_RATE[2]
end
end
when 1 # Lache
for actor in $game_party.actors
next unless actor.exist?
# Quand le type d'OD est Lache
if actor.overdrive_type == 3
actor.overdrive += KGC::OD_GAIN_RATE[3]
end
end
end
# Exécute le processus d'origine
battle_end_KGC_OverDrive(result)
end
end
#???????????????????????????????????????
#==============================================================================
# ¦ Scene_Battle
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ? Renouvelement de la graduation
#--------------------------------------------------------------------------
alias update_phase4_step2_KGC_OverDrive update_phase4_step2
def update_phase4_step2
if @active_battler.is_a?(Game_Actor)
# Augmentation
case @active_battler.overdrive_type
when 4 # Solo
alone = true
for actor in $game_party.actors
next if actor == @active_battler
# S'il y a un survivant, ce n'est pas considéré comme solo.
if actor.exist?
alone = false
break
end
end
od_up = alone ? KGC::OD_GAIN_RATE[4] : 0
when 5 # Action
od_up = KGC::OD_GAIN_RATE[5]
when 6 # Si Revenant
od_up = @active_battler.hp <= @active_battler.maxhp / 4 ? KGC::OD_GAIN_RATE[6] : 0
else
od_up = 0
end
@active_battler.overdrive += od_up
end
# Exécute le processus d'origine
update_phase4_step2_KGC_OverDrive
end
end
| |
|
shadow-clad Membre actif
Nombre de messages : 159 Age : 34 Localisation : je suis partout sauf devant mon ordi ^^ Date d'inscription : 21/11/2009
| Sujet: Re: [RMXP]Script D'overdrive Dim 28 Fév - 22:59 | |
| merci pour le post et au passage tu connaitrai pas un scrip qui permet que quand la j'auge est pleine de remplacer la commande attaque par la commande overdrive ou rajoute une commande en plus ? juste pour savoir sinon c'est pas grave ^^ | |
|
Dmon Bon membre
Nombre de messages : 135 Age : 29 Localisation : dans le neant Date d'inscription : 17/02/2010
| Sujet: Re: [RMXP]Script D'overdrive Dim 28 Fév - 23:05 | |
| oui... jvoulais le mettre demain moi... mais il faut pas une barre d'overdrive | |
|
Douad Petit membre
Nombre de messages : 44 Age : 31 Localisation : Osef :noel: Date d'inscription : 17/02/2010
| Sujet: Re: [RMXP]Script D'overdrive Dim 28 Fév - 23:21 | |
| Si Si vous voulez que je vous design une barre d'overdrive, y'a qu'à demander, les jauges sont ma spécialité. Et shadow clad non, je n'ai pas trouvé de scripts de limit break a la FFVII | |
|
shadow-clad Membre actif
Nombre de messages : 159 Age : 34 Localisation : je suis partout sauf devant mon ordi ^^ Date d'inscription : 21/11/2009
| Sujet: Re: [RMXP]Script D'overdrive Lun 1 Mar - 1:59 | |
| sans la barre c'est pas gênant ^^ c juste que mélangé les techniques overdrive dans les technique de base c'est pas super | |
|
kintoune Bon membre
Nombre de messages : 133 Age : 32 Localisation : Jamais loin Date d'inscription : 21/11/2009
| Sujet: Re: [RMXP]Script D'overdrive Lun 1 Mar - 14:30 | |
| Quelle modification veux-tu exactement? Je pourrais essayer de faire ça... | |
|
shadow-clad Membre actif
Nombre de messages : 159 Age : 34 Localisation : je suis partout sauf devant mon ordi ^^ Date d'inscription : 21/11/2009
| Sujet: Re: [RMXP]Script D'overdrive Lun 1 Mar - 15:59 | |
| en fait faire un system de limite ou overdrive ou quand la jauge est au max ou quand l'énergie est basse dans le menu de combat il y aurait une nouvelle commande qui apparaitrai a la place de attaquer ou qui s'ajouterait au menu de combat | |
|
Douad Petit membre
Nombre de messages : 44 Age : 31 Localisation : Osef :noel: Date d'inscription : 17/02/2010
| Sujet: Re: [RMXP]Script D'overdrive Lun 1 Mar - 22:29 | |
| Oui j'ai cherché ça sans succès :/ C'est vrai que ça serait mieux d'avoir un menu Overdrive en combat | |
|
Dmon Bon membre
Nombre de messages : 135 Age : 29 Localisation : dans le neant Date d'inscription : 17/02/2010
| Sujet: Re: [RMXP]Script D'overdrive Lun 1 Mar - 23:28 | |
| douad peut tu me faire une barre vite fait? | |
|
Douad Petit membre
Nombre de messages : 44 Age : 31 Localisation : Osef :noel: Date d'inscription : 17/02/2010
| Sujet: Re: [RMXP]Script D'overdrive Mar 2 Mar - 19:04 | |
| | |
|
Dmon Bon membre
Nombre de messages : 135 Age : 29 Localisation : dans le neant Date d'inscription : 17/02/2010
| Sujet: Re: [RMXP]Script D'overdrive Mer 3 Mar - 14:51 | |
| Un peu comme tu veux je la modifirai si necessaire. | |
|
Douad Petit membre
Nombre de messages : 44 Age : 31 Localisation : Osef :noel: Date d'inscription : 17/02/2010
| Sujet: Re: [RMXP]Script D'overdrive Mer 3 Mar - 17:31 | |
| ça te va? | |
|
Dmon Bon membre
Nombre de messages : 135 Age : 29 Localisation : dans le neant Date d'inscription : 17/02/2010
| Sujet: Re: [RMXP]Script D'overdrive Mer 3 Mar - 19:50 | |
| oui C'est meme mieux que ce que je pensais un jour tu me diras comment faire? dois je lui donnais un nom special. Edit: j'ai trouver:od_gauge.png voila le nom de la barre Mais j'arrive pas a changer le type de l'overdrive Quelqu'un peut mieux m'éxpliquer. | |
|
kilam1110 Webmaster
Nombre de messages : 1165 Age : 104 Localisation : Devant mon ordi Date d'inscription : 12/02/2009
| Sujet: Re: [RMXP]Script D'overdrive Mer 3 Mar - 20:19 | |
| - Citation :
- C'est meme mieux que ce que je pensais un jour tu me diras comment faire?
C'est un simple dégradé finalement, sous photofiltre ça se fait en 2-2 ^^ | |
|
kintoune Bon membre
Nombre de messages : 133 Age : 32 Localisation : Jamais loin Date d'inscription : 21/11/2009
| Sujet: Re: [RMXP]Script D'overdrive Mer 3 Mar - 20:22 | |
| | |
|
Douad Petit membre
Nombre de messages : 44 Age : 31 Localisation : Osef :noel: Date d'inscription : 17/02/2010
| Sujet: Re: [RMXP]Script D'overdrive Mer 3 Mar - 21:28 | |
| Et alors? Je lui ai fait quelque chose, il est content avec, alors je vois pas pourquoi tu critiques, ça t'amuse de descendre tout ce que font les gens? EN gros pour changer le type d'overdrive : TU crées un évent sur la map, peu importe l'apparence Tu clique sur insérer un script dans le menu et tu met ça : $game_actors [ID] overdrive_type = x tu remplace [ID] par l'ID du perso que tu veux mettre genre 01 pour le héros n°1 puis tu remplace le x par le numéro du type d'overdrive, aussi con que ça | |
|
Dmon Bon membre
Nombre de messages : 135 Age : 29 Localisation : dans le neant Date d'inscription : 17/02/2010
| Sujet: Re: [RMXP]Script D'overdrive Jeu 4 Mar - 22:53 | |
| | |
|
Contenu sponsorisé
| Sujet: Re: [RMXP]Script D'overdrive | |
| |
|