Hướng dẫn cách hiển thị tiếng Việt trong RMXP

Ken nói rằng có thể chuyển được font chữ lung tung rất thú vị, nhưng lại không thấy nói cách làm, (chắc là để giữ nghề) sau đây tôi sẽ giúp các bạn làm được như thế
Các bạn copy toàn bộ những dòng Script sau và đè nó lên phần Windows_Message của RMXP:
# ----------------------------
class Window_Message < Window_Selectable
attr_accessor :autoclosetime
attr_accessor :op
# ----------------------------
def initialize
super(80, 304, 480, 160)
self.contents = Bitmap.new(width - 32, height - 32)
self.visible = false
self.z = 9998
@fade_in = false
@fade_out = false
@contents_showing = false
@cursor_width = 0
@autoclosetime = -1
@op = 255
@refreshflag = false
self.active = false
self.index = -1
end
# ----------------------------
def dispose
terminate_message
$game_temp.message_window_showing = false
if @input_number_window != nil
@input_number_window.dispose
end
super
end
# ----------------------------
def terminate_message
self.active = false
self.pause = false
self.index = -1
self.contents.clear
@contents_showing = false
if $game_temp.message_proc != nil
$game_temp.message_proc.call
end
$game_temp.message_text = nil
$game_temp.message_proc = nil
$game_temp.choice_start = 99
$game_temp.choice_max = 0
$game_temp.choice_cancel_type = 0
$game_temp.choice_proc = nil
$game_temp.num_input_start = 99
$game_temp.num_input_variable_id = 0
$game_temp.num_input_digits_max = 0
if @gold_window != nil
@gold_window.dispose
@gold_window = nil
end
end
# ----------------------------
def refresh
self.contents.clear
self.contents.font.color = normal_color
self.contents.font.name = "Arial"
self.contents.font.size = 18
x = y = 0
@cursor_width = 0
@autoclosetime = -1
@refreshflag = true
lineheight = 32
active = ""
a = ""
centerflag = false
rightflag = false
bannerflag = false
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" }
text.gsub!(/\\[Ii]\[([0-9]+)\]/) { "\003[#{$1}]" }
text.gsub!(/\\[Ff]\[([0-9]+)\]/) { "\004[#{$1}]" }
text.gsub!(/\\[Aa]\[([0-9]+)\]/) { "\005[#{$1}]" }
text.gsub!(/\\[Xx]/) { "\006" }
text.gsub!(/\\[Rr]/) { "\007" }
text.gsub!(/\\[Dd]/) { "\011" }
text.gsub!(/\\[Ss]\[([0-9]+)\]/) { "\023[#{$1}]" }
text.gsub!(/\\[Bb]/) { "\017" }
text.gsub!(/\\[Ww]\[([0-9]+)\]/) { "\014[#{$1}]" }
text.gsub!(/\\[Mm]\[([0-9]+)\]/) { "\015[#{$1}]" }
text.gsub!(/\\[Oo]\[([0-9]+)\]/) { "\016[#{$1}]" }
text.gsub!(/\\[Jj]\[([0-9]+)\]/) { "\013[#{$1}]" }
text.gsub!(/\\[Hh]\[([0-9]+)\]/) { "\021[#{$1}]" }
text.gsub!(/\\[Kk]\[([0-9]+)\]/) { "\022[#{$1}]" }
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]+)\]/, "")
item_sub = $1.to_i
c = $data_items[item_sub].name
l = self.contents.text_size(c).width
draw_item_name($data_items[item_sub], x, y * 32 + 1)
x = x + l + 24
next
end
if c == "\004"
text.sub!(/\[([0-9]+)\]/, "")
fontize = $1.to_i
case fontize
when 1
self.contents.font.name = "Arial"
when 2
self.contents.font.name = "High Tower Text"
when 3
self.contents.font.name = "Tw Cen MT"
when 4
self.contents.font.name = "Tahoma"
end
next
end
if c == "\005"
text.sub!(/\[([0-9]+)\]/, "")
@autoclosetime = $1.to_i
next
end
if c == "\006"
centerflag = true
next
end
if c == "\007"
rightflag = true
next
end
if c == "\011"
self.contents.font.name = "Arial"
self.contents.font.size = 18
self.contents.font.color = normal_color
lineheight = 32
next
end
if c == "\014"
text.sub!(/\[([0-9]+)\]/, "")
w_sub = $1.to_i
c = $data_weapons[w_sub].name
l = self.contents.text_size(c).width
bitmap = RPG::Cache.icon($data_weapons[w_sub].icon_name)
self.contents.blt(x+4, y * 32+ 4, bitmap, Rect.new(0, 0, 24, 24))
x += 28
self.contents.draw_text(x+4, 32 * y, l+32, lineheight, c)
x = x + l
next
end
if c == "\015"
text.sub!(/\[([0-9]+)\]/, "")
a_sub = $1.to_i
c = $data_armors[a_sub].name
l = self.contents.text_size(c).width
bitmap = RPG::Cache.icon($data_armors[a_sub].icon_name)
self.contents.blt(x+4, y * 32+ 4, bitmap, Rect.new(0, 0, 24, 24))
x += 28
self.contents.draw_text(x+4, 32 * y, l+32, lineheight, c)
x = x + l
next
end
if c == "\016"
text.sub!(/\[([0-9]+)\]/, "")
@op = $1.to_i
next
end
if c == "\017"
bannerflag = true
next
end
if c == "\018"
text.sub!(/\[([0-9]+)\]/, "")
jump = $1.to_i
x += jump
next
end
if c == "\021"
text.sub!(/\[([0-9]+)\]/, "")
lineheight = $1.to_i
next
end
if c == "\022"
text.sub!(/\[([0-9]+)\]/, "")
skill_sub = $1.to_i
c = $data_skills[skill_sub].name
l = self.contents.text_size(c).width
bitmap = RPG::Cache.icon($data_skills[skill_sub].icon_name)
self.contents.blt(x+4, y * 32+ 4, bitmap, Rect.new(0, 0, 24, 24))
x += 28
self.contents.draw_text(x+4, 32 * y, l+32, lineheight, c)
x = x + l
next
end
if c == "\023"
text.sub!(/\[([0-9]+)\]/, "")
bigness = $1.to_i
self.contents.font.size = bigness
next
end
if c == "\n"
if centerflag == true
x = 448 - x
x = x / 2
self.contents.draw_text(x, 32 * y, 448-x, lineheight, a)
end
if rightflag == true
x = 448 - x
self.contents.draw_text(x, 32 * y, 448-x, lineheight, a)
end
if bannerflag == true
x = 448 - x
x = x / 2
self.contents.draw_text(x, 44, 448-x, lineheight, a)
end
a = ""
centerflag = false
rightflag = false
bannerflag = false
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
if centerflag == false && rightflag == false && bannerflag == false
self.contents.draw_text(4 + x, 32 * y, 40, lineheight, c)
x += self.contents.text_size(c).width
else
a += c
x += self.contents.text_size(c).width
end
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 reset_window
if $game_temp.in_battle
self.y = 16
else
case $game_system.message_position
when 0
self.y = 16
when 1
self.y = 160
when 2
self.y = 304
end
end
if $game_system.message_frame == 0
self.opacity = 255
else
self.opacity = 0
end
self.back_opacity = 160
end
# ----------------------------
def update
super
if @refreshflag && @fade_in == false
self.contents_opacity = @op
end
if @autoclosetime == 0
@autoclosetime = -1
terminate_message
end
if @autoclosetime >= 1
@autoclosetime -= 1
end
if @fade_in
self.contents_opacity += 24
if @input_number_window != nil
@input_number_window.contents_opacity += 24
end
if self.contents_opacity >= @op
@fade_in = false
end
return
end
if @input_number_window != nil
@input_number_window.update
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
$game_variables[$game_temp.num_input_variable_id] =
@input_number_window.number
$game_map.need_refresh = true
@input_number_window.dispose
@input_number_window = nil
terminate_message
end
return
end
if @contents_showing
if $game_temp.choice_max == 0
self.pause = true
end
if Input.trigger?(Input::B)
if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
$game_system.se_play($data_system.cancel_se)
$game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
terminate_message
end
end
if Input.trigger?(Input::C)
if $game_temp.choice_max > 0
$game_system.se_play($data_system.decision_se)
$game_temp.choice_proc.call(self.index)
end
@op = 255
terminate_message
end
return
end
if @fade_out == false and $game_temp.message_text != nil
@contents_showing = true
$game_temp.message_window_showing = true
reset_window
refresh
Graphics.frame_reset
self.visible = true
self.contents_opacity = 0
if @input_number_window != nil
@input_number_window.contents_opacity = 0
end
@fade_in = true
return
end
if self.visible
@fade_out = true
self.opacity -= 48
if self.opacity == 0
self.visible = false
@fade_out = false
$game_temp.message_window_showing = false
end
return
end
end
# ----------------------------
def update_cursor_rect
if @index >= 0
n = $game_temp.choice_start + @index
self.cursor_rect.set(8, n * 32, @cursor_width, 32)
else
self.cursor_rect.empty
end
end
end

