查看: 1787|回复: 3

[已经过期] 如何设置某个脚本在战斗过程中不执行?

[复制链接]
梦石
0
星屑
50
在线时间
32 小时
注册时间
2014-2-4
回帖
19
发表于 2015-11-12 17:31:58 | 显示全部楼层 |阅读模式

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

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

×
抱歉,向大家请教一下,我游戏中使用的是一个自动存档的脚本,是无论战斗与否都会自动保存。如果战斗到一半就出错或者无意间关闭游戏的话,脚本依然会保存……有没有办法做到在战斗过程中不执行?拜托各位了!

以下是我的脚本:
[pre lang="ruby"]module Kernel
  alias new_exit exit
  def save_jier(x)
    @wait_count = 66
    n = File.open("Save#{x}.rxdata", "wb")
    a=Scene_Save.new
    a.write_save_data(n)
  end
  def exit(*arg)
    save_jier(1) if $scene.is_a?(Scene_Map)
    new_exit
  end
end
class Scene_Map
  alias new_main main
  def main
    @wait_count = 66
    new_main
    save_jier(1) unless $scene.is_a?(Scene_Map)
  end
end
[/pre]
梦石
0
星屑
12161
在线时间
4435 小时
注册时间
2014-4-11
回帖
5616

开拓者

发表于 2015-11-12 19:53:09 | 显示全部楼层
主站上也有个自动存档的脚本。
我没有使用过,你拿去试试。
介绍说按F5会自动存档。那么在公共事件里设置多少时间就自动按F5,那么就应该有那样的效果了。
我记得公共事件在战斗时是停的。

[pre lang="ruby"]#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================
# ————————————————————————————————————
#———版权:carol3————
#———使用方法与效果————
#——默认状态下,将本脚本插入到main之前,在游戏进行中普通地图界面:
#——按下F5将自动存档到4号进度,打开开关1号将存档到4号进度
#——可修改内容:存档编号,开关编号,声效,以及可以自动存档的时候调用公共事件
#———自定义内容
#———1、你希望使用的自动存档开关编号,填写在下面,否则使用1号开关。
#———2、你希望的自动存档编号,填写在下面,否则使用F5存档在4号
#———3、按下F5后的音效,这个音效一定要存在,否则必然出错
#———4、公共事件(可以没有)
#—— 包括:打开开关的时候调用的公共事件,按下F5之后可以存档与禁止存档的公共事件
#——(你可以在公共事件弹出一个对话框提示你已经自动存档了,播放一段音乐音效,补血或者什么别的),默认=0是不调用任何公共事件
#——(注意这个编号如果不正确(比如该编号没有设置内容),程序将自动忽略这项功能)
#########################################################################
$carol3_打开自动存档用的开关编号 = 1
$carol3_自动存档位置 = 4
$carol3_按下F5之后的自动存档的音效 = "Audio/SE/007-System07"
$carol3_按下F5之后禁止存档时候的音效 = "Audio/Se/003-System03"
$carol3_打开自动存档开关之后调用的公共事件 = 0 #——默认未定义
$carol3_按下F5之后可以存档调用的公共事件 = 0 #——默认未定义
$carol3_按下F5之后禁止存档调用的公共事件 = 0 #——默认未定义
#########################################################################
#从此处往下的部分如果进行了修改出现问题后果自负。
#########################################################################
class Scene_Map
  alias carol3_update update  
  def update
    carol3_update  
    #——按下F5的时候自动存档,可以修改为F5,F6,F7,F8,也可以修改成默认按键但是不推荐。
    #——注意在不可存档的时候是无效的
    if Input.trigger?(Input::F5)
      unless $game_system.map_interpreter.running?  
        if $game_system.save_disabled
          Audio.se_play($carol3_按下F5之后禁止存档时候的音效)
          $game_temp.common_event_id = $carol3_按下F5之后禁止存档调用的公共事件
        else
          Audio.se_play($carol3_按下F5之后的自动存档的音效)
          $game_temp.common_event_id = $carol3_按下F5之后可以存档调用的公共事件
          carol3_save
        end
      end
    end
    #——当BOSS战之前打开一下定义的开关,即可自动存档
    if $game_switches[$carol3_打开自动存档用的开关编号] == true
      $game_switches[$carol3_打开自动存档用的开关编号] = false
      $game_temp.common_event_id = $carol3_打开自动存档开关之后调用的公共事件
      carol3_save
    end
  end
  def carol3_save
    #——这里定义了储存的文件,如果不希望用Save4可以自己修改编号
    #——默认情况可以修改为Save1到Save4,如果你增添了存档编号也可以自定义
    carol3_file = File.open("Save#{$carol3_自动存档位置}.rxdata", "wb")
    carol3_save_data(carol3_file)
    carol3_file.close
  end
  def carol3_save_data(file)
    #——以下定义内容和Scene_Save的write_save_data(file)完全一样
    #——如果你修改过该存档方法,不要忘记用你修改的覆盖这部分内容。
    characters = []
    for i in 0...$game_party.actors.size
      actor = $game_party.actors
      characters.push([actor.character_name, actor.character_hue])
    end
    Marshal.dump(characters, file)
    Marshal.dump(Graphics.frame_count, file)
    $game_system.save_count += 1
    $game_system.magic_number = $data_system.magic_number
    Marshal.dump($game_system, file)
    Marshal.dump($game_switches, file)
    Marshal.dump($game_variables, file)
    Marshal.dump($game_self_switches, file)
    Marshal.dump($game_screen, file)
    Marshal.dump($game_actors, file)
    Marshal.dump($game_party, file)
    Marshal.dump($game_troop, file)
    Marshal.dump($game_map, file)
    Marshal.dump($game_player, file)
  end
end
#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================[/pre]
回复

使用道具 举报

梦石
0
星屑
451
在线时间
228 小时
注册时间
2015-2-23
回帖
233
发表于 2015-11-13 09:50:27 | 显示全部楼层
本帖最后由 枫の叶 于 2015-11-13 09:51 编辑

[pre lang="ruby"]module Kernel
  Auto_save_count = 600   #<- 自动存档间隔时间 秒 。
  alias new_exit exit
  def save_jier(x)
    n = File.open("Save#{x}.rxdata", "wb")
    a=Scene_Save.new
    a.write_save_data(n)
  end
  def exit(*arg)
    save_jier(1) if $scene.is_a?(Scene_Map)
    new_exit
  end
end
class Game_System; attr_accessor :auto_save_count ; end
class Scene_Map
  alias new_update update
  def update
    new_update
    if $game_system.auto_save_count.nil? or $game_system.auto_save_count == 0
      save_jier(1) if $game_system.auto_save_count == 0
      $game_system.auto_save_count = Auto_save_count * Graphics.frame_rate
    end
    $game_system.auto_save_count = [$game_system.auto_save_count - 1, 0].max
  end
end[/pre]
制作XP特效,找我。
回复

使用道具 举报

梦石
0
星屑
50
在线时间
32 小时
注册时间
2014-2-4
回帖
19
 楼主| 发表于 2015-11-28 13:14:07 | 显示全部楼层
枫の叶 发表于 2015-11-13 09:50
module Kernel
  Auto_save_count = 600   #

还是有BUG……如果自动存档的时候角色正在行走,存档就会损坏
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部