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

Project1

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

求人帮帮忙看下这个脚本到底错在哪?

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
129 小时
注册时间
2009-3-29
帖子
432
跳转到指定楼层
1
发表于 2009-4-24 03:03:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
范例出自天干宝典。
http://rpg.blue/upload_program/goods/062_武器和技能连击_103049198.rar
--------------------------------------------------------------------------------
里面的脚本:
  1. #==============================================================================
  2. # ■ Scene_Battle (分割定义 4)
  3. #------------------------------------------------------------------------------
  4. #  处理战斗画面的类。
  5. #==============================================================================

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

这段脚本语法没错啊! 而且范例MS不错!但是。。。问题出来了,当角色不带任何武器攻击敌人时。。。发生了下面的情况!!

到底是怎麽回事呢? 高手能看看吗?我研究了很久都不行。。 【天干宝典啊】{/gg}{/gg}
做一个游戏也用这么长时间........
PS:说我自己呢

Lv1.梦旅人

梦石
0
星屑
50
在线时间
129 小时
注册时间
2009-3-29
帖子
432
2
 楼主| 发表于 2009-4-24 03:20:01 | 只看该作者
不会吧! 没人知道吗? 斑竹呢?帮帮忙吧!{/dk}{/dk}
版主对此帖的评论:『3小时内不允许自顶。』,积分『-50』。这些被扣积分的一半会用于对本帖正确答案的悬赏。
做一个游戏也用这么长时间........
PS:说我自己呢
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
129 小时
注册时间
2009-3-29
帖子
432
3
 楼主| 发表于 2009-4-24 03:44:08 | 只看该作者
.... 我崩溃了。。再没有人回答 我就只能用其它脚本了 郁闷!{/fn}
版主对此帖的评论:『3小时内不允许自顶。』,积分『-100』。这些被扣积分的一半会用于对本帖正确答案的悬赏。
做一个游戏也用这么长时间........
PS:说我自己呢
回复 支持 反对

使用道具 举报

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9448
在线时间
2751 小时
注册时间
2008-9-5
帖子
3544

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

4
发表于 2009-4-24 03:47:11 | 只看该作者
很简单,你没有定义“element_set”这个东西,你应该是从人家工程里照搬脚本吧,这样的话不妨在原工程里全局搜索“element_set”看看哪些是定义这个东西的,再搬过去你的工程。。。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
129 小时
注册时间
2009-3-29
帖子
432
5
 楼主| 发表于 2009-4-24 03:50:13 | 只看该作者
这个脚本出自天干宝典啊  范例我也奉上啦 而且范例也是这种情况。。。。 你没看见吗?
做一个游戏也用这么长时间........
PS:说我自己呢
回复 支持 反对

使用道具 举报

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9448
在线时间
2751 小时
注册时间
2008-9-5
帖子
3544

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

6
发表于 2009-4-24 03:51:42 | 只看该作者
不好意思,我不方便下载东西,所以没看,如果原工程也是这样,那你尝试和原作者联系下看看吧.
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
129 小时
注册时间
2009-3-29
帖子
432
7
 楼主| 发表于 2009-4-24 03:54:35 | 只看该作者
看你这麽有爱心 告诉我QQ吧 我传给你可以吗? 或者加我QQ493947617{/cy}
做一个游戏也用这么长时间........
PS:说我自己呢
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
129 小时
注册时间
2009-3-29
帖子
432
8
 楼主| 发表于 2009-4-24 04:13:26 | 只看该作者
LS的大大怎么不理我了呢?
{/dk}{/dk}
做一个游戏也用这么长时间........
PS:说我自己呢
回复 支持 反对

使用道具 举报

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9448
在线时间
2751 小时
注册时间
2008-9-5
帖子
3544

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

9
发表于 2009-4-24 04:15:31 | 只看该作者
好了,来了,你是说要我的QQ吗?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
129 小时
注册时间
2009-3-29
帖子
432
10
 楼主| 发表于 2009-4-24 04:16:50 | 只看该作者
是啊{/se}你加我的也可以啊! QQ号我写上了 帮我看看吧 因为这个脚本简单但是就是没有定义不拿武器的时候攻击。。。{/wx}{/wx}
做一个游戏也用这么长时间........
PS:说我自己呢
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-16 05:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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