Day.png);">
Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker


Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Jeux: puie z / Jeux: Citymaime - Chapitre 1 / Jeux: Mer, îles et fous / News: Du neuf dans le making / News: Muma|Rope est disponible en (...) / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

353 connectés actuellement

30732293 visiteurs
depuis l'ouverture

2271 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

Offgame

Lumen

Hellsoft

Leo-Games

Tous nos partenaires

Devenir
partenaire



[Script] A-RPG basique avec des script (VX Ace)

Un petit système basique d'A-RPG pour Ace avec des scripts.

Ecrit par arttroy le 04/12/2012


❤ 0

sBonjour à tous et toutes amis oniromanciens, voilà un petit tutoriel de ma fabrication (enfin presque...) pour installer un système sommaire d'A-rpg pour RMVX ACE. Il explique toutes les étapes importantes à suivre pour y arriver. Actuellement cette base ne gère pas les gains d'or et d'expérience mais je pense que par la suite ce seront des choses que j'ajouterai alors ce tuto sera certainement amené à être modifié. J'espère que ça pourra servir à d'autres que moi et sans plus attendre entrons dans le vif du sujet...

I / Importation de ressources :

Tout d'abord, il vous faudra 10 images dans le dossier Pictures de votre dossier de jeu pour montrer les dégâts :
chiffredegat0.png
chiffredegat1.png
chiffredegat2.png
Jusqu'à 9.

Ensuite il vous faudra quatre images dans le dossier Animations :
attaquebas.png
attaquedroite.png
attaquegauche.png
attaquehaut.png

Dans le cas où vous utiliseriez des personnages avec quatre frames au lieu de trois (comme sur VX Ace), il vous faudra ce script : http://www.rpg-maker.fr/scripts-307-mapxp-characters-on-vxvxace.html.
Ensuite importez le charset (créé sur Loose Leaf, par exemple) et nommez le " $xp héros marche".

Et ça c'est le template pour l'animation pour ceux qui souhaitent créer la leur
image


II / Partie script :

Copiez ce code juste au dessus de main :

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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
module ABS_Config
  Default_Animation = 1
  Opacity_Burn = 10
  Enemy_Recover = 60
  #--------------------------------------------------------------------------
  # Ici vous pourrez modifier la touche action par défaut c'est X 
  # (touche A du clavier)
  #--------------------------------------------------------------------------
  Attack_Key = :X
  Player_Recover = 40
end
 
class Game_Map
  attr_accessor :enemies
  attr_accessor :damage_sprites
  alias abs_setup setup
  def setup(map_id)
    @enemies.nil? ? @enemies = [] : enemies.clear
    abs_setup(map_id)
  end
end
 
class ABS_Enemy
  include ABS_Config
  attr_accessor :hp
  attr_accessor :attack
  attr_accessor :defense
  attr_reader :name
  attr_reader :animation
  def initialize(id)
    enemy = Game_Enemy.new(0,id)
    @name = enemy.name
    note = enemy.enemy.note
    if note.include?("Animation=")
      aid = note.sub("Animation=","")
      @animation = aid.to_i  
    else
      @animation = Default_Animation
    end
    @hp = enemy.mhp
    @attack = enemy.atk
    @defense = enemy.def
    end
  end
  
