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

Project1

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

[已经过期] 脚本出错,不知道原因啊

[复制链接]

Lv1.梦旅人

梦石
0
星屑
135
在线时间
0 小时
注册时间
2012-4-25
帖子
2
跳转到指定楼层
1
发表于 2012-4-25 20:18:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 iisnow 于 2012-4-25 20:51 编辑

我弄好一个游戏发给我朋友帮我测试 结果他说换装备时出错了
D:我的文档Desktop
提示这个
但是我也跟他一样换武器(铁剑)
都没有问题  求高手帮忙看看啊
  1. #队伍最大人数
  2. ACTORS = 5
  3. #战斗人数
  4. BATTLER_ACTORS =5
  5. #战斗画面修补
  6. #目标 3人 200, 4人 160, 5人 120
  7. SPRITES_BATTLER = 50
  8. #游戏开始时步行图的显示(1即是角色1的步行图,如此类推)
  9. CHARACTER_GRAPHIC = 1


  10. class Game_Party
  11. #--------------------------------------------------------------------------
  12. # ● 加入同伴
  13. #     actor_id : 角色 ID
  14. #--------------------------------------------------------------------------
  15. def add_actor(actor_id)
  16.    # 获取角色
  17.    actor = $game_actors[actor_id]
  18.    # 同伴人数未满 4 人、本角色不在队伍中的情况下
  19.    if @actors.size < ACTORS and not @actors.include?(actor)
  20.      # 添加角色
  21.      @actors.push(actor)
  22.      # 还原主角
  23.      $game_player.refresh
  24.    end
  25. end


  26. #--------------------------------------------------------------------------
  27. # ● 对像角色的顺序确定
  28. #     actor_index : 角色索引
  29. #--------------------------------------------------------------------------
  30. def smooth_target_actor(actor_index)
  31.    # 取得对像
  32.    actor = actors[actor_index]
  33.    # 对像存在的情况下
  34.    if actor != nil and actor.exist?
  35.      return actor
  36.    end
  37.    # 循环
  38.    for actor in actors
  39.      # 对像存在的情况下
  40.      if actor.exist?
  41.        return actor
  42.      end
  43.    end
  44. end
  45. end



  46. class Spriteset_Battle
  47. #--------------------------------------------------------------------------
  48. # ● 初始化对像
  49. #     viewport : 显示端口
  50. #     battler  : 战斗者 (Game_Battler)  以下重要
  51. #--------------------------------------------------------------------------
  52. def initialize
  53.    # 生成显示端口
  54.    @viewport1 = Viewport.new(0, 0, 640, 640)#320
  55.    @viewport2 = Viewport.new(0, 0, 640, 480)
  56.    @viewport3 = Viewport.new(0, 0, 640, 480)
  57.    @viewport4 = Viewport.new(0, 0, 640, 480)
  58.    @viewport2.z = 101
  59.    @viewport3.z = 200
  60.    @viewport4.z = 5000
  61.    # 生成战斗背景活动块
  62.    @battleback_sprite = Sprite.new(@viewport1)
  63.    # 生成敌人活动块
  64.    @enemy_sprites = []
  65.    for enemy in $game_troop.enemies.reverse
  66.      @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
  67.    end
  68.    # 生成敌人活动块
  69.    @actor_sprites = []
  70.    @actor_sprites.push(Sprite_Battler.new(@viewport2))
  71.    @actor_sprites.push(Sprite_Battler.new(@viewport2))
  72.    @actor_sprites.push(Sprite_Battler.new(@viewport2))
  73.    @actor_sprites.push(Sprite_Battler.new(@viewport2))
  74.    @actor_sprites.push(Sprite_Battler.new(@viewport2))
  75.    if BATTLER_ACTORS > 4
  76.      for i in 4...BATTLER_ACTORS
  77.        @actor_sprites.push(Sprite_Battler.new(@viewport2))
  78.      end
  79.    end
  80.    # 生成天候
  81.    @weather = RPG::Weather.new(@viewport1)
  82.    # 生成图片活动块
  83.    @picture_sprites = []
  84.    for i in 51..100
  85.      @picture_sprites.push(Sprite_Picture.new(@viewport3,
  86.        $game_screen.pictures[i]))
  87.    end
  88.    # 生成计时器块
  89.    @timer_sprite = Sprite_Timer.new
  90.    # 刷新画面
  91.    update
  92. end




  93. #--------------------------------------------------------------------------
  94. # ● 刷新
  95. #--------------------------------------------------------------------------
  96. alias update_actor_change update
  97. def update
  98.    if BATTLER_ACTORS > 4
  99.      for i in 4...BATTLER_ACTORS
  100.        @actor_sprites[i].battler = $game_party.actors[i]
  101.      end
  102.    end
  103.    update_actor_change
  104. end
  105. end

  106. #以上重要







  107. #==============================================================================
  108. # ■ Scene_Menu
  109. #------------------------------------------------------------------------------
  110. #  处理菜单画面的类。
  111. #==============================================================================

  112. class Scene_Menu
  113. #--------------------------------------------------------------------------
  114. # ● 初始化对像
  115. #     menu_index : 命令光标的初期位置
  116. #--------------------------------------------------------------------------
  117. def initialize(menu_index = 0)
  118.    @menu_index = menu_index
  119.    @actor_change = false   
  120.    @actor_index = nil      
  121. end
  122. #--------------------------------------------------------------------------
  123. # ● 刷新画面 (状态窗口被激活的情况下)
  124. #--------------------------------------------------------------------------
  125. alias update_command_actor_change update_command
  126. def update_command
  127.    # 元の処理を実行
  128.    update_command_actor_change
  129.    # 方向ボタンの左か右が押された场合
  130.    if Input.trigger?(Input::LEFT) || Input.trigger?(Input::RIGHT)
  131.      # 决定 SE を演奏
  132.      $game_system.se_play($data_system.decision_se)
  133.      @command_window.active = false
  134.      @status_window.active = true
  135.      @status_window.index = 0
  136.      @actor_change = true
  137.      @actor_index = nil
  138.      return
  139.    end
  140. end
  141. #--------------------------------------------------------------------------
  142. # ● 刷新画面 (状态窗口被激活的情况下)
  143. #--------------------------------------------------------------------------
  144. def update_status
  145.    # 按下 B 键的情况下
  146.    if Input.trigger?(Input::B)
  147.      # 演奏取消 SE
  148.      $game_system.se_play($data_system.cancel_se)
  149.      # 激活命令窗口
  150.      @command_window.active = true
  151.      @status_window.active = false
  152.      @status_window.index = -1
  153.      @actor_change = false
  154.      return
  155.    end
  156.    # 按下 C 键的情况下
  157.    if Input.trigger?(Input::C)
  158.      if @actor_change
  159.        # 决定 SE を演奏
  160.        $game_system.se_play($data_system.decision_se)
  161.        if @actor_index == nil
  162.          @actor_index = @status_window.index
  163.        else
  164.          $game_party.change_actor(@actor_index, @status_window.index)
  165.          @actor_index = nil
  166.          @status_window.refresh
  167.          if $game_party.actors.include?($game_actors[CHARACTER_GRAPHIC]) == false || CHARACTER_GRAPHIC == 0
  168.            $game_player.refresh
  169.          end
  170.        end
  171.        return
  172.      else
  173.        # 命令窗口的光标位置分支
  174.        case @command_window.index
  175.        when 1  # 特技
  176.          # 本角色的行动限制在 2 以上的情况下
  177.          if $game_party.actors[@status_window.index].restriction >= 2
  178.            # 演奏冻结 SE
  179.            $game_system.se_play($data_system.buzzer_se)
  180.            return
  181.          end
  182.          # 演奏确定 SE
  183.          $game_system.se_play($data_system.decision_se)
  184.          # 切换到特技画面
  185.          $scene = Scene_Skill.new(@status_window.index)
  186.        when 2  # 装备
  187.          # 演奏确定 SE
  188.          $game_system.se_play($data_system.decision_se)
  189.          # 切换的装备画面
  190.          $scene = Scene_Equip.new(@status_window.index)
  191.        when 3  # 状态
  192.          # 演奏确定 SE
  193.          $game_system.se_play($data_system.decision_se)
  194.          # 切换到状态画面
  195.          $scene = Scene_Status.new(@status_window.index)
  196.        end
  197.        return
  198.      end
  199.    end
  200. end
  201. end

  202. #==============================================================================
  203. # ■ Scene_Battle (分割定义 2)
  204. #------------------------------------------------------------------------------
  205. #  处理战斗画面的类。
  206. #==============================================================================

  207. class Scene_Battle
  208. #--------------------------------------------------------------------------
  209. # ● アクターコマンドウィンドウのセットアップ
  210. #--------------------------------------------------------------------------
  211. alias phase3_setup_command_window_actor_change phase3_setup_command_window
  212. def phase3_setup_command_window
  213.    # 元の処理を実行
  214.    phase3_setup_command_window_actor_change
  215.    # アクターコマンドウィンドウの位置を设定
  216.    @actor_command_window.x = @actor_index * SPRITES_BATTLER
  217. end
  218. end
