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

Project1

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

脚本错误问题……

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2008-10-19
帖子
23
跳转到指定楼层
1
发表于 2009-1-18 06:30:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x


以下是相关脚本:
  1. #==============================================================================
  2. # ■ Scene_Load
  3. #------------------------------------------------------------------------------
  4. #  处理读档画面的类。
  5. #==============================================================================

  6. class Scene_Load < Scene_File
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #--------------------------------------------------------------------------
  10.   def initialize
  11.     # 再生成临时对像
  12.     $game_temp = Game_Temp.new
  13.     # 选择存档时间最新的文件
  14.     $game_temp.last_file_index = 0
  15.     latest_time = Time.at(0)
  16.     for i in 0..3
  17.       filename = make_filename(i)
  18.       if FileTest.exist?(filename)
  19.         file = File.open(filename, "r")
  20.         if file.mtime > latest_time
  21.           latest_time = file.mtime
  22.           $game_temp.last_file_index = i
  23.         end
  24.         file.close
  25.       end
  26.     end
  27.     super("要载入哪个文件?")
  28.   end
  29.   #--------------------------------------------------------------------------
  30.   # ● 确定时的处理
  31.   #--------------------------------------------------------------------------
  32.   def on_decision(filename)
  33.     # 文件不存在的情况下
  34.     unless FileTest.exist?(filename)
  35.       # 演奏冻结 SE
  36.       $game_system.se_play($data_system.buzzer_se)
  37.       return
  38.     end
  39.     # 演奏读档 SE
  40.     $game_system.se_play($data_system.load_se)
  41.     # 写入存档数据
  42.     file = File.open(filename, "rb")
  43.     read_save_data(file)
  44.     file.close
  45.     # 还原 BGM、BGS
  46.     $game_system.bgm_play($game_system.playing_bgm)
  47.     $game_system.bgs_play($game_system.playing_bgs)
  48.     # 刷新地图 (执行并行事件)
  49.     $game_map.update
  50.     # 切换到地图画面
  51.     $scene = Scene_Map.new
  52.   end
  53.   #--------------------------------------------------------------------------
  54.   # ● 取消时的处理
  55.   #--------------------------------------------------------------------------
  56.   def on_cancel
  57.     # 演奏取消 SE
  58.     $game_system.se_play($data_system.cancel_se)
  59.     # 切换到标题画面
  60.     $scene = Scene_Title.new
  61.   end
  62.   #--------------------------------------------------------------------------
  63.   # ● 读取存档数据
  64.   #     file : 读取用文件对像 (已经打开)
  65.   #--------------------------------------------------------------------------
  66.   def read_save_data(file)
  67.     # 读取描绘存档文件用的角色数据
  68.     characters = Marshal.load(file)
  69.     # 读取测量游戏时间用画面计数
  70.     Graphics.frame_count = Marshal.load(file)
  71.     # 读取各种游戏对像
  72.     $game_system        = Marshal.load(file)
  73.     $game_switches      = Marshal.load(file)
  74.     $game_variables     = Marshal.load(file)
  75.     $game_self_switches = Marshal.load(file)
  76.     $game_screen        = Marshal.load(file)
  77.     $game_actors        = Marshal.load(file)
  78.     $game_Party         = Marshal.load(file)
  79.     $game_troop         = Marshal.load(file)
  80.     $game_map           = Marshal.load(file)
  81.     $game_player        = Marshal.load(file)
  82.     # 魔法编号与保存时有差异的情况下
  83.     # (加入编辑器的编辑过的数据)
  84.     if $game_system.magic_number != $data_system.magic_number
  85.       # 重新装载地图
  86.       $game_map.setup($game_map.map_id)
  87.       $game_player.center($game_player.x, $game_player.y)
  88.     end
  89.     # 刷新同伴成员
  90.     $game_party.refresh
  91.   end
  92. end


  93. #==============================================================================
  94. # ■ Game_Party
  95. #------------------------------------------------------------------------------
  96. #  处理同伴的类。包含金钱以及物品的信息。本类的实例
  97. # 请参考 $game_party。
  98. #==============================================================================

  99. class Game_Party
  100.   #--------------------------------------------------------------------------
  101.   # ● 定义实例变量
  102.   #--------------------------------------------------------------------------
  103.   attr_reader   :actors                   # 角色
  104.   attr_reader   :gold                     # 金钱
  105.   attr_reader   :steps                    # 步数
  106.   #--------------------------------------------------------------------------
  107.   # ● 初始化对像
  108.   #--------------------------------------------------------------------------
  109.   def initialize
  110.     # 建立角色序列
  111.     @actors = []
  112.     # 初始化金钱与步数
  113.     @gold = 0
  114.     @steps = 0
  115.     # 生成物品、武器、防具的所持数 hash
  116.     @items = {}
  117.     @weapons = {}
  118.     @armors = {}
  119.   end
  120.   #--------------------------------------------------------------------------
  121.   # ● 设置初期同伴
  122.   #--------------------------------------------------------------------------
  123.   def setup_starting_members
  124.     @actors = []
  125.     for i in $data_system.party_members
  126.       @actors.push($game_actors[i])
  127.     end
  128.   end
  129.   #--------------------------------------------------------------------------
  130.   # ● 设置战斗测试用同伴
  131.   #--------------------------------------------------------------------------
  132.   def setup_battle_test_members
  133.     @actors = []
  134.     for battler in $data_system.test_battlers
  135.       actor = $game_actors[battler.actor_id]
  136.       actor.level = battler.level
  137.       gain_weapon(battler.weapon_id, 1)
  138.       gain_armor(battler.armor1_id, 1)
  139.       gain_armor(battler.armor2_id, 1)
  140.       gain_armor(battler.armor3_id, 1)
  141.       gain_armor(battler.armor4_id, 1)
  142.       actor.equip(0, battler.weapon_id)
  143.       actor.equip(1, battler.armor1_id)
  144.       actor.equip(2, battler.armor2_id)
  145.       actor.equip(3, battler.armor3_id)
  146.       actor.equip(4, battler.armor4_id)
  147.       actor.recover_all
  148.       @actors.push(actor)
  149.     end
  150.     @items = {}
  151.     for i in 1...$data_items.size
  152.       if $data_items[i].name != ""
  153.         occasion = $data_items[i].occasion
  154.         if occasion == 0 or occasion == 1
  155.           @items[i] = 99
  156.         end
  157.       end
  158.     end
  159.   end
  160.   #--------------------------------------------------------------------------
  161.   # ● 同伴成员的还原
  162.   #--------------------------------------------------------------------------
  163.   def refresh
  164.     # 游戏数据载入后角色对像直接从 $game_actors
  165.     # 分离。
  166.     # 回避由于载入造成的角色再设置的问题。
  167.     new_actors = []
  168.     for i in [email protected]
  169.       if $data_actors[@actors[i].id] != nil
  170.         new_actors.push($game_actors[@actors[i].id])
  171.       end
  172.     end
  173.     @actors = new_actors
  174.   end
  175.   #--------------------------------------------------------------------------
  176.   # ● 获取最大等级
  177.   #--------------------------------------------------------------------------
  178.   def max_level
  179.     # 同伴人数为 0 的情况下
  180.     if @actors.size == 0
  181.       return 0
  182.     end
  183.     # 初始化本地变量 level
  184.     level = 0
  185.     # 求得同伴的最大等级
  186.     for actor in @actors
  187.       if level < actor.level
  188.         level = actor.level
  189.       end
  190.     end
  191.     return level
  192.   end
  193.   #--------------------------------------------------------------------------
  194.   # ● 加入同伴
  195.   #     actor_id : 角色 ID
  196.   #--------------------------------------------------------------------------
  197.   def add_actor(actor_id)
  198.     # 获取角色
  199.     actor = $game_actors[actor_id]
  200.     # 同伴人数未满 4 人、本角色不在队伍中的情况下
  201.     if @actors.size < 4 and not @actors.include?(actor)
  202.       # 添加角色
  203.       @actors.push(actor)
  204.       # 还原主角
  205.       $game_player.refresh
  206.     end
  207.   end
  208.   #--------------------------------------------------------------------------
  209.   # ● 角色离开
  210.   #     actor_id : 角色 ID
  211.   #--------------------------------------------------------------------------
  212.   def remove_actor(actor_id)
  213.     # 删除觉得
  214.     @actors.delete($game_actors[actor_id])
  215.     # 还原主角
  216.     $game_player.refresh
  217.   end
  218.   #--------------------------------------------------------------------------
  219.   # ● 增加金钱 (减少)
  220.   #     n : 金额
  221.   #--------------------------------------------------------------------------
  222.   def gain_gold(n)
  223.     @gold = [[@gold + n, 0].max, 9999999].min
  224.   end
  225.   #--------------------------------------------------------------------------
  226.   # ● 减少金钱
  227.   #     n : 金额
  228.   #--------------------------------------------------------------------------
  229.   def lose_gold(n)
  230.     # 调用数值逆转 gain_gold
  231.     gain_gold(-n)
  232.   end
  233.   #--------------------------------------------------------------------------
  234.   # ● 增加步数
  235.   #--------------------------------------------------------------------------
  236.   def increase_steps
  237.     @steps = [@steps + 1, 9999999].min
  238.   end
  239.   #--------------------------------------------------------------------------
  240.   # ● 获取物品的所持数
  241.   #     item_id : 物品 ID
  242.   #--------------------------------------------------------------------------
  243.   def item_number(item_id)
  244.     # 如果 hash 个数数值不存在就返回 0
  245.     return @items.include?(item_id) ? @items[item_id] : 0
  246.   end
  247.   #--------------------------------------------------------------------------
  248.   # ● 获取武器所持数
  249.   #     weapon_id : 武器 ID
  250.   #--------------------------------------------------------------------------
  251.   def weapon_number(weapon_id)
  252.     # 如果 hash 个数数值不存在就返回 0
  253.     return @weapons.include?(weapon_id) ? @weapons[weapon_id] : 0
  254.   end
  255.   #--------------------------------------------------------------------------
  256.   # ● 获取防具所持数
  257.   #     armor_id : 防具 ID
  258.   #--------------------------------------------------------------------------
  259.   def armor_number(armor_id)
  260.     # 如果 hash 个数数值不存在就返回 0
  261.     return @armors.include?(armor_id) ? @armors[armor_id] : 0
  262.   end
  263.   #--------------------------------------------------------------------------
  264.   # ● 增加物品 (减少)
  265.   #     item_id : 物品 ID
  266.   #     n       : 个数
  267.   #--------------------------------------------------------------------------
  268.   def gain_item(item_id, n)
  269.     # 更新 hash 的个数数据
  270.     if item_id > 0
  271.       @items[item_id] = [[item_number(item_id) + n, 0].max, 99].min
  272.     end
  273.   end
  274.   #--------------------------------------------------------------------------
  275.   # ● 增加武器 (减少)
  276.   #     weapon_id : 武器 ID
  277.   #     n         : 个数
  278.   #--------------------------------------------------------------------------
  279.   def gain_weapon(weapon_id, n)
  280.     # 更新 hash 的个数数据
  281.     if weapon_id > 0
  282.       @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
  283.     end
  284.   end
  285.   #--------------------------------------------------------------------------
  286.   # ● 增加防具 (减少)
  287.   #     armor_id : 防具 ID
  288.   #     n        : 个数
  289.   #--------------------------------------------------------------------------
  290.   def gain_armor(armor_id, n)
  291.     # 更新 hash 的个数数据
  292.     if armor_id > 0
  293.       @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
  294.     end
  295.   end
  296.   #--------------------------------------------------------------------------
  297.   # ● 减少物品
  298.   #     item_id : 物品 ID
  299.   #     n       : 个数
  300.   #--------------------------------------------------------------------------
  301.   def lose_item(item_id, n)
  302.     # 调用 gain_item 的数值逆转
  303.     gain_item(item_id, -n)
  304.   end
  305.   #--------------------------------------------------------------------------
  306.   # ● 减少武器
  307.   #     weapon_id : 武器 ID
  308.   #     n         : 个数
  309.   #--------------------------------------------------------------------------
  310.   def lose_weapon(weapon_id, n)
  311.     # 调用 gain_weapon 的数值逆转
  312.     gain_weapon(weapon_id, -n)
  313.   end
  314.   #--------------------------------------------------------------------------
  315.   # ● 减少防具
  316.   #     armor_id : 防具 ID
  317.   #     n        : 个数
  318.   #--------------------------------------------------------------------------
  319.   def lose_armor(armor_id, n)
  320.     # 调用 gain_armor 的数值逆转
  321.     gain_armor(armor_id, -n)
  322.   end
  323.   #--------------------------------------------------------------------------
  324.   # ● 判断物品可以使用
  325.   #     item_id : 物品 ID
  326.   #--------------------------------------------------------------------------
  327.   def item_can_use?(item_id)
  328.     # 物品个数为 0 的情况
  329.     if item_number(item_id) == 0
  330.       # 不能使用
  331.       return false
  332.     end
  333.     # 获取可以使用的时候
  334.     occasion = $data_items[item_id].occasion
  335.     # 战斗的情况
  336.     if $game_temp.in_battle
  337.       # 可以使用时为 0 (平时) 或者是 1 (战斗时) 可以使用
  338.       return (occasion == 0 or occasion == 1)
  339.     end
  340.     # 可以使用时为 0 (平时) 或者是 2 (菜单时) 可以使用
  341.     return (occasion == 0 or occasion == 2)
  342.   end
  343.   #--------------------------------------------------------------------------
  344.   # ● 清除全体的行动
  345.   #--------------------------------------------------------------------------
  346.   def clear_actions
  347.     # 清除全体同伴的行为
  348.     for actor in @actors
  349.       actor.current_action.clear
  350.     end
  351.   end
  352.   #--------------------------------------------------------------------------
  353.   # ● 可以输入命令的判定
  354.   #--------------------------------------------------------------------------
  355.   def inputable?
  356.     # 如果一可以输入命令就返回 true
  357.     for actor in @actors
  358.       if actor.inputable?
  359.         return true
  360.       end
  361.     end
  362.     return false
  363.   end
  364.   #--------------------------------------------------------------------------
  365.   # ● 全灭判定
  366.   #--------------------------------------------------------------------------
  367.   def all_dead?
  368.     # 同伴人数为 0 的情况下
  369.     if $game_party.actors.size == 0
  370.       return false
  371.     end
  372.     # 同伴中无人 HP 在 0 以上
  373.     for actor in @actors
  374.       if actor.hp > 0
  375.         return false
  376.       end
  377.     end
  378.     # 全灭
  379.     return true
  380.   end
  381.   #--------------------------------------------------------------------------
  382.   # ● 检查连续伤害 (地图用)
  383.   #--------------------------------------------------------------------------
  384.   def check_map_slip_damage
  385.     for actor in @actors
  386.       if actor.hp > 0 and actor.slip_damage?
  387.         actor.hp -= [actor.maxhp / 100, 1].max
  388.         if actor.hp == 0
  389.           $game_system.se_play($data_system.actor_collapse_se)
  390.         end
  391.         $game_screen.start_flash(Color.new(255,0,0,128), 4)
  392.         $game_temp.gameover = $game_party.all_dead?
  393.       end
  394.     end
  395.   end
  396.   #--------------------------------------------------------------------------
  397.   # ● 对像角色的随机确定
  398.   #     hp0 : 限制为 HP 0 的角色
  399.   #--------------------------------------------------------------------------
  400.   def random_target_actor(hp0 = false)
  401.     # 初始化轮流
  402.     roulette = []
  403.     # 循环
  404.     for actor in @actors
  405.       # 符合条件的场合
  406.       if (not hp0 and actor.exist?) or (hp0 and actor.hp0?)
  407.         # 获取角色职业的位置 [位置]
  408.         position = $data_classes[actor.class_id].position
  409.         # 前卫的话 n = 4、中卫的话 n = 3、后卫的话 n = 2
  410.         n = 4 - position
  411.         # 添加角色的轮流 n 回
  412.         n.times do
  413.           roulette.push(actor)
  414.         end
  415.       end
  416.     end
  417.     # 轮流大小为 0 的情况
  418.     if roulette.size == 0
  419.       return nil
  420.     end
  421.     # 转轮盘赌,决定角色
  422.     return roulette[rand(roulette.size)]
  423.   end
  424.   #--------------------------------------------------------------------------
  425.   # ● 对像角色的随机确定 (HP 0)
  426.   #--------------------------------------------------------------------------
  427.   def random_target_actor_hp0
  428.     return random_target_actor(true)
  429.   end
  430.   #--------------------------------------------------------------------------
  431.   # ● 对像角色的顺序确定
  432.   #     actor_index : 角色索引
  433.   #--------------------------------------------------------------------------
  434.   def smooth_target_actor(actor_index)
  435.     # 取得对像
  436.     actor = @actors[actor_index]
  437.     # 对像存在的情况下
  438.     if actor != nil and actor.exist?
  439.       return actor
  440.     end
  441.     # 循环
  442.     for actor in @actors
  443.       # 对像存在的情况下
  444.       if actor.exist?
  445.         return actor
  446.       end
  447.     end
  448.   end
  449. end
