Light RPG forum
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.



 
AccueilPortailRechercherDernières imagesS'enregistrerConnexion
Le Deal du moment : -28%
Précommande : Smartphone Google Pixel 8a 5G ...
Voir le deal
389 €

 

 Effets pour les compétences

Aller en bas 
AuteurMessage
sarana
Protecteur de la Lumière
Protecteur de la Lumière
sarana


Nombre de messages : 160
Localisation : Thailande
Date d'inscription : 09/06/2006

Effets pour les compétences Empty
MessageSujet: Effets pour les compétences   Effets pour les compétences EmptySam 10 Juin - 10:01

Ici, je posterai des effets pour les compétences régulièrement. Si vous en avez besoin d'un en particulier demandez, je chercherai !
TOUS LES SCRIPTS ONT ÉTÉ FAITS PAR Trickster !!!

1. Cruauté
Description : le plus bas est le nombre de PV de l'ennemi, le plus de dommages cette attaque infligera.

Code : Tout d'abord créez un attribut "Cruauté" dans la base de données. Allez ensuite dans Game_Battler 3, ligne 173, et ajoutez ça en dessous :
Code:

if skill.element_set.include?(ID de l'attribut)
@damage_hp = 10 * user.maxhp / user.hp + self.damage
#changez la formule si ça vous dit
end
N'oubliez pas de changer (ID de l'attribut) en...l'ID de votre attribut cruauté...

En dessous, mettez :
Code:

if @damage_hp != 0 and @damage_hp != nil
self.damage = @damage_hp
last_hp = self.hp
self.hp -= @damage_hp if @damage_hp.is_a?(Numeric)
@hp_damaging = true
else
last_hp = self.hp
self.hp -= self.damage
end

Puis mettez ça en dessous de la ligne 104 :
Code:

@hp_damaging = false
@damage_hp = 0

Ligne 183 et en dessous, il y a ça :
Code:
      if skill.power == 0
        # ダメージに空文字列を設定
        self.damage = ""
        # ステートに変化がない場合
        unless @state_changed
          # ダメージに "Manqué" を設定
          self.damage = "Manqué"
        end
      end

Remplacez le par :
Code:

if skill.power == 0 and not @hp_damaging
# Set damage to an empty string
self.damage = ""
# If state is unchanged
unless @state_changed
# Set damage to "Manqué"
self.damage = "Manqué"
end
end

En dessous il y a ces lignes :
Code:
last_hp = self.hp
self.hp -= self.damage

Enlevez les. Tous les événements avec l'attribut "Cruauté" font maintenant plus de dégâts quand les PV sont bas !



