Partagez
Aller en bas
avatar
Zangther
Membre

Nombre de messages : 908
Distinction : aucune
Date d'inscription : 06/02/2013

RPG Maker VX Ace [VXAce][RME] Brouillard de guerre

le Dim 3 Sep 2017 - 23:47
Une petite évolution par rapport au tuto précédent sur le champ de vision. Pas trop d'explications mais je suis disponible pour vous expliquer en cas de besoin.


Event - EV001

| > Appeler Script : L[:black_tile] = 1536
| > Commentaire : Iteration sur toutes les cases de la carte
| > Opération : Variable [0002:y] = 0
| > Opération : Variable [0003:map_width] = map_width
| > Opération : Variable [0004:map_height] = map_height
| > Boucle
| >| > Condition : Variable [0002:y] == Variable [0004:map_height]
| >| >| > Commentaire : Obligé d'utiliser une étiquette sinon... ça plante :O  
| >| >| > Aller à l'Étiquette : end_loop
| >| >| >
| >| > Fin - Condition
| >| > Opération : Variable [0001:x] = 0
| >| > Boucle
| >| >| > Condition : Variable [0001:x] == Variable [0003:map_width]
| >| >| >| > Sortir de la Boucle
| >| >| >| >
| >| >| > Fin - Condition
| >| >| > Commentaire : On stock les données de la case courante dans un HASH !  
| >| >| > Commentaire : Via les labels !!!
| >| >| > Appeler Script : offset = "#{V[1]}-#{V[2]}-"
| >| >| > Appeler Script : L["#{offset}0"] = tile_id(V[1], V[2], 0)
| >| >| > Appeler Script : L["#{offset}1"] = tile_id(V[1], V[2], 1)
| >| >| > Appeler Script : L["#{offset}2"] = tile_id(V[1], V[2], 2)
| >| >| > Commentaire : On rend la case courante noire
| >| >| > Appeler Script : set_tile(L[:black_tile], V[1], V[2], 0)
| >| >| > Appeler Script : set_tile(0, V[1], V[2], 1)
| >| >| > Appeler Script : set_tile(0, V[1], V[2], 2)
| >| >| > Opération : Variable [0001:x] += 1
| >| >| >
| >| > Fin - Boucle
| >| > Opération : Variable [0002:y] += 1
| >| >
| > Fin - Boucle
| > Étiquette : end_loop
| > Boucle
| >| > Attendre : 1 Frames
| >| > Commentaire : On parcours toutes les cases voisines
| >| > Opération : Variable [0002:y] = -1
| >| > Boucle
| >| >| > Commentaire : Petite attente pour un peu plus de swagg  
| >| >| > Attendre : 1 Frames
| >| >| > Condition : Variable [0002:y] > 1
| >| >| >| > Aller à l'Étiquette : end_loop2
| >| >| >| >
| >| >| > Fin - Condition
| >| >| > Opération : Variable [0001:x] = -1
| >| >| > Boucle
| >| >| >| > Commentaire : Petite attente pour un peu plus de swagg  
| >| >| >| > Attendre : 1 Frames
| >| >| >| > Condition : Variable [0001:x] > 1
| >| >| >| >| > Sortir de la Boucle
| >| >| >| >| >
| >| >| >| > Fin - Condition
| >| >| >| > Appeler Script : L[:s_x] = player_x + V[1]
| >| >| >| > Appeler Script : L[:s_y] = player_y + V[2]
| >| >| >| > Commentaire : Si la case existe
| >| >| >| > Condition : Script : L[:s_x] >= 0 and L[:s_x] < map_width and L[:s_y] >= 0 and L[:s_y] < map_height
| >| >| >| >| > Commentaire : Remplacer la case si elle n'a pas déjà été modifiée
| >| >| >| >| > Appeler Script : offset = "#{L[:s_x]}-#{L[:s_y]}-"
| >| >| >| >| > Appeler Script : if tile_id(L[:s_x], L[:s_y], 0) != L["#{offset}0"]
| >| >| >| >| > Appeler Script :   set_tile(L["#{offset}0"], L[:s_x], L[:s_y], 0)  
| >| >| >| >| > Appeler Script : end
| >| >| >| >| > Appeler Script : if tile_id(L[:s_x], L[:s_y], 1) != L["#{offset}1"]
| >| >| >| >| > Appeler Script :   set_tile(L["#{offset}1"], L[:s_x], L[:s_y], 1)  
| >| >| >| >| > Appeler Script : end
| >| >| >| >| > Appeler Script : if tile_id(L[:s_x], L[:s_y], 2) != L["#{offset}2"]
| >| >| >| >| > Appeler Script :   set_tile(L["#{offset}2"], L[:s_x], L[:s_y], 2)  
| >| >| >| >| > Appeler Script : end
| >| >| >| >| >
| >| >| >| > Fin - Condition
| >| >| >| > Opération : Variable [0001:x] += 1
| >| >| >| >
| >| >| > Fin - Boucle
| >| >| > Opération : Variable [0002:y] += 1
| >| >| >
| >| > Fin - Boucle
| >| > Étiquette : end_loop2
| >| >
| > Fin - Boucle
| >
Il existait aussi une autre version plus avancée mais il faudra qu'on retrouve le code :
Spoiler:
avatar
Az'
Administrateur