Ngoài những chức năng chủ yếu, nó còn cho phép các bạn :
Tự động đóng hộp thoại sau n Frames, dùng câu lệnh \a[n]
Chuyển đổi font chữ sang font có thứ tự n trong hệ thống font, dùng \f[n]
Nếu muốn chuyển về bình thường thì dùng \d
Các thứ khác tự tìm hiểu lấy, đang bận.
 
bác ơi tui copy rồi nhung mà khi chạy game thì nó báo lỗi. giup tui đi. "????window mesage tpye erro?????"
 
Chắc tại bác chưa chiển phông chữ của máy thành phông tiếng việt rồi , chuyển về rồi để phông ở dạng vntime ấy .
 
keke...dzấn đề đơn giản ....nhưng nhiều người dzẫn hông bít...keke...(trong đó có tui àh nghe...:D )...dzì dzậy đừng ai hỏi tui hết nhe...:D....nhưng mà...thôi thì cứ hỏi đi...biết đâu tui tra lời đại mà trúng thì sao....keke..:D
 
Sửa font chữ của máy thành font TV phải làm sao đây hở bác.
Còn cha Ken, biết mà bày đặt giấu nghề. để tui cho........
vào http://www.cdmtv.net/rmxp/scripts.html để down mấy Tutorial về, nhiều hiệu ứng hay lắm mà còn có bản demo cho mình xem thử nữa, có scrip để mình copy luôn... wá đã.
 
