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

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: 89444640
打印 上一主题 下一主题

[已经过期] sailcat的脚本 技能依赖变量 怒气槽应用

[复制链接]

Lv5.捕梦者

梦石
0
星屑
37935
在线时间
5472 小时
注册时间
2006-11-10
帖子
6554
11
发表于 2018-5-24 11:46:59 | 显示全部楼层
本帖最后由 灯笼菜刀王 于 2018-5-24 12:56 编辑
89444640 发表于 2018-5-24 08:37
测试中,想起个事情,当年有个飞机游戏,就是流程特别特别长的哪个,如果通关能打大概2个小时以上,保险是 ...




是你设置问题~~  

增加怒气值1000点#TP=1000;@蓄力  ←要用小写
降低敌人怒气值500点。#KP=500;@回复   ←扣元气要负数,TP KP都一样,正数+负数-,不管是对敌人还是我方

防御不加TP。 大姐,你防御+20哎,104像素的2%可不容易辨别= =,你防御50回合看看有没有一个豆子 ....

防御增加的TP是要等显示出“防御”才会增加的。而且挨打也会增加TP,就不容易辨别。
其实如果战斗中防御不是很重要的话,可以改成“蓄力”指令,然后去掉防御50%减伤功能,或者换成,增加50%伤害~ 这样用蓄力指令的时候挨打就要被counter

而且敌人也可以使用防御(蓄力)指令,可以做出一个只会憋大招的BOSS....

测试用小插件, 插到MAIN上面,不用的话可以删掉,战斗的时候就会弹出信息框提示,这样就方便测试有没有效果了吧。  然后要检查技能设置,建个NPC,输入脚本:葵花宝典(技能ID)   显示的不是nil就是设置正确。排除设置问题再来测试方便找BUG = =
RUBY 代码复制
  1. def 攒必杀(actor,n)
  2.   a = actor.tp
  3.   $game_variables[MAX_TP_ID][0] = a
  4.   if actor.is_a?(Game_Actor)
  5.     b = $game_variables[MAX_TP_ID][actor.id] != nil ? $game_variables[MAX_TP_ID][actor.id] : 0
  6.     if actor.hp <= 0 and DEAD_CLEAN_TP
  7.       actor.tp = 0
  8.     else
  9.      if ZERO_TP and b == 0
  10.        actor.tp = 0
  11.      else
  12.        if n != 0
  13.         actor.tp = [[a+n,b*1000+999].min,0].max
  14.        else
  15.         actor.tp = 0
  16.        end
  17.      end
  18.     end
  19.   else
  20.     if actor.hp <= 0 and DEAD_CLEAN_TP
  21.       actor.tp = 0
  22.     else
  23.       if n != 0
  24.        actor.tp = [[a+n,3999].min,0].max
  25.       else
  26.        actor.tp = 0
  27.       end
  28.     end
  29.   end
  30.   if n == 0
  31.    p actor.name +"的TP归0"
  32.   elsif n < 0
  33.    p actor.name +"增加"+ n.to_s + "TP"
  34.   else n > 0
  35.    p actor.name +"减少"+ n.to_s + "TP"
  36.   end
  37. end  
  38. def 葵花宝典(n)
  39.   a = $date_skills[n]._tp
  40.   b = $date_skills[n]._kp
  41.   p "TP是"+a.to_s+";KP是"+b.to_s
  42. end


挨技能打不增加TP,是我没打包进去= =   把  Scene_Battle 4  这个脚本内容用下面的覆盖就可以了   然后第一个脚本 增加一句  B_SKILL_TP = 200   这个就是技能挨打增加的TP

原本想用kp来+技能挨打TP就好了,帖子发了后,想了想,这样等于一堆技能全部要设置kp,就改了下,然后忘记更新=。=

