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

Project1

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

[RMVX发布] 新邮件系统测试版。

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
149 小时
注册时间
2008-5-19
帖子
223
跳转到指定楼层
1
发表于 2012-7-19 01:51:42 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 wapwb520pwb 于 2012-7-19 05:55 编辑

配有打字声,简单使用方法。   
\p[角色ID]\nb[角色名字]  便是最常用的方法。








RUBY 代码复制
  1. [pre lang="ruby" line="1"]
  2. ##================================================= ==============
  3. ##+ [VX的] [网管 - 新邮件系统3.0测试版] + by wapwb520pwb  
  4. ##------------------------------------------------- -------------
  5. ##由Woratana [[email][email protected][/email] >>
  6. ##>> Thaiw​​are RPG MAKER社区
  7. ##>>特别感谢:鲨鱼,Yatzumo,迷途猫咪,Erzengel,角色扮演,
  8. ##Dubalex,近世代数,均衡的守护者
  9. ##------------------------------------------------- -------------
  10. ##发行日期:07/06/2008(四 - M - Y)
  11. ##------------------------------------------------- -------------
  12. ##包括:NEO面的系统由Woratana的进展(3.0版)
  13. ##================================================= ==============
  14.  
  15. #开始
  16. #=============================================
  17. #+网管3测试版+ [07/06/2008]
  18. #- 添加“文字删除名单”
  19. #- 更改窗口大小和位置暂时
  20. #- 你现在可以调用脚本:
  21. #美元game_message.create_nms_data
  22. #,重置网管数据或为保存旧文件创建网管数据
  23. #- 修正写演员的类名
  24. #- 修正屏幕名称“框中
  25. #- 加入NAMEBOX_Y_PLUS_TOP修复屏幕名称“框中时,显示在最前面的消息
  26. #- 集名称“框中的透明度,为不同类型的消息背景
  27. #- 如果消息窗口自动修复屏幕
  28. #- 可以绘制新的面貌,而消息正在运行,并设置新的大小脸
  29. #=============================================
  30. #=============================================
  31. #+网管系统2.3 + [11/03/2008 - 06/04/2008]
  32. #- 删除[写入文本]功能的彩色
  33. #- “快速文字”功能
  34. #- 动画面
  35. #- 玩SE / ME的
  36. #- 打字声
  37. #- 滚动文本垂直和水平
  38. #- 自动切割文本(而不是很好地工作)
  39. #- 十六进制颜色(特别感谢:RPG&Erzengel)
  40. #- POP邮件(正在进行中)
  41. #- 添加脚本代码在评论一些设置,
  42. #因此,用户可以更改在游戏中调用脚本。
  43. #=============================================
  44. #=============================================
  45. #+网管系统2.1 + [11/03/2008]:固定名称框问题
  46. #=============================================
  47. #=====================================
  48. #     +网管系统2.0功能列表+
  49. #=====================================
  50. #使用这些功能,在消息框
  51. #----------------------------------
  52. #>>网管信息功能
  53. #----------------------------------
  54. #--------------------------
  55. #>> [特别呼吁]部分
  56. #--------------------------
  57. #立即\ CE [公共事件ID <<运行公共事件
  58.  
  59. #\ ANI动画编号] <<“此事件”显示动画
  60. #\ BAL [气球ID <<显示金球奖上“此事件”
  61.  
  62. #*注意:此事件=事件,显示此消息
  63.  
  64. #--------------------------
  65. #>> [讯息视窗]部分
  66. #--------------------------
  67. #*临时性质,将只使用一次
  68. #\ WX [X] <<设置临时x到x
  69. #\ WY [Y] <<设置临时Ÿ为y
  70. #\ WW [宽] <<设置临时宽度宽度
  71. #\ WH [身高<<设置临时高度高度
  72.  
  73. #----------------------------------------
  74. #>> [民意文] +
  75. #----------------------------------------
  76. #弹出的文本将显示以上字符的消息框
  77. #并有大小相等的邮件大小
  78.  
  79. #您可以打电话把这个消息弹出文字
  80. #\ P [人物]
  81.  
  82. #*字符:字符,你要显示消息框〜
  83. #0播放机
  84. #-1此事件
  85. #1个或多个该事件ID
  86.  
  87. #----------------------------------------
  88. #>> [快速文本] +又名快捷的
  89. #----------------------------------------
  90. #新增及来电很长的文本(或)文字使用快捷多次。
  91. #你可以把它特殊的语法,例如: “欢迎来到\ C [10]叙利亚村\ C [0]
  92.  
  93. #美元nms.qt [快速文本ID] ='想要的文字'<<快速文本
  94.  
  95. #\ QT [快速文本ID <<呼叫快速文本消息框
  96.  
  97. #--------------------------
  98. #[绘制图像]部分
  99. #--------------------------
  100. #\ DW [武器编号<<抽奖武器图标+武器名字
  101. #\ DA [装甲ID <<抽奖护甲图标+护甲名称
  102. #\ DI [项目编号<<抽奖项目图标+项目名称
  103. #\ DS [技能ID] <<抽奖技能图标+技能名称
  104.  
  105. #\ IC [图标ID <<抽奖图标
  106.  
  107. #\ DP [IMAGE_NAME <<绘制图像从文件夹“系统”
  108.  
  109. #--------------------------
  110. #>> [写入文本]第
  111. #--------------------------
  112. #\地图<<写地图名称
  113.  
  114. #\ NC [演员ID <<写Actor类
  115. #\ NP [1至4(在党的顺序排列)] <<演员写入名称的顺序
  116. #\ nm的[怪物编号] <<写怪物名称
  117. #\ NT部队编号<<书写部队名称
  118.  
  119. #\ NW [武器编号<<写入武器名字
  120. #\ NA [装甲ID <<写护甲名
  121. #\ NS [技能ID] <<写技能名称
  122. #\ NI [项目编号<<写产品名称
  123. #\价格[项目编号] <<写项目价格
  124.  
  125. #--------------------------
  126. #>> [文字效果]
  127. #--------------------------
  128. #\ FN [字体名称](或)<<变更字体名称
  129. #\ FS [字体大小<<改变字体大小
  130. #\延迟[延迟] <<变更每个字母的文字延迟(帧,60帧约1秒)
  131.  
  132. #\文献<<重置字体名称
  133. #\ RES <<复位字体大小
  134. #\红<<重置文本延迟
  135.  
  136. #\ B <<开启/关闭粗体
  137. #\ I <<开启/关闭斜体文字
  138. #\ SH开启/关闭阴影文本<<
  139. #\ LBL <<打开/关闭字母按字母模式(默认为ON)
  140.  
  141. #--------------------------
  142. #>> [名称框脸部]部分
  143. #--------------------------
  144. #\ NB [名称] <<在当前消息窗口中显示名称框
  145.  
  146. #\ RNB [名称](或)$ nms._name =“姓名”<<重复名称框:
  147. #这个名字名称框将显示在未来的消息一次又一次
  148. #除非有\ NB [名称]在该消息,或者你停止这种类型的选项\ RNB []
  149.  
  150. #\ SD [方](或)$ nms.side =侧<<更改半边脸:
  151. #(0:-1:右侧左侧正常的面孔正常的面孔)
  152. #(1:左侧新脸| 2:右侧新脸)
  153.  
  154. #美元nms.color = [红,绿,蓝<<更改名称文字颜色:
  155. #把RGB颜色,例如: [255100200]
  156.  
  157. #\发[face_file_name face_index](或)\发[face_file_name,face_index,new_side]
  158. #<<绘制新的面貌,而正在运行的消息〜
  159. #face_file_name:人脸图像的名称
  160. #face_index:面部图像指数(0 - 7)
  161. #new_side:半边脸,你要改变
  162.  
  163. #--------------------------
  164. #>> [声音]第
  165. #--------------------------
  166. #\ SE [文件名] <<播放东南
  167. #\我[文件名] <<发挥我
  168. #\ BGM [文件名] <<播放的BGM
  169.  
  170. #\典型<<打开/关闭输入的声音
  171.  
  172. #--------------------------
  173. #>> [其他]第
  174. #--------------------------
  175. #\ CB <<开启/关闭取消跳过文本功能(玩家可以/无法按[Enter]跳过文本)
  176. #\ NL <<开始新行
  177. #\ SC [X] <<创建空白空间X像素
  178. #\ W [X] <<等待X展架
  179. #\ C#XXXXXX,<<文本使用十六进制颜色
  180.  
  181. #----------------------------------
  182. #>> VX默认邮件功能
  183. #----------------------------------
  184. #\ V [变量ID <<写入值从变量
  185. #\ n【演员ID <<写演员的名字
  186. #\ C [编号] <<更改文字的颜色(从向下向右Windowskin角落的彩色ID)
  187. #\ G <<显示黄金窗口
  188. #\。 <<等待15帧(约1/4秒)
  189. #\ | <<等待60帧(约1秒)
  190. #\! <<等待供玩家按下按钮,继续消息
  191. #\> <<跳过​​信信在当前行
  192. #\ <<<停止跳过信,信“在当前行
  193. #\ ^ <<立即关闭消息框
  194.  
  195. =end
  196. class Window_Base
  197.  
  198.   #---------------------------------
  199.   # [START] SETUP SCRIPT PART
  200.   #-------------------------------
  201.   #---------------------------------
  202.   # ? MESSAGE SYSTEM
  203.   #-------------------------------
  204.   NMS_FONT_NAME = "方正准圆简体"#Font.default_name # Default Font Name
  205.   NMS_FONT_SIZE = 20 # Default Font Size
  206.  
  207.   # COLOR_ID is from Windowskin image in down-right corder
  208.   NMS_ITEM_NAME_COLOR_ID = 5
  209.   NMS_WEAPON_NAME_COLOR_ID = 10
  210.   NMS_ARMOR_NAME_COLOR_ID = 4
  211.   NMS_SKILL_NAME_COLOR_ID = 2
  212.  
  213.   NMS_DELAY_PER_LETTER = 0 # Delay between letter when showing text letter-by-letter
  214.   # Delay is in frame, 60 frames = 1 second
  215.   # $nms.text_delay = (number)
  216.  
  217.   TEXT_X_PLUS = 0 # Move Text Horizontally
  218.   CHOICE_INPUT_X_PLUS = 0
  219.   # Move Choices Text and Input Number Text Horizontally
  220.  
  221.   # [NEW SETTING] #
  222.   NMS_MSGWIN_X = 128 # Default Message Window X
  223.   # $nms.msg_x = (number)
  224.  
  225.   NMS_MSGWIN_WIDTH = 480 # Default Message Window Width
  226.   # $nms.msg_w = (number)
  227.   NMS_MSGWIN_MIN_HEIGHT = 128 # Default & Minimum Message Window Height
  228.   # $nms.msg_h_user = (number)
  229.  
  230.   NMS_MAX_LINE = 4 # Max Message Lines to display per page
  231.   # $nms.max_line = (number)
  232.   NMS_GET_NEXT_LINE = false # Get messages from next message command, if box is not full
  233.   # $nms.next_msg = true/false
  234.  
  235.   NMS_MSG_BACK = "MessageBack" # Message Back Image File Name (For 'Dim Background' Message)
  236.   # (Must be in folder 'System')
  237.   # $nms.mback = 'Image Name'
  238.   NMS_MSG_BACK_OPACITY = 255 # message Back's Opacity
  239.   # $nms.mback_opac = (0 - 255)
  240.  
  241.   NMS_TEXT_SCROLL = false # Use Vertical Text Scroll?
  242.   # $nms.txt_scrl = true/false
  243.  
  244.   NMS_TEXT_AUTO_CUT = false # Text will automatically start new line if that line is full
  245.   # (Some bug, it may cut in the middle of word..)
  246.   # $nms.txt_cut = true/false
  247.  
  248.   NMS_TEXT_AUTO_SCROLL_HORIZONTAL = false # Text will automatically scroll to the left if line is full
  249.   # This will not work if NMS_TEXT_AUTO_CUT is true
  250.   # $nms.txt_scrl_hori = true/false
  251.   NMS_TEXT_AUTO_SCROLL_HORIZONTAL_DELAY = 1 # Scroll Delay (in frame)
  252.   # $nms.txt_scrl_hori_delay = (number)
  253.  
  254.   NMS_USER_NEW_LINE = false # Text will goes in new line ONLY when type \nl
  255.   # (Good for Text Auto Cut)
  256.   # $nms.txt_unl = true/false
  257.  
  258.   NMS_REMOVE_LIST = [] # List of text that you want to remove from message
  259.   # for example, NMS_REMOVE_LIST = ['test', '[MS]']
  260.   # will remove text 'test' and '[MS]' before show message
  261.   # Note that this is NOT case sensitive
  262.  
  263.   #---------------------------------
  264.   # ? FACE SYSTEM
  265.   #-------------------------------
  266.   #------------------------------------------------
  267.   # ** BOTH FACE SYSTEMS SETUP
  268.   #----------------------------------------------
  269.   DEFAULT_FACE_SIDE = 0 # Default Face Side when game start~
  270.   # (0: Left Side Normal Face | -1: Right Side Normal Face)
  271.   # (1: Left Side Neo Face | 2: Right Side Neo Face)
  272.   # $nms.side = (side no.)
  273.  
  274.   FACE_X_PLUS = 0 # Move Face Horizontally (Left: -, Right: +)
  275.   FACE_Y_PLUS = 0 # Move Face Vertically (Up: -, Down: +)
  276.  
  277.   MOVE_TEXT = true # (true/false)
  278.   # Move text to right side of face, when showing face in left side.
  279.  
  280.   #-------------------------------------
  281.   # **SHOW FACE EFFECT
  282.   # * For both Face Systems *
  283.   #----------------------------------
  284.   FADE_EFFECT = true # Turn on/off fade effect (true/false)
  285.   # $nms.face_fade = true/false
  286.   FADE_SPEED = 10 # Speed up face's fade effect by increase this number
  287.   FADE_ONLY_FIRST = true # Use Fade Effect only in first message window?
  288.  
  289.   MOVE_EFFECT = false # Turn on/off "move in" effect (true/false)
  290.   # $nms.face_move = true/false
  291.   MOVE_SPEED = 50 # Speed up face's "move in" effect by increase this number
  292.   MOVE_ONLY_FIRST = true # Use Move Effect only in first message window?
  293.  
  294.   FADE_MOVE_WHEN_USE_NEW_FACE = true
  295.   # Use Fade and Move effect when change Face graphic
  296.   # (In case using FADE_ONLY_FIRST and MOVE_ONLY_FIRST)
  297.  
  298.   #-------------------------------
  299.   # ** NEO FACE SYSTEM
  300.   #----------------------------
  301.   EightFaces_File = false
  302.   # Use 8 Faces per file (or) 1 Face per file (true/false)
  303.  
  304.   #-------------------------------
  305.   # ** ANIMATED FACE SYSTEM
  306.   #----------------------------
  307.   ANIMATE_FACE_DELAY = 6 # Face animate every _ frame
  308.   # $nms.animf_delay = (number)
  309.  
  310.   ANIMATE_FACE_CONTINUE = false # Face continue to animate after text stop writing?
  311.   # $nms.animf_cont = (true/false)
  312.  
  313.   #------------------------------------
  314.   # ? NAME BOX SYSTEM
  315.   #----------------------------------
  316.   NAMEBOX_SKIN = 'Window' # Windowskin of Name Box (In folder 'Graphics/System')
  317.   NAMEBOX_OPACITY = 255 # Name Box Opacity when using 'Normal Background' message
  318.   # (Lowest 0 - 255 Highest)
  319.   NAMEBOX_OPACITY_DIM_BG = 0 # Name Box Opacity when using 'Dim Background'
  320.   NAMEBOX_OPACITY_NO_BG = 0 # Name Box Opacity when using 'Transparent' Background
  321.   NAMEBOX_BACK_OPACITY = 180 # Name Box Background Opacity
  322.  
  323.   NAMEBOX_X_PLUS_NOR = 102 # Additional Name Box X [Horizontal] for Normal Face Name Box
  324.   NAMEBOX_X_PLUS_NEO = 160 # Additional Name Box X for Neo Face Name Box
  325.   NAMEBOX_X_PLUS_EIENSHINKEN = -2
  326.   NAMEBOX_Y_PLUS = 0 # Move Name Box & Text Vertically
  327.   NAMEBOX_Y_PLUS_TOP = 140
  328.   # Move Name Box & Text Vertically if message box is on Top
  329.  
  330.   NAMEBOX_TEXT_FONT = "方正准圆简体" # Name Text Font's Name
  331.   NAMEBOX_TEXT_SIZE = Font.default_size # Name Text Font's Size
  332.   NAMEBOX_TEXT_HEIGHT_PLUS = 2 # Increase Name Text Height (For Big Size Text)
  333.  
  334.   NAMEBOX_TEXT_BOLD = false # Make Text in Name Box Bold
  335.   NAMEBOX_TEXT_OUTLINE = false # Make Black Outline around Text (Good with Opacity = 0)
  336.   NAMEBOX_TEXT_DEFAULT_COLOR = [255,255,255]#[255,255,255] # [Red,Green,Blue]: Name Text Color (RGB)
  337.   # You can easily find color code for RGB (Red Green Blue) color in Google :)
  338.   # You are allow to change color in game by call script:
  339.   # $nms.color = [Red,Green,Blue]
  340.  
  341.   NAMEBOX_TEXT_AFTER_NAME = " " # Add Text after Name, leave "" to disable.
  342.  
  343.   NAMEBOX_BOX_WIDTH_PLUS = 6 # Increase Name Box Width
  344.   NAMEBOX_BOX_HEIGHT_PLUS = 7 # Increase Name Box Height
  345.  
  346.   MOVE_NAMEBOX = true
  347.   # (true/false) Move Text Box to Right Side if showing Face in Right side.
  348.  
  349.   #---------------------------------
  350.   # ? TEXT TYPING SOUND SYSTEM
  351.   #-------------------------------
  352.   TYPING_SOUND = true # Use Typing Sound?
  353.   # $nms.typ_se = true/false
  354.   TYPING_SOUND_FILE = 'Cursor'
  355.   # Sound File Name for Typing Sound (Must be in Folder 'Audio/SE')
  356.   # $nms.typ_file = 'filename'
  357.   TYPING_SOUND_VOLUME = 60 # Typing Sound's Volume
  358.   # $nms.typ_vol = 0 - 100
  359.   TYPING_SOUND_SKIP = 4
  360.   # How many frames you want to skip before play typing sound again?
  361.   # $nms.typ_skip = (no. of frames)
  362.   #---------------------------------
  363.   # [END] SETUP SCRIPT PART
  364.   #-------------------------------
  365. end
  366.   $worale = {} if $worale == nil
  367.   $worale["NMS"] = true
  368.  
  369. class Window_Message < Window_Selectable
  370.   #--------------------------------------------------------------------------
  371.   # ? ALIAS
  372.   #--------------------------------------------------------------------------
  373.     alias wor_nms_winmsg_ini initialize
  374.     def initialize
  375.       wor_nms_winmsg_ini
  376.       $nms = $game_message
  377.       contents.font.name = $nms.nms_fontname
  378.       contents.font.size = $nms.nms_fontsize
  379.       @face = Sprite.new
  380.       @face.z = self.z + 5
  381.       @nametxt = Sprite.new
  382.       @nametxt.z = self.z + 15
  383.       @namebox = nil
  384.       @ori_x = 0
  385.       @name_text = nil
  386.       @showtime = 0 # To check if this is first time it shows message (For face)
  387.       @face_data = Array.new(3)
  388.       @face_data_old = Array.new(3)
  389.  
  390.       #NMS 2++
  391.       self.width = $nms.msg_w
  392.       self.height = $nms.msg_h
  393.       update_window_size(true)
  394.       self.x = $nms.msg_x
  395.  
  396.       @typse_count = 0
  397.       @delay_text = 0
  398.       @no_press_input = false
  399.       @biggest_text_height = 0
  400.       @all_text_width = 0
  401.       @animf_dl = 0 # Animation Face Delay
  402.       @animf = false # Using Animation Face?
  403.       @animf_ind = 0 # Animation Face Index
  404.       @pop = nil # Pop ID
  405.     end
  406.   #--------------------------------------------------------------------------
  407.   # ? ??
  408.   #--------------------------------------------------------------------------
  409.   def dispose
  410.     super
  411.     dispose_gold_window
  412.     dispose_number_input_window
  413.     dispose_back_sprite
  414.     $game_switches[22] = true
  415.   end
  416.   #--------------------------------------------------------------------------
  417.   # ? EDITED
  418.   #--------------------------------------------------------------------------
  419.   def update
  420.     super
  421.   if self.visible == true
  422.     update_back_sprite
  423.     update_gold_window
  424.     update_number_input_window
  425.     update_show_fast
  426.     update_window_size
  427.     update_animate_face if @animf
  428.  
  429.     @typse_count -= 1 if @typse_count > 0
  430.  
  431.     if @name_text != nil
  432.       draw_name(@name_text,self.x,self.y)
  433.     end
  434.     if @face.bitmap != nil
  435.       # UPDATE FADE IN EFFECT
  436.       if @face.opacity < 255
  437.         @face.opacity += FADE_SPEED
  438.       end
  439.       # UPDATE MOVE IN EFFECT
  440.       if $nms.face_move and @ori_x != @face.x
  441.         if (@ori_x > @face.x and @face.x + MOVE_SPEED < @ori_x) or (@ori_x < @face.x and @face.x - MOVE_SPEED > @ori_x)
  442.           @face.x += MOVE_SPEED if @ori_x > @face.x
  443.           @face.x -= MOVE_SPEED if @ori_x < @face.x
  444.         else
  445.           @face.x = @ori_x
  446.         end
  447.       end
  448.     end
  449.   end
  450.     unless @opening or @closing
  451.       if @wait_count > 0
  452.         @wait_count -= 1
  453.       elsif self.pause
  454.         input_pause
  455.       elsif self.active
  456.         input_choice
  457.       elsif @number_input_window.visible
  458.         input_number
  459.       elsif @text != nil
  460.         if @delay_text > 0
  461.           @delay_text -= 1
  462.         else
  463.           update_message
  464.         end
  465.       elsif continue?
  466.         @showtime += 1
  467.         start_message
  468.         open
  469.         $game_message.visible = true
  470.       else
  471.         close
  472.         @showtime = 0
  473.         if @face.bitmap != nil
  474.          @face.bitmap.dispose
  475.         end
  476.         clear_namebox if @namebox != nil
  477.         $game_message.visible = @closing
  478.       end
  479.     end
  480.   end
  481.   #--------------------------------------------------------------------------
  482.   # ? NEW
  483.   #--------------------------------------------------------------------------
  484.   def update_window_size(direct = false, create_bitmap = true)
  485.     if (self.width != $nms.msg_w or self.height != $nms.msg_h) or direct
  486.       self.width = $nms.msg_w if $nms.msg_w > 32
  487.       self.height = $nms.msg_h if $nms.msg_h > 32
  488.       create_contents if create_bitmap
  489.     end
  490.   end
  491.   #--------------------------------------------------------------------------
  492.   # ? ???????????
  493.   #--------------------------------------------------------------------------
  494.   def create_gold_window
  495.     @gold_window = Window_Gold.new(384, 0)
  496.     @gold_window.openness = 0
  497.   end
  498.   #--------------------------------------------------------------------------
  499.   # ? ????????????
  500.   #--------------------------------------------------------------------------
  501.   def create_number_input_window
  502.     @number_input_window = Window_NumberInput.new
  503.     @number_input_window.visible = false
  504.   end
  505.   #--------------------------------------------------------------------------
  506.   # ? ??????????
  507.   #--------------------------------------------------------------------------
  508.   def create_back_sprite
  509.     @back_sprite = Sprite.new
  510.     @back_sprite.bitmap = @old_mback = Cache.system($game_message.mback)
  511.     @back_sprite.opacity = @old_mback_opac = $game_message.mback_opac
  512.     @back_sprite.visible = (@background == 1)
  513.     @back_sprite.z = 190
  514.   end
  515.   #--------------------------------------------------------------------------
  516.   # ? ???????????
  517.   #--------------------------------------------------------------------------
  518.   def dispose_gold_window
  519.     @gold_window.dispose
  520.   end
  521.   #--------------------------------------------------------------------------
  522.   # ? ????????????
  523.   #--------------------------------------------------------------------------
  524.   def dispose_number_input_window
  525.     @number_input_window.dispose
  526.   end
  527.   #--------------------------------------------------------------------------
  528.   # ? ??????????
  529.   #--------------------------------------------------------------------------
  530.   def dispose_back_sprite
  531.     @back_sprite.dispose
  532.   end
  533.   #--------------------------------------------------------------------------
  534.   # ? ???????????
  535.   #--------------------------------------------------------------------------
  536.   def update_gold_window
  537.     @gold_window.update
  538.   end
  539.   #--------------------------------------------------------------------------
  540.   # ? ????????????
  541.   #--------------------------------------------------------------------------
  542.   def update_number_input_window
  543.     @number_input_window.update
  544.   end
  545.   #--------------------------------------------------------------------------
  546.   # ? ??????????
  547.   #--------------------------------------------------------------------------
  548.   def update_back_sprite
  549.     @back_sprite.visible = (@background == 1)
  550.     @back_sprite.y = y - 16
  551.     @back_sprite.opacity = $nms.mback_opac > openness ? openness : $nms.mback_opac
  552.     @back_sprite.update
  553.   end
  554.   #--------------------------------------------------------------------------
  555.   # ? ?????????
  556.   #--------------------------------------------------------------------------
  557.   def update_show_fast
  558.     if self.pause or self.openness < 255
  559.       @show_fast = false
  560.     elsif Input.trigger?(Input::C) and @wait_count < 2 and !@no_press_input
  561.       @show_fast = true
  562.     elsif not Input.press?(Input::C)
  563.       @show_fast = false
  564.     end
  565.     if @show_fast and @wait_count > 0
  566.       @wait_count -= 1
  567.     end
  568.   end
  569.   #--------------------------------------------------------------------------
  570.   # ? ????????????????????
  571.   #--------------------------------------------------------------------------
  572.   def continue?
  573.     return true if $game_message.num_input_variable_id > 0
  574.     return false if $game_message.texts.empty?
  575.     if self.openness > 0 and not $game_temp.in_battle
  576.       return false if @background != $game_message.background
  577.       return false if @position != $game_message.position
  578.     end
  579.     return true
  580.   end
  581.   #--------------------------------------------------------------------------
  582.   # ? EDITED: NMS 2.2+
  583.   #--------------------------------------------------------------------------
  584.   def start_message
  585.     @all_text_width = 0
  586.     @pop = nil
  587.  
  588.     @text = ""
  589.     @text_line = $game_message.texts.size < $game_message.max_line ? $game_message.texts.size + 1 : MAX_LINE + 1
  590.     for i in 0...$game_message.texts.size
  591.       # Change "    " to "" (Spacing for choice)
  592.       @text += "" if i >= $game_message.choice_start
  593.       @text += $game_message.texts[i].clone + "\x00"
  594.     end
  595.  
  596.     @item_max = $game_message.choice_max
  597.     convert_special_characters
  598.     reset_window
  599.     update_window_size
  600.     new_page
  601.   end
  602.   #--------------------------------------------------------------------------
  603.   # ? EDITED
  604.   #--------------------------------------------------------------------------
  605.   def new_page
  606.     @animf = false
  607.     contents.clear
  608.  
  609.     if @face.bitmap != nil
  610.     @face.bitmap.dispose
  611.     end
  612.     if $game_message.face_name.empty?
  613.     @contents_x = TEXT_X_PLUS
  614.     else
  615.       nms_draw_new_face
  616.       # CHECK FOR MOVE EFFECT
  617.       @ori_x = @face.x
  618.       if $nms.face_move and ((MOVE_ONLY_FIRST and @showtime <= 1) or (MOVE_ONLY_FIRST == false))
  619.         if $game_message.side == 0 or $game_message.side == 1
  620.           @face.x = 0 - @face.width
  621.         else
  622.           @face.x = Graphics.width
  623.         end
  624.       end
  625.       @contents_x = get_x_face
  626.     end
  627.     @main_contents_x = @contents_x
  628.     @contents_y = 0
  629.     @line_count = 0
  630.     @typse_count = 0
  631.     @show_fast = false
  632.     @line_show_fast = false
  633.     @pause_skip = false
  634.     contents.font.color = text_color(0)
  635.     @contents_x += CHOICE_INPUT_X_PLUS if $game_message.choice_max > 00
  636.  
  637.     if @old_mback != Cache.system($nms.mback) or @old_mback_opac != $nms.mback_opac
  638.       dispose_back_sprite; create_back_sprite
  639.     end
  640.  
  641.     @no_press_input = false
  642.     self.oy = 0
  643.   end
  644.   #--------------------------------------------------------------------------
  645.   # ? EDITED
  646.   #--------------------------------------------------------------------------
  647.   def new_line
  648.     biggest = @biggest_text_height > WLH ? @biggest_text_height : WLH
  649.     @contents_y += biggest
  650.     if $nms.txt_scrl and @contents_y >= contents.height and @text != ""
  651.       rect = Rect.new(0, biggest, contents.width, contents.height - biggest)
  652.       cont_s = Bitmap.new(contents.width,contents.height)
  653.       cont_s.blt(0, 0, contents, rect)
  654.       rect_s = Rect.new(0,0,contents.width,contents.height)
  655.       contents.clear_rect(0, 0, contents.width, contents.height)
  656.       contents.blt(0, 0, cont_s, rect_s)
  657.       @contents_y = rect.height
  658.       cont_s.dispose
  659.       @show_fast = false
  660.       @no_press_input = true
  661.     end
  662.     @contents_x = @main_contents_x
  663.     @contents_x += CHOICE_INPUT_X_PLUS if $game_message.choice_max > 0
  664.     @biggest_text_height = WLH
  665.     @line_count += 1
  666.     @line_show_fast = false
  667.   end
  668.   #--------------------------------------------------------------------------
  669.   # ? EDITED
  670.   #--------------------------------------------------------------------------
  671.   def convert_special_characters
  672.     clear_namebox if @namebox != nil
  673.  
  674.     # Woratana's :: Quick Text
  675.     @text.gsub!(/\\QT\[([0-9]+)\]/i) { $nms.qt[$1.to_i] }
  676.  
  677.     #--------------------------
  678.     # DEFAULT FEATURES
  679.     #-----------------------
  680.     @text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
  681.     @text.gsub!(/\\N\[([0-9]+)\]/i) { $game_party.members[($1.to_i)-1].name}
  682.     @text.gsub!(/\\C\[(.*?)\]/i) { "\x01{#{$1}}" }
  683.     @text.gsub!(/\\G/i)              { "\x02" }
  684.     @text.gsub!(/\\\./)             { "\x03" }
  685.     @text.gsub!(/\\\|/)             { "\x04" }
  686.     @text.gsub!(/\\!/)              { "\x05" }
  687.     @text.gsub!(/\\>/)              { "\x06" }
  688.     @text.gsub!(/\\</)              { "\x07" }
  689.     @text.gsub!(/\\\^/)             { "\x08" }
  690.     @text.gsub!(/\\\\/)             { "\\" }
  691.  
  692.     #--------------------------
  693.     # * NMS FEATURES!!
  694.     #-----------------------
  695.     # Woratana's :: Draw Weapon Name + Icon
  696.     @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}}"}
  697.     # Woratana's :: Draw Item Name + Icon
  698.     @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}}" }
  699.     # Woratana's :: Draw Armor Name + Icon
  700.     @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}}"}
  701.     # Woratana's :: Draw Skill Name + Icon
  702.     @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}}"}
  703.  
  704.     # Woratana's :: Call Animation
  705.     @text.gsub!(/\\ANI\[([0-9]+)\]/i) { "\x80[#{$1}]" }
  706.     # Woratana's :: Call Balloon
  707.     @text.gsub!(/\\BAL\[([0-9]+)\]/i) { "\x81[#{$1}]" }
  708.     # Woratana's :: Call Common Event
  709.     @text.gsub!(/\\CE\[([0-9]+)\]/i) { "\x82[#{$1}]" }
  710.     # Woratana's :: Draw Icon
  711.     @text.gsub!(/\\IC\[([0-9]+)\]/i) { "\x83[#{$1}]" }
  712.  
  713.     # Woratana's :: Map Name
  714.     @text.gsub!(/\\MAP/i) { nms_get_map_name }
  715.     # Woratana's :: Actor Class Name
  716.     @text.gsub!(/\\NC\[([0-9]+)\]/i) { $data_classes[$game_actors[$1.to_i].class_id].name }
  717.     # Woratana's :: Party Actor Name
  718.     @text.gsub!(/\\NP\[([0-9]+)\]/i) { $game_party.members[($1.to_i - 1)].name }
  719.     # Woratana's :: Monster Name
  720.     @text.gsub!(/\\NM\[([0-9]+)\]/i) { $data_enemies[$1.to_i].name }
  721.     # Woratana's :: Troop Name
  722.     @text.gsub!(/\\NT\[([0-9]+)\]/i) { $data_troops[$1.to_i].name }
  723.     # Woratana's :: Item Name
  724.     @text.gsub!(/\\NI\[([0-9]+)\]/i) { $data_items[$1.to_i].name }
  725.     # Woratana's :: Weapon Name
  726.     @text.gsub!(/\\NW\[([0-9]+)\]/i) { $data_weapons[$1.to_i].name }
  727.     # Woratana's :: Armor Name
  728.     @text.gsub!(/\\NA\[([0-9]+)\]/i) { $data_armors[$1.to_i].name }
  729.     # Woratana's :: Skill Name
  730.     @text.gsub!(/\\NS\[([0-9]+)\]/i) { $data_skills[$1.to_i].name }
  731.     # Woratana's :: Item Price
  732.     @text.gsub!(/\\PRICE\[([0-9]+)\]/i) { $data_items[$1.to_i].price.to_s }
  733.  
  734.     # Woratana's :: Font Name Change
  735.     @text.gsub!(/\\FN\[(.*?)\]/i) { "\x84[#{$1}]" }
  736.     # Woratana's :: Font Size Change
  737.     @text.gsub!(/\\FS\[(.*?)\]/i) { "\x85[#{$1}]" }
  738.     # Woratana's :: Reset Font Name
  739.     @text.gsub!(/\\REF/i) { "\x86" }
  740.     # Woratana's :: Reset Font Size
  741.     @text.gsub!(/\\RES/i) { "\x87" }
  742.     # Woratana's :: BOLD Text
  743.     @text.gsub!(/\\B/i) { "\x88" }
  744.     # Woratana's :: ITALIC Text
  745.     @text.gsub!(/\\I/i) { "\x89" }
  746.     # Woratana's :: Text DELAY
  747.     @text.gsub!(/\\DELAY\[([0-9]+)\]/i) { "\x90[#{$1}]"}
  748.     # Woratana's :: Reset Text Delay
  749.     @text.gsub!(/\\RED/i) { "\x91" }
  750.     # Woratana's :: Turn On/Off Letter by Letter
  751.     @text.gsub!(/\\LBL/i) { "\x92" }
  752.  
  753.      # Woratana's NeoFace System
  754.      @text.scan(/\\SD\[([-,0-9]+)\]/i)
  755.      if $1.to_s != ""
  756.        $game_message.side = $1.to_i
  757.        @text.sub!(/\\SD\[([-,0-9]+)\]/i) {}
  758.      end
  759.  
  760.      # Woratana's :: Name Box
  761.      @text.scan(/\\NB\[(.*?)\]/i)
  762.      if $1.to_s != ""
  763.        n_text = $1.to_s.gsub(/\x01\{(.*?)\}/i) {} # Clear If there's Color
  764.        @name_text = n_text
  765.        @text.sub!(/\\NB\[(.*?)\]/i) {}
  766.      end
  767.  
  768.      # Woratana's :: Repeat Name Box
  769.      @text.gsub!(/\\RNB\[(.*?)\]/i) do
  770.        $game_message._name = $1.to_s
  771.        a = ""
  772.      end
  773.  
  774.      # NMS 2++
  775.      # Woratana's :: SHADOW Text
  776.      @text.gsub!(/\\SH/i) { "\x93" }
  777.      # Woratana's :: Cancel Skip Text Button
  778.      @text.gsub!(/\\CB/i) { "\x94" }
  779.      # Woratana's :: Wait X Frame
  780.      @text.gsub!(/\\W\[([0-9]+)\]/i) { "\x95[#{$1}]" }
  781.      # Woratana's :: Add Space X Pixel
  782.      @text.gsub!(/\\SC\[([0-9]+)\]/i) { "\x96[#{$1}]" }
  783.  
  784.      # Woratana's :: Play SE
  785.      @text.gsub!(/\\SE\[(.*?)\]/i) { "\x97[#{$1}]" }
  786.      # Woratana's :: Play ME
  787.      @text.gsub!(/\\ME\[(.*?)\]/i) { "\x98[#{$1}]" }
  788.      # Woratana's :: Play BGM
  789.      @text.gsub!(/\\BGM\[(.*?)\]/i) { "\x99[#{$1}]" }
  790.  
  791.      # Woratana's :: Start New Line
  792.      @text.gsub!(/\\NL/i) { "\x09" }
  793.      # Woratana's :: Turn ON/OFF Typing Sound
  794.      @text.gsub!(/\\TYP/i) { "\x10" }
  795.      # Woratana's :: Draw Picture
  796.      @text.gsub!(/\\DP\[(.*?)\]/i) { "\x11[#{$1}]" }
  797.  
  798.      # Woratana's :: Draw Face
  799.      @text.gsub!(/\\FA\{(.*?)\}/i) { "\x12{#{$1}}" }
  800.  
  801.      # Woratana's :: Temporary Width
  802.      @text.scan(/\\WW\[([-,0-9]+)\]/i)
  803.      if $1.to_s != ''
  804.        $nms.msg_temp_w = $1.to_i
  805.        @text.sub!(/\\WW\[([-,0-9]+)\]/i) {}
  806.      end
  807.      # Woratana's :: Temporary Height
  808.      @text.scan(/\\WH\[([-,0-9]+)\]/i)
  809.      if $1.to_s != ''
  810.        $nms.msg_temp_h = $1.to_i
  811.        @text.sub!(/\\WH\[([-,0-9]+)\]/i) {}
  812.      end
  813.      # Woratana's :: Temporary X
  814.      @text.scan(/\\WX\[([-,0-9]+)\]/i)
  815.      if $1.to_s != ''
  816.        $nms.msg_temp_x = $1.to_i
  817.        @text.sub!(/\\WX\[([-,0-9]+)\]/i) {}
  818.      end
  819.      # Woratana's :: Temporary Y
  820.      @text.scan(/\\WY\[([-,0-9]+)\]/i)
  821.      if $1.to_s != ''
  822.        $nms.msg_temp_y = $1.to_i
  823.        @text.sub!(/\\WY\[([-,0-9]+)\]/i) {}
  824.      end
  825.  
  826.     # Woratana's :: Remove text list
  827.      NMS_REMOVE_LIST.each {|i| @text.gsub!(/#{i}/i) {} }
  828.  
  829.      # Woratana's :: Pop Text
  830.      @text.scan(/\\P\[(.*?)\]/i)
  831.      if $1.to_s != ""
  832.       @pop = $1.to_i
  833.       contents.font.name = $nms.nms_fontname if contents.font.name != $nms.nms_fontname
  834.       contents.font.size = $nms.nms_fontsize if contents.font.size != $nms.nms_fontsize
  835.       a = @text.split(/\x00/)
  836.       for i in 0..(a.size - 1)
  837.         text_width = contents.text_size(a[i]).width
  838.         @all_text_width = text_width if @all_text_width < text_width
  839.       end
  840.        nms_draw_new_face
  841.        if @face.bitmap != nil
  842.         if get_x_face == 0 and MOVE_TEXT
  843.           @all_text_width += (@face.width + TEXT_X_PLUS)
  844.         else
  845.           @all_text_width += get_x_face
  846.         end
  847.         @face.bitmap.dispose
  848.         @face.bitmap = nil
  849.       end
  850.       @text.sub!(/\\P\[(.*?)\]/i) {}
  851.       end
  852.  
  853.      @name_text = $game_message._name if @name_text == nil and $game_message._name != ""
  854.    end
  855.   #--------------------------------------------------------------------------
  856.   # ? EDIT: NMS 2.2++
  857.   #--------------------------------------------------------------------------
  858.   def reset_window
  859.     @background = $game_message.background
  860.     @position = $game_message.position
  861.     if @background == 0
  862.       self.opacity = 255
  863.     else
  864.       self.opacity = 0
  865.     end
  866.     # Calculate Window X/Y and Size depends on Pop or normal message
  867.     if @pop != nil
  868.       $nms.msg_h = [((@text_line * WLH) + 8), $nms.msg_h_user].min
  869.       $nms.msg_w = @all_text_width + 32
  870.  
  871.       case @pop
  872.       when 0 # Player
  873.         set_window_xy($game_player)
  874.       when -1 # This Event
  875.         set_window_xy($game_map.events[$game_message.event_id])
  876.       else # Event ID
  877.         set_window_xy($game_map.events[@pop])
  878.       end
  879.     else
  880.       $nms.msg_h = ((((@text_line * WLH) + 8) > $nms.msg_h_user) and ($nms.txt_scrl == false)) ? ((@text_line * WLH) + 8) : $nms.msg_h_user
  881.       $nms.msg_w = NMS_MSGWIN_WIDTH
  882.       self.x = $nms.msg_x
  883.       case @position
  884.       when 0  # Down
  885.         self.y = 0
  886.         @gold_window.y = 360
  887.       when 1  # Middle
  888.         self.y = ((Graphics.height - $nms.msg_h) / 2)
  889.         @gold_window.y = 0
  890.       when 2  # Up
  891.         self.y = Graphics.height - $nms.msg_h
  892.         @gold_window.y = 0
  893.       end
  894.     end
  895.     # Temporary Size & Position
  896.     if !$nms.msg_temp_w.nil?
  897.       $nms.msg_w = $nms.msg_temp_w
  898.       $nms.msg_temp_w = nil
  899.     end
  900.     if !$nms.msg_temp_h.nil?
  901.       $nms.msg_h = $nms.msg_temp_h
  902.       $nms.msg_temp_h = nil
  903.     end
  904.     if !$nms.msg_temp_x.nil?
  905.       self.x = $nms.msg_temp_x
  906.       $nms.msg_temp_x = nil
  907.     end
  908.     if !$nms.msg_temp_y.nil?
  909.       self.y = $nms.msg_temp_y
  910.       $nms.msg_temp_y = nil
  911.     end
  912.     # Fix Window Position if it's out of screen
  913.     self.x = 0 if self.x < 0
  914.     self.x = Graphics.width - $nms.msg_w if (self.x + $nms.msg_w) > Graphics.width
  915.     self.y = 0 if self.y < 0
  916.     self.y = Graphics.height - $nms.msg_h if (self.y + $nms.msg_h) > Graphics.height
  917.   end
  918.   #--------------------------------------------------------------------------
  919.   # ? SET Window XY for Pop Message
  920.   #--------------------------------------------------------------------------
  921.   def set_window_xy(chara)
  922.     char_x = chara.screen_x
  923.     char_y = chara.screen_y
  924.     self.x = char_x - ($nms.msg_w / 2)
  925.     self.y = ((char_y - 32 - $nms.msg_h) >= 0) ? (char_y - 32 - $nms.msg_h) : (char_y + 32)
  926.   end
  927.   #--------------------------------------------------------------------------
  928.   # ? ????????
  929.   #--------------------------------------------------------------------------
  930.   def terminate_message
  931.     self.active = false
  932.     self.pause = false
  933.     self.index = -1
  934.     @gold_window.close
  935.     @number_input_window.active = false
  936.     @number_input_window.visible = false
  937.     $game_message.main_proc.call if $game_message.main_proc != nil
  938.     $game_message.clear
  939.   end
  940.   #--------------------------------------------------------------------------
  941.   # ? EDITED
  942.   #--------------------------------------------------------------------------
  943.   def update_message
  944.     loop do
  945.       c = @text.slice!(/./m)
  946.       case c
  947.       when nil
  948.         finish_message
  949.         break
  950.       when "\x00"
  951.         new_line if !$nms.txt_unl
  952.         if @line_count >= $game_message.max_line
  953.           unless @text.empty?
  954.             self.pause = true
  955.             break
  956.           end
  957.         end
  958.       when "\x80"
  959.         @text.sub!(/\[([0-9]+)\]/, "")
  960.         $game_map.events[$game_message.event_id].animation_id = $1.to_i
  961.       when "\x81"
  962.         @text.sub!(/\[([0-9]+)\]/, "")
  963.         $game_map.events[$game_message.event_id].balloon_id = $1.to_i
  964.       when "\x82"
  965.         @text.sub!(/\[([0-9]+)\]/, "")
  966.         a = $game_map.interpreter.params[0]
  967.         $game_map.interpreter.params[0] = $1.to_i
  968.         $game_map.interpreter.command_117
  969.         $game_map.interpreter.params[0] = a
  970.       when "\x83"
  971.         @text.sub!(/\[([0-9]+)\]/, "")
  972.         bitmap = Cache.system("Iconset")
  973.         icon_index = $1.to_i
  974.         # Check for Auto Cut
  975.         new_line if $nms.txt_cut and (@contents_x + 24 > contents.width)
  976.         # Draw ICON
  977.         draw_icon(icon_index, @contents_x, @contents_y, true)
  978.         @contents_x += 24
  979.       when "\x84"
  980.         @text.sub!(/\[(.*?)\]/, "")
  981.         $nms.nms_fontname = $1.to_s
  982.         next
  983.       when "\x85"
  984.         @text.sub!(/\[([0-9]+)\]/, "")
  985.         $nms.nms_fontsize = $1.to_i; next
  986.       when "\x86"
  987.         $nms.nms_fontname = NMS_FONT_NAME; next
  988.       when "\x87"
  989.         $nms.nms_fontsize = NMS_FONT_SIZE; next
  990.       when "\x88"
  991.         contents.font.bold = contents.font.bold == true ? false : true
  992.         next
  993.       when "\x89"
  994.         contents.font.italic = contents.font.italic == true ? false : true
  995.         next
  996.       when "\x90"
  997.         @text.sub!(/\[([0-9]+)\]/, "")
  998.         $nms.text_delay = $1.to_i; next
  999.       when "\x91"
  1000.         $nms.text_delay = NMS_DELAY_PER_LETTER; next
  1001.       when "\x92"
  1002.         $nms.lbl = $nms.lbl == true ? false : true; next
  1003.       when "\x93"
  1004.         contents.font.shadow = contents.font.shadow == true ? false : true
  1005.         next
  1006.       when "\x94"
  1007.         @no_press_input = @no_press_input == true ? false : true
  1008.         next
  1009.       when "\x95"
  1010.         @text.sub!(/\[([0-9]+)\]/, "")
  1011.         @wait_count = $1.to_i
  1012.         break
  1013.       when "\x96"
  1014.         @text.sub!(/\[([0-9]+)\]/, "")
  1015.         @contents_x += $1.to_i
  1016.         next
  1017.       when "\x97"
  1018.         @text.sub!(/\[(.*?)\]/, "")
  1019.         RPG::SE.new($1).play
  1020.       when "\x98"
  1021.         @text.sub!(/\[(.*?)\]/, "")
  1022.         RPG::ME.new($1).play
  1023.       when "\x99"
  1024.         @text.sub!(/\[(.*?)\]/, "")
  1025.         RPG::BGM.new($1).play
  1026.       when "\x09"
  1027.         new_line
  1028.       when "\x10"
  1029.         $nms.typ_se = !$nms.typ_se
  1030.       when "\x11"
  1031.         @text.sub!(/\[(.*?)\]/, "")
  1032.         bitmap = Cache.system($1.to_s)
  1033.         rect = Rect.new(0,0,0,0)
  1034.         rect.width = bitmap.width
  1035.         rect.height = bitmap.height
  1036.         # Check for Auto Cut & Scroll
  1037.         if (@contents_x + bitmap.width > contents.width)
  1038.           if $nms.txt_cut; new_line
  1039.           elsif $nms.txt_scrl_hori; nms_scroll_hori(bitmap.width)
  1040.           end
  1041.         end
  1042.         # Draw Image
  1043.         self.contents.blt(@contents_x, @contents_y, bitmap, rect)
  1044.         @contents_x += bitmap.width
  1045.         @biggest_text_height = bitmap.height if bitmap.height > @biggest_text_height
  1046.         bitmap.dispose
  1047.       when "\x12"
  1048.         @text.sub!(/\{(.*?)\}/, "")
  1049.         a = $1.to_s.split(',')
  1050.         $nms.face_name = a[0]
  1051.         $nms.face_index = a[1].to_i
  1052.         $nms.side = a[2].to_i unless a[2].nil?
  1053.         nms_draw_new_face
  1054.         @ori_x = @face.x
  1055.       when "\x01"
  1056.         @text.sub!(/\{(.*?)\}/, "")
  1057.         color_code = $1.to_s
  1058.         if color_code.include?('#')
  1059.           color_code.sub!(/([0123456789ABCDEF]+)/, "")
  1060.           contents.font.color = get_hex($1)
  1061.         else
  1062.           $nms.last_color = color_code.to_i
  1063.           contents.font.color = text_color($nms.last_color)
  1064.         end
  1065.         next
  1066.       when "\x02"
  1067.         @gold_window.refresh
  1068.         @gold_window.open
  1069.       when "\x03"
  1070.         @wait_count = 15
  1071.         break
  1072.       when "\x04"
  1073.         @wait_count = 60
  1074.         break
  1075.       when "\x05"
  1076.         self.pause = true
  1077.         break
  1078.       when "\x06"
  1079.         @line_show_fast = true
  1080.       when "\x07"
  1081.         @line_show_fast = false
  1082.       when "\x08"
  1083.         @pause_skip = true
  1084.       else
  1085.         contents.font.name = $nms.nms_fontname if contents.font.name != $nms.nms_fontname
  1086.         contents.font.size = $nms.nms_fontsize if contents.font.size != $nms.nms_fontsize
  1087.         c_width = contents.text_size(c).width
  1088.  
  1089.         # Check for Text Cut & Scroll Horizontal
  1090.         if (@contents_x + c_width > contents.width)
  1091.           if $nms.txt_cut; new_line
  1092.           elsif $nms.txt_scrl_hori
  1093.             nms_scroll_hori(c_width)
  1094.             @wait_count = $nms.txt_scrl_hori_delay
  1095.             @text = c + @text
  1096.             return
  1097.           end
  1098.         end
  1099.         nms_line_height = contents.text_size(c).height
  1100.         contents.draw_text(@contents_x, @contents_y, 40, nms_line_height, c)
  1101.         @contents_x += c_width
  1102.         # Change Biggest Text Height
  1103.         @biggest_text_height = nms_line_height if nms_line_height > @biggest_text_height
  1104.  
  1105.         # Play Typing Sound
  1106.         if $nms.typ_se and @typse_count <= 0
  1107.           RPG::SE.new($nms.typ_file, $nms.typ_vol).play
  1108.           @typse_count += $nms.typ_skip
  1109.         end
  1110.         #Show Fast & Text Delay
  1111.         @show_fast = true if $nms.lbl == false
  1112.  
  1113.         @delay_text += $nms.text_delay
  1114.       end
  1115.       break unless @show_fast or @line_show_fast
  1116.     end
  1117.   end
  1118.   #--------------------------------------------------------------------------
  1119.   # ? ??????????
  1120.   #--------------------------------------------------------------------------
  1121.   def finish_message
  1122.     if $game_message.choice_max > 0
  1123.       start_choice
  1124.     elsif $game_message.num_input_variable_id > 0
  1125.       start_number_input
  1126.     elsif @pause_skip
  1127.       terminate_message
  1128.     else
  1129.       self.pause = true
  1130.     end
  1131.     @wait_count = 10
  1132.     @text = nil
  1133.   end
  1134.   #--------------------------------------------------------------------------
  1135.   # ? ??????
  1136.   #--------------------------------------------------------------------------
  1137.   def start_choice
  1138.     self.active = true
  1139.     self.index = 0
  1140.   end
  1141.   #--------------------------------------------------------------------------
  1142.   # ? EDITED
  1143.   #--------------------------------------------------------------------------
  1144.   def start_number_input
  1145.     digits_max = $game_message.num_input_digits_max
  1146.     number = $game_variables[$game_message.num_input_variable_id]
  1147.     @number_input_window.digits_max = digits_max
  1148.     @number_input_window.number = number
  1149.     if $game_message.face_name.empty? or MOVE_TEXT == false
  1150.       @number_input_window.x = x - 23
  1151.     else
  1152.       case $game_message.side
  1153.       when 0
  1154.         @number_input_window.x = (x + 112) - 23
  1155.       when 1
  1156.         @number_input_window.x = (x + text_x) - 23
  1157.       when 2
  1158.         @number_input_window.x = x - 23
  1159.       when -1
  1160.         @number_input_window.x = x - 23
  1161.       end
  1162.     end
  1163.     @number_input_window.x += CHOICE_INPUT_X_PLUS
  1164.     @number_input_window.y = y + @contents_y
  1165.     @number_input_window.active = true
  1166.     @number_input_window.visible = true
  1167.     @number_input_window.update
  1168.   end
  1169.   #--------------------------------------------------------------------------
  1170.   # ? EDITED
  1171.   #--------------------------------------------------------------------------
  1172.   def update_cursor
  1173.     if @index >= 0
  1174.       if $game_message.face_name.empty?
  1175.       x = TEXT_X_PLUS
  1176.       else
  1177.       x = get_x_face
  1178.       end
  1179.       y = ($game_message.choice_start + @index) * WLH
  1180.       # CHANGE WIDTH OF CURSOR FOR CHOICE SELECT
  1181.       if $game_message.face_name.empty? or MOVE_TEXT == false
  1182.         facesize = x
  1183.       else
  1184.         facesize = get_x_face
  1185.         facesize += @face.width if $game_message.side == 2
  1186.         facesize += @face.width + 16 if $game_message.side == -1
  1187.       end
  1188.       self.cursor_rect.set(x, y, contents.width - facesize, WLH)
  1189.     else
  1190.       self.cursor_rect.empty
  1191.     end
  1192.   end
  1193.  
  1194.   #--------------------------------------------------------------------------
  1195.   # ? ?????????
  1196.   #--------------------------------------------------------------------------
  1197.   def input_pause
  1198.     if Input.trigger?(Input::B) or Input.trigger?(Input::C)
  1199.       self.pause = false
  1200.       if @text != nil and not @text.empty?
  1201.         new_page if @line_count >= $game_message.max_line
  1202.       else
  1203.         terminate_message
  1204.       end
  1205.     end
  1206.   end
  1207.   #--------------------------------------------------------------------------
  1208.   # ? ????????
  1209.   #--------------------------------------------------------------------------
  1210.   def input_choice
  1211.     if Input.trigger?(Input::B)
  1212.       if $game_message.choice_cancel_type > 0
  1213.         Sound.play_cancel
  1214.         $game_message.choice_proc.call($game_message.choice_cancel_type - 1)
  1215.         terminate_message
  1216.       end
  1217.     elsif Input.trigger?(Input::C)
  1218.       Sound.play_decision
  1219.       $game_message.choice_proc.call(self.index)
  1220.       terminate_message
  1221.     end
  1222.   end
  1223.   #--------------------------------------------------------------------------
  1224.   # ? ???????
  1225.   #--------------------------------------------------------------------------
  1226.   def input_number
  1227.     if Input.trigger?(Input::C)
  1228.       Sound.play_decision
  1229.       $game_variables[$game_message.num_input_variable_id] =
  1230.         @number_input_window.number
  1231.       $game_map.need_refresh = true
  1232.       terminate_message
  1233.     end
  1234.   end
  1235. end
  1236.  
  1237. #==============================================================================
  1238. # NMS +[ADD ON]+ WINDOW_MESSAGE_CLASS
  1239. #------------------------------------------------------------------------------
  1240. #==============================================================================
  1241.  
  1242. class Window_Message < Window_Selectable
  1243.  
  1244. # Return X for Text
  1245. def get_x_face
  1246.   if MOVE_TEXT == true
  1247.     case $game_message.side
  1248.     when 0
  1249.       return 112 + TEXT_X_PLUS
  1250.     when 1
  1251.       return text_x
  1252.     when 2
  1253.       return TEXT_X_PLUS
  1254.     else
  1255.       return TEXT_X_PLUS
  1256.     end
  1257.   else
  1258.     return TEXT_X_PLUS
  1259.   end
  1260. end
  1261.  
  1262.   def text_x
  1263.     return @face.width + TEXT_X_PLUS
  1264.   end
  1265.  
  1266.   # Clear Name Box & Name Text
  1267.   def clear_namebox
  1268.     @nametxt.bitmap.dispose
  1269.     @namebox.dispose
  1270.     @namebox = nil
  1271.     @name_text = nil
  1272.   end
  1273.  
  1274.   def nms_get_map_name
  1275.     mapdata = load_data("Data/MapInfos.rvdata")
  1276.     map_id = $game_map.map_id
  1277.     return mapdata[map_id].name
  1278.   end
  1279.  
  1280.   #--------------------------------------
  1281.   # DRAW FACE [Both Systems] METHOD
  1282.   #------------------------------------
  1283.   def draw_face2(face_name, x, y, index = 0, animf = false, animf_index = 0, animf_max = 1, nofade = false)
  1284.   if animf
  1285.     # Use Animated Face
  1286.     bitmap = Cache.face(face_name)
  1287.     rect = Rect.new(0,0,0,0)
  1288.     rect.width = (bitmap.width / animf_max)
  1289.     rect.height = bitmap.height
  1290.     rect.x = animf_index * rect.width
  1291.     rect.y = 0
  1292.     @face.bitmap = Bitmap.new(rect.width,rect.height)
  1293.     @face.bitmap.blt(0,0,bitmap,rect)
  1294.     bitmap.dispose
  1295.   elsif $game_message.side == 0 or $game_message.side == -1 or EightFaces_File
  1296.     # USE 8 FACES PER FILE
  1297.     bitmap = Cache.face(face_name)
  1298.     faceskin = Cache.face("faceskin")
  1299.     rect = Rect.new(0,0,0,0)
  1300.     rect.width = (bitmap.width / 4)
  1301.     rect.height = (bitmap.height / 2)
  1302.     rect.x = index % 4 * rect.width
  1303.     rect.y = index / 4 * rect.height
  1304.     @face.bitmap = Bitmap.new(rect.width,rect.height)
  1305.     @face.bitmap.blt(0,0,bitmap,rect)
  1306.     @face.bitmap.blt(0,0,faceskin,rect)
  1307.     bitmap.dispose
  1308.   else
  1309.     # USE 1 FACES PER FILE
  1310.     @face.bitmap = Cache.face(face_name)
  1311.   end
  1312.   # SET X/Y OF FACE DEPENDS ON FACE SIDE
  1313.   if $game_message.side == 1
  1314.     @face.mirror = false
  1315.     @face.x = x + 6
  1316.     @face.y = y - 6 + height - @face.height
  1317.   elsif $game_message.side == 2
  1318.     @face.mirror = true
  1319.     @face.x = x + ((self.width - 6) - @face.width)
  1320.     @face.y = y - 6 + height - @face.height
  1321.   elsif $game_message.side == 0
  1322.     @face.mirror = false
  1323.     @face.x = x + 16
  1324.     @face.y = y - 16 + height - @face.height
  1325.   elsif $game_message.side == -1
  1326.     @face.mirror = true
  1327.     @face.x = x + self.contents.width - @face.width + 16
  1328.     @face.y = y - 16 + height - @face.height
  1329.   end
  1330.     @face.x += FACE_X_PLUS
  1331.     @face.y += FACE_Y_PLUS
  1332.     @face_data = [face_name, index, $game_message.side]
  1333.     if @face_data != @face_data_old and FADE_MOVE_WHEN_USE_NEW_FACE; @showtime = 1; @face_data_old = @face_data; end
  1334.     @face.opacity = 0 if !nofade and ($nms.face_fade == true and ((FADE_ONLY_FIRST and @showtime <= 1) or (FADE_ONLY_FIRST == false)))
  1335.   end
  1336.   #--------------------------------------
  1337.   # DRAW NAME BOX METHOD
  1338.   #-----------------------------------
  1339.   def draw_name(name,x,y)
  1340.     name = name + NAMEBOX_TEXT_AFTER_NAME
  1341.     a = Bitmap.new(33,33)
  1342.     a.font.name = NAMEBOX_TEXT_FONT
  1343.     a.font.size = NAMEBOX_TEXT_SIZE
  1344.     rect = a.text_size(name)
  1345.     a.dispose
  1346.     @nametxt.bitmap = Bitmap.new(16 + rect.width, rect.height + NAMEBOX_TEXT_HEIGHT_PLUS)
  1347.     @nametxt.x = x + 8
  1348.     # Eienshinken
  1349.     if $game_message.side == 1 or $game_message.side == 2
  1350.       if @face.bitmap == nil
  1351.         @nametxt.x += NAMEBOX_X_PLUS_EIENSHINKEN
  1352.       else
  1353.         @nametxt.x += NAMEBOX_X_PLUS_NEO
  1354.       end
  1355.     else
  1356.       if @face.bitmap == nil
  1357.         @nametxt.x += NAMEBOX_X_PLUS_EIENSHINKEN
  1358.       else
  1359.         @nametxt.x += NAMEBOX_X_PLUS_NOR
  1360.       end
  1361.     end
  1362.     @nametxt.y = y - 20 + ($game_message.position == 0 ? NAMEBOX_Y_PLUS_TOP : NAMEBOX_Y_PLUS)
  1363.     namebox_x_plus = ($game_message.side == 1 or $game_message.side == 2) ? NAMEBOX_X_PLUS_NEO : NAMEBOX_X_PLUS_NOR
  1364.     @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)
  1365.     @namebox = Window.new
  1366.     @namebox.windowskin = Cache.system(NAMEBOX_SKIN)
  1367.     @namebox.z = self.z + 10
  1368.     @namebox.opacity = case @background
  1369.     when 0; NAMEBOX_OPACITY
  1370.     when 1; NAMEBOX_OPACITY_DIM_BG
  1371.     when 2; NAMEBOX_OPACITY_NO_BG
  1372.     end
  1373.     @namebox.back_opacity = NAMEBOX_BACK_OPACITY
  1374.     @namebox.openness = 255
  1375.     @namebox.x = @nametxt.x - NAMEBOX_BOX_WIDTH_PLUS
  1376.     @namebox.y = @nametxt.y - NAMEBOX_BOX_HEIGHT_PLUS
  1377.     @namebox.width = @nametxt.bitmap.width + (NAMEBOX_BOX_WIDTH_PLUS * 2)
  1378.     @namebox.height = @nametxt.bitmap.height + (NAMEBOX_BOX_HEIGHT_PLUS * 2)
  1379.     # Fixed position bug
  1380.     @namebox.x = 0 if @namebox.x < 0
  1381.     @namebox.x = (Graphics.width - @namebox.width) if (@namebox.x + @namebox.width) > Graphics.width
  1382.     @nametxt.bitmap.font.name = NAMEBOX_TEXT_FONT
  1383.     @nametxt.bitmap.font.size = NAMEBOX_TEXT_SIZE
  1384.     @nametxt.bitmap.font.bold = NAMEBOX_TEXT_BOLD
  1385.     if NAMEBOX_TEXT_OUTLINE == true
  1386.       # MAKE TEXT OUTLINE
  1387.       old_shadow = @nametxt.bitmap.font.shadow
  1388.       @nametxt.bitmap.font.color = Color.new(0,0,0)
  1389.       @nametxt.bitmap.draw_text(0,2,@nametxt.bitmap.width,@nametxt.bitmap.height,name,1)
  1390.       @nametxt.bitmap.draw_text(0,0,@nametxt.bitmap.width,@nametxt.bitmap.height,name,1)
  1391.       @nametxt.bitmap.draw_text(2,0,@nametxt.bitmap.width,@nametxt.bitmap.height,name,1)
  1392.       @nametxt.bitmap.draw_text(2,2,@nametxt.bitmap.width,@nametxt.bitmap.height,name,1)
  1393.       @nametxt.bitmap.font.shadow = old_shadow
  1394.     end
  1395.     @nametxt.bitmap.font.color = Color.new($game_message.color[0],$game_message.color[1],$game_message.color[2])
  1396.     @nametxt.bitmap.draw_text(1,1,@nametxt.bitmap.width,@nametxt.bitmap.height,name,1)
  1397.     @name_text = nil
  1398.   end
  1399.  
  1400.   #--------------------------------------
  1401.   # DRAW NEW FACE
  1402.   #-----------------------------------
  1403.   def nms_draw_new_face
  1404.     # Setup Face Name / Index
  1405.     name = $game_message.face_name
  1406.     index = $game_message.face_index
  1407.     animf_test = name.sub(/\[([0-9]+)\]/, "")
  1408.     # Animated?
  1409.     @animf = $1.to_i > 0 ? true : false
  1410.     @animf_maxind = $1.to_i
  1411.     @animf_ind = 0
  1412.     @animf_dl = $nms.animf_delay
  1413.     # CALL DRAW FACE METHOD
  1414.     draw_face2(name, self.x, self.y, index, @animf, @animf_ind, @animf_maxind)
  1415.   end
  1416.   #--------------------------------------
  1417.   # UPDATE ANIMATION FACE
  1418.   #-----------------------------------
  1419.   def update_animate_face
  1420.     if (!self.pause or $nms.animf_cont)
  1421.       @animf_dl -= 1
  1422.       if @animf_dl <= 0
  1423.         @animf_ind = (@animf_ind + 1) % @animf_maxind
  1424.         @animf_dl = $nms.animf_delay
  1425.         draw_face2($game_message.face_name, self.x, self.y, index, @animf, @animf_ind, @animf_maxind, true)
  1426.       end
  1427.     elsif @animf_ind != 0
  1428.       @animf_ind = 0
  1429.       draw_face2($game_message.face_name, self.x, self.y, index, @animf, @animf_ind, @animf_maxind, true)
  1430.     end
  1431.   end
  1432.   #--------------------------------------
  1433.   # SCROLL TEXT HORIZONTAL
  1434.   #-----------------------------------
  1435.   def nms_scroll_hori(scr_width)
  1436.     biggest = @biggest_text_height > WLH ? @biggest_text_height : WLH
  1437.     rect = Rect.new(0, @contents_y, contents.width, biggest)
  1438.     bitmap = Bitmap.new(rect.width, rect.height)
  1439.     bitmap.blt(0, 0, contents, rect)
  1440.     contents.clear_rect(rect)
  1441.     rect = Rect.new(0, 0, rect.width, rect.height)
  1442.     contents.blt(0 - scr_width, @contents_y, bitmap, rect)
  1443.     contents.clear_rect(0, 0, @face.width, @face.height) if @face.bitmap != nil
  1444.     bitmap.dispose
  1445.     @contents_x = @contents_x - scr_width
  1446.   end
  1447.  
  1448.   #--------------------------------------
  1449.   # GET HEX COLOR by RPG & ERZENGEL
  1450.   #------------------------------------
  1451.   def get_hex(n)
  1452.     red = 0
  1453.     green = 0
  1454.     blue = 0
  1455.     if n.size != 6
  1456.       print("Hex triplets must be six characters long!\nNormal color will be used.")
  1457.       return normal_color
  1458.     end
  1459.     for i in 1..6
  1460.       sliced = n.slice!(/./m)
  1461.       value = hexconvert(sliced)
  1462.       case i
  1463.       when 1; red += value * 16
  1464.       when 2; red += value
  1465.       when 3; green += value * 16
  1466.       when 4; green += value
  1467.       when 5; blue += value * 16
  1468.       when 6; blue += value
  1469.       end
  1470.     end
  1471.     return Color.new(red, green, blue)
  1472.   end
  1473.   def hexconvert(n)
  1474.     case n
  1475.     when "0"; return 0
  1476.     when "1"; return 1
  1477.     when "2"; return 2
  1478.     when "3"; return 3
  1479.     when "4"; return 4
  1480.     when "5"; return 5
  1481.     when "6"; return 6
  1482.     when "7"; return 7
  1483.     when "8"; return 8
  1484.     when "9"; return 9
  1485.     when "A"; return 10
  1486.     when "B"; return 11
  1487.     when "C"; return 12
  1488.     when "D"; return 13
  1489.     when "E"; return 14
  1490.     when "F";return 15
  1491.     else; return -1
  1492.     end
  1493.   end
  1494. end # CLASS END
  1495.  
  1496. #==============================================================================
  1497. # NMS +[ADD ON]+ OTHER CLASS
  1498. #------------------------------------------------------------------------------
  1499. #==============================================================================
  1500.  
  1501. # STORE variables here~*
  1502. class Game_Message
  1503.   attr_accessor :nms_fontname, :nms_fontsize, :event_id, :side, :color, :_name,
  1504. :last_color, :text_delay, :lbl, :msg_w, :msg_h, :msg_x, :max_line, :nms_face_name,
  1505. :nms_face_index, :next_msg, :typ_se, :typ_file, :typ_skip, :typ_vol, :mback, :mback_opac,
  1506. :qt, :txt_scrl, :msg_h_user, :animf_delay, :animf_cont, :txt_cut, :txt_unl, :txt_scrl_hori,
  1507. :txt_scrl_hori_delay, :face_fade, :face_move, :msg_temp_y, :msg_temp_x, :msg_temp_h,
  1508. :msg_temp_w
  1509.  
  1510.  
  1511.   alias wor_nms_old_ini initialize
  1512.   def initialize
  1513.     create_nms_data
  1514.     wor_nms_old_ini
  1515.   end
  1516.  
  1517.   def create_nms_data
  1518.     # NFS
  1519.     @side = Window_Base::DEFAULT_FACE_SIDE
  1520.     @_name = ""
  1521.     @color = Window_Base::NAMEBOX_TEXT_DEFAULT_COLOR
  1522.     # NMS
  1523.     @last_color = 0
  1524.     @nms_fontname = Window_Base::NMS_FONT_NAME
  1525.     @nms_fontsize = Window_Base::NMS_FONT_SIZE
  1526.     @event_id = 0
  1527.     @text_delay = Window_Base::NMS_DELAY_PER_LETTER
  1528.     @lbl = true
  1529.     @msg_w = Window_Base::NMS_MSGWIN_WIDTH
  1530.     @msg_h = @msg_h_user = Window_Base::NMS_MSGWIN_MIN_HEIGHT
  1531.     @msg_x = Window_Base::NMS_MSGWIN_X
  1532.     @max_line = Window_Base::NMS_MAX_LINE
  1533.     @nms_face_name = ""
  1534.     @nms_face_index = 1
  1535.     @next_msg = false
  1536.     @typ_se = Window_Base::TYPING_SOUND
  1537.     @typ_file = Window_Base::TYPING_SOUND_FILE
  1538.     @typ_skip = Window_Base::TYPING_SOUND_SKIP
  1539.     @typ_vol = Window_Base::TYPING_SOUND_VOLUME
  1540.     @mback = Window_Base::NMS_MSG_BACK
  1541.     @mback_opac = Window_Base::NMS_MSG_BACK_OPACITY
  1542.     @qt = Array.new
  1543.     @txt_scrl = Window_Base::NMS_TEXT_SCROLL
  1544.     @animf_delay = Window_Base::ANIMATE_FACE_DELAY
  1545.     @animf_cont = Window_Base::ANIMATE_FACE_CONTINUE
  1546.     @txt_cut = Window_Base::NMS_TEXT_AUTO_CUT
  1547.     @txt_scrl_hori = Window_Base::NMS_TEXT_AUTO_SCROLL_HORIZONTAL
  1548.     @txt_scrl_hori_delay = Window_Base::NMS_TEXT_AUTO_SCROLL_HORIZONTAL_DELAY
  1549.     @txt_unl = Window_Base::NMS_USER_NEW_LINE
  1550.     @face_fade = Window_Base::FADE_EFFECT
  1551.     @face_move = Window_Base::MOVE_EFFECT
  1552.     @msg_temp_x = nil
  1553.     @msg_temp_y = nil
  1554.     @msg_temp_h = nil
  1555.     @msg_temp_w = nil
  1556.   end
  1557. end
  1558.  
  1559. class Game_Map
  1560.   attr_accessor :interpreter
  1561. end
  1562.  
  1563. class Game_Interpreter
  1564.   attr_accessor :params
  1565. end
  1566.  
  1567. class Game_Interpreter
  1568.   def command_101
  1569.     unless $game_message.busy
  1570.       $game_message.event_id = @event_id
  1571.       $game_message.face_name = @params[0]
  1572.       $game_message.face_index = @params[1]
  1573.       $game_message.background = @params[2]
  1574.       $game_message.position = @params[3]
  1575.       next_msg = true
  1576.     loop do
  1577.       if @list[@index].code == 101 and $game_message.max_line > $game_message.texts.size and next_msg
  1578.         @index += 1
  1579.       else
  1580.         break
  1581.       end
  1582.       next_msg = false
  1583.       while @list[@index].code == 401 and $game_message.max_line > $game_message.texts.size
  1584.         next_msg = $game_message.next_msg
  1585.         $game_message.texts.push(@list[@index].parameters[0])
  1586.         @index += 1
  1587.       end
  1588.     end
  1589.       if @list[@index].code == 102
  1590.         setup_choices(@list[@index].parameters)
  1591.       elsif @list[@index].code == 103
  1592.         setup_num_input(@list[@index].parameters)
  1593.       end
  1594.       set_message_waiting
  1595.     end
  1596.     return false
  1597.   end
  1598.  
  1599.   def setup_choices(params)
  1600.     if $game_message.texts.size <= $game_message.max_line - params[0].size
  1601.       $game_message.choice_start = $game_message.texts.size
  1602.       $game_message.choice_max = params[0].size
  1603.       for s in params[0]
  1604.         $game_message.texts.push(s)
  1605.       end
  1606.       $game_message.choice_cancel_type = params[1]
  1607.       $game_message.choice_proc = Proc.new { |n| @branch[@indent] = n }
  1608.       @index += 1
  1609.     end
  1610.   end
  1611. end
[/pre]



Project1.rar (260.54 KB, 下载次数: 428)



Lv2.观梦者

虚構歪曲

梦石
0
星屑
364
在线时间
1198 小时
注册时间
2010-12-18
帖子
3928

贵宾

2
发表于 2012-7-19 13:00:14 | 只看该作者
UI> 从截图上我没看出这是邮件系统= =……

点评

+1 看不出  发表于 2012-8-9 11:37
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
0 小时
注册时间
2012-7-22
帖子
12
3
发表于 2012-7-23 03:03:22 | 只看该作者
我只看出是 对话加强系统。 邮件呐?
我还以为是游戏中不定时的显示出邮件信息呢

点评

+1,想要的是这种系统啊。  发表于 2012-7-27 13:07
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
559
在线时间
664 小时
注册时间
2010-6-30
帖子
223
4
发表于 2012-8-9 09:56:21 | 只看该作者
范例出错,请楼主修复····

Script "对话 " line 194: SyntaxError occurred
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 18:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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