irpg Community
ขอ สคริป ไทย - Printable Version

+- irpg Community (https://irpg.in.th)
+-- Forum: irpg Fabella RPG Maker Academia (https://irpg.in.th/forum-4.html)
+--- Forum: RPG Maker Engine School (https://irpg.in.th/forum-7.html)
+--- Thread: ขอ สคริป ไทย (/thread-1640.html)



ขอ สคริป ไทย - momozahara - 02-04-2014

ขอ หน่อยครับ
ผมลงแล้วมันขึ้นเป็น ?????
หมดปัญญาแล้วคับ



RE: ขอ สคริป ไทย - Darwhima - 02-04-2014

ลบโค้ดเดิมในสคริป Window_Message ทั้งหมด นำโค้ดข้างล่างนี้ไปใส่ไว้ในช่องสคริป Window_Message แทน


#==============================================================================
# * Window_Message
#------------------------------------------------------------------------------
#  It is the message window which is used in composition indication.
#==============================================================================

class Window_Message < Window_Selectable
#--------------------------------------------------------------------------
# - Object initialization.
#--------------------------------------------------------------------------
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
self.active = false
self.index = -1
end
#--------------------------------------------------------------------------
# - Release
#--------------------------------------------------------------------------
def dispose
terminate_message
$game_temp.message_window_showing = false
if @input_number_window != nil
@input_number_window.dispose
end
super
end
#--------------------------------------------------------------------------
# - Message end processing
#--------------------------------------------------------------------------
def terminate_message
self.active = false
self.pause = false
self.index = -1
self.contents.clear
# While indicating clearing the flag
@contents_showing = false
# he message call-back is called
if $game_temp.message_proc != nil
$game_temp.message_proc.call
end
# Composition, the choices, clearing the variable regarding numerical input
$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
# Opening the Goldwyn dough
if @gold_window != nil
@gold_window.dispose
@gold_window = nil
end
end
#--------------------------------------------------------------------------
# - Refreshment
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color = normal_color
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
x = y = 0
@cursor_width = 0
# If the choices indentation is done
if $game_temp.choice_start == 0
x = 8
end
# When there is a message of the waiting of indication
if $game_temp.message_text != nil
text = $game_temp.message_text
# Control character processing
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
# For convenience,"\\\\" convert to "\000"
text.gsub!(/\\\\/) { "\000" }
# "\\C" convert to "\001", "\\G" convert to "\002"
text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
text.gsub!(/\\[Gg]/) { "\002" }
text.gsub!(/\\[Ff]\[([0-9]+)\]/) { "\003[#{$1}]" }
text.gsub!(/\\[Tt]\[([0-9]+)\]/) { "\004[#{$1}]" }
text.gsub!(/\\[Zz]\[([0-9]+)\]/) { "\005[#{$1}]" }
# Until acquisition (letter becomes not be able to acquire 1 letter in c, the loop)
phrase = ""
while ((c = text.slice!(/./m)) != nil)
# \\ = Show letter " \ "
if c == "\000"
# You reset to original letter
c = "\\"
end
# \C = Change text color
if c == "\001"
# Modifying letter color
text.sub!(/\[([0-9]+)\]/, "")
color = $1.to_i
if color >= 0 and color <= 7
self.contents.font.color = text_color(color)
end
# To the following letter
next
end
# \G = Show window gold
if c == "\002"
nowwidth = self.contents.text_size(phrase).width
self.contents.draw_text (4 + x, 32 * y, nowwidth, 32, phrase)
x += nowwidth
phrase = ""
# Drawing up the Gold window dough
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
# To the following letter
next
end
# \F Change Font Face
if c == "\003"
text.sub!(/\[([0-9]+)\]/, "")
fontface = $1.to_i
case fontface
when 1
self.contents.font.name = "AngsanaUPC"
when 2
self.contents.font.name = "BrowalliaUPC"
when 3
self.contents.font.name = "CordiaUPC"
when 4
self.contents.font.name = "DilleniaUPC"
when 5
self.contents.font.name = "EucrosiaUPC"
when 6
self.contents.font.name = "FreesiaUPC"
when 7
self.contents.font.name = "IrisUPC"
when 8
self.contents.font.name = "JasmineUPC"
when 9
self.contents.font.name = "KodchiangUPC"
when 10
self.contents.font.name = "LilyUPC"
when 11
self.contents.font.name = "Microsoft Sans Serif"
when 12
self.contents.font.name = "Tahoma"
else
self.contents.font.name = $fontface
end
# To the following letter
next
end
# \T Change Font Type
if c == "\004"
text.sub!(/\[([0-9]+)\]/, "")
fonttype = $1.to_i
case fonttype
when 1
self.contents.font.bold = true
self.contents.font.italic = false
when 2
self.contents.font.bold = false
self.contents.font.italic = true
when 3
self.contents.font.bold = true
self.contents.font.italic = true
else
self.contents.font.bold = false
self.contents.font.italic = false
end
# To the following letter
next
end
# \Z Change Font Size
if c == "\005"
text.sub!(/\[([0-9]+)\]/, "")
self.contents.font.size = [[$1.to_i, 12].max, 50].min
c = ""
next
end
# In case of line feed character
if c == "\n"
nowwidth = self.contents.text_size(phrase).width
self.contents.draw_text (4 + x, 32 * y, nowwidth, 32, phrase)
x += nowwidth
phrase = ""
# If the choices renewing the width of cursor
if y >= $game_temp.choice_start
@cursor_width = [@cursor_width, x].max
end
# y Adding 1
y += 1
x = 0
# If the choices indentation is done
if y >= $game_temp.choice_start
x = 8
end
# To the following letter
next
end
# Drawing letter
# Adding the width of the letter which is drawn in x
phrase.concat ©
end
if phrase != ""
nowwidth = self.contents.text_size(phrase).width
self.contents.draw_text (4 + x, 32 * y, nowwidth, 32, phrase)
x += nowwidth
phrase = ""
end
end
# In case of choices
if $game_temp.choice_max > 0
@item_max = $game_temp.choice_max
self.active = true
self.index = 0
end
# In case of numerical input
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
#--------------------------------------------------------------------------
# - Position of window and setting of opacity
#--------------------------------------------------------------------------
def reset_window
if $game_temp.in_battle
self.y = 16
else
case $game_system.message_position
when 0 # Top
self.y = 16
when 1 # Middle
self.y = 160
when 2 # Bottom
self.y = 304
end
end
if $game_system.message_frame == 0
self.opacity = 255
else
self.opacity = 0
end
self.back_opacity = 160
end
#--------------------------------------------------------------------------
# - Frame renewal
#--------------------------------------------------------------------------
def update
super
# In case of fading in
if @fade_in
self.contents_opacity += 24
if @input_number_window != nil
@input_number_window.contents_opacity += 24
end
if self.contents_opacity == 255
@fade_in = false
end
return
end
# When it is in the midst of numerical inputting
if @input_number_window != nil
@input_number_window.update
# Decision
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
# Releasing the numerical input window
@input_number_window.dispose
@input_number_window = nil
terminate_message
end
return
end
# When it is in the midst of message indicating
if @contents_showing
# If it is not in the midst of indicating the choices, indicating pause sign
if $game_temp.choice_max == 0
self.pause = true
end
# Cancellation
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
# Decision
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
terminate_message
end
return
end
# While fading out when there is a message or choices of the waiting of indication at other than
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
# There is no message which it should indicate, but when the window is visible state
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
#--------------------------------------------------------------------------
# - Rectangle renewal of cursor
#--------------------------------------------------------------------------
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


RE: ขอ สคริป ไทย - momozahara - 02-04-2014

มันเป็นแบบนี้อะครับ

[Image: dzWkua.png]

[Image: bdbmnN.png]


RE: ขอ สคริป ไทย - Darwhima - 02-04-2014

อย่างนี้ไม่ได้เป็นที่สคริปเกมแล้ว แต่เป็นที่ระบบปฏิบัติการไม่รองรับภาษาไทยเต็มรูปแบบ ลองสังเกตโปรแกรมอื่นบางโปรแกรมที่ใช้ภาษาไทยจะมีลักษณะคล้ายกัน ลองหาดาวน์โหลดชุดติดตั้งภาษาไทยสำหรับระบบปฏิบัติการที่ใช้ และตั้งค่าเครื่องให้เป็นภาษาไทย (เมื่อก่อนก็เคยเป็นแบบนี้เหมือนกัน)


RE: ขอ สคริป ไทย - Shinryu - 02-04-2014

http://irpg.in.th/thread-393.html