RUBY 代码复制
  1. #==============================================================================
  2. # ■ Scene_Battle (分割定义 4)
  3. #------------------------------------------------------------------------------
  4. #  处理战斗画面的类。
  5. #==============================================================================
  6.  
  7. class Scene_Battle
  8.   #--------------------------------------------------------------------------
  9.   # ● 开始主回合
  10.   #--------------------------------------------------------------------------
  11.   def start_phase4
  12.     # 转移到回合 4
  13.     @phase = 4
  14.     # 回合数计数
  15.     $game_temp.battle_turn += 1
  16.     # 搜索全页的战斗事件
  17.     for index in 0...$data_troops[@troop_id].pages.size
  18.       # 获取事件页
  19.       page = $data_troops[@troop_id].pages[index]
  20.       # 本页的范围是 [回合] 的情况下
  21.       if page.span == 1
  22.         # 设置已经执行标志
  23.         $game_temp.battle_event_flags[index] = false
  24.       end
  25.     end
  26.     # 设置角色为非选择状态
  27.     @actor_index = -1
  28.     @active_battler = nil
  29.     # 有效化同伴指令窗口
  30.     @party_command_window.active = false
  31.     @party_command_window.visible = false
  32.     # 无效化角色指令窗口
  33.     @actor_command_window.active = false
  34.     @actor_command_window.visible = false
  35.     # 设置主回合标志
  36.     $game_temp.battle_main_phase = true
  37.     # 生成敌人行动
  38.     for enemy in $game_troop.enemies
  39.       enemy.make_action
  40.     end
  41.     # 生成行动顺序
  42.     make_action_orders
  43.     # 移动到步骤 1
  44.     @phase4_step = 1
  45.   end
  46.   #--------------------------------------------------------------------------
  47.   # ● 生成行动循序
  48.   #--------------------------------------------------------------------------
  49.   def make_action_orders
  50.     # 初始化序列 @action_battlers
  51.     @action_battlers = []
  52.     # 添加敌人到 @action_battlers 序列
  53.     for enemy in $game_troop.enemies
  54.       @action_battlers.push(enemy)
  55.     end
  56.     # 添加角色到 @action_battlers 序列
  57.     for actor in $game_party.actors
  58.       @action_battlers.push(actor)
  59.     end
  60.     # 确定全体的行动速度
  61.     for battler in @action_battlers
  62.       battler.make_action_speed
  63.     end
  64.     # 按照行动速度从大到小排列
  65.     @action_battlers.sort! {|a,b|
  66.       b.current_action.speed - a.current_action.speed }
  67.   end
  68.   #--------------------------------------------------------------------------
  69.   # ● 刷新画面 (主回合)
  70.   #--------------------------------------------------------------------------
  71.   def update_phase4
  72.     case @phase4_step
  73.     when 1
  74.       update_phase4_step1
  75.     when 2
  76.       update_phase4_step2
  77.     when 3
  78.       update_phase4_step3
  79.     when 4
  80.       update_phase4_step4
  81.     when 5
  82.       update_phase4_step5
  83.     when 6
  84.       update_phase4_step6
  85.     end
  86.   end
  87.   #--------------------------------------------------------------------------
  88.   # ● 刷新画面 (主回合步骤 1 : 准备行动)
  89.   #--------------------------------------------------------------------------
  90.   def update_phase4_step1
  91.     # 隐藏帮助窗口
  92.     @help_window.visible = false
  93.     # 判定胜败
  94.     if judge
  95.       # 胜利或者失败的情况下 : 过程结束
  96.       return
  97.     end
  98.     # 强制行动的战斗者不存在的情况下
  99.     if $game_temp.forcing_battler == nil
  100.       # 设置战斗事件
  101.       setup_battle_event
  102.       # 执行战斗事件中的情况下
  103.       if $game_system.battle_interpreter.running?
  104.         return
  105.       end
  106.     end
  107.     # 强制行动的战斗者存在的情况下
  108.     if $game_temp.forcing_battler != nil
  109.       # 在头部添加后移动
  110.       @action_battlers.delete($game_temp.forcing_battler)
  111.       @action_battlers.unshift($game_temp.forcing_battler)
  112.     end
  113.     # 未行动的战斗者不存在的情况下 (全员已经行动)
  114.     if @action_battlers.size == 0
  115.       # 开始同伴命令回合
  116.       start_phase2
  117.       return
  118.     end
  119.     # 初始化动画 ID 和公共事件 ID
  120.     @animation1_id = 0
  121.     @animation2_id = 0
  122.     @common_event_id = 0
  123.     # 未行动的战斗者移动到序列的头部
  124.     @active_battler = @action_battlers.shift
  125.     # 如果已经在战斗之外的情况下
  126.     if @active_battler.index == nil
  127.       return
  128.     end
  129.     # 连续伤害
  130.     if @active_battler.hp > 0 and @active_battler.slip_damage?
  131.       @active_battler.slip_damage_effect
  132.       @active_battler.damage_pop = true
  133.     end
  134.     # 自然解除状态
  135.     @active_battler.remove_states_auto
  136.     # 刷新状态窗口
  137.     @status_window.refresh
  138.     # 移至步骤 2
  139.     @phase4_step = 2
  140.   end
  141.   #--------------------------------------------------------------------------
  142.   # ● 刷新画面 (主回合步骤 2 : 开始行动)
  143.   #--------------------------------------------------------------------------
  144.   def update_phase4_step2
  145.     # 如果不是强制行动
  146.     unless @active_battler.current_action.forcing
  147.       # 限制为 [敌人为普通攻击] 或 [我方为普通攻击] 的情况下
  148.       if @active_battler.restriction == 2 or @active_battler.restriction == 3
  149.         # 设置行动为攻击
  150.         @active_battler.current_action.kind = 0
  151.         @active_battler.current_action.basic = 0
  152.       end
  153.       # 限制为 [不能行动] 的情况下
  154.       if @active_battler.restriction == 4
  155.         # 清除行动强制对像的战斗者
  156.         $game_temp.forcing_battler = nil
  157.         # 移至步骤 1
  158.         @phase4_step = 1
  159.         return
  160.       end
  161.     end
  162.     # 清除对像战斗者
  163.     @target_battlers = []
  164.     # 行动种类分支
  165.     case @active_battler.current_action.kind
  166.     when 0  # 基本
  167.       make_basic_action_result
  168.     when 1  # 特技
  169.       make_skill_action_result
  170.     when 2  # 物品
  171.       make_item_action_result
  172.     end
  173.     # 移至步骤 3
  174.     if @phase4_step == 2
  175.       @phase4_step = 3
  176.     end
  177.   end
  178.   #--------------------------------------------------------------------------
  179.   # ● 生成基本行动结果
  180.   #--------------------------------------------------------------------------
  181.   def make_basic_action_result
  182.     # 攻击的情况下
  183.     if @active_battler.current_action.basic == 0
  184.       # 设置攻击 ID
  185.       @animation1_id = @active_battler.animation1_id
  186.       @animation2_id = @active_battler.animation2_id
  187.       # 行动方的战斗者是敌人的情况下
  188.       if @active_battler.is_a?(Game_Enemy)
  189.         if @active_battler.restriction == 3
  190.           target = $game_troop.random_target_enemy
  191.         elsif @active_battler.restriction == 2
  192.           target = $game_party.random_target_actor
  193.         else
  194.           index = @active_battler.current_action.target_index
  195.           target = $game_party.smooth_target_actor(index)
  196.         end
  197.       end
  198.       # 行动方的战斗者是角色的情况下
  199.       if @active_battler.is_a?(Game_Actor)
  200.         if @active_battler.restriction == 3
  201.           target = $game_party.random_target_actor
  202.         elsif @active_battler.restriction == 2
  203.           target = $game_troop.random_target_enemy
  204.         else
  205.           index = @active_battler.current_action.target_index
  206.           target = $game_troop.smooth_target_enemy(index)
  207.         end
  208.       end
  209.       # 设置对像方的战斗者序列
  210.       @target_battlers = [target]
  211.       # 应用通常攻击效果
  212.       for target in @target_battlers
  213.         target.attack_effect(@active_battler)
  214.         攒必杀(target,BEAT_TP)
  215.       end
  216.       攒必杀(@active_battler,ATTACK_TP)
  217.       return
  218.     end
  219.     # 防御的情况下
  220.     if @active_battler.current_action.basic == 1
  221.       攒必杀(@active_battler,DEFENSE_TP)
  222.       # 帮助窗口显示"防御"
  223.       @help_window.set_text($data_system.words.guard, 1)
  224.       return
  225.     end
  226.     # 逃跑的情况下
  227.     if @active_battler.is_a?(Game_Enemy) and
  228.        @active_battler.current_action.basic == 2
  229.       #  帮助窗口显示"逃跑"
  230.       @help_window.set_text("逃跑", 1)
  231.       # 逃跑
  232.       @active_battler.escape
  233.       return
  234.     end
  235.     # 什么也不做的情况下
  236.     if @active_battler.current_action.basic == 3
  237.       # 清除强制行动对像的战斗者
  238.       $game_temp.forcing_battler = nil
  239.       # 移至步骤 1
  240.       @phase4_step = 1
  241.       return
  242.     end
  243.   end
  244.   #--------------------------------------------------------------------------
  245.   # ● 设置物品或特技对像方的战斗者
  246.   #     scope : 特技或者是物品的范围
  247.   #--------------------------------------------------------------------------
  248.   def set_target_battlers(scope)
  249.     # 行动方的战斗者是敌人的情况下
  250.     if @active_battler.is_a?(Game_Enemy)
  251.       # 效果范围分支
  252.       case scope
  253.       when 1  # 敌单体
  254.         index = @active_battler.current_action.target_index
  255.         @target_battlers.push($game_party.smooth_target_actor(index))
  256.       when 2  # 敌全体
  257.         for actor in $game_party.actors
  258.           if actor.exist?
  259.             @target_battlers.push(actor)
  260.           end
  261.         end
  262.       when 3  # 我方单体
  263.         index = @active_battler.current_action.target_index
  264.         @target_battlers.push($game_troop.smooth_target_enemy(index))
  265.       when 4  # 我方全体
  266.         for enemy in $game_troop.enemies
  267.           if enemy.exist?
  268.             @target_battlers.push(enemy)
  269.           end
  270.         end
  271.       when 5  # 我方单体 (HP 0)
  272.         index = @active_battler.current_action.target_index
  273.         enemy = $game_troop.enemies[index]
  274.         if enemy != nil and enemy.hp0?
  275.           @target_battlers.push(enemy)
  276.         end
  277.       when 6  # 我方全体 (HP 0)
  278.         for enemy in $game_troop.enemies
  279.           if enemy != nil and enemy.hp0?
  280.             @target_battlers.push(enemy)
  281.           end
  282.         end
  283.       when 7  # 使用者
  284.         @target_battlers.push(@active_battler)
  285.       end
  286.     end
  287.     # 行动方的战斗者是角色的情况下
  288.     if @active_battler.is_a?(Game_Actor)
  289.       # 效果范围分支
  290.       case scope
  291.       when 1  # 敌单体
  292.         index = @active_battler.current_action.target_index
  293.         @target_battlers.push($game_troop.smooth_target_enemy(index))
  294.       when 2  # 敌全体
  295.         for enemy in $game_troop.enemies
  296.           if enemy.exist?
  297.             @target_battlers.push(enemy)
  298.           end
  299.         end
  300.       when 3  # 我方单体
  301.         index = @active_battler.current_action.target_index
  302.         @target_battlers.push($game_party.smooth_target_actor(index))
  303.       when 4  # 我方全体
  304.         for actor in $game_party.actors
  305.           if actor.exist?
  306.             @target_battlers.push(actor)
  307.           end
  308.         end
  309.       when 5  # 我方单体 (HP 0)
  310.         index = @active_battler.current_action.target_index
  311.         actor = $game_party.actors[index]
  312.         if actor != nil and actor.hp0?
  313.           @target_battlers.push(actor)
  314.         end
  315.       when 6  # 我方全体 (HP 0)
  316.         for actor in $game_party.actors
  317.           if actor != nil and actor.hp0?
  318.             @target_battlers.push(actor)
  319.           end
  320.         end
  321.       when 7  # 使用者
  322.         @target_battlers.push(@active_battler)
  323.       end
  324.     end
  325.   end
  326.   #--------------------------------------------------------------------------
  327.   # ● 生成特技行动结果
  328.   #--------------------------------------------------------------------------
  329.   def make_skill_action_result
  330.     # 获取特技
  331.     @skill = $data_skills[@active_battler.current_action.skill_id]
  332.     # 如果不是强制行动
  333.     unless @active_battler.current_action.forcing
  334.       # 因为 SP 耗尽而无法使用的情况下
  335.       unless @active_battler.skill_can_use?(@skill.id)
  336.         # 清除强制行动对像的战斗者
  337.         $game_temp.forcing_battler = nil
  338.         # 移至步骤 1
  339.         @phase4_step = 1
  340.         return
  341.       end
  342.     end
  343.     # 消耗 SP
  344.     @active_battler.sp -= @skill.sp_cost
  345.     攒必杀(@active_battler,@skill._tp) if @skill._tp != nil
  346.     # 刷新状态窗口
  347.     @status_window.refresh
  348.     # 在帮助窗口显示特技名
  349.     #@help_window.set_text(@skill.name, 1)   
  350.     if @active_battler.is_a?(Game_Enemy)
  351.     @help_window.set_text(@skill.name, 1)
  352.     end
  353.     # 设置动画 ID
  354.     @animation1_id = @skill.animation1_id
  355.     @animation2_id = @skill.animation2_id
  356.     # 设置公共事件 ID
  357.     @common_event_id = @skill.common_event_id
  358.     # 设置对像侧战斗者
  359.     set_target_battlers(@skill.scope)
  360.     # 应用特技效果
  361.     a = @skill._kp != nil ? @skill._kp : B_SKILL_TP
  362.     for target in @target_battlers
  363.       target.skill_effect(@active_battler, @skill)
  364.       攒必杀(target,a)
  365.     end
  366.   end
  367.   #--------------------------------------------------------------------------
  368.   # ● 生成物品行动结果
  369.   #--------------------------------------------------------------------------
  370.   def make_item_action_result
  371.     # 获取物品
  372.     @item = $data_items[@active_battler.current_action.item_id]
  373.     # 因为物品耗尽而无法使用的情况下
  374.     unless $game_party.item_can_use?(@item.id)
  375.       # 移至步骤 1
  376.       @phase4_step = 1
  377.       return
  378.     end
  379.     # 消耗品的情况下
  380.     if @item.consumable
  381.       # 使用的物品减 1
  382.       $game_party.lose_item(@item.id, 1)
  383.     end
  384.     # 在帮助窗口显示物品名
  385.     @help_window.set_text(@item.name, 1)
  386.     # 设置动画 ID
  387.     @animation1_id = @item.animation1_id
  388.     @animation2_id = @item.animation2_id
  389.     # 设置公共事件 ID
  390.     @common_event_id = @item.common_event_id
  391.     # 确定对像
  392.     index = @active_battler.current_action.target_index
  393.     target = $game_party.smooth_target_actor(index)
  394.     # 设置对像侧战斗者
  395.     set_target_battlers(@item.scope)
  396.     # 应用物品效果
  397.     for target in @target_battlers
  398.       target.item_effect(@item)
  399.     end
  400.   end
  401.   #--------------------------------------------------------------------------
  402.   # ● 刷新画面 (主回合步骤 3 : 行动方动画)
  403.   #--------------------------------------------------------------------------
  404.   def update_phase4_step3
  405.     # 行动方动画 (ID 为 0 的情况下是白色闪烁)
  406.     if @animation1_id == 0
  407.       @active_battler.white_flash = true
  408.     else
  409.       @active_battler.animation_id = @animation1_id
  410.       @active_battler.animation_hit = true
  411.     end
  412.     # 移至步骤 4
  413.     @phase4_step = 4
  414.   end
  415.   #--------------------------------------------------------------------------
  416.   # ● 刷新画面 (主回合步骤 4 : 对像方动画)
  417.   #--------------------------------------------------------------------------
  418.   def update_phase4_step4
  419.     # 对像方动画
  420.     for target in @target_battlers
  421.       target.animation_id = @animation2_id
  422.       target.animation_hit = (target.damage != "Miss")
  423.     end
  424.     # 限制动画长度、最低 8 帧
  425.     @wait_count = 8
  426.     # 移至步骤 5
  427.     @phase4_step = 5
  428.   end
  429.   #--------------------------------------------------------------------------
  430.   # ● 刷新画面 (主回合步骤 5 : 显示伤害)
  431.   #--------------------------------------------------------------------------
  432.   def update_phase4_step5
  433.     # 隐藏帮助窗口
  434.     @help_window.visible = false
  435.     # 刷新状态窗口
  436.     @status_window.refresh
  437.     # 显示伤害
  438.     for target in @target_battlers
  439.       if target.damage != nil
  440.         target.damage_pop = true
  441.       end
  442.     end
  443.     # 移至步骤 6
  444.     @phase4_step = 6
  445.   end
  446.   #--------------------------------------------------------------------------
  447.   # ● 刷新画面 (主回合步骤 6 : 刷新)
  448.   #--------------------------------------------------------------------------
  449.   def update_phase4_step6
  450.     # 清除强制行动对像的战斗者
  451.     $game_temp.forcing_battler = nil
  452.     # 公共事件 ID 有效的情况下
  453.     if @common_event_id > 0
  454.       # 设置事件
  455.       common_event = $data_common_events[@common_event_id]
  456.       $game_system.battle_interpreter.setup(common_event.list, 0)
  457.     end
  458.     # 移至步骤 1
  459.     @phase4_step = 1
  460.   end
  461. end


