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 6202
1021 키입력 한글입력스크립트 16 file 아방스 2007.11.09 11828
1020 온라인 채팅 가능 온라인 스크립트 배포 107 file 아방스 2009.01.03 10685
1019 온라인 RPG 만들기 xp 온라인 스크립트 33 아방스 2007.11.09 9601
1018 맵/타일 [유니크급] RPG XP 게임을 3D화로 보자! Neo Mode7 script / 52 file 쉴더 2009.02.28 9447
1017 온라인 온라인 스크립트 Unis Net RMXP 공식 배포! 25 file 뮤바보 2011.12.25 9403
1016 온라인 광넷[ 광땡 온라인 + 넷플레이 ] 62 - 하늘 - 2009.08.02 9003
1015 전투 [액알]neo_a-rpg_module_1[1][1].2 스크립트 83 file 은빛바람 2009.10.03 8307
1014 이름입력 대화창에 얼굴, 이름 띄우기 37 킬라롯 2008.11.09 7497
1013 온라인 넷플레이1.7.0+abs5.5+한챗 49 쀍뛝쒧 2009.01.24 7289
1012 메뉴 메이플스토리처럼 메뉴를^^ 57 file 딸기님 2010.07.13 7145
1011 메시지 대화창에 얼굴 그래픽 띠우기 73 아방스 2007.11.09 7119
1010 스킬 ABP액알 v1.2 스킬추가, 버그수정판 36 file 백호 2009.02.22 6920
1009 전투 [신기술 체험] 강회된 횡스크롤 액알 13 file 백호 2009.02.22 6841
1008 메뉴 온라인메뉴처럼!! 메이플 메뉴처럼!! 변신~스크립트 33 WMN 2008.03.17 6824
1007 그래픽 화면을 부드럽게 해주는스크립트[ 아주 유용] 56 file - 하늘 - 2009.08.05 6566
1006 온라인 Mr.Metring NPE 1.0 [RPG XP 온라인 스크립트] 35 아방스 2009.01.07 6535
1005 이름입력 케릭터 위에 또는 NPC 위에 이름 뛰우기 [헬악이님 제공] 49 file 아방스 2007.11.09 6414
1004 액터 시트르산의 XP용 감정 말풍선 표시 스크립트 37 file 시트르산 2011.01.25 6114
1003 HUD 주인공,NPC이름 머리 나타내기 49 file 송긔 2010.11.28 6067
1002 전투 액알 스크립트 24 백호 2009.02.22 6017
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 52 Next
/ 52