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

Project1

 找回密码
 注册会员
搜索
楼主: f263239
打印 上一主题 下一主题

[已经解决] 脚本出错 actor = $game_actors[@parameters[1]]

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2009-7-3
帖子
106
11
 楼主| 发表于 2009-7-23 20:09:04 | 只看该作者
10# 雪流星
就是删了后会出现“在执行RGSS脚本时 SyntaxError 被触发”,然后自动关闭……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2009-7-3
帖子
106
12
 楼主| 发表于 2009-7-23 21:39:38 | 只看该作者
求解之——怎么改才能正常啊?别说删了,我需要那些变量,还有,说清楚一下这到底是怎么回事?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2009-7-3
帖子
106
13
 楼主| 发表于 2009-7-24 08:58:46 | 只看该作者
还是不行啊………………
回复 支持 反对

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

14
发表于 2009-7-24 09:01:31 | 只看该作者
把你的Game_Interpreter 貼出來看看
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2009-7-3
帖子
106
15
 楼主| 发表于 2009-7-24 12:05:39 | 只看该作者
本帖最后由 f263239 于 2009-7-24 12:06 编辑

#==============================================================================
# ** Game_Interpreter
#------------------------------------------------------------------------------
# 这个类是用来执行事件指令的直译器。
# 这个类作为 Game_Map、Game_Troop 和 Game_Event 的内部类使用。
#==============================================================================