然后存档初始化问题, Scene_Title  这个脚本内容用下面的覆盖

RUBY 代码复制
  1. #==============================================================================
  2. # ■ Scene_Title
  3. #------------------------------------------------------------------------------
  4. #  处理标题画面的类。
  5. #==============================================================================
  6.  
  7. class Scene_Title
  8.   #--------------------------------------------------------------------------
  9.   # ● 住处理
  10.   #--------------------------------------------------------------------------
  11.   def main
  12.     # 战斗测试的情况下
  13.     if $BTEST
  14.       battle_test
  15.       return
  16.     end
  17.     # 载入数据库
  18.     $data_actors        = load_data("Data/Actors.rxdata")
  19.     $data_classes       = load_data("Data/Classes.rxdata")
  20.     $data_skills        = load_data("Data/Skills.rxdata")
  21.     $data_items         = load_data("Data/Items.rxdata")
  22.     $data_weapons       = load_data("Data/Weapons.rxdata")
  23.     $data_armors        = load_data("Data/Armors.rxdata")
  24.     $data_enemies       = load_data("Data/Enemies.rxdata")
  25.     $data_troops        = load_data("Data/Troops.rxdata")
  26.     $data_states        = load_data("Data/States.rxdata")
  27.     $data_animations    = load_data("Data/Animations.rxdata")
  28.     $data_tilesets      = load_data("Data/Tilesets.rxdata")
  29.     $data_common_events = load_data("Data/CommonEvents.rxdata")
  30.     $data_system        = load_data("Data/System.rxdata")
  31.     # 生成系统对像
  32.     $game_system = Game_System.new
  33.     # 生成标题图形
  34.     @sprite = Sprite.new
  35.     @sprite.bitmap = RPG::Cache.title($data_system.title_name)
  36.     $game_variables[MAX_TP_ID] = []
  37.     # 生成命令窗口
  38.     s1 = "新游"
  39.     s2 = "继续"
  40.     s3 = "退出"
  41.     @command_window = Window_Command.new(192, [s1, s2, s3])
  42.     @command_window.back_opacity = 160
  43.     @command_window.x = 320 - @command_window.width / 2
  44.     @command_window.y = 288
  45.     # 判定继续的有效性
  46.     # 存档文件一个也不存在的时候也调查
  47.     # 有効为 @continue_enabled 为 true、無効为 false
  48.     @continue_enabled = false
  49.     for i in 0..3
  50.       if FileTest.exist?("Save#{i+1}.rxdata")
  51.         @continue_enabled = true
  52.       end
  53.     end
  54.     # 继续为有效的情况下、光标停止在继续上
  55.     # 无效的情况下、继续的文字显示为灰色
  56.     if @continue_enabled
  57.       @command_window.index = 1
  58.     else
  59.       @command_window.disable_item(1)
  60.     end
  61.     # 演奏标题 BGM
  62.     $game_system.bgm_play($data_system.title_bgm)
  63.     # 停止演奏 ME、BGS
  64.     Audio.me_stop
  65.     Audio.bgs_stop
  66.     # 执行过渡
  67.     Graphics.transition
  68.     # 主循环
  69.     loop do
  70.       # 刷新游戏画面
  71.       Graphics.update
  72.       # 刷新输入信息
  73.       Input.update
  74.       # 刷新画面
  75.       update
  76.       # 如果画面被切换就中断循环
  77.       if $scene != self
  78.         break
  79.       end
  80.     end
  81.     # 装备过渡
  82.     Graphics.freeze
  83.     # 释放命令窗口
  84.     @command_window.dispose
  85.     # 释放标题图形
  86.     @sprite.bitmap.dispose
  87.     @sprite.dispose
  88.   end
  89.   #--------------------------------------------------------------------------
  90.   # ● 刷新画面
  91.   #--------------------------------------------------------------------------
  92.   def update
  93.     # 刷新命令窗口
  94.     @command_window.update
  95.     # 按下 C 键的情况下
  96.     if Input.trigger?(Input::C)
  97.       # 命令窗口的光标位置的分支
  98.       case @command_window.index
  99.       when 0  # 新游戏
  100.         command_new_game
  101.       when 1  # 继续
  102.         command_continue
  103.       when 2  # 退出
  104.         command_shutdown
  105.       end
  106.     end
  107.   end
  108.   #--------------------------------------------------------------------------
  109.   # ● 命令 : 新游戏
  110.   #--------------------------------------------------------------------------
  111.   def command_new_game
  112.     # 演奏确定 SE
  113.     $game_system.se_play($data_system.decision_se)
  114.     # 停止 BGM
  115.     Audio.bgm_stop
  116.     # 重置测量游戏时间用的画面计数器
  117.     Graphics.frame_count = 0
  118.     # 生成各种游戏对像
  119.     $game_temp          = Game_Temp.new
  120.     $game_system        = Game_System.new
  121.     $game_switches      = Game_Switches.new
  122.     $game_variables     = Game_Variables.new
  123.     $game_self_switches = Game_SelfSwitches.new
  124.     $game_screen        = Game_Screen.new
  125.     $game_actors        = Game_Actors.new
  126.     $game_party         = Game_Party.new
  127.     $game_troop         = Game_Troop.new
  128.     $game_map           = Game_Map.new
  129.     $game_player        = Game_Player.new
  130.     # 设置初期同伴位置
  131.     $game_party.setup_starting_members
  132.     # 设置初期位置的地图
  133.     $game_map.setup($data_system.start_map_id)
  134.     # 主角向初期位置移动
  135.     $game_player.moveto($data_system.start_x, $data_system.start_y)
  136.     # 刷新主角
  137.     $game_player.refresh
  138.     # 执行地图设置的 BGM 与 BGS 的自动切换
  139.     $game_map.autoplay
  140.     # 刷新地图 (执行并行事件)
  141.     $game_map.update
  142.     $game_variables[MAX_TP_ID] = []
  143.     # 切换地图画面
  144.     $scene = Scene_Map.new
  145.   end
  146.   #--------------------------------------------------------------------------
  147.   # ● 命令 : 继续
  148.   #--------------------------------------------------------------------------
  149.   def command_continue
  150.     # 继续无效的情况下
  151.     unless @continue_enabled
  152.       # 演奏无效 SE
  153.       $game_system.se_play($data_system.buzzer_se)
  154.       return
  155.     end
  156.     # 演奏确定 SE
  157.     $game_system.se_play($data_system.decision_se)
  158.     # 切换到读档画面
  159.     $scene = Scene_Load.new
  160.   end
  161.   #--------------------------------------------------------------------------
  162.   # ● 命令 : 退出
  163.   #--------------------------------------------------------------------------
  164.   def command_shutdown
  165.     # 演奏确定 SE
  166.     $game_system.se_play($data_system.decision_se)
  167.     # BGM、BGS、ME 的淡入淡出
  168.     Audio.bgm_fade(800)
  169.     Audio.bgs_fade(800)
  170.     Audio.me_fade(800)
  171.     # 退出
  172.     $scene = nil
  173.   end
  174.   #--------------------------------------------------------------------------
  175.   # ● 战斗测试
  176.   #--------------------------------------------------------------------------
  177.   def battle_test
  178.     # 载入数据库 (战斗测试用)
  179.     $data_actors        = load_data("Data/BT_Actors.rxdata")
  180.     $data_classes       = load_data("Data/BT_Classes.rxdata")
  181.     $data_skills        = load_data("Data/BT_Skills.rxdata")
  182.     $data_items         = load_data("Data/BT_Items.rxdata")
  183.     $data_weapons       = load_data("Data/BT_Weapons.rxdata")
  184.     $data_armors        = load_data("Data/BT_Armors.rxdata")
  185.     $data_enemies       = load_data("Data/BT_Enemies.rxdata")
  186.     $data_troops        = load_data("Data/BT_Troops.rxdata")
  187.     $data_states        = load_data("Data/BT_States.rxdata")
  188.     $data_animations    = load_data("Data/BT_Animations.rxdata")
  189.     $data_tilesets      = load_data("Data/BT_Tilesets.rxdata")
  190.     $data_common_events = load_data("Data/BT_CommonEvents.rxdata")
  191.     $data_system        = load_data("Data/BT_System.rxdata")
  192.     # 重置测量游戏时间用的画面计数器
  193.     Graphics.frame_count = 0
  194.     # 生成各种游戏对像
  195.     $game_temp          = Game_Temp.new
  196.     $game_system        = Game_System.new
  197.     $game_switches      = Game_Switches.new
  198.     $game_variables     = Game_Variables.new
  199.     $game_self_switches = Game_SelfSwitches.new
  200.     $game_screen        = Game_Screen.new
  201.     $game_actors        = Game_Actors.new
  202.     $game_party         = Game_Party.new
  203.     $game_troop         = Game_Troop.new
  204.     $game_map           = Game_Map.new
  205.     $game_player        = Game_Player.new
  206.     # 设置战斗测试用同伴
  207.     $game_party.setup_battle_test_members
  208.     $game_variables[MAX_TP_ID] = []
  209.     # 设置队伍 ID、可以逃走标志、战斗背景
  210.     $game_temp.battle_troop_id = $data_system.test_troop_id
  211.     $game_temp.battle_can_escape = true
  212.     $game_map.battleback_name = $data_system.battleback_name
  213.     # 演奏战斗开始 BGM
  214.     $game_system.se_play($data_system.battle_start_se)
  215.     # 演奏战斗 BGM
  216.     #$game_system.bgm_play($game_system.battle_bgm)
  217.     # 切换到战斗画面
  218.     $scene = Scene_Battle.new
  219.   end
  220. end
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
37935
在线时间
5472 小时
注册时间
2006-11-10
帖子
6554
12
发表于 2018-5-24 21:56:14 | 显示全部楼层
本帖最后由 灯笼菜刀王 于 2018-5-25 10:39 编辑