Nombre de messages : 3316
Age : 25
Localisation : France // Auvergne // Cantal
Distinction : Ours Barbu é_è [/Shamu']
Artiste de talent [Yama']
Date d'inscription : 22/12/2007
http://www.rpgmakervx-fr.com

RPG Maker VX Ace Re: [VXAce][RME] Brouillard de guerre

le Lun 4 Sep 2017 - 17:30
Très sympa comme tuto!
Je pense me servir de ce système pour mon projet.

+ des pts de participation!

_________________
avatar
tibluedream
Membre

Nombre de messages : 942
Age : 30
Localisation : France, Rueil, près de Paris
Distinction : Poisson 2017 [Amal]
Poisson 2018 [Amal']
Date d'inscription : 05/09/2016

RPG Maker VX Ace Re: [VXAce][RME] Brouillard de guerre

le Lun 4 Sep 2017 - 17:43
il y a moyen de changer le carré noir par un losange?
avatar
Zangther
Membre

Nombre de messages : 908
Distinction : aucune
Date d'inscription : 06/02/2013

RPG Maker VX Ace Re: [VXAce][RME] Brouillard de guerre

le Lun 4 Sep 2017 - 17:47
@tibluedream a écrit:il y a moyen de changer le carré noir par un losange?
Etant donné que le code se base sur des tiles, je ne pense pas. Désolé.
avatar
tibluedream
Membre

Nombre de messages : 942
Age : 30
Localisation : France, Rueil, près de Paris
Distinction : Poisson 2017 [Amal]
Poisson 2018 [Amal']
Date d'inscription : 05/09/2016

RPG Maker VX Ace Re: [VXAce][RME] Brouillard de guerre

le Lun 4 Sep 2017 - 21:13
donc faudrais changer la nature des tiles pour obtenir ce résultat si je comprends bien c'est dommage ça a l'air super fluide.
avatar
Ewaldar
Membre

Nombre de messages : 1387
Age : 25
Localisation : Suisse
Distinction : aucune
Date d'inscription : 29/12/2011
http://ewaldar.wixsite.com/les-ames-perdues

RPG Maker VX Ace Re: [VXAce][RME] Brouillard de guerre

le Lun 4 Sep 2017 - 21:18
Excellent travail ! Je n'utiliserai pas dans l'immédiat, mais en tout cas le résultat est super !
Contenu sponsorisé

RPG Maker VX Ace Re: [VXAce][RME] Brouillard de guerre

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum