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

375 connectés actuellement

29388183 visiteurs
depuis l'ouverture

5 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

RPG Maker Détente

Alex d'Or

Planète Glutko

Kingdom Ultimate

Guelnika & E-magination

Tous nos partenaires

Devenir
partenaire



forums

Index du forum > Entraide > [RMXP] Script Combat vue de côté


Slime55 - posté le 16/08/2013 à 19:29:12 (442 messages postés)

❤ 0

Domaine concerné: Script
Logiciel utilisé: RMXP


Bonjour, j'utilise ce script pour le combat vue de côté

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
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
#==============================================================================
#++?????????(?????????)ver. 1.14++
#Script by ???
#http://rpg.para.s3p.net/
#------------------------------------------------------------------------------
# ????????????????????????
#==============================================================================
 
module SDVA
 
X_LINE = 450 # ????????????
Y_LINE = 280 # ????????????
X_SPACE = 75 # ?????????????
Y_SPACE = 100 # ?????????????
X_POSITION = 35 # ??[????????]????
Y_POSITION = -10 # ??[????????]????
 
ATTACK_MOVE = true # ???????????( true / false )
SKILL_MOVE = true # ??????????????( true / false )
ITEM_MOVE = false # ???????????????( true / false )
MOVE_STEP = 1 # ????
MOVE_PIXEL = 10 # ???????????
 
PARTY_POS = 1 # ?????????( 0:? / 1:? / 2:? / 3:? )
 
WINDOWPOS_CHANGE = true # ??????????????????????( true / false )
 
end
 
#==============================================================================
# ? Game_Actor
#==============================================================================
 
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ? ????? X ?????
#--------------------------------------------------------------------------
def screen_x
if self.index != nil
# ?????
pos = $data_classes[self.class_id].position
x_pos = pos * SDVA::X_POSITION
scr_x = self.index * SDVA::X_SPACE + SDVA::X_LINE + x_pos
# ??????????
if self.current_action.move_action == true
# ????
scr_x += @shift_x
end
return scr_x
else
return 0
end
end
#--------------------------------------------------------------------------
# ? ????? Y ?????
#--------------------------------------------------------------------------
def screen_y
if self.index != nil
# ?????
pos = $data_classes[self.class_id].position
y_pos = pos * SDVA::Y_POSITION
scr_y = self.index * SDVA::Y_SPACE + SDVA::Y_LINE + y_pos
# ??????????
if self.current_action.move_action == true
# ????
scr_y += @shift_y
end
return scr_y
else
return 0
end
end
#--------------------------------------------------------------------------
# ? ????? Z ?????
#--------------------------------------------------------------------------
def screen_z
if self.index != nil
return self.index
else
return 0
end
end
end
 
#==============================================================================
# ? Game_Battler (???? 1)
#==============================================================================
 
class Game_Battler
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
attr_reader :pattern # ??????
attr_reader :trans_x # X???????
attr_reader :moving # ??????
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
alias initialize_sdva initialize
def initialize
initialize_sdva
move_reset
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def move
@moving = 1
if @step < SDVA::MOVE_STEP
# ??????????
@pattern = (@pattern + 1) % 4
@step += 1
move_step
else
# ????
@pattern = 1
@moving = 2
end
end
#--------------------------------------------------------------------------
# ? ????
#--------------------------------------------------------------------------
def move_step
# ???????????????????
case SDVA::PARTY_POS
when 0
@shift_y = @step * SDVA::MOVE_PIXEL
when 1
@shift_x = -(@step * SDVA::MOVE_PIXEL)
when 2
@shift_x = @step * SDVA::MOVE_PIXEL
when 3
@shift_y = -(@step * SDVA::MOVE_PIXEL)
end
end
#--------------------------------------------------------------------------
# ? ???????
#--------------------------------------------------------------------------
def move_reset
@moving = 0
@pattern = 0
@step = 0
@shift_x = 0
@shift_y = 0
end
end
 
#==============================================================================
# ? Game_BattleAction
#==============================================================================
 
class Game_BattleAction
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
attr_accessor :move_action # ??????????
#--------------------------------------------------------------------------
# ? ???
#--------------------------------------------------------------------------
alias clear_sdva clear
def clear
clear_sdva
@move_action = false
end
end
 
#==============================================================================
# ? Sprite_Battler
#==============================================================================
 
class Sprite_Battler < RPG::Sprite
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
alias update_sdva update
def update
# ????????????????
if @battler.is_a?(Game_Actor)
# ????????????????????
# ??????
if @battler.battler_name != @battler_name or
@battler.battler_hue != @battler_hue or
@battler.current_action.basic == 0 or
@battler.current_action.kind != 3
# ????????????
@character_name = @battler.character_name
@character_hue = @battler.character_hue
# ???????????
#self.bitmap = RPG::Cache.character(@character_name, @character_hue)
#cw = self.bitmap.width 
#ch = self.bitmap.height 
#@width = cw
#@height = ch
if @battler.current_action.move_action == true
# ????
@battler.move
else
@battler.move_reset
end
# ?????????
#sx = @battler.pattern * cw
#sy = SDVA::PARTY_POS * ch
#self.src_rect.set(sx, sy, cw, ch) 
#self.ox = @width / 2
#self.oy = @height
# ??????????? 0 ???
if @battler.hidden
self.opacity = 0
end
end
end
update_sdva
end
end
 