动态槽搞定~~   分两个脚本替换掉就OK.

动态槽为竖向排列N祯的图片, N任意.  最后一祯之后会循环到第一祯开始 做素材的时候留意.  水晶槽和TP槽的帧数要一致.  注意要保留原来的槽哦,因为敌人还是用原来的槽,(所以可以给敌人画不一样的TP槽和水晶槽)

把 Scene_Battle 1 这个脚本用下面的覆盖掉
  1. #==============================================================================
  2. # ■ Scene_Battle (分割定义 1)
  3. #------------------------------------------------------------------------------
  4. #  处理战斗画面的类。
  5. #==============================================================================

  6. class Scene_Battle
  7.   #--------------------------------------------------------------------------
  8.   # ● 主处理
  9.   #--------------------------------------------------------------------------
  10.   def main
  11.     # 初始化战斗用的各种暂时数据
  12.     $game_temp.in_battle = true
  13.     $game_temp.battle_turn = 0
  14.     $game_temp.battle_event_flags.clear
  15.     $game_temp.battle_abort = false
  16.     $game_temp.battle_main_phase = false
  17.     $game_temp.battleback_name = $game_map.battleback_name
  18.     $game_temp.forcing_battler = nil
  19.     back = Sprite.new
  20.     back.bitmap = Bitmap.new("Graphics/Windowskins/战斗窗口")
  21.     back.y = 320
  22.     # 初始化战斗用事件解释器
  23.     $game_system.battle_interpreter.setup(nil, 0)
  24.     # 准备队伍
  25.     @troop_id = $game_temp.battle_troop_id
  26.     $game_troop.setup(@troop_id)
  27.     # 生成角色命令窗口
  28.     s1 = $data_system.words.attack
  29.     s2 = $data_system.words.skill
  30.     s3 = $data_system.words.guard
  31.     s4 = $data_system.words.item
  32.     @actor_command_window = Window_Command.new(160, [s1, s2, s3, s4])
  33.     @actor_command_window.z = 9999 #小改动
  34.     @actor_command_window.y = 160
  35.     @actor_command_window.back_opacity = 160
  36.     @actor_command_window.active = false
  37.     @actor_command_window.visible = false
  38.     # 生成其它窗口
  39.     @party_command_window = Window_PartyCommand.new
  40.     @help_window = Window_Help.new
  41.     @help_window.back_opacity = 160
  42.     @help_window.visible = false
  43.     @status_window = Window_BattleStatus.new
  44.     @message_window = Window_Message.new
  45.     @tp_show = Window_tpshow.new if $game_switches[TP_VISIBLE]
  46.     # 生成活动块
  47.     @spriteset = Spriteset_Battle.new
  48.     # 初始化等待计数
  49.     @wait_count = 0
  50.     # 执行过渡
  51.     if $data_system.battle_transition == ""
  52.       Graphics.transition(20)
  53.     else
  54.       Graphics.transition(40, "Graphics/Transitions/" +
  55.         $data_system.battle_transition)
  56.     end
  57.     # 开始自由战斗回合
  58.     start_phase1
  59.     # 主循环
  60.     loop do
  61.       # 刷新游戏画面
  62.       Graphics.update
  63.       # 刷新输入信息
  64.       Input.update
  65.       # 刷新画面
  66.       update
  67.       @tp_show.update if @tp_show != nil
  68.       # 如果画面切换的话就中断循环
  69.       if $scene != self
  70.         break
  71.       end
  72.     end
  73.     # 刷新地图
  74.     $game_map.refresh
  75.     # 准备过渡
  76.     Graphics.freeze
  77.     # 释放窗口
  78.     @actor_command_window.dispose
  79.     @party_command_window.dispose
  80.     @help_window.dispose
  81.     @status_window.dispose
  82.     @message_window.dispose
  83.     back.dispose
  84.     back.bitmap.dispose
  85.     @tp_show.dispose if @tp_show != nil
  86.     if @skill_window != nil
  87.       @skill_window.dispose
  88.     end
  89.     if @item_window != nil
  90.       @item_window.dispose
  91.     end
  92.     if @result_window != nil
  93.       @result_window.dispose
  94.     end
  95.     # 释放活动块
  96.     @spriteset.dispose
  97.     # 标题画面切换中的情况
  98.     if $scene.is_a?(Scene_Title)
  99.       # 淡入淡出画面
  100.       Graphics.transition
  101.       Graphics.freeze
  102.     end
  103.     # 战斗测试或者游戏结束以外的画面切换中的情况
  104.     if $BTEST and not $scene.is_a?(Scene_Gameover)
  105.       $scene = nil
  106.     end
  107.   end
  108.   #--------------------------------------------------------------------------
  109.   # ● 胜负判定
  110.   #--------------------------------------------------------------------------
  111.   def judge
  112.     # 全灭判定是真、并且同伴人数为 0 的情况下
  113.     if $game_party.all_dead? or $game_party.actors.size == 0
  114.       # 允许失败的情况下
  115.       if $game_temp.battle_can_lose
  116.         # 还原为战斗开始前的 BGM
  117.         $game_system.bgm_play($game_temp.map_bgm)
  118.         # 战斗结束
  119.         battle_end(2)
  120.         # 返回 true
  121.         return true
  122.       end
  123.       # 设置游戏结束标志
  124.       $game_temp.gameover = true
  125.       # 返回 true
  126.       return true
  127.     end
  128.     # 如果存在任意 1 个敌人就返回 false
  129.     for enemy in $game_troop.enemies
  130.       if enemy.exist?
  131.         return false
  132.       end
  133.     end
  134.     # 开始结束战斗回合 (胜利)
  135.     start_phase5
  136.     # 返回 true
  137.     return true
  138.   end
  139.   #--------------------------------------------------------------------------
  140.   # ● 战斗结束
  141.   #     result : 結果 (0:胜利 1:失败 2:逃跑)
  142.   #--------------------------------------------------------------------------
  143.   def battle_end(result)
  144.     # 清除战斗中标志
  145.     $game_temp.in_battle = false
  146.     # 清除全体同伴的行动
  147.     $game_party.clear_actions
  148.     # 解除战斗用状态
  149.     for actor in $game_party.actors
  150.       actor.remove_states_battle
  151.       actor.tp = 0 if END_CLEAN_TP
  152.     end
  153.     # 清除敌人
  154.     $game_troop.enemies.clear
  155.     # 调用战斗返回调用
  156.     if $game_temp.battle_proc != nil
  157.       $game_temp.battle_proc.call(result)
  158.       $game_temp.battle_proc = nil
  159.     end
  160.     # 切换到地图画面
  161.     $scene = Scene_Map.new
  162.   end
  163.   #--------------------------------------------------------------------------
  164.   # ● 设置战斗事件
  165.   #--------------------------------------------------------------------------
  166.   def setup_battle_event
  167.     # 正在执行战斗事件的情况下
  168.     if $game_system.battle_interpreter.running?
  169.       return
  170.     end
  171.     # 搜索全部页的战斗事件
  172.     for index in 0...$data_troops[@troop_id].pages.size
  173.       # 获取事件页
  174.       page = $data_troops[@troop_id].pages[index]
  175.       # 事件条件可以参考 c
  176.       c = page.condition
  177.       # 没有指定任何条件的情况下转到下一页
  178.       unless c.turn_valid or c.enemy_valid or
  179.              c.actor_valid or c.switch_valid
  180.         next
  181.       end
  182.       # 执行完毕的情况下转到下一页
  183.       if $game_temp.battle_event_flags[index]
  184.         next
  185.       end
  186.       # 确认回合条件
  187.       if c.turn_valid
  188.         n = $game_temp.battle_turn
  189.         a = c.turn_a
  190.         b = c.turn_b
  191.         if (b == 0 and n != a) or
  192.            (b > 0 and (n < 1 or n < a or n % b != a % b))
  193.           next
  194.         end
  195.       end
  196.       # 确认敌人条件
  197.       if c.enemy_valid
  198.         enemy = $game_troop.enemies[c.enemy_index]
  199.         if enemy == nil or enemy.hp * 100.0 / enemy.maxhp > c.enemy_hp
  200.           next
  201.         end
  202.       end
  203.       # 确认角色条件
  204.       if c.actor_valid
  205.         actor = $game_actors[c.actor_id]
  206.         if actor == nil or actor.hp * 100.0 / actor.maxhp > c.actor_hp
  207.           next
  208.         end
  209.       end
  210.       # 确认开关条件
  211.       if c.switch_valid
  212.         if $game_switches[c.switch_id] == false
  213.           next
  214.         end
  215.       end
  216.       # 设置事件
  217.       $game_system.battle_interpreter.setup(page.list, 0)
  218.       # 本页的范围是 [战斗] 或 [回合] 的情况下
  219.       if page.span <= 1
  220.         # 设置执行结束标志
  221.         $game_temp.battle_event_flags[index] = true
  222.       end
  223.       return
  224.     end
  225.   end
  226.   #--------------------------------------------------------------------------
  227.   # ● 刷新画面
  228.   #--------------------------------------------------------------------------
  229.   def update
  230.     # 执行战斗事件中的情况下
  231.     if $game_system.battle_interpreter.running?
  232.       # 刷新解释器
  233.       $game_system.battle_interpreter.update
  234.       # 强制行动的战斗者不存在的情况下
  235.       if $game_temp.forcing_battler == nil
  236.         # 执行战斗事件结束的情况下
  237.         unless $game_system.battle_interpreter.running?
  238.           # 继续战斗的情况下、再执行战斗事件的设置
  239.           unless judge
  240.             setup_battle_event
  241.           end
  242.         end
  243.         # 如果不是结束战斗回合的情况下
  244.         if @phase != 5
  245.           # 刷新状态窗口
  246.           @status_window.refresh
  247.         end
  248.       end
  249.     end
  250.     # 系统 (计时器)、刷新画面
  251.     $game_system.update
  252.     $game_screen.update
  253.     # 计时器为 0 的情况下
  254.     if $game_system.timer_working and $game_system.timer == 0
  255.       # 中断战斗
  256.       $game_temp.battle_abort = true
  257.     end
  258.     # 刷新窗口
  259.     @help_window.update
  260.     @party_command_window.update
  261.     @actor_command_window.update
  262.     @status_window.update
  263.     @message_window.update
  264.     # 刷新活动块
  265.     @spriteset.update
  266.     # 处理过渡中的情况下
  267.     if $game_temp.transition_processing
  268.       # 清除处理过渡中标志
  269.       $game_temp.transition_processing = false
  270.       # 执行过渡
  271.       if $game_temp.transition_name == ""
  272.         Graphics.transition(20)
  273.       else
  274.         Graphics.transition(40, "Graphics/Transitions/" +
  275.           $game_temp.transition_name)
  276.       end
  277.     end
  278.     # 显示信息窗口中的情况下
  279.     if $game_temp.message_window_showing
  280.       return
  281.     end
  282.     # 显示效果中的情况下
  283.     if @spriteset.effect?
  284.       return
  285.     end
  286.     # 游戏结束的情况下
  287.     if $game_temp.gameover
  288.       # 切换到游戏结束画面
  289.       $scene = Scene_Gameover.new
  290.       return
  291.     end
  292.     # 返回标题画面的情况下
  293.     if $game_temp.to_title
  294.       # 切换到标题画面
  295.       $scene = Scene_Title.new
  296.       return
  297.     end
  298.     # 中断战斗的情况下
  299.     if $game_temp.battle_abort
  300.       # 还原为战斗前的 BGM
  301.       $game_system.bgm_play($game_temp.map_bgm)
  302.       # 战斗结束
  303.       battle_end(1)
  304.       return
  305.     end
  306.     # 等待中的情况下
  307.     if @wait_count > 0
  308.       # 减少等待计数
  309.       @wait_count -= 1
  310.       return
  311.     end
  312.     # 强制行动的角色存在、
  313.     # 并且战斗事件正在执行的情况下
  314.     if $game_temp.forcing_battler == nil and
  315.        $game_system.battle_interpreter.running?
  316.       return
  317.     end
  318.     # 回合分支
  319.     case @phase
  320.     when 1  # 自由战斗回合
  321.       update_phase1
  322.     when 2  # 同伴命令回合
  323.       update_phase2
  324.     when 3  # 角色命令回合
  325.       update_phase3
  326.     when 4  # 主回合
  327.       update_phase4
  328.     when 5  # 战斗结束回合
  329.       update_phase5
  330.     end
  331.   end
  332. end
