设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 904|回复: 2
打印 上一主题 下一主题

[已经过期] NMS 3使用

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
21 小时
注册时间
2013-8-16
帖子
32
跳转到指定楼层
1
发表于 2013-8-22 13:58:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
请问谁有NMS 3脚本,怎么用?

Lv1.梦旅人

梦石
0
星屑
70
在线时间
1083 小时
注册时间
2013-3-29
帖子
2394
2
发表于 2013-8-22 14:38:46 | 只看该作者
去下载一些有用NMS的游戏,比如六道啥的就有了。
在里面看看对话里就懂了。

坑的进度如上                                                                                                        点击↑
回复 支持 反对

使用道具 举报

Lv1.梦旅人

彭格列I世

梦石
0
星屑
168
在线时间
566 小时
注册时间
2012-8-17
帖子
1614
3
发表于 2013-8-22 16:45:18 | 只看该作者
  1. #===============================================================
  2. # + [VX] [ NMS - Neo Message System 3.0 Beta ] +
  3. #--------------------------------------------------------------
  4. # >> by Woratana [[email protected]]
  5. # >> Thaiware RPG Maker Community
  6. # >> Special Thanks: Mako, Yatzumo, Straycat, Erzengel, RPG,
  7. # Dubalex, Modern Algebra, Equilibrium Keeper
  8. #--------------------------------------------------------------
  9. # Released on: 07/06/2008 (D-M-Y)
  10. #--------------------------------------------------------------
  11. # Include: NEO-FACE SYSTEM ADVANCE (Version 3.0) by Woratana
  12. #===============================================================
  13. # Note:
  14. # - This script started when VX English is not coming out yet,
  15. # so some of comments here are still be Japanese :)
  16. # - This script is included newest version of Neo-Face System,
  17. # so you have to remove old Neo-Face System if you have it.

  18. =begin
  19. =============================================
  20. + NMS 3 Beta + [07/06/2008]
  21. - Add 'Text Remove List'
  22. - Change window size & position temporarily
  23. - You can now call script:
  24. $game_message.create_nms_data
  25. to reset NMS data or create NMS data for old save file
  26. - Fixed bug for write actor's class name
  27. - Fixed bug for out-of-screen name box
  28. - Add NAMEBOX_Y_PLUS_TOP to fix out-of-screen name box when show message on Top
  29. - Set name box's opacity for different types of message background
  30. - Auto fix if message window is out of screen
  31. - You can draw new face while message is running, and also set new face size
  32. =============================================
  33. =============================================
  34. + NMS 2.3 + [11/03/2008 - 06/04/2008]
  35. - Remove Color for [WRITE TEXT] features
  36. - 'Quick Text' feature
  37. - Animated Face
  38. - Play SE/ME
  39. - Typing Sound
  40. - Scroll Text Vertically and Horizontally
  41. - Auto-cut text (Not work perfectly)
  42. - Hex Color (Special Thanks: RPG & Erzengel)
  43. - Pop Message (Work in Progress)
  44. - Add the script code in comment of some settings,
  45. so user can change it in game by call script.
  46. =============================================
  47. =============================================
  48. + NMS 2.1 + [11/03/2008]: Fixed Name Box Bug
  49. =============================================
  50. =====================================
  51.      + NMS 2.0 FEATURES LIST +
  52. =====================================
  53. Use these features in message box
  54. ----------------------------------
  55. >> NMS MESSAGE FEATURES
  56. ----------------------------------
  57. --------------------------
  58. >> [SPECIAL CALL] PART
  59. --------------------------
  60. \ce[Common Event ID] << Run Common Event immediately

  61. \ani[Animation ID] << Show Animation on 'This Event'
  62. \bal[Balloon ID] << Show Ballon on 'This Event'

  63. * Note: This Event = Event that show this message

  64. --------------------------
  65. >> [MESSAGE WINDOW] PART
  66. --------------------------
  67. * temporary properties will be using only one time
  68. \wx[x]        << Set temporary X to x
  69. \wy[y]        << Set temporary Y to y
  70. \ww[width]    << Set temporary Width to width
  71. \wh[height]   << Set temporary Height to height

  72. ----------------------------------------
  73. >> +[ POP TEXT ]+
  74. ----------------------------------------
  75. Pop text is the message box that will show over character
  76. and has size equal to message size

  77. You can call pop text by put this in message
  78. \p[character]

  79. * character: Character you want to show message box over~
  80. 0 for Player
  81. -1 for This Event
  82. 1 or more for that event ID

  83. ----------------------------------------
  84. >> +[ QUICK TEXT ]+ a.k.a. Shortcut
  85. ----------------------------------------
  86. Add & Call your very long text (or) text that you use many times by shortcut.
  87. You can put special syntax in it, e.g. 'Welcome to \c[10]Syria Village\c[0]

  88. $nms.qt[Quick Text ID] = 'Text you want' << Add Quick Text

  89. \qt[Quick Text ID] << Call Quick Text from message box

  90. --------------------------
  91. >> [DRAW IMAGE] PART
  92. --------------------------
  93. \dw[weapon ID] << Draw Weapon Icon + Weapon Name
  94. \da[armor ID]  << Draw Armor Icon + Armor Name
  95. \di[item ID]   << Draw Item Icon + Item Name
  96. \ds[skill ID]  << Draw Skill Icon + Skill Name

  97. \ic[icon ID]   << Draw Icon

  98. \dp[image_name] << Draw Image from folder 'System'

  99. --------------------------
  100. >> [WRITE TEXT] PART
  101. --------------------------
  102. \map                         << Write Map Name

  103. \nc[actor ID]                << Write Class of Actor
  104. \np[1 to 4 (order in party)] << Write Name of actor in that order
  105. \nm[monster ID]              << Write Monster Name
  106. \nt[troop ID]                << Write Troop Name

  107. \nw[weapon ID]               << Write Weapon Name
  108. \na[armor ID]                << Write Armor Name
  109. \ns[skill ID]                << Write Skill Name
  110. \ni[item ID]                 << Write Item Name
  111. \price[item ID]              << Write Item Price

  112. --------------------------
  113. >> [TEXT EFFECT] PART
  114. --------------------------
  115. \fn[Font Name] (or) << Change Font Name
  116. \fs[Font Size] << Change Font Size
  117. \delay[Delay]  << Change text Delay per letter (in frame, 60 frames = about 1 sec)

  118. \ref           << Reset Font Name
  119. \res           << Reset Font Size
  120. \red           << Reset text Delay

  121. \b             << Turn on/off BOLD text
  122. \i             << Turn on/off ITALIC text
  123. \sh            << Turn on/off SHADOW text
  124. \lbl           << Turn on/off LETTER-BY-LETTER Mode (default is ON)

  125. --------------------------
  126. >> [NAME BOX & FACE] PART
  127. --------------------------
  128. \nb[Name]  << Show Name Box in current message window

  129. \rnb[Name] (or) $nms._name = 'Name' << Repeat Name Box:
  130. Name Box with this name will show again and again in next messages
  131. unless there is \nb[Name] in that message, or you've stop this option by type \rnb[]

  132. \sd[side] (or) $nms.side = side << Change Face Side:
  133. (0: Left Side Normal Face | -1: Right Side Normal Face)
  134. (1: Left Side Neo Face | 2: Right Side Neo Face)

  135. $nms.color = [Red,Green,Blue] << Change Name Text Color:
  136. Put RGB Color in, e.g. [255,100,200]

  137. \fa[face_file_name, face_index] (or) \fa[face_file_name, face_index, new_side]
  138. << Draw new face while message is running~
  139. face_file_name: Face image's name
  140. face_index:     Index of the face in image (0 - 7)
  141. new_side:       Face side you want to change to

  142. --------------------------
  143. >> [SOUND] PART
  144. --------------------------
  145. \se[filename]   << Play SE
  146. \me[filename]   << Play ME
  147. \bgm[filename]  << Play BGM

  148. \typ            << Turn on/off typing sound

  149. --------------------------
  150. >> [Misc.] PART
  151. --------------------------
  152. \cb           << Turn on/off cancel skip text feature (Player can/can't press [Enter] to skip text)
  153. \nl           << Start new line
  154. \sc[x]        << Create blank space x pixel
  155. \w[x]         << Wait x frames
  156. \c[#XXXXXX]   << Use Hex Color for text

  157. ----------------------------------
  158. >> VX DEFAULT MESSAGE FEATURES
  159. ----------------------------------
  160. \v[variable ID] << Write value from variable
  161. \n[actor ID]    << Write actor's name
  162. \c[color ID]    << Change text color (Color ID is from Down-right corner in Windowskin)
  163. \g              << Show gold window
  164. \.              << Wait 15 frames (about 1/4 sec)
  165. \|              << Wait 60 frames (about 1 sec)
  166. \!              << Wait for player to press button to continue message
  167. \>              << Skip letter-by-letter in current line
  168. \<              << Stop 'skip letter-by-letter' in current line
  169. \^              << Close message box immediately
  170. \\              << Write '\'

  171. =end
  172. class Window_Base
  173.   
  174.   #---------------------------------
  175.   # [START] SETUP SCRIPT PART
  176.   #-------------------------------
  177.   #---------------------------------
  178.   # ? MESSAGE SYSTEM
  179.   #-------------------------------
  180.   NMS_FONT_NAME = "SimHei"#Font.default_name # Default Font Name
  181.   NMS_FONT_SIZE = 20 # Default Font Size
  182.   
  183.   # COLOR_ID is from Windowskin image in down-right corder
  184.   NMS_ITEM_NAME_COLOR_ID = 5
  185.   NMS_WEAPON_NAME_COLOR_ID = 10
  186.   NMS_ARMOR_NAME_COLOR_ID = 4
  187.   NMS_SKILL_NAME_COLOR_ID = 2
  188.   
  189.   NMS_DELAY_PER_LETTER = 0 # Delay between letter when showing text letter-by-letter
  190.   # Delay is in frame, 60 frames = 1 second
  191.   # $nms.text_delay = (number)
  192.   
  193.   TEXT_X_PLUS = 0 # Move Text Horizontally
  194.   CHOICE_INPUT_X_PLUS = 0
  195.   # Move Choices Text and Input Number Text Horizontally
  196.   
  197.   # [NEW SETTING] #
  198.   NMS_MSGWIN_X = 128 # Default Message Window X
  199.   # $nms.msg_x = (number)
  200.   
  201.   NMS_MSGWIN_WIDTH = 544 # Default Message Window Width
  202.   # $nms.msg_w = (number)
  203.   NMS_MSGWIN_MIN_HEIGHT = 128 # Default & Minimum Message Window Height
  204.   # $nms.msg_h_user = (number)
  205.   
  206.   NMS_MAX_LINE = 4 # Max Message Lines to display per page
  207.   # $nms.max_line = (number)
  208.   NMS_GET_NEXT_LINE = false # Get messages from next message command, if box is not full
  209.   # $nms.next_msg = true/false
  210.   
  211.   NMS_MSG_BACK = "MessageBack" # Message Back Image File Name (For 'Dim Background' Message)
  212.   # (Must be in folder 'System')
  213.   # $nms.mback = 'Image Name'
  214.   NMS_MSG_BACK_OPACITY = 255 # message Back's Opacity
  215.   # $nms.mback_opac = (0 - 255)
  216.   
  217.   NMS_TEXT_SCROLL = false # Use Vertical Text Scroll?
  218.   # $nms.txt_scrl = true/false
  219.   
  220.   NMS_TEXT_AUTO_CUT = false # Text will automatically start new line if that line is full
  221.   # (Some bug, it may cut in the middle of word..)
  222.   # $nms.txt_cut = true/false
  223.   
  224.   NMS_TEXT_AUTO_SCROLL_HORIZONTAL = false # Text will automatically scroll to the left if line is full
  225.   # This will not work if NMS_TEXT_AUTO_CUT is true
  226.   # $nms.txt_scrl_hori = true/false
  227.   NMS_TEXT_AUTO_SCROLL_HORIZONTAL_DELAY = 1 # Scroll Delay (in frame)
  228.   # $nms.txt_scrl_hori_delay = (number)
  229.   
  230.   NMS_USER_NEW_LINE = false # Text will goes in new line ONLY when type \nl
  231.   # (Good for Text Auto Cut)
  232.   # $nms.txt_unl = true/false
  233.   
  234.   NMS_REMOVE_LIST = [] # List of text that you want to remove from message
  235.   # for example, NMS_REMOVE_LIST = ['test', '[MS]']
  236.   # will remove text 'test' and '[MS]' before show message
  237.   # Note that this is NOT case sensitive
  238.   
  239.   #---------------------------------
  240.   # ? FACE SYSTEM
  241.   #-------------------------------
  242.   #------------------------------------------------
  243.   # ** BOTH FACE SYSTEMS SETUP
  244.   #----------------------------------------------
  245.   DEFAULT_FACE_SIDE = 0 # Default Face Side when game start~
  246.   # (0: Left Side Normal Face | -1: Right Side Normal Face)
  247.   # (1: Left Side Neo Face | 2: Right Side Neo Face)
  248.   # $nms.side = (side no.)
  249.   
  250.   FACE_X_PLUS = 0 # Move Face Horizontally (Left: -, Right: +)
  251.   FACE_Y_PLUS = 0 # Move Face Vertically (Up: -, Down: +)
  252.   
  253.   MOVE_TEXT = true # (true/false)
  254.   # Move text to right side of face, when showing face in left side.
  255.   
  256.   #-------------------------------------
  257.   # **SHOW FACE EFFECT
  258.   # * For both Face Systems *
  259.   #----------------------------------
  260.   FADE_EFFECT = true # Turn on/off fade effect (true/false)
  261.   # $nms.face_fade = true/false
  262.   FADE_SPEED = 10 # Speed up face's fade effect by increase this number
  263.   FADE_ONLY_FIRST = true # Use Fade Effect only in first message window?
  264.   
  265.   MOVE_EFFECT = false # Turn on/off "move in" effect (true/false)
  266.   # $nms.face_move = true/false
  267.   MOVE_SPEED = 50 # Speed up face's "move in" effect by increase this number
  268.   MOVE_ONLY_FIRST = true # Use Move Effect only in first message window?
  269.   
  270.   FADE_MOVE_WHEN_USE_NEW_FACE = true
  271.   # Use Fade and Move effect when change Face graphic
  272.   # (In case using FADE_ONLY_FIRST and MOVE_ONLY_FIRST)
  273.   
  274.   #-------------------------------
  275.   # ** NEO FACE SYSTEM
  276.   #----------------------------
  277.   EightFaces_File = false
  278.   # Use 8 Faces per file (or) 1 Face per file (true/false)
  279.   
  280.   #-------------------------------
  281.   # ** ANIMATED FACE SYSTEM
  282.   #----------------------------
  283.   ANIMATE_FACE_DELAY = 6 # Face animate every _ frame
  284.   # $nms.animf_delay = (number)
  285.   
  286.   ANIMATE_FACE_CONTINUE = false # Face continue to animate after text stop writing?
  287.   # $nms.animf_cont = (true/false)
  288.   
  289.   #------------------------------------
  290.   # ? NAME BOX SYSTEM
  291.   #----------------------------------
  292.   NAMEBOX_SKIN = 'Window' # Windowskin of Name Box (In folder 'Graphics/System')
  293.   NAMEBOX_OPACITY = 255 # Name Box Opacity when using 'Normal Background' message
  294.   # (Lowest 0 - 255 Highest)
  295.   NAMEBOX_OPACITY_DIM_BG = 0 # Name Box Opacity when using 'Dim Background'
  296.   NAMEBOX_OPACITY_NO_BG = 0 # Name Box Opacity when using 'Transparent' Background
  297.   NAMEBOX_BACK_OPACITY = 180 # Name Box Background Opacity
  298.   
  299.   NAMEBOX_X_PLUS_NOR = 102 # Additional Name Box X [Horizontal] for Normal Face Name Box
  300.   NAMEBOX_X_PLUS_NEO = 160 # Additional Name Box X for Neo Face Name Box
  301.   NAMEBOX_X_PLUS_EIENSHINKEN = -2
  302.   NAMEBOX_Y_PLUS = 0 # Move Name Box & Text Vertically
  303.   NAMEBOX_Y_PLUS_TOP = 140
  304.   # Move Name Box & Text Vertically if message box is on Top
  305.   
  306.   NAMEBOX_TEXT_FONT = "SimHei" # Name Text Font's Name
  307.   NAMEBOX_TEXT_SIZE = Font.default_size # Name Text Font's Size
  308.   NAMEBOX_TEXT_HEIGHT_PLUS = 2 # Increase Name Text Height (For Big Size Text)

  309.   NAMEBOX_TEXT_BOLD = true # Make Text in Name Box Bold
  310.   NAMEBOX_TEXT_OUTLINE = false # Make Black Outline around Text (Good with Opacity = 0)
  311.   NAMEBOX_TEXT_DEFAULT_COLOR = [255,255,255]#[255,255,255] # [Red,Green,Blue]: Name Text Color (RGB)
  312.   # You can easily find color code for RGB (Red Green Blue) color in Google :)
  313.   # You are allow to change color in game by call script:
  314.   # $nms.color = [Red,Green,Blue]
  315.   
  316.   NAMEBOX_TEXT_AFTER_NAME = " " # Add Text after Name, leave "" to disable.
  317.   
  318.   NAMEBOX_BOX_WIDTH_PLUS = 6 # Increase Name Box Width
  319.   NAMEBOX_BOX_HEIGHT_PLUS = 7 # Increase Name Box Height
  320.   
  321.   MOVE_NAMEBOX = true
  322.   # (true/false) Move Text Box to Right Side if showing Face in Right side.

  323.   #---------------------------------
  324.   # ? TEXT TYPING SOUND SYSTEM
  325.   #-------------------------------
  326.   TYPING_SOUND = true # Use Typing Sound?
  327.   # $nms.typ_se = true/false
  328.   TYPING_SOUND_FILE = 'Cursor'
  329.   # Sound File Name for Typing Sound (Must be in Folder 'Audio/SE')
  330.   # $nms.typ_file = 'filename'
  331.   TYPING_SOUND_VOLUME = 80 # Typing Sound's Volume
  332.   # $nms.typ_vol = 0 - 100
  333.   TYPING_SOUND_SKIP = 2
  334.   # How many frames you want to skip before play typing sound again?
  335.   # $nms.typ_skip = (no. of frames)
  336.   #---------------------------------
  337.   # [END] SETUP SCRIPT PART
  338.   #-------------------------------
  339. end
  340.   $worale = {} if $worale == nil
  341.   $worale["NMS"] = true
  342.   
  343. class Window_Message < Window_Selectable
  344.   #--------------------------------------------------------------------------
  345.   # ? ALIAS
  346.   #--------------------------------------------------------------------------
  347.     alias wor_nms_winmsg_ini initialize
  348.     def initialize
  349.       wor_nms_winmsg_ini
  350.       $nms = $game_message
  351.       contents.font.name = $nms.nms_fontname
  352.       contents.font.size = $nms.nms_fontsize
  353.       [url=home.php?mod=space&uid=84331]@face[/url] = Sprite.new
  354.       @face.z = self.z + 5
  355.       @nametxt = Sprite.new
  356.       @nametxt.z = self.z + 15
  357.       @namebox = nil
  358.       @ori_x = 0
  359.       @name_text = nil
  360.       [url=home.php?mod=space&uid=32227]@ShowTime[/url] = 0 # To check if this is first time it shows message (For face)
  361.       @face_data = Array.new(3)
  362.       @face_data_old = Array.new(3)
  363.       
  364.       #NMS 2++
  365.       self.width = $nms.msg_w
  366.       self.height = $nms.msg_h
  367.       update_window_size(true)
  368.       self.x = $nms.msg_x
  369.       
  370.       @typse_count = 0
  371.       @delay_text = 0
  372.       @no_press_input = false
  373.       @biggest_text_height = 0
  374.       @all_text_width = 0
  375.       @animf_dl = 0 # Animation Face Delay
  376.       @animf = false # Using Animation Face?
  377.       @animf_ind = 0 # Animation Face Index
  378.       [url=home.php?mod=space&uid=81924]@pop[/url] = nil # Pop ID
  379.     end
  380.   #--------------------------------------------------------------------------
  381.   # ? ??
  382.   #--------------------------------------------------------------------------
  383.   def dispose
  384.     super
  385.     dispose_gold_window
  386.     dispose_number_input_window
  387.     dispose_back_sprite
  388.     $game_switches[22] = true
  389.   end
  390.   #--------------------------------------------------------------------------
  391.   # ? EDITED
  392.   #--------------------------------------------------------------------------
  393.   def update
  394.     super
  395.   if self.visible == true
  396.     update_back_sprite
  397.     update_gold_window
  398.     update_number_input_window
  399.     update_show_fast
  400.     update_window_size
  401.     update_animate_face if @animf
  402.    
  403.     @typse_count -= 1 if @typse_count > 0
  404.    
  405.     if @name_text != nil
  406.       draw_name(@name_text,self.x,self.y)
  407.     end
  408.     if @face.bitmap != nil
  409.       # UPDATE FADE IN EFFECT
  410.       if @face.opacity < 255
  411.         @face.opacity += FADE_SPEED
  412.       end
  413.       # UPDATE MOVE IN EFFECT
  414.       if $nms.face_move and @ori_x != @face.x
  415.         if (@ori_x > @face.x and @face.x + MOVE_SPEED < @ori_x) or (@ori_x < @face.x and @face.x - MOVE_SPEED > @ori_x)
  416.           @face.x += MOVE_SPEED if @ori_x > @face.x
  417.           @face.x -= MOVE_SPEED if @ori_x < @face.x
  418.         else
  419.           @face.x = @ori_x
  420.         end
  421.       end
  422.     end
  423.   end
  424.     unless @opening or @closing
  425.       if @wait_count > 0
  426.         @wait_count -= 1
  427.       elsif self.pause
  428.         input_pause
  429.       elsif self.active
  430.         input_choice
  431.       elsif @number_input_window.visible
  432.         input_number
  433.       elsif @text != nil
  434.         if @delay_text > 0
  435.           @delay_text -= 1
  436.         else
  437.           update_message
  438.         end
  439.       elsif continue?
  440.         @showtime += 1
  441.         start_message
  442.         open
  443.         $game_message.visible = true
  444.       else
  445.         close
  446.         @showtime = 0
  447.         if @face.bitmap != nil
  448.          @face.bitmap.dispose
  449.         end
  450.         clear_namebox if @namebox != nil
  451.         $game_message.visible = @closing
  452.       end
  453.     end
  454.   end
  455.   #--------------------------------------------------------------------------
  456.   # ? NEW
  457.   #--------------------------------------------------------------------------
  458.   def update_window_size(direct = false, create_bitmap = true)
  459.     if (self.width != $nms.msg_w or self.height != $nms.msg_h) or direct
  460.       self.width = $nms.msg_w if $nms.msg_w > 32
  461.       self.height = $nms.msg_h if $nms.msg_h > 32
  462.       create_contents if create_bitmap
  463.     end
  464.   end
  465.   #--------------------------------------------------------------------------
  466.   # ? ???????????
  467.   #--------------------------------------------------------------------------
  468.   def create_gold_window
  469.     @gold_window = Window_Gold.new(384, 0)
  470.     @gold_window.openness = 0
  471.   end
  472.   #--------------------------------------------------------------------------
  473.   # ? ????????????
  474.   #--------------------------------------------------------------------------
  475.   def create_number_input_window
  476.     @number_input_window = Window_NumberInput.new
  477.     @number_input_window.visible = false
  478.   end
  479.   #--------------------------------------------------------------------------
  480.   # ? ??????????
  481.   #--------------------------------------------------------------------------
  482.   def create_back_sprite
  483.     @back_sprite = Sprite.new
  484.     @back_sprite.bitmap = @old_mback = Cache.system($game_message.mback)
  485.     @back_sprite.opacity = @old_mback_opac = $game_message.mback_opac
  486.     @back_sprite.visible = (@background == 1)
  487.     @back_sprite.z = 190
  488.   end
  489.   #--------------------------------------------------------------------------
  490.   # ? ???????????
  491.   #--------------------------------------------------------------------------
  492.   def dispose_gold_window
  493.     @gold_window.dispose
  494.   end
  495.   #--------------------------------------------------------------------------
  496.   # ? ????????????
  497.   #--------------------------------------------------------------------------
  498.   def dispose_number_input_window
  499.     @number_input_window.dispose
  500.   end
  501.   #--------------------------------------------------------------------------
  502.   # ? ??????????
  503.   #--------------------------------------------------------------------------
  504.   def dispose_back_sprite
  505.     @back_sprite.dispose
  506.   end
  507.   #--------------------------------------------------------------------------
  508.   # ? ???????????
  509.   #--------------------------------------------------------------------------
  510.   def update_gold_window
  511.     @gold_window.update
  512.   end
  513.   #--------------------------------------------------------------------------
  514.   # ? ????????????
  515.   #--------------------------------------------------------------------------
  516.   def update_number_input_window
  517.     @number_input_window.update
  518.   end
  519.   #--------------------------------------------------------------------------
  520.   # ? ??????????
  521.   #--------------------------------------------------------------------------
  522.   def update_back_sprite
  523.     @back_sprite.visible = (@background == 1)
  524.     @back_sprite.y = y - 16
  525.     @back_sprite.opacity = $nms.mback_opac > openness ? openness : $nms.mback_opac
  526.     @back_sprite.update
  527.   end
  528.   #--------------------------------------------------------------------------
  529.   # ? ?????????
  530.   #--------------------------------------------------------------------------
  531.   def update_show_fast
  532.     if self.pause or self.openness < 255
  533.       @show_fast = false
  534.     elsif Input.trigger?(Input::C) and @wait_count < 2 and !@no_press_input
  535.       @show_fast = true
  536.     elsif not Input.press?(Input::C)
  537.       @show_fast = false
  538.     end
  539.     if @show_fast and @wait_count > 0
  540.       @wait_count -= 1
  541.     end
  542.   end
  543.   #--------------------------------------------------------------------------
  544.   # ? ????????????????????
  545.   #--------------------------------------------------------------------------
  546.   def continue?
  547.     return true if $game_message.num_input_variable_id > 0
  548.     return false if $game_message.texts.empty?
  549.     if self.openness > 0 and not $game_temp.in_battle
  550.       return false if @background != $game_message.background
  551.       return false if @position != $game_message.position
  552.     end
  553.     return true
  554.   end
  555.   #--------------------------------------------------------------------------
  556.   # ? EDITED: NMS 2.2+
  557.   #--------------------------------------------------------------------------
  558.   def start_message
  559.     @all_text_width = 0
  560.     @pop = nil
  561.    
  562.     @text = ""
  563.     @text_line = $game_message.texts.size < $game_message.max_line ? $game_message.texts.size + 1 : MAX_LINE + 1
  564.     for i in 0...$game_message.texts.size
  565.       # Change "    " to "" (Spacing for choice)
  566.       @text += "" if i >= $game_message.choice_start
  567.       @text += $game_message.texts[i].clone + "\x00"
  568.     end
  569.      
  570.     @item_max = $game_message.choice_max
  571.     convert_special_characters
  572.     reset_window
  573.     update_window_size
  574.     new_page
  575.   end
  576.   #--------------------------------------------------------------------------
  577.   # ? EDITED
  578.   #--------------------------------------------------------------------------
  579.   def new_page
  580.     @animf = false
  581.     contents.clear
  582.    
  583.     if @face.bitmap != nil
  584.     @face.bitmap.dispose
  585.     end
  586.     if $game_message.face_name.empty?
  587.     @contents_x = TEXT_X_PLUS
  588.     else
  589.       nms_draw_new_face
  590.       # CHECK FOR MOVE EFFECT
  591.       @ori_x = @face.x
  592.       if $nms.face_move and ((MOVE_ONLY_FIRST and @showtime <= 1) or (MOVE_ONLY_FIRST == false))
  593.         if $game_message.side == 0 or $game_message.side == 1
  594.           @face.x = 0 - @face.width
  595.         else
  596.           @face.x = Graphics.width
  597.         end
  598.       end
  599.       @contents_x = get_x_face
  600.     end
  601.     @main_contents_x = @contents_x
  602.     @contents_y = 0
  603.     @line_count = 0
  604.     @typse_count = 0
  605.     @show_fast = false
  606.     @line_show_fast = false
  607.     @pause_skip = false
  608.     contents.font.color = text_color(0)
  609.     @contents_x += CHOICE_INPUT_X_PLUS if $game_message.choice_max > 00
  610.    
  611.     if @old_mback != Cache.system($nms.mback) or @old_mback_opac != $nms.mback_opac
  612.       dispose_back_sprite; create_back_sprite
  613.     end
  614.    
  615.     @no_press_input = false
  616.     self.oy = 0
  617.   end
  618.   #--------------------------------------------------------------------------
  619.   # ? EDITED
  620.   #--------------------------------------------------------------------------
  621.   def new_line
  622.     biggest = @biggest_text_height > WLH ? @biggest_text_height : WLH
  623.     @contents_y += biggest
  624.     if $nms.txt_scrl and @contents_y >= contents.height and @text != ""
  625.       rect = Rect.new(0, biggest, contents.width, contents.height - biggest)
  626.       cont_s = Bitmap.new(contents.width,contents.height)
  627.       cont_s.blt(0, 0, contents, rect)
  628.       rect_s = Rect.new(0,0,contents.width,contents.height)
  629.       contents.clear_rect(0, 0, contents.width, contents.height)
  630.       contents.blt(0, 0, cont_s, rect_s)
  631.       @contents_y = rect.height
  632.       cont_s.dispose
  633.       @show_fast = false
  634.       @no_press_input = true
  635.     end
  636.     @contents_x = @main_contents_x
  637.     @contents_x += CHOICE_INPUT_X_PLUS if $game_message.choice_max > 0
  638.     @biggest_text_height = WLH
  639.     @line_count += 1
  640.     @line_show_fast = false
  641.   end
  642.   #--------------------------------------------------------------------------
  643.   # ? EDITED
  644.   #--------------------------------------------------------------------------
  645.   def convert_special_characters
  646.     clear_namebox if @namebox != nil
  647.    
  648.     # Woratana's :: Quick Text
  649.     @text.gsub!(/\\QT\[([0-9]+)\]/i) { $nms.qt[$1.to_i] }
  650.    
  651.     #--------------------------
  652.     # DEFAULT FEATURES
  653.     #-----------------------
  654.     @text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
  655.     @text.gsub!(/\\N\[([0-9]+)\]/i) { $game_party.members[($1.to_i)-1].name}
  656.     @text.gsub!(/\\C\[(.*?)\]/i) { "\x01{#{$1}}" }
  657.     @text.gsub!(/\\G/i)              { "\x02" }
  658.     @text.gsub!(/\\\./)             { "\x03" }
  659.     @text.gsub!(/\\\|/)             { "\x04" }
  660.     @text.gsub!(/\\!/)              { "\x05" }
  661.     @text.gsub!(/\\>/)              { "\x06" }
  662.     @text.gsub!(/\\</)              { "\x07" }
  663.     @text.gsub!(/\\\^/)             { "\x08" }
  664.     @text.gsub!(/\\\\/)             { "\\" }
  665.    
  666.     #--------------------------
  667.     # * NMS FEATURES!!
  668.     #-----------------------
  669.     # Woratana's :: Draw Weapon Name + Icon
  670.     @text.gsub!(/\\DW\[([0-9]+)\]/i) { "\x83[#{$data_weapons[$1.to_i].icon_index}]\x01{#{NMS_WEAPON_NAME_COLOR_ID}}\\nw[#{$1.to_i}]\x01{#{$nms.last_color}}"}
  671.     # Woratana's :: Draw Item Name + Icon
  672.     @text.gsub!(/\\DI\[([0-9]+)\]/i) { "\x83[#{$data_items[$1.to_i].icon_index}]\x01{#{NMS_ITEM_NAME_COLOR_ID}}\\ni[#{$1.to_i}]\x01{#{$nms.last_color}}" }
  673.     # Woratana's :: Draw Armor Name + Icon
  674.     @text.gsub!(/\\DA\[([0-9]+)\]/i) { "\x83[#{$data_armors[$1.to_i].icon_index}]\x01{#{NMS_ARMOR_NAME_COLOR_ID}}\\na[#{$1.to_i}]\x01{#{$nms.last_color}}"}
  675.     # Woratana's :: Draw Skill Name + Icon
  676.     @text.gsub!(/\\DS\[([0-9]+)\]/i) { "\x83[#{$data_skills[$1.to_i].icon_index}]\x01{#{NMS_ITEM_NAME_COLOR_ID}}\\ns[#{$1.to_i}]\x01{#{$nms.last_color}}"}

  677.     # Woratana's :: Call Animation
  678.     @text.gsub!(/\\ANI\[([0-9]+)\]/i) { "\x80[#{$1}]" }
  679.     # Woratana's :: Call Balloon
  680.     @text.gsub!(/\\BAL\[([0-9]+)\]/i) { "\x81[#{$1}]" }
  681.     # Woratana's :: Call Common Event
  682.     @text.gsub!(/\\CE\[([0-9]+)\]/i) { "\x82[#{$1}]" }
  683.     # Woratana's :: Draw Icon
  684.     @text.gsub!(/\\IC\[([0-9]+)\]/i) { "\x83[#{$1}]" }

  685.     # Woratana's :: Map Name
  686.     @text.gsub!(/\\MAP/i) { nms_get_map_name }
  687.     # Woratana's :: Actor Class Name
  688.     @text.gsub!(/\\NC\[([0-9]+)\]/i) { $data_classes[$game_actors[$1.to_i].class_id].name }
  689.     # Woratana's :: Party Actor Name
  690.     @text.gsub!(/\\NP\[([0-9]+)\]/i) { $game_party.members[($1.to_i - 1)].name }
  691.     # Woratana's :: Monster Name
  692.     @text.gsub!(/\\NM\[([0-9]+)\]/i) { $data_enemies[$1.to_i].name }
  693.     # Woratana's :: Troop Name
  694.     @text.gsub!(/\\NT\[([0-9]+)\]/i) { $data_troops[$1.to_i].name }
  695.     # Woratana's :: Item Name
  696.     @text.gsub!(/\\NI\[([0-9]+)\]/i) { $data_items[$1.to_i].name }
  697.     # Woratana's :: Weapon Name
  698.     @text.gsub!(/\\NW\[([0-9]+)\]/i) { $data_weapons[$1.to_i].name }
  699.     # Woratana's :: Armor Name
  700.     @text.gsub!(/\\NA\[([0-9]+)\]/i) { $data_armors[$1.to_i].name }
  701.     # Woratana's :: Skill Name
  702.     @text.gsub!(/\\NS\[([0-9]+)\]/i) { $data_skills[$1.to_i].name }
  703.     # Woratana's :: Item Price
  704.     @text.gsub!(/\\PRICE\[([0-9]+)\]/i) { $data_items[$1.to_i].price.to_s }
  705.    
  706.     # Woratana's :: Font Name Change
  707.     @text.gsub!(/\\FN\[(.*?)\]/i) { "\x84[#{$1}]" }
  708.     # Woratana's :: Font Size Change
  709.     @text.gsub!(/\\FS\[(.*?)\]/i) { "\x85[#{$1}]" }
  710.     # Woratana's :: Reset Font Name
  711.     @text.gsub!(/\\REF/i) { "\x86" }
  712.     # Woratana's :: Reset Font Size
  713.     @text.gsub!(/\\RES/i) { "\x87" }
  714.     # Woratana's :: BOLD Text
  715.     @text.gsub!(/\\B/i) { "\x88" }
  716.     # Woratana's :: ITALIC Text
  717.     @text.gsub!(/\\I/i) { "\x89" }
  718.     # Woratana's :: Text DELAY
  719.     @text.gsub!(/\\DELAY\[([0-9]+)\]/i) { "\x90[#{$1}]"}
  720.     # Woratana's :: Reset Text Delay
  721.     @text.gsub!(/\\RED/i) { "\x91" }
  722.     # Woratana's :: Turn On/Off Letter by Letter
  723.     @text.gsub!(/\\LBL/i) { "\x92" }
  724.    
  725.      # Woratana's NeoFace System
  726.      @text.scan(/\\SD\[([-,0-9]+)\]/i)
  727.      if $1.to_s != ""
  728.        $game_message.side = $1.to_i
  729.        @text.sub!(/\\SD\[([-,0-9]+)\]/i) {}
  730.      end
  731.    
  732.      # Woratana's :: Name Box
  733.      @text.scan(/\\NB\[(.*?)\]/i)
  734.      if $1.to_s != ""
  735.        n_text = $1.to_s.gsub(/\x01\{(.*?)\}/i) {} # Clear If there's Color
  736.        @name_text = n_text
  737.        @text.sub!(/\\NB\[(.*?)\]/i) {}
  738.      end
  739.    
  740.      # Woratana's :: Repeat Name Box
  741.      @text.gsub!(/\\RNB\[(.*?)\]/i) do
  742.        $game_message._name = $1.to_s
  743.        a = ""
  744.      end
  745.      
  746.      # NMS 2++
  747.      # Woratana's :: SHADOW Text
  748.      @text.gsub!(/\\SH/i) { "\x93" }
  749.      # Woratana's :: Cancel Skip Text Button
  750.      @text.gsub!(/\\CB/i) { "\x94" }
  751.      # Woratana's :: Wait X Frame
  752.      @text.gsub!(/\\W\[([0-9]+)\]/i) { "\x95[#{$1}]" }
  753.      # Woratana's :: Add Space X Pixel
  754.      @text.gsub!(/\\SC\[([0-9]+)\]/i) { "\x96[#{$1}]" }
  755.      
  756.      # Woratana's :: Play SE
  757.      @text.gsub!(/\\SE\[(.*?)\]/i) { "\x97[#{$1}]" }
  758.      # Woratana's :: Play ME
  759.      @text.gsub!(/\\ME\[(.*?)\]/i) { "\x98[#{$1}]" }
  760.      # Woratana's :: Play BGM
  761.      @text.gsub!(/\\BGM\[(.*?)\]/i) { "\x99[#{$1}]" }
  762.      
  763.      # Woratana's :: Start New Line
  764.      @text.gsub!(/\\NL/i) { "\x09" }
  765.      # Woratana's :: Turn ON/OFF Typing Sound
  766.      @text.gsub!(/\\TYP/i) { "\x10" }
  767.      # Woratana's :: Draw Picture
  768.      @text.gsub!(/\\DP\[(.*?)\]/i) { "\x11[#{$1}]" }
  769.      
  770.      # Woratana's :: Draw Face
  771.      @text.gsub!(/\\FA\{(.*?)\}/i) { "\x12{#{$1}}" }
  772.      
  773.      # Woratana's :: Temporary Width
  774.      @text.scan(/\\WW\[([-,0-9]+)\]/i)
  775.      if $1.to_s != ''
  776.        $nms.msg_temp_w = $1.to_i
  777.        @text.sub!(/\\WW\[([-,0-9]+)\]/i) {}
  778.      end
  779.      # Woratana's :: Temporary Height
  780.      @text.scan(/\\WH\[([-,0-9]+)\]/i)
  781.      if $1.to_s != ''
  782.        $nms.msg_temp_h = $1.to_i
  783.        @text.sub!(/\\WH\[([-,0-9]+)\]/i) {}
  784.      end
  785.      # Woratana's :: Temporary X
  786.      @text.scan(/\\WX\[([-,0-9]+)\]/i)
  787.      if $1.to_s != ''
  788.        $nms.msg_temp_x = $1.to_i
  789.        @text.sub!(/\\WX\[([-,0-9]+)\]/i) {}
  790.      end
  791.      # Woratana's :: Temporary Y
  792.      @text.scan(/\\WY\[([-,0-9]+)\]/i)
  793.      if $1.to_s != ''
  794.        $nms.msg_temp_y = $1.to_i
  795.        @text.sub!(/\\WY\[([-,0-9]+)\]/i) {}
  796.      end

  797.     # Woratana's :: Remove text list
  798.      NMS_REMOVE_LIST.each {|i| @text.gsub!(/#{i}/i) {} }
  799.      
  800.      # Woratana's :: Pop Text
  801.      @text.scan(/\\P\[(.*?)\]/i)
  802.      if $1.to_s != ""
  803.       @pop = $1.to_i
  804.       contents.font.name = $nms.nms_fontname if contents.font.name != $nms.nms_fontname
  805.       contents.font.size = $nms.nms_fontsize if contents.font.size != $nms.nms_fontsize
  806.       a = @text.split(/\x00/)
  807.       for i in 0..(a.size - 1)
  808.         text_width = contents.text_size(a[i]).width
  809.         @all_text_width = text_width if @all_text_width < text_width
  810.       end
  811.        nms_draw_new_face
  812.        if @face.bitmap != nil
  813.         if get_x_face == 0 and MOVE_TEXT
  814.           @all_text_width += (@face.width + TEXT_X_PLUS)
  815.         else
  816.           @all_text_width += get_x_face
  817.         end
  818.         @face.bitmap.dispose
  819.         @face.bitmap = nil
  820.       end
  821.       @text.sub!(/\\P\[(.*?)\]/i) {}
  822.       end
  823.   
  824.      @name_text = $game_message._name if @name_text == nil and $game_message._name != ""
  825.    end
  826.   #--------------------------------------------------------------------------
  827.   # ? EDIT: NMS 2.2++
  828.   #--------------------------------------------------------------------------
  829.   def reset_window
  830.     @background = $game_message.background
  831.     @position = $game_message.position
  832.     if @background == 0
  833.       self.opacity = 255
  834.     else
  835.       self.opacity = 0
  836.     end
  837.     # Calculate Window X/Y and Size depends on Pop or normal message
  838.     if @pop != nil
  839.       $nms.msg_h = [((@text_line * WLH) + 8), $nms.msg_h_user].min
  840.       $nms.msg_w = @all_text_width + 32
  841.       
  842.       case @pop
  843.       when 0 # Player
  844.         set_window_xy($game_player)
  845.       when -1 # This Event
  846.         set_window_xy($game_map.events[$game_message.event_id])
  847.       else # Event ID
  848.         set_window_xy($game_map.events[@pop])
  849.       end
  850.     else
  851.       $nms.msg_h = ((((@text_line * WLH) + 8) > $nms.msg_h_user) and ($nms.txt_scrl == false)) ? ((@text_line * WLH) + 8) : $nms.msg_h_user
  852.       $nms.msg_w = NMS_MSGWIN_WIDTH
  853.       self.x = $nms.msg_x
  854.       case @position
  855.       when 0  # Down
  856.         self.y = 0
  857.         @gold_window.y = 360
  858.       when 1  # Middle
  859.         self.y = ((Graphics.height - $nms.msg_h) / 2)
  860.         @gold_window.y = 0
  861.       when 2  # Up
  862.         self.y = Graphics.height - $nms.msg_h
  863.         @gold_window.y = 0
  864.       end
  865.     end
  866.     # Temporary Size & Position
  867.     if !$nms.msg_temp_w.nil?
  868.       $nms.msg_w = $nms.msg_temp_w
  869.       $nms.msg_temp_w = nil
  870.     end
  871.     if !$nms.msg_temp_h.nil?
  872.       $nms.msg_h = $nms.msg_temp_h
  873.       $nms.msg_temp_h = nil
  874.     end
  875.     if !$nms.msg_temp_x.nil?
  876.       self.x = $nms.msg_temp_x
  877.       $nms.msg_temp_x = nil
  878.     end
  879.     if !$nms.msg_temp_y.nil?
  880.       self.y = $nms.msg_temp_y
  881.       $nms.msg_temp_y = nil
  882.     end
  883.     # Fix Window Position if it's out of screen
  884.     self.x = 0 if self.x < 0
  885.     self.x = Graphics.width - $nms.msg_w if (self.x + $nms.msg_w) > Graphics.width
  886.     self.y = 0 if self.y < 0
  887.     self.y = Graphics.height - $nms.msg_h if (self.y + $nms.msg_h) > Graphics.height
  888.   end
  889.   #--------------------------------------------------------------------------
  890.   # ? SET Window XY for Pop Message
  891.   #--------------------------------------------------------------------------
  892.   def set_window_xy(chara)
  893.     char_x = chara.screen_x
  894.     char_y = chara.screen_y
  895.     self.x = char_x - ($nms.msg_w / 2)
  896.     self.y = ((char_y - 32 - $nms.msg_h) >= 0) ? (char_y - 32 - $nms.msg_h) : (char_y + 32)
  897.   end
  898.   #--------------------------------------------------------------------------
  899.   # ? ????????
  900.   #--------------------------------------------------------------------------
  901.   def terminate_message
  902.     self.active = false
  903.     self.pause = false
  904.     self.index = -1
  905.     @gold_window.close
  906.     @number_input_window.active = false
  907.     @number_input_window.visible = false
  908.     $game_message.main_proc.call if $game_message.main_proc != nil
  909.     $game_message.clear
  910.   end
  911.   #--------------------------------------------------------------------------
  912.   # ? EDITED
  913.   #--------------------------------------------------------------------------
  914.   def update_message
  915.     loop do
  916.       c = @text.slice!(/./m)
  917.       case c
  918.       when nil
  919.         finish_message
  920.         break
  921.       when "\x00"
  922.         new_line if !$nms.txt_unl
  923.         if @line_count >= $game_message.max_line
  924.           unless @text.empty?
  925.             self.pause = true
  926.             break
  927.           end
  928.         end
  929.       when "\x80"
  930.         @text.sub!(/\[([0-9]+)\]/, "")
  931.         $game_map.events[$game_message.event_id].animation_id = $1.to_i
  932.       when "\x81"
  933.         @text.sub!(/\[([0-9]+)\]/, "")
  934.         $game_map.events[$game_message.event_id].balloon_id = $1.to_i
  935.       when "\x82"
  936.         @text.sub!(/\[([0-9]+)\]/, "")
  937.         a = $game_map.interpreter.params[0]
  938.         $game_map.interpreter.params[0] = $1.to_i
  939.         $game_map.interpreter.command_117
  940.         $game_map.interpreter.params[0] = a
  941.       when "\x83"
  942.         @text.sub!(/\[([0-9]+)\]/, "")
  943.         bitmap = Cache.system("Iconset")
  944.         icon_index = $1.to_i
  945.         # Check for Auto Cut
  946.         new_line if $nms.txt_cut and (@contents_x + 24 > contents.width)
  947.         # Draw ICON
  948.         draw_icon(icon_index, @contents_x, @contents_y, true)
  949.         @contents_x += 24
  950.       when "\x84"
  951.         @text.sub!(/\[(.*?)\]/, "")
  952.         $nms.nms_fontname = $1.to_s
  953.         next
  954.       when "\x85"
  955.         @text.sub!(/\[([0-9]+)\]/, "")
  956.         $nms.nms_fontsize = $1.to_i; next
  957.       when "\x86"
  958.         $nms.nms_fontname = NMS_FONT_NAME; next
  959.       when "\x87"
  960.         $nms.nms_fontsize = NMS_FONT_SIZE; next
  961.       when "\x88"
  962.         contents.font.bold = contents.font.bold == true ? false : true
  963.         next
  964.       when "\x89"
  965.         contents.font.italic = contents.font.italic == true ? false : true
  966.         next
  967.       when "\x90"
  968.         @text.sub!(/\[([0-9]+)\]/, "")
  969.         $nms.text_delay = $1.to_i; next
  970.       when "\x91"
  971.         $nms.text_delay = NMS_DELAY_PER_LETTER; next
  972.       when "\x92"
  973.         $nms.lbl = $nms.lbl == true ? false : true; next
  974.       when "\x93"
  975.         contents.font.shadow = contents.font.shadow == true ? false : true
  976.         next
  977.       when "\x94"
  978.         @no_press_input = @no_press_input == true ? false : true
  979.         next
  980.       when "\x95"
  981.         @text.sub!(/\[([0-9]+)\]/, "")
  982.         @wait_count = $1.to_i
  983.         break
  984.       when "\x96"
  985.         @text.sub!(/\[([0-9]+)\]/, "")
  986.         @contents_x += $1.to_i
  987.         next
  988.       when "\x97"
  989.         @text.sub!(/\[(.*?)\]/, "")
  990.         RPG::SE.new($1).play
  991.       when "\x98"
  992.         @text.sub!(/\[(.*?)\]/, "")
  993.         RPG::ME.new($1).play
  994.       when "\x99"
  995.         @text.sub!(/\[(.*?)\]/, "")
  996.         RPG::BGM.new($1).play
  997.       when "\x09"
  998.         new_line
  999.       when "\x10"
  1000.         $nms.typ_se = !$nms.typ_se
  1001.       when "\x11"
  1002.         @text.sub!(/\[(.*?)\]/, "")
  1003.         bitmap = Cache.system($1.to_s)
  1004.         rect = Rect.new(0,0,0,0)
  1005.         rect.width = bitmap.width
  1006.         rect.height = bitmap.height
  1007.         # Check for Auto Cut & Scroll
  1008.         if (@contents_x + bitmap.width > contents.width)
  1009.           if $nms.txt_cut; new_line
  1010.           elsif $nms.txt_scrl_hori; nms_scroll_hori(bitmap.width)
  1011.           end
  1012.         end
  1013.         # Draw Image
  1014.         self.contents.blt(@contents_x, @contents_y, bitmap, rect)
  1015.         @contents_x += bitmap.width
  1016.         @biggest_text_height = bitmap.height if bitmap.height > @biggest_text_height
  1017.         bitmap.dispose
  1018.       when "\x12"
  1019.         @text.sub!(/\{(.*?)\}/, "")
  1020.         a = $1.to_s.split(',')
  1021.         $nms.face_name = a[0]
  1022.         $nms.face_index = a[1].to_i
  1023.         $nms.side = a[2].to_i unless a[2].nil?
  1024.         nms_draw_new_face
  1025.         @ori_x = @face.x
  1026.       when "\x01"
  1027.         @text.sub!(/\{(.*?)\}/, "")
  1028.         color_code = $1.to_s
  1029.         if color_code.include?('#')
  1030.           color_code.sub!(/([0123456789ABCDEF]+)/, "")
  1031.           contents.font.color = get_hex($1)
  1032.         else
  1033.           $nms.last_color = color_code.to_i
  1034.           contents.font.color = text_color($nms.last_color)
  1035.         end
  1036.         next
  1037.       when "\x02"
  1038.         @gold_window.refresh
  1039.         @gold_window.open
  1040.       when "\x03"
  1041.         @wait_count = 15
  1042.         break
  1043.       when "\x04"
  1044.         @wait_count = 60
  1045.         break
  1046.       when "\x05"
  1047.         self.pause = true
  1048.         break
  1049.       when "\x06"
  1050.         @line_show_fast = true
  1051.       when "\x07"
  1052.         @line_show_fast = false
  1053.       when "\x08"
  1054.         @pause_skip = true
  1055.       else
  1056.         contents.font.name = $nms.nms_fontname if contents.font.name != $nms.nms_fontname
  1057.         contents.font.size = $nms.nms_fontsize if contents.font.size != $nms.nms_fontsize
  1058.         c_width = contents.text_size(c).width
  1059.         
  1060.         # Check for Text Cut & Scroll Horizontal
  1061.         if (@contents_x + c_width > contents.width)
  1062.           if $nms.txt_cut; new_line
  1063.           elsif $nms.txt_scrl_hori
  1064.             nms_scroll_hori(c_width)
  1065.             @wait_count = $nms.txt_scrl_hori_delay
  1066.             @text = c + @text
  1067.             return
  1068.           end
  1069.         end
  1070.         nms_line_height = contents.text_size(c).height
  1071.         contents.draw_text(@contents_x, @contents_y, 40, nms_line_height, c)
  1072.         @contents_x += c_width
  1073.         # Change Biggest Text Height
  1074.         @biggest_text_height = nms_line_height if nms_line_height > @biggest_text_height
  1075.         
  1076.         # Play Typing Sound
  1077.         if $nms.typ_se and @typse_count <= 0
  1078.           RPG::SE.new($nms.typ_file, $nms.typ_vol).play
  1079.           @typse_count += $nms.typ_skip
  1080.         end
  1081.         #Show Fast & Text Delay
  1082.         @show_fast = true if $nms.lbl == false

  1083.         @delay_text += $nms.text_delay
  1084.       end
  1085.       break unless @show_fast or @line_show_fast
  1086.     end
  1087.   end
  1088.   #--------------------------------------------------------------------------
  1089.   # ? ??????????
  1090.   #--------------------------------------------------------------------------
  1091.   def finish_message
  1092.     if $game_message.choice_max > 0
  1093.       start_choice
  1094.     elsif $game_message.num_input_variable_id > 0
  1095.       start_number_input
  1096.     elsif @pause_skip
  1097.       terminate_message
  1098.     else
  1099.       self.pause = true
  1100.     end
  1101.     @wait_count = 10
  1102.     @text = nil
  1103.   end
  1104.   #--------------------------------------------------------------------------
  1105.   # ? ??????
  1106.   #--------------------------------------------------------------------------
  1107.   def start_choice
  1108.     self.active = true
  1109.     self.index = 0
  1110.   end
  1111.   #--------------------------------------------------------------------------
  1112.   # ? EDITED
  1113.   #--------------------------------------------------------------------------
  1114.   def start_number_input
  1115.     digits_max = $game_message.num_input_digits_max
  1116.     number = $game_variables[$game_message.num_input_variable_id]
  1117.     @number_input_window.digits_max = digits_max
  1118.     @number_input_window.number = number
  1119.     if $game_message.face_name.empty? or MOVE_TEXT == false
  1120.       @number_input_window.x = x - 23
  1121.     else
  1122.       case $game_message.side
  1123.       when 0
  1124.         @number_input_window.x = (x + 112) - 23
  1125.       when 1
  1126.         @number_input_window.x = (x + text_x) - 23
  1127.       when 2
  1128.         @number_input_window.x = x - 23
  1129.       when -1
  1130.         @number_input_window.x = x - 23
  1131.       end
  1132.     end
  1133.     @number_input_window.x += CHOICE_INPUT_X_PLUS
  1134.     @number_input_window.y = y + @contents_y
  1135.     @number_input_window.active = true
  1136.     @number_input_window.visible = true
  1137.     @number_input_window.update
  1138.   end
  1139.   #--------------------------------------------------------------------------
  1140.   # ? EDITED
  1141.   #--------------------------------------------------------------------------
  1142.   def update_cursor
  1143.     if @index >= 0
  1144.       if $game_message.face_name.empty?
  1145.       x = TEXT_X_PLUS
  1146.       else
  1147.       x = get_x_face
  1148.       end
  1149.       y = ($game_message.choice_start + @index) * WLH
  1150.       # CHANGE WIDTH OF CURSOR FOR CHOICE SELECT
  1151.       if $game_message.face_name.empty? or MOVE_TEXT == false
  1152.         facesize = x
  1153.       else
  1154.         facesize = get_x_face
  1155.         facesize += @face.width if $game_message.side == 2
  1156.         facesize += @face.width + 16 if $game_message.side == -1
  1157.       end
  1158.       self.cursor_rect.set(x, y, contents.width - facesize, WLH)
  1159.     else
  1160.       self.cursor_rect.empty
  1161.     end
  1162.   end

  1163.   #--------------------------------------------------------------------------
  1164.   # ? ?????????
  1165.   #--------------------------------------------------------------------------
  1166.   def input_pause
  1167.     if Input.trigger?(Input::B) or Input.trigger?(Input::C)
  1168.       self.pause = false
  1169.       if @text != nil and not @text.empty?
  1170.         new_page if @line_count >= $game_message.max_line
  1171.       else
  1172.         terminate_message
  1173.       end
  1174.     end
  1175.   end
  1176.   #--------------------------------------------------------------------------
  1177.   # ? ????????
  1178.   #--------------------------------------------------------------------------
  1179.   def input_choice
  1180.     if Input.trigger?(Input::B)
  1181.       if $game_message.choice_cancel_type > 0
  1182.         Sound.play_cancel
  1183.         $game_message.choice_proc.call($game_message.choice_cancel_type - 1)
  1184.         terminate_message
  1185.       end
  1186.     elsif Input.trigger?(Input::C)
  1187.       Sound.play_decision
  1188.       $game_message.choice_proc.call(self.index)
  1189.       terminate_message
  1190.     end
  1191.   end
  1192.   #--------------------------------------------------------------------------
  1193.   # ? ???????
  1194.   #--------------------------------------------------------------------------
  1195.   def input_number
  1196.     if Input.trigger?(Input::C)
  1197.       Sound.play_decision
  1198.       $game_variables[$game_message.num_input_variable_id] =
  1199.         @number_input_window.number
  1200.       $game_map.need_refresh = true
  1201.       terminate_message
  1202.     end
  1203.   end
  1204. end

  1205. #==============================================================================
  1206. # NMS +[ADD ON]+ WINDOW_MESSAGE_CLASS
  1207. #------------------------------------------------------------------------------
  1208. #==============================================================================

  1209. class Window_Message < Window_Selectable
  1210.   
  1211. # Return X for Text
  1212. def get_x_face
  1213.   if MOVE_TEXT == true
  1214.     case $game_message.side
  1215.     when 0
  1216.       return 112 + TEXT_X_PLUS
  1217.     when 1
  1218.       return text_x
  1219.     when 2
  1220.       return TEXT_X_PLUS
  1221.     else
  1222.       return TEXT_X_PLUS
  1223.     end
  1224.   else
  1225.     return TEXT_X_PLUS
  1226.   end
  1227. end

  1228.   def text_x
  1229.     return @face.width + TEXT_X_PLUS
  1230.   end
  1231.   
  1232.   # Clear Name Box & Name Text
  1233.   def clear_namebox
  1234.     @nametxt.bitmap.dispose
  1235.     @namebox.dispose
  1236.     @namebox = nil
  1237.     @name_text = nil
  1238.   end
  1239.   
  1240.   def nms_get_map_name
  1241.     mapdata = load_data("Data/MapInfos.rvdata")
  1242.     map_id = $game_map.map_id
  1243.     return mapdata[map_id].name
  1244.   end
  1245.   
  1246.   #--------------------------------------
  1247.   # DRAW FACE [Both Systems] METHOD
  1248.   #------------------------------------
  1249.   def draw_face2(face_name, x, y, index = 0, animf = false, animf_index = 0, animf_max = 1, nofade = false)
  1250.   if animf
  1251.     # Use Animated Face
  1252.     bitmap = Cache.face(face_name)
  1253.     rect = Rect.new(0,0,0,0)
  1254.     rect.width = (bitmap.width / animf_max)
  1255.     rect.height = bitmap.height
  1256.     rect.x = animf_index * rect.width
  1257.     rect.y = 0
  1258.     @face.bitmap = Bitmap.new(rect.width,rect.height)
  1259.     @face.bitmap.blt(0,0,bitmap,rect)
  1260.     bitmap.dispose
  1261.   elsif $game_message.side == 0 or $game_message.side == -1 or EightFaces_File
  1262.     # USE 8 FACES PER FILE
  1263.     bitmap = Cache.face(face_name)
  1264.     faceskin = Cache.face("faceskin")
  1265.     rect = Rect.new(0,0,0,0)
  1266.     rect.width = (bitmap.width / 4)
  1267.     rect.height = (bitmap.height / 2)
  1268.     rect.x = index % 4 * rect.width
  1269.     rect.y = index / 4 * rect.height
  1270.     @face.bitmap = Bitmap.new(rect.width,rect.height)
  1271.     @face.bitmap.blt(0,0,bitmap,rect)
  1272.     @face.bitmap.blt(0,0,faceskin,rect)
  1273.     bitmap.dispose
  1274.   else
  1275.     # USE 1 FACES PER FILE
  1276.     @face.bitmap = Cache.face(face_name)
  1277.   end
  1278.   # SET X/Y OF FACE DEPENDS ON FACE SIDE
  1279.   if $game_message.side == 1
  1280.     @face.mirror = false
  1281.     @face.x = x + 6
  1282.     @face.y = y - 6 + height - @face.height
  1283.   elsif $game_message.side == 2
  1284.     @face.mirror = true
  1285.     @face.x = x + ((self.width - 6) - @face.width)
  1286.     @face.y = y - 6 + height - @face.height
  1287.   elsif $game_message.side == 0
  1288.     @face.mirror = false
  1289.     @face.x = x + 16
  1290.     @face.y = y - 16 + height - @face.height
  1291.   elsif $game_message.side == -1
  1292.     @face.mirror = true
  1293.     @face.x = x + self.contents.width - @face.width + 16
  1294.     @face.y = y - 16 + height - @face.height
  1295.   end
  1296.     @face.x += FACE_X_PLUS
  1297.     @face.y += FACE_Y_PLUS
  1298.     @face_data = [face_name, index, $game_message.side]
  1299.     if @face_data != @face_data_old and FADE_MOVE_WHEN_USE_NEW_FACE; @showtime = 1; @face_data_old = @face_data; end
  1300.     @face.opacity = 0 if !nofade and ($nms.face_fade == true and ((FADE_ONLY_FIRST and @showtime <= 1) or (FADE_ONLY_FIRST == false)))
  1301.   end
  1302.   #--------------------------------------
  1303.   # DRAW NAME BOX METHOD
  1304.   #-----------------------------------
  1305.   def draw_name(name,x,y)
  1306.     name = name + NAMEBOX_TEXT_AFTER_NAME
  1307.     a = Bitmap.new(33,33)
  1308.     a.font.name = NAMEBOX_TEXT_FONT
  1309.     a.font.size = NAMEBOX_TEXT_SIZE
  1310.     rect = a.text_size(name)
  1311.     a.dispose
  1312.     @nametxt.bitmap = Bitmap.new(16 + rect.width, rect.height + NAMEBOX_TEXT_HEIGHT_PLUS)
  1313.     @nametxt.x = x + 8
  1314.     # Eienshinken
  1315.     if $game_message.side == 1 or $game_message.side == 2
  1316.       if @face.bitmap == nil
  1317.         @nametxt.x += NAMEBOX_X_PLUS_EIENSHINKEN
  1318.       else
  1319.         @nametxt.x += NAMEBOX_X_PLUS_NEO
  1320.       end
  1321.     else
  1322.       if @face.bitmap == nil
  1323.         @nametxt.x += NAMEBOX_X_PLUS_EIENSHINKEN
  1324.       else
  1325.         @nametxt.x += NAMEBOX_X_PLUS_NOR
  1326.       end
  1327.     end
  1328.     @nametxt.y = y - 20 + ($game_message.position == 0 ? NAMEBOX_Y_PLUS_TOP : NAMEBOX_Y_PLUS)
  1329.     namebox_x_plus = ($game_message.side == 1 or $game_message.side == 2) ? NAMEBOX_X_PLUS_NEO : NAMEBOX_X_PLUS_NOR
  1330.     @nametxt.x = ((self.x + $nms.msg_w) - namebox_x_plus - @nametxt.width) if MOVE_NAMEBOX and ($game_message.side == 2 or $game_message.side == -1)
  1331.     @namebox = Window.new
  1332.     @namebox.windowskin = Cache.system(NAMEBOX_SKIN)
  1333.     @namebox.z = self.z + 10
  1334.     @namebox.opacity = case @background
  1335.     when 0; NAMEBOX_OPACITY
  1336.     when 1; NAMEBOX_OPACITY_DIM_BG
  1337.     when 2; NAMEBOX_OPACITY_NO_BG
  1338.     end
  1339.     @namebox.back_opacity = NAMEBOX_BACK_OPACITY
  1340.     @namebox.openness = 255
  1341.     @namebox.x = @nametxt.x - NAMEBOX_BOX_WIDTH_PLUS
  1342.     @namebox.y = @nametxt.y - NAMEBOX_BOX_HEIGHT_PLUS
  1343.     @namebox.width = @nametxt.bitmap.width + (NAMEBOX_BOX_WIDTH_PLUS * 2)
  1344.     @namebox.height = @nametxt.bitmap.height + (NAMEBOX_BOX_HEIGHT_PLUS * 2)
  1345.     # Fixed position bug
  1346.     @namebox.x = 0 if @namebox.x < 0
  1347.     @namebox.x = (Graphics.width - @namebox.width) if (@namebox.x + @namebox.width) > Graphics.width
  1348.     @nametxt.bitmap.font.name = NAMEBOX_TEXT_FONT
  1349.     @nametxt.bitmap.font.size = NAMEBOX_TEXT_SIZE
  1350.     @nametxt.bitmap.font.bold = NAMEBOX_TEXT_BOLD
  1351.     if NAMEBOX_TEXT_OUTLINE == true
  1352.       # MAKE TEXT OUTLINE
  1353.       old_shadow = @nametxt.bitmap.font.shadow
  1354.       @nametxt.bitmap.font.color = Color.new(0,0,0)
  1355.       @nametxt.bitmap.draw_text(0,2,@nametxt.bitmap.width,@nametxt.bitmap.height,name,1)
  1356.       @nametxt.bitmap.draw_text(0,0,@nametxt.bitmap.width,@nametxt.bitmap.height,name,1)
  1357.       @nametxt.bitmap.draw_text(2,0,@nametxt.bitmap.width,@nametxt.bitmap.height,name,1)
  1358.       @nametxt.bitmap.draw_text(2,2,@nametxt.bitmap.width,@nametxt.bitmap.height,name,1)
  1359.       @nametxt.bitmap.font.shadow = old_shadow
  1360.     end
  1361.     @nametxt.bitmap.font.color = Color.new($game_message.color[0],$game_message.color[1],$game_message.color[2])
  1362.     @nametxt.bitmap.draw_text(1,1,@nametxt.bitmap.width,@nametxt.bitmap.height,name,1)
  1363.     @name_text = nil
  1364.   end
  1365.   
  1366.   #--------------------------------------
  1367.   # DRAW NEW FACE
  1368.   #-----------------------------------
  1369.   def nms_draw_new_face
  1370.     # Setup Face Name / Index
  1371.     name = $game_message.face_name
  1372.     index = $game_message.face_index
  1373.     animf_test = name.sub(/\[([0-9]+)\]/, "")
  1374.     # Animated?
  1375.     @animf = $1.to_i > 0 ? true : false
  1376.     @animf_maxind = $1.to_i
  1377.     @animf_ind = 0
  1378.     @animf_dl = $nms.animf_delay
  1379.     # CALL DRAW FACE METHOD
  1380.     draw_face2(name, self.x, self.y, index, @animf, @animf_ind, @animf_maxind)
  1381.   end
  1382.   #--------------------------------------
  1383.   # UPDATE ANIMATION FACE
  1384.   #-----------------------------------
  1385.   def update_animate_face
  1386.     if (!self.pause or $nms.animf_cont)
  1387.       @animf_dl -= 1
  1388.       if @animf_dl <= 0
  1389.         @animf_ind = (@animf_ind + 1) % @animf_maxind
  1390.         @animf_dl = $nms.animf_delay
  1391.         draw_face2($game_message.face_name, self.x, self.y, index, @animf, @animf_ind, @animf_maxind, true)
  1392.       end
  1393.     elsif @animf_ind != 0
  1394.       @animf_ind = 0
  1395.       draw_face2($game_message.face_name, self.x, self.y, index, @animf, @animf_ind, @animf_maxind, true)
  1396.     end
  1397.   end
  1398.   #--------------------------------------
  1399.   # SCROLL TEXT HORIZONTAL
  1400.   #-----------------------------------
  1401.   def nms_scroll_hori(scr_width)
  1402.     biggest = @biggest_text_height > WLH ? @biggest_text_height : WLH
  1403.     rect = Rect.new(0, @contents_y, contents.width, biggest)
  1404.     bitmap = Bitmap.new(rect.width, rect.height)
  1405.     bitmap.blt(0, 0, contents, rect)
  1406.     contents.clear_rect(rect)
  1407.     rect = Rect.new(0, 0, rect.width, rect.height)
  1408.     contents.blt(0 - scr_width, @contents_y, bitmap, rect)
  1409.     contents.clear_rect(0, 0, @face.width, @face.height) if @face.bitmap != nil
  1410.     bitmap.dispose
  1411.     @contents_x = @contents_x - scr_width
  1412.   end
  1413.   
  1414.   #--------------------------------------
  1415.   # GET HEX COLOR by RPG & ERZENGEL
  1416.   #------------------------------------
  1417.   def get_hex(n)
  1418.     red = 0
  1419.     green = 0
  1420.     blue = 0
  1421.     if n.size != 6
  1422.       print("Hex triplets must be six characters long!\nNormal color will be used.")
  1423.       return normal_color
  1424.     end
  1425.     for i in 1..6
  1426.       sliced = n.slice!(/./m)
  1427.       value = hexconvert(sliced)
  1428.       case i
  1429.       when 1; red += value * 16
  1430.       when 2; red += value
  1431.       when 3; green += value * 16
  1432.       when 4; green += value
  1433.       when 5; blue += value * 16
  1434.       when 6; blue += value
  1435.       end
  1436.     end
  1437.     return Color.new(red, green, blue)
  1438.   end
  1439.   def hexconvert(n)
  1440.     case n
  1441.     when "0"; return 0
  1442.     when "1"; return 1
  1443.     when "2"; return 2
  1444.     when "3"; return 3
  1445.     when "4"; return 4
  1446.     when "5"; return 5
  1447.     when "6"; return 6
  1448.     when "7"; return 7
  1449.     when "8"; return 8
  1450.     when "9"; return 9
  1451.     when "A"; return 10
  1452.     when "B"; return 11
  1453.     when "C"; return 12
  1454.     when "D"; return 13
  1455.     when "E"; return 14
  1456.     when "F";return 15
  1457.     else; return -1
  1458.     end
  1459.   end
  1460. end # CLASS END

  1461. #==============================================================================
  1462. # NMS +[ADD ON]+ OTHER CLASS
  1463. #------------------------------------------------------------------------------
  1464. #==============================================================================

  1465. # STORE variables here~*
  1466. class Game_Message
  1467.   attr_accessor :nms_fontname, :nms_fontsize, :event_id, :side, :color, :_name,
  1468. :last_color, :text_delay, :lbl, :msg_w, :msg_h, :msg_x, :max_line, :nms_face_name,
  1469. :nms_face_index, :next_msg, :typ_se, :typ_file, :typ_skip, :typ_vol, :mback, :mback_opac,
  1470. :qt, :txt_scrl, :msg_h_user, :animf_delay, :animf_cont, :txt_cut, :txt_unl, :txt_scrl_hori,
  1471. :txt_scrl_hori_delay, :face_fade, :face_move, :msg_temp_y, :msg_temp_x, :msg_temp_h,
  1472. :msg_temp_w

  1473.   
  1474.   alias wor_nms_old_ini initialize
  1475.   def initialize
  1476.     create_nms_data
  1477.     wor_nms_old_ini
  1478.   end
  1479.   
  1480.   def create_nms_data
  1481.     # NFS
  1482.     @side = Window_Base::DEFAULT_FACE_SIDE
  1483.     @_name = ""
  1484.     @color = Window_Base::NAMEBOX_TEXT_DEFAULT_COLOR
  1485.     # NMS
  1486.     @last_color = 0
  1487.     @nms_fontname = Window_Base::NMS_FONT_NAME
  1488.     @nms_fontsize = Window_Base::NMS_FONT_SIZE
  1489.     @event_id = 0
  1490.     @text_delay = Window_Base::NMS_DELAY_PER_LETTER
  1491.     @lbl = true
  1492.     @msg_w = Window_Base::NMS_MSGWIN_WIDTH
  1493.     @msg_h = @msg_h_user = Window_Base::NMS_MSGWIN_MIN_HEIGHT
  1494.     @msg_x = Window_Base::NMS_MSGWIN_X
  1495.     @max_line = Window_Base::NMS_MAX_LINE
  1496.     @nms_face_name = ""
  1497.     @nms_face_index = 1
  1498.     @next_msg = false
  1499.     @typ_se = Window_Base::TYPING_SOUND
  1500.     @typ_file = Window_Base::TYPING_SOUND_FILE
  1501.     @typ_skip = Window_Base::TYPING_SOUND_SKIP
  1502.     @typ_vol = Window_Base::TYPING_SOUND_VOLUME
  1503.     @mback = Window_Base::NMS_MSG_BACK
  1504.     @mback_opac = Window_Base::NMS_MSG_BACK_OPACITY
  1505.     @qt = Array.new
  1506.     @txt_scrl = Window_Base::NMS_TEXT_SCROLL
  1507.     @animf_delay = Window_Base::ANIMATE_FACE_DELAY
  1508.     @animf_cont = Window_Base::ANIMATE_FACE_CONTINUE
  1509.     @txt_cut = Window_Base::NMS_TEXT_AUTO_CUT
  1510.     @txt_scrl_hori = Window_Base::NMS_TEXT_AUTO_SCROLL_HORIZONTAL
  1511.     @txt_scrl_hori_delay = Window_Base::NMS_TEXT_AUTO_SCROLL_HORIZONTAL_DELAY
  1512.     @txt_unl = Window_Base::NMS_USER_NEW_LINE
  1513.     @face_fade = Window_Base::FADE_EFFECT
  1514.     @face_move = Window_Base::MOVE_EFFECT
  1515.     @msg_temp_x = nil
  1516.     @msg_temp_y = nil
  1517.     @msg_temp_h = nil
  1518.     @msg_temp_w = nil
  1519.   end
  1520. end

  1521. class Game_Map
  1522.   attr_accessor :interpreter
  1523. end

  1524. class Game_Interpreter
  1525.   attr_accessor :params
  1526. end

  1527. class Game_Interpreter
  1528.   def command_101
  1529.     unless $game_message.busy
  1530.       $game_message.event_id = @event_id
  1531.       $game_message.face_name = @params[0]
  1532.       $game_message.face_index = @params[1]
  1533.       $game_message.background = @params[2]
  1534.       $game_message.position = @params[3]
  1535.       next_msg = true
  1536.     loop do
  1537.       if @list[@index].code == 101 and $game_message.max_line > $game_message.texts.size and next_msg
  1538.         @index += 1
  1539.       else
  1540.         break
  1541.       end
  1542.       next_msg = false
  1543.       while @list[@index].code == 401 and $game_message.max_line > $game_message.texts.size
  1544.         next_msg = $game_message.next_msg
  1545.         $game_message.texts.push(@list[@index].parameters[0])
  1546.         @index += 1
  1547.       end
  1548.     end
  1549.       if @list[@index].code == 102
  1550.         setup_choices(@list[@index].parameters)
  1551.       elsif @list[@index].code == 103
  1552.         setup_num_input(@list[@index].parameters)
  1553.       end
  1554.       set_message_waiting
  1555.     end
  1556.     return false
  1557.   end
  1558.   
  1559.   def setup_choices(params)
  1560.     if $game_message.texts.size <= $game_message.max_line - params[0].size
  1561.       $game_message.choice_start = $game_message.texts.size
  1562.       $game_message.choice_max = params[0].size
  1563.       for s in params[0]
  1564.         $game_message.texts.push(s)
  1565.       end
  1566.       $game_message.choice_cancel_type = params[1]
  1567.       $game_message.choice_proc = Proc.new { |n| @branch[@indent] = n }
  1568.       @index += 1
  1569.     end
  1570.   end
  1571. end
复制代码
小刀是直接拿赏金猎人里面的脚本,里面有一些细节自己改。

赏金猎人 -- Bounty Hunter 预告贴(点击图片或者这里进入
交流群组:321810846

小刀的论坛!!点击这里!
小刀的论坛!!点击这里!
小刀的论坛!!点击这里!
小刀的论坛!!点击这里!
小刀的论坛!!点击这里!
小刀的论坛!!点击这里!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-23 01:55

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表