AccueilAccueil  PortailPortail  FAQFAQ  RechercherRechercher  MembresMembres  GroupesGroupes  S'enregistrerS'enregistrer  ConnexionConnexion  




Partagez | 
 

 [Event] Inventaire sur la Map

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Va-nu-pieds Lv.4
Va-nu-pieds Lv.4
avatar


Masculin Age : 21
Avertissements : 1
Inscrit le : 10/07/2009
Messages : 60

MessageSujet: [Event] Inventaire sur la Map   Mer 3 Mar 2010 - 17:43

Salut tout le monde  Smile , je sais qu'un tuto comme celui ci est déjà sur le forum mais le miens
est dans un autre style. Je vous conseille d'aller voir la démo avant de faire le tuto pour savoir à
quoi vous attendre puisque c'est un event assé complexe et si vous n'aimez pas le rendu, inutile de se donner
autant de mal.
Il nécessitera un peu de connaissance d'un programme de retouche d'image et une bonne base
en eventing.

Difficulté : Difficile  (novices s'abstenir Wink)

Matériel
-Les objets que vous désirez afficher.
-Les images précisées plus bas.
-2 events communs
-2 interrupteurs
-4 variables dont 1 défini par un script (pour les besoins de la cause désolé Laughing)

Description.
1- Cet event permettra d'afficher un petit inventaire sur votre map.
2- Le personnage pourra bouger même si l'inventaire est activé.
3- Il sera activable à partir du menu, vous aurez donc besoin du script Common Event in Menu par puppeto4.
Pour avoir le script déjà configuré pour activer l'inventaire via le menu, il suffit de le prendre dans la démo.


Les scripts présents sur la démo
MenuEventCommuns (pour activer l'inventaire)
Max Items (il n'est pas obligatoire mais je l'ai mis pour vous éviter de le chercher, mais vous n'êtes pas
obligé de l'utiliser)
Réserve (encore une fois ce script n'est pas obligatoire c'est juste pour vous permettre d'expérimenter avec
les items).
Pour vous faire un résumé et que tout le monde comprenne, les seules choses en rapport avec le tuto dans
cette démo sont : Le script du MenuEventCommuns et il sert simplement à l'activation de l'event commun.
Les autres choses importantes sont les 2 seuls events communs qui sont présents dans la démo.

Inconvénients d'un inventaire en Event
Même si vous êtes un des meilleurs eventmaker, il y a quand même des inconvénients et des contraintes à faire un inventaire en event.
1- Les objets sont limités puisqu'on ne peut pas mettre plus de 20 images.  Neutral (hé oui la limite de numéro
d'image est de 20)
2- Il faudra baisser la limite d'objet du même type si vous ne voulez pas passer la journée sur
votre event (vous comprendrez plus loin).

Le Tuto

Les images
Les images à enregistrer dans le dossier pictures de votre projet.
Spoiler:
 
Vous devez faire tout les chiffres jusqu'au nombre maximum d'item de même
sorte que vous mettez. Ex: vous avez un nombre d'item de même sorte max de 20, vous devez faire tout les
nombres jusqu'à 20 sur des images séparées.
Spoiler:
 
***Important***
Les images des chiffres ne doivent pas dépasser le format 24x24 autrement ils ne seront plus dans la case des
items. Même que je recommande qu'ils soient seulement 10x14. Il est aussi important que le fond de l'image
soit transparent pour voir les items quand les chiffres seront affichés par dessus eux.

Les dernière images à enregistrer dans pictures sont celles de chaque item que vous désirez mettre dans votre
inventaire. Ex : Vous voulez afficher les pommes, raisins, fraises. Vous devrez alors découper les images sur
votre iconset en format 24x24 puisqu'une icône mesure 24x24. J'ai utilisé Paint.Net pour ce faire. Le fond doit
également être transparent. Quelques images pour vous montrer à quoi va ressembler vos images après le
découpage.
Spoiler:
 

Bon en résumé, je viens simplement de vous montrer les ressources graphiques que vous aurez besoin pour
l'inventaire en event.
Tous les formats d'images.
Base de l'inventaire : 250x150
Image d'un chiffre : maximum 24x24 (formats de la démo : 10x14)
Image d'un objet : 24x24 (la taille d'une image sur l'iconset et la taille disponible dans un slot de l'inventaire).

L'event

Fonctionnement
Le premier event affiche l'image de la base de l'inventaire, l'image de l'objet s'affiche sur une case de
l'inventaire (on a seulement à indiquer les coordonnées de la première case et les coordonnées des
autres cases se calculera automatiquement magique non?Very Happy Le deuxième event sert seulement à actualiser
l'inventaire s'il est activé en utilisant le même principe que le premier event.

Bon, c'est la que ça commence à être plus chaud à expliquer avec tout les numéros d'image.
Voici un screen de l'inventaire que vous seriez supposé avoir après le tuto. (si vous n'avez pas ajouté plus
d'objets bien sur).
Spoiler:
 
Je vous
recommande aussi de prendre les mêmes images que je vous donnerai tout de suite après
cette phrase.
Spoiler:
 

Bon maintenant que vous avez tout ce qu'il faut graphiquement pour ce tuto, passons à l'action!
Il y aura 2 events communs J'ai appelé le premier : Inventaire et le deuxième : RefreshInventaire.
Le premier servira à afficher l'inventaire quand on l'appelle via le menu, hé oui voila l'utilité du script pour
afficher des événements communs sur le menu! Et le deuxième servira à actualiser l'inventaire de sorte que
vous n'aurez pas besoin de fermer et de rouvrir l'inventaire pour voir si vous avez des nouveaux objets.
Premier Event

Spoiler:
 

Cette partie est pour déterminer si le menu doit être fermé ou ouvert puisqu'on utilise la même commande du
menu pour l'ouvrir ou le fermer. Si l'interrupteur InventaireOn est activé on ferme l'inventaire donc on efface
toute les images et on désactive l'interrupteur. Le contraire, on affiche l'inventaire et on active l'interrupteur. Wink
L'affichage de l'inventaire se passe après le "sinon".

Spoiler:
 

Donc l'interrupteur InventaireOn activé est pour indiquer que l'inventaire est ouvert. Ensuite le afficher image1
est pour afficher l'image de la base de l'inventaire.

Cette partie affiche l'image de la base de l'inventaire aux coordonnées indiquées. (celles
présentes sur ce screen feront apparaitre la base de l'inventaire dans le coin inférieur droit de l'écran. Les
variables EmplacementX et EmplacementY représentent l'emplacement où le premier item apparaitra.
La valeur  EmplacementX est simplement «les coordonnéesX que vous avez mis pour la base» + 17
Celle de EmplacementY est »les coordonnéesY que vous avez mis pour la base« + 42
Comme vous pouvez le constater, EmplacementX a la même valeur que EmplacementY peu importe où vous
placerez la base de l'inventaire. Un bon moyen pour savoir si vous vous êtes trompé dans les calculs.
Finalement, le appeler script @i=0 sera utile plus tard, je vous l'expliquerai après le prochain screen.

Spoiler:
 
Premièrement je vais expliquer le principe. @i est simplement une variable que l'event utilise pour compter à
quel slot de l'inventaire il est rendu à afficher l'item et le chiffre. Donc @i augmente de 1 à chaque fois que la
boucle revient pour indiquer qu'il est rendu au slot suivant.

La condition que vous avez vu plus tôt Script @i < 21 signifie que tant que la valeur de @i est en dessous de 21
(nombre maximum de slot), la boucle continue pour afficher l'item suivant. Ensuite la condition Script @i == 1
signifie que si l'event est rendu au slot1 il affichera les éléments qu'on mettra après cette condition. cheers
J'ai décidé d'afficher les pommes dans le premier slot alors il faut faire afficher l'image de pomme qu'on a
découpé ou que je vous ai donné  Wink. Les coordonnées de l'image seront définies avec les variables
EmplacementX et EmplacementY qu'on a défini plus tôt. La variable NombreObjet sert seulement à indiquer
combien vous avez d'objet. Ensuite la tonne de condition qui fait peut n'est en fait qu'une répétition... Elle sert
à indiquer que si la variable NombreObjet == X, l'image du chiffre X sera affichée.
Ex: Condition variable NombreObjet == 4 l'image du chiffre 4 sera affiché par dessus notre item qui a été
affiché plus tôt. Vous remarquez pas une similitude entre le code après Afficher les pommes et le code Afficher
les Champirgnons? Hé bien c'est presque pareil à l'exception de quelques petites choses :
L'image à afficher, la valeur de la variable NombreObjet et le numéro des images. Donc si vous voulez ajouter
plus d'objet vous devez copier le code contenant la tonne de condition variable NombreObjet == X. Les
modifications à apporter au code sont :
-Numéros d'images différent
-Image différente, SEULEMENT l'image de l'objet et non les images des chiffres (les images
après les condition variable NombreObjet == X) les N° d'image pour les chiffres doivent être différents des
autres images mais le N° d'image des chiffres d'un même objet doit être identique. Si vous ne comprenez pas,
regardez quels sont les numéros d'image sur le screen présenté ou voici une légende :
1: Base de l'inventaire
2: Image de l'objet "Pomme"
3: Chiffre indiquant combien d'objet "Pomme" possédé
4: Image de l'objet "Champignon"
5: Chiffre indiquant combien d'objet "Champignon" possédé.


***Important***
Les numéro de l'image est très important. Si l'image de la pomme a le même N° que la base de l'inventaire, il
remplacera l'image de la base. Vous comprenez? Vous pouvez aller voir le résumé des chiffres que j'ai fait
plus haut dans le tutoriel pour comprendre comment je les ai organisé pour éviter de se mélanger. *Ouf c'est
un long tuto en? C'est pas facile à expliquer non plus cyclops*

Bon maintenant j'explique la suite du screen présenté plus haut. La variable EmplacementX est additionnée de
32 (c'est le nombre de pixel entre chaque slot). Tadam! Cette seule commande permet aux items de se placer
à la bonne place automatiquement (si vous avez mis la bonne valeur initiale au début). En fait non il y a les 2
conditions juste en dessous qui permettent à la variable EmplacementY de changer de ligne quand elle arrive
au bout d'une ligne de l'inventaire. Puisqu'il y a 7 slots dans une ligne de l'inventaire, quand @i arrive à 7, la
variable EmplacementY est augmentée de 32 et la variable EmplacementX est diminuée de 224 pour revenir
au premier slot de la deuxième ligne. Même chose quand @i arrive à 14. Le "Sortir de la Boucle" après le
"sinon" est TRÈS important, car c'est grace à lui que l'event va sortir de sa boucle quand
l'inventaire est fini d'être créé. Sinon le jeu bug parce que les boucle n'arrêtent plus. affraid

Deuxième Event
Le deuxième event maintenant  Very Happy!! Yay vous vous dites tous, on a encore des ***** réglages à faire. Mais
cet event sera beaucoup moins compliqué que le deuxième, si vous avez bien compris le premier. Parce qu'en
fait c'est le même event que le premier mais avec quelques petites différences.
1- Il n'y a pas de boucle puisqu'il est en processus parallèle donc il n'y a pas de "Sortir de la Boucle à la fin
2- Il y a un petit code de plus au début et un interrupteur de plus dans ce code.

Spoiler:
 

La partie rajoutée en haut est pour que les variables EmplacementX et EmplacementY ne reviennent pas aux
coordonnées du premier slot à chaque fois que la boucle revient (puisqu'il est en processus parallèle). Voilà
l'utilité de l'interrupteur ValeurRéinitialize, à chaque fois que la boucle arrive au 21e slot l'interrupteur
ValeurRéinitialize est désactivé de sorte que les variables EmplacementX et EmplacementY reviennent au
premier slot.

Donc en résumé voici le premier event au complet.
Spoiler:
 

Le Deuxième.
Spoiler:
 

Si vous avez des questions par rapport au fonctionnement ou des problèmes n'hésitez pas à les poser!  Very Happy
J'espère que ça vous sera utile.


Dernière édition par fablemai le Mer 3 Mar 2010 - 18:37, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Chevalier Lv.17
Chevalier Lv.17
avatar


Masculin Age : 24
Inscrit le : 27/04/2008
Messages : 1835

MessageSujet: Re: [Event] Inventaire sur la Map   Jeu 4 Mar 2010 - 10:17

Wouw! Euh... ça c'est du gros tuto Wink

Je ne vois pas la démo dont tu parles (honnêtement, j'ai pas envie de le refaire en entier XD)

Si tu pouvais la mettre juste pour pouvoir valider Wink

Edit: La démo fonctionne, c'est du bon travail, complet, même si j'aurai personnellement modifié certaines choses (comme afficher l'inventaire en appuyant sur une touche, et sans aller dans le menu, ça perd un peu son charme et on se dit qu'au final c'est pas forcément très utile du coup =°)

Oh, je me demandais aussi, comment utiliser les objets dans l'inventaire du coup? Vu que ça ne fait afficher que les objets... Peut-on les utiliser? Surprised

Et il faudra modifier cette limite dont tu nous parle, si on ne peut pas afficher plus de 20 images, ce sera gênant Surprised Il faudra que l'on cherche comment y remédier Wink

SUJET DEPLACE

_________________

[code:1]
Evènement :

@> Commandes
[/code:1]
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Va-nu-pieds Lv.4
Va-nu-pieds Lv.4
avatar


Masculin Age : 21
Avertissements : 1
Inscrit le : 10/07/2009
Messages : 60

MessageSujet: Re: [Event] Inventaire sur la Map   Jeu 4 Mar 2010 - 16:46

Pour les utiliser ce sera encore vraiment compliqué 0.o... Mais c'est possible. Je suis justement
en train de créer un inventaire qui apparait sur la map mais en plus gros et qui contiendra des
meubles, et justement il sera possible d'utiliser les meubles. Sauf que ça sera la galère à
expliquer puisque ces items ne sont pas comme les objets qu'on retrouve dans le menu objet.
Donc leur utilité doit être défini par un event aussi. Bref je pourrais expliquer comment je fais
pour les sélectionner mais encore là il faut être habitué en event pour pouvoir utiliser l'item
comme on veut. Et au sujet des limites de 20 images, c'est VX qui empêche d'avoir plus de 20 images d'affichées.
C'est vrai que ça limite beaucoup l'inventaire, si quelqu'un pouvait trouver un moyen d'enlever cette limite ça
serait sympa Very Happy
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Flibustier Lv.21
Flibustier Lv.21
avatar


Masculin Age : 23
Inscrit le : 24/05/2008
Messages : 3234

MessageSujet: Re: [Event] Inventaire sur la Map   Jeu 4 Mar 2010 - 17:28

Citation :
c'est VX qui empêche d'avoir plus de 20 images d'affichées.
C'est vrai que ça limite beaucoup l'inventaire, si quelqu'un pouvait trouver un moyen d'enlever cette limite ça
serait sympa
En script c'est over méga simple ^^
(Juste un chiffre à modif)
Mais essayer de taper un chiffre plus grand que 20 dans la gestion des images...
VX le modifieras automatiquement en 20...
Et ça je vois pas comment le modifier =S

_________________




Antre de mes scripts
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Habitant Lv.6
Habitant Lv.6
avatar


Masculin Age : 26
Inscrit le : 15/02/2009
Messages : 139

MessageSujet: Re: [Event] Inventaire sur la Map   Jeu 4 Mar 2010 - 17:31

Sa ont ne peut pas le modifié je pense, car c'est le logiciel rpg maker vx lui même qui est scripté ainsi et il limite donc le nombre d'image a 20. Mais je précise également qu'ont pour faire plusieurs sac de 20 place ce qui est largement faisable, ont ouvre un sac et sa en ferme un autre Wink

_________________
Avez vous déjà vu : Un crime pas parfait du tout
http://www.youtube.com/watch?v=k_uXq7xLekk&feature=related
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://sword-of-thales.webrpg.info/index.php
Chevalier Lv.17
Chevalier Lv.17
avatar


Masculin Age : 24
Inscrit le : 27/04/2008
Messages : 1835

MessageSujet: Re: [Event] Inventaire sur la Map   Jeu 4 Mar 2010 - 17:41

A test...

Code:
#==============================================================================
# Modification du nombre d'images affichable sur la map
#------------------------------------------------------------------------------
# Pour modifier ce nombre d'image, il vous faut remplacer la valeur de IMAGESMAX dans le module.
# Pour afficher les images d'un ID de 1 à 20, vous pouvez continuer à utiliser les commandes d'évènement, au-delà, il
# vous faudra faire un appel de script, selon vos besoins:
# - Afficher une image:
#            $game_map.screen.pictures[ID].show(nom, origine, x, y, largeur, hauteur, opacite, type)
# - Déplacer une image:
#            $game_map.screen.pictures[ID].move(origine, x, y, largeur, hauteur, opacite, type, temps)
# - Supprimer une image:
#            $game_map.screen.pictures[ID].erase
#==============================================================================
# Correspondance des termes:
# - ID: Numéro de votre image, si deux images ont le même ID, c'est la dernière appelée qui sera affichée.
# - nom: Nom de votre image. Elle doit être située dans le dossier Graphics > Pictures de votre jeu.
# - origine:
#          - 0: Coin haut-gauche
#          - 1: Centre
# - x: Position en x
# - y: Position en y
# - largeur: Modification de la largeur en pourcents. Ecrire 100 pour qu'il n'y ait pas de déformation.
# - hauteur: Modification de la hauteur en pourcents. Ecrire 100 pour qu'il n'y ait pas de déformation.
# - opacite: De 0 à 255.
#          - 0: Invisible
#          - 255: Opaque
# - type:
#          - 0: Normal
#          - 1: Eclaircie
#          - 2: Obscurcie
# - temps: Durée de la transition
#==============================================================================

module ImagesMax

  IMAGESMAX = 30
 
end

class Game_Screen
 
  def clear
    @brightness = 255
    @fadeout_duration = 0
    @fadein_duration = 0
    @tone = Tone.new(0, 0, 0, 0)
    @tone_target = Tone.new(0, 0, 0, 0)
    @tone_duration = 0
    @flash_color = Color.new(0, 0, 0, 0)
    @flash_duration = 0
    @shake_power = 0
    @shake_speed = 0
    @shake_duration = 0
    @shake_direction = 1
    @shake = 0
    @pictures = []
    for i in 0..ImagesMax::IMAGESMAX
      @pictures.push(Game_Picture.new(i))
    end
    @weather_type = 0
    @weather_max = 0.0
    @weather_type_target = 0
    @weather_max_target = 0.0
    @weather_duration = 0
  end
 
end

class Spriteset_Map
 
  def create_pictures
    @picture_sprites = []
    for i in 1..ImagesMax::IMAGESMAX
      @picture_sprites.push(Sprite_Picture.new(@viewport2,
        $game_map.screen.pictures[i]))
    end
  end
 
end

_________________

[code:1]
Evènement :

@> Commandes
[/code:1]
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Va-nu-pieds Lv.4
Va-nu-pieds Lv.4
avatar


Masculin Age : 21
Avertissements : 1
Inscrit le : 10/07/2009
Messages : 60

MessageSujet: Re: [Event] Inventaire sur la Map   Ven 5 Mar 2010 - 16:14

Merci pour le script mais la formule pour afficher une picture ne rentre pas sur une ligne d'un
appel de script en event alors ça fait tout foirer.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Maître des Duels
Maître des Duels
avatar


Masculin Age : 25
Inscrit le : 29/07/2009
Messages : 7838

MessageSujet: Re: [Event] Inventaire sur la Map   Ven 5 Mar 2010 - 19:54

C'est un tuto sympa, le seul problème est qu'il existe déjà...

Mais bon, on ne peut pas comparer deux tutos d'inventaire en event comme on compare deux tutos pour faire une banque...

_________________
Gimme a hell yeah.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: [Event] Inventaire sur la Map   

Revenir en haut Aller en bas
 

[Event] Inventaire sur la Map

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Maker VX :: Entraide :: Tutoriels :: Tutoriels VX :: Tutoriel d'événement (event) :: Argent, magasins et objets-
Créer un forum | © phpBB | Forum gratuit d'entraide | Signaler un abus | Forum gratuit