MomoMarcin3 - Nie 14 Mar, 2010 17:25 Temat postu: Skrypt na imionaPotrzebuje skryptu aby wyświetlał imie wczasie rozmowy nad oknem rozmowy.Ayene - Sro 17 Mar, 2010 20:42 Wejdź w klasę Window_Messag i znajdź fargament:
Kod:
text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
$game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
end
def close_name_window
return if @name_window.nil?
@name_window.dispose
@name_window = nil
@sprite.dispose
@sprite = nil
end
Znajdź:
Kod:
def dispose
terminate_message
I po tym dodaj:
Kod:
close_name_window
Znajdź:
Kod:
def terminate_message
self.active = false
I po tym dodaj:
Kod:
close_name_window
Wpisując w treści wiadomości \N[id bohatera] wyświetli się okienko z jego imieniem.Czeliosss - Sro 17 Mar, 2010 21:12 Zrobiłem jak napisałaś i pokazuje mi błąd w 158 linijce.
Kod:
if $game_temp.choice_max > 0
Ayene - Sro 17 Mar, 2010 21:35 Coś źle zrobiłeś. Wklej poniższy skrypt nad Main:
Spoiler:
Kod:
#==============================================================================
# Window_Message
#==============================================================================
# Imię w wiadomości w osobnym okienku
# by Ayene
class Window_Message < Window_Selectable
def dispose
terminate_message
close_name_window
$game_temp.message_window_showing = false
if @input_number_window != nil
@input_number_window.dispose
end
super
end
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]+)\]/) { "\003[#{$1}]" }
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 == "\003"
text.sub!(/\[([0-9]+)\]/, "")
create_name_window($game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : "")
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
self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
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
def close_name_window
return if @name_window.nil?
@name_window.dispose
@name_window = nil
@sprite.dispose
@sprite = nil
end
end
Czeliosss - Sro 17 Mar, 2010 21:47 Błąd mi nie wyskakuje, le nie pokazuje mi imienia.
Ayene - Sro 17 Mar, 2010 21:55 Wklej mi tutaj zawartość swojego domyślnego 'Window_Message'. W gruncie rzeczy nie powinnam nawet brać się za poprawianie błędów wersji polskiej.
Czeliosss - Czw 18 Mar, 2010 07:54 Dobra wykorzystam to jak będę miał orginał, ale po zrobieniu jak mówiłaś to było imię, ale okienko się nie powiększało. Pewnie to wina programu.Ayene - Nie 21 Mar, 2010 21:21 czeliosss, w polskiej wersji programu wszystko działa jak należy. Albo coś źle zrobiłeś, albo masz skrypt, który również podmienia klasę 'Window_Message'.Agumon - Pon 22 Mar, 2010 19:06 A da się takie coś do VX zrobić????adix225 - Czw 01 Kwi, 2010 19:48 Jeśli chcecie to można też w rozmowie dać cmd:
\c[id postaci]
np. \c[1] wtedy pokazuje się imie postaci 1 chyba że chodzi o coś innegoAyene - Czw 01 Kwi, 2010 20:49 Agumon, można... jeśli będziesz zainteresowany, to załóż osobny temat w dziale VX'a.
adix225, nie wprowadzaj w błąd. \c[nr] to kod do kolorów. Domyślnie by wyświetlić imię bohatera to \n[nr], ale nie otwiera się przy tym nowe okienko.