muốn sửa font chữ trong RPG XP thì wá xá dễ....
mở RPG XP lên...sau đó mở bảng SCRIPT lên....kéo xuống dưới hết...chọn trang "main"...rồi cứ wa bên cửa sổ display trang main bên tay phải mà thoải mái chỉnh sửa...thích gì thì sửa nấy...vd như "font"..hay "font size"...(tui thử sửa font size = 44...vô test game thì té ngửa...vì chữ to wá...mất đầu mất đuôi lun...kakakaka...:D )
 
trang http://www.cdmtv.net/rmxp/scripts.html đang tạm đóng cửa để post thêm sound track. 2 tuần post 1 lần . nên tạm thời không vào được. tui nghĩ chắc là ngày mai các bác lên là được .
 
Cái link mà post ở trang 1 bị die rồi. FIX lại để tui down về nữa chớ mấy you !!! Nhanh dùm cái nha .
 
Cho em hỏi, cái đoạn Script mà ta muốn copy vào Windows message của RPG XP English version ý(topic:RPG XP tiếng Việt) : những cái dòng = chữ Nhật thì phải làm thế nào ? Vì em thấy trong cái đoạn Script chỉ thấy bác chăm chỉ đoạn đầu là ghi tử tế chứ đến đoạn giữa thì chẳng thấy ghi dòng chữ Nhật để ngăn cách các đoạn mã tí nào.


vd:

