❤ 0 Installer automatiquement une police dans RPG Maker XP
Vous faites votre jeu sur rpg maker XP avec une police d'écriture très jolie, et vous décidez de le publier sur internet.
Mais oh malheur ! Cette police n'est pas installée dans les ordinateurs des joueurs, et donc, comme RPG Maker ne trouve pas cette police, il va afficher ça :
Spoiler (cliquez pour afficher)
Alors, je n'ai pas essayé, mais je suis sûr et certain que jouer un RPG sans le texte ce n'est pas très facile.
Enterbrain a très bien compris cela et sur RPG Maker VX Ace, le projet contient un dossier "Fonts" où VX Ace ira charger automatiquement toutes les polices dans ce dossier, mais pour RPG Maker XP, bah Enterbrain ne s'est pas penché là-dessus, on peut toujours demander au joueur d'installer manuellement la police d'écriture.
Une autre solution serait de mettre Font.default_name en Array de cette manière :
1
| Font.default_name = $fontface = ["Votre police trop cool","Arial"] |
En gros, si Votre police trop cool n'est pas installée, ce sera la police Arial qui prendra le dessus. Mais bon, que serait votre super jeu sans votre super police ?
Une fonction de GDI32.dll qui s'appelle AddFontResource permet d'ajouter une police spécifiée, ce qui permettra à XP, après un redémarrage, de prendre en compte Votre police trop cool.
On va se rendre dans le script 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
| #==============================================================================
# ** Main
#------------------------------------------------------------------------------
# After defining each class, actual processing begins here.
#==============================================================================
begin
# Default Font
Font.default_name = $fontface = "Arial"
Font.default_size = $fontsize = 22
# Prepare for transition
Graphics.freeze
# Make scene object (title screen)
$scene = Scene_Title.new
# Call main method as long as $scene is effective
while $scene != nil
$scene.main
end
# Fade out
Graphics.transition(20)
rescue Errno::ENOENT
# Supplement Errno::ENOENT exception
# If unable to open file, display message and end
filename = $!.message.sub("No such file or directory - ", "")
print("Le ficher "#{filename}" n'a pas été trouvé.")
end |
On va utiliser une condition grâce à la commande Font.exist?(), qui renvoie "True" sur la police est installée. En effet, on ne veut pas que le jeu se lance si la police est inexistante.
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
| #==============================================================================
# ** Main
#------------------------------------------------------------------------------
# After defining each class, actual processing begins here.
#==============================================================================
begin
# Default Font
Font.default_name = $fontface = "Votre police"
Font.default_size = $fontsize = 22
# Si la police est absente
if !Font.exist?($fontface)
# Sinon on lance le jeu
else
# Prepare for transition
Graphics.freeze
# Make scene object (title screen)
$scene = Scene_Title.new
# Call main method as long as $scene is effective
while $scene != nil
$scene.main
end
# Fade out
Graphics.transition(20)
end
rescue Errno::ENOENT
# Supplement Errno::ENOENT exception
# If unable to open file, display message and end
filename = $!.message.sub("No such file or directory - ", "")
print("Le ficher \"#{filename}\" n'a pas été trouvé.")
end
|
Dans la condition !Font.exist?($fontface), AddFontResource entre en jeu, il sera inscrit en deux lignes, la troisième servira à redémarrer le jeu, si on choisit d’exécuter AddFontResource et ne redémarrant pas le jeu, RPG Maker XP ne prendra toujours pas en compte la police utilisée.
Dans AddFontResource.call() vous renseignez le nom du FICHIER de votre police d'écriture en n'oubliant pas l’extension du fichier.
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
| #==============================================================================
# ** Main
#------------------------------------------------------------------------------
# After defining each class, actual processing begins here.
#==============================================================================
begin
# Default Font
Font.default_name = $fontface = "Votre police"
Font.default_size = $fontsize = 22
# Si la police est absente
if !Font.exist?($fontface)
# Definition de AddFontResource
AddFontResource = Win32API.new('Gdi32', 'AddFontResource', 'p', 'l')
# Appel de la fonction AddFontResource
AddFontResource.call("Votre police.ttf") # Votre police (remplacez le nom par le véritable nom de votre fichier hein)
# Redemmarage du jeu
Thread.new {system "game.exe"}
# Sinon on lance le jeu
else
# Prepare for transition
Graphics.freeze
# Make scene object (title screen)
$scene = Scene_Title.new
# Call main method as long as $scene is effective
while $scene != nil
$scene.main
end
# Fade out
Graphics.transition(20)
end
rescue Errno::ENOENT
# Supplement Errno::ENOENT exception
# If unable to open file, display message and end
filename = $!.message.sub("No such file or directory - ", "")
print("Le ficher \"#{filename}\" n'a pas été trouvé.")
end |
Avec l'exemple ci-dessus, votre fichier doit être dans le dossier racine de votre projet, mais vous pouvez indiquer à la commande AddFontResource le répertoire de votre fichier.
1
| AddFontResource.call("Fonts/Votre police.ttf") |
Maintenant, votre police s'installera automatiquement au lancement du jeu si celle-ci ne l'est pas.
|