class Game_Event < Game_Character
  attr_reader :enemy
  alias abs_setup_page_settings setup_page_settings
  alias abs_initialize initialize
  alias abs_update update
  alias abs_start start
  def initialize(map_id, event)
    @enemy = nil
    @recover =0
    abs_initialize(map_id, event)
  end
  def setup_page_settings
    abs_setup_page_settings
    check_enemy
  end
  def check_enemy
    unless @enemy.nil?
      @enemy = nil
      $game_map.enemies.delete(self) if $game_map.enemies.include?(self)
    end
    return if @list.nil?
    for command in @list
      next unless command.code == 108 or command.code == 408
      if command.parameters[0].include?("cmd:enemy=")
        id = command.parameters[0].sub("cmd:enemy=","")
        @enemy = ABS_Enemy.new(id.to_i)
        @trigger = 2
        $game_map.enemies.push(self)
      end
    end
  end
  def damage_enemy(value)
    jump(0,0)
    value -= @enemy.defense
    value = 0 if value < 0
    $game_map.damage_sprites.push(Damage_Sprite.new(self,value))
    @enemy.hp -= value
    if @enemy.hp <= 0
      $game_map.enemies.delete(self)
      RPG::SE.new("Collapse1",80).play
    end
  end
  def update
    if @enemy != nil
    @recover -= 1 if @recover > 0
    update_kill if @enemy.hp <= 0
    end
    abs_update
  end
  def update_kill
    if @opacity > 0
     @opacity-= ABS_Config::Opacity_Burn
    else
     @character_name = ""
     @opacity = 255
     @priority_type = 0
     @trigger = 0
     @enemy = nil
    end
  end
  def start
    @enemy.nil? ? abs_start : attack
  end
  def attack
    return if @enemy.hp <= 0 or @recover > 0
    @recover = ABS_Config::Enemy_Recover
    $game_player.animation_id = @enemy.animation
    $game_player.damage_hero(@enemy.attack)
  end
end
 
class Game_Player < Game_Character
  alias abs_initialize initialize
  alias abs_update update
  def initialize
    @wait = 0
    @recover = 0
    @kill_player = false
    abs_initialize
  end
  def update
    @recover -= 1 if @recover > 0
    update_attack if @recover == 0 and Input.trigger?(ABS_Config::Attack_Key)
    update_kill if @kill_player
    update_wait_time
    abs_update
  end
  def update_attack
    return if @kill_player
    for enemy in $game_map.enemies
      ax = @x - enemy.x
      ay = @y - enemy.y
      case @direction
      when 2
        attack_enemy(enemy) if ax == 0 and ay == -1
      when 4
        attack_enemy(enemy) if ay == 0 and ax == 1
      when 6
        attack_enemy(enemy) if ay == 0 and ax == -1
      when 8
        attack_enemy(enemy) if ax == 0 and ay == 1
      end
    end
    @can_move = true
    @wait = 25
  #--------------------------------------------------------------------------
  # Pour l'animation du héros, ça se passe ici, modifier la valeur de :
  #  @animation_id =
  # Le chiffre doit correspondre à celui de l'animation dans votre base de 
  # données
  # Positions :
  #  when 2 -> bas
  #  when 4 -> gauche
  #  when 6 -> droite
  #  when 8 -> haut
  #--------------------------------------------------------------------------
 
    case @direction
      when 2
        @animation_id = 5
      when 4
        @animation_id = 2
      when 6
        @animation_id = 3
      when 8
        @animation_id = 4
    end
  end
  def attack_enemy(event)
    hero = $game_party.members[0]
    event.damage_enemy(hero.atk)
    event.animation_id = hero.weapons[0].animation_id
    @recover = ABS_Config::Player_Recover
  end
  def damage_hero(value)
    jump(0,0)
    return if @kill_player
    hero = $game_party.members[0]
    value -= hero.def
    value = 0 if value < 0
    $game_map.damage_sprites.push(Damage_Sprite.new(self,value))
    if value > hero.hp
      hero.hp = 1
      @kill_player = true
      RPG::SE.new("Collapse1",80).play
    else
     hero.hp -= value
    end
  end      
  def update_kill
    if @opacity > 0
     @opacity-= ABS_Config::Opacity_Burn
    else
      SceneManager.goto(Scene_Gameover)
    end
  end
  def update_wait_time
    if @wait > 0
      @wait -= 1
    else
      @can_move = false
    end
  end