#==============================================================================
# ? Scene_Battle
#==============================================================================
 
class Scene_Battle
#--------------------------------------------------------------------------
# ? ????????????????????
#--------------------------------------------------------------------------
alias phase3_setup_command_window_sdva phase3_setup_command_window
def phase3_setup_command_window
phase3_setup_command_window_sdva
if SDVA::WINDOWPOS_CHANGE
# ???????????????????
case SDVA::PARTY_POS
when 0
x_pos = @active_battler.screen_x - (@actor_command_window.width/2)
y_pos = @active_battler.screen_y
when 1
x_pos = @active_battler.screen_x - @actor_command_window.width - 16
y_pos = @active_battler.screen_y - @actor_command_window.height
when 2
x_pos = @active_battler.screen_x + 16
y_pos = @active_battler.screen_y - @actor_command_window.height
when 3
x_pos = @active_battler.screen_x - (@actor_command_window.width/2)
y_pos = @active_battler.screen_y - @actor_command_window.height - 48
end
@actor_command_window.x = x_pos >= 0 ? x_pos : 0
@actor_command_window.x = x_pos+@actor_command_window.width <= 640 ? x_pos : 640-@actor_command_window.width
@actor_command_window.y = y_pos >= 0 ? y_pos : 0
@actor_command_window.y = y_pos+@actor_command_window.height <= 480 ? y_pos : 480-@actor_command_window.height
# ??????????????????
@actor_command_window.z = 9999
end
end
#--------------------------------------------------------------------------
# ? ?????? (??????? ???? 3 : ??????????)
#--------------------------------------------------------------------------
alias update_phase4_step3_sdva update_phase4_step3
def update_phase4_step3
if SDVA::ATTACK_MOVE
if @active_battler.current_action.basic == 0
@active_battler.current_action.move_action = true
end
end
if SDVA::SKILL_MOVE
if @active_battler.current_action.kind == 1
@active_battler.current_action.move_action = true
end
end
if SDVA::ITEM_MOVE
if @active_battler.current_action.kind == 2
@active_battler.current_action.move_action = true
end
end
# ??????????????????????
if @active_battler.is_a?(Game_Actor) and
@active_battler.current_action.move_action
# ?????
if @active_battler.moving == 2
update_phase4_step3_sdva
end
elsif @active_battler.moving == 0
update_phase4_step3_sdva
end
end
#--------------------------------------------------------------------------
# ? ?????? (??????? ???? 6 : ??????)
#--------------------------------------------------------------------------
alias update_phase4_step6_sdva update_phase4_step6
def update_phase4_step6
@active_battler.current_action.move_action = false
@active_battler.move_reset
update_phase4_step6_sdva
end
end
 
#==============================================================================
# ? Spriteset_Battle
#==============================================================================
 
class Spriteset_Battle
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
alias initialize_sdva initialize
def initialize
initialize_sdva
@viewport2.z = 1
end
end
 
#==============================================================================
# ? Arrow_Actor
#==============================================================================
 
class Arrow_Actor < Arrow_Base
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
alias update_sdva update
def update
update_sdva
# ?????
if Input.repeat?(Input::DOWN)
$game_system.se_play($data_system.cursor_se)
@index += 1
@index %= $game_party.actors.size
end
# ?????
if Input.repeat?(Input::UP)
$game_system.se_play($data_system.cursor_se)
@index += $game_party.actors.size - 1
@index %= $game_party.actors.size
end
end
end
 
#==============================================================================
# ? Arrow_Enemy
#==============================================================================
 
class Arrow_Enemy < Arrow_Base
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
alias update_sdva update
def update
update_sdva
# ?????
if Input.repeat?(Input::DOWN)
$game_system.se_play($data_system.cursor_se)
$game_troop.enemies.size.times do
@index += 1
@index %= $game_troop.enemies.size
break if self.enemy.exist?
end
end
# ?????
if Input.repeat?(Input::UP)
$game_system.se_play($data_system.cursor_se)
$game_troop.enemies.size.times do
@index += $game_troop.enemies.size - 1
@index %= $game_troop.enemies.size
break if self.enemy.exist?
end
end
end
end 
 



Mon problème est : Lorsque je combats un groupe d'ennemis, tout va bien, chaque ennemi donne une seule attaque mais lorsque les ennemis se retrouvent seuls ( c-à-d juste après avoir buté leurs compagnons ... ) Une deuxième attaque survient de nulle part, il n'y a pourtant qu'un seul ennemi. Et cette deuxième attaque ne provient pas du seul ennemi car quand un ennemi attaque il est complètement blanc quelques millièmes de secondes ( je ne sais pas si vous voyez ce que je veux dire ) hors l'ennemi ne bouge pas ou n'est pas blanc lorsque cette deuxième attaque surgit. Voilà j'espère avoir été assez clair dans mon explication, le problème au début du jeux n'est pas " si " dramatique ( un peu en fait ... ) mais bon, si le problème persiste jusqu'à plus loin dans le jeux, cela risque de poser de gros problèmes, je préfère donc le résoudre dès maintenant.
Voila, merci à ceux qui essayeront de me répondre


Cortez - posté le 16/08/2013 à 21:15:10 (523 messages postés)

❤ 0

Je pense que ça vient des monstres, tu as du les modifier pour les
rendre invincibles (onglet groupe de monstre, clic-droit sur un
monstre). Vérifie d'abord qu'il ne sont pas invulnérables/invisibles.


Slime55 - posté le 16/08/2013 à 22:08:12 (442 messages postés)

❤ 0

Non ça ne vient pas des monstres, j'ai vérifié à plusieurs reprises les paramètres aux niveaux " Ennemis " et il n'y a aucun problème, j'ai même refais des nouveaux monstres et nouveaux groupes d'ennemis juste pour essayer et le problème persiste. Cela ne peut donc venir que du script :/ Je pense que dans le script il y a une mauvaise manip qui fait que quand l'ennemi est tué, il disparait et ne peut plus être ciblé mais reste malgré tout dans le combat et peux toujours attaquer, ce n'est qu'une hypothèse, car j'ai remarqué que les dégâts qui provenaient de cette unité " invisible " était presque les mêmes que celles de l'unité que j'avais tué.


Åvygeil - posté le 16/08/2013 à 23:30:49 (2502 messages postés)

❤ 0

Je viens de tester sur un projet vierge et je ne reproduis pas le problème.


Slime55 - posté le 16/08/2013 à 23:46:03 (442 messages postés)

❤ 0

C'est donc un problème de compatibilité avec les autres scripts :/
Voici ceux que j'ai :
- Game_Actor : Inconnu
- AMS ( Advanced Message System ) : Dubealex
- Easy party switcher : Blizzard
Et c'est tout, faites moi savoir si vous voulez que je les mette sous balise code.


Orbital - posté le 16/08/2013 à 23:53:40 (194 messages postés)

❤ 0

Test les un par un avec ton script de combat et vois avec lequel le bug se reproduit. Tu auras ta réponse et ça ira plus vite pour ceux qui t'aideront.

Final Fantasy Fury


Slime55 - posté le 17/08/2013 à 00:03:08 (442 messages postés)

❤ 0

Euh, c'est inquiétant si même après avoir enlevé tous les scripts sauf celui du combat sideview, le bug persiste ?


Åvygeil - posté le 17/08/2013 à 00:14:32 (2502 messages postés)

❤ 0

1) Crée un nouveau projet
2) Installe le script
3) Va dans la base de données -> Ennemis -> Fantôme et supprime son action "Attendre" pour qu'il attaque 100% du temps.
4) Teste le combat 001: Fantômes*2
5) Tue un fantôme et dis moi si tu reproduis le bug.


Slime55 - posté le 17/08/2013 à 00:27:49 (442 messages postés)

❤ 0

Ça marche, le bug ne se produit pas, ça ne viendrait donc pas des scripts ?


Åvygeil - posté le 17/08/2013 à 00:53:38 (2502 messages postés)

❤ 0

Je ne vois plus qu'une solution : essaie de reproduire dans un projet vierge le combat qui t'a permi de déclencher le bug et envoie le nous pour qu'on aie une base de travail.


Slime55 - posté le 17/08/2013 à 01:12:02 (442 messages postés)

❤ 0

Ce n'est pas plus simple si j'envoie directement mon projet ? Par chance, j'en ai une copie qui date de plus d'une semaine et je viens de voir pour le bug, il y est aussi.


GeckoEssence - posté le 17/08/2013 à 01:30:36 (10274 messages postés)

❤ 0

Non, tout simplement parce qu'il y a plus de données dans un projet non vierge que dans un vierge. Donc plus de données qui peuvent interférer.

Au pire, si tu ne veux pas, des dizaines de scripts existent un peu partout, tu peux compenser facilement.


Slime55 - posté le 17/08/2013 à 01:56:20 (442 messages postés)

❤ 0

C'est sûr que vu comme ça, j'ai plus trop envie de garder ce script vu tous les problèmes qu'il apporte :/
En tout cas, je verrai demain, je donnerai peut-être un lien avec le projet vierge contenant le bug.

Edit : Bon, j'ai testé sur plusieurs de mes anciens projets qui avaient les mêmes scripts et le problème n'y était pas, je suis donc revenu sur mon projet et j'ai un peu bidouillé les ennemis, j'ai mis comme action : si les PV sont = ou inférieur à 1% >> action attendre, et finalement ça a marché. Je ne recevais pas d'attaque " invisible ". J'en déduis donc que l'ennemi " invisible " qui m'attaque est en fait celui que je viens de tuer. Il n'y a pas un moyen plus " propre " de totalement supprimer l'ennemi tué ?

Index du forum > Entraide > [RMXP] Script Combat vue de côté

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