@cursor_width = 0
@autoclosetime = -1
@refreshflag = true
lineheight = 32
active = ""
a = ""
centerflag = false
rightflag = false
bannerflag = false
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" }
text.gsub!(/\\[Ii]\[([0-9]+)\]/) { "\003[#{$1}]" }
text.gsub!(/\\[Ff]\[([0-9]+)\]/) { "\004[#{$1}]" }
text.gsub!(/\\[Aa]\[([0-9]+)\]/) { "\005[#{$1}]" }
text.gsub!(/\\[Xx]/) { "\006" }
text.gsub!(/\\[Rr]/) { "\007" }
text.gsub!(/\\[Dd]/) { "\011" }
text.gsub!(/\\[Ss]\[([0-9]+)\]/) { "\023[#{$1}]" }
text.gsub!(/\\[Bb]/) { "\017" }
text.gsub!(/\\[Ww]\[([0-9]+)\]/) { "\014[#{$1}]" }
text.gsub!(/\\[Mm]\[([0-9]+)\]/) { "\015[#{$1}]" }
text.gsub!(/\\[Oo]\[([0-9]+)\]/) { "\016[#{$1}]" }
text.gsub!(/\\[Jj]\[([0-9]+)\]/) { "\013[#{$1}]" }
text.gsub!(/\\[Hh]\[([0-9]+)\]/) { "\021[#{$1}]" }
text.gsub!(/\\[Kk]\[([0-9]+)\]/) { "\022[#{$1}]" }
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]+)\]/, "")
item_sub = $1.to_i
c = $data_items[item_sub].name
l = self.contents.text_size(c).width
draw_item_name($data_items[item_sub], x, y * 32 + 1)
x = x + l + 24
next
end
if c == "\004"
text.sub!(/\[([0-9]+)\]/, "")
fontize = $1.to_i
case fontize
when 1
self.contents.font.name = "Arial"
when 2
self.contents.font.name = "High Tower Text"
when 3
self.contents.font.name = "Tw Cen MT"
when 4
self.contents.font.name = "Tahoma"
end
next
end
if c == "\005"
text.sub!(/\[([0-9]+)\]/, "")
@autoclosetime = $1.to_i
next
end
if c == "\006"
centerflag = true
next
end
if c == "\007"
rightflag = true
next
end
if c == "\011"
self.contents.font.name = "Arial"
self.contents.font.size = 18
self.contents.font.color = normal_color
lineheight = 32
next
end
if c == "\014"
text.sub!(/\[([0-9]+)\]/, "")
w_sub = $1.to_i
c = $data_weapons[w_sub].name
l = self.contents.text_size(c).width
bitmap = RPG::Cache.icon($data_weapons[w_sub].icon_name)
self.contents.blt(x+4, y * 32+ 4, bitmap, Rect.new(0, 0, 24, 24))
x += 28
self.contents.draw_text(x+4, 32 * y, l+32, lineheight, c)
x = x + l
next
end
if c == "\015"
text.sub!(/\[([0-9]+)\]/, "")
a_sub = $1.to_i
c = $data_armors[a_sub].name
l = self.contents.text_size(c).width
bitmap = RPG::Cache.icon($data_armors[a_sub].icon_name)
self.contents.blt(x+4, y * 32+ 4, bitmap, Rect.new(0, 0, 24, 24))
x += 28
self.contents.draw_text(x+4, 32 * y, l+32, lineheight, c)
x = x + l
next
end
if c == "\016"
text.sub!(/\[([0-9]+)\]/, "")
@op = $1.to_i
next
end
if c == "\017"
bannerflag = true
next
end
if c == "\018"
text.sub!(/\[([0-9]+)\]/, "")
jump = $1.to_i
x += jump
next
end
if c == "\021"
text.sub!(/\[([0-9]+)\]/, "")
lineheight = $1.to_i
next
end
if c == "\022"
text.sub!(/\[([0-9]+)\]/, "")
skill_sub = $1.to_i
c = $data_skills[skill_sub].name
l = self.contents.text_size(c).width
bitmap = RPG::Cache.icon($data_skills[skill_sub].icon_name)
self.contents.blt(x+4, y * 32+ 4, bitmap, Rect.new(0, 0, 24, 24))
x += 28
self.contents.draw_text(x+4, 32 * y, l+32, lineheight, c)
x = x + l
next
end
if c == "\023"
text.sub!(/\[([0-9]+)\]/, "")
bigness = $1.to_i
self.contents.font.size = bigness
next
end
if c == "\n"
if centerflag == true
x = 448 - x
x = x / 2
self.contents.draw_text(x, 32 * y, 448-x, lineheight, a)
end
if rightflag == true
x = 448 - x
self.contents.draw_text(x, 32 * y, 448-x, lineheight, a)
end
if bannerflag == true
x = 448 - x
x = x / 2
self.contents.draw_text(x, 44, 448-x, lineheight, a)
end
a = ""
centerflag = false
rightflag = false
bannerflag = false
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
if centerflag == false && rightflag == false && bannerflag == false
self.contents.draw_text(4 + x, 32 * y, 40, lineheight, c)
x += self.contents.text_size(c).width
else
a += c
x += self.contents.text_size(c).width
end
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 reset_window
if $game_temp.in_battle
self.y = 16
else
case $game_system.message_position
when 0
self.y = 16
when 1
self.y = 160
when 2
self.y = 304
end
end
if $game_system.message_frame == 0
self.opacity = 255
else