复制代码


高手帮忙看下好吗谢谢




图 要扩住 在同一行 by 蚂蚁
此贴于 2009-1-18 10:18:35 被版主redant提醒,请楼主看到后对本贴做出回应。
版务信息:本贴由楼主自主结贴~
遠い夢...

Lv1.梦旅人

梦石
0
星屑
50
在线时间
4 小时
注册时间
2008-8-20
帖子
159
2
发表于 2009-1-18 19:36:55 | 只看该作者
注意大小写!!!
我帮你改了
  1. #==============================================================================
  2. # ■ Scene_Load
  3. #------------------------------------------------------------------------------
  4. #  处理读档画面的类。
  5. #==============================================================================

  6. class Scene_Load < Scene_File
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #--------------------------------------------------------------------------
  10.   def initialize
  11.     # 再生成临时对像
  12.     $game_temp = Game_Temp.new
  13.     # 选择存档时间最新的文件
  14.     $game_temp.last_file_index = 0
  15.     latest_time = Time.at(0)
  16.     for i in 0..3
  17.       filename = make_filename(i)
  18.       if FileTest.exist?(filename)
  19.         file = File.open(filename, "r")
  20.         if file.mtime > latest_time
  21.           latest_time = file.mtime
  22.           $game_temp.last_file_index = i
  23.         end
  24.         file.close
  25.       end
  26.     end
  27.     super("要载入哪个文件?")
  28.   end
  29.   #--------------------------------------------------------------------------
  30.   # ● 确定时的处理
  31.   #--------------------------------------------------------------------------
  32.   def on_decision(filename)
  33.     # 文件不存在的情况下
  34.     unless FileTest.exist?(filename)
  35.       # 演奏冻结 SE
  36.       $game_system.se_play($data_system.buzzer_se)
  37.       return
  38.     end
  39.     # 演奏读档 SE
  40.     $game_system.se_play($data_system.load_se)
  41.     # 写入存档数据
  42.     file = File.open(filename, "rb")
  43.     read_save_data(file)
  44.     file.close
  45.     # 还原 BGM、BGS
  46.     $game_system.bgm_play($game_system.playing_bgm)
  47.     $game_system.bgs_play($game_system.playing_bgs)
  48.     # 刷新地图 (执行并行事件)
  49.     $game_map.update
  50.     # 切换到地图画面
  51.     $scene = Scene_Map.new
  52.   end
  53.   #--------------------------------------------------------------------------
  54.   # ● 取消时的处理
  55.   #--------------------------------------------------------------------------
  56.   def on_cancel
  57.     # 演奏取消 SE
  58.     $game_system.se_play($data_system.cancel_se)
  59.     # 切换到标题画面
  60.     $scene = Scene_Title.new
  61.   end
  62.   #--------------------------------------------------------------------------
  63.   # ● 读取存档数据
  64.   #     file : 读取用文件对像 (已经打开)
  65.   #--------------------------------------------------------------------------
  66.   def read_save_data(file)
  67.     # 读取描绘存档文件用的角色数据
  68.     characters = Marshal.load(file)
  69.     # 读取测量游戏时间用画面计数
  70.     Graphics.frame_count = Marshal.load(file)
  71.     # 读取各种游戏对像
  72.     $game_system        = Marshal.load(file)
  73.     $game_switches      = Marshal.load(file)
  74.     $game_variables     = Marshal.load(file)
  75.     $game_self_switches = Marshal.load(file)
  76.     $game_screen        = Marshal.load(file)
  77.     $game_actors        = Marshal.load(file)
  78.     $game_party         = Marshal.load(file)
  79.     $game_troop         = Marshal.load(file)
  80.     $game_map           = Marshal.load(file)
  81.     $game_player        = Marshal.load(file)
  82.     # 魔法编号与保存时有差异的情况下
  83.     # (加入编辑器的编辑过的数据)
  84.     if $game_system.magic_number != $data_system.magic_number
  85.       # 重新装载地图
  86.       $game_map.setup($game_map.map_id)
  87.       $game_player.center($game_player.x, $game_player.y)
  88.     end
  89.     # 刷新同伴成员
  90.     $game_party.refresh
  91.   end
  92. end


  93. #==============================================================================
  94. # ■ Game_Party
  95. #------------------------------------------------------------------------------
  96. #  处理同伴的类。包含金钱以及物品的信息。本类的实例
  97. # 请参考 $game_party。
  98. #==============================================================================

  99. class Game_Party
  100.   #--------------------------------------------------------------------------
  101.   # ● 定义实例变量
  102.   #--------------------------------------------------------------------------
  103.   attr_reader   :actors                   # 角色
  104.   attr_reader   :gold                     # 金钱
  105.   attr_reader   :steps                    # 步数
  106.   #--------------------------------------------------------------------------
  107.   # ● 初始化对像
  108.   #--------------------------------------------------------------------------
  109.   def initialize
  110.     # 建立角色序列
  111.     @actors = []
  112.     # 初始化金钱与步数
  113.     @gold = 0
  114.     @steps = 0
  115.     # 生成物品、武器、防具的所持数 hash
  116.     @items = {}
  117.     @weapons = {}
  118.     @armors = {}
  119.   end
  120.   #--------------------------------------------------------------------------
  121.   # ● 设置初期同伴
  122.   #--------------------------------------------------------------------------
  123.   def setup_starting_members
  124.     @actors = []
  125.     for i in $data_system.party_members
  126.       @actors.push($game_actors[i])
  127.     end
  128.   end
  129.   #--------------------------------------------------------------------------
  130.   # ● 设置战斗测试用同伴
  131.   #--------------------------------------------------------------------------
  132.   def setup_battle_test_members
  133.     @actors = []
  134.     for battler in $data_system.test_battlers
  135.       actor = $game_actors[battler.actor_id]
  136.       actor.level = battler.level
  137.       gain_weapon(battler.weapon_id, 1)
  138.       gain_armor(battler.armor1_id, 1)
  139.       gain_armor(battler.armor2_id, 1)
  140.       gain_armor(battler.armor3_id, 1)
  141.       gain_armor(battler.armor4_id, 1)
  142.       actor.equip(0, battler.weapon_id)
  143.       actor.equip(1, battler.armor1_id)
  144.       actor.equip(2, battler.armor2_id)
  145.       actor.equip(3, battler.armor3_id)
  146.       actor.equip(4, battler.armor4_id)
  147.       actor.recover_all
  148.       @actors.push(actor)
  149.     end
  150.     @items = {}
  151.     for i in 1...$data_items.size
  152.       if $data_items[i].name != ""
  153.         occasion = $data_items[i].occasion
  154.         if occasion == 0 or occasion == 1
  155.           @items[i] = 99
  156.         end
  157.       end
  158.     end
  159.   end
  160.   #--------------------------------------------------------------------------
  161.   # ● 同伴成员的还原
  162.   #--------------------------------------------------------------------------
  163.   def refresh
  164.     # 游戏数据载入后角色对像直接从 $game_actors
  165.     # 分离。
  166.     # 回避由于载入造成的角色再设置的问题。
  167.     new_actors = []
  168.     for i in [email protected]
  169.       if $data_actors[@actors[i].id] != nil
  170.         new_actors.push($game_actors[@actors[i].id])
  171.       end
  172.     end
  173.     @actors = new_actors
  174.   end
  175.   #--------------------------------------------------------------------------
  176.   # ● 获取最大等级
  177.   #--------------------------------------------------------------------------
  178.   def max_level
  179.     # 同伴人数为 0 的情况下
  180.     if @actors.size == 0
  181.       return 0
  182.     end
  183.     # 初始化本地变量 level
  184.     level = 0
  185.     # 求得同伴的最大等级
  186.     for actor in @actors
  187.       if level < actor.level
  188.         level = actor.level
  189.       end
  190.     end
  191.     return level
  192.   end
  193.   #--------------------------------------------------------------------------
  194.   # ● 加入同伴
  195.   #     actor_id : 角色 ID
  196.   #--------------------------------------------------------------------------
  197.   def add_actor(actor_id)
  198.     # 获取角色
  199.     actor = $game_actors[actor_id]
  200.     # 同伴人数未满 4 人、本角色不在队伍中的情况下
  201.     if @actors.size < 4 and not @actors.include?(actor)
  202.       # 添加角色
  203.       @actors.push(actor)
  204.       # 还原主角
  205.       $game_player.refresh
  206.     end
  207.   end
  208.   #--------------------------------------------------------------------------
  209.   # ● 角色离开
  210.   #     actor_id : 角色 ID
  211.   #--------------------------------------------------------------------------
  212.   def remove_actor(actor_id)
  213.     # 删除觉得
  214.     @actors.delete($game_actors[actor_id])
  215.     # 还原主角
  216.     $game_player.refresh
  217.   end
  218.   #--------------------------------------------------------------------------
  219.   # ● 增加金钱 (减少)
  220.   #     n : 金额
  221.   #--------------------------------------------------------------------------
  222.   def gain_gold(n)
  223.     @gold = [[@gold + n, 0].max, 9999999].min
  224.   end
  225.   #--------------------------------------------------------------------------
  226.   # ● 减少金钱
  227.   #     n : 金额
  228.   #--------------------------------------------------------------------------
  229.   def lose_gold(n)
  230.     # 调用数值逆转 gain_gold
  231.     gain_gold(-n)
  232.   end
  233.   #--------------------------------------------------------------------------
  234.   # ● 增加步数
  235.   #--------------------------------------------------------------------------
  236.   def increase_steps
  237.     @steps = [@steps + 1, 9999999].min
  238.   end
  239.   #--------------------------------------------------------------------------
  240.   # ● 获取物品的所持数
  241.   #     item_id : 物品 ID
  242.   #--------------------------------------------------------------------------
  243.   def item_number(item_id)
  244.     # 如果 hash 个数数值不存在就返回 0
  245.     return @items.include?(item_id) ? @items[item_id] : 0
  246.   end
  247.   #--------------------------------------------------------------------------
  248.   # ● 获取武器所持数
  249.   #     weapon_id : 武器 ID
  250.   #--------------------------------------------------------------------------
  251.   def weapon_number(weapon_id)
  252.     # 如果 hash 个数数值不存在就返回 0
  253.     return @weapons.include?(weapon_id) ? @weapons[weapon_id] : 0
  254.   end
  255.   #--------------------------------------------------------------------------
  256.   # ● 获取防具所持数
  257.   #     armor_id : 防具 ID
  258.   #--------------------------------------------------------------------------
  259.   def armor_number(armor_id)
  260.     # 如果 hash 个数数值不存在就返回 0
  261.     return @armors.include?(armor_id) ? @armors[armor_id] : 0
  262.   end
  263.   #--------------------------------------------------------------------------
  264.   # ● 增加物品 (减少)
  265.   #     item_id : 物品 ID
  266.   #     n       : 个数
  267.   #--------------------------------------------------------------------------
  268.   def gain_item(item_id, n)
  269.     # 更新 hash 的个数数据
  270.     if item_id > 0
  271.       @items[item_id] = [[item_number(item_id) + n, 0].max, 99].min
  272.     end
  273.   end
  274.   #--------------------------------------------------------------------------
  275.   # ● 增加武器 (减少)
  276.   #     weapon_id : 武器 ID
  277.   #     n         : 个数
  278.   #--------------------------------------------------------------------------
  279.   def gain_weapon(weapon_id, n)
  280.     # 更新 hash 的个数数据
  281.     if weapon_id > 0
  282.       @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
  283.     end
  284.   end
  285.   #--------------------------------------------------------------------------
  286.   # ● 增加防具 (减少)
  287.   #     armor_id : 防具 ID
  288.   #     n        : 个数
  289.   #--------------------------------------------------------------------------
  290.   def gain_armor(armor_id, n)
  291.     # 更新 hash 的个数数据
  292.     if armor_id > 0
  293.       @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
  294.     end
  295.   end
  296.   #--------------------------------------------------------------------------
  297.   # ● 减少物品
  298.   #     item_id : 物品 ID
  299.   #     n       : 个数
  300.   #--------------------------------------------------------------------------
  301.   def lose_item(item_id, n)
  302.     # 调用 gain_item 的数值逆转
  303.     gain_item(item_id, -n)
  304.   end
  305.   #--------------------------------------------------------------------------
  306.   # ● 减少武器
  307.   #     weapon_id : 武器 ID
  308.   #     n         : 个数
  309.   #--------------------------------------------------------------------------
  310.   def lose_weapon(weapon_id, n)
  311.     # 调用 gain_weapon 的数值逆转
  312.     gain_weapon(weapon_id, -n)
  313.   end
  314.   #--------------------------------------------------------------------------
  315.   # ● 减少防具
  316.   #     armor_id : 防具 ID
  317.   #     n        : 个数
  318.   #--------------------------------------------------------------------------
  319.   def lose_armor(armor_id, n)
  320.     # 调用 gain_armor 的数值逆转
  321.     gain_armor(armor_id, -n)
  322.   end
  323.   #--------------------------------------------------------------------------
  324.   # ● 判断物品可以使用
  325.   #     item_id : 物品 ID
  326.   #--------------------------------------------------------------------------
  327.   def item_can_use?(item_id)
  328.     # 物品个数为 0 的情况
  329.     if item_number(item_id) == 0
  330.       # 不能使用
  331.       return false
  332.     end
  333.     # 获取可以使用的时候
  334.     occasion = $data_items[item_id].occasion
  335.     # 战斗的情况
  336.     if $game_temp.in_battle
  337.       # 可以使用时为 0 (平时) 或者是 1 (战斗时) 可以使用
  338.       return (occasion == 0 or occasion == 1)
  339.     end
  340.     # 可以使用时为 0 (平时) 或者是 2 (菜单时) 可以使用
  341.     return (occasion == 0 or occasion == 2)
  342.   end
  343.   #--------------------------------------------------------------------------
  344.   # ● 清除全体的行动
  345.   #--------------------------------------------------------------------------
  346.   def clear_actions
  347.     # 清除全体同伴的行为
  348.     for actor in @actors
  349.       actor.current_action.clear
  350.     end
  351.   end
  352.   #--------------------------------------------------------------------------
  353.   # ● 可以输入命令的判定
  354.   #--------------------------------------------------------------------------
  355.   def inputable?
  356.     # 如果一可以输入命令就返回 true
  357.     for actor in @actors
  358.       if actor.inputable?
  359.         return true
  360.       end
  361.     end
  362.     return false
  363.   end
  364.   #--------------------------------------------------------------------------
  365.   # ● 全灭判定
  366.   #--------------------------------------------------------------------------
  367.   def all_dead?
  368.     # 同伴人数为 0 的情况下
  369.     if $game_party.actors.size == 0
  370.       return false
  371.     end
  372.     # 同伴中无人 HP 在 0 以上
  373.     for actor in @actors
  374.       if actor.hp > 0
  375.         return false
  376.       end
  377.     end
  378.     # 全灭
  379.     return true
  380.   end
  381.   #--------------------------------------------------------------------------
  382.   # ● 检查连续伤害 (地图用)
  383.   #--------------------------------------------------------------------------
  384.   def check_map_slip_damage
  385.     for actor in @actors
  386.       if actor.hp > 0 and actor.slip_damage?
  387.         actor.hp -= [actor.maxhp / 100, 1].max
  388.         if actor.hp == 0
  389.           $game_system.se_play($data_system.actor_collapse_se)
  390.         end
  391.         $game_screen.start_flash(Color.new(255,0,0,128), 4)
  392.         $game_temp.gameover = $game_party.all_dead?
  393.       end
  394.     end
  395.   end
  396.   #--------------------------------------------------------------------------
  397.   # ● 对像角色的随机确定
  398.   #     hp0 : 限制为 HP 0 的角色
  399.   #--------------------------------------------------------------------------
  400.   def random_target_actor(hp0 = false)
  401.     # 初始化轮流
  402.     roulette = []
  403.     # 循环
  404.     for actor in @actors
  405.       # 符合条件的场合
  406.       if (not hp0 and actor.exist?) or (hp0 and actor.hp0?)
  407.         # 获取角色职业的位置 [位置]
  408.         position = $data_classes[actor.class_id].position
  409.         # 前卫的话 n = 4、中卫的话 n = 3、后卫的话 n = 2
  410.         n = 4 - position
  411.         # 添加角色的轮流 n 回
  412.         n.times do
  413.           roulette.push(actor)
  414.         end
  415.       end
  416.     end
  417.     # 轮流大小为 0 的情况
  418.     if roulette.size == 0
  419.       return nil
  420.     end
  421.     # 转轮盘赌,决定角色
  422.     return roulette[rand(roulette.size)]
  423.   end
  424.   #--------------------------------------------------------------------------
  425.   # ● 对像角色的随机确定 (HP 0)
  426.   #--------------------------------------------------------------------------
  427.   def random_target_actor_hp0
  428.     return random_target_actor(true)
  429.   end
  430.   #--------------------------------------------------------------------------
  431.   # ● 对像角色的顺序确定
  432.   #     actor_index : 角色索引
  433.   #--------------------------------------------------------------------------
  434.   def smooth_target_actor(actor_index)
  435.     # 取得对像
  436.     actor = @actors[actor_index]
  437.     # 对像存在的情况下
  438.     if actor != nil and actor.exist?
  439.       return actor
  440.     end
  441.     # 循环
  442.     for actor in @actors
  443.       # 对像存在的情况下
  444.       if actor.exist?
  445.         return actor
  446.       end
  447.     end
  448.   end
  449. end
复制代码

就是把第79行改成$game_party         = Marshal.load(file)
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2008-10-19
帖子
23
3
 楼主| 发表于 2009-1-19 05:58:41 | 只看该作者
谢谢~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-19 07:10

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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