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

Project1

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

[已经过期] 求物品與技能的說明窗口腳本..拜託

[复制链接]

Lv1.梦旅人

梦石
0
星屑
65
在线时间
141 小时
注册时间
2012-4-29
帖子
54
跳转到指定楼层
1
发表于 2016-11-4 23:07:42 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 RyanBern 于 2016-11-5 21:30 编辑

各位前輩好,請問有能給我能和這個腳本共存的物品與技能的說明窗口嗎?


原帖



腳本:

RUBY 代码复制
  1. #==============================================================================
  2. # 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息
  3. #
  4. # ■ 熊式横版战斗 by 弗雷德   真移位:神思
  5. #==============================================================================
  6. #如果要需要Game_Battler3类的攻击、特技、物品的方法,请移至161-470行
  7. #因为重写过这三个方法,在原方法里改是不会生效的。
  8.  
  9.  
  10.  
  11.  
  12.  
  13. #--------------------------------------------------------------------------
  14. #  ● 设定开始
  15. #--------------------------------------------------------------------------
  16. #伤害为0的时候是否显示无效文字,1为显示,0为不显示。
  17. INVALIDSWITCH = 1
  18.  
  19. # 是否显示死亡图 1为显示,0为不显示。
  20. DEADPIC = 1
  21.  
  22. # 是否显示总伤害 1为显示,0为不显示。
  23. SHOW_TOTAL_DAMAGE = 1
  24.  
  25. # 是否显示连击数值 1为显示,0为不显示。
  26. HITSWITCH = 1
  27.  
  28. # 是否显示SP伤害数值 1为显示,0为不显示。
  29. SDMGSWITCH = 1
  30.  
  31. # 不是主状态的时候是否稍稍降低点透明度  1为降低,0为不降低
  32. NACTSWITCH = 1
  33.  
  34. # 会心一击时的音效,不设置为不使用音效。
  35. CRIVOICE = "Critital_hit"
  36.  
  37. # 会心一击是否开启画面晃动 1为开启,0为关闭
  38. CRISHAKE = 1
  39.  
  40. # 会心一击是否开启画面闪烁,1为开启,0为关闭
  41. CRIFLASH = 1
  42.  
  43. # 攻击时不移动的属性编号 默认为29号 参考数据库的设置
  44. # 比如职业枪兵勾上了29号属性,那么当枪兵使用普通攻击时将不会移动。技能也是如此。
  45. UNMOVE = 29
  46.  
  47. # 攻击到与敌人同一水平线前的属性编号 默认为30号 参考数据库的设置
  48. HOMOVE = 30
  49.  
  50. ##################################################################
  51. module Scene_BattleName
  52.   # 设定移动速度
  53.   Move_Duration = 28
  54.   #设定人物的单帧图,如果不做设定,将直接使用默认的战斗图。
  55.   BattlerName = {
  56.   "佛雷德" => {
  57.   "待机" => ["Fred_s1","Fred_s2","Fred_s3","Fred_s4"],
  58.   "移动" => ["Fred_r1","Fred_r2","Fred_r3","Fred_r4"],
  59.   "返回" => ["Fred_b1","Fred_b2","Fred_b3","Fred_b4"],
  60.   "受伤" => ["Fred_h"],
  61.   "防御" => ["Fred_d"],
  62.   "死亡" => ["Fred_die1","Fred_die2"]
  63.   },
  64.  
  65.   "女法師" => {
  66.   "待机" => ["01-1","01-2","01-3","01-4"],
  67.   "移动" => ["01-1"],
  68.   "返回" => ["01-5"],
  69.   "受伤" => ["01-7"],
  70.   "防御" => ["01-1"],
  71.   "死亡" => ["01-6"]
  72.   },
  73.  
  74.   "大熊" => {
  75.   "待机" => ["bear_s11","bear_s12","bear_s13","bear_s14"],
  76.   "移动" => ["bear_b1","bear_b2","bear_b3","bear_b4"],
  77.   "返回" => ["bear_r1","bear_r2","bear_r3","bear_r4"],
  78.   "受伤" => ["bear_h1"],
  79.   "防御" => ["bear_d1"],
  80.   "死亡" => ["bear_die11","bear_die12"]
  81.   },
  82.  
  83.   "蜘蛛" => {
  84.   "待机" => ["spider_s11"],
  85.   "移动" => ["spider_b1"],
  86.   "返回" => ["spider_r1"],
  87.   "受伤" => ["spider_h1"],
  88.   "防御" => ["spider_h1"],
  89.   "死亡" => ["spider_die11","spider_die12"]
  90.   },
  91.  
  92.   "鬼幽靈" => {
  93.   "待机" => ["ghost_s11","ghost_s12","ghost_s13","ghost_s14"],
  94.   "移动" => ["ghost_b1","ghost_b2","ghost_b3","ghost_b4"],
  95.   "返回" => ["ghost_r1","ghost_r2","ghost_r3","ghost_r4"],
  96.   "受伤" => ["ghost_h1"],
  97.   "防御" => ["ghost_d1"],
  98.   "死亡" => ["ghost_die11","ghost_die12"]
  99.   },
  100.  
  101.    "惡佛雷德" => {
  102.   "待机" => ["Fred_s11","Fred_s12","Fred_s13","Fred_s14"],
  103.   "移动" => ["Fred_b1","Fred_b2","Fred_b3","Fred_b4"],
  104.   "返回" => ["Fred_r1","Fred_r2","Fred_r3","Fred_r4"],
  105.   "受伤" => ["Fred_h1"],
  106.   "防御" => ["Fred_d1"],
  107.   "死亡" => ["Fred_die11","Fred_die12"]
  108.   },
  109.  
  110.   "惡熊" => {
  111.   "待机" => ["bear_s1","bear_s2","bear_s3","bear_s4"],
  112.   "移动" => ["bear_r1","bear_r2","bear_r3","bear_r4"],
  113.   "返回" => ["bear_b1","bear_b2","bear_b3","bear_b4"],
  114.   "受伤" => ["bear_h"],
  115.   "防御" => ["bear_d"],
  116.   "死亡" => ["bear_die1","bear_die2"]
  117.   },
  118.  
  119.   "惡蜘蛛" => {
  120.   "待机" => ["spider_s1"],
  121.   "移动" => ["spider_r1"],
  122.   "返回" => ["spider_b1"],
  123.   "受伤" => ["spider_h"],
  124.   "防御" => ["spider_h"],
  125.   "死亡" => ["spider_die1","spider_die2"]
  126.   },
  127.  
  128.   "巨大鬼幽靈" => {
  129.   "待机" => ["ghost_s1","ghost_s2","ghost_s3","ghost_s4"],
  130.   "移动" => ["ghost_r1","ghost_r2","ghost_r3","ghost_r4"],
  131.   "返回" => ["ghost_b1","ghost_b2","ghost_b3","ghost_b4"],
  132.   "受伤" => ["ghost_h"],
  133.   "防御" => ["ghost_d"],
  134.   "死亡" => ["ghost_die1","ghost_die2"]
  135.   },
  136. }
  137. end
  138. #至于其它的:
  139.  
  140. #HP伤害数字间距偏移在602行修改。
  141.  
  142. #SP伤害数字间距偏移在667行修改。
  143.  
  144. #连击数字间距偏移在713行修改。
  145.  
  146. #总伤害数字间距偏移在759行修改。
  147.  
  148. #--------------------------------------------------------------------------
  149. #  ● 设定结束
  150. #--------------------------------------------------------------------------
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161. class Game_Battler
  162.   attr_accessor :movex                    # X坐标修正
  163.   attr_accessor :movey                    # Y坐标修正
  164.   attr_accessor :startactive              # 行为
  165.   attr_accessor :damage_sp                # 精神伤害值
  166.   alias bearrpg_initialize initialize
  167.   def initialize
  168.     bearrpg_initialize
  169.     @damage_sp = 0
  170.     @movex = 0
  171.     @movey = 0
  172.     @startactive = "待机"
  173.   end
  174.   def width #获取战斗图宽
  175.     return RPG::Cache.battler(@battler_name, @battler_hue).width
  176.   end
  177.   def height #获取战斗图高
  178.     return RPG::Cache.battler(@battler_name, @battler_hue).height
  179.   end
  180.   #--------------------------------------------------------------------------
  181.   # ● 应用通常攻击效果
  182.   #     attacker : 攻击者 (battler)
  183.   #--------------------------------------------------------------------------
  184.   def attack_effect(attacker)
  185.     # 清除会心一击标志
  186.     self.critical = false
  187.     #######伤害开关初始化##################################################bearrpg
  188.     $damage_hp = false
  189.     $damage_sp = false
  190.     # 第一命中判定
  191.     hit_result = (rand(100) < attacker.hit)
  192.     # 命中的情况下
  193.     if hit_result == true
  194.       # 计算基本伤害
  195.       atk = [attacker.atk - self.pdef / 2, 0].max
  196.       self.damage = atk * (20 + attacker.str) / 20
  197.       # 属性修正
  198.       self.damage *= elements_correct(attacker.element_set)
  199.       self.damage /= 100
  200.       # 伤害符号正确的情况下
  201.       if self.damage > 0
  202.         # 会心一击修正
  203.         if rand(100) < 4 * attacker.dex / self.agi
  204.           self.damage *= 2
  205.           self.critical = true
  206.         end
  207.         # 防御修正
  208.         if self.guarding?
  209.           self.damage /= 2
  210.         end
  211.       end
  212.       $damage_hp = true if self.damage.is_a?(Numeric)
  213.     #  $damage_sp = true if self.damage_sp != 0 SP伤害数值开关
  214.       # 分散
  215.       if self.damage.abs > 0
  216.         amp = [self.damage.abs * 15 / 100, 1].max
  217.         self.damage += rand(amp+1) + rand(amp+1) - amp
  218.       end
  219.       # 第二命中判定
  220.       eva = 8 * self.agi / attacker.dex + self.eva
  221.       hit = self.damage < 0 ? 100 : 100 - eva
  222.       hit = self.cant_evade? ? 100 : hit
  223.       hit_result = (rand(100) < hit)
  224.     end
  225.     #####################################bearrpg
  226.     # 命中的情况下
  227.     if hit_result == true
  228.       # 状态冲击解除
  229.       remove_states_shock
  230.       # HP 的伤害计算
  231.       self.hp -= self.damage
  232.       # 状态变化
  233.       @state_changed = false
  234.       states_plus(attacker.plus_state_set)
  235.       states_minus(attacker.minus_state_set)
  236.       if self.damage == 0
  237.            self.damage = "无效" if INVALIDSWITCH >0
  238.          self.critical = false
  239.        end
  240.     # Miss 的情况下
  241.     else
  242.       # 伤害设置为 "Miss"
  243.       self.damage = "Miss"
  244.       # 清除会心一击标志
  245.       self.critical = false
  246.     end
  247.     # 过程结束
  248.     return true
  249.   end
  250.   #############################################bearrpg
  251.   #--------------------------------------------------------------------------
  252.   # ● 应用特技效果
  253.   #     user  : 特技的使用者 (battler)
  254.   #     skill : 特技
  255.   #--------------------------------------------------------------------------
  256.   def skill_effect(user, skill)
  257.     #######伤害开关初始化##################################################bearrpg
  258.     $damage_hp = false
  259.     $damage_sp = false
  260.     # 清除会心一击标志
  261.     self.critical = false
  262.     # 特技的效果范围是 HP 1 以上的己方、自己的 HP 为 0、
  263.     # 或者特技的效果范围是 HP 0 的己方、自己的 HP 为 1 以上的情况下
  264.     if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
  265.        ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
  266.       # 过程结束
  267.       return false
  268.     end
  269.     # 清除有效标志
  270.     effective = false
  271.     # 公共事件 ID 是有效的情况下,设置为有效标志
  272.     effective |= skill.common_event_id > 0
  273.     # 第一命中判定
  274.     hit = skill.hit
  275.     if skill.atk_f > 0
  276.       hit *= user.hit / 100
  277.     end
  278.     hit_result = (rand(100) < hit)
  279.     # 不确定的特技的情况下设置为有效标志
  280.     effective |= hit < 100
  281.     # 命中的情况下
  282.     if hit_result == true
  283.       # 计算威力
  284.       power = skill.power + user.atk * skill.atk_f / 100
  285.       if power > 0
  286.         power -= self.pdef * skill.pdef_f / 200
  287.         power -= self.mdef * skill.mdef_f / 200
  288.         power = [power, 0].max
  289.       end
  290.       # 计算倍率
  291.       rate = 20
  292.       rate += (user.str * skill.str_f / 100)
  293.       rate += (user.dex * skill.dex_f / 100)
  294.       rate += (user.agi * skill.agi_f / 100)
  295.       rate += (user.int * skill.int_f / 100)
  296.       # 计算基本伤害
  297.       self.damage = power * rate / 20
  298.       # 属性修正
  299.       self.damage *= elements_correct(skill.element_set)
  300.       self.damage /= 100
  301.       # 伤害符号正确的情况下
  302.       if self.damage > 0
  303.         # 防御修正
  304.         if self.guarding?
  305.           self.damage /= 2
  306.         end
  307.       end
  308.       # 分散
  309.       if skill.variance > 0 and self.damage.abs > 0
  310.         amp = [self.damage.abs * skill.variance / 100, 1].max
  311.         self.damage += rand(amp+1) + rand(amp+1) - amp
  312.       end
  313.       # 第二命中判定
  314.       eva = 8 * self.agi / user.dex + self.eva
  315.       hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
  316.       hit = self.cant_evade? ? 100 : hit
  317.       hit_result = (rand(100) < hit)
  318.       # 不确定的特技的情况下设置为有效标志
  319.       effective |= hit < 100
  320.     end
  321.     $damage_hp = true if self.damage.is_a?(Numeric)
  322.    # $damage_sp = true if self.damage_sp != 0 SP伤害数值开关
  323.     # 命中的情况下
  324.     if hit_result == true
  325.       # 威力 0 以外的物理攻击的情况下
  326.       if skill.power != 0 and skill.atk_f > 0
  327.         # 状态冲击解除
  328.         remove_states_shock
  329.         # 设置有效标志
  330.         effective = true
  331.       end
  332.       # HP 的伤害减法运算
  333.       last_hp = self.hp
  334.       self.hp -= self.damage
  335.       effective |= self.hp != last_hp
  336.       # 状态变化
  337.       @state_changed = false
  338.       effective |= states_plus(skill.plus_state_set)
  339.       effective |= states_minus(skill.minus_state_set)
  340.       #############################################bearrpg
  341.       # 威力为 0 的场合
  342.       if skill.power == 0
  343.         # 伤害设置为空的字串
  344.         self.damage = ""
  345.         # 状态没有变化的情况下
  346.         unless @state_changed
  347.           # 伤害设置为 "Miss"
  348.           self.damage = "Miss"
  349.         end
  350.       elsif self.damage == 0
  351.         unless @state_changed
  352.            self.damage = "无效" if INVALIDSWITCH >0
  353.          else
  354.           self.damage = ""
  355.         end
  356.       end
  357.     # Miss 的情况下
  358.     else
  359.       # 伤害设置为 "Miss"
  360.       self.damage = "Miss"
  361.     end
  362.     # 不在战斗中的情况下
  363.     unless $game_temp.in_battle
  364.       # 伤害设置为 nil
  365.       self.damage = nil
  366.     end
  367.     # 过程结束
  368.     return effective
  369.   end
  370.   #############################################bearrpg
  371.   #--------------------------------------------------------------------------
  372.   # ● 应用物品效果
  373.   #     item : 物品
  374.   #--------------------------------------------------------------------------
  375.   def item_effect(item)
  376.     # 清除会心一击标志
  377.     self.critical = false
  378.     # 物品的效果范围是 HP 1 以上的己方、自己的 HP 为 0、
  379.     # 或者物品的效果范围是 HP 0 的己方、自己的 HP 为 1 以上的情况下
  380.     if ((item.scope == 3 or item.scope == 4) and self.hp == 0) or
  381.        ((item.scope == 5 or item.scope == 6) and self.hp >= 1)
  382.       # 过程结束
  383.       return false
  384.     end
  385.     # 清除有效标志
  386.     effective = false
  387.     # 公共事件 ID 是有效的情况下,设置为有效标志
  388.     effective |= item.common_event_id > 0
  389.     # 命中判定
  390.     hit_result = (rand(100) < item.hit)
  391.     # 不确定的特技的情况下设置为有效标志
  392.     effective |= item.hit < 100
  393.     # 命中的情况
  394.     if hit_result == true
  395.       # 计算回复量
  396.       recover_hp = maxhp * item.recover_hp_rate / 100 + item.recover_hp
  397.       recover_sp = maxsp * item.recover_sp_rate / 100 + item.recover_sp
  398.       if recover_hp < 0
  399.         recover_hp += self.pdef * item.pdef_f / 20
  400.         recover_hp += self.mdef * item.mdef_f / 20
  401.         recover_hp = [recover_hp, 0].min
  402.       end
  403.       # 属性修正
  404.       recover_hp *= elements_correct(item.element_set)
  405.       recover_hp /= 100
  406.       recover_sp *= elements_correct(item.element_set)
  407.       recover_sp /= 100
  408.       # 分散
  409.       if item.variance > 0 and recover_hp.abs > 0
  410.         amp = [recover_hp.abs * item.variance / 100, 1].max
  411.         recover_hp += rand(amp+1) + rand(amp+1) - amp
  412.       end
  413.       if item.variance > 0 and recover_sp.abs > 0
  414.         amp = [recover_sp.abs * item.variance / 100, 1].max
  415.         recover_sp += rand(amp+1) + rand(amp+1) - amp
  416.       end
  417.       # 回复量符号为负的情况下
  418.       if recover_hp < 0
  419.         # 防御修正
  420.         if self.guarding?
  421.           recover_hp /= 2
  422.         end
  423.       end
  424.       # HP 回复量符号的反转、设置伤害值
  425.       self.damage = -recover_hp
  426.       self.damage_sp = -recover_sp  
  427.       # HP 以及 SP 的回复
  428.       last_hp = self.hp
  429.       last_sp = self.sp
  430.       self.hp += recover_hp
  431.       self.sp += recover_sp
  432.       ###################################################################bearrpg
  433.       $damage_hp = true if self.damage.is_a?(Numeric)
  434.       $damage_sp = true if self.damage_sp.is_a?(Numeric) and recover_sp != 0
  435.       ###################################################################bearrpg
  436.       effective |= self.hp != last_hp
  437.       effective |= self.sp != last_sp
  438.       # 状态变化
  439.       @state_changed = false
  440.       effective |= states_plus(item.plus_state_set)
  441.       effective |= states_minus(item.minus_state_set)
  442.       # 能力上升值有效的情况下
  443.       if item.parameter_type > 0 and item.parameter_points != 0
  444.         # 能力值的分支
  445.         case item.parameter_type
  446.         when 1  # MaxHP
  447.           @maxhp_plus += item.parameter_points
  448.         when 2  # MaxSP
  449.           @maxsp_plus += item.parameter_points
  450.         when 3  # 力量
  451.           @str_plus += item.parameter_points
  452.         when 4  # 灵巧
  453.           @dex_plus += item.parameter_points
  454.         when 5  # 速度
  455.           @agi_plus += item.parameter_points
  456.         when 6  # 魔力
  457.           @int_plus += item.parameter_points
  458.         end
  459.         # 设置有效标志
  460.         effective = true
  461.       end
  462.       # HP 回复率与回复量为 0 的情况下
  463.       if item.recover_hp_rate == 0 and item.recover_hp == 0
  464.         # 设置伤害为空的字符串
  465.         self.damage = ""
  466.         # SP 回复率与回复量为 0、能力上升值无效的情况下
  467.         if item.recover_sp_rate == 0 and item.recover_sp == 0 and
  468.            (item.parameter_type == 0 or item.parameter_points == 0)
  469.           # 状态没有变化的情况下
  470.           unless @state_changed
  471.             # 伤害设置为 "Miss"
  472.             self.damage = "Miss"
  473.           end
  474.         end
  475.       end
  476.     # Miss 的情况下
  477.     else
  478.       # 伤害设置为 "Miss"
  479.       self.damage = "Miss"
  480.     end
  481.     # 不在战斗中的情况下
  482.     unless $game_temp.in_battle
  483.       # 伤害设置为 nil
  484.       self.damage = nil
  485.     end
  486.     # 过程结束
  487.     return effective
  488.   end
  489. end
  490.  
  491. class Game_Actor
  492.   def screen_x
  493.     if self.index != nil
  494.       return (640-self.index*50)/2 + 240 + @movex
  495.     else
  496.       return 0
  497.     end
  498.   end
  499.   def screen_y
  500.     return self.index*70+self.height/2 + 55 + @movey #(320-self.index*91+self.height)/2 + 100 + @movey
  501.   end
  502.   def screen_z
  503.     return self.screen_y-self.index * 10
  504.   end
  505. end
  506. class Game_Enemy
  507.   def screen_x
  508.     return $data_troops[@troop_id].members[@member_index].x + @movex
  509.   end
  510.   def screen_y
  511.     return $data_troops[@troop_id].members[@member_index].y + @movey
  512.   end
  513.   def screen_z
  514.     return self.screen_y#+self.height
  515.   end
  516. end
  517.  
  518. class Sprite_Battler
  519.   include Scene_BattleName
  520. end
  521. module RPG
  522. class Sprite < ::Sprite
  523. #==========================================
  524. def initialize(viewport = nil)
  525. super(viewport)
  526. @_whiten_duration = 0
  527. @_appear_duration = 0
  528. @_escape_duration = 0
  529. @_collapse_duration = 0
  530. @_damage_duration = 0
  531. @_animation_duration = 0
  532. @_blink = false  
  533. @flash_shake = 0
  534. @_damage = []  
  535. @_damage_sp = []
  536. @_total_damage = 0
  537. @_total_damage_duration = 0
  538. @p_dam=0
  539. @hits=0
  540. end
  541. def animation_set_sprites(sprites, cell_data, position)
  542.    for i in 0..15
  543.    sprite = sprites[i]
  544.    pattern = cell_data[i, 0]
  545.    if sprite == nil or pattern == nil or pattern == -1
  546.      sprite.visible = false if sprite != nil
  547.      next
  548.    end
  549.    sprite.visible = true
  550.    sprite.src_rect.set(pattern % 5 * 192, pattern / 5 * 192, 192, 192)
  551.    if position == 3
  552.      if self.viewport != nil
  553.        sprite.x = self.viewport.rect.width / 2
  554.        sprite.y = self.viewport.rect.height - 160
  555.      else
  556.        sprite.x = 320
  557.        sprite.y = 240
  558.      end
  559.      else
  560.      sprite.x = self.x - self.ox + self.src_rect.width / 2
  561.      sprite.y = self.y - self.oy + self.src_rect.height / 2
  562.      sprite.y -= self.src_rect.height / 4 if position == 0
  563.      sprite.y += self.src_rect.height / 4 if position == 2
  564.    end
  565.    sprite.x += cell_data[i, 1]
  566.    sprite.y += cell_data[i, 2]
  567.    if $scene.is_a?(Scene_Battle)
  568.    sprite.z = battler.screen_z+20
  569. else
  570.    sprite.z = 9990
  571.    end
  572.    sprite.ox = 96
  573.    sprite.oy = 96
  574.    sprite.zoom_x = cell_data[i, 3] / 100.0
  575.    sprite.zoom_y = cell_data[i, 3] / 100.0
  576.    sprite.angle = cell_data[i, 4]
  577.    sprite.mirror = (cell_data[i, 5] == 1)
  578.    sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
  579.    sprite.blend_type = cell_data[i, 7]
  580.    end
  581. end
  582. def damage(value, critical)
  583.   dispose_hit
  584.     if value.is_a?(Numeric)
  585.       damage_string = value.abs.to_s
  586.     else
  587.       damage_string = value.to_s
  588.     end
  589.     bitmap = Bitmap.new(300, 150)
  590.     bitmap.font.name = ["黑体","华文行楷", "宋体"]
  591.     bitmap.font.size = 32
  592.     if value.is_a?(Numeric)
  593.   # 分割伤害值字符串
  594.       damage_array = damage_string.scan(/./)
  595.       damage_x = 81 - damage_string.size * 9
  596.   # 会心一击标志打开的情况
  597.       if critical and value != "无效"
  598.   # 显示会心一击图画
  599.         cri_bitmap = RPG::Cache.picture("Critital")
  600.         bitmap.blt(damage_x+cri_bitmap.width, cri_bitmap.height*2, cri_bitmap, Rect.new(0, 0, cri_bitmap.width, cri_bitmap.height))
  601.         Audio.se_play("Audio/SE/"+CRIVOICE,100,100) if CRIVOICE != nil and CRIVOICE != ""
  602.         $game_screen.start_flash(Color.new(255, 5, 5, 155), 5) if CRIFLASH >0
  603.         $game_screen.start_shake(2,9,3) if CRISHAKE >0
  604.       end
  605.   # 伤害值为负的情况下
  606.     dmg_bitmap = RPG::Cache.picture("Normal_Damage")
  607.       if value < 0
  608.   # 调用回复数字表
  609.         bitmap.blt(damage_x-14, 32,dmg_bitmap,Rect.new(dmg_bitmap.width/12*10, 0, dmg_bitmap.width/12, dmg_bitmap.height/2))
  610.       else
  611.   # 调用伤害数字表
  612.         bitmap.blt(damage_x-14, 32, dmg_bitmap,Rect.new(dmg_bitmap.width/12*11, 0, dmg_bitmap.width/12, dmg_bitmap.height/2))
  613.       end
  614.   # 循环伤害值字符串
  615.       for char in damage_array
  616.         number = char.to_i
  617.   # 显示伤害数字
  618.         bitmap.blt(damage_x, 32, dmg_bitmap,
  619.         Rect.new(number * dmg_bitmap.width/12, 0, dmg_bitmap.width/12, dmg_bitmap.height/2))
  620. #################################################################普通伤害数值
  621.         damage_x += dmg_bitmap.width/12 - 4#间距缩小4个像素,可以自行调整
  622. #################################################################普通伤害数值
  623.       end  
  624.     else
  625.       if value == "Miss"
  626.         miss_dmg = RPG::Cache.picture("miss")
  627.         bitmap.blt(miss_dmg.width, 0,miss_dmg, Rect.new(0, 0, miss_dmg.width, miss_dmg.height))
  628.       elsif value == "无效"
  629.         invalid_dmg = RPG::Cache.picture("invalid")
  630.         bitmap.blt(invalid_dmg.width, 0,invalid_dmg, Rect.new(0, 0, invalid_dmg.width,invalid_dmg.height))
  631.       #end
  632.       end
  633.     end
  634. # 伤害值定位
  635.     @_damage_sprite = ::Sprite.new(self.viewport)
  636.     @_damage_sprite.bitmap = bitmap
  637.     @_damage_sprite.ox = 80
  638.     @_damage_sprite.oy = 20
  639.     @_damage_sprite.x = self.x
  640.     @_damage_sprite.y = self.y - self.oy / 2
  641.     @_damage_sprite.z = 3000
  642.     @_damage_duration = 40
  643.     @_damage.push([@_damage_sprite,@_damage_duration-10,0, rand(30) - 15, rand(3)])
  644.     make_total_damage(value)
  645.   end
  646. ##################################################################sp伤害数值
  647. def damage_sp(value, critical)
  648.   dispose_hit
  649.     if value.is_a?(Numeric)
  650.       damage_string = value.abs.to_s
  651.     else
  652.       damage_string = value.to_s
  653.     end
  654.     bitmap = Bitmap.new(300, 150)
  655.     bitmap.font.name = ["黑体","华文行楷", "宋体"]
  656.     bitmap.font.size = 32
  657.     if value.is_a?(Numeric)
  658.   # 分割伤害值字符串
  659.       damage_array = damage_string.scan(/./)
  660.       damage_x = 81 - damage_string.size * 9
  661.   # 会心一击标志打开的情况
  662.       if critical and value != "无效"
  663.   # 显示会心一击图画
  664.         cri_bitmap = RPG::Cache.picture("Critital")
  665.         bitmap.blt(damage_x+cri_bitmap.width, cri_bitmap.height*2, cri_bitmap, Rect.new(0, 0, cri_bitmap.width, cri_bitmap.height))
  666.         Audio.se_play("Audio/SE/"+CRIVOICE,100,100) if CRIVOICE != nil and CRIVOICE != ""
  667.         $game_screen.start_flash(Color.new(255, 5, 5, 155), 5) if CRIFLASH >0
  668.         $game_screen.start_shake(2,9,3) if CRISHAKE >0
  669.       end
  670.   # 伤害值为负的情况下
  671.     dmg_bitmap = RPG::Cache.picture("Normal_Damage")
  672.       if value < 0
  673.   # 调用回复数字表
  674.         bitmap.blt(damage_x-14, 32,dmg_bitmap,Rect.new(dmg_bitmap.width/12*10, dmg_bitmap.height/2, dmg_bitmap.width/12, dmg_bitmap.height/2))
  675.       else
  676.   # 调用伤害数字表
  677.         bitmap.blt(damage_x-14, 32, dmg_bitmap,Rect.new(dmg_bitmap.width/12*11, dmg_bitmap.height/2, dmg_bitmap.width/12, dmg_bitmap.height/2))
  678.       end
  679.   # 循环伤害值字符串
  680.       for char in damage_array
  681.         number = char.to_i
  682.   # 显示伤害数字
  683.         bitmap.blt(damage_x, 32, dmg_bitmap,
  684.         Rect.new(number * dmg_bitmap.width/12, dmg_bitmap.height/2, dmg_bitmap.width/12, dmg_bitmap.height/2))
  685. #################################################################普通伤害数值
  686.         damage_x += dmg_bitmap.width/12 - 4#间距缩小4个像素,可以自行调整
  687. #################################################################普通伤害数值
  688.       end  
  689.     else
  690.       if value == "Miss"
  691.         miss_dmg = RPG::Cache.picture("miss")
  692.         bitmap.blt(miss_dmg.width, 0,miss_dmg, Rect.new(0, 0, miss_dmg.width, miss_dmg.height))
  693.       elsif value == "无效"
  694.         invalid_dmg = RPG::Cache.picture("invalid")
  695.         bitmap.blt(invalid_dmg.width, 0,invalid_dmg, Rect.new(0, 0, invalid_dmg.width,invalid_dmg.height))
  696.       #end
  697.       end
  698.     end
  699. # 伤害值定位
  700.     @_damage_sprite = ::Sprite.new(self.viewport)
  701.     @_damage_sprite.bitmap = bitmap
  702.     @_damage_sprite.ox = 80
  703.     @_damage_sprite.oy = 20
  704.     @_damage_sprite.x = self.x
  705.     @_damage_sprite.y = self.y - self.oy / 2
  706.     @_damage_sprite.z = 3000
  707.     @_damage_duration = 40
  708.     @_damage_sp.push([@_damage_sprite,@_damage_duration-10,0, rand(30) - 15, rand(3)])
  709.    # make_total_damage(value)
  710.   end  
  711. def hit
  712. # 如果伤害值是数值
  713. # 转为字符串
  714. value=@hits
  715. hits_string = value.to_s
  716. # 初始化位图
  717. bitmap = Bitmap.new(320, 64)
  718. bitmap.font.name = "Arial Black"
  719. bitmap.font.size = 32
  720. # 分割伤害值字符串
  721. hits_array = hits_string.scan(/./)
  722. hits_x = 81 - hits_string.size * 18.1
  723. rect_y = 0
  724. # 循环伤害值字符串
  725. for char in hits_array
  726. number = char.to_i
  727. # 显示伤害数字
  728. combo_num = RPG::Cache.picture("combo_num")
  729. bitmap.blt(hits_x, 0, combo_num,
  730. Rect.new(number * combo_num.width/10, 0, combo_num.width/10, combo_num.height))
  731. #################################################################连击数数值
  732. hits_x += combo_num.width/10 - 3#间距缩小3个像素,可以自行调整
  733. #################################################################连击数数值
  734. end
  735. combo_tx = RPG::Cache.picture("combo_text")
  736. bitmap.blt(hits_x, 0,combo_tx ,
  737. Rect.new(0, 0, combo_tx.width, combo_tx.height))
  738. # 伤害值定位
  739. @_hits_sprite = ::Sprite.new(self.viewport)
  740. @_hits_sprite.bitmap = bitmap
  741. @_hits_sprite.ox = 81
  742. @_hits_sprite.oy = 20
  743. @_hits_sprite.x = 500
  744. @_hits_sprite.y = 100
  745. @_hits_sprite.opacity = HITSWITCH > 0 ? 255 : 0
  746. @_hits_sprite.z = 3000
  747. @_hits_duration = 40
  748. end
  749. #--------------------------------------------------------------------------
  750. # ● 总伤害处理
  751. #--------------------------------------------------------------------------
  752. def make_total_damage(value)
  753. if value.is_a?(Numeric) and SHOW_TOTAL_DAMAGE > 0
  754. @_total_damage += value
  755. # 绝对值转为字符串
  756. damage_string = @_total_damage.abs.to_s
  757. else
  758. return
  759. end
  760. # 初始化位图
  761. bitmap = Bitmap.new(350, 150)
  762. bitmap.font.name = "Arial Black"
  763. bitmap.font.size = 32
  764. # 伤害值是数值的情况下
  765. if value.is_a?(Numeric)
  766. # 分割伤害值字符串
  767. damage_array = damage_string.scan(/./)
  768. damage_x = 40 - damage_string.size * 9
  769. # 伤害值为负的情况下
  770. name=RPG::Cache.picture("total_damage")
  771. # 循环伤害值字符串
  772. for char in damage_array
  773. number = char.to_i
  774. # 显示伤害数字
  775. bitmap.blt(damage_x, 0, name,
  776. Rect.new(number * name.width/10, 0, name.width/10, name.height))
  777. #################################################################总伤害数值
  778. damage_x += name.width/10 - 3 #间距缩小3个像素,可以自行调整
  779. #################################################################总伤害数值
  780. end
  781. end
  782. if @_total_damage_sprite.nil?
  783. @_total_damage_sprite = ::Sprite.new(self.viewport)
  784. @_total_damage_sprite.ox = 80
  785. @_total_damage_sprite.oy = 40
  786. @_total_damage_sprite.z = 3000
  787. end
  788. @_total_damage_sprite.bitmap = bitmap
  789. @_total_damage_sprite.zoom_x = 1.0
  790. @_total_damage_sprite.zoom_y = 1.0
  791. @_total_damage_sprite.x = self.x
  792. @_total_damage_sprite.y = self.y - self.oy / 2
  793. @_total_damage_sprite.z = 3001
  794. @_total_damage_duration = 80
  795. #hit数描绘
  796. @hits+=1
  797. if @_total_damage > 0
  798.   hit
  799. end
  800. end
  801. def animation(animation, hit, battler_damage="", battler_damage_sp="",battler_critical=false)
  802. dispose_animation
  803. @battler_damage = battler_damage
  804. @battler_damage_sp = battler_damage_sp
  805. @battler_critical = battler_critical
  806. @_animation = animation
  807. return if @_animation == nil
  808. @_animation_hit = hit
  809. @_animation_duration = @_animation.frame_max
  810. animation_name = @_animation.animation_name
  811. animation_hue = @_animation.animation_hue
  812. bitmap = RPG::Cache.animation(animation_name, animation_hue)
  813. for timing in @_animation.timings
  814. quanzhong = animation_process_timing(timing, @_animation_hit,true)
  815. @all_quanzhong += quanzhong
  816. @_last_frame = timing.frame if quanzhong != 0
  817. end
  818. if @@_reference_count.include?(bitmap)
  819. @@_reference_count[bitmap] += 1
  820. else
  821. @@_reference_count[bitmap] = 1
  822. end  
  823. if $scene.is_a?(Scene_Battle)
  824. if $scene.animation1_id == @battler.animation_id
  825. @battler_damage = ""
  826. @battler_damage_sp = ""
  827. end
  828. end
  829. @_animation_sprites = []
  830. if @_animation.position != 3 or not @@_animations.include?(animation)
  831. for i in 0..15
  832. sprite = ::Sprite.new(self.viewport)
  833. sprite.bitmap = bitmap
  834. sprite.visible = false
  835. @_animation_sprites.push(sprite)
  836. end
  837. unless @@_animations.include?(animation)
  838. @@_animations.push(animation)
  839. end
  840. end
  841. update_animation
  842. end  
  843. def dispose_damage
  844. for damage in @_damage.reverse
  845. damage[0].bitmap.dispose
  846. damage[0].dispose
  847. @_damage.delete(damage)
  848. end
  849. for damage_sp in @_damage_sp.reverse
  850. damage_sp[0].bitmap.dispose
  851. damage_sp[0].dispose
  852. @_damage_sp.delete(damage_sp)
  853. end
  854. @_total_damage = 0
  855. @_last_frame = -1
  856. if @_total_damage_sprite != nil
  857. @_total_damage_duration = 0
  858. @_total_damage_sprite.bitmap.dispose
  859. @_total_damage_sprite.dispose
  860. @_total_damage_sprite = nil
  861. end
  862. end
  863. def dispose_hit
  864. if @_hits_sprite != nil
  865. @_hits_sprite.bitmap.dispose
  866. @_hits_sprite.dispose
  867. @_hits_sprite = nil
  868. end
  869. end
  870. def dispose_animation
  871. @battler_damage = nil
  872. @battler_damage_sp = nil
  873. @battler_critical = nil
  874. @all_quanzhong = 1
  875. @_total_damage = 0
  876. @_last_frame = -1
  877. if @_animation_sprites != nil
  878. sprite = @_animation_sprites[0]
  879. if sprite != nil
  880. @@_reference_count[sprite.bitmap] -= 1
  881. if @@_reference_count[sprite.bitmap] == 0
  882. sprite.bitmap.dispose
  883. end
  884. end
  885. for sprite in @_animation_sprites
  886. sprite.dispose
  887. end
  888. @_animation_sprites = nil
  889. @_animation = nil
  890. end
  891. end
  892. def update
  893. super
  894. if @_whiten_duration > 0
  895. @_whiten_duration -= 1
  896. self.color.alpha = 128 - (16 - @_whiten_duration) * 10
  897. end
  898. if @_appear_duration > 0
  899. @_appear_duration -= 1
  900. self.opacity = (16 - @_appear_duration) * 16
  901. end
  902. if @_escape_duration > 0
  903. @_escape_duration -= 1
  904. self.opacity = 256 - (32 - @_escape_duration) * 10
  905. end
  906. if @_collapse_duration > 0
  907. @_collapse_duration -= 1
  908. self.opacity = 256 - (48 - @_collapse_duration) * 6
  909. end
  910. if @_damage_duration > 0
  911. @_damage_duration -= 1
  912. for damage in @_damage
  913. damage[0].x = self.x + self.viewport.rect.x -
  914. self.ox + self.src_rect.width / 2 +
  915. (40 - damage[1]) * damage[3] / 10
  916. damage[0].y -= damage[4]+damage[1]/10
  917. damage[0].opacity = damage[1]*20
  918. damage[1] -= 1
  919. if damage[1]==0
  920. damage[0].bitmap.dispose
  921. damage[0].dispose
  922. @_damage.delete(damage)
  923. next
  924. end
  925. end
  926. for damage_sp in @_damage_sp
  927. damage_sp[0].x = self.x + self.viewport.rect.x -
  928. self.ox + self.src_rect.width / 2 +
  929. (40 - damage_sp[1]) * damage_sp[3] / 10
  930. damage_sp[0].y -= damage_sp[4]+damage_sp[1]/10
  931. damage_sp[0].opacity = damage_sp[1]*20
  932. damage_sp[1] -= 1
  933. if damage_sp[1]==0
  934. damage_sp[0].bitmap.dispose
  935. damage_sp[0].dispose
  936. @_damage_sp.delete(damage_sp)
  937. next
  938. end
  939. end
  940. end
  941. if @_total_damage_duration > 0
  942. @_total_damage_duration -= 1
  943. @_total_damage_sprite.y -= 1 if @_total_damage_duration % 2 == 0
  944. if @_total_damage_sprite.zoom_x > 1.0
  945. @_total_damage_sprite.zoom_x -= 0.05
  946. end
  947. if @_total_damage_sprite.zoom_y > 1.0
  948. @_total_damage_sprite.zoom_y -= 0.05
  949. end
  950. @_total_damage_sprite.opacity = 256 - (24 - @_total_damage_duration) * 16
  951. if @_total_damage_duration <= 0
  952. dispose_hit
  953. @_total_damage = 0
  954. @_total_damage_duration = 0
  955. @_total_damage_sprite.bitmap.dispose
  956. @_total_damage_sprite.dispose
  957. @_total_damage_sprite = nil
  958. end
  959. end
  960. #=======================================
  961.     if @_animation != nil and (Graphics.frame_count % 2 == 0)
  962.       @_animation_duration -= 1
  963.       update_animation
  964.     end
  965.   if @_loop_animation != nil and (Graphics.frame_count % 2 == 0)
  966.       update_loop_animation
  967.       @_loop_animation_index += 1
  968.       @_loop_animation_index %= @_loop_animation.frame_max
  969.     end
  970.   if @_blink
  971.     @_blink_count = (@_blink_count + 1) % 32
  972.       if @_blink_count < 16
  973.         alpha = (16 - @_blink_count) * 6
  974.       else
  975.         alpha = (@_blink_count - 16) * 6
  976.       end
  977.       self.color.set(255, 255, 255, alpha)
  978.     end
  979.     @@_animations.clear
  980.   end
  981. def update_animation
  982.   if @_animation_duration > 0
  983.     frame_index = @_animation.frame_max - @_animation_duration
  984.     cell_data = @_animation.frames[frame_index].cell_data
  985.     position = @_animation.position
  986.     animation_set_sprites(@_animation_sprites, cell_data, position)
  987.       for timing in @_animation.timings
  988.         if timing.frame == frame_index
  989.           t = 1.0 * animation_process_timing(timing, @_animation_hit)
  990.           ts = 1.0 * animation_process_timing(timing, @_animation_hit)
  991.           if timing.se.name != ""
  992.             se=timing.se
  993.             Audio.se_play("Audio/SE/" + se.name, se.volume, se.pitch)
  994.           end
  995.           if @battler_damage.is_a?(Numeric) and t != 0
  996.             if @battler.guarding?
  997.               @battler.startactive = "防御" if @battler_damage > 0
  998.            else
  999.               @battler.startactive = "受伤" if @battler_damage > 0
  1000.             end
  1001.             t *= @battler_damage
  1002.             t /= @all_quanzhong
  1003.             ts *= @battler_damage_sp
  1004.             ts /= @all_quanzhong
  1005.             t = t.to_i
  1006.             ts = ts.to_i
  1007.   if frame_index != @_last_frame
  1008.     @p_dam+= t
  1009.   end
  1010.       if frame_index == @_last_frame
  1011.         t=@battler_damage-@p_dam
  1012.       end
  1013.     if frame_index == @_last_frame
  1014.       @_total_damage = @battler_damage - t
  1015.       @p_dam=0
  1016.     end
  1017.       damage(t,@battler_critical) if $damage_hp == true
  1018.       damage_sp(ts,@battler_critical) if $damage_sp == true
  1019.     if frame_index == @_last_frame
  1020.       @hits=0
  1021.      end
  1022.       elsif !@battler_damage.is_a?(Numeric) and timing.flash_scope != 0
  1023.         damage(@battler_damage,@battler_critical)
  1024.         damage_sp(@battler_damage_sp,@battler_critical) if $damage_sp == true
  1025.        end
  1026.       end
  1027.       end
  1028.     else
  1029.       dispose_animation
  1030.     end
  1031.   end
  1032. def animation_process_timing(timing, hit,dontflash=false)
  1033.   if (timing.condition == 0) or
  1034.     (timing.condition == 1 and hit == true) or
  1035.     (timing.condition == 2 and hit == false)
  1036.   case timing.flash_scope
  1037.     when 1
  1038.       unless dontflash
  1039.         self.flash(timing.flash_color, timing.flash_duration * 2)
  1040.         if @_total_damage >0
  1041.           @flash_shake_switch = true
  1042.           @flash_shake = 10
  1043.         end
  1044.       end
  1045.       return timing.flash_color.alpha * timing.flash_duration
  1046.     when 2
  1047.       unless dontflash
  1048.         if self.viewport != nil
  1049.           self.viewport.flash(timing.flash_color, timing.flash_duration * 2)
  1050.         end
  1051.       end
  1052.       return timing.flash_color.alpha * timing.flash_duration
  1053.     when 3
  1054.       unless dontflash
  1055.         self.flash(nil, timing.flash_duration * 2)
  1056.       end
  1057.         return timing.flash_color.alpha * timing.flash_duration
  1058.       end
  1059.     end
  1060.       return 0
  1061.     end
  1062.   end
  1063. end
  1064.  
  1065. class Sprite_Battler < RPG::Sprite
  1066.   def initialize(viewport, battler = nil)
  1067.     super(viewport)
  1068.     @battler = battler
  1069.     @battler_visible = false
  1070.     @flash_shake_switch = true
  1071.     @number = 0#初始化编号
  1072.   end
  1073.   def update
  1074.     super
  1075.     # 战斗者为 nil 的情况下
  1076.     if @battler == nil
  1077.       self.bitmap = nil
  1078.       loop_animation(nil)
  1079.       return
  1080.     end
  1081.     # 文件名和色相与当前情况有差异的情况下
  1082.     if @battler.battler_name != @battler_name or
  1083.        @battler.battler_hue != @battler_hue
  1084.       # 获取、设置位图
  1085.       @battler_name = @battler.battler_name
  1086.       @battler_hue = @battler.battler_hue
  1087.       self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
  1088.       @width = bitmap.width
  1089.       @height = bitmap.height
  1090.       self.ox = @width / 2
  1091.       self.oy = @height
  1092.       # 如果是战斗不能或者是隐藏状态就把透明度设置成 0
  1093.       if @battler.dead? or @battler.hidden
  1094.         self.opacity = 0  if DEADPIC != 1
  1095.       end
  1096.     end
  1097.     ###################################万兽熊最高#########################################
  1098.         if @battler.startactive == "移动" or @battler.startactive == "返回"
  1099.       if Graphics.frame_count % 4 == 0
  1100.         unless BattlerName[@battler.name].nil?
  1101.           @number = (@number + 1) % BattlerName[@battler.name][@battler.startactive].size
  1102.           self.bitmap = RPG::Cache.battler(BattlerName[@battler.name][@battler.startactive][@number], @battler_hue)
  1103.         end
  1104.       end
  1105.     elsif @battler.startactive == "死亡"
  1106.        if Graphics.frame_count % 4 == 0
  1107.         unless BattlerName[@battler.name].nil?
  1108.           if @number +1 <= BattlerName[@battler.name][@battler.startactive].size
  1109.           self.bitmap = RPG::Cache.battler(BattlerName[@battler.name][@battler.startactive][@number], @battler_hue)
  1110.           @number += 1
  1111.         else
  1112.           self.bitmap = RPG::Cache.battler(BattlerName[@battler.name][@battler.startactive][BattlerName[@battler.name][@battler.startactive].size-1], @battler_hue)
  1113.           end
  1114.         end
  1115.       end
  1116.       else
  1117.       if Graphics.frame_count % 10 == 0
  1118.         unless BattlerName[@battler.name].nil?
  1119.           @number = (@number + 1) % BattlerName[@battler.name][@battler.startactive].size
  1120.           self.bitmap = RPG::Cache.battler(BattlerName[@battler.name][@battler.startactive][@number], @battler_hue)
  1121.         end
  1122.       end
  1123.     end
  1124.     #######################################################################################
  1125.     # 动画 ID 与当前的情况有差异的情况下
  1126.     if @battler.damage == nil and
  1127.        @battler.state_animation_id != @state_animation_id
  1128.       @state_animation_id = @battler.state_animation_id
  1129.       loop_animation($data_animations[@state_animation_id])
  1130.     end
  1131.     # 应该被显示的角色的情况下
  1132.    if NACTSWITCH > 0
  1133.     if @battler.is_a?(Game_Actor) and @battler_visible
  1134.       # 不是主状态的时候稍稍降低点透明度
  1135.       if $game_temp.battle_main_phase
  1136.         self.opacity += 3 if self.opacity < 255
  1137.       else
  1138.         self.opacity -= 3 if self.opacity > 207
  1139.       end
  1140.     end
  1141.   end
  1142.     if @battler.blink
  1143.       blink_on
  1144.     else
  1145.       blink_off
  1146.     end
  1147.     unless @battler_visible
  1148.       if not @battler.hidden and not @battler.dead? and
  1149.          (@battler.damage == nil or @battler.damage_pop)
  1150.         appear
  1151.         @battler_visible = true
  1152.       end
  1153.     end
  1154.     if @battler_visible
  1155.       if @battler.hidden
  1156.         $game_system.se_play($data_system.escape_se)
  1157.         escape
  1158.         @battler_visible = false
  1159.       end
  1160.       if @battler.white_flash
  1161.         whiten
  1162.         @battler.white_flash = false   
  1163.       end
  1164.         if @battler.animation_id != 0
  1165.         animation = $data_animations[@battler.animation_id]
  1166.         animation(animation, @battler.animation_hit,@battler.damage,@battler.damage_sp, @battler.critical)
  1167.         @battler.animation_id = 0
  1168.       end
  1169.       if @battler.damage_pop
  1170.         @battler.damage = nil
  1171.         @battler.damage_sp = 0
  1172.         @battler.critical = false
  1173.         @battler.damage_pop = false
  1174.       end
  1175.       if @battler.damage == nil and @battler.dead?
  1176.         if DEADPIC >0
  1177.           @battler.startactive = "死亡"
  1178.           else
  1179.         if @battler.is_a?(Game_Enemy)
  1180.           $game_system.se_play($data_system.enemy_collapse_se)
  1181.         else
  1182.           $game_system.se_play($data_system.actor_collapse_se)
  1183.         end
  1184.         collapse
  1185.         @battler_visible = false
  1186.         end
  1187.       end
  1188.     end
  1189.      self.x = @battler.screen_x
  1190.      self.y = @battler.screen_y
  1191.      self.z = @battler.screen_z
  1192.   end
  1193. end
  1194.  
  1195. class Spriteset_Battle
  1196. alias bearrpg_initialize initialize
  1197.   def initialize
  1198.     @enemy_sprites = []
  1199.     for enemy in $game_troop.enemies.reverse
  1200.       #####修改敌人显示端口,与角色一样。
  1201.       @enemy_sprites.push(Sprite_Battler.new(@viewport2, enemy))
  1202.     end
  1203.     bearrpg_initialize
  1204.   end
  1205. end
  1206.  
  1207. class Arrow_Enemy < Arrow_Base
  1208.   def update
  1209.     super
  1210.     $game_troop.enemies.size.times do
  1211.       break if self.enemy.exist?
  1212.       @index += 1
  1213.       @index %= $game_troop.enemies.size
  1214.     end
  1215.     if Input.repeat?(Input::UP)
  1216.       $game_system.se_play($data_system.cursor_se)
  1217.       $game_troop.enemies.size.times do
  1218.         @index += 1
  1219.         @index %= $game_troop.enemies.size
  1220.         break if self.enemy.exist?
  1221.       end
  1222.     end
  1223.     if Input.repeat?(Input::DOWN)
  1224.       $game_system.se_play($data_system.cursor_se)
  1225.       $game_troop.enemies.size.times do
  1226.         @index += $game_troop.enemies.size - 1
  1227.         @index %= $game_troop.enemies.size
  1228.         break if self.enemy.exist?
  1229.       end
  1230.     end
  1231.     if self.enemy != nil
  1232.       self.x = self.enemy.screen_x
  1233.       self.y = self.enemy.screen_y
  1234.     end
  1235.   end
  1236. end
  1237.  
  1238. class Arrow_Actor < Arrow_Base
  1239.   def update
  1240.     super
  1241.     if Input.repeat?(Input::UP)
  1242.       $game_system.se_play($data_system.cursor_se)
  1243.       @index += 1
  1244.       @index %= $game_party.actors.size
  1245.     end
  1246.     if Input.repeat?(Input::DOWN)
  1247.       $game_system.se_play($data_system.cursor_se)
  1248.       @index += $game_party.actors.size - 1
  1249.       @index %= $game_party.actors.size
  1250.     end
  1251.     if self.actor != nil
  1252.       self.x = self.actor.screen_x
  1253.       self.y = self.actor.screen_y
  1254.     end
  1255.   end
  1256. end
  1257.  
  1258. class Scene_Battle
  1259. include Scene_BattleName
  1260. attr_reader :animation1_id
  1261.   def main
  1262.     $game_temp.in_battle = true
  1263.     $game_temp.battle_turn = 0
  1264.     $game_temp.battle_event_flags.clear
  1265.     $game_temp.battle_abort = false
  1266.     $game_temp.battle_main_phase = false
  1267.     $game_temp.battleback_name = $game_map.battleback_name
  1268.     $game_temp.forcing_battler = nil
  1269.     @_move_duration = 0
  1270.     $game_system.battle_interpreter.setup(nil, 0)
  1271.     @troop_id = $game_temp.battle_troop_id
  1272.     $game_troop.setup(@troop_id)
  1273.     s1 = $data_system.words.attack
  1274.     s2 = $data_system.words.skill
  1275.     s3 = $data_system.words.guard
  1276.     s4 = $data_system.words.item
  1277.     @actor_command_window = Window_Command.new(160, [s1, s2, s3, s4])
  1278.     @actor_command_window.z = 900
  1279.     @actor_command_window.y = 160
  1280.     @actor_command_window.back_opacity = 160
  1281.     @actor_command_window.active = false
  1282.     @actor_command_window.visible = false
  1283.     @party_command_window = Window_PartyCommand.new
  1284.     @party_command_window.z = 910
  1285.     @help_window = Window_Help.new
  1286.     @help_window.back_opacity = 160
  1287.     @help_window.z = 920
  1288.     @help_window.visible = false
  1289.     @status_window = Window_BattleStatus.new
  1290.     @status_window.z = 930
  1291.     @message_window = Window_Message.new
  1292.     @message_window.z = 940
  1293.     @spriteset = Spriteset_Battle.new
  1294.     @wait_count = 0
  1295.     if $data_system.battle_transition == ""
  1296.       Graphics.transition(20)
  1297.     else
  1298.       Graphics.transition(40, "Graphics/Transitions/" +
  1299.         $data_system.battle_transition)
  1300.     end
  1301.     start_phase1
  1302.     loop do
  1303.       Graphics.update
  1304.       Input.update
  1305.       update
  1306.       if $scene != self
  1307.         break
  1308.       end
  1309.     end
  1310.     $game_map.refresh
  1311.     Graphics.freeze
  1312.     @actor_command_window.dispose
  1313.     @party_command_window.dispose
  1314.     @help_window.dispose
  1315.     @status_window.dispose
  1316.     @message_window.dispose
  1317.     if @skill_window != nil
  1318.       @skill_window.dispose
  1319.     end
  1320.     if @item_window != nil
  1321.       @item_window.dispose
  1322.     end
  1323.     if @result_window != nil
  1324.       @result_window.dispose
  1325.     end
  1326.     @spriteset.dispose
  1327.     if $scene.is_a?(Scene_Title)
  1328.       Graphics.transition
  1329.       Graphics.freeze
  1330.     end
  1331.     if $BTEST and not $scene.is_a?(Scene_Gameover)
  1332.       $scene = nil
  1333.     end
  1334.   end
  1335.   def start_phase1
  1336.     # 转移到回合 1
  1337.     @phase = 1
  1338.     # 清除全体同伴的行动
  1339.     $game_party.clear_actions
  1340.     for actor in $game_party.actors
  1341.      actor.startactive = actor.hp>0? "待机" : "死亡"
  1342.     end
  1343.     # 设置战斗事件
  1344.     setup_battle_event
  1345.   end
  1346.   alias bearrpg_start_phase5 start_phase5
  1347. def start_phase5
  1348.    bearrpg_start_phase5
  1349.     @result_window.z = 999
  1350.     @phase5_wait_count = 100
  1351.   end
  1352.   def start_enemy_select
  1353.     @enemy_arrow = Arrow_Enemy.new(@spriteset.viewport2)
  1354.     @enemy_arrow.help_window = @help_window
  1355.     @actor_command_window.active = false
  1356.     @actor_command_window.visible = false
  1357.   end
  1358.   alias bearrpg_start_skill_select start_skill_select
  1359.    def start_skill_select
  1360.       bearrpg_start_skill_select
  1361.       @skill_window.z = 999
  1362.     end
  1363.    alias bearrpg_start_item_select start_item_select
  1364.     def start_item_select
  1365.       bearrpg_start_item_select
  1366.       @item_window.z = 999
  1367.     end
  1368.   def move(active_battler, target, ox, oy, 返回标记 = false)
  1369.     ta_x = target[0]
  1370.     ta_y = target[1]
  1371.     if 返回标记
  1372.       active_battler.movex = (active_battler.movex * (@_move_duration - 1) + ta_x.to_f - ox) / @_move_duration
  1373.       active_battler.movey = (active_battler.movey * (@_move_duration - 1) + ta_y.to_f - oy) / @_move_duration
  1374.     else
  1375.       if @active_battler.is_a?(Game_Enemy)
  1376.         active_battler.movex = (active_battler.movex * (@_move_duration - 1) + ta_x.to_f - ox ) / @_move_duration
  1377.         active_battler.movey = (active_battler.movey * (@_move_duration - 1) + ta_y.to_f - oy ) / @_move_duration
  1378.       else
  1379.         active_battler.movex =  (active_battler.movex * (@_move_duration - 1) + ta_x.to_f - ox ) / @_move_duration
  1380.         active_battler.movey = (active_battler.movey * (@_move_duration - 1) + ta_y.to_f - oy ) / @_move_duration
  1381.       end
  1382.     end
  1383.   end
  1384.   def update_phase4_step3
  1385.     ####普通攻击的场合############################################################
  1386.     if @active_battler.current_action.basic == 0 and
  1387.       @active_battler.current_action.kind == 0
  1388.       #开始执行移动
  1389.      if not @active_battler.element_rate(UNMOVE)>100# 如果属性“不移动”不大于100
  1390.         @active_battler.startactive = "移动"
  1391.         @oldxy = [@active_battler.screen_x,@active_battler.screen_y]
  1392.         ox,oy = @active_battler.screen_x,@active_battler.screen_y
  1393.       if @active_battler.element_rate(HOMOVE)>100# 如果属性“半距离”大于100
  1394.         @_move_duration = Move_Duration/2
  1395.        while @_move_duration > 0
  1396.         Graphics.update
  1397.         Input.update
  1398.         @spriteset.update
  1399.         if @target_battlers[0].is_a?(Game_Actor)
  1400.         tag = [@target_battlers[0].screen_x-@target_battlers[0].width-(@target_battlers[0].screen_x-ox).abs/2.abs,@target_battlers[0].screen_y+1]
  1401.         else
  1402.         tag = [(@target_battlers[0].screen_x+@target_battlers[0].width/1.5)+(@target_battlers[0].screen_x-ox).abs/2,@target_battlers[0].screen_y+2]
  1403.         end
  1404.         move(@active_battler, tag, ox, oy)
  1405.         @_move_duration -= 1
  1406.       end
  1407.     else
  1408.       @_move_duration = Move_Duration
  1409.         while @_move_duration > 0
  1410.         Graphics.update
  1411.         Input.update
  1412.         @spriteset.update
  1413.         if @target_battlers[0].is_a?(Game_Actor)
  1414.         tag = [@target_battlers[0].screen_x-@target_battlers[0].width/2,@target_battlers[0].screen_y+1]
  1415.         else
  1416.         tag = [@target_battlers[0].screen_x+@target_battlers[0].width/1.5,@target_battlers[0].screen_y+2]
  1417.         end
  1418.         move(@active_battler, tag, ox, oy)
  1419.         @_move_duration -= 1
  1420.       end
  1421.       end
  1422.     end
  1423.    ####普通攻击的场合############################################################
  1424.     elsif @active_battler.current_action.kind == 1
  1425.     ####使用特技的场合############################################################
  1426.       if not @skill.element_set.include?(UNMOVE)# 如果技能不包含“不移动属性”
  1427.         @active_battler.startactive = "移动"
  1428.         @oldxy = [@active_battler.screen_x,@active_battler.screen_y]
  1429.         ox,oy = @active_battler.screen_x,@active_battler.screen_y
  1430.       if @skill.element_set.include?(HOMOVE)#如果技能不包含“半距离”属性
  1431.         @_move_duration = Move_Duration/2
  1432.        while @_move_duration > 0
  1433.         Graphics.update
  1434.         Input.update
  1435.         @spriteset.update
  1436.         if @target_battlers[0].is_a?(Game_Actor)
  1437.         tag = [@target_battlers[0].screen_x-@target_battlers[0].width-(@target_battlers[0].screen_x-ox).abs/2.abs,@target_battlers[0].screen_y+1]
  1438.         else
  1439.         tag = [(@target_battlers[0].screen_x+@target_battlers[0].width/1.5)+(@target_battlers[0].screen_x-ox).abs/2,@target_battlers[0].screen_y+2]
  1440.         end
  1441.         move(@active_battler, tag, ox, oy)
  1442.         @_move_duration -= 1
  1443.       end
  1444.     else
  1445.       @_move_duration = Move_Duration
  1446.         while @_move_duration > 0
  1447.         Graphics.update
  1448.         Input.update
  1449.         @spriteset.update
  1450.         if @target_battlers[0].is_a?(Game_Actor)
  1451.         tag = [@target_battlers[0].screen_x-@target_battlers[0].width,@target_battlers[0].screen_y+1]
  1452.         else
  1453.         tag = [@target_battlers[0].screen_x+@target_battlers[0].width/1.5,@target_battlers[0].screen_y+2]
  1454.         end
  1455.         move(@active_battler, tag, ox, oy)
  1456.         @_move_duration -= 1
  1457.       end
  1458.       end
  1459.     end
  1460.    #####使用特技的场合##############################################################
  1461. end
  1462. if @active_battler.startactive != "防御"
  1463.     @active_battler.startactive = "待机"
  1464.    end
  1465.     # 行动方动画 (ID 为 0 的情况下是白色闪烁)
  1466.     if @animation1_id == 0
  1467.       @active_battler.white_flash = true
  1468.     else
  1469.       @active_battler.animation_id = @animation1_id
  1470.       @active_battler.animation_hit = true
  1471.     end
  1472.     for target in @target_battlers
  1473.       if target.guarding? and target.damage.is_a?(Numeric)
  1474.         target.startactive = "防御" if target.damage > 0
  1475.         end
  1476.       target.animation_id = @animation2_id
  1477.       target.animation_hit = (target.damage != "Miss")
  1478.     end
  1479.     # 移至步骤 4
  1480.     @phase4_step = 4
  1481.   end
  1482.   ##############################################################################
  1483.   def update_phase4_step4
  1484.    ###########################万兽熊最高########################################
  1485.     # 对像方动画
  1486.      for target in @target_battlers
  1487.        if target.damage != nil
  1488.          target.damage_pop = true
  1489.        end
  1490.      end
  1491.     # 限制动画长度、最低 8 帧
  1492.   #  @wait_count = 8
  1493.   ##############################################################################
  1494.     # 移至步骤 5
  1495.     @phase4_step = 5
  1496.   end
  1497. ####################万兽熊最高############################
  1498.   def update_phase4_step5
  1499.     # 隐藏帮助窗口
  1500.     @help_window.visible = false
  1501.     if @active_battler.current_action.basic == 0 and
  1502.       @active_battler.current_action.kind == 0
  1503.    ####普通攻击的场合############################################################   
  1504.       #执行返回
  1505.     if not @active_battler.element_rate(UNMOVE)>100# 如果属性“不移动”不大于100
  1506.       @active_battler.startactive = "返回"
  1507.       if @active_battler.element_rate(HOMOVE)>100# 如果属性“半距离”大于100
  1508.       @_move_duration = Move_Duration/2
  1509.       else
  1510.       @_move_duration = Move_Duration   
  1511.       end
  1512.       ox,oy = @active_battler.screen_x - @active_battler.movex,\
  1513.       @active_battler.screen_y - @active_battler.movey
  1514.       while @_move_duration > 0
  1515.         Graphics.update
  1516.         Input.update
  1517.         @spriteset.update
  1518.         move(@active_battler, @oldxy, ox, oy, true)
  1519.         @_move_duration -= 1
  1520.       end
  1521.     end
  1522.    ####普通攻击的场合############################################################
  1523.     elsif @active_battler.current_action.kind == 1
  1524.       if not @skill.element_set.include?(UNMOVE)#如果技能不包含“不移动”属性
  1525.       @active_battler.startactive = "返回"
  1526.       if @skill.element_set.include?(HOMOVE)#如果技能包含“半距离”属性
  1527.       @_move_duration = Move_Duration/2
  1528.       else
  1529.       @_move_duration = Move_Duration   
  1530.       end
  1531.       ox,oy = @active_battler.screen_x - @active_battler.movex,\
  1532.       @active_battler.screen_y - @active_battler.movey
  1533.       while @_move_duration > 0
  1534.         Graphics.update
  1535.         Input.update
  1536.         @spriteset.update
  1537.         move(@active_battler, @oldxy, ox, oy, true)
  1538.         @_move_duration -= 1
  1539.       end
  1540.     end
  1541.    ####使用特技的场合############################################################
  1542. end
  1543. if @active_battler.startactive != "防御"
  1544.     @active_battler.startactive = "待机"
  1545.    end
  1546.     # 刷新状态窗口
  1547.     @status_window.refresh
  1548.     # 显示伤害
  1549.     for target in @target_battlers
  1550.       target.startactive = "待机"
  1551.       if target.damage != nil
  1552.         target.damage_pop = true
  1553.       end
  1554.     end
  1555.     # 移至步骤 6
  1556.     @phase4_step = 6
  1557.   end
  1558.   def update_phase4_step6
  1559.     # 清除强制行动对像的战斗者
  1560.     $game_temp.forcing_battler = nil
  1561.     @active_battler.movex = 0
  1562.     @active_battler.movey = 0
  1563.     @active_battler.startactive = "待机" if @active_battler.startactive != "死亡"
  1564.     # 公共事件 ID 有效的情况下
  1565.     if @common_event_id > 0
  1566.       # 设置事件
  1567.       common_event = $data_common_events[@common_event_id]
  1568.       $game_system.battle_interpreter.setup(common_event.list, 0)
  1569.     end
  1570.     # 移至步骤 1
  1571.     @phase4_step = 1
  1572.   end
  1573. end
  1574.  
  1575. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  1576.  
  1577. 這是我原本用的:
  1578.  
  1579.  
  1580. module Sword
  1581. #=======================================
  1582. #★ 魔劍工舖 - 跟隨型說明窗口(2)
  1583. # [url]http://blog.yam.com/a870053jjkj/article/26694783[/url]
  1584. #=======================================
  1585. =begin
  1586. ● 所需腳本
  1587. 魔劍工舖整合腳本:[url]http://blog.yam.com/a870053jjkj/article/25751998[/url]
  1588. 控制碼轉換:[url]http://blog.yam.com/a870053jjkj/article/28082241[/url]
  1589. ========================================
  1590. ● 控制碼(可以使用「控制碼轉換」中的控制碼,並且本腳本在新增以下控制碼)
  1591.  \! : 該行控制碼之後內容為'0'、'0%'或沒內容時(換行為結尾),就清除該行
  1592. =end
  1593. #=======================================
  1594. #● 功能設定
  1595. S8_Width = 240 # 設定幫助窗口的寬度,當內容顯示不下也依此設置自動換行
  1596. S8_XY = [30, 20] # 可以對跟隨窗口的 [X座標, Y座標] 進行些微調整
  1597. #--------------------------------------------------------------
  1598. #○ 幫助窗口顯示突破的處理設定
  1599. #設置法1:S8_Location = 數值(數值選擇以下這些各有功能)
  1600. #(0直接超出;1底部為限;2頂部為限;3底部移動;4頂部移動;5一律居中)
  1601. #設置法2:S8_Location = [X座標, Y座標](自行指定顯示的位置)
  1602. S8_Location =1
  1603. #--------------------------------------------------------------
  1604. #○ 幫助窗口格式設定
  1605. # 技能-------------------------------------------------------
  1606. S8_Skill = '\FS[20]\C[6]\DA[name]\C[0]\FS[18]
  1607. \DA[description]
  1608. \C[192,224,255]威力:\C[0]\!\DA[power]
  1609. \C[192,224,255]命中率:\C[0]\!\DA[hit]
  1610. \C[192,224,255]攻擊力:\C[0]\!\DA[atk_f]%
  1611. \C[192,224,255]力量:\C[0]\!\DA[str_f]%
  1612. \C[192,244,255]靈巧:\C[0]\!\DA[dex_f]%
  1613. \C[192,244,255]速度:\C[0]\!\DA[agi_f]%
  1614. \C[192,224,255]迴避:\C[0]\!\DA[eva_f]%
  1615. \C[192,224,255]屬性:\!\EF
  1616. \C[192,224,255]狀態:\!\SS'
  1617. # 物品-------------------------------------------------------
  1618. S8_Item = '\FS[20]\C[6]\DA[name]\C[0]\FS[18]
  1619. \DA[description]
  1620. \C[192,224,255]使用目標:\C[0]\SC[\DA[scope]]
  1621. \C[192,224,255]\TY[\DA[parameter_type]]\C[0]+\!\DA[parameter_points]
  1622. \C[192,224,255]HP恢復率:\C[50]\!\DA[recover_hp_rate]%
  1623. \C[192,224,255]HP恢復量:\C[0]\!\DA[recover_hp]
  1624. \C[192,224,255]SP恢復率:\C[0]\!\DA[recover_sp_rate]%
  1625. \C[192,224,255]SP恢復量:\C[0]\!\DA[recover_sp]
  1626. \C[192,244,255]命中率:\C[0]\!\DA[hit]%
  1627. \C[192,224,255]屬性:\!\EF
  1628. \C[192,224,255]狀態:\!\SS
  1629. \C[192,224,255]販賣價格:\C[0]\!\DA[price]'
  1630. # 武器-------------------------------------------------------
  1631. S8_Weapon = '\FS[20]\C[6]\DA[name]\C[0]\FS[18]
  1632. \DA[description]
  1633. \C[192,224,255]攻擊力:\C[100]\!\DA[atk]
  1634. \C[192,224,255]物理防禦:\C[0]\!\DA[pdef]
  1635. \C[192,224,255]魔法防禦:\C[0]\!\DA[mdef]
  1636. \C[192,224,255]力量:\C[0]\!\DA[str_plus]
  1637. \C[192,244,255]靈巧:\C[0]\!\DA[dex_plus]
  1638. \C[192,244,255]速度:\C[0]\!\DA[agi_plus]
  1639. \C[192,244,255]魔力:\C[0]\!\DA[int_plus]
  1640. \C[192,224,255]屬性:\!\EF
  1641. \C[192,224,255]狀態:\!\SS
  1642. \C[192,224,255]販賣價格:\C[1000]\!\DA[price]'
  1643. # 防具-------------------------------------------------------
  1644. S8_Armor = '\FS[20]\C[6]\DA[name]\C[0]\FS[18]
  1645. \DA[description]
  1646. \C[192,224,255]附加狀態:\C[0]\!\TN[\DA[auto_state_id]]
  1647. \C[192,224,255]物理防禦:\C[0]\!\DA[pdef]
  1648. \C[192,224,255]魔法防禦:\C[0]\!\DA[mdef]
  1649. \C[192,224,255]力量:\C[0]\!\DA[str_plus]
  1650. \C[192,244,255]靈巧:\C[0]\!\DA[dex_plus]
  1651. \C[192,244,255]速度:\C[0]\!\DA[agi_plus]
  1652. \C[192,244,255]魔力:\C[0]\!\DA[int_plus]
  1653. \C[192,224,255]迴避:\C[0]\!\DA[eva]%
  1654. \C[192,224,255]屬性免疫:\!\EF
  1655. \C[192,224,255]狀態免疫:\!\SS
  1656. \C[192,224,255]販賣價格:\C[0]\!\DA[price]'
  1657. #=======================================
  1658. #● 追加設定
  1659. # S8_Complete
  1660. #=======================================
  1661.   BEGIN{$Sword ? $Sword[8] = 2 : $Sword = {8=>2}} # 腳本使用標誌
  1662.   ($Sword_VX = defined?(RPG::Weather) ? false : true) if $Sword_VX.nil?
  1663.   S8_Complete = $Sword[59] ? S59_Complete : false unless defined?(S8_Complete)
  1664.   $Sword_F12_Error = {} unless $Sword_F12_Error # F12除錯標誌
  1665. end
  1666. #=======================================
  1667. #■ 小型幫助窗口
  1668. class WSword_Help < Window_Base
  1669.   attr_writer(:top_row) # 開頭行數
  1670.   attr_writer(:visible2) # 第2隱藏標誌
  1671.   attr_writer(:use_text) # 設定採用的描繪內容
  1672.   #-------------------------------------------------------------
  1673.   #● 初始化物件(關連被顯示窗口, 資料)
  1674.   def initialize(corelation, data)
  1675.     @setting_wsword = Window_Base.new(0, 0, Sword::S8_Width, 33)
  1676.     super(0, 0, 640, 480) ; self.contents = Bitmap.new(width - 32, height - 32)
  1677.     self.opacity = 0 ; self.z = 155
  1678.     @setting_wsword.z = 150 ; @setting_wsword.opacity = 150
  1679.     @me_index = -1 # 儲存上次的位置
  1680.     @corelation = corelation # 關連被顯示窗口
  1681.     @visible2, @contrast = true, data.id
  1682.     refresh(data)
  1683.   end
  1684.   #-------------------------------------------------------------
  1685.   #● 更新內容(資料)
  1686.   def refresh(data)
  1687.     return unless data
  1688.     if @use_text then text = @use_text # 採用其它
  1689.     else
  1690.       case data # 資料類型
  1691.       when RPG::Skill ; text = Sword::S8_Skill.clone # 技能
  1692.       when RPG::Item ; text = Sword::S8_Item.clone # 物品
  1693.       when RPG::Weapon ; text = Sword::S8_Weapon.clone # 武器
  1694.       when RPG::Armor ; text = Sword::S8_Armor.clone # 防具
  1695.       end
  1696.     end
  1697.     $game_system.swordM_data = data # 對象資料
  1698.     text = text.code_explain
  1699.     text_array = text.split(/\n/) # 依照換行分解,確認每行底部內容之用
  1700.     text = ''
  1701.     text_array.each{|item| next if /\\\!0?%?\Z/ === item ; text += item + "\n"}
  1702.     text.gsub!(/\\\!/){''} # 清空無用的\!控制碼
  1703.     contents.clear
  1704.     contents.blt(0, 0, text.bitmap_explain(Sword::S8_Width, 300){},
  1705.     Rect.new(0, 0, Sword::S8_Width, 300))
  1706.     @setting_wsword.height = $Sword46[0][1] - 24
  1707.     place
  1708.   end
  1709.   #-------------------------------------------------------------
  1710.   #● 更新窗口位置
  1711.   def place
  1712.     if Sword::S8_Complete
  1713.       coord = Mouse.coord ; self.x, self.y = coord[0], coord[1]
  1714.     else
  1715.       self.x = @corelation.x + @corelation.cursor_rect.x + 16 + Sword::S8_XY[0]
  1716.       self.y = @corelation.y + @corelation.cursor_rect.y + 16 + Sword::S8_XY[1]
  1717.     end
  1718.     if XPVX.height < @setting_wsword.y + @setting_wsword.height
  1719.       case Sword::S8_Location
  1720.       when Array # 指定座標
  1721.         @setting_wsword.x = Sword::S8_Location[0]
  1722.         @setting_wsword.y = Sword::S8_Location[1]
  1723.         self.x = Sword::S8_Location[0] - 12 ; self.y = Sword::S8_Location[1] - 12
  1724.       when 1 # 底部為限
  1725.         @setting_wsword.y = XPVX.height - @setting_wsword.height
  1726.         self.y = @setting_wsword.y - 12
  1727.       when 2 # 頂部為限
  1728.         @setting_wsword.y = 0 ; self.y = 12
  1729.       when 3 # 底部移動
  1730.         @setting_wsword.y += @setting_wsword.height
  1731.         self.y += @setting_wsword.height
  1732.       when 4 # 頂部移動
  1733.         @setting_wsword.y -= @setting_wsword.height
  1734.         self.y -= @setting_wsword.height
  1735.       when 5 # 一律居中
  1736.         @setting_wsword.x = (XPVX.width - @setting_wsword.width) / 2
  1737.         @setting_wsword.y = (XPVX.height - @setting_wsword.height) / 2
  1738.         self.x = @setting_wsword.x - 12 ; self.y = @setting_wsword.y - 12
  1739.       end
  1740.     end
  1741.     #(self.x += 2 ; self.y += 2 ; @setting_wsword.height += 2) if Sword8_XPVX # VX顯示修正
  1742.   end
  1743.   #-------------------------------------------------------------
  1744.   #● 變更X座標
  1745.   def x=(x) ; @setting_wsword.x = x + 12 ; super ; end
  1746.   #-------------------------------------------------------------
  1747.   #● 變更Y座標
  1748.   def y=(y) ; @setting_wsword.y = y + 12 ; super ; end
  1749.   #-------------------------------------------------------------
  1750.   #● 釋放窗口
  1751.   def dispose ; @setting_wsword.dispose ; super ; end
  1752.   #-------------------------------------------------------------
  1753.   #● 隱藏窗口(隱藏標誌)
  1754.   def visible=(s) ; @setting_wsword.visible = s ; super ; end
  1755.   #-------------------------------------------------------------
  1756.   #● 更新窗口(索引, 對象, 強制更新標誌)
  1757.   def update(index, data, force = false)
  1758.     self.visible = data ? @visible2 : false  # 如果沒有資料就隱藏窗口
  1759.     place
  1760.     return if @me_index == index && @contrast == data.id or ! data unless force
  1761.     @me_index, @contrast = index, data.id ; refresh(data)
  1762.   end
  1763. end
  1764. #=======================================
  1765. #■ 物品窗口
  1766. class Window_Item
  1767.   #-------------------------------------------------------------
  1768.   #● 初始化物件
  1769.   alias sword8_initialize initialize
  1770.   def initialize(*args)
  1771.     $Sword_VX ? sword8_initialize(*args) : sword8_initialize
  1772.     @help_wsword = WSword_Help.new(self, item)
  1773.     @help_wsword.visible = false if $Sword_VX && $scene.is_a?(Scene_Equip)
  1774.   end
  1775.   #-------------------------------------------------------------
  1776.   #● 更新窗口
  1777.   alias sword8_update update unless $Sword_F12_Error[8]
  1778.   def update
  1779.     sword8_update
  1780.     @help_wsword.top_row = top_row
  1781.     @help_wsword.update(index, item)
  1782.   end
  1783.   #-------------------------------------------------------------
  1784.   #● 釋放窗口
  1785.   alias sword8_dispose dispose unless $Sword_F12_Error[8]
  1786.   def dispose
  1787.     sword8_dispose ; @help_wsword.dispose
  1788.   end
  1789.   #-------------------------------------------------------------
  1790.   #● 窗口顯示狀態=(顯示標誌)
  1791.   alias sword8_visible= visible= unless $Sword_F12_Error[8]
  1792.   def visible=(visible)
  1793.     @help_wsword.visible = @help_wsword.visible2 = visible
  1794.     self.sword8_visible = visible
  1795.   end
  1796.   #-------------------------------------------------------------
  1797.   #● 裝備壞面一開始隱藏跟隨型說明窗口
  1798.   if $Sword_VX
  1799.     def sword8_no_visible
  1800.       @help_wsword.visible = false
  1801.     end
  1802.   end
  1803. end
  1804. #=======================================
  1805. #■ 技能窗口
  1806. class Window_Skill
  1807.   #-------------------------------------------------------------
  1808.   #● 初始化物件(角色編號)
  1809.   alias sword8_initialize initialize
  1810.   def initialize(*args)
  1811.     $Sword_VX ? sword8_initialize(*args) : sword8_initialize(*args)
  1812.     @help_wsword = WSword_Help.new(self, skill)
  1813.   end
  1814.   #-------------------------------------------------------------
  1815.   #● 更新窗口
  1816.   alias sword8_update update unless $Sword_F12_Error[8]
  1817.   def update
  1818.     sword8_update
  1819.     @help_wsword.top_row = top_row
  1820.     @help_wsword.update(index, skill)
  1821.   end
  1822.   #-------------------------------------------------------------
  1823.   #● 釋放窗口
  1824.   alias sword8_dispose dispose unless $Sword_F12_Error[8]
  1825.   def dispose
  1826.     sword8_dispose ; @help_wsword.dispose
  1827.   end
  1828.   #-------------------------------------------------------------
  1829.   #● 窗口顯示狀態=(顯示標誌)
  1830.   alias sword8_visible= visible= unless $Sword_F12_Error[8]
  1831.   def visible=(visible)
  1832.     @help_wsword.visible = @help_wsword.visible2 = visible
  1833.     self.sword8_visible = visible
  1834.   end
  1835. end
  1836. #=======================================
  1837. #■ 購買窗口
  1838. class Window_ShopBuy
  1839.   #-------------------------------------------------------------
  1840.   #● 初始化物件(商品資料)
  1841.   alias sword8_initialize initialize
  1842.   def initialize(*args)
  1843.     sword8_initialize(*args)
  1844.     @help_wsword = WSword_Help.new(self, item)
  1845.   end
  1846.   #-------------------------------------------------------------
  1847.   #● 更新窗口
  1848.   alias sword8_update update unless $Sword_F12_Error[8]
  1849.   def update
  1850.     sword8_update
  1851.     @help_wsword.top_row = top_row
  1852.     @help_wsword.update(index, item)
  1853.   end
  1854.   #-------------------------------------------------------------
  1855.   #● 釋放窗口
  1856.   alias sword8_dispose dispose unless $Sword_F12_Error[8]
  1857.   def dispose
  1858.     sword8_dispose ; @help_wsword.dispose
  1859.   end
  1860.   #-------------------------------------------------------------
  1861.   #● 窗口顯示狀態=(顯示標誌)
  1862.   alias sword8_visible= visible= unless $Sword_F12_Error[8]
  1863.   def visible=(visible)
  1864.     @help_wsword.visible = @help_wsword.visible2 = visible
  1865.     self.sword8_visible = visible
  1866.   end
  1867. end
  1868. #=======================================
  1869. #■ 販賣窗口
  1870. unless $Sword_VX
  1871. class Window_ShopSell
  1872.   #-------------------------------------------------------------
  1873.   #● 初始化物件
  1874.   alias sword8_initialize initialize
  1875.   def initialize
  1876.     sword8_initialize
  1877.     @help_wsword = WSword_Help.new(self, item)
  1878.   end
  1879.   #-------------------------------------------------------------
  1880.   #● 更新窗口
  1881.   alias sword8_update update unless $Sword_F12_Error[8]
  1882.   def update
  1883.     sword8_update
  1884.     @help_wsword.top_row = top_row
  1885.     @help_wsword.update(index, item)
  1886.   end
  1887.   #-------------------------------------------------------------
  1888.   #● 釋放窗口
  1889.   alias sword8_dispose dispose unless $Sword_F12_Error[8]
  1890.   def dispose
  1891.     sword8_dispose ; @help_wsword.dispose
  1892.   end
  1893.   #-------------------------------------------------------------
  1894.   #● 窗口顯示狀態=(顯示標誌)
  1895.   alias sword8_visible= visible= unless $Sword_F12_Error[8]
  1896.   def visible=(visible)
  1897.     @help_wsword.visible = @help_wsword.visible2 = visible
  1898.     self.sword8_visible = visible
  1899.   end
  1900. end end
  1901. #=======================================
  1902. #■ 目前裝備窗口
  1903. eval("
  1904. class #{$Sword_VX ? 'Window_Equip' : 'Window_EquipRight'}
  1905.   #-------------------------------------------------------------
  1906.   #● 初始化物件(角色)
  1907.   alias sword8_initialize initialize
  1908.   def initialize(*args)
  1909.     sword8_initialize(*args)
  1910.     @help_wsword = WSword_Help.new(self, item)
  1911.   end
  1912.   #-------------------------------------------------------------
  1913.   #● 更新窗口
  1914.   alias sword8_update update unless $Sword_F12_Error[8]
  1915.   def update
  1916.     sword8_update
  1917.     @help_wsword.top_row = top_row
  1918.     @help_wsword.update(index, item)
  1919.   end
  1920.   #-------------------------------------------------------------
  1921.   #● 釋放窗口
  1922.   alias sword8_dispose dispose unless $Sword_F12_Error[8]
  1923.   def dispose
  1924.     sword8_dispose ; @help_wsword.dispose
  1925.   end
  1926.   #-------------------------------------------------------------
  1927.   #● 窗口顯示狀態=(顯示標誌)
  1928.   alias sword8_visible= visible= unless $Sword_F12_Error[8]
  1929.   def visible=(visible)
  1930.     @help_wsword.visible = @help_wsword.visible2 = visible
  1931.     self.sword8_visible = visible
  1932.   end
  1933. end")
  1934. #=======================================
  1935. #■ 選擇裝備窗口
  1936. unless $Sword_VX
  1937. class Window_EquipItem
  1938.   #-------------------------------------------------------------
  1939.   #● 初始化物件(角色, 裝備部位)
  1940.   alias sword8_initialize initialize
  1941.   def initialize(*args)
  1942.     sword8_initialize(*args)
  1943.     @help_wsword = WSword_Help.new(self, item)
  1944.     @help_wsword.visible = false
  1945.   end
  1946.   #-------------------------------------------------------------
  1947.   #● 更新窗口
  1948.   alias sword8_update update unless $Sword_F12_Error[8]
  1949.   def update
  1950.     sword8_update
  1951.     @help_wsword.top_row = top_row
  1952.     @help_wsword.update(index, item)
  1953.   end
  1954.   #-------------------------------------------------------------
  1955.   #● 釋放窗口
  1956.   alias sword8_dispose dispose unless $Sword_F12_Error[8]
  1957.   def dispose
  1958.     sword8_dispose ; @help_wsword.dispose
  1959.   end
  1960.   #-------------------------------------------------------------
  1961.   #● 窗口顯示狀態=(顯示標誌)
  1962.   alias sword8_visible= visible= unless $Sword_F12_Error[8]
  1963.   def visible=(visible)
  1964.     @help_wsword.visible = @help_wsword.visible2 = visible if active and item
  1965.     self.sword8_visible = visible
  1966.   end
  1967. end end
  1968. #=======================================
  1969. #■ 裝備畫面
  1970. if $Sword_VX
  1971. class Scene_Equip
  1972.   #---------------------------------------------------------------
  1973.   #● 創建可裝備窗口
  1974.   alias sword8_create_item_windows create_item_windows
  1975.   def create_item_windows
  1976.     sword8_create_item_windows
  1977.     (0...EQUIP_TYPE_MAX).each{|i| @item_windows[i].sword8_no_visible}
  1978.   end
  1979. end end
  1980. $Sword_F12_Error[8] = true


-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
但都會被橫版那個腳本影響...技能說明窗口被技能欄覆蓋...請前輩大大幫忙,拜託!!



Lv1.梦旅人

梦石
0
星屑
65
在线时间
141 小时
注册时间
2012-4-29
帖子
54
3
 楼主| 发表于 2016-11-23 23:36:12 | 只看该作者
泪的苍白 发表于 2016-11-22 22:39
会出现这种情况不是因为不共存,而是技能说明窗口的Z值太小了,导致窗口被盖住了。(Z值大的窗口显示在上面 ...

大大,我到我的幫助窗口腳本裡搜尋,找不到你說的那一段耶...

這是我用的幫助窗口:

  1. module Sword
  2. #=======================================
  3. #★ 魔劍工舖 - 跟隨型說明窗口(2)
  4. # http://blog.yam.com/a870053jjkj/article/26694783
  5. #=======================================
  6. =begin
  7. ● 所需腳本
  8. 魔劍工舖整合腳本:http://blog.yam.com/a870053jjkj/article/25751998
  9. 控制碼轉換:http://blog.yam.com/a870053jjkj/article/28082241
  10. ========================================
  11. ● 控制碼(可以使用「控制碼轉換」中的控制碼,並且本腳本在新增以下控制碼)
  12. \! : 該行控制碼之後內容為'0'、'0%'或沒內容時(換行為結尾),就清除該行
  13. =end
  14. #=======================================
  15. #● 功能設定
  16. S8_Width = 240 # 設定幫助窗口的寬度,當內容顯示不下也依此設置自動換行
  17. S8_XY = [30, 20] # 可以對跟隨窗口的 [X座標, Y座標] 進行些微調整
  18. #--------------------------------------------------------------
  19. #○ 幫助窗口顯示突破的處理設定
  20. #設置法1:S8_Location = 數值(數值選擇以下這些各有功能)
  21. #(0直接超出;1底部為限;2頂部為限;3底部移動;4頂部移動;5一律居中)
  22. #設置法2:S8_Location = [X座標, Y座標](自行指定顯示的位置)
  23. S8_Location = 1
  24. #--------------------------------------------------------------
  25. #○ 幫助窗口格式設定
  26. # 技能-------------------------------------------------------
  27. S8_Skill = '\FS[20]\C[6]\DA[name]\C[0]\FS[18]
  28. \DA[description]
  29. \C[192,224,255]威力:\C[0]\!\DA[power]
  30. \C[192,224,255]命中率:\C[0]\!\DA[hit]
  31. \C[192,224,255]攻擊力:\C[0]\!\DA[atk_f]%
  32. \C[192,224,255]力量:\C[0]\!\DA[str_f]%
  33. \C[192,244,255]靈巧:\C[0]\!\DA[dex_f]%
  34. \C[192,244,255]速度:\C[0]\!\DA[agi_f]%
  35. \C[192,224,255]迴避:\C[0]\!\DA[eva_f]%
  36. \C[192,224,255]屬性:\!\EF
  37. \C[192,224,255]狀態:\!\SS'
  38. # 物品-------------------------------------------------------
  39. S8_Item = '\FS[20]\C[6]\DA[name]\C[0]\FS[18]
  40. \DA[description]
  41. \C[192,224,255]使用目標:\C[0]\SC[\DA[scope]]
  42. \C[192,224,255]\TY[\DA[parameter_type]]\C[0]+\!\DA[parameter_points]
  43. \C[192,224,255]HP恢復率:\C[50]\!\DA[recover_hp_rate]%
  44. \C[192,224,255]HP恢復量:\C[0]\!\DA[recover_hp]
  45. \C[192,224,255]SP恢復率:\C[0]\!\DA[recover_sp_rate]%
  46. \C[192,224,255]SP恢復量:\C[0]\!\DA[recover_sp]
  47. \C[192,244,255]命中率:\C[0]\!\DA[hit]%
  48. \C[192,224,255]屬性:\!\EF
  49. \C[192,224,255]狀態:\!\SS
  50. \C[192,224,255]販賣價格:\C[0]\!\DA[price]'
  51. # 武器-------------------------------------------------------
  52. S8_Weapon = '\FS[20]\C[6]\DA[name]\C[0]\FS[18]
  53. \DA[description]
  54. \C[192,224,255]攻擊力:\C[100]\!\DA[atk]
  55. \C[192,224,255]物理防禦:\C[0]\!\DA[pdef]
  56. \C[192,224,255]魔法防禦:\C[0]\!\DA[mdef]
  57. \C[192,224,255]力量:\C[0]\!\DA[str_plus]
  58. \C[192,244,255]靈巧:\C[0]\!\DA[dex_plus]
  59. \C[192,244,255]速度:\C[0]\!\DA[agi_plus]
  60. \C[192,244,255]魔力:\C[0]\!\DA[int_plus]
  61. \C[192,224,255]屬性:\!\EF
  62. \C[192,224,255]狀態:\!\SS
  63. \C[192,224,255]販賣價格:\C[1000]\!\DA[price]'
  64. # 防具-------------------------------------------------------
  65. S8_Armor = '\FS[20]\C[6]\DA[name]\C[0]\FS[18]
  66. \DA[description]
  67. \C[192,224,255]附加狀態:\C[0]\!\TN[\DA[auto_state_id]]
  68. \C[192,224,255]物理防禦:\C[0]\!\DA[pdef]
  69. \C[192,224,255]魔法防禦:\C[0]\!\DA[mdef]
  70. \C[192,224,255]力量:\C[0]\!\DA[str_plus]
  71. \C[192,244,255]靈巧:\C[0]\!\DA[dex_plus]
  72. \C[192,244,255]速度:\C[0]\!\DA[agi_plus]
  73. \C[192,244,255]魔力:\C[0]\!\DA[int_plus]
  74. \C[192,224,255]迴避:\C[0]\!\DA[eva]%
  75. \C[192,224,255]屬性免疫:\!\EF
  76. \C[192,224,255]狀態免疫:\!\SS
  77. \C[192,224,255]販賣價格:\C[0]\!\DA[price]'
  78. #=======================================
  79. #● 追加設定
  80. # S8_Complete
  81. #=======================================
  82.   BEGIN{$Sword ? $Sword[8] = 2 : $Sword = {8=>2}} # 腳本使用標誌
  83.   ($Sword_VX = defined?(RPG::Weather) ? false : true) if $Sword_VX.nil?
  84.   S8_Complete = $Sword[59] ? S59_Complete : false unless defined?(S8_Complete)
  85.   $Sword_F12_Error = {} unless $Sword_F12_Error # F12除錯標誌
  86. end
  87. #=======================================
  88. #■ 小型幫助窗口
  89. class WSword_Help < Window_Base
  90.   attr_writer(:top_row) # 開頭行數
  91.   attr_writer(:visible2) # 第2隱藏標誌
  92.   attr_writer(:use_text) # 設定採用的描繪內容
  93.   #-------------------------------------------------------------
  94.   #● 初始化物件(關連被顯示窗口, 資料)
  95.   def initialize(corelation, data)
  96.     @setting_wsword = Window_Base.new(0, 0, Sword::S8_Width, 33)
  97.     super(0, 0, 640, 480) ; self.contents = Bitmap.new(width - 32, height - 32)
  98.     self.opacity = 0 ; self.z = 155
  99.     @setting_wsword.z = 150 ; @setting_wsword.opacity = 150
  100.     @me_index = -1 # 儲存上次的位置
  101.     @corelation = corelation # 關連被顯示窗口
  102.     @visible2, @contrast = true, data.id
  103.     refresh(data)
  104.   end
  105.   #-------------------------------------------------------------
  106.   #● 更新內容(資料)
  107.   def refresh(data)
  108.     return unless data
  109.     if @use_text then text = @use_text # 採用其它
  110.     else
  111.       case data # 資料類型
  112.       when RPG::Skill ; text = Sword::S8_Skill.clone # 技能
  113.       when RPG::Item ; text = Sword::S8_Item.clone # 物品
  114.       when RPG::Weapon ; text = Sword::S8_Weapon.clone # 武器
  115.       when RPG::Armor ; text = Sword::S8_Armor.clone # 防具
  116.       end
  117.     end
  118.     $game_system.swordM_data = data # 對象資料
  119.     text = text.code_explain
  120.     text_array = text.split(/\n/) # 依照換行分解,確認每行底部內容之用
  121.     text = ''
  122.     text_array.each{|item| next if /\\\!0?%?\Z/ === item ; text += item + "\n"}
  123.     text.gsub!(/\\\!/){''} # 清空無用的\!控制碼
  124.     contents.clear
  125.     contents.blt(0, 0, text.bitmap_explain(Sword::S8_Width, 300){},
  126.     Rect.new(0, 0, Sword::S8_Width, 300))
  127.     @setting_wsword.height = $Sword46[0][1] - 24
  128.     place
  129.   end
  130.   #-------------------------------------------------------------
  131.   #● 更新窗口位置
  132.   def place
  133.     if Sword::S8_Complete
  134.       coord = Mouse.coord ; self.x, self.y = coord[0], coord[1]
  135.     else
  136.       self.x = @corelation.x + @corelation.cursor_rect.x + 16 + Sword::S8_XY[0]
  137.       self.y = @corelation.y + @corelation.cursor_rect.y + 16 + Sword::S8_XY[1]
  138.     end
  139.     if XPVX.height < @setting_wsword.y + @setting_wsword.height
  140.       case Sword::S8_Location
  141.       when Array # 指定座標
  142.         @setting_wsword.x = Sword::S8_Location[0]
  143.         @setting_wsword.y = Sword::S8_Location[1]
  144.         self.x = Sword::S8_Location[0] - 12 ; self.y = Sword::S8_Location[1] - 12
  145.       when 1 # 底部為限
  146.         @setting_wsword.y = XPVX.height - @setting_wsword.height
  147.         self.y = @setting_wsword.y - 12
  148.       when 2 # 頂部為限
  149.         @setting_wsword.y = 0 ; self.y = 12
  150.       when 3 # 底部移動
  151.         @setting_wsword.y += @setting_wsword.height
  152.         self.y += @setting_wsword.height
  153.       when 4 # 頂部移動
  154.         @setting_wsword.y -= @setting_wsword.height
  155.         self.y -= @setting_wsword.height
  156.       when 5 # 一律居中
  157.         @setting_wsword.x = (XPVX.width - @setting_wsword.width) / 2
  158.         @setting_wsword.y = (XPVX.height - @setting_wsword.height) / 2
  159.         self.x = @setting_wsword.x - 12 ; self.y = @setting_wsword.y - 12
  160.       end
  161.     end
  162.     #(self.x += 2 ; self.y += 2 ; @setting_wsword.height += 2) if Sword8_XPVX # VX顯示修正
  163.   end
  164.   #-------------------------------------------------------------
  165.   #● 變更X座標
  166.   def x=(x) ; @setting_wsword.x = x + 12 ; super ; end
  167.   #-------------------------------------------------------------
  168.   #● 變更Y座標
  169.   def y=(y) ; @setting_wsword.y = y + 12 ; super ; end
  170.   #-------------------------------------------------------------
  171.   #● 釋放窗口
  172.   def dispose ; @setting_wsword.dispose ; super ; end
  173.   #-------------------------------------------------------------
  174.   #● 隱藏窗口(隱藏標誌)
  175.   def visible=(s) ; @setting_wsword.visible = s ; super ; end
  176.   #-------------------------------------------------------------
  177.   #● 更新窗口(索引, 對象, 強制更新標誌)
  178.   def update(index, data, force = false)
  179.     self.visible = data ? @visible2 : false  # 如果沒有資料就隱藏窗口
  180.     place
  181.     return if @me_index == index && @contrast == data.id or ! data unless force
  182.     @me_index, @contrast = index, data.id ; refresh(data)
  183.   end
  184. end
  185. #=======================================
  186. #■ 物品窗口
  187. class Window_Item
  188.   #-------------------------------------------------------------
  189.   #● 初始化物件
  190.   alias sword8_initialize initialize
  191.   def initialize(*args)
  192.     $Sword_VX ? sword8_initialize(*args) : sword8_initialize
  193.     @help_wsword = WSword_Help.new(self, item)
  194.     @help_wsword.visible = false if $Sword_VX && $scene.is_a?(Scene_Equip)
  195.   end
  196.   #-------------------------------------------------------------
  197.   #● 更新窗口
  198.   alias sword8_update update unless $Sword_F12_Error[8]
  199.   def update
  200.     sword8_update
  201.     @help_wsword.top_row = top_row
  202.     @help_wsword.update(index, item)
  203.   end
  204.   #-------------------------------------------------------------
  205.   #● 釋放窗口
  206.   alias sword8_dispose dispose unless $Sword_F12_Error[8]
  207.   def dispose
  208.     sword8_dispose ; @help_wsword.dispose
  209.   end
  210.   #-------------------------------------------------------------
  211.   #● 窗口顯示狀態=(顯示標誌)
  212.   alias sword8_visible= visible= unless $Sword_F12_Error[8]
  213.   def visible=(visible)
  214.     @help_wsword.visible = @help_wsword.visible2 = visible
  215.     self.sword8_visible = visible
  216.   end
  217.   #-------------------------------------------------------------
  218.   #● 裝備壞面一開始隱藏跟隨型說明窗口
  219.   if $Sword_VX
  220.     def sword8_no_visible
  221.       @help_wsword.visible = false
  222.     end
  223.   end
  224. end
  225. #=======================================
  226. #■ 技能窗口
  227. class Window_Skill
  228.   #-------------------------------------------------------------
  229.   #● 初始化物件(角色編號)
  230.   alias sword8_initialize initialize
  231.   def initialize(*args)
  232.     $Sword_VX ? sword8_initialize(*args) : sword8_initialize(*args)
  233.     @help_wsword = WSword_Help.new(self, skill)
  234.   end
  235.   #-------------------------------------------------------------
  236.   #● 更新窗口
  237.   alias sword8_update update unless $Sword_F12_Error[8]
  238.   def update
  239.     sword8_update
  240.     @help_wsword.top_row = top_row
  241.     @help_wsword.update(index, skill)
  242.   end
  243.   #-------------------------------------------------------------
  244.   #● 釋放窗口
  245.   alias sword8_dispose dispose unless $Sword_F12_Error[8]
  246.   def dispose
  247.     sword8_dispose ; @help_wsword.dispose
  248.   end
  249.   #-------------------------------------------------------------
  250.   #● 窗口顯示狀態=(顯示標誌)
  251.   alias sword8_visible= visible= unless $Sword_F12_Error[8]
  252.   def visible=(visible)
  253.     @help_wsword.visible = @help_wsword.visible2 = visible
  254.     self.sword8_visible = visible
  255.   end
  256. end
  257. #=======================================
  258. #■ 購買窗口
  259. class Window_ShopBuy
  260.   #-------------------------------------------------------------
  261.   #● 初始化物件(商品資料)
  262.   alias sword8_initialize initialize
  263.   def initialize(*args)
  264.     sword8_initialize(*args)
  265.     @help_wsword = WSword_Help.new(self, item)
  266.   end
  267.   #-------------------------------------------------------------
  268.   #● 更新窗口
  269.   alias sword8_update update unless $Sword_F12_Error[8]
  270.   def update
  271.     sword8_update
  272.     @help_wsword.top_row = top_row
  273.     @help_wsword.update(index, item)
  274.   end
  275.   #-------------------------------------------------------------
  276.   #● 釋放窗口
  277.   alias sword8_dispose dispose unless $Sword_F12_Error[8]
  278.   def dispose
  279.     sword8_dispose ; @help_wsword.dispose
  280.   end
  281.   #-------------------------------------------------------------
  282.   #● 窗口顯示狀態=(顯示標誌)
  283.   alias sword8_visible= visible= unless $Sword_F12_Error[8]
  284.   def visible=(visible)
  285.     @help_wsword.visible = @help_wsword.visible2 = visible
  286.     self.sword8_visible = visible
  287.   end
  288. end
  289. #=======================================
  290. #■ 販賣窗口
  291. unless $Sword_VX
  292. class Window_ShopSell
  293.   #-------------------------------------------------------------
  294.   #● 初始化物件
  295.   alias sword8_initialize initialize
  296.   def initialize
  297.     sword8_initialize
  298.     @help_wsword = WSword_Help.new(self, item)
  299.   end
  300.   #-------------------------------------------------------------
  301.   #● 更新窗口
  302.   alias sword8_update update unless $Sword_F12_Error[8]
  303.   def update
  304.     sword8_update
  305.     @help_wsword.top_row = top_row
  306.     @help_wsword.update(index, item)
  307.   end
  308.   #-------------------------------------------------------------
  309.   #● 釋放窗口
  310.   alias sword8_dispose dispose unless $Sword_F12_Error[8]
  311.   def dispose
  312.     sword8_dispose ; @help_wsword.dispose
  313.   end
  314.   #-------------------------------------------------------------
  315.   #● 窗口顯示狀態=(顯示標誌)
  316.   alias sword8_visible= visible= unless $Sword_F12_Error[8]
  317.   def visible=(visible)
  318.     @help_wsword.visible = @help_wsword.visible2 = visible
  319.     self.sword8_visible = visible
  320.   end
  321. end end
  322. #=======================================
  323. #■ 目前裝備窗口
  324. eval("
  325. class #{$Sword_VX ? 'Window_Equip' : 'Window_EquipRight'}
  326.   #-------------------------------------------------------------
  327.   #● 初始化物件(角色)
  328.   alias sword8_initialize initialize
  329.   def initialize(*args)
  330.     sword8_initialize(*args)
  331.     @help_wsword = WSword_Help.new(self, item)
  332.   end
  333.   #-------------------------------------------------------------
  334.   #● 更新窗口
  335.   alias sword8_update update unless $Sword_F12_Error[8]
  336.   def update
  337.     sword8_update
  338.     @help_wsword.top_row = top_row
  339.     @help_wsword.update(index, item)
  340.   end
  341.   #-------------------------------------------------------------
  342.   #● 釋放窗口
  343.   alias sword8_dispose dispose unless $Sword_F12_Error[8]
  344.   def dispose
  345.     sword8_dispose ; @help_wsword.dispose
  346.   end
  347.   #-------------------------------------------------------------
  348.   #● 窗口顯示狀態=(顯示標誌)
  349.   alias sword8_visible= visible= unless $Sword_F12_Error[8]
  350.   def visible=(visible)
  351.     @help_wsword.visible = @help_wsword.visible2 = visible
  352.     self.sword8_visible = visible
  353.   end
  354. end")
  355. #=======================================
  356. #■ 選擇裝備窗口
  357. unless $Sword_VX
  358. class Window_EquipItem
  359.   #-------------------------------------------------------------
  360.   #● 初始化物件(角色, 裝備部位)
  361.   alias sword8_initialize initialize
  362.   def initialize(*args)
  363.     sword8_initialize(*args)
  364.     @help_wsword = WSword_Help.new(self, item)
  365.     @help_wsword.visible = false
  366.   end
  367.   #-------------------------------------------------------------
  368.   #● 更新窗口
  369.   alias sword8_update update unless $Sword_F12_Error[8]
  370.   def update
  371.     sword8_update
  372.     @help_wsword.top_row = top_row
  373.     @help_wsword.update(index, item)
  374.   end
  375.   #-------------------------------------------------------------
  376.   #● 釋放窗口
  377.   alias sword8_dispose dispose unless $Sword_F12_Error[8]
  378.   def dispose
  379.     sword8_dispose ; @help_wsword.dispose
  380.   end
  381.   #-------------------------------------------------------------
  382.   #● 窗口顯示狀態=(顯示標誌)
  383.   alias sword8_visible= visible= unless $Sword_F12_Error[8]
  384.   def visible=(visible)
  385.     @help_wsword.visible = @help_wsword.visible2 = visible if active and item
  386.     self.sword8_visible = visible
  387.   end
  388. end end
  389. #=======================================
  390. #■ 裝備畫面
  391. if $Sword_VX
  392. class Scene_Equip
  393.   #---------------------------------------------------------------
  394.   #● 創建可裝備窗口
  395.   alias sword8_create_item_windows create_item_windows
  396.   def create_item_windows
  397.     sword8_create_item_windows
  398.     (0...EQUIP_TYPE_MAX).each{|i| @item_windows[i].sword8_no_visible}
  399.   end
  400. end end
  401. $Sword_F12_Error[8] = true
复制代码

点评

把self.z = 155的155调大  发表于 2016-11-26 11:13
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
251
在线时间
252 小时
注册时间
2013-11-9
帖子
97
2
发表于 2016-11-22 22:39:18 | 只看该作者
本帖最后由 泪的苍白 于 2016-11-22 22:41 编辑

会出现这种情况不是因为不共存,而是技能说明窗口的Z值太小了,导致窗口被盖住了。(Z值大的窗口显示在上面。)
你在你使用的帮助窗口(或者在脚本里搜Window_Help)
  1. class Window_Help < Window_Base
  2. #--------------------------------------------------------------------------
  3.   # ● 初始化对像
  4.   #--------------------------------------------------------------------------
  5.   def initialize
  6. super(x, x, x, x)
复制代码
的下面插一句self.z = 99990
这样应该可以了- -
另外:下次提问的时候记得把帮助脚本也一起贴上来><~那样别人才能更快地帮助你。

点评

能帮上忙就好XD  发表于 2016-11-26 11:17
大大有了,在我用個幫助窗口的第98行有個self.z = 155 我改成99990就好了,謝謝你,太感恩了  发表于 2016-11-24 21:26
头像来自百度搜索,自改了一(小)部分。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-27 06:19

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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