脚本问题求解
rpgmakerxp吧
全部回复
仅看楼主
level 1
逐夜w♬ 楼主
就是这个明雷遇怪脚本
2014年08月16日 10点08分 1
level 1
逐夜w♬ 楼主
@a = 0
# 生成活动块
@spriteset = Spriteset_Map.new
# 生成讯息窗口
@message_window = Window_Message.new
# 执行过渡
Graphics.transition
# 主循环
loop do
new_battle_module #呼叫新版遇敌系统
# 刷新游戏画面
Graphics.update
# 刷新输入讯息
Input.update
# 刷新画面
update
# 如果画面切换的话就中断循环
if $scene != self
break
end
end
# 准备过渡
Graphics.freeze
# 释放活动块
@spriteset.dispose
# 释放讯息窗口
@message_window.dispose
# 标题画面切换中的情况下
if $scene.is_a?(Scene_Title)
# 淡入淡出画面
Graphics.transition
Graphics.freeze
end
end
#------------------------------------------------------------------
#●怪物事件随机图示变化设计模组-主要控制
#--------------------------------------------------------------------
def new_battle_module
# 遇敌列表不为空的情况下
if $game_map.encounter_list != []
# 不是在事件执行中或者禁止遇敌中
unless $game_system.map_interpreter.running? or
$game_system.encounter_disabled
# 确定队伍
for i in 1 .. $game_map.events.size
if $game_map.events[i].name == "敌人"
if $game_map.events[i].character_name == ""#避免怪物持续刷新,设置一个break的条件
$game_map.events[i].character_name = rand_enemies_character_name#改变敌人事件的图片
$enemy_event_arry[i] = $enemy_event_id#将获取的troop_id 存放到敌人事件阵列内
$e_event_id[@a] = i
@a += 1
$game_map.events[i].trigger = 2 #自动改为接触启动事件
$game_map.events[i].move_type = 2
#改变敌人事件的移动方法 0.不动 1.随机 2.接近
# 队伍有效的话
else
break
end#if 避免怪物持续刷新,设置一个break的条件
end
end#end for
end #unless
end#if 遇敌列表不为空的情况下
end#module
#--------------------------------------------------------------------
#●怪物事件随机图示变化设计模组-战斗图获取
#--------------------------------------------------------------------
def rand_enemies_character_name
n = rand($game_map.encounter_list.size)#乱数取得地图敌人列表数量
troop_id = $game_map.encounter_list[n]#乱数带入敌人队伍ID内,由敌人列表随机取出一队伍
troop = $data_troops[troop_id]#将随机敌人队伍资料存放到 troop 变数内
$enemy_event_id = troop_id
i = rand(troop.members.size) #由troop队伍资料内 随机抽出一个敌人队员
enemy_character_name = $data_enemies[troop.members[i].enemy_id].battler_name
#抽出的随机敌人队员,与data_enemies去比对出对应的怪物战斗图,把战斗图名称取出
return enemy_character_name #回传战斗图名称
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
# 循环
loop do
# 按照地图、实例、主角的顺序刷新
# (本更新顺序不会在的满足事件的执行条件下成为给予角色瞬间移动
# 的机会的重要原素)
$game_map.update
$game_system.map_interpreter.update
$game_player.update
# 系统 (计时器)、画面刷新
$game_system.update
$game_screen.update
# 如果主角在场所移动中就中断循环
unless $game_temp.player_transferring
break
end
# 执行场所移动
transfer_player
# 处理过渡中的情况下、中断循环
if $game_temp.transition_processing
break
end
end
# 刷新活动块
@spriteset.update
# 刷新讯息窗口
@message_window.update
# 游戏结束的情况下
if $game_temp.gameover
# 切换的游戏结束画面
$scene = Scene_Gameover.new
return
end
# 返回标题画面的情况下
if $game_temp.to_title
# 切换到标题画面
$scene = Scene_Title.new
return
end
# 处理过渡中的情况下
if $game_temp.transition_processing
# 清除过渡处理中标志
$game_temp.transition_processing = false
# 执行过渡
if $game_temp.transition_name == ""
Graphics.transition(20)
else
Graphics.transition(40, "Graphics/Transitions/" +
$game_temp.transition_name)
end
end
# 显示讯息窗口中的情况下
if $game_temp.message_window_showing
return
end
# 遇敌列表不为空的情况下且敌人事件 auto_fight 为true
for i in $e_event_id
if $game_map.encounter_list != [] and $game_map.events[i].auto_fight == true
$event_id_on_time = i #把正在进行战斗的 event_id 取出,以便后面呼叫使用
# 不是在事件执行中或者禁止遇敌中
unless $game_system.map_interpreter.running? or
$game_system.encounter_disabled
# 确定队伍
troop_id = $enemy_event_arry[i]
# 队伍有效的话
if $data_troops[troop_id] != nil
# 设置调用战斗标志
$game_temp.battle_calling = true
$game_temp.battle_troop_id = troop_id
$game_temp.battle_can_escape = true
$game_temp.battle_can_lose = false
$game_temp.battle_proc = nil
end
end
end
end #for
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 不是在事件执行中或菜单禁止中
unless $game_system.map_interpreter.running? or
$game_system.menu_disabled
# 设置菜单调用标志以及 SE 演奏
$game_temp.menu_calling = true
$game_temp.menu_beep = true
end
end
# 调试模式为 ON 并且按下 F9 键的情况下
if $DEBUG and Input.press?(Input::F9)
# 设置调用调试标志
$game_temp.debug_calling = true
end
# 不在主角移动中的情况下
unless $game_player.moving?
# 执行各种画面的调用
if $game_temp.battle_calling
call_battle
elsif $game_temp.shop_calling
call_shop
elsif $game_temp.name_calling
call_name
elsif $game_temp.menu_calling
call_menu
elsif $game_temp.save_calling
call_save
elsif $game_temp.debug_calling
call_debug
end
end
end
end
#==============================================================================
# ■ Scene_Battle (分割定义 2)
#------------------------------------------------------------------------------
#  处理战斗画面的程式。
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ● 画面更新 (结束战斗回合)
#--------------------------------------------------------------------------
def update_phase5
# 等待计数大于 0 的情况下
if @phase5_wait_count > 0
# 减少等待计数
@phase5_wait_count -= 1
# 等待计数为 0 的情况下
if @phase5_wait_count == 0
# 显示结果窗口
@result_window.visible = true
# 清除主回合标志
$game_temp.battle_main_phase = false
# 刷新状态窗口
@status_window.refresh
end
return
end
# 按下 C 键的情况下
if Input.trigger?(Input::C)
# 战斗结束
$game_map.events[$event_id_on_time].name = "死亡"
$game_map.events[$event_id_on_time].auto_fight = false
$game_map.events[$event_id_on_time].trigger = 0
$game_map.events[$event_id_on_time].erase
battle_end(0)
end
end
end
2014年08月16日 10点08分 3
level 1
逐夜w♬ 楼主
切换到一个场景的时候说
285行No Method Error   Undefined method *event* for nil:NilClass
285行是: if $game_map.encounter_list != [] and $game_map.events[i].auto_fight == true
2014年08月16日 10点08分 4
1