![]()

Autor: Ayene [ Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie obsługi JavaScript. ]

Kompatybilność:
RPG Maker XP

Krótki opis:
Każdy kto grał w Final Fantasy X, będzie wiedział o co chodzi. Skrypt umożliwia kodowanie znaków, dzięki czemu można wprowadzić unikatowy język w świecie gry. W miarę zdobywania przez gracza odpowiednich przedmiotów (np. słowników) zakodowane literki zmieniają się w prawidłowe.
Uwaga skrypt nadpisuje definicję "refresh" w Window_Message. Dokładne miejsce dodanego kodu zostało oznaczone w skrypcie, dzięki czemu w przypadku używania w projekcie CMS-ów linijki można własnoręcznie "dokleić".

Skrypt:
#===================================================================
# Słowniki Al Bhed'ów [XP] / Al Bhed Primers [XP]
# Autor: Ayene [
Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie obsługi JavaScript.
]
# www.ultimateam.pl
#===================================================================
# Opis:
# Każdy kto grał w Final Fantasy X, będzie wiedział o co chodzi.
# Skrypt umożliwia kodowanie znaków, dzięki czemu można wprowadzić unikatowy
# język w świecie gry. W miarę zdobywania przez gracza odpowiednich przedmiotów
# (np. słowników) zakodowane literki zmieniają się w prawidłowe.
#
# Konfiguracja liter i przedmiotów je odsłaniających znajduje się poniżej.
#
# Instrukcja:
# Wklej skrypt nad Main.
#
# Kompatybilność:
# Uwaga skrypt nadpisuje definicję "refresh" w Window_Message.
# Dokładne miejsce dodanego kodu zostało oznaczone w skrypcie,
# dzięki czemu w przypadku używania w projekcie CMS-ów
# linijki można własnoręcznie "dokleić".
#===================================================================
# KONFIGURACJA
module AYENE
module AlBhed
CHAR_SWITCH = 13 # przełącznik włączający kodowanie
# Color.new(R, G, B, przezroczystość)
CHAR_COLOR1 = Color.new(128, 255, 128, 255) # kolor zakodowanej literki
CHAR_COLOR2 = Color.new(255, 128, 128, 255) # kolor odkodowanej literki
IGNORE_COLOR = ["?", ".", ",", "!"] # znaki bez koloru
CHAR_TABLE = {# <-- nie usuwać
#"litera kodowana" => ["litera kodująca", ID przedmiotu z literą]
"a" => ["y", 1],
"ą" => ["y", 2],
"b" => ["p", 3],
"c" => ["l", 4],
"ć" => ["l", 5],
"d" => ["t", 6],
"e" => ["a", 7],
"ę" => ["a", 8],
"f" => ["v", 9],
"g" => ["k", 10],
"h" => ["r", 11],
"i" => ["e", 12],
"j" => ["z", 13],
"k" => ["g", 14],
"l" => ["m", 15],
"ł" => ["m", 16],
"m" => ["s", 17],
"n" => ["h", 18],
"ń" => ["h", 19],
"o" => ["u", 20],
"ó" => ["u", 21],
"p" => ["b", 22],
"q" => ["x", 23],
"r" => ["n", 24],
"s" => ["c", 25],
"ś" => ["c", 26],
"t" => ["d", 27],
"u" => ["i", 28],
"v" => ["j", 29],
"w" => ["f", 30],
"x" => ["q", 31],
"y" => ["o", 32],
"z" => ["w", 33],
"ź" => ["w", 34],
"ż" => ["w", 35],
} # <-- nie usuwać
def self.char_translate(c)
char = CHAR_TABLE[c.downcase]
return c if char.nil?
return c if $game_party.item_number(char[1]) > 0
return char[0].downcase if c.clone.downcase!.nil?
return char[0].upcase
end
end
end
class Window_Message < Window_Selectable
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
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!(/\\\\/) { "\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
# EDYCJA BEGIN
scolor = self.contents.font.color.clone
if $game_switches[AYENE::AlBhed::CHAR_SWITCH]
self.contents.font.color = AYENE::AlBhed::CHAR_COLOR1
if c == c = AYENE::AlBhed.char_translate(c)
self.contents.font.color = AYENE::AlBhed::CHAR_COLOR2 unless AYENE::AlBhed::IGNORE_COLOR.include?(c)
end
end
# EDYCJA END
self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
# EDYCJA BEGIN
self.contents.font.color = scolor
# EDYCJA END
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
end

Dodatkowe informacje:
1. Wklej skrypt nad "Main" w Edytorze Skryptu.
2. Reszta instrukcji znajduje się w treści skryptu.