RPG Creator : créez votre MMORPG ou RPG sans aucune connaissance en programmation


Disponible le 4 Juin !




- Jouez à votre jeu sur tablettes tactiles, Smartphones et navigateurs Web
- Personnalisez vos menus
- Dessinez facilement et rapidement vos cartes
- Créez des actions pour le combat A-RPG


www.rpgcreator.net


Heures au format UTC + 1 heure [ Heure d’été ]




Publier un nouveau sujet Répondre au sujet  [ 1 message ] 
Auteur Message
 Sujet du message: [GM] Utiliser les characters de RPG Maker en 1 sprite
MessagePublié: 10 Juin 2009, 14:04 
Seigneur (Nv 4)
Avatar de l’utilisateur

Inscrit le: 29 Déc 2006, 01:00
Messages: 460
Niveau RPG Maker: /
Logiciel(s) préféré(s): Game Maker
Points d'aide: 59/60

Créations :

Voir ses créations

Bonjour,
Aujourd'hui, je vais vous partager un script permettant d'utiliser les characters de rpg maker par exemple. Si vous voulez directement le script, voyez le bout du message, si vous voulez savoir comment le créer et bien l'utiliser, lisez la suite du message.
On commence.

I. Importation du character

Tout d'abord, ouvrez l'éditeur de sprite. Cliquez sur edit sprite, puis File et enfin Create from strip. Sélectionnez votre character, ici je vais prendre Arshes.
Image

Appuyez sur ouvrir. Vous vous retrouvez avec un nouvel écran. Faites les réglages comme suit, c'est à dire number of images 16, images per row 4, image width 32 et image height 48. Ce sont les dimensions pour un character par défaut, si votre character est plus grand ou plus petit, vous devrez changer image width et height pour que chaque "pose" soit dans un carreau différent.
Image

Vous vous retrouvez avec ceci.
Image

Nous en avons finis avec l'éditeur de sprite.

II. Création du script

Créez un nouveau script que vous nommerez comme vous le voulez. Personnellement, j'ai choisis animation_deplacement.
A supposer que vous avez déjà un script vous permettant le déplacement (dans le cas contraire, il vous en faut un), vous devez rajouter 4 lignes si elles ne sont pas présente :
Code: Tout sélectionner
direction=0;

A l'endroit où le character va vers la droite
Code: Tout sélectionner
direction=180;

A l'endroit où le character va vers la gauche
Code: Tout sélectionner
direction=90;

A l'endroit où le character va vers le haut
Code: Tout sélectionner
direction=270;

A l'endroit où le character va vers le bas

Pensez à appeler le script de déplacement dans votre event step, par exemple.
Code: Tout sélectionner
animation_deplacement();

Si vous avez choisis le même nom que moi.

Ajoutez aussi les deux lignes suivantes dans votre event create afin d'initialiser 2 variables, vous verrez à quoi elles servent très bientôt.
Code: Tout sélectionner
image_min=0;
image_max=0;


Tout d'abord, les 4 lignes qui vont suivre sont optionnelles. Elles sont à mettre uniquement si votre jeu présente des déplacement en diagonale. Pour vous expliquer briévement, si l'objet se déplace par exemple vers le haut-droite, avec un angle de 45°, la direction sera mise à 0 au lieu de 90, afin que le sprite ne change pas rapidement entre la droite et le haut, il ira uniquement vers la droite.
Code: Tout sélectionner
if (direction < 90) {direction = 0;}
if (direction > 89 && direction < 180) {direction = 90;}
if (direction > 179 && direction < 270) {direction = 180;}
if (direction > 269) {direction = 270;}


Maintenant le gros du code. Nous avons 4 poses pour chaque direction, il faut donc trouver un moyen pour que les 4 premières poses uniquement soit jouées quand le joueur va vers le bas, les 4 suivantes quand il va vers la gauche etc. C'est là que image_min et image_max interviennent. image_min donnera l'image de départ, et image_max, l'image à partir de laquelle il faudra repartir à l'image de départ.
Commencez par créer un switch avec la variable direction.
Code: Tout sélectionner
switch direction
    {
    }

On va faire dans l'ordre des images, donc bas, gauche, droite, haut. Pour le bas, la direction est 270, donc entrez case 270, sans oublier le break; ensuite.
Code: Tout sélectionner
switch direction
    {
    case 270:
    break;
    }

Il faut maintenant insérer image_min et image_max dans ce code. image_min correspondra à la première image à jouer (ici 0) et image_max à la dernière image.
Code: Tout sélectionner
switch direction
   {
    case 270:
        image_min=0;
        image_max=4;
    break;
   }

