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

Project1

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

[已经过期] TAROXD的脚本前置插件的问题

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

跳转到指定楼层
1
发表于 2014-10-7 11:17:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
RUBY 代码复制
  1. module Taroxd
  2.   #--------------------------------------------------------------------------
  3.   # ● 游戏常数设置区域(如果要用默认值,请改为 false)
  4.   #--------------------------------------------------------------------------
  5.   MAX_TP = 100                    # TP的最大值
  6.   BASIC_FLOOR_DAMAGE = 10         # 地形伤害的基础值
  7.   ATTACK_SKILL_ID = 1             # 默认攻击技能ID
  8.   GUARD_SKILL_ID = 2              # 默认防御技能ID
  9.   DEATH_STATE_ID = 1              # 默认死亡状态ID
  10.   PARAM_LIMIT = 999999            # 能力值的最大值
  11.   MAX_BATTLE_MEMBERS = 4          # 出战角色最大值
  12.   CRITICAL_RATE = 3               # 关键一击伤害倍率
  13.   DAMAGE_CHARGE_TP_RATE = 50      # 受到伤害时 TP 补充率
  14.   LUK_EFFECT_RATE = 0.001         # 幸运值影响程度
  15.   SUBSTITUTE_HP_RATE = 0.25       # HP 比率达到多少以下会触发保护弱者
  16.   STEPS_FOR_RUN = 20              # 地图上多少步等于一回合
  17.   SAVEFILE_MAX = 16               # 存档文件的最大个数
  18.   MAX_GOLD = 99999999             # 持有金钱的最大值
  19.   ESCAPE_RATIO_UP = 0.1           # 撤退失败后,撤退成功率提升值
  20.   BUSH_DEPTH = 8                  # 流体地形的深度
  21.   BUSH_OPACITY = 128              # 流体地形的不透明度
  22.   font_default_name = '字体名称'  # 默认字体名称
  23.   font_default_size = 24          # 默认字体大小
  24.   #--------------------------------------------------------------------------
  25.   # ● 检查并设置默认字体
  26.   #--------------------------------------------------------------------------
  27.   font_exist = [*font_default_name].any? {|n| Font.exist?(n) }
  28.   Font.default_name = font_default_name if font_exist
  29.   Font.default_size = font_default_size if font_default_size
  30. end
  31.  
  32. module Taroxd::Def
  33.   #------------------------------------------------------------------------
  34.   # ● 导入
  35.   #------------------------------------------------------------------------
  36.   Module.send :include, self
  37.   #------------------------------------------------------------------------
  38.   # ● 获取方法的访问限制
  39.   #------------------------------------------------------------------------
  40.   def get_access_control(sym)
  41.     return :public    if public_method_defined?    sym
  42.     return :protected if protected_method_defined? sym
  43.     return :private   if private_method_defined?   sym
  44.     nil
  45.   end
  46.   #------------------------------------------------------------------------
  47.   # ● 私有方法
  48.   #------------------------------------------------------------------------
  49.   private
  50.   #------------------------------------------------------------------------
  51.   # ● 在原方法之后添加内容
  52.   #------------------------------------------------------------------------
  53.   def def_after(sym, hook = nil, &b)
  54.     _def_base(sym) do |old|
  55.       if b
  56.         define_method sym, &b
  57.         hook = instance_method sym
  58.       end
  59.       if hook.respond_to? :to_sym
  60.         hook = hook.to_sym
  61.         define_method sym do |*args, &block|
  62.           old_value = old.bind(self).(*args, &block)
  63.           __send__ hook, *args, &block
  64.           old_value
  65.         end
  66.       elsif hook.respond_to? :call
  67.         define_method sym do |*args, &block|
  68.           old_value = old.bind(self).(*args, &block)
  69.           hook.(*args, &block)
  70.           old_value
  71.         end
  72.       elsif hook.respond_to? :bind
  73.         define_method sym do |*args, &block|
  74.           old_value = old.bind(self).(*args, &block)
  75.           hook.bind(self).(*args, &block)
  76.           old_value
  77.         end
  78.       end
  79.     end
  80.   end
  81.   #------------------------------------------------------------------------
  82.   # ● 在原方法之前添加内容
  83.   #------------------------------------------------------------------------
  84.   def def_before(sym, hook = nil, &b)
  85.     _def_base(sym) do |old|
  86.       if b
  87.         define_method sym, &b
  88.         hook = instance_method sym
  89.       end
  90.       if hook.respond_to? :to_sym
  91.         hook = hook.to_sym
  92.         define_method sym do |*args, &block|
  93.           __send__ hook, *args, &block
  94.           old.bind(self).(*args, &block)
  95.         end
  96.       elsif hook.respond_to? :call
  97.         define_method sym do |*args, &block|
  98.           hook.(*args, &block)
  99.           old.bind(self).(*args, &block)
  100.         end
  101.       elsif hook.respond_to? :bind
  102.         define_method sym do |*args, &block|
  103.           hook.bind(self).(*args, &block)
  104.           old.bind(self).(*args, &block)
  105.         end
  106.       end
  107.     end
  108.   end
  109.   #------------------------------------------------------------------------
  110.   # ● 利用原方法的返回值重定义方法
  111.   #------------------------------------------------------------------------
  112.   def def_with(sym, &b)
  113.     _def_base(sym) do |old|
  114.       define_method sym, &b
  115.       new_meth = instance_method sym
  116.       define_method sym do |*args, &block|
  117.         old_value = old.bind(self).(*args, &block)
  118.         new_meth.bind(self).(old_value, *args, &block)
  119.       end
  120.     end
  121.   end
  122.   #------------------------------------------------------------------------
  123.   # ● 利用原方法重定义方法
  124.   #------------------------------------------------------------------------
  125.   def def_chain(sym, &b)
  126.     _def_base(sym) do |old|
  127.       define_method sym, &b
  128.       new_meth = instance_method sym
  129.       define_method sym do |*args, &block|
  130.         new_meth.bind(self).(old.bind(self), *args, &block)
  131.       end
  132.     end
  133.   end
  134.   #------------------------------------------------------------------------
  135.   # ● 获取旧方法
  136.   #------------------------------------------------------------------------
  137.   def _def_base(sym)
  138.     access = get_access_control sym
  139.     old = instance_method sym
  140.     yield old
  141.     send access, sym
  142.     sym
  143.   end
  144. end
  145.  
  146. module Taroxd::Def::Singleton
  147.   #------------------------------------------------------------------------
  148.   # ● 导入
  149.   #------------------------------------------------------------------------
  150.   Object.send :include, self
  151.   #------------------------------------------------------------------------
  152.   # ● 在原方法之后添加内容
  153.   #------------------------------------------------------------------------
  154.   def singleton_def_after(sym, hook = nil, &b)
  155.     _singleton_def_base(sym) do |old|
  156.       if b
  157.         define_singleton_method sym, &b
  158.         hook = method sym
  159.       end
  160.       if hook.respond_to? :to_sym
  161.         hook = hook.to_sym
  162.         define_singleton_method sym do |*args, &block|
  163.           old_value = old.(*args, &block)
  164.           __send__ hook, *args, &block
  165.           old_value
  166.         end
  167.       elsif hook.respond_to? :call
  168.         define_singleton_method sym do |*args, &block|
  169.           old_value = old.(*args, &block)
  170.           hook.(*args, &block)
  171.           old_value
  172.         end
  173.       elsif hook.respond_to? :bind
  174.         define_singleton_method sym do |*args, &block|
  175.           old_value = old.(*args, &block)
  176.           hook.bind(self).(*args, &block)
  177.           old_value
  178.         end
  179.       end
  180.     end
  181.   end
  182.   #------------------------------------------------------------------------
  183.   # ● 在原方法之前添加内容
  184.   #------------------------------------------------------------------------
  185.   def singleton_def_before(sym, hook = nil, &b)
  186.     _singleton_def_base(sym) do |old|
  187.       if b
  188.         define_singleton_method sym, &b
  189.         hook = method sym
  190.       end
  191.       if hook.respond_to? :to_sym
  192.         hook = hook.to_sym
  193.         define_singleton_method sym do |*args, &block|
  194.           __send__ hook, *args, &block
  195.           old.(*args, &block)
  196.         end
  197.       elsif hook.respond_to? :call
  198.         define_singleton_method sym do |*args, &block|
  199.           hook.(*args, &block)
  200.           old.(*args, &block)
  201.         end
  202.       elsif hook.respond_to? :bind
  203.         define_singleton_method sym do |*args, &block|
  204.           hook.bind(self).(*args, &block)
  205.           old.(*args, &block)
  206.         end
  207.       end
  208.     end
  209.   end
  210.   #------------------------------------------------------------------------
  211.   # ● 利用原方法的返回值重定义方法
  212.   #------------------------------------------------------------------------
  213.   def singleton_def_with(sym, &b)
  214.     _singleton_def_base(sym) do |old|
  215.       define_singleton_method sym, &b
  216.       new_meth = method sym
  217.       define_singleton_method sym do |*args, &block|
  218.         new_meth.(old.(*args, &block), *args, &block)
  219.       end
  220.     end
  221.   end
  222.   #------------------------------------------------------------------------
  223.   # ● 利用原方法重定义方法
  224.   #------------------------------------------------------------------------
  225.   def singleton_def_chain(sym, &b)
  226.     _singleton_def_base(sym) do |old|
  227.       define_singleton_method sym, &b
  228.       new_meth = method sym
  229.       define_singleton_method sym do |*args, &block|
  230.         new_meth.(old, *args, &block)
  231.       end
  232.     end
  233.   end
  234.   #------------------------------------------------------------------------
  235.   # ● 获取旧方法
  236.   #------------------------------------------------------------------------
  237.   def _singleton_def_base(sym)
  238.     access = singleton_class.get_access_control sym
  239.     old = method sym
  240.     yield old
  241.     singleton_class.send access, sym
  242.     sym
  243.   end
  244. end
  245.  
  246. %w(def_after def_before def_with def_chain).each do |name|
  247.   method = Kernel.method(name)
  248.   define_singleton_method(name) {|*a, &b| method.(*a, &b) }
  249. end
  250.  
  251. module Taroxd::Web
  252.   API = Win32API.new('shell32.dll', 'ShellExecuteA', %w(p p p p p i), 'i')
  253.   module_function
  254.   #--------------------------------------------------------------------------
  255.   # ● 打开网页
  256.   #--------------------------------------------------------------------------
  257.   def open(addr)
  258.     API.call(0, 'open', addr, 0, 0, 1)
  259.   end
  260. end
  261.  
  262. module Taroxd::ReadNote
  263.   #------------------------------------------------------------------------
  264.   # ● 导入
  265.   #------------------------------------------------------------------------
  266.   include RPG
  267.   BaseItem.extend        self
  268.   Map.extend             self
  269.   Tileset.extend         self
  270.   Class::Learning.extend self
  271.   #------------------------------------------------------------------------
  272.   # ● 任意备注
  273.   #------------------------------------------------------------------------
  274.   def note_any(name, default, re, capture)
  275.     name = name.to_s
  276.     mark = name.slice!(/[?!]\Z/)
  277.     if method_defined? name
  278.       message = "already defined method `#{name}' for #{self}"
  279.       raise NameError.new(message, name.to_sym)
  280.     end
  281.     re = "/<#{name.gsub(/_/, '\s*')}#{re.source}>/i"
  282.     default = default.inspect
  283.     class_eval %{
  284.       def #{name}
  285.         return @#{name} if instance_variable_defined? :@#{name}
  286.         @#{name} = @note =~ #{re} ? (#{capture}) : (#{default})
  287.       end
  288.     }, __FILE__, __LINE__
  289.     alias_method name + mark, name if mark
  290.   end
  291.   #------------------------------------------------------------------------
  292.   # ● 备注整数
  293.   #------------------------------------------------------------------------
  294.   def note_i(name, default = 0)
  295.     note_any(name, default, /\s*(-?\d+)/, '$1.to_i')
  296.   end
  297.   #------------------------------------------------------------------------
  298.   # ● 备注小数
  299.   #------------------------------------------------------------------------
  300.   def note_f(name, default = 0.0)
  301.     note_any(name, default, /\s*(-?\d+(?:\.\d+)?)/, '$1.to_f')
  302.   end
  303.   #------------------------------------------------------------------------
  304.   # ● 备注字符串
  305.   #------------------------------------------------------------------------
  306.   def note_s(name, default = '')
  307.     note_any(name, default, /\s*(\S.*)/, '$1')
  308.   end
  309.   #------------------------------------------------------------------------
  310.   # ● 备注是否匹配
  311.   #------------------------------------------------------------------------
  312.   def note_bool(name)
  313.     note_any(name, false, //, 'true')
  314.   end
  315. end
  316.  
  317. class Object
  318.   #--------------------------------------------------------------------------
  319.   # ● 输出并返回自身
  320.   #--------------------------------------------------------------------------
  321.   def p_self; p self; end
  322.   #--------------------------------------------------------------------------
  323.   # ● 深度复制
  324.   #--------------------------------------------------------------------------
  325.   def deep_clone; Marshal.load Marshal.dump self; end
  326. end
  327.  
  328. class Fixnum < Integer
  329.   #---------------------------------------------------------------------------
  330.   # ● 获取 id
  331.   #---------------------------------------------------------------------------
  332.   def id; self; end
  333. end
  334.  
  335. module Enumerable
  336.   #---------------------------------------------------------------------------
  337.   # ● 元素之和
  338.   #---------------------------------------------------------------------------
  339.   def sum(base = 0)
  340.     block_given? ? inject(base) {|a, e| a + yield(e) } : inject(base, :+)
  341.   end
  342.   #---------------------------------------------------------------------------
  343.   # ● 元素之积
  344.   #---------------------------------------------------------------------------
  345.   def pdt(base = 1)
  346.     block_given? ? inject(base) {|a, e| a * yield(e) } : inject(base, :*)
  347.   end
  348.   #---------------------------------------------------------------------------
  349.   # ● 元素之平均值(base可取0.0)
  350.   #---------------------------------------------------------------------------
  351.   def average(base = 0, &block)
  352.     sum(base, &block) / [count, 1].max
  353.   end
  354. end
  355.  
  356. #-----------------------------------------------------------------------------
  357. # ● 创建颜色
  358. #-----------------------------------------------------------------------------
  359. def Color(*args)
  360.   case args.size
  361.   when 1, 2 then Color.code(*args)
  362.   when 0, 3, 4 then Color.new(*args)
  363.   end
  364. end
  365.  
  366. Color.define_singleton_method :[], method(:Color)
  367.  
  368. class << Color
  369.   #---------------------------------------------------------------------------
  370.   # ● 通过颜色代码创建颜色
  371.   #---------------------------------------------------------------------------
  372.   def code(code, alpha = 255)
  373.     new(code >> 16, (code & 0xff00) >> 8, code & 0xff, alpha)
  374.   end
  375.   #---------------------------------------------------------------------------
  376.   # ● 访问简单颜色
  377.   #---------------------------------------------------------------------------
  378.   def black; code(0x000000); end
  379.   def red;   code(0xFF0000); end
  380.   def green; code(0x00FF00); end
  381.   def blue;  code(0x0000FF); end
  382.   def white; code(0xFFFFFF); end
  383. end
  384.  
  385. class Plane_Base < Plane
  386.   #---------------------------------------------------------------------------
  387.   # ● 初始化
  388.   #---------------------------------------------------------------------------
  389.   def initialize(viewport = nil)
  390.     super
  391.     @__visible = true
  392.   end
  393.   #---------------------------------------------------------------------------
  394.   # ● 设置是否可见
  395.   #---------------------------------------------------------------------------
  396.   def visible=(visible)
  397.     super
  398.     @__visible = visible
  399.   end
  400.   #---------------------------------------------------------------------------
  401.   # ● 获取是否可见
  402.   #---------------------------------------------------------------------------
  403.   def visible
  404.     @__visible
  405.   end
  406. end
  407.  
  408. #--------------------------------------------------------------------------
  409. # ● 存档文件的最大数
  410. #--------------------------------------------------------------------------
  411. def DataManager.savefile_max
  412.   Taroxd::SAVEFILE_MAX
  413. end if Taroxd::SAVEFILE_MAX
  414.  
  415. module SceneManager
  416.   #--------------------------------------------------------------------------
  417.   # ● 获取当前场景
  418.   #--------------------------------------------------------------------------
  419.   def scene; SceneManager.scene; end
  420.   #--------------------------------------------------------------------------
  421.   # ● 判定当前场景的所属类
  422.   #--------------------------------------------------------------------------
  423.   def scene_is?(scene_class); SceneManager.scene_is?(scene_class); end
  424. end
  425.  
  426. #--------------------------------------------------------------------------
  427. # ● 撤退时的处理
  428. #--------------------------------------------------------------------------
  429. def BattleManager.process_escape
  430.   $game_message.add(sprintf(Vocab::EscapeStart, $game_party.name))
  431.   success = @preemptive ? true : (rand < @escape_ratio)
  432.   Sound.play_escape
  433.   if success
  434.     process_abort
  435.   else
  436.     @escape_ratio += Taroxd::ESCAPE_RATIO_UP
  437.     $game_message.add('\.' + Vocab::EscapeFailure)
  438.     $game_party.clear_actions
  439.   end
  440.   wait_for_message
  441.   success
  442. end if Taroxd::ESCAPE_RATIO_UP
  443.  
  444. #----------------------------------------------------------------------------
  445. # ● 重置开关、变量、独立开关
  446. #----------------------------------------------------------------------------
  447. code = %{
  448.   def clear
  449.     @data.clear
  450.     on_change
  451.     self
  452.   end
  453.   alias reset clear
  454. }
  455. Game_Switches.class_eval     code
  456. Game_Variables.class_eval    code
  457. Game_SelfSwitches.class_eval code
  458.  
  459. class Game_Pictures
  460.   include Enumerable
  461.   #--------------------------------------------------------------------------
  462.   # ● 迭代
  463.   #--------------------------------------------------------------------------
  464.   def each
  465.     return to_enum(__method__) unless block_given?
  466.     @data.each {|picture| yield picture if picture }
  467.     self
  468.   end
  469. end
  470.  
  471. class Game_BaseItem
  472.   #--------------------------------------------------------------------------
  473.   # ● 获取属性
  474.   #--------------------------------------------------------------------------
  475.   attr_reader :item_id
  476.   alias id item_id
  477.   #--------------------------------------------------------------------------
  478.   # ● 设置装备的 ID
  479.   #--------------------------------------------------------------------------
  480.   def set_equip(is_weapon, item_id)
  481.     @class = is_weapon ? RPG::Weapon : RPG::Armor
  482.     @item_id = item_id
  483.     self
  484.   end
  485. end
  486.  
  487. class Game_BattlerBase
  488.   #--------------------------------------------------------------------------
  489.   # ● 最大 TP
  490.   #--------------------------------------------------------------------------
  491.   def max_tp; Taroxd::MAX_TP; end if Taroxd::MAX_TP
  492.   #--------------------------------------------------------------------------
  493.   # ● 最大 TP
  494.   #--------------------------------------------------------------------------
  495.   def mtp; max_tp; end
  496.   #--------------------------------------------------------------------------
  497.   # ● 获取 TP 的比率
  498.   #--------------------------------------------------------------------------
  499.   def tp_rate; @tp.fdiv(max_tp); end
  500.   #--------------------------------------------------------------------------
  501.   # ● 更改 TP
  502.   #--------------------------------------------------------------------------
  503.   def_after(:tp=) {|_| refresh }
  504.   #--------------------------------------------------------------------------
  505.   # ● 获取死亡的状态ID
  506.   #--------------------------------------------------------------------------
  507.   def death_state_id; Taroxd::DEATH_STATE_ID; end if Taroxd::DEATH_STATE_ID
  508.   #--------------------------------------------------------------------------
  509.   # ● 获取普通能力的最小值
  510.   #--------------------------------------------------------------------------
  511.   def param_min(param_id); 0; end if Taroxd::PARAM_LIMIT
  512.   #--------------------------------------------------------------------------
  513.   # ● 获取普通能力的最大值
  514.   #--------------------------------------------------------------------------
  515.   def param_max(param_id); Taroxd::PARAM_LIMIT; end if Taroxd::PARAM_LIMIT
  516. end
  517.  
  518. class Game_Battler < Game_BattlerBase
  519.   #--------------------------------------------------------------------------
  520.   # ● 拥有备注的实例构成的数组
  521.   #--------------------------------------------------------------------------
  522.   def note_objects; feature_objects + skills; end
  523.   #--------------------------------------------------------------------------
  524.   # ● 受到伤害时增加的 TP
  525.   #--------------------------------------------------------------------------
  526.   def charge_tp_by_damage(damage_rate)
  527.     self.tp += Taroxd::DAMAGE_CHARGE_TP_RATE * damage_rate * tcr
  528.   end if Taroxd::DAMAGE_CHARGE_TP_RATE
  529.   #--------------------------------------------------------------------------
  530.   # ● 获取幸运影响程度
  531.   #--------------------------------------------------------------------------
  532.   def luk_effect_rate(user)
  533.     [1.0 + (user.luk - luk) * Taroxd::LUK_EFFECT_RATE, 0.0].max
  534.   end if Taroxd::LUK_EFFECT_RATE
  535.   #--------------------------------------------------------------------------
  536.   # ● TP 自动恢复
  537.   #--------------------------------------------------------------------------
  538.   def regenerate_tp; self.tp += mtp * trg; end
  539.   #--------------------------------------------------------------------------
  540.   # ● 应用关键一击
  541.   #--------------------------------------------------------------------------
  542.   def apply_critical(damage)
  543.     damage * Taroxd::CRITICAL_RATE
  544.   end if Taroxd::CRITICAL_RATE
  545.   #--------------------------------------------------------------------------
  546.   # ● 获取实例
  547.   #--------------------------------------------------------------------------
  548.   def battler; end
  549.   #--------------------------------------------------------------------------
  550.   # ● 获取备注
  551.   #--------------------------------------------------------------------------
  552.   def note; battler.note; end
  553.   #--------------------------------------------------------------------------
  554.   # ● 获取 ID
  555.   #--------------------------------------------------------------------------
  556.   def id; battler.id; end
  557.   #--------------------------------------------------------------------------
  558.   # ● 获取技能实例的数组
  559.   #--------------------------------------------------------------------------
  560.   def skills
  561.     (basic_skills | added_skills).sort.map {|id| $data_skills[id] }
  562.   end  
  563.   #--------------------------------------------------------------------------
  564.   # ● 是否拥有技能
  565.   #--------------------------------------------------------------------------
  566.   def skill?(skill)
  567.     basic_skills.include?(skill.id) || added_skills.include?(skill.id)
  568.   end
  569.   #--------------------------------------------------------------------------
  570.   # ● 是否学会技能
  571.   #--------------------------------------------------------------------------
  572.   def skill_learn?(skill)
  573.     skill.kind_of?(RPG::Skill) && basic_skills.include?(skill.id)
  574.   end
  575.   private
  576.   #--------------------------------------------------------------------------
  577.   # ● 获取基本技能 ID 所构成的数组
  578.   #--------------------------------------------------------------------------
  579.   def basic_skills; []; end
  580. end
  581.  
  582. class Game_Actor < Game_Battler
  583.   #--------------------------------------------------------------------------
  584.   # ● 获取实例
  585.   #--------------------------------------------------------------------------
  586.   def battler; actor; end
  587.   #--------------------------------------------------------------------------
  588.   # ● 属性上限
  589.   #--------------------------------------------------------------------------
  590.   remove_method :param_max if Taroxd::PARAM_LIMIT
  591.   #--------------------------------------------------------------------------
  592.   # ● 等级最小值
  593.   #--------------------------------------------------------------------------
  594.   def min_level; 1; end
  595.   def min_level?; @level <= min_level; end
  596.   #--------------------------------------------------------------------------
  597.   # ● 经验值变化
  598.   #--------------------------------------------------------------------------
  599.   def change_exp(exp, show)
  600.     @exp[@class_id] = [exp, 0].max
  601.     last_level = @level
  602.     last_skills = skills
  603.     level_up   while !max_level? && self.exp >= next_level_exp
  604.     level_down while !min_level? && self.exp <  current_level_exp
  605.     display_level_up(skills - last_skills) if show && @level > last_level
  606.     refresh
  607.   end
  608.   #--------------------------------------------------------------------------
  609.   # ● 获取地形伤害的基础值
  610.   #--------------------------------------------------------------------------
  611.   def basic_floor_damage
  612.     Taroxd::BASIC_FLOOR_DAMAGE
  613.   end if Taroxd::BASIC_FLOOR_DAMAGE
  614.   #--------------------------------------------------------------------------
  615.   # ● 获取普通攻击的技能 ID
  616.   #--------------------------------------------------------------------------
  617.   def attack_skill_id
  618.     Taroxd::ATTACK_SKILL_ID
  619.   end if Taroxd::ATTACK_SKILL_ID
  620.   #--------------------------------------------------------------------------
  621.   # ● 获取防御的技能 ID
  622.   #--------------------------------------------------------------------------
  623.   def guard_skill_id
  624.     Taroxd::GUARD_SKILL_ID
  625.   end if Taroxd::GUARD_SKILL_ID
  626.   #--------------------------------------------------------------------------
  627.   # ● 地图上的多少步等于一回合?
  628.   #--------------------------------------------------------------------------
  629.   def steps_for_turn
  630.     Taroxd::STEPS_FOR_RUN
  631.   end if Taroxd::STEPS_FOR_RUN
  632.   #--------------------------------------------------------------------------
  633.   # ● 是否装备武器
  634.   #--------------------------------------------------------------------------
  635.   def weapon?(weapon)
  636.     @equips.any? {|item| item.id == weapon.id && item.is_weapon? }
  637.   end
  638.   #--------------------------------------------------------------------------
  639.   # ● 是否装备护甲
  640.   #--------------------------------------------------------------------------
  641.   def armor?(armor)
  642.     @equips.any? {|item| item.id == armor.id && item.is_armor? }
  643.   end
  644.   private
  645.   #--------------------------------------------------------------------------
  646.   # ● 获取基本技能 ID 所构成的数组
  647.   #--------------------------------------------------------------------------
  648.   def basic_skills; @skills; end
  649. end
  650.  
  651. class Game_Enemy < Game_Battler
  652.   #--------------------------------------------------------------------------
  653.   # ● 获取实例
  654.   #--------------------------------------------------------------------------
  655.   def battler; enemy; end
  656.   #--------------------------------------------------------------------------
  657.   # ● 获取敌人 ID
  658.   #--------------------------------------------------------------------------
  659.   attr_reader :enemy_id
  660.   alias id enemy_id
  661.   #--------------------------------------------------------------------------
  662.   # ● 获取敌人的位图(不自动释放)
  663.   #--------------------------------------------------------------------------
  664.   def bitmap; Cache.battler(battler_name, battler_hue); end
  665.   #--------------------------------------------------------------------------
  666.   # ● 获取战斗图的高度
  667.   #--------------------------------------------------------------------------
  668.   def height; [url=home.php?mod=space&uid=291977]@height[/url] ||= bitmap.height; end
  669.   #--------------------------------------------------------------------------
  670.   # ● 获取战斗图的宽度
  671.   #--------------------------------------------------------------------------
  672.   def width; @width ||= bitmap.width; end
  673.   private
  674.   #--------------------------------------------------------------------------
  675.   # ● 获取基本技能 ID 所构成的数组
  676.   #--------------------------------------------------------------------------
  677.   def basic_skills; enemy.actions.map(&:skill_id); end
  678. end
  679.  
  680. class Game_Actors
  681.   include Enumerable
  682.   #--------------------------------------------------------------------------
  683.   # ● 迭代
  684.   #--------------------------------------------------------------------------
  685.   def each
  686.     return to_enum(__method__) unless block_given?
  687.     @data.each {|actor| yield actor if actor }
  688.     self
  689.   end
  690.   #--------------------------------------------------------------------------
  691.   # ● 是否包含
  692.   #--------------------------------------------------------------------------
  693.   def include?(actor)
  694.     @data[actor.id]
  695.   end
  696. end
  697.  
  698. class Game_Unit
  699.   include Enumerable
  700.   #--------------------------------------------------------------------------
  701.   # ● 转为数组
  702.   #--------------------------------------------------------------------------
  703.   def to_a; members; end
  704.   #--------------------------------------------------------------------------
  705.   # ● 迭代每位成员
  706.   #--------------------------------------------------------------------------
  707.   def each
  708.     return to_enum(__method__) unless block_given?
  709.     members.each {|battler| yield battler }
  710.     self
  711.   end
  712.   alias each_member each
  713.   #--------------------------------------------------------------------------
  714.   # ● 获取成员
  715.   #--------------------------------------------------------------------------
  716.   def [](*args); members[*args]; end
  717.   alias slice []
  718.   #--------------------------------------------------------------------------
  719.   # ● 是否为空
  720.   #--------------------------------------------------------------------------
  721.   def empty?; members.empty?; end
  722.   #--------------------------------------------------------------------------
  723.   # ● 获取成员人数
  724.   #--------------------------------------------------------------------------
  725.   def size; members.size; end
  726.   alias length size
  727. end
  728.  
  729. class Game_Party < Game_Unit
  730.   #--------------------------------------------------------------------------
  731.   # ● 增加持有金钱
  732.   #--------------------------------------------------------------------------
  733.   def +(gold)
  734.     gain_gold(gold)
  735.     self
  736.   end
  737.   #--------------------------------------------------------------------------
  738.   # ● 减少持有金钱
  739.   #--------------------------------------------------------------------------
  740.   def -(gold)
  741.     lose_gold(gold)
  742.     self
  743.   end
  744.   #--------------------------------------------------------------------------
  745.   # ● 使角色离队
  746.   #--------------------------------------------------------------------------
  747.   def delete(actor)
  748.     return unless include?(actor)
  749.     remove_actor(actor.id)
  750.     actor
  751.   end
  752.   #--------------------------------------------------------------------------
  753.   # ● 使指定位置的成员离队
  754.   #--------------------------------------------------------------------------
  755.   def delete_at(index)
  756.     delete(members[index])
  757.   end
  758.   #--------------------------------------------------------------------------
  759.   # ● 使指定位置的成员离队
  760.   #--------------------------------------------------------------------------
  761.   def slice!(*args)
  762.     actors = members[*args]
  763.     if actors.kind_of?(Array)
  764.       actors.each {|actor| delete(actor) }
  765.     else
  766.       delete(actors)
  767.     end
  768.   end
  769.   #--------------------------------------------------------------------------
  770.   # ● 删除符合 block 条件的角色
  771.   #--------------------------------------------------------------------------
  772.   def delete_if
  773.     return to_enum(__method__) unless block_given?
  774.     members.each {|actor| delete(actor) if yield actor }
  775.     self
  776.   end
  777.   #--------------------------------------------------------------------------
  778.   # ● 删除最后的队员
  779.   #--------------------------------------------------------------------------
  780.   def pop(n = nil)
  781.     return slice!(-1) unless n
  782.     n = size if n > size
  783.     slice!(-n, n)
  784.   end
  785.   #--------------------------------------------------------------------------
  786.   # ● 添加队员
  787.   #--------------------------------------------------------------------------
  788.   def <<(actor)
  789.     add_actor(actor.id)
  790.     self
  791.   end
  792.   #--------------------------------------------------------------------------
  793.   # ● 添加队员
  794.   #--------------------------------------------------------------------------
  795.   def push(*actors)
  796.     actors.each {|actor| add_actor(actor.id) }
  797.     self
  798.   end
  799.   #--------------------------------------------------------------------------
  800.   # ● 删除领头的队员
  801.   #--------------------------------------------------------------------------
  802.   def shift(n = nil); n ? slice!(0, n) : slice!(0); end
  803.   #--------------------------------------------------------------------------
  804.   # ● 获取持有金钱的最大值
  805.   #--------------------------------------------------------------------------
  806.   def max_gold; Taroxd::MAX_GOLD; end if Taroxd::MAX_GOLD
  807.   #--------------------------------------------------------------------------
  808.   # ● 获取参战角色的最大数
  809.   #--------------------------------------------------------------------------
  810.   def max_battle_members
  811.     Taroxd::MAX_BATTLE_MEMBERS
  812.   end if Taroxd::MAX_BATTLE_MEMBERS
  813. end
  814.  
  815. class Game_Map
  816.   #--------------------------------------------------------------------------
  817.   # ● 获取 id
  818.   #--------------------------------------------------------------------------
  819.   attr_reader :map_id
  820.   alias id map_id
  821.   #--------------------------------------------------------------------------
  822.   # ● 备注
  823.   #--------------------------------------------------------------------------
  824.   def note; @map.note; end
  825. end
  826.  
  827. class Game_CharacterBase
  828.   #--------------------------------------------------------------------------
  829.   # ● 更新草木的深度
  830.   #--------------------------------------------------------------------------
  831.   def update_bush_depth
  832.     if normal_priority? && !object_character? && bush? && !jumping?
  833.       @bush_depth = Taroxd::BUSH_DEPTH unless moving?
  834.     else
  835.       @bush_depth = 0
  836.     end
  837.   end if Taroxd::BUSH_DEPTH
  838. end
  839.  
  840. class Game_Followers
  841.   include Enumerable
  842.   #--------------------------------------------------------------------------
  843.   # ● 迭代
  844.   #--------------------------------------------------------------------------
  845.   def each
  846.     return to_enum(__method__) unless block_given?
  847.     @data.each {|follower| yield follower }
  848.     self
  849.   end
  850.   #--------------------------------------------------------------------------
  851.   # ● 迭代(逆向)
  852.   #--------------------------------------------------------------------------
  853.   def reverse_each
  854.     return to_enum(__method__) unless block_given?
  855.     @data.reverse_each {|follower| yield follower }
  856.     self
  857.   end
  858. end
  859.  
  860. class Sprite_Character < Sprite_Base
  861.   #--------------------------------------------------------------------------
  862.   # ● 初始化草木的不透明度
  863.   #--------------------------------------------------------------------------
  864.   def_after :initialize do |_, _ = nil|
  865.     self.bush_opacity = Taroxd::BUSH_OPACITY
  866.   end if Taroxd::BUSH_OPACITY
  867. end
  868.  
  869. class Spriteset_Map
  870.   #--------------------------------------------------------------------------
  871.   # ● 地图是否变更
  872.   #--------------------------------------------------------------------------
  873.   def map_changed?; @taroxd_map_id != $game_map.map_id; end
  874.   #--------------------------------------------------------------------------
  875.   # ● 更新地图 ID
  876.   #--------------------------------------------------------------------------
  877.   def_after(:update) { @taroxd_map_id = $game_map.map_id }
  878. end
  879.  
  880.  
  881.  
  882. class Window_Variable < Window_Base
  883.   #--------------------------------------------------------------------------
  884.   # ● 初始化对象
  885.   #--------------------------------------------------------------------------
  886.   def initialize(x=0,y=0,width=Graphics.width,height=Graphics.height)
  887.     super
  888.     self.opacity = 0
  889.   end
  890.   #--------------------------------------------------------------------------
  891.   # ● 更新
  892.   #--------------------------------------------------------------------------
  893.   def update
  894.     super
  895.     self.visible = show?
  896.     refresh if visible && varied?
  897.   end
  898.   #--------------------------------------------------------------------------
  899.   # ● 刷新
  900.   #--------------------------------------------------------------------------
  901.   def refresh
  902.     @variable = variable
  903.     contents.clear
  904.     draw_variable
  905.   end
  906.   #--------------------------------------------------------------------------
  907.   # ● 去除边框
  908.   #--------------------------------------------------------------------------
  909.   def standard_padding; 0; end
  910.   #--------------------------------------------------------------------------
  911.   # ● 是否显示
  912.   #--------------------------------------------------------------------------
  913.   def show?; true; end
  914.   #--------------------------------------------------------------------------
  915.   # ● 绘制内容
  916.   #--------------------------------------------------------------------------
  917.   def draw_variable; end
  918.   #--------------------------------------------------------------------------
  919.   # ● 内容
  920.   #--------------------------------------------------------------------------
  921.   def variable; end
  922.   #--------------------------------------------------------------------------
  923.   # ● 内容是否改变
  924.   #--------------------------------------------------------------------------
  925.   def varied?; @variable != variable; end
  926. end
  927.  
  928. class Scene_Battle < Scene_Base
  929.   #--------------------------------------------------------------------------
  930.   # ● 检查是否能使用保护弱者
  931.   #--------------------------------------------------------------------------
  932.   def check_substitute(target, item)
  933.     target.hp_rate < Taroxd::SUBSTITUTE_HP_RATE && (!item || !item.certain?)
  934.   end if Taroxd::SUBSTITUTE_HP_RATE
  935.   #--------------------------------------------------------------------------
  936.   # ● 追加战斗信息
  937.   #--------------------------------------------------------------------------
  938.   def add_battlelog(text)
  939.     @log_window.add_text(text)
  940.   end
  941. end


RUBY 代码复制
  1. STEPS_FOR_RUN = 20              # 地图上多少步等于一回合
看到这里有个这样的设置(正好需要用到类似的功能···)@taroxd 这个地图上X步=1回合是怎么用的···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21621
在线时间
9413 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

2
发表于 2014-10-7 11:18:33 | 只看该作者
把等号后面的数字改成你要的设置不就好了……
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

3
 楼主| 发表于 2014-10-7 11:20:10 | 只看该作者
喵呜喵5 发表于 2014-10-6 18:18
把等号后面的数字改成你要的设置不就好了……

不是那个意思···是具体的用法···比如条件分歧···在地图上如果“走”了3个回合就执行公共事件什么的···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21621
在线时间
9413 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

4
发表于 2014-10-7 11:22:11 | 只看该作者
chd114 发表于 2014-10-7 11:20
不是那个意思···是具体的用法···比如条件分歧···在地图上如果“走”了3个回合就执行公共事件什 ...

20步一回合
3回合等于60步

并行处理
条件分歧:如果角色之前的步数 - 角色现在的步数 >= 60
XXXX
角色之前的步数 = 角色现在的步数
分歧结束

点评

这样貌似不行囧  发表于 2014-10-7 11:24

评分

参与人数 1星屑 +132 收起 理由
VIPArcher + 132 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

5
发表于 2014-10-7 11:22:37 | 只看该作者
chd114 发表于 2014-10-7 11:20
不是那个意思···是具体的用法···比如条件分歧···在地图上如果“走”了3个回合就执行公共事件什 ...

自己重定义 on_turn_end 方法。另外为了兼容性,现在我已经把那堆常量设置分离了

评分

参与人数 1星屑 +132 收起 理由
VIPArcher + 132 我这次已经先发帖再编辑了,Orz.

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10074
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

6
发表于 2014-10-7 11:22:53 | 只看该作者
就是字面的意思,
另外XD已经把这个常数设置独立出来了(为了基础脚本更兼容

点评

用了新版的感觉字体和窗口大小变了0.0新版的可以调整字体和窗口大小?  发表于 2014-10-7 11:53
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

7
 楼主| 发表于 2014-10-7 11:26:04 | 只看该作者
taroxd 发表于 2014-10-6 18:22
自己重定义 on_turn_end 方法。另外为了兼容性,现在我已经把那堆常量设置分离了 ...

分离了?0.0那分离后的那部分到哪里了···

点评

基础设置那个也要换掉吗···  发表于 2014-10-7 11:39
你需要什么用什么,这种问题也要问我吗?  发表于 2014-10-7 11:39
好吧···是用那个覆盖之前的还是用新的?  发表于 2014-10-7 11:37
你楼上的链接  发表于 2014-10-7 11:34
分离后的那部分名字是什么···  发表于 2014-10-7 11:34
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-14 23:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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