end
class Spriteset_Map
  alias abs_initialize initialize
  alias abs_update update
  alias abs_dispose dispose
  def initialize
  $game_map.damage_sprites = []
  abs_initialize
  end
  def update
    abs_update
    trash = []
    for sprite in $game_map.damage_sprites
      sprite.update
      trash.push(sprite) if sprite.disposed?
    end
    for item in trash
      $game_map.damage_sprites.delete(item)
    end
    trash.clear
  end
  def dispose
    abs_dispose
    for sprite in $game_map.damage_sprites
      sprite.bitmap.dispose
      sprite.dispose
    end
    $game_map.damage_sprites.clear
  end
end
  #--------------------------------------------------------------------------
  # Les dégâts sont limités d'origine à 999HP si vous voulez changer cela, 
  # modifiez ces lignes
  #     chiffre = [value%1000/100,value%100/10,value%10]
  #     for i in [0,1,2]
  #--------------------------------------------------------------------------
 
class Damage_Sprite < Sprite
  def initialize(target,value)
    super(nil)
    @target = target
    chiffre = [value%1000/100,value%100/10,value%10]
    for i in [0,1,2]
      if chiffre[i] == 0
        chiffre[i] = nil
      else
        break
      end
    end
    chiffre.compact!
    if chiffre.size == 0
      chiffre = [0]
    end
  #--------------------------------------------------------------------------
  # dans cette partie si vous utilisez d'autres images pour l'affichage des dégâts
  # respectez des dimensions de 19 X 24 ou modifiez les valeurs égales à celles-ci
  #--------------------------------------------------------------------------
 
    self.bitmap = Bitmap.new(19*chiffre.size,20)
    for i in 0...chiffre.size
      src_bitmap = Cache.picture("chiffredegat" + chiffre[i].to_s)
      src_rect = Rect.new(0,0,19,24)
      self.bitmap.blt(19*i, 0, src_bitmap, src_rect)
    end
  #--------------------------------------------------------------------------
  # Cette partie concerne l'affichage des dégâts modifiez la valeur de 
  # @target.screen_x ou @target.screen_y pour modifier la position de l'affichage
  #--------------------------------------------------------------------------
    if value >= 100 #centaines
      self.ox = 60
      self.x = @target.screen_x + 20
      self.y = @target.screen_y - 70
    elsif value >= 10 #dizaines
      self.ox = 50
      self.x = @target.screen_x + 40
      self.y = @target.screen_y - 70
    else #unités
      self.ox = 45
      self.x = @target.screen_x + 60
      self.y = @target.screen_y - 70
    end
    self.z = 999
    @timer = 20
  end
  def update
    self.x = @target.screen_x + 40
    self.y = @target.screen_y - 70
    if @timer > 0
      @timer -= 1
      self.zoom_x += 0.01
      self.zoom_y += 0.01
    else
      self.opacity > 0 ? self.opacity -= 15 : dispose
    end
  end
  def dispose
    self.bitmap.dispose
    super
  end
end



Une fois ceci fait, allez dans les scripts de base de RMVX Ace dans le Game_Player à la ligne 285 vous devriez trouver ça :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
  def movable?
    return false if moving?
    return false if @move_route_forcing || @followers.gathering?
    return false if @vehicle_getting_on || @vehicle_getting_off
    return false if $game_message.busy? || $game_message.visible
    return false if vehicle && !vehicle.movable?
    return true
  end



Remplacez par :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
  def movable?
    return false if moving?
    return false if @can_move
    return false if @move_route_forcing || @followers.gathering?
    return false if @vehicle_getting_on || @vehicle_getting_off
    return false if $game_message.busy? || $game_message.visible
    return false if vehicle && !vehicle.movable?
    return true
  end



Et voilà on en a fini avec les scripts...

III / Réglages :

Pour ce qui est du script tout ce que vous risquez d'avoir à modifier est commenté dans le code

Passons aux animations, pour chacune d'entre elle faites comme ceci :

Spoiler (cliquez pour afficher)


