Pomogła: 232 razy Dołączyła: 18 Wrz 2007 Posty: 2424
Wysłany: Pią 22 Lut, 2013 02:00
Słowniki Al Bhed'ów [XP] / Al Bhed Primers [XP]
~ Słowniki Al Bhed'ów [XP] / Al Bhed Primers [XP] ~
Krótki opis:
Skrypt powstały niegdyś na zamówienie jednego z Użytkowników Forum. Odkopany po tym, jak chciałam dodać go do aktualnie tworzonego "Systemu".
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ć".
#===================================================================
# Słowniki Al Bhed'ów [XP] / Al Bhed Primers [XP]
# Autor: Ayene [ yurika@o2.pl]
# 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ć".
#===================================================================
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 = text_color(AYENE::AlBhed::CHAR_COLOR1)
if c == c = AYENE::AlBhed.char_translate(c)
self.contents.font.color = text_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
Screeny:
Spoiler:
Dodatkowe informacje:
1. Wklej skrypt nad "Main" w Edytorze Skryptu.
2. Reszta instrukcji znajduje się w treści skryptu.
Pomogła: 232 razy Dołączyła: 18 Wrz 2007 Posty: 2424
Wysłany: Pią 22 Lut, 2013 16:54
To numery kolorów, które wpisuje się w oknie wiadomości \c[nr]. Jeśli ktoś woli można zmienić kolory na RPG, nadpisując skrypt:
Spoiler:
Kod:
#===================================================================
# Słowniki Al Bhed'ów [XP] / Al Bhed Primers [XP]
# Autor: Ayene [ yurika@o2.pl]
# 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ć".
#===================================================================
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
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum