Bienvenue visiteur !
|
Statistiques
Liste des membres
Contact
Mentions légales
391 connectés actuellement
30732848 visiteurs depuis l'ouverture
2827 visiteurs aujourd'hui
Partenaires
Tous nos partenaires
Devenir partenaire
|
Messages postés par Erwill Nombre de messages référencés sur Oniromancie (non supprimés): 169 Aller à la page: 1 2 3 4 5
Posté dans Forum - Topic général des draps... des ébats |
Erwill -
posté le 07/12/2019 à 21:25:44. (172 messages postés) |
| Alkanédon a dit:
Pour ou contre les rtp pour les alexs ?
Ca me tarabiscotte. Je suis personnellement.
|
Les RTPs, bien qu'étant par défaut, sont des graphismes/musiques/sons comme il y en a d'autres, ça dépend aussi de l'utilisation qu'on en fait, ça peut donner aussi des bons trucs.
Je suis pour.
AzRa a dit:
Alkanédon a dit:
Pour ou contre les rtp pour les alexs ?
Ca me tarabiscotte. Je suis personnellement.
|
Moi aussi je trouve que.
|
Bof, moi je dirais que.
Verehn a dit:
Pour ou contre les briques en maçonnerie ?
|
Les briques, c'est bien pour tenir une maison et en plus c'est pas aussi inflammable que le bois, donc je suis pour.
François Berhn a dit:
Pour ou contre la bouse de vache dans un concours culinaire ?
|
Alors, je me suis renseigné, et je constate que la bouse de vache c'est, pour moi, une très mauvaise idée dans un concours culinaire, donc je suis contre.
Saka a dit:
Pour ou contre les pour ou contre ?
|
Ça peut toujours être intéressant de savoir qui est pour et qui est contre et de connaitre les arguments, je suis pour.
|
Posté dans Forum - Topic des bribes de projets |
Erwill -
posté le 02/12/2019 à 23:07:13. (172 messages postés) |
| Ephy a dit:
Je ne savais même pas que ce ça existait ce fangame, je pensais qu'il y avait seulement touhou 1 qui avait ce genre de gameplay.
Verehn : "Ailes Stellaires" c'est un groupe d'armée qui a envoyé le joueur explorer la voie lactée.
Sinon j'aime bien l'idée de rendre les ennemies plus agressifs quand ils sont moins nombreux, je ferai ça sur les prochains niveaux.
|
Posté dans Forum - Topic des bribes de projets |
Erwill -
posté le 01/12/2019 à 23:08:25. (172 messages postés) |
| "Les Ailes Stellaires" est un nouveau projet que je développe sur GDevelop 5, ça ressemble à du casse brique mais le but c'est de dégommer les adversaires avec la balle et les tires tout en évitant les projectiles : https://www.youtube.com/watch?v=QRsUlOCYIqo&feature=youtu.be
Je n'ai actuellement fini que la première planète.
Au niveau gameplay, comme dit plus haut ça ressemble à du casse brique sauf qu'au lieu de casser des briques le joueur doit battre les ennemies qui vous envoient des projectiles, il faudra éviter qu'ils touchent le centre, sinon vous perdez 1 PV, vous en perdez également si vous faites tomber la balle dans le vide.
Il y a des briques bonus qui vous donneront des PV et des projectiles. Chaque planète a 8 niveaux, le dernier contient un boss.
|
Posté dans Forum - [VX Ace] Train (Jeu complet disponible) |
Erwill -
posté le 23/10/2019 à 20:57:26. (172 messages postés) |
| Je vous annonce que Train est désormais terminé, si vous voulez télécharger le jeu complet, rendez-vous dans le poste principal ou dans la fiche de jeu d'Oniro quand il sera accepté.
|
Posté dans Forum - [VX Ace] Train (Jeu complet disponible) |
Erwill -
posté le 18/10/2019 à 19:07:58. (172 messages postés) |
| mamie a dit:
Du coup là c'est une nouvelle version qui est téléchargeable ?
Ou alors toujours l'ancienne avec pas de point de sauvegarde au début ?
(oui, j'attends ça pour tester en entier, car le jeu a l'air bien outre le fait que j'aie du me taper l'intro 3 fois, et que quand j'ai trouvé un point de sauvegarde je me suis fait tuer avant de pouvoir save)
Je suis sûr que Cuddle c'est une machine à tester les jeux, aussi
|
Non, pour l'instant le lien dans le poste est toujours celui de la démo avec pas de point de sauvegarde au début.
Gari a dit:
Je peux tester si tu le souhaites !
|
Je vais te l'envoyer par MP.
|
Posté dans Forum - [VX Ace] Train (Jeu complet disponible) |
erwill -
posté le 17/10/2019 à 21:52:34. (172 messages postés) |
| Le développement de Train est terminé, j'ai pu corriger quelques bugs après avoir testé mon jeu.
Je recherche des volontaires qui pourraient faire un bêta-test de mon jeu pour que je puisse corriger des bugs que je n'aurais pas vus.
Le jeu n'est pas très long, CuddleFox l'a fait en 1h30.
|
Posté dans Forum - [VX Ace] Train (Jeu complet disponible) |
erwill -
posté le 01/10/2019 à 22:27:17. (172 messages postés) |
| mamie a dit:
Waow comment tu fais pour aller si vite D:
|
Le fait que le jeu soit court ça aide.
mamie a dit:
Je t'avoue que je l'avais testé mais j'avais arrêté car je mourrais à chaque fois avant d'avoir pu sauvegarder et ça me saoulait de faire la cinématique de début 12000 fois.
|
Ce genre de chose tu ne le trouveras plus dans la version finale puisque le wagon 6 aura un point de sauvegarde.
|
Posté dans Forum - [VX Ace] Train (Jeu complet disponible) |
erwill -
posté le 03/09/2019 à 23:06:55. (172 messages postés) |
| mamie a dit:
Hey au fait, est-ce que tu fais corriger l'orthographe ?
(car il y a une faute dans un screen "Aller" => "Allez", donc je me dis que tu as peut être fait quelques fautes d'autographe à travers le jeu ? après peut-être que tu es assez fort en autographe et que tu avais juste pas vu cette faute, ou que ça te gêne pas qu'il y aie quelques fautes mineures)
Je peux peut-être me proposer pour être le correcteur orthographique de ton jeu si tu veux, à moins que tu aies quelqu'un dans ton entourage qui puisse corriger. Après on oublie toujours des coquilles ou des fautes d'inattention, même en étant assez fort en dictée.
Sinon le jeu a l'air bien et je vais peut-être tester la démo, mais je préfèrerais tester le jeu en entier !
|
Après chaque dialogue écrit, je le relis puis je regarde dans un correcteur automatique s'il n'y a pas une faute qui m'a échappé.
Ni lui ni moi ne sommes parfaits, donc, comme avec ton exemple avec le "Aller", bah je pensais (et le correcteur aussi) que c'était la bonne orthographe, puisque ça me faisait bizarre qu'il le vouvoie alors qu'ils sont amis.
Pourquoi pas pour devenir correcteur orthographique si tu es fort en orthographe. En ce qui concerne l'autographe moi je n'ai jamais rencontré de fan donc bon.
Si tu testes la démo, tu auras quelques bugs et des erreurs de level design qui ont été corrigés depuis sa sortie, aussi le jeu est devenu plus facile.
Et puis tu me diras les fautes que je n'ai pas corrigées, s'il y en a.
|
Posté dans Forum - [VX Ace] Train (Jeu complet disponible) |
Erwill -
posté le 30/08/2019 à 22:03:07. (172 messages postés) |
| Je vais faire une new sur l'avancé de mon jeu.
En général :
- Le bug où les doodads sont invisibles a été corrigé.
Spoiler (cliquez pour afficher)
- Le tueur met plus de temps à venir dans la map, le temps d'attente est augmenté d'une demi-seconde.
Wagon 6 :
- Un point de sauvegarde a été ajouté, vous pourrez sauvegarder lors du choix de la personne qui partira avec Serge.
- Un bug où le faceset reste sur Joël quand Yves est mort a été corrigé.
Wagon 5 :
- Les portes des toilettes où Jérôme doit se cacher clignotent s'il est poursuivi.
- L’énigme possède plus d'indices.
Spoiler (cliquez pour afficher) Claudine précise au début qu'il y a que des 0, des 1 et des 2, si le joueur rate trois fois le mot de passe, elle dira que ça pourrait être une sorte de trinaire.
Wagon 4 :
- L’énigme a été simplifié pour être compréhensible par tous.
Spoiler (cliquez pour afficher)
- La porte Spoiler (cliquez pour afficher) qui mène dans l'étage du dessous clignote quand Jérôme est poursuivi.
Wagon 3 :
- Correction d'un oubli d’événement qui devait arriver si Joël est mort.
Le wagon 2 est terminé et le wagon 1 est proche de la fin.
Et quelques screenshots :
Spoiler (cliquez pour afficher)
Pour la maniabilité Clavier+Souris, il n'y a pas besoin d'alterner, personnellement, ma main droite tient la souris et ma main gauche est positionnée sur les touches directionnelles.
|
Posté dans Forum - [VX Ace] Train (Jeu complet disponible) |
erwill -
posté le 07/08/2019 à 22:54:32. (172 messages postés) |
| Ça doit être fun de se mettre à plusieurs dans un jeu d'horreur.
Bref sinon j'ai pris en compte vos avis et celui d'un autre, j'ai ajouté un point de sauvegarde dans le wagon 6, et j'ai simplifié les énigmes en laissant plus d'indices.
Je pensais que c'était évident qu'il fallait Spoiler (cliquez pour afficher) se cacher dans les toilettes pour échapper au méchant.
Vous avez vraiment recommencé 25 fois ? Quelle patience.
Pour répondre à l'équenau, non c'est pas normal, est ce que Spoiler (cliquez pour afficher) la table à gauche s'affiche ?
|
Posté dans Forum - [VX Ace] Train (Jeu complet disponible) |
Erwill -
posté le 26/07/2019 à 19:44:31. (172 messages postés) |
| Nemau a dit:
Je vais éditer le lien dans la fiche du jeu.
Edit : c'est le même lien, c'est normal ? (c'est peut être le cas, je ne connais pas mediafire)
|
C'est un truc que j'ai découvert aujourd'hui, quand tu upload un fichier qui porte le même nom, mediafire te proprose de le remplacer. C'est pratique.
|
Posté dans Forum - [VX Ace] Train (Jeu complet disponible) |
erwill -
posté le 05/07/2019 à 21:09:05. (172 messages postés) |
| Nemau a dit:
C'est classe ! Full custom ? J'aime le pragmatisme du titre. Le jeu est terminé ? Très bonne continuation sinon.
|
Oui, les musiques et les graphismes sont de moi.
Le jeu n'est pas encore terminé, mais j'en suis à la moitié, je ne sais pas si je vais faire une démo.
|
Posté dans Forum - [VX Ace] Train (Jeu complet disponible) |
erwill -
posté le 05/07/2019 à 20:54:14. (172 messages postés) |
|
Train est un jeu d’horreur en point'n'click plutôt court qui se déroule intégralement dans un train, en France.
Histoire
Le vendredi 23 octobre 1959, Jérôme et ses amis, étudiants en école d’ingénieur, rentrent chez eux par le train pour les vacances de la Toussaint. Après plusieurs discussions, ils remarquent que le trajet dure plus longtemps que d’habitude, et qu’il n’y avait pas eu un seul arrêt depuis le départ. Jérôme, avec son meilleur ami, Yves, décide d’aller voir le conducteur, mais la porte du wagon est bloquée, en rejoignant les autres ils vont essayer de trouver un plan pour sortir d’ici et de cette situation.
Gameplay
Le jeu est un point'n'click un peu différent de la normale, quand vous passez la souris sur un élément interactif, une liste d’action apparaît, il faut cliquer dessus pour éclaircir les boutons sélectionnables puis choisir l’action.
Les boutons en vert avec l'icône d’un objet veulent dire que Jérôme va utiliser cet objet une fois l’action effectuée.
Ces livres vous permettent de sauvegarder vos parties.
Bien que le jeu intègre une utilisation de la souris, Jérôme est contrôlé avec les flèches directionnelles du clavier, la touche shift permet de courir, les interrupteurs et les portes ne sont interactifs qu’en se dirigeant vers eux.
Personnage
Le jeu intègre 7 personnages au total.
Jérôme Lupus, un loup âgé de 17 ans.
Yves Goupil, un renard âgé de 17 ans, qui est le meilleur ami de Jérôme.
Claudine Félidés, une chatte timide de 18 ans.
Serge Ovis, un mouton âgé de 18 ans, il fume une pipe de temps en temps.
Joël Lacerta, un lézard de 17 ans.
Sylvain Lotor, un raton-laveur de 16 ans d’origine américaine, est le meilleur ami de Joël.
Téléchargement
https://www.mediafire.com/file/wn9oej8z7z0n4ou/Train_FR.zip/file
Screenshot
Spoiler (cliquez pour afficher)
|
Posté dans Forum - [XP, VX et VX Ace] Map Doodad's Editor (MISE À JOUR 11/06/2019) |
Erwill -
posté le 06/06/2019 à 18:38:37. (172 messages postés) |
| Auteur: Newold
Version: 1.0
Type: Custom Mapping System
Mise à jour
11/06/2019
- Correction d'un nouveau bugs où les doodads n'apparaissaient pas quand on redémarrait le jeu via F12.
08/06/2019
- Correction du bug où les doodads étaient mal placés lors de certaines transitions en fondu.
- Correction d'un éventuel crash qui arrivaient si la taille de la map était modifiée après avoir ajouté des doodads.
Introduction
Grâce à cet éditeur de map, vous pouvez améliorer vos maps avec différentes doodads. Pour accéder à l'éditeur, appuyer sur F8 pendant le phase de test dans le jeu.
Qu'est-ce qu'un doodads ? C'est un élément graphique qui va s'intégrer dans la map.
Il n'y a pas de gestion de couche, ici, tout se fait élément par élément.
Caractéristiques
- Éditeur de map facile à prendre en main.
- Installation facile dans vos projets.
- Compatible avec RPG Maker XP, VX et VX Ace.
- La touche F1 permet d'accéder à l'aide.
- 2 DLL inclus : la version complète avec l'éditeur et une version plus légère sans. (Les doodads ne seront pas éditables)
Démonstration
Une vidéo montrant l'éditeur en détails : https://www.youtube.com/watch?v=pJU2QAhAI84
Liste de possibilité (non exhaustive)
- Possibilité de créer une arborescence de doodads.
- Possibilité de placer les Doodads par cases avec taille customisable ou par pixel.
- Possibilité d'éditer la passibilité des maps ne dépendant pas des tiles.
- Possibilité d'éditer la passabilité des doodads.
- Possibilité de paramétrer la position z manuellement, il est possible de faire des tiles où l'évent est au-dessus ou en dessous en fonction de sa position.
- Possibilité d'inverser les doodads et de les tourner à un certain angle.
- Possibilité d'appliquer le point d'origine des doodads.
- Possibilité de zoomer les doodads.
- Possibilité de modifier la teinte des doodads.
- Possibilité de définir une partie transparente des doodads.
- Animation des doodads customisables :
- Nombre de frames X et Y
- Vitesse d'animation.
- Nombre de frames de répétition.
Instructions
L'installation est très simple. Il faut juste télécharger l'installateur, de sortir de son archive et de lancer Installer Doodad's Editor.exe
Téléchargement
http://www.mediafire.com/file/aze4r7pgv6t5tg6/Doodads_Editor.rar/file
Version sans dll
Il s'agit d'une version de Doodads editor sans avoir besoin de dll, rien ne change si ce n'est que l'installation.
Instructions
- Téléchargez les fichiers selon la version que vous utilisez.
- Copiez le dossier "Graphics" et "Files" dans le projet.
- Dans votre projet, vous copierez au dessus de main le script qu'il y a dans le fichier "Copy these script over Main.txt"
Téléchargement
Pour XP: https://www.mediafire.com/file/wkzfrw833cynr3m/doodadEditor_without_dll_-_XP.rar/file
Pour VX: https://www.mediafire.com/file/xvud0ocv0ca2u6h/doodadEditor_without_dll_-_VX.rar/file
Pour VX ACE: https://www.mediafire.com/file/7ls2lpvlqidkagb/doodadEditor_without_dll_-_ACE.rar/file
Bug Fix
Ces scripts en plus sont là pour corriger trois bugs, les positions incorrectes des doodads lors des transitions sans fondu en noir/blanc, une erreur qui se produit si l'utilisateur change la taille de la carte après avoir mis des doodads et un bug où les doodads n'apparaissent pas quand on redémarre le jeu via F12.
Instructions
- Si vous utilisez la version sans dll, vous n'avez qu'à copier le script au dessus de main en dessous du script original.
- Si vous utilisez la version avec dll, dans main, recherchez cette ligne "SceneManager.run" et juste au dessus vous collerez le script.
Scripts
Pour XP :
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
| =begin
Newold Doodads Editor Bugs Fix (XP)
Use: * Version without DLL : Paste over main
* Version with DLL : In Main created by installer, search this line:
"SceneManager.run" and paste above the contents
of this script
FIXs:
- 10-06-2019 : Fixed: Doodads does not appears when reset with F12
- 08-06-2019 : Corrected position of doodads during the transitions.
- 08-06-2019 : Fix Fatal error when a map has defined any doodad and you
change the size of map in RPG Maker Editor
=end
#===============================================================================
class Spriteset_Map
def initialize
initialize_newold_edit_doodads
create_doodads
update_doodads
end
end
#===============================================================================
#===============================================================================
class Game_Map
def passable?(x, y, d, self_event = nil)
unless @doodads_priority.nil? || @doodads_priority[x].nil? ||
@doodads_priority[x][y].nil?
if @doodads_priority.size != 0
return false if @doodads_priority[x][y] & (1<<d) == 0
end
end
doodads = @doodads.select {|doodad|
(doodad.real_x / 32).to_i == x && (doodad.real_y / 32).to_i == y}
doodads.each{|doodad|
return false if doodad.passable & (1 << d) != 0
}
return passable_newold_edit_doodads?(x, y, d, self_event)
end
end
#===============================================================================
#===============================================================================
class Scene_Title # F12 Fix
unless method_defined?(:main_newold_edit_doodads)
alias_method :main_newold_edit_doodads, :main
end
def main
Cache.clear
main_newold_edit_doodads
end
end
#=============================================================================== |
Pour VX :
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
| =begin
Newold Doodads Editor Bugs Fix (ACE)
Use: * Version without DLL : Paste over main
* Version with DLL : In Main created by installer, search this line:
"SceneManager.run" and paste above the contents
of this script
FIXs:
- 10-06-2019 : Fixed: Doodads does not appears when reset with F12
- 08-06-2019 : Corrected position of doodads during the transitions.
- 08-06-2019 : Fix Fatal error when a map has defined any doodad and you
change the size of map in RPG Maker Editor
=end
#===============================================================================
class Spriteset_Map
def initialize
initialize_newold_edit_doodads
create_doodads
update_doodads
end
end
#===============================================================================
#===============================================================================
class Game_Map
def passable?(x, y)
d = $game_player.direction
unless @doodads_priority.nil? || @doodads_priority[x].nil? ||
@doodads_priority[x][y].nil?
if @doodads_priority.size != 0
return false if @doodads_priority[x][y] & (1<<d) == 0
end
end
doodads = @doodads.select {|doodad|
(doodad.real_x / 32).to_i == x && (doodad.real_y / 32).to_i == y}
doodads.each{|doodad|
return false if doodad.passable & (1 << d) != 0
}
return passable_newold_edit_doodads?(x, y)
end
end
#===============================================================================
#===============================================================================
class Scene_Title < Scene_Base # F12 Fix
unless method_defined?(:start_newold_edit_doodads)
alias_method :start_newold_edit_doodads, :start
end
def start
Cache.clear
start_newold_edit_doodads
end
end
#=============================================================================== |
Pour VX ACE :
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
| =begin
Newold Doodads Editor Bugs Fix (ACE)
Use: * Version without DLL : Paste over main
* Version with DLL : In Main created by installer, search this line:
"SceneManager.run" and paste above the contents
of this script
FIXs:
- 10-06-2019 : Fixed: Doodads does not appears when reset with F12
- 08-06-2019 : Corrected position of doodads during the transitions.
- 08-06-2019 : Fix Fatal error when a map has defined any doodad and you
change the size of map in RPG Maker Editor
=end
#===============================================================================
class Spriteset_Map
def initialize
initialize_newold_edit_doodads
create_doodads
update_doodads
end
end
#===============================================================================
#===============================================================================
class Game_Map
def passable?(x, y, d)
unless @doodads_priority.nil? || @doodads_priority[x].nil? ||
@doodads_priority[x][y].nil?
if @doodads_priority.size != 0
return false if @doodads_priority[x][y] & (1<<d) == 0
end
end
doodads = @doodads.select {|doodad|
(doodad.real_x / 32).to_i == x && (doodad.real_y / 32).to_i == y}
doodads.each{|doodad|
return false if doodad.passable & (1 << d) != 0
}
return passable_newold_edit_doodads?(x, y, d)
end
end
#===============================================================================
#===============================================================================
class Scene_Title < Scene_Base # F12 Fix
unless method_defined?(:start_newold_edit_doodads)
alias_method :start_newold_edit_doodads, :start
end
def start
Cache.clear
start_newold_edit_doodads
end
end
#=============================================================================== |
Crédit
Newold pour ce magnifique éditeur de map.
ForeverZer0 pour le Rpg.NET Export
|
Posté dans Forum - Vos vieux projets pourris |
Erwill -
posté le 28/11/2018 à 18:11:48. (172 messages postés) |
| Super Mario FantasX ( Super Mario Bros X )
C'est un vieux projet qui date de 2012-2013, je ne l'ai plus sur mon PC mais il y a une démo disponible avec 4 niveaux. J'étais fan d'un rom hack de Super Mario World qui s'appelle Super Kitiku Mario (ou Brutal Mario), et je m'en suis inspiré pour construire ce projet. Il y a des erreurs vis-à-vis des graphismes, le scénario se tient sur du papier Q et les textes ont des fautes grossières. Pour y jouer, il faut installer SMBX.
Novel of Koopalings (RPG Maker XP)
Ce projet date de 2014, à l'époque j'étais un fan des koopalings et je voulais en faire des héros de mon jeu. Ce jeu est passé par tellement de système, tellement de changement graphique, les musiques sont des rips remixés avec des soundfonts horrible. (Je voulais créer ma propre banque de soundfont) Même aujourd'hui, je trouve qu'il y a des clash graphiques. Une démo est également disponible, mais le projet a été abandonné car à ce moment là je savais que je pouvais mieux faire.
Les huit jeunes koopas (RPG Maker XP)
J'étais assez fier de ce projet, c'était le premier où il y avait des musiques originales et des rips modifiés pour harmoniser les graphismes et faire des sprites pour avoir des animations dont j'avais besoin. J'avais également modifié certains scripts pour modifier des gameplays.
Il n'y a pas de démo cette fois, et ça a été abandonné au début de l'histoire, la raison à ça est que j'anticipais le cas où Nintendo me demanderait l'arrêt de ce projet.
|
Posté dans Forum - Le prochain RPG Maker, après MV |
Erwill -
posté le 08/04/2018 à 12:20:03. (172 messages postés) |
| J'aimerai bien qu'ils remettent le système de mapping de XP (ou peut-être mieux ?) car franchement pour moi c'est le meilleur avec le système de superposition les 3 couches qu'ON peux gérer et tout...
Mais d'un autre côté j'ai pas trop l'espoir là-dessus, je suis sur qu'ils vont reprendre leur système de mapping de VX Ace et qu'ils vont faire 2 ou 3 améliorations pour faire genre.
|
Posté dans Forum - [ACE] Utiliser les maps de RPG Maker XP sur VX Ace |
Erwill -
posté le 25/03/2018 à 17:09:16. (172 messages postés) |
|
TSDA XP Ace Maping - Utiliser les maps de RPG Maker XP sur VX Ace
Par thiago_d_d
Vous avez un peu de mal avec le système de maping de VX Ace et celui de XP vous manque ? (Comme moi)
Et bien ce script est fait pour vous.
Le script chargera les maps, les tilesets et les autotiles fabriqués avec RPG Maker XP.
I- Installation
Vous devez installer ces deux scripts dans leur version respective. (L'instruction dans ces scripts est en portugais, mais je vous l'expliquerai en français)
Le premier est pour RPG Maker XP
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
| #==============================================================================
# XP Ace Mapping
# RMXP part
# by thiago_d_d
# Tilemap class by ____
#==============================================================================
# Com esse script, você poderá mapear usando o XP para criar mapas de VX Ace!
#==============================================================================
# Para instalar coloque o script acima de Main.
#==============================================================================
# Como fazer a conversão:
# Instale o script RMVXAce part no seu projeto do rmvx ace, primeiramente. Não se
# esqueça, use pasta separadas para o projeto do xp e o do vx ace.
#
# Para cada mapa no vx ace, você deverá criar um mapa de igual tamanho no XP. Os
# dois devem ter a mesma ID.
#
# Mapeie normalmente no xp, lembrando que os eventos que você colocar no
# mapa do XP não funcionarão no Ace. Se for necessário colocar eventos,
# coloque no Ace, gravando qual a posição em que o evento deverá ser colocado.
# A única coisa para que servirá o uso do XP será para mapear: apenas
# as passagens do tileset e sua aparência serão colocados no mapa pronto
# do vx ace.
#
# Após terminar de mapear, desca o script que voce está lendo agora, até achar
# uma parte em que está MAPS = [1]. Coloque entre os colchetes a ID do mapa em
# questão. Lembrando que entre os colchetes deve estar todas as IDs de todos
# os mapas que serão convertidos para o vx ace, separados por vÃrgula, no modelo:
# MAPS = [1,2,3,....999]
#
# Coloque os gráficos de tileset e autotiles na pasta Graphics\Tilesets e
# Graphics\Autotiles do projeto de VX Ace.
#
# Em seguida, execute o projeto do XP e espere até que a title seja carregada.
# Após isso, copie os arquivos TilesetsXP.rxdata e Map"ID do mapa"XP.rxdata
# na pasta Data no projeto do XP e copie para a pasta Data no projeto
# do ace. Pronto!
#==============================================================================
module TSDA
#Coloque a ID dos mapas a serem convertidos
MAPS = [1]
end
class TilesetXP
attr_accessor :id
attr_accessor :name
attr_accessor :tileset_name
attr_accessor :autotile_names
attr_accessor :priorities
attr_accessor :terrain_tags
attr_accessor :flags
def initialize(til)
@id = til.id
@name = til.name
@tileset_name = til.tileset_name
@autotile_names = til.autotile_names
@priorities = til.priorities
@terrain_tags = til.terrain_tags
@flags = til.passages
convert
end
def convert
for i in 0...@priorities.xsize
v = @flags[i]
if i == 0
v |= 0x10
else
v &= ~0x10
end
@flags[i] = v
end
end
end
class MapXP
def initialize(map)
@tileset_id = map.tileset_id
@width = map.width
@height = map.height
@data = map.data
end
attr_accessor :tileset_id
attr_accessor :width
attr_accessor :height
attr_accessor :data
end
def initialize_maps
data_tilesets = load_data("Data/Tilesets.rxdata")
for map in TSDA::MAPS
m = load_data(sprintf("Data/Map%03d.rxdata", map))
mapxp = MapXP.new(m)
save_data(mapxp,sprintf("Data/Map%03dXP.rxdata", map))
end
data_tilesetsxp = []
for til in 0...data_tilesets.size
next if data_tilesets[til].nil?
tilesetxp = TilesetXP.new(data_tilesets[til])
data_tilesetsxp[til] = tilesetxp
end
save_data(data_tilesetsxp,"Data/TilesetsXP.rxdata")
end
initialize_maps |
Le second est pour RPG Maker VX Ace
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
| #==============================================================================
# XP Ace Mapping
# RMVXAce part
# by thiago_d_d
#==============================================================================
# Para instalar coloque o script acima de Main(é importante que esteja após
# todos os scripts)
#==============================================================================
module Cache
def self.tilesetxp(filename)
load_bitmap("Graphics/Tilesets/", filename)
end
def self.autotile(filename)
load_bitmap("Graphics/Autotiles/", filename)
end
end
class TilesetXP
attr_accessor :id
attr_accessor :name
attr_accessor :tileset_name
attr_accessor :autotile_names
attr_accessor :priorities
attr_accessor :terrain_tags
attr_accessor :flags
end
class MapXP
attr_accessor :tileset_id
attr_accessor :width
attr_accessor :height
attr_accessor :data
end
module DataManager
class << self
alias load_normal_database_comp load_normal_database
def load_normal_database
load_normal_database_comp
$data_tilesetsxp = load_data("Data/TilesetsXP.rxdata")
end
end
end
class Game_CharacterBase
def screen_z
tile? ? (return (@priority_type + 1) * 150) : (return (@priority_type) * 150)
end
end
class Sprite_Character
def tileset_bitmap(tile_id)
Cache.tileset($game_map.tilesetoriginal.tileset_names[5 + tile_id / 256])
end
end
class Game_Map
alias game_map_xp_comp setup
alias tilesetoriginal tileset
def setup(map_id)
@mapxp = load_data(sprintf("Data/Map%03dXP.rxdata", map_id))
@tilesetxp = $data_tilesetsxp[@mapxp.tileset_id]
game_map_xp_comp(map_id)
end
def tileset_namexp
@tilesetxp.tileset_name
end
def autotile_namesxp
@tilesetxp.autotile_names
end
def tileset
@tilesetxp
end
def priorities
@tilesetxp.priorities
end
def dataxp
@mapxp.data
end
def tile_id(x, y, z)
dataxp[x,y,z]
end
def layered_tiles(x, y)
[2, 1, 0].collect {|z| tile_id(x, y, z) }
end
def check_passage(x, y, bit)
v = tile_events_xy(x, y).collect {|ev| ev.tile_id }
v.each do |tile_id|
flag = tilesetoriginal.flags[tile_id]
next if flag & 0x10 != 0
return false if flag & bit == bit
end
for i in [2, 1, 0]
tile_id = tile_id(x,y,i)
if tile_id == nil
return false
elsif tileset.flags[tile_id] & bit != 0
return false
elsif tileset.flags[tile_id] & 0x0f == 0x0f
return false
elsif tileset.priorities[tile_id] == 0
return true
end
end
end
end
class Spriteset_Map
def create_tilemap
load_tilemap
load_tileset
end
def load_tilemap
dispose_tilemap unless @tilemap.nil?
at = []
for i in 0..6
autotile_name = $game_map.autotile_namesxp[i]
at[i] = Cache.autotile(autotile_name)
end
@tilemap = Tilemap.new(@viewport1)
@tilemap.tileset = Cache.tileset($game_map.tileset_namexp)
for i in 0..6
autotile_name = $game_map.autotile_namesxp[i]
@tilemap.autotiles[i] = Cache.autotile(autotile_name)
end
@tilemap.map_data = $game_map.dataxp
@tilemap.priorities = $game_map.priorities
end
def dispose_tilemap
@tilemap.tileset.dispose
for i in 0..6
@tilemap.autotiles[i].dispose
end
@tilemap.dispose
end
def load_tileset
@tileset = $game_map.tileset
end
def update_tileset
if @tileset != $game_map.tileset
load_tileset
refresh_characters
end
end
def update_tilemap
if @map_id != $game_map.map_id
load_tilemap
end
@tilemap.ox = $game_map.display_x * 32
@tilemap.oy = $game_map.display_y * 32
@tilemap.update
end
end
class Tilemap
attr_accessor :viewport
attr_accessor :ox
attr_accessor :oy
attr_accessor :tileset
attr_accessor :autotiles
attr_accessor :map_data
attr_reader :priorities
attr_reader :visible
Autotiles = [
[ [27, 28, 33, 34], [ 5, 28, 33, 34], [27, 6, 33, 34], [ 5, 6, 33, 34],
[27, 28, 33, 12], [ 5, 28, 33, 12], [27, 6, 33, 12], [ 5, 6, 33, 12] ],
[ [27, 28, 11, 34], [ 5, 28, 11, 34], [27, 6, 11, 34], [ 5, 6, 11, 34],
[27, 28, 11, 12], [ 5, 28, 11, 12], [27, 6, 11, 12], [ 5, 6, 11, 12] ],
[ [25, 26, 31, 32], [25, 6, 31, 32], [25, 26, 31, 12], [25, 6, 31, 12],
[15, 16, 21, 22], [15, 16, 21, 12], [15, 16, 11, 22], [15, 16, 11, 12] ],
[ [29, 30, 35, 36], [29, 30, 11, 36], [ 5, 30, 35, 36], [ 5, 30, 11, 36],
[39, 40, 45, 46], [ 5, 40, 45, 46], [39, 6, 45, 46], [ 5, 6, 45, 46] ],
[ [25, 30, 31, 36], [15, 16, 45, 46], [13, 14, 19, 20], [13, 14, 19, 12],
[17, 18, 23, 24], [17, 18, 11, 24], [41, 42, 47, 48], [ 5, 42, 47, 48] ],
[ [37, 38, 43, 44], [37, 6, 43, 44], [13, 18, 19, 24], [13, 14, 43, 44],
[37, 42, 43, 48], [17, 18, 47, 48], [13, 18, 43, 48], [ 1, 2, 7, 8] ] ]
def initialize(viewport)
@viewport = viewport
@map_data = nil
@autotiles = []
@real_map_data = nil
@bitmaps = []
@sprites = nil
@disposed = false
@ox = 0
@oy = 0
@autotile_sprites = {}
@anim_list = []
@stored_autotiles = {}
@stored_tiles = {}
@visible = true
@anim_count = 0
@anim_list = []
end
def priorities=(v)
@priorities = v
refresh
end
def refresh
@stored_tiles = {}
@stored_autotiles = {}
@map_data = @real_map_data
@autotile_max_count = []
@autotile_count = []
@sprites = []
@anim_list = []
create_sprites
end
def map_data=(data)
@real_map_data = data
end
def map_data
@real_map_data
end
def create_sprites
for i in 0..6
@autotile_max_count[i] = @autotiles[i].width / 96
@autotile_count[i] = 0
end
@sprites = []
for z in 0...3
for x in 0...@map_data.xsize
for y in 0...@map_data.ysize
tile_id = @map_data[x,y,z]
next if tile_id.nil? or tile_id == 0
if tile_id < 384
create_at(x,y,tile_id,z)
else
create_t(x,y,tile_id,z)
end
end
end
end
update_sprites
end
def create_at(x,y,id,z)
count = @autotile_count[id / 48 - 1]
string = "##{id}##{count}"
string2 = "##{x}##{y}##{z}"
if @stored_autotiles[string].nil?
autotile = @autotiles[id / 48 - 1]
tid = id % 48
bitmap = Bitmap.new(32,32)
tiles = Autotiles[tid / 8][tid % 8]
anim = count * 96
for i in 0...4
tile_position = tiles[i] - 1
src_rect = Rect.new(tile_position % 6 * 16 + anim, tile_position / 6 * 16, 16, 16)
bitmap.blt(i % 2 * 16, i / 2 * 16, autotile, src_rect)
end
@stored_autotiles[string] = bitmap
end
if @autotile_sprites[string2].nil?
sp = Sprite.new(@viewport)
sp.x = x * 32
sp.y = y * 32
c = @priorities[id]
c += 1 if c > 0
sp.z = 150 * c
@autotile_sprites[string2] = sp
@anim_list.push([x,y,id,z])
end
@autotile_sprites[string2].bitmap = @stored_autotiles[string]
end
def create_t(x,y,id,z)
string = "##{id}"
if @stored_tiles[string].nil?
rect = Rect.new((id - 384) % 8 * 32, (id - 384) / 8 * 32, 32, 32)
bt = Bitmap.new(32,32)
bt.blt(0,0,@tileset,rect)
@stored_tiles[string] = bt
end
sp = Sprite.new(@viewport)
sp.x = x * 32
sp.y = y * 32
c = @priorities[id]
c += 1 if c > 0
sp.z = 150 * c
sp.bitmap = @stored_tiles[string]
@sprites.push(sp)
end
def update
return if disposed?
if @map_data != @real_map_data
refresh
end
@anim_count += 1
if @anim_count >= 15
@anim_count = 0
for i in 0..6
@autotile_count[i] += 1
@autotile_count[i] = 0 if @autotile_count[i] >= @autotile_max_count[i]
end
for b in @anim_list
create_at(b[0],b[1],b[2],b[3])
end
end
end
def update_sprites
@autotile_sprites.each_value{|v|v.ox = @ox;v.oy = @oy;v.visible = @visible}
for sp in @sprites;sp.ox = @ox;sp.oy = @oy;sp.visible = @visible;end
end
def dispose
dispose_sprites unless @sprites.nil?
@disposed = true
end
def disposed?
@disposed
end
def ox=(v)
@ox = v
update_sprites
end
def oy=(v)
@oy = v
update_sprites
end
def visible=(v)
@visible = v
update_sprites
end
def dispose_sprites
unless @sprites.nil?
for element in @sprites
element.dispose unless element.nil?
end
@sprites = nil
end
@autotile_sprites.each_value{|sprite|sprite.dispose unless sprite.nil?}
@autotile_sprites = {}
GC.start
end
end |
II - Comment ça marche ?
Avec RPG Maker XP :
Vous devez créer un nouveau projet et installer le premier script, rendez-vous à la ligne 41 où vous mettez l'id des maps que vous souhaitez convertir. (Par exemple "MAPS = [1,2,3,4,8]")
Faites simplement votre map, sauvegardez puis testez le projet et fermez le test.
Allez dans le dossier "Data" et vous verrez qu'il y a des fichiers supplémentaires :
- TilesetsXP.rxdata sont là où les tilesets de XP s'y trouvent.
- MapIDXP.rxdata ce sont les maps qui sont convertis pour VX Ace.
Il est inutile de créer les events et de mettre les panoramas/fogs dessus, ce script ne chargera que la tilemap.
Avec RPG Maker VX Ace :
Vous copiez ces fichiers ci-dessus dans le dossier "Data" de votre projet ainsi que le les graphismes utilisés pour les tilesets sur XP. (Pour les autotiles, vous devez créer un dossier "Autotiles" dans le dossier graphique de votre projet.
Lancez et normalement, RPG Maker VX Ace chargera la map correspondante. (La tilemap de VX Ace ne sera pas pris en compte)
III - Petit correctif
Le seul truc que je reprochais à ce script, c'est que les tiles qui ont ☆1, ☆2, ☆3, ☆4 ou ☆5 en priorité de superposition s'afficheront au dessus du héro quoi qu'il arrive.
J'ai modifié comme j'ai pu le script de VX Ace pour corriger ça, par exemple, les tiles qui ont ☆1 en superposition seront sous ou sur l'event s'il est en bas ou en haut :
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
| #==============================================================================
# XP Ace Mapping
# RMVXAce part
# by thiago_d_d
#==============================================================================
# Para instalar coloque o script acima de Main(é importante que esteja após
# todos os scripts)
#==============================================================================
# Edited by Erwill
#==============================================================================
module Cache
def self.tilesetxp(filename)
load_bitmap("Graphics/Tilesets/", filename)
end
def self.autotile(filename)
load_bitmap("Graphics/Autotiles/", filename)
end
end
class TilesetXP
attr_accessor :id
attr_accessor :name
attr_accessor :tileset_name
attr_accessor :autotile_names
attr_accessor :priorities
attr_accessor :terrain_tags
attr_accessor :flags
end
class MapXP
attr_accessor :tileset_id
attr_accessor :width
attr_accessor :height
attr_accessor :data
end
module DataManager
class << self
alias load_normal_database_comp load_normal_database
def load_normal_database
load_normal_database_comp
$data_tilesetsxp = load_data("Data/TilesetsXP.rxdata")
end
end
end
class Game_CharacterBase
def screen_z
if @priority_type==2
tile? ? (return (@priority_type*2 + 1) * 150 + @y*160) : (return (@priority_type*2) * 150 + @y*160)
else
tile? ? (return (@priority_type + 1) * 150 + @y*160) : (return (@priority_type) * 150 + @y*160)
end
end
end
class Sprite_Character
def tileset_bitmap(tile_id)
Cache.tileset($game_map.tilesetoriginal.tileset_names[5 + tile_id / 256])
end
end
class Game_Map
alias game_map_xp_comp setup
alias tilesetoriginal tileset
def setup(map_id)
@mapxp = load_data(sprintf("Data/Map%03dXP.rxdata", map_id))
@tilesetxp = $data_tilesetsxp[@mapxp.tileset_id]
game_map_xp_comp(map_id)
end
def tileset_namexp
@tilesetxp.tileset_name
end
def autotile_namesxp
@tilesetxp.autotile_names
end
def tileset
@tilesetxp
end
def priorities
@tilesetxp.priorities
end
def dataxp
@mapxp.data
end
def tile_id(x, y, z)
dataxp[x,y,z]
end
def layered_tiles(x, y)
[2, 1, 0].collect {|z| tile_id(x, y, z) }
end
def check_passage(x, y, bit)
v = tile_events_xy(x, y).collect {|ev| ev.tile_id }
v.each do |tile_id|
flag = tilesetoriginal.flags[tile_id]
next if flag & 0x10 != 0
return false if flag & bit == bit
end
for i in [2, 1, 0]
tile_id = tile_id(x,y,i)
if tile_id == nil
return false
elsif tileset.flags[tile_id] & bit != 0
return false
elsif tileset.flags[tile_id] & 0x0f == 0x0f
return false
elsif tileset.priorities[tile_id] == 0
return true
end
end
end
end
class Spriteset_Map
def create_tilemap
load_tilemap
load_tileset
end
def load_tilemap
dispose_tilemap unless @tilemap.nil?
at = []
for i in 0..6
autotile_name = $game_map.autotile_namesxp[i]
at[i] = Cache.autotile(autotile_name)
end
@tilemap = Tilemap.new(@viewport1)
@tilemap.tileset = Cache.tileset($game_map.tileset_namexp)
for i in 0..6
autotile_name = $game_map.autotile_namesxp[i]
@tilemap.autotiles[i] = Cache.autotile(autotile_name)
end
@tilemap.map_data = $game_map.dataxp
@tilemap.priorities = $game_map.priorities
end
def dispose_tilemap
@tilemap.tileset.dispose
for i in 0..6
@tilemap.autotiles[i].dispose
end
@tilemap.dispose
end
def load_tileset
@tileset = $game_map.tileset
end
def update_tileset
if @tileset != $game_map.tileset
load_tileset
refresh_characters
end
end
def update_tilemap
if @map_id != $game_map.map_id
load_tilemap
end
@tilemap.ox = $game_map.display_x * 32
@tilemap.oy = $game_map.display_y * 32
@tilemap.update
end
end
class Tilemap
attr_accessor :viewport
attr_accessor :ox
attr_accessor :oy
attr_accessor :tileset
attr_accessor :autotiles
attr_accessor :map_data
attr_reader :priorities
attr_reader :visible
Autotiles = [
[ [27, 28, 33, 34], [ 5, 28, 33, 34], [27, 6, 33, 34], [ 5, 6, 33, 34],
[27, 28, 33, 12], [ 5, 28, 33, 12], [27, 6, 33, 12], [ 5, 6, 33, 12] ],
[ [27, 28, 11, 34], [ 5, 28, 11, 34], [27, 6, 11, 34], [ 5, 6, 11, 34],
[27, 28, 11, 12], [ 5, 28, 11, 12], [27, 6, 11, 12], [ 5, 6, 11, 12] ],
[ [25, 26, 31, 32], [25, 6, 31, 32], [25, 26, 31, 12], [25, 6, 31, 12],
[15, 16, 21, 22], [15, 16, 21, 12], [15, 16, 11, 22], [15, 16, 11, 12] ],
[ [29, 30, 35, 36], [29, 30, 11, 36], [ 5, 30, 35, 36], [ 5, 30, 11, 36],
[39, 40, 45, 46], [ 5, 40, 45, 46], [39, 6, 45, 46], [ 5, 6, 45, 46] ],
[ [25, 30, 31, 36], [15, 16, 45, 46], [13, 14, 19, 20], [13, 14, 19, 12],
[17, 18, 23, 24], [17, 18, 11, 24], [41, 42, 47, 48], [ 5, 42, 47, 48] ],
[ [37, 38, 43, 44], [37, 6, 43, 44], [13, 18, 19, 24], [13, 14, 43, 44],
[37, 42, 43, 48], [17, 18, 47, 48], [13, 18, 43, 48], [ 1, 2, 7, 8] ] ]
def initialize(viewport)
@viewport = viewport
@map_data = nil
@autotiles = []
@real_map_data = nil
@bitmaps = []
@sprites = nil
@disposed = false
@ox = 0
@oy = 0
@autotile_sprites = {}
@anim_list = []
@stored_autotiles = {}
@stored_tiles = {}
@visible = true
@anim_count = 0
@anim_list = []
end
def priorities=(v)
@priorities = v
refresh
end
def refresh
@stored_tiles = {}
@stored_autotiles = {}
@map_data = @real_map_data
@autotile_max_count = []
@autotile_count = []
@sprites = []
@anim_list = []
create_sprites
end
def map_data=(data)
@real_map_data = data
end
def map_data
@real_map_data
end
def create_sprites
for i in 0..6
@autotile_max_count[i] = @autotiles[i].width / 96
@autotile_count[i] = 0
end
@sprites = []
for z in 0...3
for x in 0...@map_data.xsize
for y in 0...@map_data.ysize
tile_id = @map_data[x,y,z]
next if tile_id.nil? or tile_id == 0
if tile_id < 384
create_at(x,y,tile_id,z)
else
create_t(x,y,tile_id,z)
end
end
end
end
update_sprites
end
def create_at(x,y,id,z)
count = @autotile_count[id / 48 - 1]
string = "##{id}##{count}"
string2 = "##{x}##{y}##{z}"
if @stored_autotiles[string].nil?
autotile = @autotiles[id / 48 - 1]
tid = id % 48
bitmap = Bitmap.new(32,32)
tiles = Autotiles[tid / 8][tid % 8]
anim = count * 96
for i in 0...4
tile_position = tiles[i] - 1
src_rect = Rect.new(tile_position % 6 * 16 + anim, tile_position / 6 * 16, 16, 16)
bitmap.blt(i % 2 * 16, i / 2 * 16, autotile, src_rect)
end
@stored_autotiles[string] = bitmap
end
if @autotile_sprites[string2].nil?
sp = Sprite.new(@viewport)
sp.x = x * 32
sp.y = y * 32
c = @priorities[id]
c += 1 if c > 0
sp.z = 150 * c
@autotile_sprites[string2] = sp
@anim_list.push([x,y,id,z])
end
@autotile_sprites[string2].bitmap = @stored_autotiles[string]
end
def create_t(x,y,id,z)
string = "##{id}"
if @stored_tiles[string].nil?
rect = Rect.new((id - 384) % 8 * 32, (id - 384) / 8 * 32, 32, 32)
bt = Bitmap.new(32,32)
bt.blt(0,0,@tileset,rect)
@stored_tiles[string] = bt
end
sp = Sprite.new(@viewport)
sp.x = x * 32
sp.y = y * 32
if @priorities[id]==0
c = @priorities[id]
else
c = @priorities[id]+y
end
c += 1 if c > 0
sp.z = 150 * c
sp.bitmap = @stored_tiles[string]
@sprites.push(sp)
end
def update
return if disposed?
if @map_data != @real_map_data
refresh
end
@anim_count += 1
if @anim_count >= 15
@anim_count = 0
for i in 0..6
@autotile_count[i] += 1
@autotile_count[i] = 0 if @autotile_count[i] >= @autotile_max_count[i]
end
for b in @anim_list
create_at(b[0],b[1],b[2],b[3])
end
end
end
def update_sprites
@autotile_sprites.each_value{|v|v.ox = @ox;v.oy = @oy;v.visible = @visible}
for sp in @sprites;sp.ox = @ox;sp.oy = @oy;sp.visible = @visible;end
end
def dispose
dispose_sprites unless @sprites.nil?
@disposed = true
end
def disposed?
@disposed
end
def ox=(v)
@ox = v
update_sprites
end
def oy=(v)
@oy = v
update_sprites
end
def visible=(v)
@visible = v
update_sprites
end
def dispose_sprites
unless @sprites.nil?
for element in @sprites
element.dispose unless element.nil?
end
@sprites = nil
end
@autotile_sprites.each_value{|sprite|sprite.dispose unless sprite.nil?}
@autotile_sprites = {}
GC.start
end
end |
IV - Source
https://www.rpgmakercentral.com/topic/18978-tsda-xp-ace-maping-create-your-maps-using-rmxp/
|
Posté dans Forum - [XP] Affichage partiel des images |
Erwill -
posté le 25/12/2017 à 15:59:37. (172 messages postés) |
|
Affichage partiel des images
Ce script permet de créer une zone de l'image qui sera visible, un peu comme les spritesheets ou les autres types de bitmap de rpg maker. (Les characters, les animations, les autotiles, etc.)
À la base je l'ai créé que pour mon projet, mais j'ai décidé de le partager pour d'autres utilisateurs.
Quel est l'utilité de ce script ?
Par exemple, si vous utilisez les images pour afficher les facesets sur XP, au lieu d'avoir 50 fichiers pour 50 facesets, vous pouvez tous les réunir dans un seul et même fichier.
Vous pouvez également utiliser ce script pour en faire des planches de sprite un peu comme les dernières versions de RPG Maker 2003.
Les commandes :
Le script ajoute deux commandes pour les images.
1
| $game_screen.pictures[ID].rect(x, y, width, height) |
Elle permet de créer et de paramétrer la zone d'affichage de l'image.
- ID = l'id de l'image.
- X = La position X de la zone d'affichage sur l'image.
La position 0 de X est sur le bord gauche de l'image.
- Y = La position Y de la zone d'affichage sur l'image.
La position 0 de Y est sur le bord haut de l'image.
- width = La longueur de la zone d'affichage.
- height = La hauteur de la zone d'affichage.
1
| $game_screen.pictures[ID].rectchange(duration, x, y, width, height) |
Elle permet de modifier la zone d'affichage de l'image.
- ID = l'id de l'image.
- Duration = La durée de la modification en frame.
- X = La position X de la zone d'affichage sur l'image.
La position 0 de X est sur le bord gauche de l'image.
- Y = La position Y de la zone d'affichage sur l'image.
La position 0 de Y est sur le bord haut de l'image.
- width = La longueur de la zone d'affichage.
- height = La hauteur de la zone d'affichage.
Le script :
À mettre au-dessus de main.
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
| #==============================================================================
# ** Affichage partiel des images Par Erwill
#------------------------------------------------------------------------------
# Ce script ajoute une option à l'affichage de l'image : la possibilité de
# sélectionner qu'une partie qui sera affichée, un peu comme le principe des
# spritesheets.
#------------------------------------------------------------------------------
# Mode d'emploi :
#
# Voici les commandes ajoutées :
#
# - $game_screen.pictures[ID].rect(x, y, width, height) Permet de sélectionner la partie qui sera affichée.
# Elle permet de créer et de paramétrer la zone d'affichage de l'image.
# - ID = l'id de l'image.
# - X = La position X de la zone d'affichage sur l'image.
# - Y = La position Y de la zone d'affichage sur l'image.
# - width = La longueur de la zone d'affichage.
# - height = La hauteur de la zone d'affichage.
#
# - $game_screen.pictures[ID].rectchange(duration, x, y, width, height) Permet de déplacer la partie affichée. (ne fonctionne pas s'il n'y a pas eu la première commande pour l'image)
# Elle permet de modifier la zone d'affichage de l'image.
# - ID = l'id de l'image.
# - Duration = La durée de la modification en frame.
# - X = La position X de la zone d'affichage sur l'image.
# - Y = La position Y de la zone d'affichage sur l'image.
# - width = La longueur de la zone d'affichage.
# - height = La hauteur de la zone d'affichage.
#
#==============================================================================
#==============================================================================
# ** Game_Picture
#==============================================================================
class Game_Picture
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_reader :number # picture number
attr_reader :name # file name
attr_reader :origin # starting point
attr_reader :x # x-coordinate
attr_reader :y # y-coordinate
attr_reader :zoom_x # x directional zoom rate
attr_reader :zoom_y # y directional zoom rate
attr_reader :opacity # opacity level
attr_reader :blend_type # blend method
attr_reader :tone # color tone
attr_reader :angle # rotation angle
attr_reader :recx # Rect X
attr_reader :recy # Rect Y
attr_reader :recw # Rect width
attr_reader :rech # Rect Height
attr_reader :rece # Rect enable
#--------------------------------------------------------------------------
# * Object Initialization
# number : picture number
#--------------------------------------------------------------------------
def initialize(number)
@number = number
@name = ""
@origin = 0
@x = 0.0
@y = 0.0
@zoom_x = 100.0
@zoom_y = 100.0
@opacity = 255.0
@blend_type = 1
@duration = 0
@target_x = @x
@target_y = @y
@target_zoom_x = @zoom_x
@target_zoom_y = @zoom_y
@target_opacity = @opacity
@tone = Tone.new(0, 0, 0, 0)
@tone_target = Tone.new(0, 0, 0, 0)
@tone_duration = 0
@angle = 0
@rotate_speed = 0
@recx = 0
@recy = 0
@recw = 0
@rech = 0
@rece = 0
@rect_duration = 0
end
#--------------------------------------------------------------------------
# * Show Picture
# name : file name
# origin : starting point
# x : x-coordinate
# y : y-coordinate
# zoom_x : x directional zoom rate
# zoom_y : y directional zoom rate
# opacity : opacity level
# blend_type : blend method
#--------------------------------------------------------------------------
def show(name, origin, x, y, zoom_x, zoom_y, opacity, blend_type)
@name = name
@origin = origin
@x = x.to_f
@y = y.to_f
@zoom_x = zoom_x.to_f
@zoom_y = zoom_y.to_f
@opacity = opacity.to_f
@blend_type = blend_type
@duration = 0
@target_x = @x
@target_y = @y
@target_zoom_x = @zoom_x
@target_zoom_y = @zoom_y
@target_opacity = @opacity
@tone = Tone.new(0, 0, 0, 0)
@tone_target = Tone.new(0, 0, 0, 0)
@tone_duration = 0
@angle = 0
@rotate_speed = 0
@rect_target_x = 0
@rect_target_y = 0
@rect_target_width = 0
@rect_target_height = 0
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
if @duration >= 1
d = @duration
@x = (@x * (d - 1) + @target_x) / d
@y = (@y * (d - 1) + @target_y) / d
@zoom_x = (@zoom_x * (d - 1) + @target_zoom_x) / d
@zoom_y = (@zoom_y * (d - 1) + @target_zoom_y) / d
@opacity = (@opacity * (d - 1) + @target_opacity) / d
@duration -= 1
end
if @tone_duration >= 1
d = @tone_duration
@tone.red = (@tone.red * (d - 1) + @tone_target.red) / d
@tone.green = (@tone.green * (d - 1) + @tone_target.green) / d
@tone.blue = (@tone.blue * (d - 1) + @tone_target.blue) / d
@tone.gray = (@tone.gray * (d - 1) + @tone_target.gray) / d
@tone_duration -= 1
end
if @rotate_speed != 0
@angle += @rotate_speed / 2.0
while @angle < 0
@angle += 360
end
@angle %= 360
end
if @rect_duration >= 1
@recx = (@recx * (@rect_duration - 1) + @rect_target_x) / @rect_duration
@recy = (@recy * (@rect_duration - 1) + @rect_target_y) / @rect_duration
@recw = (@recw * (@rect_duration - 1) + @rect_target_width) / @rect_duration
@rech = (@rech * (@rect_duration - 1) + @rect_target_height) / @rect_duration
@rect_duration -= 1
end
end
#--------------------------------------------------------------------------
# * rect(x, y, width, height)
# Elle permet de créer et de paramétrer la zone d'affichage de l'image.
# - ID = l'id de l'image.
# - X = La position X de la zone d'affichage sur l'image.
# - Y = La position Y de la zone d'affichage sur l'image.
# - width = La longueur de la zone d'affichage.
# - height = La hauteur de la zone d'affichage.
#--------------------------------------------------------------------------
def rect(x, y, width, height)
@recx = x
@recy = y
@recw = width
@rech = height
@rece = 1
end
#--------------------------------------------------------------------------
# * rectchange(duration, x, y, width, height)
# Elle permet de modifier la zone d'affichage de l'image.
# - ID = l'id de l'image.
# - Duration = La durée de la modification en frame.
# - X = La position X de la zone d'affichage sur l'image.
# - Y = La position Y de la zone d'affichage sur l'image.
# - width = La longueur de la zone d'affichage.
# - height = La hauteur de la zone d'affichage.
#--------------------------------------------------------------------------
def rectchange(duration, x, y, width, height)
@rect_duration = duration
@rect_target_x = x
@rect_target_y = y
@rect_target_width = width
@rect_target_height = height
end
end
#==============================================================================
# ** Sprite_Picture
#==============================================================================
class Sprite_Picture < Sprite
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
# If picture file name is different from current one
if @picture_name != @picture.name
# Remember file name to instance variables
@picture_name = @picture.name
# If file name is not empty
if @picture_name != ""
# Get picture graphic
self.bitmap = RPG::Cache.picture(@picture_name)
end
end
# If file name is empty
if @picture_name == ""
# Set sprite to invisible
self.visible = false
return
end
# Set sprite to visible
self.visible = true
# Set transfer starting point
if @picture.origin == 0
self.ox = 0
self.oy = 0
else
if @picture.rece==1 then
self.ox = @picture.recw / 2
self.oy = @picture.rech / 2
else
self.ox = self.bitmap.width / 2
self.oy = self.bitmap.height / 2
end
end
# Set sprite coordinates
self.x = @picture.x
self.y = @picture.y
self.z = @picture.number
# Set zoom rate, opacity level, and blend method
self.zoom_x = @picture.zoom_x / 100.0
self.zoom_y = @picture.zoom_y / 100.0
self.opacity = @picture.opacity
self.blend_type = @picture.blend_type
# Set rotation angle and color tone
self.angle = @picture.angle
self.tone = @picture.tone
if @picture.rece==1 then
self.src_rect.set(@picture.recx, @picture.recy, @picture.recw, @picture.rech)
end
end
end
|
Exemple d'utilisation :
On va prendre un fichier de facesets et on va l'afficher dans le jeu avec la commande correspondante, ça donne ça en gros :
Spoiler (cliquez pour afficher)
Maintenant je veux afficher uniquement le troisième faceset du bas, je n'ai qu'à entrer la commande pour créer la zone d'affichage :
Ce qui donne ça :
Spoiler (cliquez pour afficher)
|
Posté dans Scripts - Image Ondulante |
Erwill -
posté le 23/12/2017 à 17:45:26. (172 messages postés) |
| J'arrive pas à faire fonctionner ce script, t'aurai pas une démo ?
|
Posté dans News - Mise à jour de RPG Maker 2003 |
catskart -
posté le 18/11/2017 à 18:49:59. (172 messages postés) |
| Je crois que RPG Maker 2003 est le seul à utiliser le système de planche de sprite qui est une bonne idée.
Reste plus la possibilité de boucler en OGG et d'afficher directement du textes. (et des variables, je sais que c'est possible via un système de picture)
|
Posté dans Forum - Screenshots de vos jeux ! |
catskart -
posté le 18/11/2017 à 18:39:39. (172 messages postés) |
|
J'ai bidouillé un CMS sur RPG Maker XP où le texte défile, programmé grâce aux scripts et aux events.
L'affichage du texte sur la map est possible grâce à ce script multiplate-forme : http://www.biloucorp.com/afficher-et-manipuler-du-texte-dans-rpg-maker--36 qui est très complet et permet de manipuler le texte comme avec les pictures.
Pour l'interface, j'ai fait un 2x2 pixels classiques pour faire un peu rétro, bon par contre, pour la police, j'ai pas eu le choix d'en prendre une que windows floute, (Un des features de ce script de texte est qu'on peut le zoomer, et donc donner une allure de 2x2 pixel) car RPG Maker XP n'accepte pas les polices bitmaps, va savoir pourquoi.
Pour les touches :
- Gauche rend le défilement rapide.
- Droite rend le défilement lent.
- Echap met le défilement en pause ou retire la pause.
- Entrée passe au message suivant à n'importe quel moment.
|
Posté dans Forum - Paris... |
catskart -
posté le 14/11/2015 à 19:02:23. (172 messages postés) |
| Je fais partie des premiers qui a eu la nouvelle hier soir.
J'habite pas à Paris donc j'ai pas grands choses à dire malheureusement, je suis triste pour ces victimes et ces conséquences, surtout qu'il y a quelque mois la loi sur le renseignement devais sois disant "sécuriser".
|
Posté dans Forum - Topic des blablas d'été |
catskart -
posté le 30/10/2015 à 09:47:15. (172 messages postés) |
| Mmh, j'ai hâte de watiboire ce watiboisson le watibulle, ça semble tellement watibon !
Avec ça je vais peut être watibaiser des meuf.
Watibyebye les watibiatch.
|
Posté dans Forum - RPG Maker en free? |
catskart -
posté le 29/10/2015 à 11:36:18. (172 messages postés) |
| RPG Maker vx ace lite est VACHEMENT TROP limité pour un faire un rpg normal. (mais un mini jeu c'est bon)
De ce que je connais il y a rpgboss ou easyrpg, ces deux étant en développement mais téléchargeable.
|
Posté dans Forum - Screenshots de vos jeux ! |
catskart -
posté le 04/10/2015 à 17:59:44. (172 messages postés) |
| J'ai repris un peu mon projet il y a quelque temps.
Maintenant je commence à faire les arrière-plans des combats. éwe
J'utilise ma méthode que j'utilise dans mes dessins,
et j'ai donc commencé avec un village, inspiré de mon mapping.
Je précise que les nuages tout derrière défilent, et que l'ennemi n'est là que pour le test.
Je souhaiterais avoir votre avis, bien que je sais qu'il doit avoir des défauts ou des imperfections.
P*tain de chi*asse de sa m*re comme c'est long à faire ***** !
|
Aller à la page: 1 2 3 4 5
|
|
|