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

Project1

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

[转载发布] [VXA]特殊信息代码 脚本中英对照版本

[复制链接]

Lv1.梦旅人

梦石
0
星屑
164
在线时间
415 小时
注册时间
2020-1-11
帖子
256
跳转到指定楼层
1
发表于 2020-10-16 14:27:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 alianlord 于 2020-10-16 14:36 编辑

RUBY 代码复制
  1. #==============================================================================
  2.     #    ATS: Special Message Codes [VXA]  【自动测试系统:特殊信息代码[VXA]】
  3.     #    Version: 1.0.6                    【版本:1.0.6】
  4.     #    Author: modern algebra (rmrk.net) 【作者:现代代数(rmrk.net公司)】
  5.     #    Date: 18 October 2012             【日期:2012年10月18日】
  6.     #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  7.     #  Description:  【说明:】
  8.     #
  9.     #    This script allows you to use a number of additional special codes in the
  10.     #   message system, which will function similar to the default codes like
  11.     #   \v[n], \c[n], etc. Please see the list of special message codes starting at
  12.     #   line 54 for a full idea of what is added. Basically, it gives you greater
  13.     #   control over the delivery of a message, allows you to make use of font
  14.     #   effects like bolding and italicizing, and allows you to retrieve and
  15.     #   display useful data like the names of weapons and armors.
  16.     #  【此脚本允许您在消息系统中使用许多附加的特殊代码,
  17.     #   这些代码的功能与默认代码(如\v[n]、\c[n]等)类似。
  18.     #   有关所添加内容的详细信息,请参阅从第54行开始的特殊消息代码列表。
  19.     #   基本上,它可以让你更好地控制消息的传递,允许你使用字体,
  20.     #   效果像粗体和斜体,并允许你检索和显示有用的数据,如武器和盔甲的名称。】
  21.     #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  22.     #  ATS Series:
  23.     #
  24.     #    This script is part of the Advanced Text System series of scripts. These
  25.     #   scripts are based off the Advanced Text System for RMVX, but since RMVX Ace
  26.     #   has a much more sensibly designed message system, it is no longer necessary
  27.     #   that it be one large script. For that reason, and responding to feedback on
  28.     #   the ATS, I have split the ATS into multiple different scripts so that you
  29.     #   only need to pick up the components for the features that you want. It is
  30.     #   therefore easier to customize and configure.
  31.     #    【此脚本是高级文本系统脚本系列的一部分。这些脚本针对RMVX的高级文本系统开发的,
  32.     #      但是由于RMVX Ace有一个更合理设计的消息系统,因此不再需要它是一个大脚本。
  33.     #      出于这个原因,为了响应关于ATS的反馈,我将ATS分成多个不同的脚本,
  34.     #      这样您只需要为您想要的特性选择组件。因此,定制和配置更容易。】
  35.     #    To find more scripts in the ATS Series, please visit:
  36.     #   【要在ATS系列中找到更多脚本,请访问:】
  37.     #      [url]http://rmrk.net/index.php/topic[/url],44525.0.html
  38.     #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  39.     #  Instructions:  【说明书】
  40.     #
  41.     #    This script is not difficult to use or configure. There are only ten
  42.     #   configuration options for this script. These are:
  43.     #   【此脚本不难使用或配置。此脚本只有10个配置选项。这些是:】
  44.  
  45.     #      :message_speed               :font_italic
  46.     #      :show_fast_speed             :font_outline
  47.     #      :font_name                   :font_shadow
  48.     #      :font_size                   :font_underline
  49.     #      :font_bold                   :font_highlight
  50.     #
  51.     #   :message_speed allows you to set the default number of frames to wait
  52.     #   between drawing each letter in the message window. :show_fast_speed allows
  53.     #   you to control the amount it speeds up when the player presses enter. You
  54.     #   can gain instructions on setting the default value for both at line 180.
  55.     # 【:message_speed 允许您设置在消息窗口中绘制每个字母之间等待的默认帧数。
  56.     #   :show_fast_speed 允许您按enter键调节的加速量。
  57.     #   您可以在第180行获得有关设置这两个的默认值的说明。】
  58.     #
  59.     #   All of the :font_ settings simply let you set the initial values for the
  60.     #   font when used.
  61.     #   【所有的:字体设置只允许您在使用时设置字体的初始值。】
  62.     #
  63.     #    As with other ATS scripts, you can change the value of these options in
  64.     #   game with the following codes in a script call:
  65.     #   【与其他ATS脚本一样,
  66.     #     您可以在脚本调用中使用如下代码在游戏中更改这些选项的值:】
  67.     #
  68.     #      ats_next(:message_option, x)
  69.     #      ats_all(:message_option, x)
  70.     #
  71.     #   Where :message_option is the symbol you want (:message_speed or
  72.     #   :show_fast_speed) and x is the value you want to change it to. ats_next
  73.     #   will only change it for the very next message, while ats_all will change it
  74.     #   for every message to follow.
  75.     #   【其中:message_option是您想要的符号(:message_speed或:show_fast_speed),
  76.     #     x是要将其更改为的值。ats_next将只为下一条消息更改它,
  77.     #     而ats_all将为接下来的每条消息更改它。】
  78.     #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  79.     #  List of Special Message Codes:  【特殊信息代码列表:】
  80.     #
  81.     #    The default message codes are retained, and this script adds a number of
  82.     #   other desirable features. The following is a complete list of the message
  83.     #   codes at your disposal. Simply insert them into a Display Message command,
  84.     #   Choice Branches, or any other message related system.
  85.     # 【保留了默认的消息代码,并且这个脚本添加了许多其他需要的特性。
  86.     #   以下是您可以使用的消息代码的完整列表。只需将它们插入到显示消息命令中,
  87.     #   选择分支,或任何其他与消息相关的系统。】
  88.     # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  89.     #  Font Effects: 【字体效果】
  90.     #
  91.     # \fn[fontname] - Change the font to fontname. If you put multiple fontnames
  92.     #     separated by commas, then it will take the first one the user has installed
  93.     #     【将字体改为fontname。如果你放了多个字体名用逗号分隔,
  94.     #       那么它将使用用户安装的第一个】
  95.     #
  96.     # \fs[n] - Change the font size to n. 【改变字体大小】
  97.     # \{ - Increase the font size by 8.   【字体大小增加8像素】
  98.     # \} - Decrease the font size by 8.   【字体大小减小8像素】
  99.     #
  100.     # \c[n] - Set the colour of the text being drawn to the nth colour of the
  101.     #     Windowskin palette. 0 is the normal color and 16 is the system color.
  102.     #【将所绘制文本的颜色设置为窗框调色板的第n种颜色。0是正常颜色,16是系统颜色。】
  103.     #
  104.     # \hc[RRGGBB] or \c[#RRGGBB] - Set the colour of the text being drawn to any
  105.     #     colour, using hexadecimal values. You can set each colour (red, green,
  106.     #     blue) to anything from 0-255 (00-FF). You must use hexadecimal values. If
  107.     #     so desired, you can add an additional hex value from 00-FF to change the
  108.     #     alpha.
  109.     #【使用十六进制值将正在绘制的文本的颜色设置为任意颜色。
  110.     #  你可以设置每种颜色(红色,绿色,蓝色)到0-255(00-FF)的任何值。
  111.     #  必须使用十六进制值。如果需要,可以从00-FF中添加额外的十六进制值来更改alpha。】
  112.     #
  113.     # \bn     - Turn bold on. Text drawn after this code will be bolded.
  114.     # /bf     - Turn bold off.【字体加粗/字体取消加粗】
  115.  
  116.     # \i     - Turn italic on. Text drawn after this code will be italicized.
  117.     # /i     - Turn italic off.【字体斜体/字体取消斜体】
  118.  
  119.     # \o     - Turn outline on.
  120.     # /o     - Turn outline off. 【字体外轮廓/字体取消外轮廓】
  121.  
  122.     # \s     - Turn shadow on. Text drawn after this code will have a shadow.
  123.     # /s     - Turn shadow off.  【字体阴影/字体取消阴影】
  124.  
  125.     # \u     - Turn underline on. Text drawn after this code will be underlined.
  126.     # /u     - Turn underline off. 【字体加下划线/字体取消下划线/】
  127.  
  128.     # \hl[n] - Turn highlight on. Text drawn after this code will be highlighted
  129.     #     with colour n + 1 from the windowskin palette
  130.     # 【启用“高光”。在此代码之后绘制的文本将以WindowsSkin调色板中的n+1颜色突出显示】
  131.     # /hl OR \hl[0] - Turn highlight off. 【字体取消高光】
  132.     # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  133.     #  Message Control:  【消息控制:】
  134.     #
  135.     # \s[n] - Sets the message speed to wait n frames between drawing every letter.
  136.     #     0 is instant.
  137.     #        【将消息速度设置为在绘制每个字母之间等待n帧。0是瞬时。】
  138.     # \s[+n] - Sets the message speed to wait an additional n frames between drawing
  139.     #     every letter.
  140.     #         【设置消息速度,以便在绘制每个字母之间增加等待n帧。】
  141.     # \s[-n] - Sets the message speed to wait n less frames between drawing every
  142.     #     letter.
  143.     #         【将消息速度设置为在绘制每个字母之间减少等待n帧。】
  144.     # \. - Wait 15 frames before drawing the next character
  145.     #          【等15帧后再画下一个字符】
  146.     # \| - Wait 60 frames before drawing the next character
  147.     #          【等60帧后再画下一个字符】
  148.     # \w[n] - Wait n frames before drawing the next character
  149.     #          【在绘制下一个字符之前等待n帧】
  150.     # \! - Pause text and wait for player to press Enter
  151.     #           【暂停文本等待 按Enter键才取消 】
  152.     # \^ - Skip Pause; allows you to close a message window without requiring player
  153.     #     input.
  154.     #           【跳过暂停;允许关闭信息窗口而不需要玩家另行输入指令。】
  155.     # \> - Show line fast.          【显示行快进】
  156.     # \< - Stop showing line fast.  【取消行快进】
  157.     # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  158.     #  Replacement Codes: 【替换代码】
  159.     #
  160.     # \p[n] - Draw the name of the actor in the xth position in the party. 1 is
  161.     #     the party leader, 2 is the second member, etc.
  162.     #    【画出在 第X个位置 的角色的名字。1是队伍领导,2是第二队员,以此类推。】
  163.     #
  164.     # \n[n] - Draw the name of the actor with ID n 【画出ID为 n 的的名字】
  165.     # \nn[n] - Draw the nickname of the actor with ID n. 【画出ID为n的角色的名字】
  166.     # \pid[n] - Draw the ID of the actor in the nth position in the party.
  167.     #           【画出队员第 n 位角的基础位置】
  168.     # \ac[n] - Draw the class name of the actor with ID n.【画出ID为 n 的的职业名称】
  169.     # \al[n] - Draw the level of the actor with ID n. 【画出ID为 n 的等级】
  170.     # \ni[n] - Draw the name of the item with ID n.   【画出ID为 n 的物品名称】
  171.     # \nw[n] - Draw the name of the weapon with ID n. 【画出ID为 n 的武器名称】
  172.     # \na[n] - Draw the name of the armor with ID n.  【画出ID为 n 的护具名称】
  173.     # \ns[n] - Draw the name of the skill with ID n.  【画出ID为 n 的特技名称】
  174.     # \nt[n] - Draw the name of the state with ID n.  【画出ID为 n 的状态名称】
  175.     # \nc[n] - Draw the name of the class with ID n.  【画出ID为 n 的职业名称】
  176.     # \ne[n] - Draw the name of the event with ID n on the current map.
  177.     #          【画出ID为 n 的事件名称】
  178.     # \nm[n] - Draw the name of the enemy with ID n. 【画出ID为 n 的敌人名称】
  179.     # \nv[n] - Draw the name of the variable with ID n.【画出ID为 n 的变数名称】
  180.     # \nsw[n] - Draw the name of the switch with ID n.【画出ID为 n 的开关名称】
  181.     # \nl[n] - Draw the name of the element with ID n. 【画出ID为 n 的属性名称】
  182.     # \nwt[n] - Draw the name of the weapon type with ID n.【画出ID为 n 的武器类别名称】
  183.     # \nat[n] - Draw the name of the armor type with ID n. 【画出ID为 n 的护甲类别名称】
  184.     # \nst[n] - Draw the name of the skill type with ID n. 【画出ID为 n 的特技类别名称】
  185.     # \np[n] - Draw the name of the actor in the nth position in the part  .
  186.     #          【描写出队伍中第 n 个角色名称】
  187.     #
  188.     # \map   - Draw the name of the map the player is currently on.
  189.     #          【绘制玩家行动体当前所在地图的名称】
  190.     #
  191.     # \map[n] - Draw the name of the map with ID n.
  192.     #           【绘制ID为n的地图的名称】
  193.     #
  194.     # \pg - Draws the amount of money the party has.【绘写队伍现有的金额】
  195.     # \g - Draws the unit of currency. 【绘制货币单位】
  196.     #
  197.     # \vocab[method] - Will draw whatever Vocab.method returns, if it is a valid
  198.     #     method call. Suitable values for method are: level, level_a, hp, hp_a,
  199.     #     mp, mp_a, tp, tp_a, fight, escape, attack, guard, item, skill, equip,
  200.     #     status, formation, save, game_end, weapon, armor, key_item, equip2,
  201.     #     optimize, clear, new_game, continue, shutdown, to_title, cancel,
  202.     #     currency_unit
  203.     # 【会画出任何东西声乐方法如果是有效的方法调用,则返回。方法的合适值是:
  204.     #   等级,等级_a,hp,hp,mp,mp_a,tp,tp_a,战斗,逃跑,攻击,守卫,
  205.     #   物品,技能,装备,状态,队形,保存,游戏结束,武器,盔甲,钥匙项,
  206.     #   装备2,优化,清除,新游戏,继续,关闭,到游戏标题,取消,货币单位】
  207.     # \vocab[param, n] - Will draw the label for parameter with ID n.
  208.     #                  【将 ID为n的参数 绘制标签。】
  209.     #     0 => Max HP;
  210.     #     1 => Max MP; 2 => Attack; 3 => Defence; 4 => Magic; 5 => Magic Defence;
  211.     #     6 => Agility; 7 => Luck
  212.     #
  213.     # \vocab[etype, n] - Will draw the label for equipment type with ID n.
  214.     #                   【将 ID为n 的设备类型 绘制标签。】
  215.     #     0 => Weapon; 1 => Shield; 2 => Head; 3 => Body; 4 => Accessory
  216.     # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  217.     #  Other Effects: 【其它效果】
  218.     #
  219.     # \$ - Opens a window which shows the party's gold.
  220.     #     【打开了一个显示队伍所持金的窗口。】
  221.     # \lb - line break  【换行符】
  222.     # \i[n] - Draw icon with index n.              【用索引n 绘制小图标。】
  223.     # \ii[n] - Draw icon of the item with ID n.    【绘制 物品ID为n 的 小图标。】
  224.     # \iw[n] - Draw icon of the weapon with ID n.  【绘制 武器ID为n 的 小图标。】
  225.     # \ia[n] - Draw icon of the armor with ID n.   【绘制 护具ID为n 的 小图标。】
  226.     # \is[n] - Draw icon of the skill with ID n.   【绘制 特技ID为n 的 小图标。】
  227.     # \it[n] - Draw icon of the state with ID n.   【绘制 状态ID为n 的 小图标。】
  228.     # \x[n] - Draw next character at pixel n of the window contents.
  229.     # \s{n,text} - Will only draw text if the switch with ID n is ON.
  230.     #              【只在ID为n的开关 打开时 才绘制文本。】
  231.     # \s!{n,text} - Will only draw text if the switch with ID n is OFF.
  232.     #              【仅在ID为n的开关 关闭时 才绘制文本。】
  233.     # \#{code} - This will evaluate code. So, if you know scipting, you can place
  234.     #     any code there and it will draw whatever is returned by it. For instance:
  235.     #             【这将计算代码。所以,如果你知道sciping,
  236.     #               你可以把任何代码放在那里,它会画出它返回的任何东西。例如:】
  237.     #     \#{$game_system.save_count}
  238.     #       would draw the number of times the player has saved the current game.
  239.     #     【将绘制玩家保存当前游戏的次数。】
  240.     #==============================================================================
  241.  
  242.     $imported = {} unless $imported
  243.     $imported[:ATS_SpecialMessageCodes] = true
  244.  
  245.     #==============================================================================
  246.     # ** Game_ATS
  247.     #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  248.     #  Summary of Changes:
  249.     #    new public instance variables - message_speed; special_message_codes
  250.     #==============================================================================
  251.  
  252.     class Game_ATS
  253.       CONFIG = {} unless $imported[:AdvancedTextSystem]
  254.       CONFIG[:special_message_codes] = {
  255.         special_message_codes: true,
  256.         #\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
  257.         #  EDITABLE REGION  【可编辑区域】
  258.         #||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  259.         #   :message_speed => x,
  260.         #      Changing the value of x determines the default number of frames to
  261.         #     wait between drawing letters in a message window. 0 is instant.
  262.         #  【更改x的值将确定在消息窗口中绘制字母之间等待的默认帧数。0是即时的。】
  263.         :message_speed =>   1,
  264.         #   :show_fast_speed => x
  265.         #      Changing the value of x determines the number of frames to wait
  266.         #     between drawing letters when the player is holding enter. 0 is
  267.         #     instant
  268.         #【改变x的值决定了当玩家按住enter键时,在绘制字母之间等待的帧数。0是即时的】
  269.           :show_fast_speed => 0,
  270.         # Font Settings - Set the default settings for the font you are using here.
  271.         # 【    字体设置 - 设置您在这里使用的字体的默认设置。】
  272.         :font_name => Font.default_name,       # String or Array of Strings
  273.         :font_size => Font.default_size,       # Integer
  274.         :font_bold => Font.default_bold,       # true or false
  275.         :font_italic => Font.default_italic,   # true or false
  276.         :font_outline => Font.default_outline, # true or false
  277.         :font_shadow => Font.default_shadow,   # true or false
  278.         :font_underline => false,              # true or false
  279.         :font_highlight => -1,                 # Integer for colour of highlight
  280.         #||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  281.         #  END EDITABLE REGION  【结束可编辑区域】
  282.         #////////////////////////////////////////////////////////////////////////
  283.       }
  284.       #--------------------------------------------------------------------------
  285.       # * Public Instance Variables  【公共实例变量】
  286.       #--------------------------------------------------------------------------
  287.       CONFIG[:special_message_codes].keys.each { |key| attr_accessor key }
  288.     end
  289.  
  290.     #==============================================================================
  291.     #  Initialize Common ATS Data if no other ATS script interpreted first
  292.     #  如果未首先解译其他ATS脚本,则初始化公共ATS数据
  293.     #==============================================================================
  294.  
  295.     if !$imported[:AdvancedTextSystem]
  296.       #============================================================================
  297.       # *** DataManager  【数据库控制模块】
  298.       #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  299.       #  Summary of Changes:   【变更摘要:】
  300.       #    aliased method -
  301.       #       create_game_objects;
  302.       #       make_save_contents;
  303.       #       extract_save_contents
  304.       #============================================================================
  305.       module DataManager
  306.         class << self
  307.           #--------------------------------------------------------------------------
  308.           # * Create Game Objects
  309.           #--------------------------------------------------------------------------
  310.           alias modb_ats_crtgmobj_6yh7 create_game_objects
  311.           def create_game_objects(*args, &block)
  312.             modb_ats_crtgmobj_6yh7(*args, &block)
  313.             $game_ats = Game_ATS.new
  314.             $game_ats.init_new_installs
  315.           end
  316.           #--------------------------------------------------------------------------
  317.           # * Make Save Contents
  318.           #--------------------------------------------------------------------------
  319.           alias mlba_ats_mksave_5tg9 make_save_contents
  320.           def make_save_contents(*args, &block)
  321.             contents = mlba_ats_mksave_5tg9(*args, &block)
  322.             contents[:ats] = $game_ats
  323.             contents
  324.           end
  325.           #--------------------------------------------------------------------------
  326.           # * Extract Save Contents
  327.           #--------------------------------------------------------------------------
  328.           alias ma_ats_extrcsvcon_8uj2 extract_save_contents
  329.           def extract_save_contents(contents, *args, &block)
  330.             ma_ats_extrcsvcon_8uj2(contents, *args, &block)
  331.             $game_ats = contents[:ats] ? contents[:ats] : Game_ATS.new
  332.             $game_ats.init_new_installs
  333.           end
  334.         end
  335.       end
  336.  
  337.       #============================================================================
  338.       # ** Game_ATS
  339.       #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  340.       #  This class holds the default data for all scripts in the ATS series
  341.       #  【这个类保存ATS系列中所有脚本的默认数据】
  342.       #============================================================================
  343.  
  344.       class Game_ATS
  345.         def initialize; reset; end
  346.         #--------------------------------------------------------------------------
  347.         # * Reset any or all installed ATS scripts 【重置任何或所有已安装的ATS脚本】
  348.         #--------------------------------------------------------------------------
  349.         def reset(script_name = nil)
  350.           if script_name.is_a? (Symbol) # If script to reset specified
  351.             CONFIG[script_name].each_pair { |key, value|
  352.               self.send("#{key}=".to_sym, value)
  353.               $game_message.send("#{key}=".to_sym, value)
  354.             }
  355.           else                          # Reset all ATS scripts
  356.             CONFIG.keys.each { |script| reset(script) }
  357.           end
  358.         end
  359.         #--------------------------------------------------------------------------
  360.         # * Initialize any newly installed ATS scripts 【初始化任何新安装的ATS脚本】
  361.         #--------------------------------------------------------------------------
  362.         def init_new_installs
  363.           CONFIG.keys.each { |script| reset(script) unless self.send(script) }
  364.         end
  365.       end
  366.  
  367.       #============================================================================
  368.       # ** Game_Message
  369.       #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  370.       #  Summary of Changes: 【变更摘要:】
  371.       #    aliased method - clear
  372.       #============================================================================
  373.  
  374.       class Game_Message
  375.         #--------------------------------------------------------------------------
  376.         # * Clear
  377.         #--------------------------------------------------------------------------
  378.         alias mlb_ats_clrats_5tv1 clear
  379.         def clear(*args, &block)
  380.           mlb_ats_clrats_5tv1(*args, &block) # Run Original Method
  381.           return if !$game_ats
  382.           Game_ATS::CONFIG.values.each { |installed|
  383.             installed.keys.each { |key| self.send("#{key}=".to_sym, $game_ats.send(key)) }
  384.           }
  385.         end
  386.       end
  387.  
  388.       #============================================================================
  389.       # ** Game_Interpreter
  390.       #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  391.       #  Summary of Changes: 【变更摘要:】
  392.       #    new methods - ats_all; ats_next
  393.       #============================================================================
  394.  
  395.       class Game_Interpreter
  396.         #--------------------------------------------------------------------------
  397.         # * ATS All
  398.         #--------------------------------------------------------------------------
  399.         def ats_all(sym, *args, &block)
  400.           $game_ats.send("#{sym}=".to_sym, *args, &block)
  401.           ats_next(sym, *args, &block)
  402.         end
  403.         #--------------------------------------------------------------------------
  404.         # * ATS Next
  405.         #--------------------------------------------------------------------------
  406.         def ats_next(sym, *args, &block)
  407.           $game_message.send("#{sym}=".to_sym, *args, &block)
  408.         end
  409.       end
  410.     end
  411.  
  412.     $imported[:AdvancedTextSystem] = true
  413.  
  414.     class Game_Message
  415.       Game_ATS::CONFIG[:special_message_codes].keys.each { |key| attr_accessor key }
  416.     end
  417.  
  418.     #==============================================================================
  419.     # ** Game_Event
  420.     #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  421.     #  Summary of Changes: 【变更摘要:】
  422.     #    new method - name
  423.     #==============================================================================
  424.  
  425.     class Game_Event
  426.       def name
  427.         return @event ? @event.name : ""
  428.       end
  429.     end
  430.  
  431.     #==============================================================================
  432.     # ** Window_Base
  433.     #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  434.     #  Summary of Changes: 【变更摘要:】
  435.     #    aliased methods -
  436.     #       initialize;
  437.     #       convert_escape_characters;
  438.     #       calc_line_height;
  439.     #       process_escape_character;
  440.     #       process_normal_character
  441.     #==============================================================================
  442.  
  443.     class Window_Base
  444.       #--------------------------------------------------------------------------
  445.       # * Object Initialization 【对象初始化】
  446.       #--------------------------------------------------------------------------
  447.       alias mlgb_atssmc_init_3do9 initialize
  448.       def initialize(*args, &block)
  449.         mlgb_atssmc_init_3do9(*args, &block) # Run Original Method 【运行原始方法】
  450.         @underline = false
  451.         @highlight = -1
  452.       end
  453.       #--------------------------------------------------------------------------
  454.       # * Convert Escape Characters 【转换转义字符】
  455.       #--------------------------------------------------------------------------
  456.       alias ma_atssmc_convesc_4rc1 convert_escape_characters
  457.       def convert_escape_characters(text, *args, &block)
  458.         result = ma_atssmc_convesc_4rc1(text, *args, &block) # Run Original Method 【运行原始方法】
  459.         # Party
  460.         result.gsub!(/\ePID\[(\d+)\]/i) { $1.to_i >= 1 ? $game_party.members[$1.to_i - 1].id.to_s : "1" }
  461.         result.gsub!(/\ePG/i) { $game_party.gold }
  462.         # Message Speed
  463.         result.gsub!(/\eS\[([\+-]?\d+)\]/i) { "\eMS\[#{$1}\]" }
  464.         result.gsub!(/\e%/)             { "\eDS%"}
  465.         # Hex Colour
  466.         result.gsub!(/\eC\[#/i)         { "\eHC[" }
  467.         # Icons
  468.         result.gsub!(/\eII\[(\d+)\]/i)  { "\eI\[#{$data_items[$1.to_i].icon_index}\]" rescue "" }
  469.         result.gsub!(/\eIW\[(\d+)\]/i)  { "\eI\[#{$data_weapons[$1.to_i].icon_index}\]" rescue "" }
  470.         result.gsub!(/\eIA\[(\d+)\]/i)  { "\eI\[#{$data_armors[$1.to_i].icon_index}\]" rescue "" }
  471.         result.gsub!(/\eIS\[(\d+)\]/i)  { "\eI\[#{$data_skills[$1.to_i].icon_index}\]" rescue "" }
  472.         result.gsub!(/\eIT\[(\d+)\]/i)  { "\eI\[#{$data_states[$1.to_i].icon_index}\]" rescue "" }
  473.         # Actor Stats
  474.         result.gsub!(/\eAC\[(\d+)\]/i)  { $data_classes[$game_actors[$1.to_i].class_id].name }
  475.         result.gsub!(/\eAL\[(\d+)\]/i)  { $game_actors[$1.to_i].level.to_s }
  476.         # Names
  477.         result.gsub!(/\eMAP\[(\d+)\]/i) { load_data(sprintf("Data/Map%03d.rvdata2", $1.to_i)).display_name rescue "" }
  478.         result.gsub!(/\eMAP/i)          { $game_map.display_name rescue "" }
  479.         result.gsub!(/\eNP\[(\d+)\]/i)  { $game_party.members[$1.to_i].name rescue "" }
  480.         result.gsub!(/\eNE\[(\d+)\]/i)  { $game_map.events[$1.to_i].name rescue "" }
  481.         result.gsub!(/\eNN\[(\d+)\]/i)  { $game_actors[$1.to_i].nickname rescue "" }
  482.         result.gsub!(/\eNI\[(\d+)\]/i)  { $data_items[$1.to_i].name rescue "" }
  483.         result.gsub!(/\eNW\[(\d+)\]/i)  { $data_weapons[$1.to_i].name rescue "" }
  484.         result.gsub!(/\eNA\[(\d+)\]/i)  { $data_armors[$1.to_i].name rescue "" }
  485.         result.gsub!(/\eNS\[(\d+)\]/i)  { $data_skills[$1.to_i].name rescue "" }
  486.         result.gsub!(/\eNT\[(\d+)\]/i)  { $data_states[$1.to_i].name rescue "" }
  487.         result.gsub!(/\eNM\[(\d+)\]/i)  { $data_enemies[$1.to_i].name rescue "" }
  488.         result.gsub!(/\eNC\[(\d+)\]/i)  { $data_classes[$1.to_i].name rescue "" }
  489.         result.gsub!(/\eNV\[(\d+)\]/i)  { $data_system.variables[$1.to_i] }
  490.         result.gsub!(/\eNSW\[(\d+)\]/i) { $data_system.switches[$1.to_i] }
  491.         result.gsub!(/\eNWT\[(\d+)\]/i) { $data_system.weapon_types[$1.to_i] }
  492.         result.gsub!(/\eNAT\[(\d+)\]/i) { $data_system.armor_types[$1.to_i] }
  493.         result.gsub!(/\eNST\[(\d+)\]/i) { $data_system.skill_types[$1.to_i] }
  494.         result.gsub!(/\eNL\[(\d+)\]/i)  { $data_system.elements[$1.to_i] }
  495.         # Vocab
  496.         result.gsub!(/\eVOCAB\[(\w+),\s*(\d+)\s*\]/i) { Vocab.send($1.downcase, $2.to_i) rescue "" }
  497.         result.gsub!(/\eVOCAB\[(\w+)\]/i) { Vocab.send($1.downcase) rescue "" }
  498.         # Font Settings
  499.         result.gsub!(/\eBN/i)            { "\eFE[0]" } # Bold On
  500.         result.gsub!(/\/BF/i)            { "\eFE[1]" } # Bold Off
  501.         result.gsub!(/\eI([^\[])/i)     { "\eFE[2]#{$1}" } # Italics On
  502.         result.gsub!(/\/I/i)            { "\eFE[3]" } # Italics Off
  503.         result.gsub!(/\eO/i)            { "\eFE[4]" } # Outline On
  504.         result.gsub!(/\/O/i)            { "\eFE[5]" } # Outline Off
  505.         result.gsub!(/\eS([^\[!])/i)    { "\eFE[6]#{$1}" } # Shadow On
  506.         result.gsub!(/\/S/i)            { "\eFE[7]" } # Shadow Off
  507.         result.gsub!(/\eU/i)            { "\eFE[8]" } # Underline On
  508.         result.gsub!(/\/U/i)            { "\e\FE[9]" } # Underline Off
  509.         result.gsub!(/\eHL\[(\d+)\]/i)  { "\eHL[#{$1.to_i}]" } # Highlight On: custom colour
  510.         result.gsub!(/\eHL([^\[])/i)    { "\eHL[17]#{$1}" }# Highlight On: system colour
  511.         result.gsub!(/\/HL/i)           { "\eHL[0]" } # Hightlight Off
  512.         result.gsub!(/\/FN/i)           { "\eFN[]" }  # Default Font
  513.         result.gsub!(/\/FS/i)           { "\eFS[#{Font.default_size}]" } # Default Font
  514.         # Conditional Text
  515.         result.gsub!(/\eS\[(\d+)[,;:](.+?)\]/mi) { $game_switches[$1.to_i] ? $2 : "" }
  516.         result.gsub!(/\eS!\[(\d+)[,;:](.+?)\]/mi) { $game_switches[$1.to_i] ? "" : $2 }
  517.         result.gsub!(/\eS\{(\d+)[,;:](.+?)\}/mi) { $game_switches[$1.to_i] ? $2 : "" }
  518.         result.gsub!(/\eS!\{(\d+)[,;:](.+?)\}/mi) { $game_switches[$1.to_i] ? "" : $2 }
  519.         # Evaluation
  520.         result.gsub!(/\e#\{(.+?)\}/im)  { (eval($1)).to_s rescue "" }
  521.         # Do resubstitutions if requested 【如有要求,进行更换】
  522.         if result.sub!(/\eRESUB/i, "") != nil
  523.           result = convert_escape_characters(result, *args, &block)
  524.         end
  525.         result.gsub!(/\eLB/i, "\n") # Line Break 【换行】
  526.         result # Return result
  527.       end
  528.       #--------------------------------------------------------------------------
  529.       # * Calculate Line Height 【计算线条高度】
  530.       #--------------------------------------------------------------------------
  531.       alias ma_atssmc_clclnhght_3ek9 calc_line_height
  532.       def calc_line_height(text, *args, &block)
  533.         res = ma_atssmc_clclnhght_3ek9(text, *args, &block) # Run Original Method
  534.         text.slice(/^.*$/).scan(/\eFS\[(\d+)\]/i) { |num| res = [res, num[0].to_i].max }
  535.         res
  536.       end
  537.       #--------------------------------------------------------------------------
  538.       # * Process Normal Character 【处理正常字符】
  539.       #--------------------------------------------------------------------------
  540.       alias mlra_atssmc_procnorm_5fg2 process_normal_character
  541.       def process_normal_character(c, pos, *args, &block)
  542.         draw_highlight_underline(c, pos) if @underline || @highlight
  543.         mlra_atssmc_procnorm_5fg2(c, pos, *args, &block) # Run Original Method
  544.       end
  545.       #--------------------------------------------------------------------------
  546.       # * Process Escape Character 【处理转义字符】
  547.       #--------------------------------------------------------------------------
  548.       alias ma_atssmc_procesc_7gv1 process_escape_character
  549.       def process_escape_character(code, text, pos, *args, &block)
  550.         case code.upcase
  551.         when 'X' then pos[:x] = obtain_escape_param(text)
  552.         when 'HC' # Hex Colour
  553.           hex = text.slice!(/^\[([ABCDEF\d]+)\]/i)
  554.           rgb = $1.scan(/../).map { |hex| hex.to_i(16) }
  555.           change_color(Color.new(*rgb)) if rgb.size.between?(3,4)
  556.         when 'FE' # Font Settings
  557.           param = obtain_escape_param(text)
  558.           case param / 2
  559.           when 0 then contents.font.bold = ((param % 2) == 0)     # Bold
  560.           when 1 then contents.font.italic = ((param % 2) == 0)   # Italic
  561.           when 2 then contents.font.outline = ((param % 2) == 0)  # Outline
  562.           when 3 then contents.font.shadow = ((param % 2) == 0)   # Shadow
  563.           when 4 then @underline = ((param % 2) == 0)             # Underline
  564.           end
  565.         when 'HL' then @highlight = obtain_escape_param(text) - 1 # Highlight
  566.         when 'FN' # Font Name
  567.           text.slice!(/^\[(.*?\])/)
  568.           param = $1
  569.           if param.nil? || param == ']'
  570.             contents.font.name = Font.default_name
  571.           else
  572.             ary = []
  573.             while param.slice!(/\s*(.+?)\s*[,;:\]]/) != nil do ary.push($1) end
  574.             contents.font.name = ary
  575.           end
  576.         when 'FS' # Font Size
  577.           text.slice!(/^\[(\d+)\]/)
  578.           contents.font.size = [[$1.to_i, 16].max, 64].min
  579.         else
  580.           ma_atssmc_procesc_7gv1(code, text, pos, *args, &block) # Run Original Method
  581.         end
  582.       end
  583.       #--------------------------------------------------------------------------~
  584.       # * Draw Highlighting and Underlining 【绘制突出显示和下划线】
  585.       #--------------------------------------------------------------------------~
  586.       def draw_highlight_underline(c, pos)
  587.         text_width = text_size(c).width
  588.         y_space = (pos[:height] - contents.font.size) / 2
  589.         if @underline      # Underlining 【下划线】
  590.           y = pos[:y] + pos[:height]
  591.           y -= [2, y_space].max
  592.           contents.fill_rect(pos[:x], y, text_width, 2, contents.font.color)
  593.         end
  594.         if @highlight >= 0 # Highlighting 【突出显示】
  595.           y = pos[:y]
  596.           y += y_space - 1 if y_space > 0
  597.           text_height = [contents.font.size + 2, pos[:height]].min
  598.           colour = text_color(@highlight)
  599.           colour.alpha = 128 if colour.alpha > 128
  600.           contents.fill_rect(pos[:x], y, text_width, text_height, colour)
  601.         end
  602.       end
  603.     end
  604.  
  605.     #===============================================================================
  606.     # ** Window_Message
  607.     #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  608.     #  Summary of Changes: 【变更摘要:】
  609.     #    aliased method -
  610.     #        clear_instance_variables;
  611.     #        process_escape_character;
  612.     #        update_show_fast;
  613.     #        wait_for_one_character
  614.     #    overwritten super method - reset_font_settings
  615.     #===============================================================================
  616.  
  617.     class Window_Message
  618.       #--------------------------------------------------------------------------~
  619.       # * Clear Instance Variables 【清除实例变量】
  620.       #--------------------------------------------------------------------------~
  621.       alias ma_atssmc_clrinsvar_3dq9 clear_instance_variables
  622.       def clear_instance_variables(*args, &block)
  623.         ma_atssmc_clrinsvar_3dq9(*args, &block) # Run Original Method
  624.         @skip_disabled = false
  625.       end
  626.       #--------------------------------------------------------------------------~
  627.       # * Reset Font Settings  【重置字体设置】
  628.       #--------------------------------------------------------------------------~
  629.       def reset_font_settings(*args, &block)
  630.         change_color(normal_color)
  631.         contents.font.name = $game_message.font_name
  632.         contents.font.size = $game_message.font_size
  633.         contents.font.bold = $game_message.font_bold
  634.         contents.font.italic = $game_message.font_italic
  635.         contents.font.outline = $game_message.font_outline
  636.         contents.font.shadow = $game_message.font_shadow
  637.         @underline = $game_message.font_underline
  638.         @highlight = $game_message.font_highlight
  639.       end
  640.       #--------------------------------------------------------------------------~
  641.       # * Process Escape Character  【处理转义字符】
  642.       #--------------------------------------------------------------------------~
  643.       alias mnaa_atssmc_escchar_3dr9 process_escape_character
  644.       def process_escape_character(code, text, pos, *args, &block)
  645.         case code.upcase
  646.         when 'MS' # Set Message Speed
  647.           if !text[/^\[([+-])/].nil?
  648.             text.sub!(/^\[([\+-])/, '[' )
  649.             sign = $1
  650.           else
  651.             sign = ""
  652.           end
  653.           param = obtain_escape_param(text)
  654.           sign.empty? ? $game_message.message_speed = param : $game_message.message_speed += "#{sign}#{param}".to_i
  655.           when 'DS'
  656.             text.slice!(/^%/) # Delete buffer to ensure code isn't overextended
  657.             @skip_disabled = !@skip_disabled
  658.           when 'W' then wait(obtain_escape_param(text))
  659.         else
  660.           mnaa_atssmc_escchar_3dr9(code, text, pos, *args, &block) # Run Original Method
  661.         end
  662.       end
  663.       #--------------------------------------------------------------------------~
  664.       # * Update Show Fast  【快速更新显示】
  665.       #--------------------------------------------------------------------------~
  666.       alias mlg_atssmc_updshwfast_7yb1 update_show_fast
  667.       def update_show_fast(*args, &block)
  668.         mlg_atssmc_updshwfast_7yb1(*args, &block)
  669.         if $game_message.message_speed < 1
  670.           @show_fast = true
  671.         elsif @skip_disabled
  672.           @show_fast = false
  673.         elsif $game_message.show_fast_speed > 0
  674.           @show_fast = Input.press?(:C)
  675.         end
  676.       end
  677.       #--------------------------------------------------------------------------~
  678.       # * Wait for One Character  【等待一个字符】
  679.       #--------------------------------------------------------------------------~
  680.       alias mdrnl_smcats_waitonechar_5rf1 wait_for_one_character
  681.       def wait_for_one_character(*args, &block)
  682.         mdrnl_smcats_waitonechar_5rf1(*args, &block) # Run Original Method
  683.         if (@show_fast || @line_show_fast) && $game_message.show_fast_speed > 0
  684.           wait($game_message.show_fast_speed)
  685.         elsif $game_message.message_speed > 1
  686.           wait($game_message.message_speed - 1)
  687.         end
  688.       end
  689.     end
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-11-16 02:51

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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