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

Project1

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

[已经解决] 关于颜色脚本冲突问题(解决方案)

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
195
在线时间
95 小时
注册时间
2011-1-26
帖子
222
跳转到指定楼层
1
发表于 2011-5-30 20:58:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

如上帮忙看一下 问题.rar (1.65 MB, 下载次数: 9)
止望不灭

Lv1.梦旅人

梦石
0
星屑
55
在线时间
323 小时
注册时间
2010-8-21
帖子
666
2
发表于 2011-5-31 18:00:06 | 只看该作者
在条件分歧的脚本栏运行脚本失败...对象指向nil了,可能是实例变量,也有可能是全局变量,工程是..
事件ARPG??事件的话很多人偷懒用全局变量,可能是血量之类的,比较时失败了,这种错误一般是第二次
玩时变量没还原,为nil了,如果不是则极可能是事件还没有来得及处理,检查一次。容错方案:
  1. #==============================================================================
  2. # ■ Interpreter (分割定义 3)
  3. #------------------------------------------------------------------------------
  4. #  执行事件指令的解释器。本类在 Game_System 类
  5. # 和 Game_Event 类的内部使用。
  6. #==============================================================================

  7. class Interpreter
  8.   #--------------------------------------------------------------------------
  9.   # ● 条件分支
  10.   #--------------------------------------------------------------------------
  11.   def command_111
  12.     # 初始化本地变量 result
  13.     result = false
  14.     # 条件判定
  15.     case @parameters[0]
  16.     when 0  # 开关
  17.       result = ($game_switches[@parameters[1]] == (@parameters[2] == 0))
  18.     when 1  # 变量
  19.       value1 = $game_variables[@parameters[1]]
  20.       if @parameters[2] == 0
  21.         value2 = @parameters[3]
  22.       else
  23.         value2 = $game_variables[@parameters[3]]
  24.       end
  25.       case @parameters[4]
  26.       when 0  # 等于
  27.         result = (value1 == value2)
  28.       when 1  # 以上
  29.         result = (value1 >= value2)
  30.       when 2  # 以下
  31.         result = (value1 <= value2)
  32.       when 3  # 超过
  33.         result = (value1 > value2)
  34.       when 4  # 未满
  35.         result = (value1 < value2)
  36.       when 5  # 以外
  37.         result = (value1 != value2)
  38.       end
  39.     when 2  # 独立开关
  40.       if @event_id > 0
  41.         key = [$game_map.map_id, @event_id, @parameters[1]]
  42.         if @parameters[2] == 0
  43.           result = ($game_self_switches[key] == true)
  44.         else
  45.           result = ($game_self_switches[key] != true)
  46.         end
  47.       end
  48.     when 3  # 计时器
  49.       if $game_system.timer_working
  50.         sec = $game_system.timer / Graphics.frame_rate
  51.         if @parameters[2] == 0
  52.           result = (sec >= @parameters[1])
  53.         else
  54.           result = (sec <= @parameters[1])
  55.         end
  56.       end
  57.     when 4  # 角色
  58.       actor = $game_actors[@parameters[1]]
  59.       if actor != nil
  60.         case @parameters[2]
  61.         when 0  # 同伴
  62.           result = ($game_party.actors.include?(actor))
  63.         when 1  # 名称
  64.           result = (actor.name == @parameters[3])
  65.         when 2  # 特技
  66.           result = (actor.skill_learn?(@parameters[3]))
  67.         when 3  # 武器
  68.           result = (actor.weapon_id == @parameters[3])
  69.         when 4  # 防具
  70.   result = (actor.armor1_id == @parameters[3] or
  71.                     actor.armor2_id == @parameters[3] or
  72.                     actor.armor3_id == @parameters[3] or
  73.                     actor.armor4_id == @parameters[3])
  74.         when 5  # 状态
  75.           result = (actor.state?(@parameters[3]))
  76.         end
  77.       end
  78.     when 5  # 敌人
  79.       enemy = $game_troop.enemies[@parameters[1]]
  80.       if enemy != nil
  81.         case @parameters[2]
  82.         when 0  # 出现
  83.           result = (enemy.exist?)
  84.         when 1  # 状态
  85.           result = (enemy.state?(@parameters[3]))
  86.         end
  87.       end
  88.     when 6  # 角色
  89.       character = get_character(@parameters[1])
  90.       if character != nil
  91.         result = (character.direction == @parameters[2])
  92.       end
  93.     when 7  # 金钱
  94.       if @parameters[2] == 0
  95.         result = ($game_party.gold >= @parameters[1])
  96.       else
  97.         result = ($game_party.gold <= @parameters[1])
  98.       end
  99.     when 8  # 物品
  100.       result = ($game_party.item_number(@parameters[1]) > 0)
  101.     when 9  # 武器
  102.       result = ($game_party.weapon_number(@parameters[1]) > 0)
  103.     when 10  # 防具
  104.       result = ($game_party.armor_number(@parameters[1]) > 0)
  105.     when 11  # 按钮
  106.       result = (Input.press?(@parameters[1]))
  107.     when 12  # 活动块
  108.       begin
  109.         result = eval(@parameters[1])
  110.       rescue
  111.         file = File.open("Error.txt","a")
  112.         file.write(@parameters[1]+"\n") if $DEBUG
  113.         file.close
  114.       end
  115.     end
  116.     # 判断结果保存在 hash 中
  117.     @branch[@list[@index].indent] = result
  118.     # 判断结果为真的情况下
  119.     if @branch[@list[@index].indent] == true
  120.       # 删除分支数据
  121.       @branch.delete(@list[@index].indent)
  122.       # 继续
  123.       return true
  124.     end
  125.     # 不符合条件的情况下 : 指令跳转
  126.     return command_skip
  127.   end
  128. end
复制代码
这个脚本紧插到Main前,跑一圈,看看根目录下的Error.txt文件记录的东西,比如
我把那个怪物事件关了,里面就记录了很多
$npc1hp <= 0

证明npc1没有设置,$npc1hp还是nil

点评

测试了一下ok!谢了!打扰了你那么多时间。  发表于 2011-5-31 20:52
>>猛戳>>MetalSagaR游戏主页<<这里<<
欢迎提供您的意见
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-29 15:49

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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