2. Pourcentage d'effet
Description : avec ce script, vous pourrez calculer les dégâts en % de PV : 50%, 25%, et même 100% pour une super attaque !
Code : En dessous de la ligne 173 (un peu plus bas si vous avez ajouté d'autre effets), ajoutez ça :
Code:

if skill.element_set.include?(DIRECT HP ID)
@damage_hp = self.hp * (100 - skill.power) / 100
end
OPTIONAL
if skill.element_set.include?(DIRECT MAX HP ID)
@damage_hp = self.maxhp * (100 - skill.power) / 100
end
Le taux d'effet d'une attaque est maintenant le pourcentage de PV qu'elle enlève à l'ennemi.


3. Échange
Description : vous échangez les PV et les MP avec la cible. Utile contre un boss où comme "sacrifice" : un perso nul mais en pleine force donne ses PV à un super combattant gravement blessé.

Code : Créez un attribut nommé "échange" et ligne 173 dans Game_Battler 3 (un peu en dessous si vous avez mis d'autres effets) ajoutez ça :
Code:

if skill.element_set.include?(ELEMENT ID)
savehp = 0
savesp = 0
savehp += self.hp
savesp += self.sp
self.hp = user.hp
self.sp = user.sp
user.hp = savehp
user.sp = savesp
self.damage = "Swapped"
end
Encore une fois, n'oubliez pas de changer (ELEMENT ID).

À PARTIR DE MAINTENANT TOUS LES SCRIPTS VONT SOUS LA LIGNE 173 À PEU PRÈS À PART MENTION SPÉCIALE Exclamation Exclamation Exclamation N'oubliez pas que si vous devez ajoutez un script en dessous de la ligne 183 au lieu de 173, ce que vous devriez ajouter en dessous de 183 va se placer sous 193. Il faut un peu calculer...


4. Absorber les PV
Description : Cette compétence aspire les dégâts de l'ennemi et les donne au joueur.

Code : Où vous savez mettez ça :
Code:

if skill.element_set.include?(ELEMENT ID)
if skill.variance == 0 and self.damage.abs > 0
user.hp += rand(self.damage)
else
user.hp += self.damage * skill.variance / 100
end
end

Ligne 153 (ne la descendez pas, elle ne bouge pas), trouvez ça :
Code:
      if skill.variance > 0 and self.damage.abs > 0
        amp = [self.damage.abs * skill.variance / 100, 1].max
        self.damage += rand(amp+1) + rand(amp+1) - amp
      end
Et remplacez le par :
Code:

if skill.element_set.include?(ELEMENT ID)
if skill.variance > 0 and self.damage.abs > 0
amp = [self.damage.abs * 15 / 100, 1].max
self.damage += rand(amp+1) + rand(amp+1) - amp
end
else
if skill.variance > 0 and self.damage.abs > 0
amp = [self.damage.abs * skill.variance / 100, 1].max
self.damage += rand(amp+1) + rand(amp+1) - amp
end
end

Mais les PV ne viendront qu'au tour suivant...


5. Dégâts calculés par le nombre d'objets détenus
Description : Le dégâts des attaques augmente avec le nombre d'objets détenus.

Code : Ajoutez ça à l'endroit habituel :
Code:

if skill.element_set.include?(17)
@damage_hp = $game_party.items.size
@damage_hp *= skill.variance
end

Et dans Game_Party, ajoutez attr_reader : items au début, vous verrez vite où...


6. Dégâts calculés par le nombre de compétences connues
Description : un peu comme le 5 sauf que c'est par rapport aux compétences apprises...
Code : (je ne dis plus où mettre, vous connaissez l'endroit par défaut...)
Code:

if skill.element_set.include?(18) and user.is_a?(Game_Actor)
@damage_hp = user.skills.size
@damage_hp *= skill.variance
elsif skill.element_set.include?(18) and user.is_a?(Game_Enemy)
@damage_hp = self.skills.size
@damage_hp *= skill.variance
end


7. Dégâts par rapport à l'argent possédé
Description : Même que 5 et 6 mais avec l'or...
Code :
Code:

if skill.element_set.include?(18) and user.is_a?(Game_Actor)
@damage_hp = user.skills.size
@damage_hp *= skill.variance
elsif skill.element_set.include?(18) and user.is_a?(Game_Enemy)
@damage_hp = self.skills.size
@damage_hp *= skill.variance
end


8. Le plus on l'utilise le mieux c'est
Description : le plus vous utilisez une attaque, le plus efficace elle est.
Code :
Code:

if skill.element_set.include?(18) and user.is_a?(Game_Actor)
@damage_hp = user.skills.size
@damage_hp *= skill.variance
elsif skill.element_set.include?(18) and user.is_a?(Game_Enemy)
@damage_hp = self.skills.size
@damage_hp *= skill.variance
end


9. Le plus on l'utilise le mieux c'est (2)
Description : même que 8 mais toutes les attaques d'un attribut augmente quand on utilise une attaque de cet attribut.
Code :
Code:
if skill.element_set.include?(21)
multiplier = 0
for i in user.skills
if $data_skills[i].element_set.include?(skill.variance)
multiplier += 1
end
if multiplier == user.skills.size
multiplier *= 1.5
end
end
@damage_hp = self.damage * (1.20625 ** multiplier) + rand(5 * multiplier)
@damage_hp = Integer(@damage_hp)
end

Ligne 153 à peu près trouvez ça :
Code:
if skill.variance > 0 and self.damage.abs > 0
amp = [self.damage.abs * skill.variance / 100, 1].max
self.damage += rand(amp+1) + rand(amp+1) - amp
end

Et remplacez le par :
Code:

if not skill.element_set.include?(21) and not skill.element_set.include?(22)
amp = [self.damage.abs * 15 / 100, 1].max
self.damage += rand(amp+1) + rand(amp+1) - amp
elsif skill.variance > 0 and self.damage.abs > 0
amp = [self.damage.abs * skill.variance / 100, 1].max
self.damage += rand(amp+1) + rand(amp+1) - amp
end

10. Plus on est de fous, plus on fait mal...
Description : si un autre membre de l'équipe connaît la même attaque elle fait plus de dégâts.

Code :
Code:
if skill.element_set.include?(22)
for actor in $game_party.actors
if actor.skills.include?(skill.variance)
multiplier += 1
end
if multiplier == $game_party.actors.size
multiplier += 1
end
end
@damage_hp = self.damage * (1.5 ** multiplier) + rand(5 * multiplier)
@damage_hp = Integer(@damage_hp)
end

11. Formule de combat Pokémon
Description : dans Pokémon, il y a une autre formule de dégâts que dans RMXP. La voilà.
Code :
Code:

if skill.element_set.include?(25) and not user.is_a?(Game_Enemy)
level = user.level
power = get_power
attack = skill.atk_f
attack1 = user.atk
defense = skill.pdef_f
defense1 = self.pdef
eff = elements_correct(skill.element_set) / 100
multiplier = rand(255 - 217 + 1) + 217 - 1
critical = 1
if rand(100) < 4 * attacker.dex / self.agi
critical = 2
end
@damage_hp = ((2 * level / 5 + 2) * power * (attack1 * attack)/(defense1 * defense) / 50 + 2) * eff * multiplier / 255 * critical
end

12. Clonage
Description : vous clonez un ennemi et le rajoutez à vos ennemis. Utile si la personne à cloner est affectée de folie ou si vous voulez tout plein d'expérience.
Code :
Code:

if elements.include?(17) #Clone
$game_party.add_enemy(self)
$game_party.actors[-1].remove_after = true
if skill.variance != 0
$game_party.actors[-1].remove_turns = skill.variance
end
end

Dans Game_Temp, ajoutez ça, vous verrez vite où :
Code:
attr_accessor :remove_after # remove at end of battle 19
attr_accessor :remove_turns # number of turns to be removed 19
En dessous ajoutez :
Code:

def remove_states_battle
for i in @states.clone
if $data_states[i].battle_only
remove_state(i)
end
end
if self.remove_after
$game_party.remove_actor(self.id)
end
end

def remove_states_auto
for i in @states_turn.keys.clone
if @states_turn[i] > 0
@states_turn[i] -= 1
elsif rand(100) < $data_states[i].auto_release_prob
remove_state(i)
end
end
if self.remove_turns != nil
self.remove_turns -= 1
if self.remove_turns == 0
self.remove_turns = nil
$game_party.remove_actor(self.id)
end
end
end
end

N'importe où dans Game_Party, mettez ça :
Code:

def add_enemy(enemy)
i = 0
while @actors.include?($game_actors[9+i])
i += 1
end
$game_actors[9+i].setup(9+i)
$game_actors[9+i].copy_stats(enemy, 9+i)
if @actors.size < 4
@actors.push($game_actors[9+i])
$game_player.refresh
end
end

Et n'importe où dans Game_Party, mettez :
Code:

def copy_stats(enemy, id)
actor = $data_actors[id]
@actor_id = id
@name = enemy.name
@character_name = self.character_name
@character_hue = self.character_hue
@battler_name = enemy.battler_name
@battler_hue = enemy.battler_hue
@class_id = 9 #Enemy class id
@weapon_id = 0
@armor1_id = 0
@armor2_id = 0
@armor3_id = 0
@armor4_id = 0
@level = 1
@exp_list = Array.new(101)
make_exp_list
@exp = @exp_list[@level]
@skills = []
for action in enemy.actions
@skills.push(action.skill_id) if action.skill_id != nil
end
@hp = enemy.maxhp
@sp = enemy.maxsp
@states = []
@states_turn = {}
@maxhp_plus = enemy.maxhp - base_maxhp
@maxsp_plus = enemy.maxsp - base_maxsp
@str_plus = enemy.str - base_str
@dex_plus = enemy.dex - base_dex
@agi_plus = enemy.agi - base_agi
@int_plus = enemy.int - base_int
@eva_plus = enemy.eva
@atk_plus = enemy.atk
@pdef_plus = enemy.pdef
@mdef_plus = enemy.mdef
end

13. Résurrection MAX
Description : ressuscite tous vos alliés et fait mal à l'ennemi.
Code :
Code:

if elements.include?(18) #+ revive
for actor in $game_party.actors
if actor.hp0?
actor.states_minus([1])
actor.hp = skill.variance * actor.maxhp / 100
end
end
end

14. Barrière
Description : la personne ciblée défend ses alliés et évite toutes les attaques.
Code :
Code:

if elements.include?(19) #Defender
self.battle_flags = 'defender'
self.turns_bf = skill.variance
end

if elements.include?(20) #Hidden
self.battle_flags = 'hidden'
self.turns_bf = skill.variance
end

Dans Game_Temp (voyez où), ajoutez ça :
Code:

attr_accessor :battle_flags #21-22 special flags
attr_accessor :turns_bf #21-22 turns for above

Et ça n'importe où dans le même script :
Code:

def remove_states_battle
for i in @states.clone
if $data_states[i].battle_only
remove_state(i)
end
end
self.battle_flags = nil
self.turns_bf = nil
end

def remove_states_auto
for i in @states_turn.keys.clone
if @states_turn[i] > 0
@states_turn[i] -= 1
elsif rand(100) < $data_states[i].auto_release_prob
remove_state(i)
end
end
if self.turns_bf != nil
self.turns_bf -= 1
if self.turns_bf == 0
self.turns_bf = nil
self.battle_flags = nil
end
end
end
end

Enfin mettez ça quelque part dans Game_Party :
Code:

def smooth_target_actor(actor_index)
# Get an actor
# If an actor exists
for actor in @actors
if actor.battle_flags == 'defender'
index = @actors.index(actor)
return @actors[index]
end
end

actor = @actors[actor_index]
if actor != nil and actor.exist?
if actor.battle_flags != 'hidden'
return actor
end
end

# Loop
for actor in @actors
# If an actor exists
if actor.exist?
if actor.battle_flags != 'hidden'
return actor
end
end
end
end

15. Longues batailles = gros dégâts
Description : quand la bataille s'allonge, les attaques deviennnent plus efficaces.
Code :
Code:
if elements.include?(21) #turn damage
@damage_hp = @num_turns + self.damage
@damage_hp *= Integer(1.01625 ** @num_turns)
end

Mettez ça dans Game_Temp (voyez où) :
Code:
attr_accessor :num_turns #number of turns of battle

Et n'importe où dans le même script :
Code:
def remove_states_battle
for i in @states.clone
if $data_states[i].battle_only
remove_state(i)
end
end
self.num_turns = 0
end

def remove_states_auto
for i in @states_turn.keys.clone
if @states_turn[i] > 0
@states_turn[i] -= 1
elsif rand(100) < $data_states[i].auto_release_prob
remove_state(i)
end
end
@num_turns += 1
end

16. Trop sauver c'est mauvais pour la santé !
Description : plus on sauve, moins les attaques sont efficaces.
Code :
Code:
if elements.include?(22) #save damage
@damage_hp = $game_system.save_count + self.damage
@damage_hp *= Integer(100 ** (1.0/$game_system.save_count)) - 1
end

17. Échange (2)
Description : vous échangez vos PV avec vos MP. Sympa pour un guerrier affaibli !
Code :
Code:
if elements.include?(23) #Swap 2
save_hp = self.hp
save_sp = self.sp
self.hp = save_sp
self.sp = save_hp
end
(Faites en sorte que l'attribut 23 soit "échange 2". Toutes les attaques avec cette attribut seront un échange 2.)

18. Échange (3)
Description : la résistance est inversée. Si un monstre résiste bien au feu, il y est maintenant vulnérable !
Code :
Code:
if elements.include?(24) #inversion
@damage_hp = 100 / self.damage + rand(self.damage)
end
(Faites en sorte que l'attribut 30 soit "échange 3". Toutes les attaques avec cette attribut seront un échange 3.)

19. Cadeau
Description : le joueur gagne un cadeau quand il utilise cette attaque.
Code :
Code:
if elements.include?(31)
@damage_hp = self.damage
if rand(100) > skill.variance
@damage_hp *= -1
end
end
(Faites en sorte que l'attribut 32 soit "cadeau". Toutes les attaques avec cette attribut donneront un cadeau.)
Revenir en haut Aller en bas
 
Effets pour les compétences
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» DLL officielles pour RPG Maker XP
» pour pouvoir pecher
» Script pour une perspective !
» RGSS (Pour RPG Maker)
» Mon projet...sans nom pour le moment

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Light RPG forum :: Rpg Maker :: Scriptes-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser