Bienvenue visiteur !
|
Statistiques
Liste des membres
Contact
Mentions légales
321 connectés actuellement
29859417 visiteurs depuis l'ouverture
11349 visiteurs aujourd'hui
Partenaires
Tous nos partenaires
Devenir partenaire
|
Nérylis -
posté le 17/06/2016 à 19:49:42 (149 messages postés)
| | Domaine concerné: Script
Logiciel utilisé: RPG Maker VX Ace
Coucou,
J'essaie depuis quelques jours de résoudre un petit problème avec le script de Yanfly - Party System que voici : https://github.com/Archeia/YEARepo/blob/master/Menu/Party_System.rb
J'ai remarqué que lorsqu'on change un personnage combattant avec un autre personnage non combattant, le premier se place en tête de liste des personnages non combattants au lieu de prendre la place de son successeur. Compliqué à comprendre, pas vrai ? J'explique.
Admettons que j'ai 8 personnages comme c'est le cas sur ce screenshot : http://img11.hostingpics.net/pics/858422Capture.png
Les 4 premiers personnages en vert sont les combattants, les 4 autres sont les non combattants.
Si je décide par exemple de remplacer le personnage 2 (combattant) par le personnage 7 (non combattant), ce dernier va bien prendre la position 2. Par contre, le personnage 2 ne va pas se mettre en position 7. Il va se mettre en première position des personnages non combattants (en l’occurrence ici en position 5) et les autres personnages en position 5 et 6 vont se décaler en position 6 et 7.
Ce que je voudrais, c'est qu'il n'y ait pas ce décalage et que le personnage combattant se mettre en lieu et place du personnage qu'il le remplace. Au niveau du script, ça doit se faire entre les lignes 330 et 376 mais je n'ai pas trouvé comment faire. Pouvez-vous m'aider svp ?
|
zeus81 -
posté le 17/06/2016 à 20:07:37 (11071 messages postés)
| | On te l'avait pas déjà corrigé ça ?
|
Reivilo -
posté le 17/06/2016 à 20:22:22 (163 messages postés)
| Why not ? | Décidément, on dirait que je ne suis pas le seul à avoir des soucis avec les scripts/plugins de Yanfly x)
|
Travail assis, Travail réussi ! |
Nérylis -
posté le 17/06/2016 à 20:32:15 (149 messages postés)
| | Non Zeus, c'était autre chose.
Reivilo : Yanfly fait de sacrés scripts mais laisse de jolis bugs dedans. Le souvenir le plus notable que j'ai, c'est son script Adjust limits qui comportait un fameux bug qui est le suivant : lorsqu'on chargeait une partie, on se retrouvait avec des objets complètement aléatoires dans l'inventaire. Fun ! Mais bon, il fait quand même de belles choses, ça manque juste de tests.
|
arttroy -
posté le 18/06/2016 à 15:19:51 (2394 messages postés)
| Just working | Ca serait pas ça qui est en cause ? :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| #--------------------------------------------------------------------------
# alias method: add_actor
#--------------------------------------------------------------------------
alias game_party_add_actor_ps add_actor
def add_actor(actor_id)
game_party_add_actor_ps(actor_id)
return if @battle_members_array.include?(actor_id)
return unless @battle_members_array.include?(0)
index = @battle_members_array.index(0)
@battle_members_array[index] = actor_id
$game_player.refresh
$game_map.need_refresh = true
rearrange_actors
end |
ou ça :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| #--------------------------------------------------------------------------
# new method: rearrange_actors
#--------------------------------------------------------------------------
def rearrange_actors
initialize_battle_members if @battle_members_array.nil?
array = []
for actor_id in @battle_members_array
next if [0, nil].include?(actor_id)
next if $game_actors[actor_id].nil?
array.push(actor_id)
end
for actor_id in @actors
next if array.include?(actor_id)
next if $game_actors[actor_id].nil?
array.push(actor_id)
end
@actors = array
end |
par contre je vois pas trop comment modifier ça...
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
Nérylis -
posté le 18/06/2016 à 15:21:10 (149 messages postés)
| | Oui, c'est ce que je disais, entre les lignes 330 et 376.
|
arttroy -
posté le 18/06/2016 à 15:31:15 (2394 messages postés)
| Just working | en modifiant :
1
2
| return unless @battle_members_array.include?(0)
index = @battle_members_array.index(0) |
par :
1
2
| return unless @battle_members_array.include?(actor_id)
index = @battle_members_array.index(actor_id) |
Ça ne fonctionne pas ?
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
Nérylis -
posté le 18/06/2016 à 15:52:46 (149 messages postés)
| | Non, ça ne marche pas.
|
Reivilo -
posté le 18/06/2016 à 16:08:43 (163 messages postés)
| Why not ? | Nérylis a dit:
Reivilo : Yanfly fait de sacrés scripts mais laisse de jolis bugs dedans. Le souvenir le plus notable que j'ai, c'est son script Adjust limits qui comportait un fameux bug qui est le suivant : lorsqu'on chargeait une partie, on se retrouvait avec des objets complètement aléatoires dans l'inventaire. Fun ! Mais bon, il fait quand même de belles choses, ça manque juste de tests.
|
Je ne dis pas le contraire ! Ils sont très bons !
Et j'ai rencontré peu de bug pour le moment ^^
J'ai juste certains soucis au niveau de la compréhension et l'utilisation de ses scripts/plugins, majoritairement les "Action Sequence pack 1 et 2"
|
Travail assis, Travail réussi ! |
arttroy -
posté le 18/06/2016 à 17:32:36 (2394 messages postés)
| Just working | essaie de remplacer le 0 par une autre valeur (3 par exemple).
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
zeus81 -
posté le 18/06/2016 à 18:26:24 (11071 messages postés)
| | Je crois qu'il faut supprimer la fonction rearrange_actors dont la seule action est justement de mettre les combattants en début de liste.
Ou alors faut la modifier comme ça :
1
2
3
4
5
| def rearrange_actors
initialize_battle_members if @battle_members_array.nil?
@actors.delete(0)
@actors.compact!
end |
|
Nérylis -
posté le 18/06/2016 à 21:16:44 (149 messages postés)
| | En testant les deux possibilités, on perd effectivement le positionnement des combattants en première position. Il faudrait garder cette fonctionnalité, et juste changer le positionnement des non combattants. Si c'est possible.
Edit : Arttroy, j'ai testé en mettant (3) mais je n'ai pas vu de différence.
|
zeus81 -
posté le 18/06/2016 à 23:15:55 (11071 messages postés)
| |
1
2
3
4
5
6
7
8
| def rearrange_actors
initialize_battle_members if @battle_members_array.nil?
@actors.reject! {|actor_id| !$game_actors[actor_id.to_i]}
@battle_members_array.each_with_index do |actor_id, i|
j = @actors.index(actor_id)
@actors[i], @actors[j] = @actors[j], @actors[i] if i != j
end
end |
|
Nérylis -
posté le 19/06/2016 à 10:12:42 (149 messages postés)
| | Je viens de tester, ça a l'air de bien marcher. Merci.
Par contre, j'ai un petit souci sur un event. Sur mon donjon à plusieurs équipes, lors de la création des équipes, j'ai plusieurs appels de script. Et là en l'occurence, j'obtiens un message d'erreur qui est le suivant :
Ce message apparaît après avoir créé la première équipe après le script call_party qu'on peut voir dans mon event sur ce screenshot :
Je pense que ça doit être dû aux appels de scripts qui suivent puisque le plantage a lieu avant le message "Créez l'équipe 2". Est-ce que tu vois d'où vient le problème ? Sinon, au pire, je peux réécrire mon event sans faire d'appel de script mais pour l'avoir déjà fait, ça donne quelque chose de super long et quand on m'avait donné cette méthode avec les appels de script, j'étais content.^^
Edit : Je pense que ça sera peut-être plus facile pour toi avec la démo de ce mini projet pour corriger les appels de script : http://www.mediafire.com/download/d87ern13stlad81/Teams.exe
|
zeus81 -
posté le 19/06/2016 à 18:25:38 (11071 messages postés)
| | Comme ça peut-être :
1
2
3
4
5
6
7
8
| def rearrange_actors
initialize_battle_members unless @battle_members_array
@actors.select! {|actor_id| $game_actors[actor_id.to_i]}
(@battle_members_array & @actors).each_with_index do |actor_id, i|
j = @actors.index(actor_id)
@actors[i], @actors[j] = @actors[j], @actors[i] if i != j
end
end |
|
arttroy -
posté le 19/06/2016 à 19:59:18 (2394 messages postés)
| Just working | P.... T'es un fucking tueur Zeus...
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
zeus81 -
posté le 19/06/2016 à 20:15:46 (11071 messages postés)
| | Bah oui tu savais pas ? =>[]
|
Nérylis -
posté le 19/06/2016 à 20:58:04 (149 messages postés)
| | Cette fois, ça marche bien. Merci Zeus, effectivement t'es un tueur pour ces trucs là.^^
|
arttroy -
posté le 20/06/2016 à 16:55:15 (2394 messages postés)
| Just working | Si je sais tout... =>[]
Non mais moi j'ai toujours trouvé que son pseudo lui allait bien, ce gars à un niveau irréel en script ^^.
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? | Index du forum > Entraide > [RESOLU] [RPG Maker VX Ace] Problème position personnages
|
|
|