Project1
标题:
关于颜色脚本冲突问题(解决方案)
[打印本页]
作者:
921257824
时间:
2011-5-30 20:58
标题:
关于颜色脚本冲突问题(解决方案)
错误.png
(4.17 KB, 下载次数: 0)
下载附件
保存到相册
2011-5-30 20:52 上传
如上帮忙看一下
问题.rar
(1.65 MB, 下载次数: 9)
2011-5-30 20:58 上传
点击文件名下载附件
dsu_plus_rewardpost_czw
作者:
沙漠点灰
时间:
2011-5-31 18:00
在条件分歧的脚本栏运行脚本失败...对象指向nil了,可能是实例变量,也有可能是全局变量,工程是..
事件ARPG??事件的话很多人偷懒用全局变量,可能是血量之类的,比较时失败了,这种错误一般是第二次
玩时变量没还原,为nil了,如果不是
则极可能是事件还没有来得及处理
,检查一次。容错方案:
#==============================================================================
# ■ Interpreter (分割定义 3)
#------------------------------------------------------------------------------
# 执行事件指令的解释器。本类在 Game_System 类
# 和 Game_Event 类的内部使用。
#==============================================================================
class Interpreter
#--------------------------------------------------------------------------
# ● 条件分支
#--------------------------------------------------------------------------
def command_111
# 初始化本地变量 result
result = false
# 条件判定
case @parameters[0]
when 0 # 开关
result = ($game_switches[@parameters[1]] == (@parameters[2] == 0))
when 1 # 变量
value1 = $game_variables[@parameters[1]]
if @parameters[2] == 0
value2 = @parameters[3]
else
value2 = $game_variables[@parameters[3]]
end
case @parameters[4]
when 0 # 等于
result = (value1 == value2)
when 1 # 以上
result = (value1 >= value2)
when 2 # 以下
result = (value1 <= value2)
when 3 # 超过
result = (value1 > value2)
when 4 # 未满
result = (value1 < value2)
when 5 # 以外
result = (value1 != value2)
end
when 2 # 独立开关
if @event_id > 0
key = [$game_map.map_id, @event_id, @parameters[1]]
if @parameters[2] == 0
result = ($game_self_switches[key] == true)
else
result = ($game_self_switches[key] != true)
end
end
when 3 # 计时器
if $game_system.timer_working
sec = $game_system.timer / Graphics.frame_rate
if @parameters[2] == 0
result = (sec >= @parameters[1])
else
result = (sec <= @parameters[1])
end
end
when 4 # 角色
actor = $game_actors[@parameters[1]]
if actor != nil
case @parameters[2]
when 0 # 同伴
result = ($game_party.actors.include?(actor))
when 1 # 名称
result = (actor.name == @parameters[3])
when 2 # 特技
result = (actor.skill_learn?(@parameters[3]))
when 3 # 武器
result = (actor.weapon_id == @parameters[3])
when 4 # 防具
result = (actor.armor1_id == @parameters[3] or
actor.armor2_id == @parameters[3] or
actor.armor3_id == @parameters[3] or
actor.armor4_id == @parameters[3])
when 5 # 状态
result = (actor.state?(@parameters[3]))
end
end
when 5 # 敌人
enemy = $game_troop.enemies[@parameters[1]]
if enemy != nil
case @parameters[2]
when 0 # 出现
result = (enemy.exist?)
when 1 # 状态
result = (enemy.state?(@parameters[3]))
end
end
when 6 # 角色
character = get_character(@parameters[1])
if character != nil
result = (character.direction == @parameters[2])
end
when 7 # 金钱
if @parameters[2] == 0
result = ($game_party.gold >= @parameters[1])
else
result = ($game_party.gold <= @parameters[1])
end
when 8 # 物品
result = ($game_party.item_number(@parameters[1]) > 0)
when 9 # 武器
result = ($game_party.weapon_number(@parameters[1]) > 0)
when 10 # 防具
result = ($game_party.armor_number(@parameters[1]) > 0)
when 11 # 按钮
result = (Input.press?(@parameters[1]))
when 12 # 活动块
begin
result = eval(@parameters[1])
rescue
file = File.open("Error.txt","a")
file.write(@parameters[1]+"\n") if $DEBUG
file.close
end
end
# 判断结果保存在 hash 中
@branch[@list[@index].indent] = result
# 判断结果为真的情况下
if @branch[@list[@index].indent] == true
# 删除分支数据
@branch.delete(@list[@index].indent)
# 继续
return true
end
# 不符合条件的情况下 : 指令跳转
return command_skip
end
end
复制代码
这个脚本
紧插
到Main前,跑一圈,看看根目录下的Error.txt文件记录的东西,比如
我把那个怪物事件关了,里面就记录了很多
$npc1hp <= 0
证明npc1没有设置,$npc1hp还是nil
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1