复制代码



再把 Window_BattleStatus 修改  这个脚本用下面的覆盖掉.   然后 TP_SHOW_TIME = 4  #动态槽帧数 这里设置动态槽帧数, 帧数任意, 但是要注意TP槽和水晶槽帧数要一致.

  1. TP_SHOW_TIME = 4  #动态槽帧数

  2. #==============================================================================
  3. # ■ Window_BattleStatus
  4. #------------------------------------------------------------------------------
  5. #  显示战斗画面同伴状态的窗口。
  6. #==============================================================================

  7. class Window_BattleStatus < Window_Base
  8.   #--------------------------------------------------------------------------
  9.   # ● 初始化对像
  10.   #--------------------------------------------------------------------------
  11.   def initialize
  12.     super(-16, 304, 672, 192)
  13.     self.contents = Bitmap.new(width - 32, height - 32)
  14.     @level_up_flags = [false, false, false, false]
  15.     self.opacity = 0
  16.     refresh
  17.   end
  18.   #--------------------------------------------------------------------------
  19.   # ● 释放
  20.   #--------------------------------------------------------------------------
  21.   def dispose
  22.     super
  23.   end
  24.   #--------------------------------------------------------------------------
  25.   # ● 设置升级标志
  26.   #     actor_index : 角色索引
  27.   #--------------------------------------------------------------------------
  28.   def level_up(actor_index)
  29.     @level_up_flags[actor_index] = true
  30.   end
  31.   #--------------------------------------------------------------------------
  32.   # ● 刷新
  33.   #--------------------------------------------------------------------------
  34.   def refresh
  35.     self.contents.clear
  36.     @item_max = $game_party.actors.size
  37.     for i in 0...$game_party.actors.size
  38.       actor = $game_party.actors[i]
  39.       actor_x = i * 160
  40.       if actor.hp <= 0
  41.         a = actor.id.to_s + "_dead"
  42.       else
  43.         a = actor.id.to_s + "_head"
  44.       end
  45.       添图片(a,actor_x+1,0)
  46.       添图片(actor.id.to_s + "_name", actor_x+65, 15)
  47.       添槽("HP血条",actor.hp,actor.maxhp,actor_x+83,58)
  48.       添槽("SP血条",actor.sp,actor.maxsp,actor_x+83,74)
  49.       添字(actor.hp.to_s,actor_x+81,48,2,20,72,16)
  50.       添字(actor.sp.to_s,actor_x+81,66,2,20,72,16)
  51.       if @level_up_flags[i]
  52.         添字("升级",actor_x+22,120,1,22,116,32)
  53.       else
  54.         draw_actor_state(actor, actor_x+22, 120)
  55.       end
  56.       if $game_switches[TP_VISIBLE]
  57.       a = $game_variables[MAX_TP_ID][actor.id] != nil ? $game_variables[MAX_TP_ID][actor.id] : 0
  58.       添图片("动态TP条空",actor_x+50,98) if not ZERO_TP
  59.       添图片("动态水晶空"+a.to_s,actor_x+6+(3-a)*13,97) if a != 0
  60.       end
  61.     end
  62.   end
  63.   #--------------------------------------------------------------------------
  64.   # ● 刷新画面
  65.   #--------------------------------------------------------------------------
  66.   def update
  67.     super
  68.     # 主界面的不透明度下降
  69.     if $game_temp.battle_main_phase
  70.       self.contents_opacity -= 4 if self.contents_opacity > 191
  71.     else
  72.       self.contents_opacity += 4 if self.contents_opacity < 255
  73.     end
  74.   end
  75. end

  76. class Window_tpshow < Window_Base
  77.   #--------------------------------------------------------------------------
  78.   # ● 初始化窗口
  79.   #--------------------------------------------------------------------------
  80.   def initialize
  81.     super(-16,304, 672, 192)
  82.     self.contents = Bitmap.new(width - 32, height - 32)
  83.     @bar_show = 0
  84.     self.opacity = 0
  85.     refresh
  86.   end
  87.   #--------------------------------------------------------------------------
  88.   # ● 刷新
  89.   #--------------------------------------------------------------------------
  90.   def refresh
  91.     self.contents.clear
  92.     for i in 0...$game_party.actors.size
  93.      actor = $game_party.actors[i]
  94.      a = $game_variables[MAX_TP_ID][actor.id] != nil ? $game_variables[MAX_TP_ID][actor.id] : 0
  95.      添动槽("动态TP条",actor.tp%1000,1000,i+50,98) if not ZERO_TP
  96.      添动槽("动态水晶"+a.to_s,actor.tp/1000,a,i+6+(3-a)*13,97) if a != 0
  97.     end
  98.   end
  99.   def 添动槽(bar,up,down,x,y)
  100.     bitmap = RPG::Cache.windowskin(bar)
  101.     cw = bitmap.width
  102.     ch = bitmap.height / TP_SHOW_TIME
  103.     n = up.to_f / down
  104.     src_rect = Rect.new(0, @bar_show * ch , cw * n, ch)
  105.     self.contents.blt(x,y, bitmap, src_rect)
  106.   end
  107.   def update
  108.     @bar_show += 1
  109.     @bar_show = 0 if @bar_show >= TP_SHOW_TIME
  110.     refresh
  111.   end
  112. end
