Multiple Languages (versão 2) é um script desenvolvido pelo SephirothSpawn para ser usado no RPG Maker XP que deixa você simular o aprendizado de múltiplos idiomas no seu projeto, através de transferências de cartas.
O script permite você a transferir uma carta para outra, até que você aprenda a carta (Uma Carta = Outra Carta). Você pode definir idiomas variados e controlar a cor de cartas conhecidas ou desconhecidas para cada um deles.
Primeiro de tudo, instale o script no seu projeto.
Para utilizar o script em seu total potencial, convém um pouco de conhecimento de RGSS.
$game_languages.language_id = language_id
$game_languages.language_id = nil
$game_languages.learn_letter(language_id, 'letter')
Note que pela complexidade do sistema de mensagens, você não pode usar comandos especiais como a janela de mostrar o gold quando usa uma linguagem alternativa.
Definindo o Idioma
Como definir a cor para cartas conhecidas e desconhecidas:
Known_Letter_Color = {language_id => text_color, ...}
Unknown_Letter_Color = {language_id => text_color, ...}
Definindo uma tabela de idioma
Languages = {language_id => <language_table>, ...}
Onde <language_table> é um hash de todas as cartas e símbolos que vão transferir para outra coisa. As chaves são o que a letra é, e seus valores são como o que as cartas vão se parecer depois que traduzidas.
Por exemplo:
{'a' => 'j', 'b' => 'k', 'c' => 'l', 'd' => 'm', 'e' => 'n'}
CbaEBac -> LkjNKjl
Coloque o script abaixo do SDK e acima do Main. Segue o código:
#============================================================================== # ** Multiple Languages #------------------------------------------------------------------------------ # SephirothSpawn # Version 2 # 2006-08-27 #------------------------------------------------------------------------------ # * Description : # # This script was designed to let you simulate multiple languages through # letter transfers. It allows you to transfer one letter to another, until # you learn the letter (One Letter = Another Letter). You can set up # multiple languages and control color of known and unknown letters for # each language. #------------------------------------------------------------------------------ # * Instructions : # # Place The Script Below the SDK and Above Main. # # Turning on Different Language: # - $game_languages.language_id = language_id # # Turning off multiple langauges: # - $game_languages.language_id = nil # # To Learn a letter, use: # - $game_languages.learn_letter(language_id, 'letter') # # ** NOTE: Due to the complexity of message systems, you cannot use special # commands such as the show gold window when displaying an alternate language #------------------------------------------------------------------------------ # * Setting Up A Language # # Setting Color for Known and Unknown letters # - Known_Letter_Color = {language_id => text_color, ...} # - Unknown_Letter_Color = {language_id => text_color, ...} # # Setting Up Language Table # - Languages = {language_id => <language_table>, ...} # # <language_table> is a hash of all letters and symbols that will transfer # to something else. The keys are what the letter is, and the values are # how the letters will appear until translated. # # Example: # {'a' => 'j', 'b' => 'k', 'c' => 'l', 'd' => 'm', 'e' => 'n'} # # CbaEBac -> LkjNKjl #------------------------------------------------------------------------------ # * Credits : # # Thanks To Makeamidget For helping me with previous versions #============================================================================== #------------------------------------------------------------------------------ # * SDK Log Script #------------------------------------------------------------------------------ SDK.log('Multiple Languages', 'SephirothSpawn', 2, '2006-08-28') #------------------------------------------------------------------------------ # * Begin SDK Enable Test #------------------------------------------------------------------------------ if SDK.state('Multiple Languages') #============================================================================== # ** Game_Languages #============================================================================== class Game_Languages #-------------------------------------------------------------------------- # * Letter Colors # # ~ language_id => text_colors # # The Text Colors are the colors you would use when you use c[n]. # By Default, these are the colors: # # 0 : White 1 : Dark Blue # 2 : Red 3 : Green # 4 : Light Blue 5 : Purple # 6 : Yellow 7 : Gray #-------------------------------------------------------------------------- Known_Letter_Color = { 1 => 0 } Unknown_Letter_Color = { 1 => 6 } #-------------------------------------------------------------------------- # * Languages # # ~ language_id => {a => 'f', 'b' => 'c', ...} # # * Template For Letters # = {'a' => '', 'b' => '', 'c' => '', 'd' => '', 'e' => '', # 'f' => '', 'g' => '', 'h' => '', 'i' => '', 'j' => '', # 'k' => '', 'l' => '', 'm' => '', 'n' => '', 'o' => '', # 'p' => '', 'q' => '', 'r' => '', 's' => '', 't' => '', # 'u' => '', 'v' => '', 'w' => '', 'x' => '', 'y' => '', # 'z' => ''} #-------------------------------------------------------------------------- Languages = { 1 => {'a' => 'y', 'b' => 'p', 'c' => 'l', 'd' => 't', 'e' => 'a', 'f' => 'v', 'g' => 'k', 'h' => 'r', 'i' => 'e', 'j' => 'z', 'k' => 'g', 'l' => 'm', 'm' => 's', 'n' => 'h', 'o' => 'u', 'p' => 'b', 'q' => 'x', 'r' => 'n', 's' => 'c', 't' => 'd', 'u' => 'i', 'v' => 'v', 'w' => 'f', 'x' => 'q', 'y' => 'o', 'z' => 'w' } } #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- attr_accessor :language_id #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize @language_id = nil @known_letters = {} end #-------------------------------------------------------------------------- # * Learn Letter #-------------------------------------------------------------------------- def learn_letter(language_id, letter) unless @known_letters.has_key?(language_id) @known_letters[language_id] = [] end unless @known_letters[language_id].include?(letter.downcase) @known_letters[language_id] << letter.downcase end end #-------------------------------------------------------------------------- # * Change To Language #-------------------------------------------------------------------------- def change_to_language return_text = '' text = $game_temp.message_text last_color = 0 begin while ((c = text.slice!(/./m)) != nil) if @known_letters.has_key?(@language_id) if @known_letters[@language_id].include?(c.downcase) next_color = Known_Letter_Color[@language_id] unless next_color == last_color last_color = next_color return_text += 'c' + "[#{next_color}]" end return_text += c next end end if Languages[@language_id].include?(c.downcase) if c.upcase == c c = Languages[@language_id][c.downcase].upcase else c = Languages[@language_id][c] end end next_color = Unknown_Letter_Color[@language_id] unless next_color == last_color last_color = next_color return_text += 'c' + "[#{next_color}]" end return_text += c end end $game_temp.message_text = return_text end end #============================================================================== # ** Window_Message #============================================================================== class Window_Message #-------------------------------------------------------------------------- # * Alias Listings #-------------------------------------------------------------------------- alias seph_gmlngs_wdmsg_refresh refresh #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh # If Alternate Languages Isn't Nil unless $game_languages.language_id.nil? $game_languages.change_to_language end # Original Method Refresh seph_gmlngs_wdmsg_refresh end end #============================================================================== # ** Scene_Title #============================================================================== class Scene_Title #-------------------------------------------------------------------------- # * Alias Listings #-------------------------------------------------------------------------- alias seph_gmlngs_scnttl_cng command_new_game #-------------------------------------------------------------------------- # * Command : New Game #-------------------------------------------------------------------------- def command_new_game # Original Command New Game seph_gmlngs_scnttl_cng # Creates Game Languages Game Data $game_languages = Game_Languages.new end end #============================================================================== # ** Scene_Save #============================================================================== class Scene_Save #-------------------------------------------------------------------------- # * Alias Listings #-------------------------------------------------------------------------- alias seph_gmlngs_scnsave_wd write_data #-------------------------------------------------------------------------- # * Command : New Game #-------------------------------------------------------------------------- def write_data(file) # Original Write Data seph_gmlngs_scnsave_wd(file) # Saves Game Languages Data Marshal.dump($game_languages, file) end end #============================================================================== # ** Scene_Load #============================================================================== class Scene_Load #-------------------------------------------------------------------------- # * Alias Listings #-------------------------------------------------------------------------- alias seph_gmlngs_scnload_rd read_data #-------------------------------------------------------------------------- # * Command : New Game #-------------------------------------------------------------------------- def read_data(file) # Original Write Data seph_gmlngs_scnload_rd(file) # Saves Game Languages Data $game_languages = Marshal.load(file) end end #-------------------------------------------------------------------------- # * End SDK Enable Test #-------------------------------------------------------------------------- end
[gS_tags tagslugs=rpg-maker-xp]
Observação: se você gostou deste post ou ele lhe foi útil de alguma forma, por favor considere apoiar financeiramente a Gaming Room. Fico feliz só de ajudar, mas a contribuição do visitante é muito importante para que este site continua existindo e para que eu possa continuar provendo este tipo de conteúdo e melhorar cada vez mais. Acesse aqui e saiba como. Obrigado!