Night.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

News: Du neuf dans le making / News: Muma|Rope est disponible en (...) / News: RPG Maker With / Site: Oniro va mieux / Site: Problèmes sur Oniro / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

273 connectés actuellement

30679471 visiteurs
depuis l'ouverture

1768 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

RPG Maker Détente

ConsoleFun

Lunae - le bazar d'Emz0

Tous nos partenaires

Devenir
partenaire



forums

Index du forum > Entraide > [RESOLU] [RM VXAce] Le super titre parce que j'ai aucune idée de comment résumer ma demande ici


Ephy - posté le 16/09/2024 à 19:48:35 (30099 messages postés) - honor

❤ 0

[BIG SHOT]

Domaine concerné: Script
Logiciel utilisé: RM VXAce
Bonjour bonsoir.
Désolé pour le titre mais trouver un nom pour ça c'est aussi aussi angoissant que mon problème lui même. Si le staff vous avez une meilleure idée je suis preneur.

J'utilise actuellement ce script de combat (adapté et customisé à ma sauce): https://pastebin.com/raw/nrbunzeP
(le script de base est ici si jamais ça vous intéresse : https://pastebin.com/raw/GWfAQQeN)

Avec ces Window_BattleSkill et Window_BattleItem customisées aussi:

Spoiler (cliquez pour afficher)



En gros, en combat ça donne ça quand on utilise une magie et qu'on cible un ennemi:
image
Mais la fenêtre de skill/item est toujours à droite quelque soit la cible:
image
Ce qui est très moyen pour les cibles situées à gauche, sous la fenêtre.

Mon problème:
Je veux décaler les fenêtre Window_BattleSkill et Window_BattleItem sur la droite quand les ennemis ciblés sont dans la moitié gauche de l'écran et la remettre sur la gauche quand l'ennemi ciblié est sur la droite. Comme ceci:

image
Sur le papier, je vois à peu près comment je pourrais faire.
Comme les ennemis sont rangés dans l'ordre de gauche à droite, si l'index de la cible est inférieur à la moitié de l'index max, je change la position x des fenêtres pour la mettre à droite (Graphics.width - (Graphics.width / 5) * 2 pour la position exacte). Sinon, je la recale à gauche à x=0.
Mais ça s'arrête là. Dans la pratique, je sais pas exactement comment je dois récupérer ces ID et à quel moment du script devrait se trouver ces conditions et ces changements de position.
J'avais pensé à la ligne 1116, def update_cursor. Si je comprend bien, c'est là (du moins entre autre) que la sélection des ennemis se passe.

Pour tout le reste des trucs à modifier j'ai pu le faire moi même mais là, je sèche. Mais ces deux fenêtres me posent vraiment problème. Ca tient trop de place sur l'écran de combat et elles gênent toujours la lisibilité quelque soit leur emplacement. D'où mon idée de les déplacer dynamiquement.

Power Level: 1 148 355,38|Mystic Slayer (Value!+)|Le monde d'Adélaïde|Reikon no Yume|★ H-Project|Toho Danmaku Arena|Loli versus Ponies|Mes vidéos|Ma galerie|Débuter sur VX:10, 11|Tuto: Importation de ressources|Mapper avec les RTP VX|Touhou|Fan de Omenides|Fan de Estheone|Eph'ille: 14


Mack - posté le 16/09/2024 à 20:13:32 (2309 messages postés) - staff

❤ 0

C'est l'idée oui


Le problème d'aller le foutre dans la Window_BattleEnemy, c'est que tu n'auras pas accès à la Window_Skill, donc ça va être la merde pour la bouger


Le mieux, c'est trouver la boucle de sélection ( habituellement c'est un truc du genre @enemy_window.update ), et de s'y foutre dedans
Mais j'arrive pas à trouver où c'est pour l'instant :F


Edit :
Ah putaingue, c'est vrai que VXAce utilise une methode de handler, donc t'auras pas de XX.update :F




J'ai fait un truc dégueu, mais qui marche :

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
#==============================================================================
# ** Scene_Battle
#------------------------------------------------------------------------------
#  This class performs battle screen processing.
#==============================================================================
 
class Scene_Battle < Scene_Base
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  alias old_update update
  def update
    old_update 
    ###
    if (@enemy_window.open? and @enemy_window.active)
      enemy_index = @enemy_window.index
      if (enemy_index < $game_troop.members.size)
        if ($game_troop.members[enemy_index].screen_x < Graphics.width / 2)
          @skill_window.x = 0
        else
          @skill_window.x = (Graphics.width - (Graphics.width / 5) * 2)
        end
      end
    end
    ###
  end
  
end
 



La partie entre ###, c'est ce qu'il faudrait copier au bon endroit pour faire un truc propre, là, le mettre dans l'update de la scene, même si ça marche c'est pas bien beau :F

