Day.png);">
Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker

RM 95
RM 2000/2003
RM XP
RM VX/VX Ace
RM MV/MZ

Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Tutos: Checklist de la composition (...) / Sorties: Dread Mac Farlane - episode 8 / Sorties: Dread Mac Farlane - episode 7 / Jeux: Ce qui vit Dessous / News: Quoi de neuf sur Oniromancie (...) / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

395 connectés actuellement

29388152 visiteurs
depuis l'ouverture

5 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

Planète Glutko

RPG Maker Détente

New RPG Maker

Tous nos partenaires

Devenir
partenaire



forums

Index du forum > Entraide > [vxace] gain d'xp par action[édité]


johnseed83 - posté le 23/09/2014 à 08:25:09 (56 messages postés)

❤ 0

Domaine concerné: script
Logiciel utilisé: vxace
bonjour

je souhaiterais pouvoir faire en sorte que les personnages gagnes de l'xp lorsqu'ils accomplisses une action en combat(attaquer/skill/item/défendre) mais pas a la fin du combat.

je vous donne un exemple :
actor[1] utilise attaque sur ennemy[1] = si il touche alors actor[1] +3 xp (si critique +bonus 1xp/ si ennemy tuée bonus 2xp )
actor[2] utilise compétence feu sur ennemy[1] = si il touche alors actor[2] +3 xp (si critique +bonus 1xp/ si ennemy tuée bonus 2xp )
actor[3] utilise compétence soin sur actor[2] = actor[3] +2 xp (si critique +bonus 1xp )
actor[4] utilise potion sur actor[3] = actor[4] +1 xp

le système d’expérience est le même que dans les tactical rpg .

j'avais trouver ce script si ca peut aider mais il donne l'xp a la fin du combat et non après l'action de l'acteur

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
 
=begin
#==============================================================================
 ** Battle Exp
 Author: Hime
 Date: Jun 4, 2012
------------------------------------------------------------------------------
 ** Change log
 Jul 15
   - added ActionResult as a variable for the formula
 Jun 4
   - Initial release
------------------------------------------------------------------------------   
 This script changes the exp system such that actors don't gain exp
 from winning a battle, but instead they gain "battle exp" by 
 successfully damaging the enemy.
 
 When you hit an enemy, you gain a certain amount of exp equal to
 a fraction of the total exp that the enemy would give.
 
 When you kill an enemy, the actor that killed the enemy received
 the total exp from the enemy, in addition to all of the previous
 hits.
 
 The battle exp formula takes several key variables:
 
   e = Enemy object
   a = Actor object
   r = Action Result object
#==============================================================================
=end
$imported = {} if $imported.nil?
$imported["Tsuki_BattleExp"] = true
#==============================================================================
# ** Configuration
#==============================================================================
module Tsuki
  module Battle_Exp
    
    # formula used to calculate "hit" exp
    Hit_Exp_Formula = "e.exp * (r.hp_damage / e.mhp.to_f)" 
    
    Max_Exp = 99999    # limit how much exp someone can gain from battle
  end
end
#==============================================================================
# ** Rest of the script
#==============================================================================
module BattleManager
  
  def self.display_exp
    $game_party.members.each {|actor|
      text = sprintf("%s gained %s exp!", actor.name, actor.battle_exp)
      $game_message.add('\.' + text)
    }
  end
end
 
class Game_Battler < Game_BattlerBase
  
  #record the last skill/item used that hit this battler
  alias :th_battle_exp_item_apply :item_apply
  def item_apply(user, item)
    @last_hit_item = item     #can be item or skill
    @last_hit_user = user    
    th_battle_exp_item_apply(user, item)
  end
end
 
class Game_Actor < Game_Battler
  
  attr_reader :battle_exp
  
  alias :th_battle_exp_init_actor :initialize
  def initialize(actor_id)
    th_battle_exp_init_actor(actor_id)
    @battle_exp = 0
  end
  
  #changes how exp is received
  alias :th_battle_exp_gain_exp :gain_exp
  def gain_exp(exp)
    exp = get_exp
    th_battle_exp_gain_exp(exp)
  end
  
  def get_exp
    return @battle_exp
  end
  
  def gain_battle_exp(exp)
    @battle_exp = [@battle_exp + exp, Tsuki::Battle_Exp::Max_Exp].min
  end
  
  # e = Game_Enemy
  # a = Game_Actor
  # r = Game_ActionResult
  def eval_hit_exp(e, a, r)
    return eval(Tsuki::Battle_Exp::Hit_Exp_Formula)
  end
    
  def gain_hit_exp(enemy, result)
    gained = eval_hit_exp(enemy, self, result)
    p "%s gained %d exp" %[@name, gained]
    gain_battle_exp(gained.to_i)
  end
  
  # clear battle exp after battle ends
  alias :th_battle_exp_battle_end :on_battle_end
  def on_battle_end
    th_battle_exp_battle_end
    @battle_exp = 0
  end
end
 
class Game_Enemy
  
  attr_accessor :last_hit_item
  attr_accessor :last_hit_user  
  
  alias :th_battle_exp_init_enemy :initialize
  def initialize(index, enemy_id)
    th_battle_exp_init_enemy(index, enemy_id)
    @last_hit_item = nil
    @last_hit_user = nil
  end
  
  alias :th_battle_exp_enemy_die :die
  def die
    th_battle_exp_enemy_die
    @last_hit_user.gain_battle_exp(enemy.exp) if @last_hit_user.is_a?(Game_Actor)
  end
  
  def item_apply(user, item)
    super
    @last_hit_user.gain_hit_exp(self, @result) if @last_hit_user.is_a?(Game_Actor)
  end
end
 



personnellement j'ai trouver comment supprimer le gains des point d'xp a la fin du combat
dans module BattleManager

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
def self.process_victory
    play_battle_end_me
    replay_bgm_and_bgs
    $game_message.add(sprintf(Vocab::Victory, $game_party.name))
    #display_exp
    gain_gold
    gain_drop_items
    #gain_exp
    SceneManager.return
    battle_end(0)
    return true
  end
 



merci


édité:
Après plusieurs jours, je suis parvenu a faire gagné au groupe de l'xp après les actions, mais pas moyen de faire gagner de l'xp uniquement au personnage qui a fait l'action.

Voici ce que j'ai fait

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
class Game_Enemy
  
  def item_apply(user, item)
    @result.clear
    @result.used = item_test(user, item)
    @result.missed = (@result.used && rand >= item_hit(user, item))
    @result.evaded = (!@result.missed && rand < item_eva(user, item))
    if @result.hit?
      unless item.damage.none?
        @result.critical = (rand < item_cri(user, item))
        make_damage_value(user, item)
        execute_damage(user)
# début de la fonction xp par personnage
      if $game_party.in_battle
      $game_party.all_members.each do |actor|
      actor.gain_exp(enemy.exp)
      text = sprintf(Vocab::ObtainExp, enemy.exp)
      $game_message.add('\.' + text)
    end
  end
#fin de la fonction xp par personnage
      end
      item.effects.each {|effect| item_effect_apply(user, item, effect) }
      item_user_effect(user, item)
    end
  end
 
end
 



Si vous pouviez me mètre sur une piste svp .
Merci

Index du forum > Entraide > [vxace] gain d'xp par action[édité]

repondre up

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe - Mentions légales

Plan du site

Communauté: Accueil | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts/Plugins | Ressources graphiques / sonores | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Tous les jeux | Jeux complets | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers