XP 스크립트

http://www.dubealex.com/asylum/index.php?showtopic=11253
문자 치환(환자법이었던가? 가장 기초적인 암호화 방법인데)을 이용해서 대사창에 다른 언어를 표시하는 스크립트입니다. (FF10/10-2의 알베드어 생각하면 됨) 근데 알파벳만 될 겁니다.(한글에 적용시키고 싶다면.... 알아서 연구해 보시길)






[일반 시스템] Multiple Languages v2 by SephirothSpawn (SDK호환)
글쓴이 : Y.W. Ahn 날짜 : 06-09-01 08:05 조회 : 157
http://www.dubealex.com/asylum/index.php?showtopic=11253
문자 치환(환자법이었던가? 가장 기초적인 암호화 방법인데)을 이용해서 대사창에 다른 언어를 표시하는 스크립트입니다. (FF10/10-2의 알베드어 생각하면 됨) 근데 알파벳만 될 겁니다.(한글에 적용시키고 싶다면.... 알아서 연구해 보시길)






#==============================================================================
# ** Multiple Languages
#------------------------------------------------------------------------------
# SephirothSpawn
# Version 2
# 2006-08-27
#------------------------------------------------------------------------------
# * Descript-xion :
#
# ~ This script-x 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 Script-x Below the SDK and Above Main
#
# ~ Turning on Different Language (Use Before the Text/Message Command):
# $game_languages.language_id = language_id
#
# ~ Turning off multiple langauges (Use After the Text/Message Command):
# $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 => , ...}
#
# ~ 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
#------------------------------------------------------------------------------
# * Thanks To Makeamidget For helping me with previous versions
#==============================================================================

#------------------------------------------------------------------------------
# * SDK Log Script-x
#------------------------------------------------------------------------------
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


다른 언어를 표시하고 싶을 때(메세지 표시하기 전에 넣을 것):
$game_languages.language_id = language_id
다른 언어 표시 off(메세지 표시 후에 넣을 것)
$game_languages.language_id = nil
다른 언어를 배울 때(FF10/10-2에서 알베드어 사전 입수해서 하듯이):
$game_languages.learn_letter(language_id, '문자')

원래의 알파벳과 치환할 문자는 스크립트 내의 Languages = {....} 에서 정의할 수 있습니다.

**이 스크립트로 다른 언어를 표시할 때는 돈 액수창 표시와 같은 몇몇 문자표시 명령을 사용할 수 없습니다.

Who's 백호

?

이상혁입니다.

http://elab.kr

Atachment
첨부 '3'

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 습작 2012.12.24 6153
781 전투 Mr. Mo's ABS Ultimate by DerVVulfman Alkaid 2011.09.05 1438
780 온라인 Mr.Metring NPE 1.0 [RPG XP 온라인 스크립트] 35 아방스 2009.01.07 6535
779 전투 Mr.Mo's ABS Ultimate 2.6 by DerVVulfman Alkaid 2012.01.04 1820
778 전투 Mr.Mo's ABS Ultimate 3.4 by DerVVulfman Alkaid 2012.03.14 1803
777 전투 Mr.Mo's ABS Ultimate 7.0 by DerVVulfman 4 Alkaid 2012.08.26 2587
776 전투 Mr.mo's SBABS Lite 5 6 아방스마니아 2010.11.14 2947
775 전투 MrMo DVV Add-On #13: Tinuke's Smart Missiles 2 Alkaid 2011.01.24 1843
774 장비 Multi Equip 3.1.4 by Trickster (SDK2 호환, Method & Class Li… 4 file WMN 2008.04.06 1597
773 장비 Multi-equip script 2 file 백호 2009.02.21 1101
772 장비 Multi-equip script ver.6 by Guillaume777 4 file 백호 2009.02.22 1210
771 장비 Multi-equip script 노신버전 2 file 백호 2009.02.22 1129
770 온라인 Multi-Netplay Extended (신버전) 10 백호 2009.02.22 2864
769 온라인 Multi-Netplay Extended[구버전용] 3 백호 2009.02.22 2176
768 기타 Multiple Currencies(여러 개의 통화단위 사용) 2 백호 2009.02.22 1124
» 기타 Multiple Languages v2 by SephirothSpawn (SDK호환) file 백호 2009.02.22 1404
766 장비 Multislots! 2.1 by DerVVulfman 3 file Alkaid 2010.09.02 1537
765 장비 Multislots! 2.2 by DerVVulfman 4 file Alkaid 2011.02.18 1611
764 장비 MultiSlots! 2.4 by DerVVulfman 2 Alkaid 2011.09.05 1466
763 온라인 multy-netplay 로그인창에서 비밀번호를 ***표시해주는 script~! 1 백호 2009.02.22 1889
762 기타 My메세지(메세지 출력 스크립트) 1 file 백호 2009.02.22 1533
Board Pagination Prev 1 ... 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ... 52 Next
/ 52