复制代码


动态条素材规格.rar (6.92 KB, 下载次数: 73)

注意,动态槽和槽底部在不同的地方描绘,(为了省FPS), 不会改的话就按我起的名字换素材就好 , 素材大小不受底图限制, 可以使用的面积和战斗状态窗口一样大

所以画在框外燃烧的火焰效果也可以(然而之后要慢慢调好坐标和底槽重合=3=)   水晶槽注意 1,2,3个豆子的图要按  1倍宽,2倍宽,3倍宽 来画

点评

很好,敌人用红色的,我方翡翠色,异度之刃2玩多了,就这配色吧,我这同人谜,差点画十字形水晶XD  发表于 2018-5-24 22:46
明天试,半夜我脑子不清醒指不定出什么毛病  发表于 2018-5-24 22:39

评分

参与人数 1+1 收起 理由
89444640 + 1 塞糖

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
37935
在线时间
5472 小时
注册时间
2006-11-10
帖子
6554
13
发表于 2018-5-25 00:10:58 | 显示全部楼层
搞完那堆脚本山之后,看咱的工程脚本, 好清爽好可爱.......

点评

那两个因为目前我没用到,咱的战斗过程中不允许普通和使用道具,所以这两个自然无用,只是里面也有参数,先留着等以后确定不用在处理。  发表于 2018-5-25 10:10
还有无用备注的脚本?  发表于 2018-5-25 06:25
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
37935
在线时间
5472 小时
注册时间
2006-11-10
帖子
6554
14
发表于 2018-5-25 12:06:03 | 显示全部楼层
本帖最后由 灯笼菜刀王 于 2018-5-25 12:09 编辑
89444640 发表于 2018-5-25 11:26
更新Scene_Battle 1
重新搜索 tp_show
46 @tp_show = Window_tpshow.new if $game_switches[TP_VISIBLE]