复制代码
这个是我找的脚本 增加人物上线的  
$game_party.change_actor(@actor_index, @status_window.index)   提示是这行有问题
但是我用自己去弄这么都不出错



‘‘──qq306481897于2012-4-25 20:22补充以下内容

提示错误的图片没显示出来。。。
是说  脚本 增加人物上线184行发生错误
        undefined method 'change_actor' for #<Game_Party:0x1032438>
脚本是网上下的 我就删了点不要的东西  但是我朋友那出错了
我测试就没  不知道什么原因啊
’’

点评

请使用插入脚本功能,这样的格式不合版规,另外,最好上传有问题的范例工程,这样方便别人检查问题所在。。。  发表于 2012-4-25 20:22

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42513
在线时间
7608 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

2
发表于 2012-4-25 20:24:32 | 只看该作者
change_actor此方法没定义,你一定是没复制完整。
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
135
在线时间
0 小时
注册时间
2012-4-25
帖子
2
3
 楼主| 发表于 2012-4-25 20:25:22 | 只看该作者
不好意i啊  第一次发不是很懂
  1. #队伍最大人数
  2. ACTORS = 5
  3. #战斗人数
  4. BATTLER_ACTORS =5
  5. #战斗画面修补
  6. #目标 3人 200, 4人 160, 5人 120
  7. SPRITES_BATTLER = 50
  8. #游戏开始时步行图的显示(1即是角色1的步行图,如此类推)
  9. CHARACTER_GRAPHIC = 1


  10. class Game_Party
  11. #--------------------------------------------------------------------------
  12. # ● 加入同伴
  13. #     actor_id : 角色 ID
  14. #--------------------------------------------------------------------------
  15. def add_actor(actor_id)
  16.    # 获取角色
  17.    actor = $game_actors[actor_id]
  18.    # 同伴人数未满 4 人、本角色不在队伍中的情况下
  19.    if @actors.size < ACTORS and not @actors.include?(actor)
  20.      # 添加角色
  21.      @actors.push(actor)
  22.      # 还原主角
  23.      $game_player.refresh
  24.    end
  25. end


  26. #--------------------------------------------------------------------------
  27. # ● 对像角色的顺序确定
  28. #     actor_index : 角色索引
  29. #--------------------------------------------------------------------------
  30. def smooth_target_actor(actor_index)
  31.    # 取得对像
  32.    actor = actors[actor_index]
  33.    # 对像存在的情况下
  34.    if actor != nil and actor.exist?
  35.      return actor
  36.    end
  37.    # 循环
  38.    for actor in actors
  39.      # 对像存在的情况下
  40.      if actor.exist?
  41.        return actor
  42.      end
  43.    end
  44. end
  45. end



  46. class Spriteset_Battle
  47. #--------------------------------------------------------------------------
  48. # ● 初始化对像
  49. #     viewport : 显示端口
  50. #     battler  : 战斗者 (Game_Battler)  以下重要
  51. #--------------------------------------------------------------------------
  52. def initialize
  53.    # 生成显示端口
  54.    @viewport1 = Viewport.new(0, 0, 640, 640)#320
  55.    @viewport2 = Viewport.new(0, 0, 640, 480)
  56.    @viewport3 = Viewport.new(0, 0, 640, 480)
  57.    @viewport4 = Viewport.new(0, 0, 640, 480)
  58.    @viewport2.z = 101
  59.    @viewport3.z = 200
  60.    @viewport4.z = 5000
  61.    # 生成战斗背景活动块
  62.    @battleback_sprite = Sprite.new(@viewport1)
  63.    # 生成敌人活动块
  64.    @enemy_sprites = []
  65.    for enemy in $game_troop.enemies.reverse
  66.      @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
  67.    end
  68.    # 生成敌人活动块
  69.    @actor_sprites = []
  70.    @actor_sprites.push(Sprite_Battler.new(@viewport2))
  71.    @actor_sprites.push(Sprite_Battler.new(@viewport2))
  72.    @actor_sprites.push(Sprite_Battler.new(@viewport2))
  73.    @actor_sprites.push(Sprite_Battler.new(@viewport2))
  74.    @actor_sprites.push(Sprite_Battler.new(@viewport2))
  75.    if BATTLER_ACTORS > 4
  76.      for i in 4...BATTLER_ACTORS
  77.        @actor_sprites.push(Sprite_Battler.new(@viewport2))
  78.      end
  79.    end
  80.    # 生成天候
  81.    @weather = RPG::Weather.new(@viewport1)
  82.    # 生成图片活动块
  83.    @picture_sprites = []
  84.    for i in 51..100
  85.      @picture_sprites.push(Sprite_Picture.new(@viewport3,
  86.        $game_screen.pictures[i]))
  87.    end
  88.    # 生成计时器块
  89.    @timer_sprite = Sprite_Timer.new
  90.    # 刷新画面
  91.    update
  92. end




  93. #--------------------------------------------------------------------------
  94. # ● 刷新
  95. #--------------------------------------------------------------------------
  96. alias update_actor_change update
  97. def update
  98.    if BATTLER_ACTORS > 4
  99.      for i in 4...BATTLER_ACTORS
  100.        @actor_sprites[i].battler = $game_party.actors[i]
  101.      end
  102.    end
  103.    update_actor_change
  104. end
  105. end

  106. #以上重要







  107. #==============================================================================
  108. # ■ Scene_Menu
  109. #------------------------------------------------------------------------------
  110. #  处理菜单画面的类。
  111. #==============================================================================

  112. class Scene_Menu
  113. #--------------------------------------------------------------------------
  114. # ● 初始化对像
  115. #     menu_index : 命令光标的初期位置
  116. #--------------------------------------------------------------------------
  117. def initialize(menu_index = 0)
  118.    @menu_index = menu_index
  119.    @actor_change = false   #未知 可删
  120.    @actor_index = nil      #角色索引  未知 可删
  121. end
  122. #--------------------------------------------------------------------------
  123. # ● 刷新画面 (状态窗口被激活的情况下)
  124. #--------------------------------------------------------------------------
  125. alias update_command_actor_change update_command
  126. def update_command
  127.    # 元の処理を実行
  128.    update_command_actor_change
  129.    # 方向ボタンの左か右が押された场合
  130.    if Input.trigger?(Input::LEFT) || Input.trigger?(Input::RIGHT)
  131.      # 决定 SE を演奏
  132.      $game_system.se_play($data_system.decision_se)
  133.      @command_window.active = false
  134.      @status_window.active = true
  135.      @status_window.index = 0
  136.      @actor_change = true
  137.      @actor_index = nil
  138.      return
  139.    end
  140. end
  141. #--------------------------------------------------------------------------
  142. # ● 刷新画面 (状态窗口被激活的情况下)
  143. #--------------------------------------------------------------------------
  144. def update_status
  145.    # 按下 B 键的情况下
  146.    if Input.trigger?(Input::B)
  147.      # 演奏取消 SE
  148.      $game_system.se_play($data_system.cancel_se)
  149.      # 激活命令窗口
  150.      @command_window.active = true
  151.      @status_window.active = false
  152.      @status_window.index = -1
  153.      @actor_change = false
  154.      return
  155.    end
  156.    # 按下 C 键的情况下
  157.    if Input.trigger?(Input::C)
  158.      if @actor_change
  159.        # 决定 SE を演奏
  160.        $game_system.se_play($data_system.decision_se)
  161.        if @actor_index == nil
  162.          @actor_index = @status_window.index
  163.        else
  164.          $game_party.change_actor(@actor_index, @status_window.index)
  165.          @actor_index = nil
  166.          @status_window.refresh
  167.          if $game_party.actors.include?($game_actors[CHARACTER_GRAPHIC]) == false || CHARACTER_GRAPHIC == 0
  168.            $game_player.refresh
  169.          end
  170.        end
  171.        return
  172.      else
  173.        # 命令窗口的光标位置分支
  174.        case @command_window.index
  175.        when 1  # 特技
  176.          # 本角色的行动限制在 2 以上的情况下
  177.          if $game_party.actors[@status_window.index].restriction >= 2
  178.            # 演奏冻结 SE
  179.            $game_system.se_play($data_system.buzzer_se)
  180.            return
  181.          end
  182.          # 演奏确定 SE
  183.          $game_system.se_play($data_system.decision_se)
  184.          # 切换到特技画面
  185.          $scene = Scene_Skill.new(@status_window.index)
  186.        when 2  # 装备
  187.          # 演奏确定 SE
  188.          $game_system.se_play($data_system.decision_se)
  189.          # 切换的装备画面
  190.          $scene = Scene_Equip.new(@status_window.index)
  191.        when 3  # 状态
  192.          # 演奏确定 SE
  193.          $game_system.se_play($data_system.decision_se)
  194.          # 切换到状态画面
  195.          $scene = Scene_Status.new(@status_window.index)
  196.        end
  197.        return
  198.      end
  199.    end
  200. end
  201. end

  202. #==============================================================================
  203. # ■ Scene_Battle (分割定义 2)
  204. #------------------------------------------------------------------------------
  205. #  处理战斗画面的类。
  206. #==============================================================================

  207. class Scene_Battle
  208. #--------------------------------------------------------------------------
  209. # ● アクターコマンドウィンドウのセットアップ
  210. #--------------------------------------------------------------------------
  211. alias phase3_setup_command_window_actor_change phase3_setup_command_window
  212. def phase3_setup_command_window
  213.    # 元の処理を実行
  214.    phase3_setup_command_window_actor_change
  215.    # アクターコマンドウィンドウの位置を设定
  216.    @actor_command_window.x = @actor_index * SPRITES_BATTLER
  217. end
  218. end
复制代码
就这个了


‘‘──qq306481897于2012-4-25 20:26补充以下内容

范例有80多M不好传把
’’


‘‘──qq306481897于2012-4-25 20:33补充以下内容

undefined method 'change_actor' for #<Game_Party:0x1032438>
实在不方便看  告诉我这个提示错误的具体意思也行啊

’’
回复

使用道具 举报

Lv4.逐梦者 (超级版主)

嗜谎者

梦石
2
星屑
17367
在线时间
3911 小时
注册时间
2010-9-12
帖子
9654

极短25评委极短24评委极短23评委极短22评委极短21评委开拓者

4
发表于 2012-4-25 20:57:24 | 只看该作者
没有关于'change_actor'的定义。。。
你肯定是少了什么脚本。。。

点评

少好人卡~~  发表于 2012-4-25 21:04
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
43 小时
注册时间
2011-10-1
帖子
29
5
发表于 2012-4-26 22:05:42 | 只看该作者
在Game_Party类中少一个叫做change_actor的方法。
R
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-4 03:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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