Là, vous testez votre code, et, horreur ! Le character change de sprite vers la gauche, pendant moins d'une demi seconde certes, mais c'est quand même visible !
Ne vous inquiétez pas, pour éviter ce problème, il suffit de changer le 4 de image_max en 3.99. Ainsi, la 3ème image aura le temps de s'afficher dans son intégralité, sans que la 4ème se monter brièvement pour autant.
Il suffit ensuite de faire pareil pour les autres direction. Je vous laissez un peu réfléchir.
Vous devriez avoir ça au final :
Code: Tout sélectionner
switch direction
    {
    case 270:
        image_min=0;
        image_max=4;
    break;
    case 180:
        image_min=4;
        image_max=7.99;
    break;
    case 0:
        image_min=8;
        image_max=11.99;
    break;
    case 90:
        image_min=12;
        image_max=15.99;
    break;
    }


Ne prenez pas peur, c'est presque finis. plus que 2 lignes, qui sont extrêmement importantes. Voilà, vous avez définis la première et la dernière image selon la direction. C'est bien beau, mais il faut maintenant que la première image se réaffiche après la dernière image. Vous aurez besoin de la variable built-in image_index qui stocke l'image affichée en cours.
Voilà ce qu'il faut faire en français : SI l'image affichée (image_index) est plus grande que la dernière image (image_max) ALORS retourner à la première image (image_min).
Une condition donc. Avant que vous essayez de l'écrire seul, il faut rajouter un bout, afin que si l'image affichée est plus petite que image_min, l'image affichée retourne à image_min, ceci afin d'éviter que la mauvaise image soit affichée temporairement lors du changement de direction.
Ce qui donne en français : SI l'image affichée (image_index) est plus grande que la dernière image (image_max) OU l'image affichée (image_index) est plus petite que la première image (image_min) que ALORS retourner à la première image (image_min).
Je vous laisse cogiter quelques minutes, essayez d'écrire la condition seul, ça vous entraînera.
Sinon, la voici (à rajouter à la fin du script) :
Code: Tout sélectionner
if (image_index > image_max || image_index < image_min)
    {
    image_index=image_min;
    }


Voilà, le tutorial est terminé. J'en ferais d'autre si ça vous plait. Amusez-vous bien Wink.



Voici le script final :
Code: Tout sélectionner
/*
Script réalisé par Sirus.
Si vous repostez le script quelque part, merci de me prévenir et de me citer comme auteur.
Aucune autorisation ni crédit nécessaire pour l'utilisation dans vos jeux.
Vous devez initialiser les variables image_min et image_max dans le create de votre objet ainsi qu'appeler le script dans votre step event.
Par défaut, les sprites doivent être dans ce sens : 4x bas, 4x gauche, 4x droite et 4x haut.
*/
if (direction < 90) {direction = 0;} // les 4 lignes sont inutiles si il n'y a pas de déplacement en diagonale
if (direction > 89 && direction < 180) {direction = 90;}
if (direction > 179 && direction < 270) {direction = 180;}
if (direction > 269) {direction = 270;}

switch direction
    {
    case 270:
        image_min=0;
        image_max=3.99;
    break;
    case 0:
        image_min=8;
        image_max=11.99;
    break;
    case 90:
        image_min=12;
        image_max=15.99;
    break;
    case 180:
        image_min=4;
        image_max=7.99;
    break;
    }
   
if (image_index > image_max || image_index < image_min)
    {
    image_index=image_min;
    }


Pour 2 direction seulement (gauche et droite), utile pour les jeux de plate-forme :
Code: Tout sélectionner
/*
Script réalisé par Sirus.
Si vous repostez le script quelque part, merci de me prévenir et de me citer comme auteur.
Aucune autorisation ni crédit nécessaire pour l'utilisation dans vos jeux.
Vous devez initialiser les variables image_min et image_max dans le create de votre objet ainsi qu'appeler le script dans votre step event.
Par défaut, les sprites doivent être dans ce sens : 4x gauche, 4x droite.
*/
switch direction
    {
    case 180:
        image_min=0;
        image_max=3.99;
    break;
    case 0:
        image_min=4;
        image_max=7.99;
    break;
    }
  
if (image_index > image_max || image_index < image_min)
    {
    image_index=image_min;
    }

_________________
Image Rejoignez Oxion !


Haut
 Profil  
 
Afficher les messages depuis:  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 1 message ] 

Heures au format UTC + 1 heure [ Heure d’été ]


Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Rechercher pour:
Sauter vers:  
cron
RPG Creative Forum version 5 ; Tous droits réservés
phpBB Group (Traduit par Xaphos)
Optimisé pour une résolution 1024*728