Le "gros" problème de VXAce, c'est qu'il gère de manière unique toute les windows ( en gros, pas besoin d'appeler la fonction update manuellement ).
C'est super parce que ça évite de trop se faire chier, mais du coup ça peut devenir chiant pour gérer des updates "à la main" selon qu'elle fenêtre est active :F

J'vais voir si y a une meilleure méthode, mais là je vois pas trop

( Je prend note de tout les commentaires, même si je n'y répond pas )


Ephy - posté le 16/09/2024 à 21:01:25 (30099 messages postés) - honor

❤ 0

[BIG SHOT]

Merci <3
Ca fonctionne à l'envers mais ça fonctionne.
J'ai juste changé en ça pour remettre d'aplomb:

Portion de code : Tout sélectionner

1
2
3
4
5
6
if ($game_troop.members[enemy_index].screen_x < Graphics.width / 2)
          @skill_window.x = (Graphics.width - (Graphics.width / 5) * 2)
        else
          @skill_window.x = 0
        end
 


J'ai rajouté la version item_window aussi.

Et enfin, en condition j'ai mis (pour le moment)

Portion de code : Tout sélectionner

1
if ($game_troop.members[enemy_index].screen_x <= (Graphics.width / 5) * 2)


C'est plus joli avec la fenêtre à gauche donc j'ai limité la portion de screen qui force la fenêtre à droite après tests.

Si tu trouve plus propre, je suis preneur. Mais si tu trouve pas, ça me va très bien.

Je suis pas au top avec le scripting VXAce mais je comprend mieux pourquoi je galérais à trouver le update de tout ce bazar. J'aurais pu chercher un moment.
Je sais pas si c'est que je sais pas où chercher mais c'est dommage de pas avoir une liste des fonctions et de comment récupérer les informations de ce type là.
Clairement un truc du genre $game_troop.members[enemy_index].screen_x, même si c'est parfaitement logique quand on l'a sous les yeux, j'aurais pas pu l'inventer.



Power Level: 1 148 355,38|Mystic Slayer (Value!+)|Le monde d'Adélaïde|Reikon no Yume|★ H-Project|Toho Danmaku Arena|Loli versus Ponies|Mes vidéos|Ma galerie|Débuter sur VX:10, 11|Tuto: Importation de ressources|Mapper avec les RTP VX|Touhou|Fan de Omenides|Fan de Estheone|Eph'ille: 14


Mack - posté le 16/09/2024 à 21:08:57 (2309 messages postés) - staff

❤ 0

En vrai, faut passer par l'aide en ligne, t'as souvent pas mal de truc
L'autre truc à faire, c'est de lire le code :F
Ou au moins le nom des méthodes / fonctions ( les def XXX ), ça peut pas mal aider ^^




J'dis que c'est un peu crado, mais en vrai, je pense pas que y ai de meilleure méthode :F
Une autre solution serait de se mettre dans l'update de la Window_Enemies ( j'ai plus le nom exacte ), et d'arriver à accéder à la Window_Skills, mais c'est vraiment pas mieux, pour un truc surement bien plus chiant




Ephy a dit:

Merci <3
Ca fonctionne à l'envers mais ça fonctionne.


Ah oui, j'ai fait les positions sans réfléchir :F

( Je prend note de tout les commentaires, même si je n'y répond pas )


Ephy - posté le 23/09/2024 à 20:55:42 (30099 messages postés) - honor

❤ 0

[BIG SHOT]

Petite mise à jour du script de Mack (par Mack):

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
#==============================================================================
# ** Scene_Battle
#------------------------------------------------------------------------------
#  This class performs battle screen processing.
#==============================================================================
 
class Scene_Battle < Scene_Base
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  alias old_update update
  def update
    old_update 
    ###
    if (@enemy_window.open? and @enemy_window.active)
      enemy = @enemy_window.enemy
      if (enemy != nil)
        if (enemy.screen_x < (Graphics.width / 5) * 2)
          @skill_window.x = (Graphics.width - (Graphics.width / 5) * 2)
          @item_window.x = (Graphics.width - (Graphics.width / 5) * 2)
        else
          @skill_window.x = 0
          @item_window.x = 0
        end
      end
    end
    ###
  end
  
end


L'ancien code utilisait la position du curseur qui sélectionne l'ennemi plutôt que la position de l'ennemi lui même ce qui posait problème quand une partie des ennemis est vaincue.



Power Level: 1 148 355,38|Mystic Slayer (Value!+)|Le monde d'Adélaïde|Reikon no Yume|★ H-Project|Toho Danmaku Arena|Loli versus Ponies|Mes vidéos|Ma galerie|Débuter sur VX:10, 11|Tuto: Importation de ressources|Mapper avec les RTP VX|Touhou|Fan de Omenides|Fan de Estheone|Eph'ille: 14

Index du forum > Entraide > [RESOLU] [RM VXAce] Le super titre parce que j'ai aucune idée de comment résumer ma demande ici

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