class Game_Interpreter
#--------------------------------------------------------------------------
# * 对象初始化
# depth : 嵌套深度
# main : 主标帜
#--------------------------------------------------------------------------
def initialize(depth = 0, main = false)
@depth = depth
@main = main
if @depth > 100000 #原为100
print("全局事件呼叫的数量大于上限值100000。")
exit
end
clear
end
#--------------------------------------------------------------------------
# * 清零
#--------------------------------------------------------------------------
def clear
@map_id = 0 # 开始时的地图编号
@original_event_id = 0 # 开始时的事件块编号
@event_id = 0 # 事件编号
@list = nil # 要执行的内容
@index = 0 # 索引
@message_waiting = false # 等待文本显示完毕
@moving_character = nil # 事件块移动
@wait_count = 0 # 等待次数统计
@child_interpreter = nil # 子直译器
@branch = {} # 分歧数据
end
#--------------------------------------------------------------------------
# * 事件块设置
# list : 待执行的指令
# event_id : 事件块编号
#--------------------------------------------------------------------------
def setup(list, event_id = 0)
clear # 内部直译器状态清零
@map_id = $game_map.map_id # 记忆地图编号
@original_event_id = event_id # 记忆事件块编号
@event_id = event_id # 记忆事件块编号
@list = list # 记忆要执行的内容
@index = 0 # 初始化索引
cancel_menu_call # 禁止呼叫ESC选单
end
#--------------------------------------------------------------------------
# * 禁止呼叫ESC选单
# 控制下列两种情形并使其无效:
# 1 玩家正在事件指令操控下移动的时候按下取消键。
# 2 事件指令正在执行的时候尝试呼叫ESC选单。
#--------------------------------------------------------------------------
def cancel_menu_call
if @main and $game_temp.next_scene == "menu" and $game_temp.menu_beep
$game_temp.next_scene = nil
$game_temp.menu_beep = false
end
end
#--------------------------------------------------------------------------
# * 判定奔跑状态
#--------------------------------------------------------------------------
def running?
return @list != nil
end
#--------------------------------------------------------------------------
# * 开始设置事件
#--------------------------------------------------------------------------
def setup_starting_event
if $game_map.need_refresh # 若需要,则刷新地图界面显示
$game_map.refresh
end
if $game_temp.common_event_id > 0 # 暂时停止呼叫公共事件?
setup($data_common_events[$game_temp.common_event_id].list)
$game_temp.common_event_id = 0
return
end
for event in $game_map.events.values # 地图事件块
if event.starting # 如果找到了起始事件块
event.clear_starting # 清除起始标帜
setup(event.list, event.id) # 设置事件块
return
end
end
for event in $data_common_events.compact # 全局事件
if event.trigger == 1 and # 自动执行?
$game_switches[event.switch_id] == true # 控制开关被开启?
setup(event.list) # 设置事件
return
end
end
end
#--------------------------------------------------------------------------
# * 更新帧
#--------------------------------------------------------------------------
def update
loop do
if $game_map.map_id != @map_id # 地图不通?
@event_id = 0 # 使事件块编号为0
end
if @child_interpreter != nil # 如果子直译器存在
@child_interpreter.update # 更新子直译器资讯
if @child_interpreter.running? # 子直译器执行中?
return # 返回
else # 执行结束后
@child_interpreter = nil # 子直译器清零
end
end
if @message_waiting # 等待文本讯息显示完毕
return
end
if @moving_character != nil # 等待移动结束
if @moving_character.move_route_forcing
return
end
@moving_character = nil
end
if @wait_count > 0 # 等待
@wait_count -= 1
return
end
if $game_troop.forcing_battler != nil # 强制下达作战指令
return
end
if $game_temp.next_scene != nil # 开场画面
return
end
if @list == nil # 若内容清单为空
setup_starting_event if @main # 设置玩家起点事件块
return if @list == nil # 什么都没设置
end
return if execute_command == false # 执行事件指令
@index += 1 # 指数递增
end
end
#--------------------------------------------------------------------------
# * 主角迭代程式(编号)
# param : 若值大于等于零则指定某个索引,若值为-1则指定全体主角。
#--------------------------------------------------------------------------
def iterate_actor_id(param)
if param == 0 # 全体
for actor in $game_party.members do yield actor end
else # 单体
actor = $game_actors[param]
yield actor unless actor == nil
end
end
#--------------------------------------------------------------------------
# * 主角迭代程式(索引)
# param : 若值大于等于零则指定某个索引,若值为-1则指定全体主角。
#--------------------------------------------------------------------------
def iterate_actor_index(param)
if param == -1 # 全体
for actor in $game_party.members do yield actor end
else # 单体
actor = $game_party.members[param]
yield actor unless actor == nil
end
end
#--------------------------------------------------------------------------
# * 敌人迭代程式(索引)
# param : 若值大于等于零则指定某个索引,若值为-1则指定全体主角。
#--------------------------------------------------------------------------
def iterate_enemy_index(param)
if param == -1 # 全体
for enemy in $game_troop.members do yield enemy end
else # 单体
enemy = $game_troop.members[param]
yield enemy unless enemy == nil
end
end
#--------------------------------------------------------------------------
# * 参战者迭代程式(作用于整个队伍)
# param1 : 若值为零则为敌人队伍,若值为1则为主角队。
# param : 若值大于等于零则指定某个索引,若值为-1则指定全体主角。
#--------------------------------------------------------------------------
def iterate_battler(param1, param2)
if $game_temp.in_battle
if param1 == 0 # 敌人
iterate_enemy_index(param2) do |enemy| yield enemy end
else # 主角
iterate_actor_index(param2) do |enemy| yield enemy end
end
end
end
#--------------------------------------------------------------------------
# * 获取荧幕指令目标
#--------------------------------------------------------------------------
def screen
if $game_temp.in_battle
return $game_troop.screen
else
return $game_map.screen
end
end
#--------------------------------------------------------------------------
# * 执行事件指令
#--------------------------------------------------------------------------
def execute_command
if @index >= @list.size-1
command_end
return true
else
@params = @list[@index].parameters
@indent = @list[@index].indent
case @list[@index].code
when 101 # 显示文本
return command_101
when 102 # 显示选项
return command_102
when 402 # 当选择[**]的时候
return command_402
when 403 # 当按下取消键的时候
return command_403
when 103 # 显示数字输入框
return command_103
when 111 # 定义条件分歧
return command_111
when 411 # 其他情况
return command_411
when 112 # 循环
return command_112
when 413 # 循环执行上述指令
return command_413
when 113 # 取消循环
return command_113
when 115 # 中断事件处理
return command_115
when 117 # 呼叫全局事件
return command_117
when 118 # 作标记
return command_118
when 119 # 跳转至标记……
return command_119
when 121 # 控制系统开关
return command_121
when 122 # 控制系统变量
return command_122
when 123 # 控制独立开关
return command_123
when 124 # 控制计时器
return command_124
when 125 # 增减资金
return command_125
when 126 # 增减物品
return command_126
when 127 # 增减武器
return command_127
when 128 # 增减防具
return command_128
when 129 # 队伍人事变动
return command_129
when 132 # 更改作战BGM
return command_132
when 133 # 更改作战结束ME
return command_133
when 134 # 启用/禁用存档
return command_134
when 135 # 启用/禁用ESC选单
return command_135
when 136 # 启用/禁用地雷遇敌模式
return command_136
when 201 # 场所移动
return command_201
when 202 # 调整交通工具位置
return command_202
when 203 # 移动事件块坐标
return command_203
when 204 # 地图视域移动
return command_204
when 205 # 设置移动轨迹
return command_205
when 206 # 交通工具乘降
return command_206
when 211 # 更改主角步行图透明选项
return command_211
when 212 # 播放动画
return command_212
when 213 # 显示浮动图标
return command_213
when 214 # 暂时删除本事件块
return command_214
when 221 # 画面渐隐[淡入]
return command_221
when 222 # 画面渐显[淡出]
return command_222
when 223 # 更改画面色调
return command_223
when 224 # 闪屏
return command_224
when 225 # 颤屏
return command_225
when 230 # 等待帧……
return command_230
when 231 # 显示图片
return command_231
when 232 # 移动图片并更改其参数
return command_232
when 233 # 旋转图片
return command_233
when 234 # 图片色调……
return command_234
when 235 # 图片消失
return command_235
when 236 # 天气配置
return command_236
when 241 # 播放 BGM
return command_241
when 242 # 淡出 BGM
return command_242
when 245 # 播放 BGS
return command_245
when 246 # 淡出 BGS
return command_246
when 249 # 播放 ME
return command_249
when 250 # 播放 SE
return command_250
when 251 # 停止播放当前所有 SE
return command_251
when 301 # 作战处理
return command_301
when 601 # 若赢
return command_601
when 602 # 若逃跑撤退
return command_602
when 603 # 若输
return command_603
when 302 # 商贸处理
return command_302
when 303 # 名称输入处理
return command_303
when 311 # HP调整
return command_311
when 312 # MP调整
return command_312
when 313 # 状态校正
return command_313
when 314 # 恢复健康
return command_314
when 315 # 主角EXP调整
return command_315
when 316 # 主角修行等级调整
return command_316
when 317 # 主角能力参数调整
return command_317
when 318 # 主角技能调整
return command_318
when 319 # 主角装备调整
return command_319
when 320 # 修改主角名称
return command_320
when 321 # 主角职业变更
return command_321
when 322 # 更改主角步行图/脸图
return command_322
when 323 # 更改交通工具步行图
return command_323
when 331 # 调整敌人HP
return command_331
when 332 # 调整敌人MP
return command_332
when 333 # 调整敌人状态
return command_333
when 334 # 恢复敌人健康
return command_334
when 335 # 敌方增加敌人
return command_335
when 336 # 敌方敌人变身
return command_336
when 337 # 作战动画显示
return command_337
when 339 # 强行下达指令
return command_339
when 340 # 结束作战
return command_340
when 351 # 打开ESC选单界面
return command_351
when 352 # 打开存档界面
return command_352
when 353 # 游戏结束
return command_353
when 354 # 返回标题画面
return command_354
when 355 # 插入RGSS脚本语句
return command_355
else # 其他
return true
end
end
end
#--------------------------------------------------------------------------
# * 终止事件
#--------------------------------------------------------------------------
def command_end
@list = nil # 清空指令内容清单
if @main and @event_id > 0 # 主地图事件?
$game_map.events[@event_id].unlock # 事件锁清零
end
end
#--------------------------------------------------------------------------
# * 跳过指令
#--------------------------------------------------------------------------
def command_skip
while @list[@index+1].indent > @indent # 更深层次的缩进
@index += 1 # 指数递增
end
end
#--------------------------------------------------------------------------
# * 获取事件块资讯
# param : 若是-1则为主角,若是0则为当前事件块,若大于零则为事件块编号。
#--------------------------------------------------------------------------
def get_character(param)
case param
when -1 # 主角
return $game_player
when 0 # 当前事件块
events = $game_map.events
return events == nil ? nil : events[@event_id]
else # 事件块编号
events = $game_map.events
return events == nil ? nil : events[param]
end
end
#--------------------------------------------------------------------------
# * 计算运算结果
# operation : 要进行的操作 (0: 增, 1: 减)
# operand_type : 操作方式 (0: 非变量 1: 变量)
# operand : 运算对象 (变量编号或数字)
#--------------------------------------------------------------------------
def operate_value(operation, operand_type, operand)
if operand_type == 0
value = operand
else
value = $game_variables[operand]
end
if operation == 1
value = -value
end
return value
end
#--------------------------------------------------------------------------
# * 显示文本
#--------------------------------------------------------------------------
def command_101
unless $game_message.busy
$game_message.face_name = @params[0]
$game_message.face_index = @params[1]
$game_message.background = @params[2]
$game_message.position = @params[3]
@index += 1
while @list[@index].code == 401 # 文本数据
$game_message.texts.push(@list[@index].parameters[0])
@index += 1
end
if @list[@index].code == 102 # 显示选项
setup_choices(@list[@index].parameters)
elsif @list[@index].code == 103 # 数字输入处理
setup_num_input(@list[@index].parameters)
end
set_message_waiting # 设置文本等待状态
end
return false
end
#--------------------------------------------------------------------------
# * 设置文本等待状态标帜并回拨
#--------------------------------------------------------------------------
def set_message_waiting
@message_waiting = true
$game_message.main_proc = Proc.new { @message_waiting = false }
end
#--------------------------------------------------------------------------
# * 显示选项
#--------------------------------------------------------------------------
def command_102
unless $game_message.busy
setup_choices(@params) # 设置
set_message_waiting # 设置文本等待状态
end
return false
end
#--------------------------------------------------------------------------
# * 选项设置
#--------------------------------------------------------------------------
def setup_choices(params)
if $game_message.texts.size <= 4 - params[0].size
$game_message.choice_start = $game_message.texts.size
$game_message.choice_max = params[0].size
for s in params[0]
$game_message.texts.push(s)
end
$game_message.choice_cancel_type = params[1]
$game_message.choice_proc = Proc.new { |n| @branch[@indent] = n }
@index += 1
end
end
#--------------------------------------------------------------------------
# * 当选择[**]的情况下
#--------------------------------------------------------------------------
def command_402
if @branch[@indent] == @params[0] # 如果选项匹配
@branch.delete(@indent) # 清除分歧数据
return true # 继续
else # 如果条件不匹配
return command_skip # 跳过指令
end
end
#--------------------------------------------------------------------------
# * 当按下取消键的情况下
#--------------------------------------------------------------------------
def command_403
if @branch[@indent] == 4 # 若取消选择
@branch.delete(@indent) # 清除分歧数据
return true # 继续
else # 如果条件不匹配
return command_skip # 跳过指令
end
end
#--------------------------------------------------------------------------
# * 输入数字
#--------------------------------------------------------------------------
def command_103
unless $game_message.busy
setup_num_input(@params) # 设置
set_message_waiting # 设置文本等待状态
end
return false
end
#--------------------------------------------------------------------------
# * 输入数字的设置
#--------------------------------------------------------------------------
def setup_num_input(params)
if $game_message.texts.size < 4
$game_message.num_input_variable_id = params[0]
$game_message.num_input_digits_max = params[1]
@index += 1
end
end
#--------------------------------------------------------------------------
# * 定义条件分歧
#--------------------------------------------------------------------------
def command_111
result = false
case @params[0]
when 0 # 开关
result = ($game_switches[@params[1]] == (@params[2] == 0))
when 1 # 系统变量
value1 = $game_variables[@params[1]]
if @params[2] == 0
value2 = @params[3]
else
value2 = $game_variables[@params[3]]
end
case @params[4]
when 0 # value1 = value2
result = (value1 == value2)
when 1 # value1 >= value2
result = (value1 >= value2)
when 2 # value1 <= value2
result = (value1 <= value2)
when 3 # value1 > value2
result = (value1 > value2)
when 4 # value1 < value2
result = (value1 < value2)
when 5 # value1 不等于 value2
result = (value1 != value2)
end
when 2 # 独立开关
if @original_event_id > 0
key = [@map_id, @original_event_id, @params[1]]
if @params[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 @params[2] == 0
result = (sec >= @params[1])
else
result = (sec <= @params[1])
end
end
when 4 # 主角
actor = $game_actors[@params[1]]
if actor != nil
case @params[2]
when 0 # 在队
result = ($game_party.members.include?(actor))
when 1 # 名称
result = (actor.name == @params[3])
when 2 # 技能
result = (actor.skill_learn?($data_skills[@params[3]]))
when 3 # 武器
result = (actor.weapons.include?($data_weapons[@params[3]]))
when 4 # 护具
result = (actor.armors.include?($data_armors[@params[3]]))
when 5 # 状态
result = (actor.state?(@params[3]))
end
end
when 5 # 敌人
enemy = $game_troop.members[@params[1]]
if enemy != nil
case @params[2]
when 0 # 出现
result = (enemy.exist?)
when 1 # 状态
result = (enemy.state?(@params[3]))
end
end
when 6 # 事件块
character = get_character(@params[1])
if character != nil
result = (character.direction == @params[2])
end
when 7 # 所携资金
if @params[2] == 0
result = ($game_party.gold >= @params[1])
else
result = ($game_party.gold <= @params[1])
end
when 8 # 所携物品
result = $game_party.has_item?($data_items[@params[1]])
when 9 # 所携武器
result = $game_party.has_item?($data_weapons[@params[1]], @params[2])
when 10 # 所携护具
result = $game_party.has_item?($data_armors[@params[1]], @params[2])
when 11 # 按钮按下时的处理
result = Input.press?(@params[1])
when 12 # 执行RGSS脚本语句
result = eval(@params[1])
when 13 # 交通工具
result = ($game_player.vehicle_type == @params[1])
end
@branch[@indent] = result # 将判定结果存储于 HASH 表内
if @branch[@indent] == true
@branch.delete(@indent)
return true
end
return command_skip
end
#--------------------------------------------------------------------------
# * 其余的情况下
#--------------------------------------------------------------------------
def command_411
if @branch[@indent] == false
@branch.delete(@indent)
return true
end
return command_skip
end
#--------------------------------------------------------------------------
# * 循环
#--------------------------------------------------------------------------
def command_112
return true
end
#--------------------------------------------------------------------------
# * 循环执行上述指令
#--------------------------------------------------------------------------
def command_413
begin
@index -= 1
end until @list[@index].indent == @indent
return true
end
#--------------------------------------------------------------------------
# * 取消循环
#--------------------------------------------------------------------------
def command_113
loop do
@index += 1
if @index >= @list.size-1
return true
end
if @list[@index].code == 413 and # 指令[循环执行上述指令]
@list[@index].indent < @indent # 浅层缩进
return true
end
end
end
#--------------------------------------------------------------------------
# * 退出事件处理进程
#--------------------------------------------------------------------------
def command_115
command_end
return true
end
#--------------------------------------------------------------------------
# * 呼叫全局事件
#--------------------------------------------------------------------------
def command_117
common_event = $data_common_events[@params[0]]
if common_event != nil
@child_interpreter = Game_Interpreter.new(@depth + 1)
@child_interpreter.setup(common_event.list, @event_id)
end
return true
end
#--------------------------------------------------------------------------
# * 标记
#--------------------------------------------------------------------------
def command_118
return true
end
#--------------------------------------------------------------------------
# * 跳转至标记
#--------------------------------------------------------------------------
def command_119
label_name = @params[0]
for i in [email protected]
if @list.code == 118 and @list.parameters[0] == label_name
@index = i
return true
end
end
return true
end
#--------------------------------------------------------------------------
# * 控制开关
#--------------------------------------------------------------------------
def command_121
for i in @params[0] .. @params[1] # 批量控制
$game_switches = (@params[2] == 0)
end
$game_map.need_refresh = true
return true
end
#--------------------------------------------------------------------------
# * 控制系统变量
#--------------------------------------------------------------------------
def command_122
value = 0
case @params[3] # 运算对象
when 0 # 常数
value = @params[4]
when 1 # 系统变量
value = $game_variables[@params[4]]
when 2 # 随机数
value = @params[4] + rand(@params[5] - @params[4] + 1)
when 3 # 物品
value = $game_party.item_number($data_items[@params[4]])
when 4 # 主角
actor = $game_actors[@params[1]]
# actor = $game_actors[@parameters[1]]
actor = $game_actors[@params[4]]
if actor != nil
case @params[5]
when 0 # 修行等级
value = actor.level
when 1 # 经验值
value = actor.exp
when 2 # HP值
value = actor.hp
when 3 # MP值
value = actor.mp
when 4 # HP上限值
value = actor.maxhp
when 5 # MP上限值
value = actor.maxmp
when 6 # 攻击力
value = actor.atk
when 7 # 防御力
value = actor.def
when 8 # 精神意志力
value = actor.spi
when 9 # 机敏性
value = actor.agi
end
end
when 5 # 敌人
enemy = $game_troop.members[@params[4]]
if enemy != nil
case @params[5]
when 0 # HP值
value = enemy.hp
when 1 # MP值
value = enemy.mp
when 2 # HP上限值
value = enemy.maxhp
when 3 # MP上限值
value = enemy.maxmp
when 4 # 攻击力
value = enemy.atk
when 5 # 防御力
value = enemy.def
when 6 # 精神意志力
value = enemy.spi
when 7 # 机敏性
value = enemy.agi
end
end
when 6 # 角色/事件块
character = get_character(@params[4])
if character != nil
case @params[5]
when 0 # 地图X坐标
value = character.x
when 1 # 地图Y坐标
value = character.y
when 2 # 朝向
value = character.direction
when 3 # 屏幕X坐标
value = character.screen_x
when 4 # 屏幕Y坐标
value = character.screen_y
end
end
when 7 # 其他
case @params[4]
when 0 # 地图编号
value = $game_map.map_id
when 1 # 在队人数
value = $game_party.members.size
when 2 # 所携资金
value = $game_party.gold
when 3 # 累计步数
value = $game_party.steps
when 4 # 累计游戏时间
value = Graphics.frame_count / Graphics.frame_rate
when 5 # 计时器
value = $game_system.timer / Graphics.frame_rate
when 6 # 累计存档次数
value = $game_system.save_count
end
end
for i in @params[0] .. @params[1] # 批量控制
case @params[2] # 操作
when 0 # 代入
$game_variables = value
when 1 # 加
$game_variables += value
when 2 # 减
$game_variables -= value
when 3 # 乘
$game_variables *= value
when 4 # 除
$game_variables /= value if value != 0
when 5 # 取模运算
$game_variables %= value if value != 0
end
if $game_variables > 99999999 # 检查上限
$game_variables = 99999999
end
if $game_variables < -99999999 # 检查下限
$game_variables = -99999999
end
end
$game_map.need_refresh = true
return true
end
#--------------------------------------------------------------------------
# * 控制独立开关
#--------------------------------------------------------------------------
def command_123
if @original_event_id > 0
key = [@map_id, @original_event_id, @params[0]]
$game_self_switches[key] = (@params[1] == 0)
end
$game_map.need_refresh = true
return true
end
#--------------------------------------------------------------------------
# * 控制计时器
#--------------------------------------------------------------------------
def command_124
if @params[0] == 0 # 开始计时
$game_system.timer = @params[1] * Graphics.frame_rate
$game_system.timer_working = true
end
if @params[0] == 1 # 停止计时
$game_system.timer_working = false
end
return true
end
#--------------------------------------------------------------------------
# * 增减资金
#--------------------------------------------------------------------------
def command_125
value = operate_value(@params[0], @params[1], @params[2])
$game_party.gain_gold(value)
return true
end
#--------------------------------------------------------------------------
# * 增减物品
#--------------------------------------------------------------------------
def command_126
value = operate_value(@params[1], @params[2], @params[3])
$game_party.gain_item($data_items[@params[0]], value)
$game_map.need_refresh = true
return true
end
#--------------------------------------------------------------------------
# * 增减武器
#--------------------------------------------------------------------------
def command_127
value = operate_value(@params[1], @params[2], @params[3])
$game_party.gain_item($data_weapons[@params[0]], value, @params[4])
return true
end
#--------------------------------------------------------------------------
# * 增减防具
#--------------------------------------------------------------------------
def command_128
value = operate_value(@params[1], @params[2], @params[3])
$game_party.gain_item($data_armors[@params[0]], value, @params[4])
return true
end
#--------------------------------------------------------------------------
# * 队伍人事变动
#--------------------------------------------------------------------------
def command_129
actor = $game_actors[@params[0]]
if actor != nil
if @params[1] == 0 # 入队
if @params[2] == 1 # 初始化该主角的各项参数
$game_actors[@params[0]].setup(@params[0])
end
$game_party.add_actor(@params[0])
else # 离队
$game_party.remove_actor(@params[0])
end
$game_map.need_refresh = true
end
return true
end
#--------------------------------------------------------------------------
# * 更改作战BGM
#--------------------------------------------------------------------------
def command_132
$game_system.battle_bgm = @params[0]
return true
end
#--------------------------------------------------------------------------
# * 更改作战胜利ME
#--------------------------------------------------------------------------
def command_133
$game_system.battle_end_me = @params[0]
return true
end
#--------------------------------------------------------------------------
# * 启用/禁用存档
#--------------------------------------------------------------------------
def command_134
$game_system.save_disabled = (@params[0] == 0)
return true
end
#--------------------------------------------------------------------------
# * 启用/禁用ESC选单
#--------------------------------------------------------------------------
def command_135
$game_system.menu_disabled = (@params[0] == 0)
return true
end
#--------------------------------------------------------------------------
# * 启用/禁用地雷遇敌模式
#--------------------------------------------------------------------------
def command_136
$game_system.encounter_disabled = (@params[0] == 0)
$game_player.make_encounter_count
return true
end
#--------------------------------------------------------------------------
# * 场所移动
#--------------------------------------------------------------------------
def command_201
return true if $game_temp.in_battle
if $game_player.transfer? or # 场所移动中?
$game_message.visible # 文本正在显示?
return false
end
if @params[0] == 0 # 直接指定
map_id = @params[1]
x = @params[2]
y = @params[3]
direction = @params[4]
else # 用系统变量指定
map_id = $game_variables[@params[1]]
x = $game_variables[@params[2]]
y = $game_variables[@params[3]]
direction = @params[4]
end
$game_player.reserve_transfer(map_id, x, y, direction)
@index += 1
return false
end
#--------------------------------------------------------------------------
# * 调整交通工具位置
#--------------------------------------------------------------------------
def command_202
if @params[1] == 0 # 直接指定
map_id = @params[2]
x = @params[3]
y = @params[4]
else # 用系统变量指定
map_id = $game_variables[@params[2]]
x = $game_variables[@params[3]]
y = $game_variables[@params[4]]
end
if @params[0] == 0 # 舟
$game_map.boat.set_location(map_id, x, y)
elsif @params[0] == 1 # 船
$game_map.ship.set_location(map_id, x, y)
else # 飞艇
$game_map.airship.set_location(map_id, x, y)
end
return true
end
#--------------------------------------------------------------------------
# * 移动事件块坐标
#--------------------------------------------------------------------------
def command_203
character = get_character(@params[0])
if character != nil
if @params[1] == 0 # 直接指定
character.moveto(@params[2], @params[3])
elsif @params[1] == 1 # 用系统变量指定
new_x = $game_variables[@params[2]]
new_y = $game_variables[@params[3]]
character.moveto(new_x, new_y)
else # 与其它事件块交换位置
old_x = character.x
old_y = character.y
character2 = get_character(@params[2])
if character2 != nil
character.moveto(character2.x, character2.y)
character2.moveto(old_x, old_y)
end
end
case @params[4] # 朝向
when 8 # 向上
character.turn_up
when 6 # 享有
character.turn_right
when 2 # 向下
character.turn_down
when 4 # 向左
character.turn_left
end
end
return true
end
#--------------------------------------------------------------------------
# * 地图视域移动
#--------------------------------------------------------------------------
def command_204
return true if $game_temp.in_battle
return false if $game_map.scrolling?
$game_map.start_scroll(@params[0], @params[1], @params[2])
return true
end
#--------------------------------------------------------------------------
# * 设置移动轨迹
#--------------------------------------------------------------------------
def command_205
if $game_map.need_refresh
$game_map.refresh
end
character = get_character(@params[0])
if character != nil
character.force_move_route(@params[1])
@moving_character = character if @params[1].wait
end
return true
end
#--------------------------------------------------------------------------
# * 交通工具乘/降
#--------------------------------------------------------------------------
def command_206
$game_player.get_on_off_vehicle
return true
end
#--------------------------------------------------------------------------
# * 更改主角步行图透明选项
#--------------------------------------------------------------------------
def command_211
$game_player.transparent = (@params[0] == 0)
return true
end
#--------------------------------------------------------------------------
# * 播放动画
#--------------------------------------------------------------------------
def command_212
character = get_character(@params[0])
if character != nil
character.animation_id = @params[1]
end
return true
end
#--------------------------------------------------------------------------
# * 显示浮动图标
#--------------------------------------------------------------------------
def command_213
character = get_character(@params[0])
if character != nil
character.balloon_id = @params[1]
end
return true
end
#--------------------------------------------------------------------------
# * 暂时删除本事件块
#--------------------------------------------------------------------------
def command_214
if @event_id > 0
$game_map.events[@event_id].erase
end
@index += 1
return false
end
#--------------------------------------------------------------------------
# * 画面渐隐[淡出]
#--------------------------------------------------------------------------
def command_221
if $game_message.visible
return false
else
screen.start_fadeout(30)
@wait_count = 30
return true
end
end
#--------------------------------------------------------------------------
# * 画面渐显[淡入]
#--------------------------------------------------------------------------
def command_222
if $game_message.visible
return false
else
screen.start_fadein(30)
@wait_count = 30
return true
end
end
#--------------------------------------------------------------------------
# * 更改画面色调
#--------------------------------------------------------------------------
def command_223
screen.start_tone_change(@params[0], @params[1])
@wait_count = @params[1] if @params[2]
return true
end
#--------------------------------------------------------------------------
# * 闪屏
#--------------------------------------------------------------------------
def command_224
screen.start_flash(@params[0], @params[1])
@wait_count = @params[1] if @params[2]
return true
end
#--------------------------------------------------------------------------
# * 颤屏
#--------------------------------------------------------------------------
def command_225
screen.start_shake(@params[0], @params[1], @params[2])
@wait_count = @params[2] if @params[3]
return true
end
#--------------------------------------------------------------------------
# * 等待帧
#--------------------------------------------------------------------------
def command_230
@wait_count = @params[0]
return true
end
#--------------------------------------------------------------------------
# * 显示图片
#--------------------------------------------------------------------------
def command_231
if @params[3] == 0 # 直接指定
x = @params[4]
y = @params[5]
else # 用系统变量指定
x = $game_variables[@params[4]]
y = $game_variables[@params[5]]
end
screen.pictures[@params[0]].show(@params[1], @params[2],
x, y, @params[6], @params[7], @params[8], @params[9])
return true
end
#--------------------------------------------------------------------------
# * 移动图片并更改其参数
#--------------------------------------------------------------------------
def command_232
if @params[3] == 0 # 直接指定
x = @params[4]
y = @params[5]
else # 用系统变量指定
x = $game_variables[@params[4]]
y = $game_variables[@params[5]]
end
screen.pictures[@params[0]].move(@params[2], x, y, @params[6],
@params[7], @params[8], @params[9], @params[10])
@wait_count = @params[10] if @params[11]
return true
end
#--------------------------------------------------------------------------
# * 旋转图片
#--------------------------------------------------------------------------
def command_233
screen.pictures[@params[0]].rotate(@params[1])
return true
end
#--------------------------------------------------------------------------
# * 图片色调
#--------------------------------------------------------------------------
def command_234
screen.pictures[@params[0]].start_tone_change(@params[1], @params[2])
@wait_count = @params[2] if @params[3]
return true
end
#--------------------------------------------------------------------------
# * 图片消失
#--------------------------------------------------------------------------
def command_235
screen.pictures[@params[0]].erase
return true
end
#--------------------------------------------------------------------------
# * 天气配置
#--------------------------------------------------------------------------
def command_236
return true if $game_temp.in_battle
screen.weather(@params[0], @params[1], @params[2])
@wait_count = @params[2] if @params[3]
return true
end
#--------------------------------------------------------------------------
# * 播放BGM
#--------------------------------------------------------------------------
def command_241
@params[0].play
return true
end
#--------------------------------------------------------------------------
# * 淡出BGM
#--------------------------------------------------------------------------
def command_242
RPG::BGM.fade(@params[0] * 1000)
return true
end
#--------------------------------------------------------------------------
# * 播放BGS
#--------------------------------------------------------------------------
def command_245
@params[0].play
return true
end
#--------------------------------------------------------------------------
# * 淡出BGS
#--------------------------------------------------------------------------
def command_246
RPG::BGS.fade(@params[0] * 1000)
return true
end
#--------------------------------------------------------------------------
# * 播放ME
#--------------------------------------------------------------------------
def command_249
@params[0].play
return true
end
#--------------------------------------------------------------------------
# * 播放SE
#--------------------------------------------------------------------------
def command_250
@params[0].play
return true
end
#--------------------------------------------------------------------------
# * 停止播放当前所有SE
#--------------------------------------------------------------------------
def command_251
RPG::SE.stop
return true
end
#--------------------------------------------------------------------------
# * 作战处理
#--------------------------------------------------------------------------
def command_301
return true if $game_temp.in_battle
if @params[0] == 0 # 直接指定
troop_id = @params[1]
else # 用变量指定
troop_id = $game_variables[@params[1]]
end
if $data_troops[troop_id] != nil
$game_troop.setup(troop_id)
$game_troop.can_escape = @params[2]
$game_troop.can_lose = @params[3]
$game_temp.battle_proc = Proc.new { |n| @branch[@indent] = n }
$game_temp.next_scene = "battle"
end
@index += 1
return false
end
#--------------------------------------------------------------------------
# * 作战胜利的情况下
#--------------------------------------------------------------------------
def command_601
if @branch[@indent] == 0
@branch.delete(@indent)
return true
end
return command_skip
end
#--------------------------------------------------------------------------
# * 撤退的情况下
#--------------------------------------------------------------------------
def command_602
if @branch[@indent] == 1
@branch.delete(@indent)
return true
end
return command_skip
end
#--------------------------------------------------------------------------
# * 作战失败的情况下
#--------------------------------------------------------------------------
def command_603
if @branch[@indent] == 2
@branch.delete(@indent)
return true
end
return command_skip
end
#--------------------------------------------------------------------------
# * 商贸处理
#--------------------------------------------------------------------------
def command_302
$game_temp.next_scene = "shop"
$game_temp.shop_goods = [@params]
$game_temp.shop_purchase_only = @params[2]
loop do
@index += 1
if @list[@index].code == 605 # 下一条事件指令在本指令后两行以上的情况下
$game_temp.shop_goods.push(@list[@index].parameters)
else
return false
end
end
end
#--------------------------------------------------------------------------
# * 名称输入处理
#--------------------------------------------------------------------------
def command_303
if $data_actors[@params[0]] != nil
$game_temp.next_scene = "name"
$game_temp.name_actor_id = @params[0]
$game_temp.name_max_char = @params[1]
end
@index += 1
return false
end
#--------------------------------------------------------------------------
# * MP调整
#--------------------------------------------------------------------------
def command_311
value = operate_value(@params[1], @params[2], @params[3])
iterate_actor_id(@params[0]) do |actor|
next if actor.dead?
if @params[4] == false and actor.hp + value <= 0
actor.hp = 1 # 若不允许主角进入濒死状态则设为1
else
actor.hp += value
end
actor.perform_collapse
end
if $game_party.all_dead?
$game_temp.next_scene = "gameover"
end
return true
end
#--------------------------------------------------------------------------
# * MP调整
#--------------------------------------------------------------------------
def command_312
value = operate_value(@params[1], @params[2], @params[3])
iterate_actor_id(@params[0]) do |actor|
actor.mp += value
end
return true
end
#--------------------------------------------------------------------------
# * 状态调整
#--------------------------------------------------------------------------
def command_313
iterate_actor_id(@params[0]) do |actor|
if @params[1] == 0
actor.add_state(@params[2])
actor.perform_collapse
else
actor.remove_state(@params[2])
end
end
return true
end
#--------------------------------------------------------------------------
# * 恢复健康
#--------------------------------------------------------------------------
def command_314
iterate_actor_id(@params[0]) do |actor|
actor.recover_all
end
return true
end
#--------------------------------------------------------------------------
# * 主角EXP调整
#--------------------------------------------------------------------------
def command_315
value = operate_value(@params[1], @params[2], @params[3])
iterate_actor_id(@params[0]) do |actor|
actor.change_exp(actor.exp + value, @params[4])
end
return true
end
#--------------------------------------------------------------------------
# * 主角修行等级调整
#--------------------------------------------------------------------------
def command_316
value = operate_value(@params[1], @params[2], @params[3])
iterate_actor_id(@params[0]) do |actor|
actor.change_level(actor.level + value, @params[4])
end
return true
end
#--------------------------------------------------------------------------
# * 主角能力参数调整
#--------------------------------------------------------------------------
def command_317
value = operate_value(@params[2], @params[3], @params[4])
actor = $game_actors[@params[0]]
if actor != nil
case @params[1]
when 0 # HP上限值
actor.maxhp += value
when 1 # MP上限值
actor.maxmp += value
when 2 # 攻击力
actor.atk += value
when 3 # 防御力
actor.def += value
when 4 # 精神意志力
actor.spi += value
when 5 # 机敏性
actor.agi += value
end
end
return true
end
#--------------------------------------------------------------------------
# * 主角技能调整
#--------------------------------------------------------------------------
def command_318
actor = $game_actors[@params[0]]
if actor != nil
if @params[1] == 0
actor.learn_skill(@params[2])
else
actor.forget_skill(@params[2])
end
end
return true
end
#--------------------------------------------------------------------------
# * 主角装备调整
#--------------------------------------------------------------------------
def command_319
actor = $game_actors[@params[0]]
if actor != nil
actor.change_equip_by_id(@params[1], @params[2])
end
return true
end
#--------------------------------------------------------------------------
# * 修改主角名称
#--------------------------------------------------------------------------
def command_320
actor = $game_actors[@params[0]]
if actor != nil
actor.name = @params[1]
end
return true
end
#--------------------------------------------------------------------------
# * 主角职业变更
#--------------------------------------------------------------------------
def command_321
actor = $game_actors[@params[0]]
if actor != nil and $data_classes[@params[1]] != nil
actor.class_id = @params[1]
end
return true
end
#--------------------------------------------------------------------------
# * 更改主角步行图/脸图
#--------------------------------------------------------------------------
def command_322
actor = $game_actors[@params[0]]
if actor != nil
actor.set_graphic(@params[1], @params[2], @params[3], @params[4])
end
$game_player.refresh
return true
end
#--------------------------------------------------------------------------
# * 更改交通工具步行图
#--------------------------------------------------------------------------
def command_323
if @params[0] == 0 # 舟
$game_map.boat.set_graphic(@params[1], @params[2])
elsif @params[0] == 1 # 船
$game_map.ship.set_graphic(@params[1], @params[2])
else # 飞艇
$game_map.airship.set_graphic(@params[1], @params[2])
end
return true
end
#--------------------------------------------------------------------------
# * 调整敌人HP
#--------------------------------------------------------------------------
def command_331
value = operate_value(@params[1], @params[2], @params[3])
iterate_enemy_index(@params[0]) do |enemy|
if enemy.hp > 0
if @params[4] == false and enemy.hp + value <= 0
enemy.hp = 1 # 如果不允许敌人挂掉则设为1
else
enemy.hp += value
end
enemy.perform_collapse
end
end
return true
end
#--------------------------------------------------------------------------
# * 调整敌人MP
#--------------------------------------------------------------------------
def command_332
value = operate_value(@params[1], @params[2], @params[3])
iterate_enemy_index(@params[0]) do |enemy|
enemy.mp += value
end
return true
end
#--------------------------------------------------------------------------
# * 调整敌人状态
#--------------------------------------------------------------------------
def command_333
iterate_enemy_index(@params[0]) do |enemy|
if @params[2] == 1 # 如果改变了允许挂掉的状态
enemy.immortal = false # 清除[不败之身]标帜
end
if @params[1] == 0
enemy.add_state(@params[2])
enemy.perform_collapse
else
enemy.remove_state(@params[2])
end
end
return true
end
#--------------------------------------------------------------------------
# * 恢复敌人健康
#--------------------------------------------------------------------------
def command_334
iterate_enemy_index(@params[0]) do |enemy|
enemy.recover_all
end
return true
end
#--------------------------------------------------------------------------
# * 敌方增加敌人
#--------------------------------------------------------------------------
def command_335
enemy = $game_troop.members[@params[0]]
if enemy != nil and enemy.hidden
enemy.hidden = false
$game_troop.make_unique_names
end
return true
end
#--------------------------------------------------------------------------
# * 敌方敌人变身
#--------------------------------------------------------------------------
def command_336
enemy = $game_troop.members[@params[0]]
if enemy != nil
enemy.transform(@params[1])
$game_troop.make_unique_names
end
return true
end
#--------------------------------------------------------------------------
# * 显示作战动画
#--------------------------------------------------------------------------
def command_337
iterate_battler(0, @params[0]) do |battler|
next unless battler.exist?
battler.animation_id = @params[1]
end
return true
end
#--------------------------------------------------------------------------
# * 强制下达指令
#--------------------------------------------------------------------------
def command_339
iterate_battler(@params[0], @params[1]) do |battler|
next unless battler.exist?
battler.action.kind = @params[2]
if battler.action.kind == 0
battler.action.basic = @params[3]
else
battler.action.skill_id = @params[3]
end
if @params[4] == -2 # 选取最后的目标
battler.action.decide_last_target
elsif @params[4] == -1 # 随机选取
battler.action.decide_random_target
elsif @params[4] >= 0 # 指定编号
battler.action.target_index = @params[4]
end
battler.action.forcing = true
$game_troop.forcing_battler = battler
@index += 1
return false
end
return true
end
#--------------------------------------------------------------------------
# * 结束作战
#--------------------------------------------------------------------------
def command_340
$game_temp.next_scene = "map"
@index += 1
return false
end
#--------------------------------------------------------------------------
# * 打开ESC选单画面
#--------------------------------------------------------------------------
def command_351
$game_temp.next_scene = "menu"
$game_temp.menu_beep = false
@index += 1
return false
end
#--------------------------------------------------------------------------
# * 打开存档画面
#--------------------------------------------------------------------------
def command_352
$game_temp.next_scene = "save"
@index += 1
return false
end
#--------------------------------------------------------------------------
# * 游戏结束
#--------------------------------------------------------------------------
def command_353
$game_temp.next_scene = "gameover"
return false
end
#--------------------------------------------------------------------------
# * 返回标题画面
#--------------------------------------------------------------------------
def command_354
$game_temp.next_scene = "title"
return false
end
#--------------------------------------------------------------------------
# * 执行RGSS脚本语句
#--------------------------------------------------------------------------
def command_355
script = @list[@index].parameters[0] + "\n"
loop do
# 下一条事件指令在本指令后两行以上的情况下
if @list[@index+1].code == 655
script += @list[@index+1].parameters[0] + "\n"
else
break
end
@index += 1
end
eval(script)
return true
end
end
回复 支持 反对

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

16
发表于 2009-7-24 12:29:46 | 只看该作者
...不知道为什麼你的脚本里面会多出这一句.....
actor = $game_actors[@params[4]]

刪掉即可

还有,删了之後把 Data/Script.rvdata 复制到 游戏文件夹\System\Data 下
这样以後新建工程就会是正确的
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2009-7-3
帖子
106
17
 楼主| 发表于 2009-7-24 12:48:03 | 只看该作者
不行,这就是原来脚本文件的错误,你能不能上传一个正常的Script.rvdata?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2009-7-3
帖子
106
18
 楼主| 发表于 2009-7-24 13:14:52 | 只看该作者
我下了置顶帖中的那个,替换了一下,还是不行啊!
会出现“在执行脚本时发生 SyntaxError ”,然后自动关闭……
回复 支持 反对

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

19
发表于 2009-7-24 13:16:26 | 只看该作者
本帖最后由 雪流星 于 2009-7-23 23:26 编辑

第几行出错?
另........不要连帖
-------------------
我知道哪里出错了
case @params[5]
改成
case @params[2]


你的VX哪来的......脚本怎麽乱七八糟的.....

script.zip

9.3 KB, 下载次数: 36

VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2009-7-3
帖子
106
20
 楼主| 发表于 2009-7-24 13:21:20 | 只看该作者
本帖最后由 f263239 于 2009-7-24 13:26 编辑

全部case @params[5]都替换掉?
我的VX自然也是在本论坛下载的,那时候rmvx汉化刚出来不久,MS是在10.2版本汉化出来时.
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-11 21:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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