查看: 5215|回复: 12

[已经解决] 用变量来记录杀敌数的问题

[复制链接]
梦石
0
星屑
2019
在线时间
940 小时
注册时间
2015-10-26
回帖
293

开拓者

发表于 2015-11-14 22:24:00 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 踢腿水上飘 于 2015-11-14 22:46 编辑

我在敌群的事件页里设置敌人血量低于0%的时候变量+1
结果发现我撤退变量也会涨- -没法准确统计,而且很麻烦,每个敌群都要设置,所以估计要求助于脚本了,特来求助- -
如果能有一个我方战斗不能次数的统计就更好了

梦石
1
星屑
23246
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2015-11-14 22:50:19 | 显示全部楼层
https://rpg.blue/home.php?mod=sp ... o=blog&id=14685

(只有杀敌数,没有我方不能战斗统计)
回复

使用道具 举报

梦石
0
星屑
2019
在线时间
940 小时
注册时间
2015-10-26
回帖
293

开拓者

 楼主| 发表于 2015-11-14 22:58:36 | 显示全部楼层
本帖最后由 踢腿水上飘 于 2015-11-14 23:03 编辑
喵呜喵5 发表于 2015-11-14 22:50
https://rpg.blue/home.php?mod=sp ... o=blog&id=14685

(只有杀敌数,没有我方不能战斗统 ...


我在变量操作里面输入M5EC20151114[1],结果报错- -
这里必须要输入敌人ID吗?想统计各种敌人的击杀总数的话怎么办?

123.jpg

回复

使用道具 举报

梦石
1
星屑
23246
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2015-11-14 23:07:15 | 显示全部楼层
踢腿水上飘 发表于 2015-11-14 22:58
我在变量操作里面输入M5EC20151114[1],结果报错- -
这里必须要输入敌人ID吗?想统计各种敌人的击杀总数 ...

你插入脚本了吗……= =

统计击杀总数就一个敌人一个敌人的加上去呗
回复

使用道具 举报

梦石
0
星屑
2019
在线时间
940 小时
注册时间
2015-10-26
回帖
293

开拓者

 楼主| 发表于 2015-11-14 23:12:26 | 显示全部楼层
喵呜喵5 发表于 2015-11-14 23:07
你插入脚本了吗……= =

统计击杀总数就一个敌人一个敌人的加上去呗

饿,对没加入脚本,统计总数是像M5EC20151114[1,2,3,4,5,6,7] 这样吗- -
回复

使用道具 举报

梦石
1
星屑
23246
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2015-11-14 23:14:48 | 显示全部楼层
无标题.png
回复

使用道具 举报

梦石
0
星屑
2019
在线时间
940 小时
注册时间
2015-10-26
回帖
293

开拓者

 楼主| 发表于 2015-11-14 23:36:32 | 显示全部楼层
嗯,我设置好了,但是并没有记录下来呀- -#
杀了敌人,但杀敌数还是0- -
我怕是脚本冲突,特地新建了一个工程
但也是一样的结果呀,帮忙看看是哪里出的问题吧~
Project1.rar (1.42 MB, 下载次数: 67)
回复

使用道具 举报

梦石
1
星屑
23246
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2015-11-14 23:43:05 | 显示全部楼层
击杀数是每次需要时通过M5EC20151114[敌人的ID]获取的……
你要实时更新的话那个事件不能只执行一次,而应该设置成并行处理
回复

使用道具 举报

梦石
0
星屑
2019
在线时间
940 小时
注册时间
2015-10-26
回帖
293

开拓者

 楼主| 发表于 2015-11-14 23:59:36 | 显示全部楼层
额- -那就有点想得复杂了- - 我想的东西很简单- -就是死一个怪物 变量0003就+1,不用单独统计打了哪个ID多少次之类的- -
我在想能不能在公共事件里设置 有敌人战斗不能,变量0003就+1,但是好像不行- -
搜索了一下,VX哪里有人在Game_Troop
的def exp_total 里面加上一行
$game_variables[变量ID] += 1 unless enemy.hidden
就搞定了,但是这是VX的,VA用不了似乎- -,求教能改改用吗?

点评

敌人每死一次,M5EC20151114[敌人的ID] 获得的值自动加1,你要是想要指定变量自动加1就扔一个并行事件实时更新这个变量  发表于 2015-11-15 00:42
回复

使用道具 举报

梦石
0
星屑
2019
在线时间
940 小时
注册时间
2015-10-26
回帖
293

开拓者

 楼主| 发表于 2015-11-16 20:56:51 | 显示全部楼层
对了
@喵呜喵5

这个脚本和存档强化继承脚本有冲突- -,看不出是哪里额


332211.jpg


脚本如下

[pre lang="ruby"]#==============================================================================
#
# ?\ Yanfly Engine Ace - Ace Save Engine v1.03
# -- Last Updated: 2012.07.22
# -- Level: Normal
# -- Requires: n/a
#
#==============================================================================

$imported = {} if $imported.nil?
$imported["YEA-SaveEngine"] = true

#==============================================================================
# ?\ Updates
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 2012.07.22 - Fixed: Location Drawing.
# 2012.01.23 - Anti-crash method added for removed maps.
# 2011.12.26 - Compatibility Update: New Game+
# 2011.12.26 - Started Script and Finished.
#
#==============================================================================
# ?\ Introduction
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script provides a new save interface for the player. Along with a new
# interface, the player can also load and delete saves straight from the menu
# itself. This will in turn make the save command from the Main Menu always
# available, but the save option within the new save menu will be enabled
# depending on whether or not it is allowed or disallowed. From the interface,
# the player is given more information regarding the save file including the
# the location the player saved at, the amount of gold available, and any
# variables that you want to show the player as well.
#
#==============================================================================
# ?\ Instructions
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# To install this script, open up your script editor and copy/paste this script
# to an open slot below ?\ Materials/ef?T but above ?\ Main. Remember to save.
#
# For first time installers, be warned that loading this script the first time
# may not display all information in the status window for save files made
# before the installation of this script. To remedy this, just load up the save
# and save the file again.
#
#==============================================================================
# ?\ Compatibility
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
# it will run with RPG Maker VX without adjusting.
#
#==============================================================================

module YEA
  module SAVE

    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # - Slot Window Settings -
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # This section adjusts how the slot window appears on the left side of the
    # screen. This also adjusts the maximum number of saves a player can make,
    # the way the slot names appear, and the icons used.
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    MAX_FILES = 24         # Maximum saves a player can make. Default: 16
    SLOT_NAME = "存档 %s"  # How the file slots will be named.

    # These are the icons
    SAVE_ICON  = 368       # Icon used to indicate a save is present.
    EMPTY_ICON = 375       # Icon used to indicate an empty file.

    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # - Action Window Settings -
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # This section adjusts how the action window appears, the sound effect
    # played when deleting files, and what appears in the help window above.
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    ACTION_LOAD   = "读档"           # Text used for loading games.
    ACTION_SAVE   = "存档"           # Text used for saving games.
    ACTION_DELETE = "删除"         # Text used for deleting games.
    DELETE_SOUND  = RPG::SE.new("Collapse3", 100, 100) # Sound for deleting.

    # These text settings adjust what displays in the help window.
    SELECT_HELP = "请选择一个存档位置。"
    LOAD_HELP   = "读取你的游戏进度。"
    SAVE_HELP   = "储存你的游戏进度。"
    DELETE_HELP = "删除你的游戏进度。"

    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # - Status Window Settings -
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # This section adjusts how the status window appears in the middle of the
    # screen (that displays the game's data) such as the total playtime, total
    # times saved, total gold, the party's current location, and the variables
    # to be displayed.
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    EMPTY_TEXT = "没有存档"      # Text used when no save data is present.
    PLAYTIME   = "游戏时间"          # Text used for total playtime.
    TOTAL_SAVE = "Total Saves: "     # Text used to indicate total saves.
    TOTAL_GOLD = "持有金钱:"      # Text used to indicate total gold.
    LOCATION   = "存档地点:"        # Text used to indicate current location.

    # These variables will be shown in each of the two columns for those who
    # would want to display more information than just what's shown. Input the
    # variables into the arrays below to designate what data will be shown.
    COLUMN1_VARIABLES = [1, 2, 3]
    COLUMN2_VARIABLES = [4, 5, 6]

  end # SAVE
end # YEA

#==============================================================================
# ?\ Editting anything past this point may potentially result in causing
# computer damage, incontinence, explosion of user's head, coma, death, and/or
# halitosis so edit at your own risk.
#==============================================================================

#==============================================================================
# ?! Icon
#==============================================================================

module Icon

  #--------------------------------------------------------------------------
  # self.save_icon
  #--------------------------------------------------------------------------
  def self.save_icon; return YEA::SAVE::SAVE_ICON; end

  #--------------------------------------------------------------------------
  # self.empty_icon
  #--------------------------------------------------------------------------
  def self.empty_icon; return YEA::SAVE::EMPTY_ICON; end

end # Icon

#==============================================================================
# ?! Numeric
#==============================================================================

class Numeric

  #--------------------------------------------------------------------------
  # new method: group_digits
  #--------------------------------------------------------------------------
  unless $imported["YEA-CoreEngine"]
  def group; return self.to_s; end
  end # $imported["YEA-CoreEngine"]

end # Numeric

#==============================================================================
# ?! DataManager
#==============================================================================

module DataManager

  #--------------------------------------------------------------------------
  # overwrite method: savefile_max
  #--------------------------------------------------------------------------
  def self.savefile_max
    return YEA::SAVE::MAX_FILES
  end

  #--------------------------------------------------------------------------
  # overwrite method: self.make_save_header
  #--------------------------------------------------------------------------
  def self.make_save_header
    header = {}
    header[:characters]    = $game_party.characters_for_savefile
    header[:playtime_s]    = $game_system.playtime_s
    header[:system]        = Marshal.load(Marshal.dump($game_system))
    header[:timer]         = Marshal.load(Marshal.dump($game_timer))
    header[:message]       = Marshal.load(Marshal.dump($game_message))
    header[:switches]      = Marshal.load(Marshal.dump($game_switches))
    header[:variables]     = Marshal.load(Marshal.dump($game_variables))
    header[:self_switches] = Marshal.load(Marshal.dump($game_self_switches))
    header[:actors]        = Marshal.load(Marshal.dump($game_actors))
    header[:party]         = Marshal.load(Marshal.dump($game_party))
    header[:troop]         = Marshal.load(Marshal.dump($game_troop))
    header[:map]           = Marshal.load(Marshal.dump($game_map))
    header[:player]        = Marshal.load(Marshal.dump($game_player))
    header
  end

end # DataManager

#==============================================================================
# ?! Window_MenuCommand
#==============================================================================

class Window_MenuCommand < Window_Command

  #--------------------------------------------------------------------------
  # overwrite method: save_enabled
  #--------------------------------------------------------------------------
  def save_enabled; return true; end

end # Window_MenuCommand

#==============================================================================
# ?! Window_FileList
#==============================================================================

class Window_FileList < Window_Selectable

  #--------------------------------------------------------------------------
  # initialize
  #--------------------------------------------------------------------------
  def initialize(dx, dy)
    super(dx, dy, 128, Graphics.height - dy)
    refresh
    activate
    select(SceneManager.scene.first_savefile_index)
  end

  #--------------------------------------------------------------------------
  # item_max
  #--------------------------------------------------------------------------
  def item_max; return DataManager.savefile_max; end

  #--------------------------------------------------------------------------
  # current_item_enabled?
  #--------------------------------------------------------------------------
  def current_item_enabled?
    header = DataManager.load_header(index)
    return false if header.nil? && SceneManager.scene_is?(Scene_Load)
    return true
  end

  #--------------------------------------------------------------------------
  # refresh
  #--------------------------------------------------------------------------
  def refresh
    create_contents
    draw_all_items
  end

  #--------------------------------------------------------------------------
  # draw_item
  #--------------------------------------------------------------------------
  def draw_item(index)
    header = DataManager.load_header(index)
    enabled = !header.nil?
    rect = item_rect(index)
    rect.width -= 4
    draw_icon(save_icon?(header), rect.x, rect.y, enabled)
    change_color(normal_color, enabled)
    text = sprintf(YEA::SAVE::SLOT_NAME, (index + 1).group)
    draw_text(rect.x+24, rect.y, rect.width-24, line_height, text)
  end

  #--------------------------------------------------------------------------
  # save_icon?
  #--------------------------------------------------------------------------
  def save_icon?(header)
    return Icon.empty_icon if header.nil?
    return Icon.save_icon
  end

end # Window_FileList

#==============================================================================
# ?! Window_FileStatus
#==============================================================================

class Window_FileStatus < Window_Base

  #--------------------------------------------------------------------------
  # initialize
  #--------------------------------------------------------------------------
  def initialize(dx, dy, file_window)
    super(dx, dy, Graphics.width - dx, Graphics.height - dy)
    @file_window = file_window
    @current_index = @file_window.index
    refresh
  end

  #--------------------------------------------------------------------------
  # update
  #--------------------------------------------------------------------------
  def update
    super
    return if @file_window.index < 0
    return if @current_index == @file_window.index
    @current_index = @file_window.index
    refresh
  end

  #--------------------------------------------------------------------------
  # refresh
  #--------------------------------------------------------------------------
  def refresh
    contents.clear
    reset_font_settings
    @header = DataManager.load_header(@file_window.index)
    if @header.nil?
      draw_empty
    else
      draw_save_contents
    end
  end

  #--------------------------------------------------------------------------
  # draw_empty
  #--------------------------------------------------------------------------
  def draw_empty
    colour = Color.new(0, 0, 0, translucent_alpha/2)
    rect = Rect.new(0, 0, contents.width, contents.height)
    contents.fill_rect(rect, colour)
    text = YEA::SAVE::EMPTY_TEXT
    change_color(system_color)
    draw_text(rect, text, 1)
  end

  #--------------------------------------------------------------------------
  # draw_save_slot
  #--------------------------------------------------------------------------
  def draw_save_slot(dx, dy, dw)
    reset_font_settings
    change_color(system_color)
    text = sprintf(YEA::SAVE::SLOT_NAME, "")
    draw_text(dx, dy, dw, line_height, text)
    cx = text_size(text).width
    change_color(normal_color)
    draw_text(dx+cx, dy, dw-cx, line_height, (@file_window.index+1).group)
  end

  #--------------------------------------------------------------------------
  # draw_save_playtime
  #--------------------------------------------------------------------------
  def draw_save_playtime(dx, dy, dw)
    return if @header[:playtime_s].nil?
    reset_font_settings
    change_color(system_color)
    draw_text(dx, dy, dw, line_height, YEA::SAVE::PLAYTIME, 0)
    change_color(normal_color)
    draw_text(dx, dy, dw, line_height, @header[:playtime_s], 2)
  end

  #--------------------------------------------------------------------------
  # draw_save_total_saves
  #--------------------------------------------------------------------------
  def draw_save_total_saves(dx, dy, dw)
    return if @header[:system].nil?
    reset_font_settings
    change_color(system_color)
    text = YEA::SAVE::TOTAL_SAVE
    draw_text(dx, dy, dw, line_height, text)
    cx = text_size(text).width
    change_color(normal_color)
    draw_text(dx+cx, dy, dw-cx, line_height, @header[:system].save_count.group)
  end

  #--------------------------------------------------------------------------
  # draw_save_gold
  #--------------------------------------------------------------------------
  def draw_save_gold(dx, dy, dw)
    return if @header[:party].nil?
    reset_font_settings
    change_color(system_color)
    draw_text(dx, dy, dw, line_height, YEA::SAVE::TOTAL_GOLD)
    text = Vocab::currency_unit
    draw_text(dx, dy, dw, line_height, text, 2)
    cx = text_size(text).width
    change_color(normal_color)
    text = @header[:party].gold.group
    draw_text(dx, dy, dw-cx, line_height, text, 2)
  end

  #--------------------------------------------------------------------------
  # draw_save_location
  #--------------------------------------------------------------------------
  def draw_save_location(dx, dy, dw)
    return if @header[:map].nil?
    reset_font_settings
    change_color(system_color)
    draw_text(dx, dy, dw, line_height, YEA::SAVE::LOCATION)
    change_color(normal_color)
    cx = text_size(YEA::SAVE::LOCATION).width
    return if $data_mapinfos[@header[:map].map_id].nil?
    text = @header[:map].display_name
    text = $data_mapinfos[@header[:map].map_id].name if text == ""
    draw_text(dx+cx, dy, dw-cx, line_height, text)
  end

  #--------------------------------------------------------------------------
  # draw_save_characters
  #--------------------------------------------------------------------------
  def draw_save_characters(dx, dy)
    return if @header[:party].nil?
    reset_font_settings
    make_font_smaller
    dw = (contents.width - dx) / @header[:party].max_battle_members
    dx += dw/2
    for member in @header[:party].battle_members
      next if member.nil?
      member = @header[:actors][member.id]
      change_color(normal_color)
      draw_actor_graphic(member, dx, dy)
      text = member.name
      draw_text(dx-dw/2, dy, dw, line_height, text, 1)
      text = member.level.group
      draw_text(dx-dw/2, dy-line_height, dw-4, line_height, text, 2)
      cx = text_size(text).width
      change_color(system_color)
      text = Vocab::level_a
      draw_text(dx-dw/2, dy-line_height, dw-cx-4, line_height, text, 2)
      dx += dw
    end
  end

  #--------------------------------------------------------------------------
  # draw_save_column1
  #--------------------------------------------------------------------------
  def draw_save_column1(dx, dy, dw)
    data = YEA::SAVE::COLUMN1_VARIABLES
    draw_column_data(data, dx, dy, dw)
  end

  #--------------------------------------------------------------------------
  # draw_save_column2
  #--------------------------------------------------------------------------
  def draw_save_column2(dx, dy, dw)
    data = YEA::SAVE::COLUMN2_VARIABLES
    draw_column_data(data, dx, dy, dw)
  end

  #--------------------------------------------------------------------------
  # draw_column_data
  #--------------------------------------------------------------------------
  def draw_column_data(data, dx, dy, dw)
    return if @header[:variables].nil?
    reset_font_settings
    for variable_id in data
      next if $data_system.variables[variable_id].nil?
      change_color(system_color)
      name = $data_system.variables[variable_id]
      draw_text(dx, dy, dw, line_height, name, 0)
      value = @header[:variables][variable_id].group
      change_color(normal_color)
      draw_text(dx, dy, dw, line_height, value, 2)
      dy += line_height
    end
  end

  #--------------------------------------------------------------------------
  # draw_save_contents
  #--------------------------------------------------------------------------
  def draw_save_contents
    draw_save_slot(4, 0, contents.width/2-8)
    draw_save_playtime(contents.width/2+4, 0, contents.width/2-8)
    draw_save_total_saves(4, line_height, contents.width/2-8)
    draw_save_gold(contents.width/2+4, line_height, contents.width/2-8)
    draw_save_location(4, line_height*2, contents.width-8)
    draw_save_characters(0, line_height*5 + line_height/3)
    draw_save_column1(16, line_height*7, contents.width/2-48)
    draw_save_column2(contents.width/2+16, line_height*7, contents.width/2-48)
  end

end # Window_FileStatus

#==============================================================================
# ?! Window_FileAction
#==============================================================================

class Window_FileAction < Window_HorzCommand

  #--------------------------------------------------------------------------
  # initialize
  #--------------------------------------------------------------------------
  def initialize(dx, dy, file_window)
    @file_window = file_window
    super(dx, dy)
    deactivate
    unselect
  end

  #--------------------------------------------------------------------------
  # window_width
  #--------------------------------------------------------------------------
  def window_width; Graphics.width - 128; end

  #--------------------------------------------------------------------------
  # col_max
  #--------------------------------------------------------------------------
  def col_max; return 3; end

  #--------------------------------------------------------------------------
  # update
  #--------------------------------------------------------------------------
  def update
    super
    return if @file_window.index < 0
    return if @current_index == @file_window.index
    @current_index = @file_window.index
    refresh
  end

  #--------------------------------------------------------------------------
  # make_command_list
  #--------------------------------------------------------------------------
  def make_command_list
    @header = DataManager.load_header(@file_window.index)
    add_load_command
    add_save_command
    add_delete_command
  end

  #--------------------------------------------------------------------------
  # add_load_command
  #--------------------------------------------------------------------------
  def add_load_command
    add_command(YEA::SAVE::ACTION_LOAD, :load, load_enabled?)
  end

  #--------------------------------------------------------------------------
  # load_enabled?
  #--------------------------------------------------------------------------
  def load_enabled?
    return false if @header.nil?
    return true
  end

  #--------------------------------------------------------------------------
  # add_save_command
  #--------------------------------------------------------------------------
  def add_save_command
    add_command(YEA::SAVE::ACTION_SAVE, :save, save_enabled?)
  end

  #--------------------------------------------------------------------------
  # save_enabled?
  #--------------------------------------------------------------------------
  def save_enabled?
    return false if @header.nil? && SceneManager.scene_is?(Scene_Load)
    return false if SceneManager.scene_is?(Scene_Load)
    return false if $game_system.save_disabled
    return true
  end

  #--------------------------------------------------------------------------
  # add_delete_command
  #--------------------------------------------------------------------------
  def add_delete_command
    add_command(YEA::SAVE::ACTION_DELETE, :delete, delete_enabled?)
  end

  #--------------------------------------------------------------------------
  # delete_enabled?
  #--------------------------------------------------------------------------
  def delete_enabled?
    return false if @header.nil?
    return true
  end

  #--------------------------------------------------------------------------
  # update_help
  #--------------------------------------------------------------------------
  def update_help
    case current_symbol
    when :load; @help_window.set_text(YEA::SAVE::LOAD_HELP)
    when :save; @help_window.set_text(YEA::SAVE::SAVE_HELP)
    when :delete; @help_window.set_text(YEA::SAVE::DELETE_HELP)
    end
  end

end # Window_FileAction

#==============================================================================
# ?! Scene_File
#==============================================================================

class Scene_File < Scene_MenuBase

  #--------------------------------------------------------------------------
  # overwrite method: start
  #--------------------------------------------------------------------------
  def start
    super
    create_all_windows
  end

  #--------------------------------------------------------------------------
  # overwrite method: terminate
  #--------------------------------------------------------------------------
  def terminate
    super
  end

  #--------------------------------------------------------------------------
  # overwrite method: update
  #--------------------------------------------------------------------------
  def update
    super
  end

  #--------------------------------------------------------------------------
  # new method: create_all_windows
  #--------------------------------------------------------------------------
  def create_all_windows
    create_help_window
    create_file_window
    create_action_window
    create_status_window
  end

  #--------------------------------------------------------------------------
  # overwrite method: create_help_window
  #--------------------------------------------------------------------------
  def create_help_window
    @help_window = Window_Help.new
    @help_window.set_text(YEA::SAVE::SELECT_HELP)
  end

  #--------------------------------------------------------------------------
  # new method: create_file_window
  #--------------------------------------------------------------------------
  def create_file_window
    wy = @help_window.height
    @file_window = Window_FileList.new(0, wy)
    @file_window.set_handler(:ok, method(:on_file_ok))
    @file_window.set_handler(:cancel, method(:return_scene))
  end

  #--------------------------------------------------------------------------
  # new method: create_action_window
  #--------------------------------------------------------------------------
  def create_action_window
    wx = @file_window.width
    wy = @help_window.height
    @action_window = Window_FileAction.new(wx, wy, @file_window)
    @action_window.help_window = @help_window
    @action_window.set_handler(:cancel, method(:on_action_cancel))
    @action_window.set_handler(:load, method(:on_action_load))
    @action_window.set_handler(:save, method(:on_action_save))
    @action_window.set_handler(:delete, method(:on_action_delete))
  end

  #--------------------------------------------------------------------------
  # new method: create_status_window
  #--------------------------------------------------------------------------
  def create_status_window
    wx = @action_window.x
    wy = @action_window.y + @action_window.height
    @status_window = Window_FileStatus.new(wx, wy, @file_window)
  end

  #--------------------------------------------------------------------------
  # new method: on_file_ok
  #--------------------------------------------------------------------------
  def on_file_ok
    @action_window.activate
    index = SceneManager.scene_is?(Scene_Load) ? 0 : 1
    @action_window.select(index)
  end

  #--------------------------------------------------------------------------
  # new method: on_action_cancel
  #--------------------------------------------------------------------------
  def on_action_cancel
    @action_window.unselect
    @file_window.activate
    @help_window.set_text(YEA::SAVE::SELECT_HELP)
  end

  #--------------------------------------------------------------------------
  # new method: on_action_load
  #--------------------------------------------------------------------------
  def on_action_load
    if DataManager.load_game(@file_window.index)
      on_load_success
    else
      Sound.play_buzzer
    end
  end

  #--------------------------------------------------------------------------
  # overwrite method: on_load_success
  #--------------------------------------------------------------------------
  def on_load_success
    Sound.play_load
    fadeout_all
    $game_system.on_after_load
    SceneManager.goto(Scene_Map)
  end

  #--------------------------------------------------------------------------
  # new method: on_action_save
  #--------------------------------------------------------------------------
  def on_action_save
    @action_window.activate
    if DataManager.save_game(@file_window.index)
      on_save_success
      refresh_windows
    else
      Sound.play_buzzer
    end
  end

  #--------------------------------------------------------------------------
  # overwrite method: on_save_success
  #--------------------------------------------------------------------------
  def on_save_success; Sound.play_save; end

  #--------------------------------------------------------------------------
  # new method: on_action_delete
  #--------------------------------------------------------------------------
  def on_action_delete
    @action_window.activate
    DataManager.delete_save_file(@file_window.index)
    on_delete_success
    refresh_windows
  end

  #--------------------------------------------------------------------------
  # new method: on_delete_success
  #--------------------------------------------------------------------------
  def on_delete_success
    YEA::SAVE::DELETE_SOUND.play
  end

  #--------------------------------------------------------------------------
  # new method: refresh_windows
  #--------------------------------------------------------------------------
  def refresh_windows
    @file_window.refresh
    @action_window.refresh
    @status_window.refresh
  end

end # Scene_File

#==============================================================================
# ?! Scene_Save
#==============================================================================

class Scene_Save < Scene_File

  #--------------------------------------------------------------------------
  # overwrite method: on_savefile_ok
  #--------------------------------------------------------------------------
  def on_savefile_ok; super; end

  #--------------------------------------------------------------------------
  # overwrite method: on_save_success
  #--------------------------------------------------------------------------
  def on_save_success; super; end

end # help_window_text

#==============================================================================
# ?! Scene_Load
#==============================================================================

class Scene_Load < Scene_File

  #--------------------------------------------------------------------------
  # overwrite method: on_savefile_ok
  #--------------------------------------------------------------------------
  def on_savefile_ok; super; end

  #--------------------------------------------------------------------------
  # overwrite method: on_load_success
  #--------------------------------------------------------------------------
  def on_load_success; super; end

end # Scene_Load

#==============================================================================
#
# ?\ End of File
#
#==============================================================================
[/pre]




[pre lang="ruby"]#==============================================================================
#
# ▼ 养肥系统 AceEngine Ace - 存档系统插件: 开始新游戏增强 v1.00
# -- 最终更新: 2011.12.26
# -- 等级: 普通人能够用的脚本
# -- 要求插入脚本: YEA - Ace Save Engine v1.01+
# -- 无节操的顺手翻译: 喵呜喵5
#
#==============================================================================

$imported = {} if $imported.nil?
$imported["YEA-NewGame+"] = true

#==============================================================================
# ▼ 更新日志
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 2011.12.26 - 开始写并且写完了~#
#==============================================================================
# ▼ 介绍
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 这脚本能够实现继承存档的功能,详细的说明太长懒得翻译
#
#==============================================================================
# ▼ 使用方法
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 脚本扔到▼ Materials/素材 下 ▼ Main 以上
# 记得保存,总之就是个没啥特殊用法的脚本啦
#
# -----------------------------------------------------------------------------
# 物品备注 - 如果把下面的<no carry over>扔到对应物品的备注栏里
# -----------------------------------------------------------------------------
# <no carry over>
#
# 就不会被继承到新游戏中了
#
# -----------------------------------------------------------------------------
# 武器备注 - 同上
# -----------------------------------------------------------------------------
# <no carry over>
#
# -----------------------------------------------------------------------------
# 防具备注 - 同上
# -----------------------------------------------------------------------------
# <no carry over>
#
#==============================================================================
# ▼ 注意
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 这是VA脚本不是VX脚本#
#
# 这脚本还需要养肥引擎脚本Yanfly Engine Ace - Ace Save Engine v1.01+
# 并且在编辑器中的位置必须比引擎脚本更下
#
#==============================================================================

module YEA
  module NEW_GAME_PLUS

    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # - 普通设置 -
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # 帮助文字
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    NGP_SWITCH = 1      # 开关打开的时候存档将显示周目标志.
    NGP_TEXT   = "可继承"   # 显示周目标志的文字.

    # 能够继承存档的时候帮助窗口的提示文字   
    NGP_HELP   = "使用这个存档开始游戏."

    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # - 需要继承的内容 -
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # 看清楚了再设置
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # 需要继承的开关
    CARRY_OVER_SWITCHES = [14]

    # 需要继承的变量
    CARRY_OVER_VARIABLES = [1,2]

    # 设置成 false 的话不继承角色信息
    CARRY_OVER_ACTORS = true

    # 继承角色等级、继承角色装备、继承角色技能
    # 上面那个角色信息不继承的话这下面三个也继承不了
    CARRY_OVER_LEVELS = true
    CARRY_OVER_EQUIPS = true
    CARRY_OVER_SKILLS = true

    # 继承队伍成员
    CARRY_OVER_PARTY_MEMBERS = false

    # 继承金钱、物品、道具、装备
    CARRY_OVER_GOLD    = true
    CARRY_OVER_ITEMS   = true
    CARRY_OVER_WEAPONS = true
    CARRY_OVER_ARMOURS = true

  end # 别理这行
end # 也别理这行

#==============================================================================
# ▼ 看不懂的话就别碰这以下的脚本了
#==============================================================================
#==============================================================================
# ▼ Editting anything past this point may potentially result in causing
# computer damage, incontinence, explosion of user's head, coma, death, and/or
# halitosis so edit at your own risk.
#==============================================================================

if $imported["YEA-SaveEngine"]

module YEA
  module NEW_GAME_PLUS
    module_function
    #--------------------------------------------------------------------------
    # convert_integer_array
    #--------------------------------------------------------------------------
    def convert_integer_array(array)
      result = []
      array.each { |i|
        case i
        when Range; result |= i.to_a
        when Integer; result |=
        end }
      return result
    end
    #--------------------------------------------------------------------------
    # converted_contants
    #--------------------------------------------------------------------------
    CARRY_OVER_SWITCHES = convert_integer_array(CARRY_OVER_SWITCHES)
    CARRY_OVER_VARIABLES = convert_integer_array(CARRY_OVER_VARIABLES)
  end # NEW_GAME_PLUS
  module REGEXP
  module BASEITEM
   
    NO_CARRY_OVER = /<(?:NO_CARRY_OVER|no carry over)>/i
   
  end # BASEITEM
  end # REGEXP
end # YEA

#==============================================================================
# ■ DataManager
#==============================================================================

module DataManager
  
  #--------------------------------------------------------------------------
  # alias method: load_database
  #--------------------------------------------------------------------------
  class <<self; alias load_database_ngp load_database; end
  def self.load_database
    load_database_ngp
    load_notetags_ngp
  end
  
  #--------------------------------------------------------------------------
  # new method: load_notetags_ngp
  #--------------------------------------------------------------------------
  def self.load_notetags_ngp
    groups = [$data_items, $data_weapons, $data_armors]
    for group in groups
      for obj in group
        next if obj.nil?
        obj.load_notetags_ngp
      end
    end
  end
  
end # DataManager

#==============================================================================
# ■ RPG::BaseItem
#==============================================================================

class RPG::BaseItem
  
  #--------------------------------------------------------------------------
  # public instance variables
  #--------------------------------------------------------------------------
  attr_accessor :no_carry_over
  
  #--------------------------------------------------------------------------
  # common cache: load_notetags_ngp
  #--------------------------------------------------------------------------
  def load_notetags_ngp
    @no_carry_over = false
    #---
    self.note.split(/[\r\n]+/).each { |line|
      case line
      #---
      when YEA::REGEXP::BASEITEM::NO_CARRY_OVER
        @no_carry_over = true
      end
    } # self.note.split
    #---
  end
  
end # RPG::BaseItem

#==============================================================================
# ■ Switch
#==============================================================================

module Switch
  
  #--------------------------------------------------------------------------
  # self.new_game_plus
  #--------------------------------------------------------------------------
  def self.new_game_plus
    return $game_switches[YEA::NEW_GAME_PLUS::NGP_SWITCH]
  end
  
end # Switch

#==============================================================================
# ■ DataManager
#==============================================================================

module DataManager
  
  #--------------------------------------------------------------------------
  # new method: setup_new_game_plus
  #--------------------------------------------------------------------------
  def self.setup_new_game_plus(index)
    create_new_game_plus_objects(index)
    $game_map.setup($data_system.start_map_id)
    $game_player.moveto($data_system.start_x, $data_system.start_y)
    $game_player.refresh
    Graphics.frame_count = 0
  end
  
  #--------------------------------------------------------------------------
  # new method: create_new_game_plus_objects
  #--------------------------------------------------------------------------
  def self.create_new_game_plus_objects(index)
    load_game_without_rescue(index)
    ngp_reset_switches
    ngp_reset_variables
    ngp_reset_self_switches
    ngp_reset_actors
    ngp_reset_party
  end
  
  #--------------------------------------------------------------------------
  # new method: ngp_reset_switches
  #--------------------------------------------------------------------------
  def self.ngp_reset_switches
    for i in 0...$data_system.switches.size
      next if i <= 0
      next if YEA::NEW_GAME_PLUS::CARRY_OVER_SWITCHES.include?(i)
      $game_switches = false
    end
  end
  
  #--------------------------------------------------------------------------
  # new method: ngp_reset_variables
  #--------------------------------------------------------------------------
  def self.ngp_reset_variables
    for i in 0...$data_system.variables.size
      next if i <= 0
      next if YEA::NEW_GAME_PLUS::CARRY_OVER_VARIABLES.include?(i)
      $game_variables = 0
    end
  end
  
  #--------------------------------------------------------------------------
  # new method: ngp_reset_self_switches
  #--------------------------------------------------------------------------
  def self.ngp_reset_self_switches
    $game_self_switches = Game_SelfSwitches.new
  end
  
  #--------------------------------------------------------------------------
  # new method: ngp_reset_actors
  #--------------------------------------------------------------------------
  def self.ngp_reset_actors
    unless YEA::NEW_GAME_PLUS::CARRY_OVER_ACTORS
      $game_actors = Game_Actors.new
    else
      #---
      unless YEA::NEW_GAME_PLUS::CARRY_OVER_LEVELS
        for i in 0...$data_actors.size
          actor = $game_actors
          next if actor.nil?
          actor.new_game_plus_levels
        end
      end
      #---
      unless YEA::NEW_GAME_PLUS::CARRY_OVER_EQUIPS
        for i in 0...$data_actors.size
          actor = $game_actors
          next if actor.nil?
          actor.new_game_plus_equips
        end
      end
      #---
      unless YEA::NEW_GAME_PLUS::CARRY_OVER_SKILLS
        for i in 0...$data_actors.size
          actor = $game_actors
          next if actor.nil?
          actor.new_game_plus_skills
        end
      end
      #---
    end
  end
  
  #--------------------------------------------------------------------------
  # new method: ngp_reset_party
  #--------------------------------------------------------------------------
  def self.ngp_reset_party
    gold = 0
    items = {}
    members = []
    #---
    if YEA::NEW_GAME_PLUS::CARRY_OVER_PARTY_MEMBERS
      for member in $game_party.members
        members.push(member.id)
      end
    end
    #---
    gold = $game_party.gold if YEA::NEW_GAME_PLUS::CARRY_OVER_GOLD
    #---
    if YEA::NEW_GAME_PLUS::CARRY_OVER_ITEMS
      for item in $data_items
        next if item.nil?
        next if item.no_carry_over
        items[item] = $game_party.item_number(item)
      end
    end
    #---
    if YEA::NEW_GAME_PLUS::CARRY_OVER_WEAPONS
      for item in $data_weapons
        next if item.nil?
        next if item.no_carry_over
        items[item] = $game_party.item_number(item)
      end
    end
    #---
    if YEA::NEW_GAME_PLUS::CARRY_OVER_ARMOURS
      for item in $data_armors
        next if item.nil?
        next if item.no_carry_over
        items[item] = $game_party.item_number(item)
      end
    end
    #---
    $game_party = Game_Party.new
    unless YEA::NEW_GAME_PLUS::CARRY_OVER_PARTY_MEMBERS
      $game_party.setup_starting_members
    end
    #---
    for member_id in members
      $game_party.add_actor(member_id)
    end
    $game_party.gain_gold(gold)
    for key in items
      item = key[0]
      next if item.nil?
      $game_party.gain_item(item, key[1])
    end
  end
  
end # DataManager

#==============================================================================
# ■ Game_Actor
#==============================================================================

class Game_Actor < Game_Battler
  
  #--------------------------------------------------------------------------
  # new method: new_game_plus_levels
  #--------------------------------------------------------------------------
  def new_game_plus_levels
    @class_id = actor.class_id
    @level = actor.initial_level
    @exp = {}
    if $imported["YEA-ClassSystem"]
      init_unlocked_classes
      init_subclass
    end
    clear_param_plus
    init_exp
    refresh
  end
  
  #--------------------------------------------------------------------------
  # new method: new_game_plus_equips
  #--------------------------------------------------------------------------
  def new_game_plus_equips
    init_equips(actor.equips)
  end
  
  #--------------------------------------------------------------------------
  # new method: new_game_plus_skills
  #--------------------------------------------------------------------------
  def new_game_plus_skills
    init_skills
  end
  
end # Game_Actor

#==============================================================================
# ■ Window_FileAction
#==============================================================================

class Window_FileAction < Window_HorzCommand
  
  #--------------------------------------------------------------------------
  # alias method: add_load_command
  #--------------------------------------------------------------------------
  alias add_load_command_ngp add_load_command
  def add_load_command
    if new_game_plus?
      add_command(YEA::NEW_GAME_PLUS::NGP_TEXT, :new_game_plus)
    else
      add_load_command_ngp
    end
  end
  
  #--------------------------------------------------------------------------
  # new method: new_game_plus?
  #--------------------------------------------------------------------------
  def new_game_plus?
    return false if @header.nil?
    return false if @header[:switches].nil?
    return @header[:switches][YEA::NEW_GAME_PLUS::NGP_SWITCH]
  end
  
  #--------------------------------------------------------------------------
  # alias method: update_help
  #--------------------------------------------------------------------------
  alias update_help_ngp update_help
  def update_help
    case current_symbol
    when :new_game_plus; @help_window.set_text(YEA::NEW_GAME_PLUS::NGP_HELP)
    else; update_help_ngp
    end
  end
  
end # Window_FileAction

#==============================================================================
# ■ Scene_File
#==============================================================================

class Scene_File < Scene_MenuBase
  
  #--------------------------------------------------------------------------
  # alias method: create_action_window
  #--------------------------------------------------------------------------
  alias create_action_window_ngp create_action_window
  def create_action_window
    create_action_window_ngp
    @action_window.set_handler(:new_game_plus, method(:on_action_ngp))
  end
  
  #--------------------------------------------------------------------------
  # new method: on_action_ngp
  #--------------------------------------------------------------------------
  def on_action_ngp
    Sound.play_load
    DataManager.setup_new_game_plus(@file_window.index)
    fadeout_all
    $game_system.on_after_load
    SceneManager.goto(Scene_Map)
  end
  
end # Scene_File

end # $imported["YEA-SaveEngine"]

#==============================================================================
#
# ▼ End of File
#
#==============================================================================[/pre]
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部