Bienvenue visiteur !
|

Statistiques
Liste des membres
Contact
Mentions légales
305 connectés actuellement
31144567 visiteurs depuis l'ouverture
1670 visiteurs aujourd'hui

Partenaires









Tous nos partenaires
Devenir partenaire
|
VRP024 -
posté le 10/07/2019 à 17:04:55 (24 messages postés)
| | Domaine concerné: Affichage sur la map.
Logiciel utilisé: Rpg Maker Xp
Support : Rpg Maker Xp
Projet : Tales of Mana
Problème :
Salut !
Le script de Mélodie pour l'affichage de dégât sur la map fonctionne mais, seulement en 20x15, en le modifiant pour le rendre compatible avec toutes les tailles de cartes.
Le script: (Mélodie de Oniromancie)
http://www.rpg-maker.fr/scripts-286-affiche-les-degats-ou-du-textes-sur-la-map.html
J'ai posté dans cette section car quelqu'un a déjà demander en commentaire du script, sans réponse...
Question :
Peut on centré l'affichage sur la position du héros donc, le rendre compatible avec toutes les maps c'est possible ?
Merci.
|
| Chanter l'hyperchleuasme | Le mode d'emploi dit :
1
| m_e(id_u=[],degats,c1,c2,c3,critique,anime) |
Citation: - id_u=[0], pour affiché sur le héros.
- id_u=[x], pour affiché sur un évent, "x" et à changé par l'id de l'évent.
- id_u=[X,Y], pour affiché en X et Y de la map, "X" et "Y" son à changé par les coordonnée voulu. |
Donc si tu écris id_u[0], le texte sera affiché sur le héros.
Je viens d'essayer le script et en effet le texte s'affiche avec un décalage lorsqu'on sort du rectangle 20*15.
Parfois le décalage est tel que le texte est affiché en dehors de l'écran, c'est-à-dire pas affiché du tout.
C'est parce que le scripteur utilise :
1
2
| if id_u[0] == 0
$game_temp.melodie.push(Melodie_.new($game_player.x, $game_player.y, degats,c1,c2,c3,critique,anime)) |
au lieu de :
1
2
3
4
| if id_u[0] == 0
real_x = ((($game_player.real_x - $game_map.display_x) /4).to_i + 16) /32
real_y = ((($game_player.real_y - $game_map.display_y) /4).to_i + 16) /32
$game_temp.melodie.push(Melodie_.new(real_x, real_y, degats,c1,c2,c3,critique,anime)) |
Il ne faut pas utiliser les coordonnées du héros pures, mais il faut les transformer avant. C'est ce que j'appelle real_x et real_y.
En effet, il faut soustraire la position de la caméra pour que le texte soit affiché au bon endroit. Pour le rectangle 20*15, ça marche parce que la position de la caméra est 0;0.
J'ai testé et ça permet d'afficher du texte sur le héros même en dehors de la zone 20*15.
Un bidouillage similaire corrige le script pour les autres events (lorsque else id_u[0] > 0).
|
Es-tu une star ? | Kujira no Hara | Muma|Rope | Polaris 03 | La 7e porte |
VRP024 -
posté le 22/07/2019 à 18:45:45 (24 messages postés)
| | Merci pour le coup de pouce!
Cela fonctionne, les coordonnées étais confondus. La ça fonctionne mais on soulève un autre problème. Il y a un léger décalage en position X (le texte décale un peu à droite au dessus le héros). Sur les coins de la map aucun problème et, en dehors du 20*15 le texte a un décalage en position X.
Avec ta portion:
Citation:
1
2
3
4
| if id_u[0] == 0
real_x = ((($game_player.real_x - $game_map.display_x) /4).to_i + 16) /32
real_y = ((($game_player.real_y - $game_map.display_y) /4).to_i + 16) /32
$game_temp.melodie.push(Melodie_.new(real_x, real_y, degats,c1,c2,c3,critique,anime)) |
|
Aucun bug donc j'ai essayer de placer l'affichage sur un événement en tapant:
Citation:
1
| m_e(id_u=[92, 75],150,255,255,255,false,false) |
|
Dans la commande d'événement. La ça n'est plus sur l'écran.
A la limite c'est pas important si cela ne fonctionne pas sur les événements, je n'en ai pas l'intention. J'ai remarqué que l'affichage reste sur place dans les coins de map mais se déplace avec le héros en dehors des angles (donc c'est surement lier à la position du héros). J'ai voulu modifier la valeur X avec -1 mais du coup le texte étais à gauche...
|
| Chanter l'hyperchleuasme | Pour les events, il faut utiliser exactement la même technique.
A la place de :
1
2
3
4
| else id_u[0] > 0
$game_temp.melodie.push(Melodie_.new(
$game_map.events[id_u[0]].x,$game_map.events[id_u[0]].y,degats,
c1,c2,c3,critique,anime)) |
On met :
1
2
3
4
| else id_u[0] > 0
real_x = ((($game_map.events[id_u[0]].real_x - $game_map.display_x) / 4 + 16) /32 ).to_i
real_y = ((($game_map.events[id_u[0]].real_y - $game_map.display_y) / 4 + 16) /32 ).to_i
$game_temp.melodie.push(Melodie_.new(real_x, real_y, degats,c1,c2,c3,critique,anime)) |
Mise en garde : mon code a un défaut, c'est qu'il part du postulat simplificateur que les events font 32 pixels de largeur, d'où les +16 dans le code pour recentrer le texte sur le héros et les events.
Sinon c'est chiant, il faut aller dans la page active de l'event, et calculer à partir de la taille de l'image...
|
Es-tu une star ? | Kujira no Hara | Muma|Rope | Polaris 03 | La 7e porte |
VRP024 -
posté le 22/07/2019 à 19:27:42 (24 messages postés)
| | La j'ai fait le test sur un nouveau projet donc par défaut c'est comme tes personnages, je n'arrive pas à corriger ce décalage je n'ai pas modifier la valeur "16". Le souci c'est que je voulais le faire à la Tales Of Symphonia (Je suis fan d'ou mon Tales Of Mana), quand tu prend des pics l'affichage au dessus le héros.
Pour ce qui est des événements, je n'y avais pas penser. Merci quand même.
|
| Chanter l'hyperchleuasme | Oui, je vois le même petit décalage que toi par moments.
C'est peut-être dû à un arrondi malheureux, ou bien à un cas particulier où la formule ne colle pas bien, genre quand la caméra touche les bords de la map VS quand la caméra vers le milieu de la map.
|
Es-tu une star ? | Kujira no Hara | Muma|Rope | Polaris 03 | La 7e porte | Index du forum > Entraide > [RESOLU] [Rpg Maker Xp] Script d'affichage de dégât. [Résolu]


|
|
|