Ở giữa đoạn này em thấy có rất nhiều chữ tiếng Nhật chen dòng, mong các bác chỉ bảo, ko thì chỉ cho em cách khác đơn giản hơn đi. Cách nào mà vừa đánh được tiếng Việt ở các Menu và ở các Message . Thế nhé !
 
Cách nào thật chính xác nhé ! Thật chính xác đi !Em việt hoá = cái Resourse Hack cái 2k3, vào RC Data thì đến 1 phần ở giữa vd: LCF...BATTLEGROUP thì nó treo, ko vào tiếp để sửa font chữ ....

Còn cái XP thì như bài trên... :hug:
 
Hic,cái rpgxp tui vẫn ko thể hiển thị được TV(có lẽ do cái link trang 1 die nên ko dơn được => ko đúng hướng dẫn :D)
Ai up lại cái
 
Không ai làm đươc à? Ai làm được thì lên tiếng đi chứ? Chán thế ?
 
Nè ! Cái link ở trang 1 down rùi thì phải xài chiêu khác thui :D. Down cái Exe Scope về ( tui ko up lên được vì xài dial-up, mấy bác vào google tìm đi :D ) . Sau đó bật nó lên , mở files RPGXP.exe lên , sau đó vào phần resource \ dialog . Tìm cái main nào có tên là Script editor , chỉnh các thông số của cửa sổ cho nó nhỏ lại là ok ).Có lẽ hơi khó hiểu :D ( ai muốn hỏi kĩ thì add nick Y!M của tui vào : Conan_bk )
 
Laguna Dream Party nói:
Sau một thời gian mò mẫn trên mạng, tôi đã tìm ra cách hiển thị tiếng việt trong RMXP (Có thể có trường hợp nào đó mà không cần làm gì máy cũng hiển thị đúng, nhưng cứ như tôi thì tôi đã thử cả 3 máy rồi nhưng không máy nào hiện được tiếng việt cả)
Đầu tiên, các bạn download file này về máy: http://www.lordramza.net/rpgxp/scripts.zip

Link die rồi bạn à, tui cũng đã thử crack dzô cái file Scripts ở trong Data mà ko được, whoa whoa whoa.
 
Laguna Dream Party mới là người khởi đầu vụ thay font này chứ ko phải là ông nghe ông Dương, nếu cám ơn thì phải cám ơn Laguna Dream Party, nót ông Dương
 
Thằng Ice này có vẻ hăng máu quá nhể ? Nói cái vụ kia mà , còn cái topic này làm từ 2004 , có ai để ý đâu ?
Font.default_name ....
Cái này là bài của tao mà ?
 
Thứ 1: Font.default_name ko phải của ông mà là của file Help trong RPG maker XP, tui đã đọc qua 1 lần nhưng lúc đó quên, ông nhắc tui tui cám ơn, ông làm như ông sáng tác ra vụ này ko bằng
 
ủa ?Ai lôi cái Topic cũ rích này ra làm chi vậy ,bi giờ ai cũng viết được TV hết cả rồi ,chỉ còn 2 vị này ngồi đây cãi lộn thui .Thui chạy trước kẻo lại ăn dép :D
 
Ừ cũng phải, nhưng mấy lão trong cái topic này thoái ẩn giang hồ hết roài, ai biết địa chỉ thì đưa lên nhé.
 
Back
Top