Spoiler (cliquez pour afficher)



1 : pas grand chose à ajouter...
2 : pour cette partie c'est pas très compliqué faites insérer jusqu'à avoir 6 frames ensuite contentez vous de sélectionner la pose voulue (1 et 2 pour la première, 3 et 4 pour la seconde, 5 et 6 pour la troisième) puis réglez là comme en "a" (numéro de la pose) et en "b" (à mettre impérativement comme ça)
3 : dans cet onglet changer le "frames 1 à 16" par "1 à 6"

IV / Créer les ennemis :

A partir de maintenant c'est super simple, sur votre map créez un event comme ceci :

Spoiler (cliquez pour afficher)


Spoiler (cliquez pour afficher)



Pour chaque monstre que vous créerez choisissez l'apparence et réglez tout comme en "1"
Puis dans l'event -> commande "insérer un commentaire" puis faites comme en "2", le chiffre correspondant au numéro de l'ennemi dans la base de données.
Pour finir dans la base de données allez dans l'onglet "ennemis" et faites comme en "3" le chiffre correspondant au numéro de l'animation de la base de données (c'est celle qui sera affichée sur le héros lors de l'attaque dudit monstre)

Et voilà c'est terminé. j'espère que cette base pourra servir à d'autres, pour d'éventuelles questions n'hésitez pas à me MP.
je tiens à remercier Mack avant tout , mais aussi Zeus81 et Zou qui m'ont aidé à modifier la base de script que j'avais élaborée grâce aux tutos youtube de Khas Arcthunder (auteur du sapphire system).



Leicsirg - posté le 06/12/2012 à 18:54:00 (830 messages postés)

❤ 0

ça à l'air sympa tout ça! Un screen du résultat final?
Je ne comptes pas l'utiliser mais en tout cas ça pourra servire à plus d'un ;)

Livestreamz | FACTIONS: l'appel aux armes


arttroy - posté le 12/12/2012 à 19:15:55 (2394 messages postés)

❤ 0

Just working

Et voilà sitôt vu sitôt fait :

image

Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ?


Ryukko - posté le 10/01/2013 à 12:39:22 (30 messages postés)

❤ 0

Salut! Salut!

Je fais mes débuts avec RPG Maker (je suis sur VX Ace), et merci pour ces tutos!

J'ai un soucis avec celui-ci car quand je lance le jeu après avoir tout bien fait comme il le fallait, j'obtiens un message d'erreur dans le script ABS Config

ligne 252 : Syntaxe error occurred

unexpected tEQ
if chiffre<i> == 0

Que puis-je faire pour arranger ceci?
Merci


treyamai - posté le 30/01/2013 à 17:15:17 (2 messages postés)

❤ 0

Salut,

J'ai eu la même erreur, j'ai résolu le problème en remplaçant tous les chiffre<i> par chiffre

En tout cas bravo pour le script je test ça en ce moment :)


Zeus81 - posté le 30/01/2013 à 19:46:28 (11071 messages postés)

❤ 0

Par chiffre[i] plutôt. :rit2


treyamai - posté le 01/02/2013 à 18:25:26 (2 messages postés)

❤ 0

Je n'avais même pas vue que les crochets n'apparaissaient pas ^^ Dsl
Mais oui, bien vue Zeus81, merci de ta correction :)


arttroy - posté le 06/03/2013 à 18:53:31 (2394 messages postés)

❤ 0

Just working

Merci Zeus, fan de tes interventions monsieur ! Finalement le problème semble réglé :p

Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ?


Théodren - posté le 18/06/2013 à 15:59:33 (255 messages postés)

❤ 0

Je suis juste au-dessus

Super pratique merci !

Francky


Vince_1_2_0 - posté le 10/11/2013 à 19:37:17 (1 messages postés)

❤ 0

Vraiment génial le tuto! Mais je me demandais si ce serai possibles de monter l'exp quand on tue des mobs. Merci d'avance.