,其他人不显示是因为忘记乘160了... 给i后面加上 *160就OK

添动槽("动态TP条",actor.tp%1000,1000,i*160+50,98) if not ZERO_TP
添动槽("动态水晶"+a.to_s,actor.tp/1000,a,i*160+6+(3-a)*13,97) if a != 0

偏一点也是因为这个i变成增加X N点像素的缘故, 现在调Y就正常了(蓝色就是动槽的Y), 底槽和动态槽的图片在不同的地方,看汉字应该知道吧
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
37935
在线时间
5472 小时
注册时间
2006-11-10
帖子
6554
15
发表于 2018-5-25 15:29:51 | 显示全部楼层
本帖最后由 灯笼菜刀王 于 2018-5-25 15:48 编辑
89444640 发表于 2018-5-25 14:20
上面为显示效果,
下面为我想要的效果。怎么调一下呢?歪了这个我调过来了但是遮挡,我想让它跟调好的H ...


你那些脑洞,咱现在给的功能已经足够实现。咱要做出来是很容易啦,不过这个课题就留给你自己研究,以后想加什么东西才能为所欲为

给你个提示
1,用变量换头像。 描绘头像原理你知道了, 添图片(a,actor_x+1,0) 这个a就是上面公式获得的“文件名称” 目前采用的是,角色id+固定后缀,来获得头像名称。

