
|
| | Les astuces complètes pour RPG Maker XP! | |
| | | Auteur | Message |
|---|
Eldorn Intendant


 Age : 14 Inscrit le : 24 Oct 2007 Messages : 188 Emploi/loisirs : Making tiens! Projet en Cours : Projet 1
| Sujet: Les astuces complètes pour RPG Maker XP! Lun 29 Oct - 12:39 | |
| J'ai comme projet de créer un cour sur le making non pas en partant de zéro mais en s'attardant sur chaque partie afin de l'optimiser à fond!
Commençons sans plus tarder par... (Roulement de tambour...)
Hé oui beaucoup de personnes oublient cet élément important du making! Les messages!
Déjà, parlons des messages en eux même, autrement dit, les paroles des personnages. Je ne suis pas trés fort la dedans mais...
Un héros se baladant dans une ville avec 250 PNJ aura des envies de meurtres lorsque la 128ème personne lui parlera du temps qu'il fait... Comme les 127 avant elle. La solution? Déjà mettez un minimum de PNJ, et donnez leur des dialogues crédibles! L'humour est un trés bon substitut. Autre chose : pensez à varier les paroles des PNJ en utilisant les variables.
Mais les héros parlent aussi! Du moins j'espère Les héros parlent toujours de la même manière, une princesse parlera toujours de manière polie, alors qu'une armoire à glace parlera de manière... moins polie disons. Pour rajouter une touche d'humour, vous pouvez modifier leurs vocabulaire lors d'un moment important! Imaginez la princesse en question gueuler des insultes et vous comprendrez.
Ensuite une règle d'or : évitez les fautes d'orthographes!
Maintenant parlons de l'aspect du message. Commencez par changer le skin. Voila une page avec pas mal de windowskins : http://www.ninesages.org/XP_Album/thumbnails.php?album=76
J'ai remarqué que le vert flashy est une trés mauvaise couleur pour les messages... Allez savoir pourquoi!
Et savez vous que vous pouvez modifier la couleur du texte? Pour tout les textes en modifiant un script, ou pour seulement un bout de texte en utilisant les commandes /c[?]texte à mettre en couleur/c[0] Remplacez le point d'interrogation par le numéro de la couleur. Pour modifier tout les textes, allez dans le script "Window_Base" à la ligne 65. Modifier les trois 255 (Ce sont les valeurs de rouge, vert et bleu.) pour changer la couleur des messages.
Dés que j'aurai retrouver les chiffres des couleurs j'éditerais.
Voila d'autres commandes :
-\n[...] -Affiche le nom du perso numéro ... -\V[...] -Affiche la valeur de la variable numéro ... -\\ -Ecrit le caractère \ (Si vous n'écrivez que /, le jeu bugge! Donc écrivez //) Enfin, grâce à un script, il est possible d'afficher des facesets!
| Spoiler: | | | #============================================================================== # Window_Message #------------------------------------------------------------------------------ # #==============================================================================
class Window_Message < Window_Selectable #-------------------------------------------------------------------------- # #-------------------------------------------------------------------------- def initialize super(80, 304, 480, 160) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font = Font.new("Arial") self.visible = false self.z = 9998 @fade_in = false @fade_out = false @contents_showing = false @cursor_width = 0 @pic_width = 96 @pic_height = 96 self.active = false self.index = -1 end #-------------------------------------------------------------------------- # #-------------------------------------------------------------------------- def dispose terminate_message $game_temp.message_window_showing = false if @input_number_window != nil @input_number_window.dispose end super end #-------------------------------------------------------------------------- # #-------------------------------------------------------------------------- def terminate_message self.active = false self.pause = false self.index = -1 self.contents.clear @contents_showing = false
if $game_temp.message_proc != nil $game_temp.message_proc.call end
$game_temp.message_text = nil $game_temp.message_proc = nil $game_temp.choice_start = 99 $game_temp.choice_max = 0 $game_temp.choice_cancel_type = 0 $game_temp.choice_proc = nil $game_temp.num_input_start = 99 $game_temp.num_input_variable_id = 0 $game_temp.num_input_digits_max = 0
if @gold_window != nil @gold_window.dispose @gold_window = nil end end #-------------------------------------------------------------------------- # #-------------------------------------------------------------------------- def refresh self.contents.clear self.contents.font.color = normal_color x = y = 0 @cursor_width = 0
if $game_temp.choice_start == 0 x = 8 end
if $game_temp.message_text != nil text = $game_temp.message_text
begin last_text = text.clone text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] } end until text == last_text text.gsub!(/\\[Nn]\[([0-9]+)\]/) do $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : "" end text.gsub!(/\\[Ww]\[([0-9]+)\]/) do @pic_width = $1.to_i "" end text.gsub!(/\\[Hh]\[([0-9]+)\]/) do @pic_height = $1.to_i "" end text.gsub!(/\\[Ff]\[([\w]+)\]/) do temp = RPG::Cache.picture($1) pic_x = self.contents.width - @pic_width - 10 pic_y = self.contents.height / 2 - @pic_height / 2 dest = Rect.new(pic_x,pic_y,@pic_width, @pic_height) src = Rect.new(0,0,temp.width, temp.height) self.contents.stretch_blt(dest, temp, src) "" end
text.gsub!(/\\\\/) { "\000" } text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" } text.gsub!(/\\[Gg]/) { "\002" }
while ((c = text.slice!(/./m)) != nil)
if c == "\000" c = "\\" end
if c == "\001" text.sub!(/\[([0-9]+)\]/, "") color = $1.to_i if color >= 0 and color <= 7 self.contents.font.color = text_color(color) end next end
if c == "\002" if @gold_window == nil @gold_window = Window_Gold.new @gold_window.x = 560 - @gold_window.width if $game_temp.in_battle @gold_window.y = 192 else @gold_window.y = self.y >= 128 ? 32 : 384 end @gold_window.opacity = self.opacity @gold_window.back_opacity = self.back_opacity end next end
if c == "\n" if y >= $game_temp.choice_start @cursor_width = [@cursor_width, x].max end y += 1 x = 0
if y >= $game_temp.choice_start x = 8 end next end
self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
x += self.contents.text_size(c).width end end
if $game_temp.choice_max > 0 @item_max = $game_temp.choice_max self.active = true self.index = 0 end
if $game_temp.num_input_variable_id > 0 digits_max = $game_temp.num_input_digits_max number = $game_variables[$game_temp.num_input_variable_id] @input_number_window = Window_InputNumber.new(digits_max) @input_number_window.number = number @input_number_window.x = self.x + 8 @input_number_window.y = self.y + $game_temp.num_input_start * 32 end end #-------------------------------------------------------------------------- # #-------------------------------------------------------------------------- def reset_window if $game_temp.in_battle self.y = 16 else case $game_system.message_position when 0 # ? self.y = 16 when 1 # ? self.y = 160 when 2 # ? self.y = 304 end end if $game_system.message_frame == 0 self.opacity = 255 else self.opacity = 0 end self.back_opacity = 160 end #-------------------------------------------------------------------------- # #-------------------------------------------------------------------------- def update super
if @fade_in self.contents_opacity += 24 if @input_number_window != nil @input_number_window.contents_opacity += 24 end if self.contents_opacity == 255 @fade_in = false end return end
if @input_number_window != nil @input_number_window.update
if Input.trigger?(Input::C) $game_system.se_play($data_system.decision_se) $game_variables[$game_temp.num_input_variable_id] = @input_number_window.number $game_map.need_refresh = true
@input_number_window.dispose @input_number_window = nil terminate_message end return end
if @contents_showing
if $game_temp.choice_max == 0 self.pause = true end
if Input.trigger?(Input::B) if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0 $game_system.se_play($data_system.cancel_se) $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1) terminate_message end end
if Input.trigger?(Input::C) if $game_temp.choice_max > 0 $game_system.se_play($data_system.decision_se) $game_temp.choice_proc.call(self.index) end terminate_message end return end
if @fade_out == false and $game_temp.message_text != nil @contents_showing = true $game_temp.message_window_showing = true reset_window refresh Graphics.frame_reset self.visible = true self.contents_opacity = 0 if @input_number_window != nil @input_number_window.contents_opacity = 0 end @fade_in = true return end
if self.visible @fade_out = true self.opacity -= 48 if self.opacity == 0 self.visible = false @fade_out = false $game_temp.message_window_showing = false end return end end #-------------------------------------------------------------------------- # #-------------------------------------------------------------------------- def update_cursor_rect if @index >= 0 n = $game_temp.choice_start + @index self.cursor_rect.set(8, n * 32, @cursor_width, 32) else self.cursor_rect.empty end end end |
Pour afficher un faceset, vous devrez d'abord disposer de l'image, qui doit faire 96*96 pixels. Placez celle-ci dans le répertoire "Pictures" de votre projet. Dans votre message, placez ensuite le code \f[nom] où nom est le nom de l'image sans son extension.
Voila! Si je trouve d'autres choses j'éditerais ce message. A bientôt pour un autre cours! (Je posterais sur ce topic.)
Si vous pouvez laissez des critiques et des commentaire ça me permettrait de m'améliorer...  |
|  | | Eldorn Intendant


 Age : 14 Inscrit le : 24 Oct 2007 Messages : 188 Emploi/loisirs : Making tiens! Projet en Cours : Projet 1