Kagenekko - posté le 01/03/2014 à 18:13:23 (15 messages postés)

❤ 0

Grr, encore un problème ! :'(
Il surgit quand je veux attaquer un ennemi !

line177 : NoMethodError occured
undefined method : "animation_id" for nil:Class

J'ai finalement retiré la ligne 177 et ça marche. :/
J'aimerai juste savoir, comment fait-on pour avoir un objet dès que le mob est mort ? Merci !


Ojhink - posté le 08/06/2014 à 16:40:52 (5 messages postés)

❤ 0

Bonjour à tous je cherche à faire un a-rpg donc j'ai suivi ce tuto, mais après chaque réglages paramétrés minutieusement je n'abouti pas au résultat espéré...
Je m'explique :
- Lorsque je veut faire une attaque sur la gauche ça me fait une attaque vers la droite;
- Lorsque je fais une attaque sur la droite ça la fait vers le haut;
- Quand je fais une attaque vers le haut ça la fait vers le bas;
- Et finalement quand j'en fais une vers le bas ça me sort un autre attaque avec plein de coups qui apparaissent...

Donc je fais appel à vous tous car je suis nouveau sur RPG Maker VX Ace (c'est d'ailleurs mon premier RPG Maker) et encore une fois j'ai suivi le tuto à la lettre + les commentaires signalant des bugs et leurs réponses qui les ont résolu.
En gros je penses avoir tout fait correctement...

Et désolé si je parait un peu brutal mais ça urge un peut car je ne peux pas continuer le développement du jeu pour le moment...

Merci à vous :sourire2


Uvnaxwao - posté le 12/11/2014 à 13:11:41 (2 messages postés)

❤ 0

euh...
c'est normal qu'il me dise

"unable to find :
chiffredegat[0,2,9]"

car j'ai pas trouvé comment regler ce probleme...

EDIT : ah ben maintenant il me dit 0,0,0 au lieu de 0,2,9
WTF ><:feu:feu:feu

EDIT2 : OMG en fait une fois sur deux il dit 0,2,9 et le reste 0,0,0
--" sérieux... sa deviens lourd...:leure3:fou:feu


raphidu13 - posté le 24/11/2014 à 13:57:56 (3 messages postés)

❤ 0

Bonjour,
je vouler savoir si la suite (qui gére xp + or)
était scripter ??

ou ya t-il moyen de le faire autrement que par script ?

aprés la mort d'un monstre ?


Dont - posté le 06/12/2014 à 22:08:05 (1 messages postés)

❤ 0

Bonjour, je me permet de relancer ce post.

Ce serait possible d'avoir un script permettant le loot des montres après leurs morts ?
Sinon un autre lien vers un autre A-RPG permettant le loots aussi, merci !


Darkairy - posté le 22/12/2014 à 21:58:10 (1 messages postés)

❤ 0

En train de maker

C'est sympa le problème c'est qu'on a qu'une animation :feu :fou


Speaky - posté le 08/08/2015 à 16:34:31 (2 messages postés)

❤ 0

Les charset truc :X sont zarb,car qd j'en fais l'apparance d'un personnage,il est décallé O.o !!!






HELP HELP SVP !


Anatho5 - posté le 04/10/2015 à 17:19:28 (1 messages postés)

❤ 0

Je trouve pas la Game-player il est ou ? Merci :D


Athanazya - posté le 19/03/2016 à 16:02:56 (9 messages postés)

❤ 0

les images ne fonctionne plus :(


shadowsheart - posté le 28/05/2016 à 19:24:01 (41 messages postés)

❤ 0

Athanazya a dit:


les images ne fonctionne plus :(

je ne les vois pas...Je fais quoi ?....:leure2

K-P


Thalkwenda - posté le 24/02/2019 à 15:42:16 (1 messages postés)

❤ 0

Salut, pareil les images ne sont plus accessibles...

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