if actor.hp <= 0  #当角色的HP 小于等于0的时候
    a = actor.id.to_s + "_dead   #a的名称
else #除此以外
    a = actor.id.to_s + "_head"   #a的名称
end

所以,只要让这个a成为你想要的文件名称,那就是换头像成功。

你只要让主角换头像,大可让这个a直接成为你要的文件名。游戏流程能直接操作的方法,最简单的自然就是全局变量了。所以,就再加个分歧

if actor.id == 1  #当角色的ID等于1的时候
  if actor.hp <= 0
   a = $game_variables[编号].to_s + "_dead"
else
   a = $game_variables[编号].to_s + "_head"  
end
else
  if actor.hp <= 0  #当角色的HP 小于等于0的时候
    a = actor.id.to_s + "_dead"   #a的名称
else #除此以外
    a = actor.id.to_s + "_head"   #a的名称
end
end

这样,主角的头像就由 N号变量+ 后缀 来控制了,然后流程里改变这个变量的值,就达到换装的效果了。

-------------------------------

然后眨眼。

咱给的刷新窗口是"覆盖整个战斗状态栏的" ,也就是说,想要的话,你都可以让它们全部动态(只要FPS受得住=。=)

只要在动态血条的那个窗口,相应坐标上加上动态图层就可以,添动槽(bar,up,down,x,y)  up和down都填1,那就不会有槽的效果,而且槽的长宽咱是没限制的哦,可以直接当一个循环帧图片使用,这样就知道怎么实现咋眼之类的动作了吧?

默认的是共用一个帧指数,需要不同帧,大可把方法复制一份,把 TP_SHOW_TIME 换成别的数字就可以用别的帧指数了(TP_SHOW_TIME有两个地方,搜索下可以找到,一起换掉)

评分

参与人数 1+1 收起 理由
89444640 + 1 塞糖

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-18 06:20

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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