| Sujet: Re: Les astuces complètes pour RPG Maker XP! Sam 22 Déc - 13:20 | |
|
Les téléports maintenant!
Je commence juste je finirais un autre jour.
Comment faire un téléporteur spécial?
Déjà, réglez pour qu'il n'y ait pas de fondu. (Important! Juste avant la commande de téléport, mettez "Préparer la transition". Juste après, faites "Exécuter la transition".
| Code: | >Préparer la transition >Téléporter l'équipe "..." >Executer la transition "..." |
Choisissez ce qu'il vous plait et testez! C'est mieux qu'un bête téléporteur non?
Allez un petit script.^^ Marre de faire des copier/coller interminable pour les téléportations de cartes en cartes?
Mettez ce script que vous nommez 'Maplink'.
| Spoiler: | | | #-------------------------------------------------------------------------------
class Game_Event < Game_Character alias ml_ge_init initialize def initialize(map_id, event) ml_ge_init(map_id, event) if @event.name.upcase.include?('<MAPLINK>') dir = nil if @event.y == $game_map.height-1 dir = 2 unless @event.x == 0 or @event.x == $game_map.width-1 elsif @event.x == 0 dir = 4 unless @event.y == 0 or @event.y == $game_map.height-1 elsif @event.x == $game_map.width-1 dir = 6 unless @event.y == 0 or @event.y == $game_map.height-1 elsif @event.y == 0 dir = 8 unless @event.x == 0 or @event.x == $game_map.width-1 end if dir != nil @list.each { |command| if command.code == 201 # make sure new location isn't be specified by variables if command.parameters[0] == 0 $game_map.maplinks[dir] = Maplink.new(command.parameters) break end end } end end end end
#-------------------------------------------------------------------------------
class Game_Map attr_accessor :maplinks
alias ml_gm_setup setup def setup(map_id) @maplinks = {} ml_gm_setup(map_id) end
def width(map_id = @map_id) if map_id == @map_id return @map.width else return load_data(sprintf("Data/Map%03d.rxdata", map_id)).width end end
def height(map_id = @map_id) if map_id == @map_id return @map.height else return load_data(sprintf("Data/Map%03d.rxdata", map_id)).height end end
end
#-------------------------------------------------------------------------------
class Maplink
def initialize(parameters) @param = parameters end
def activate width = $game_map.width(@param[1]) height = $game_map.height(@param[1]) # modify x (p[2]) or y (p[3]) coordinates appropriately if @param[2] == 0 or @param[2] == width-1 @param[3] = $game_player.y elsif @param[3] == 0 or @param[3] == height-1 @param[2] = $game_player.x end # set up a dummy interpreter just for teleport interpreter = Interpreter.new interpreter.parameters = @param interpreter.index = 0 interpreter.command_201 end
end
#-------------------------------------------------------------------------------
class Game_Player
alias ml_cett check_event_trigger_touch def check_event_trigger_touch(x, y) check_maplinks(x,y) ml_cett(x,y) end
def check_maplinks(x,y) if $game_map.valid?(x, y) then return end dir = nil if y == $game_map.height then dir = 2 elsif x == -1 then dir = 4 elsif x == $game_map.width then dir = 6 elsif y == -1 then dir = 8 end if dir != nil if $game_map.maplinks[dir] != nil $game_map.maplinks[dir].activate end end end
end
#-------------------------------------------------------------------------------
class Interpreter attr_accessor :parameters attr_accessor :index end |
Mettez <MAPLINK> dans le nom de l'event, et des que le héros passe dans la lignée de l'event, il sera téléporté!
(Script trouvé sur RPG Creative.) _________________

Dernière édition par le Sam 22 Déc - 15:56, édité 3 fois |
|  | | Shive Empereur


 Age : 16 Inscrit le : 26 Juil 2007 Messages : 505 Localisation : Devant son ordi, avec ses potes et à la Réunion! Emploi/loisirs : Lycéen à plein temps Projet en Cours : Crisis, Within Rebellion
| |  | | KeyLad Inquisiteur


 Age : 16 Inscrit le : 03 Oct 2007 Messages : 364 Localisation : France, Isère Emploi/loisirs : Guitare, skate, ma copine Projet en Cours : Projet 1
| Sujet: Re: Les astuces complètes pour RPG Maker XP! Sam 22 Déc - 14:01 | |
| Les portes
Ne faite pas une porte avec une téléportation automatique dès que le héro vient devant.
Taille des MAPS
Il vaut mieux faire plusieurs map petite est très complette, qu'une grande est vide. |
|  | | Shive Empereur


 Age : 16 Inscrit le : 26 Juil 2007 Messages : 505 Localisation : Devant son ordi, avec ses potes et à la Réunion! Emploi/loisirs : Lycéen à plein temps Projet en Cours : Crisis, Within Rebellion
| Sujet: Re: Les astuces complètes pour RPG Maker XP! Dim 23 Déc - 11:55 | |
| Sujet mis en Post-It pour que tout le monde puisse en profiter.
Cordialement, Shive _________________

 |
|  | | | Les astuces complètes pour RPG Maker XP! | |
|
| Page 1 sur 1 |
| | Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| | |
| |
|