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

Project1

 找回密码
 注册会员
搜索
查看: 2845|回复: 9
打印 上一主题 下一主题

[原创发布] 变量添加工具

 关闭 [复制链接]

Lv1.梦旅人

逃兵

跳转到指定楼层
1
发表于 2006-11-11 02:15:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
制作缘由(虽然和sizz123想的可能不太一样……):
http://rpg.blue/viewthread.php?tid=35272
注意:
  此脚本是我在得知政治考试选择只错了3个后RP爆发的产物,只通过简单测试……
  故,出错不管!请慎重使用!
  还有,没做文章显示和脚本的替换……

范例

#==============================================================================
# ■ 本脚本发自WWW.66RPG.COM,转载请注明!
#==============================================================================
=begin

说明:
  此脚本偷懒用,可批量插入变量、开关且不影响原有设定
  调用方式$ins.calll(mode,begin_id,num)
  #     mode     : 模式(0,变量;1,开关)
  #     begin_id : 起始ID
  #     num      : 加入数量

=end
class Ins_VS
  #--------------------------------------------------------------------------
  # ● 初始化
  #--------------------------------------------------------------------------
  def initialize
    #p "初始化完成" # 无意义……
  end
  #--------------------------------------------------------------------------
  # ● 调用对像
  #     mode     : 模式(0,变量;1,开关)
  #     begin_id : 起始ID
  #     num      : 加入数量
  #--------------------------------------------------------------------------
  def call(mode=0,begin_id=1,num=0)
    return unless mode.is_a?(Integer) and begin_id.is_a?(Integer) and num.is_a?(Integer)
    @mode = mode
    @begin_id = begin_id
    @num = num
    make_step1
    make_step2
    make_step3
    make_step4
    make_step5
    finish
  end
  #--------------------------------------------------------------------------
  # ● 变量插入(伪)
  #--------------------------------------------------------------------------
  def make_step1
    $data_system        = load_data("Data/System.rxdata")
    unless @mode == 0
      @num.times do
        $data_system.switches.insert(@begin_id, "")
      end
    else
      @num.times do
        $data_system.variables.insert(@begin_id, "")
      end
    end
    save_data($data_system, "Data/System.rxdata")
    make_step2
  end
  #--------------------------------------------------------------------------
  # ● 公共事件处理
  #--------------------------------------------------------------------------
  def make_step2
    $data_common_events = load_data("Data/CommonEvents.rxdata")
    for commonevent in $data_common_events
      next if commonevent == nil
      if [1,2].include?(commonevent.trigger) and @mode == 1 and commonevent.switch_id >= @begin_id
        commonevent.switch_id += @num
      end
      list = commonevent.list
      make_list(list)
    end
    save_data($data_common_events, "Data/CommonEvents.rxdata")
  end
  #--------------------------------------------------------------------------
  # ● 地图事件处理
  #--------------------------------------------------------------------------
  def make_step3
    map_id = 1
    loop do
      break unless FileTest.exist?(sprintf("Data/Map%03d.rxdata", map_id))
      map = load_data(sprintf("Data/Map%03d.rxdata", map_id))
      #读取事件
      events = map.events
      make_events(events)
      save_data(map, sprintf("Data/Map%03d.rxdata", map_id))
      map_id += 1
    end
  end
  #--------------------------------------------------------------------------
  # ● 队伍事件处理
  #--------------------------------------------------------------------------
  def make_step4
    $data_troops        = load_data("Data/Troops.rxdata")
    for troop in $data_troops
      next if troop == nil
      @pages = troop.pages
      for page in @pages
        @page = page
        condition = @page.condition
        unless @mode == 0
          if condition.switch_valid and condition.switch_id >= @begin_id
            condition.switch_id += @num
          end
        end
        list = @page.list
        make_list(list)
      end
    end
    save_data($data_troops,"Data/Troops.rxdata")
  end
  #--------------------------------------------------------------------------
  # ● 敌人事件处理
  #--------------------------------------------------------------------------
  def make_step5
    $data_enemies       = load_data("Data/Enemies.rxdata")
    for enemy in $data_enemies
      #如果对变量操作,则跳出
      break if @mode == 0
      next if enemy== nil
      for action in enemy.actions
        if action.condition_switch_id >= @begin_id and action.condition_switch_id != 0
          action.condition_switch_id += @num
        end
      end
    end
    save_data($data_enemies,"Data/Enemies.rxdata")
  end
  #--------------------------------------------------------------------------
  # ● 结束处理
  #--------------------------------------------------------------------------
  def finish
    p "Finish!"
    exit
  end

  #--------------------------------------------------------------------------
  # ● 事件处理
  #--------------------------------------------------------------------------
  def make_events(events)
    @events = events
    for event in @events
      next if event == nil
      #读取事件页
      @pages = event[1].pages
      for page in @pages
        @page = page
        #处理事件页条件
        condition = @page.condition
        unless @mode == 0
          if condition.switch1_valid and condition.switch1_id >= @begin_id
            condition.switch1_id += @num
          end
          if condition.switch2_valid and condition.switch2_id >= @begin_id
            condition.switch2_id += @num
          end
        else
          if condition.variable_valid and condition.variable_id >= @begin_id
            #p condition.variable_id
            condition.variable_id += @num
            #p condition.variable_id
          end
        end
        #处理事件内容
        list = @page.list
        make_list(list)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 事件处理
  #--------------------------------------------------------------------------
  def make_list(list)
    @list = list
    for eventcommand in @list
      next if eventcommand == nil
      make_eventcommand(eventcommand)
    end
  end
  #--------------------------------------------------------------------------
  # ● 事件处理
  #--------------------------------------------------------------------------
  def make_eventcommand(eventcommand)
    @eventcommand = eventcommand
    @parameters = @eventcommand.parameters
    case @eventcommand.code
    when 101  # 文章的显示
      #command_101
    when 103  # 处理数值输入
      command_103
    when 111  # 条件分支
      command_111
    when 121  # 操作开关
      command_121
    when 122  # 操作变量
      command_122
    when 125  # 增减金钱
      command_125
    when 126  # 增减物品
      command_126
    when 127  # 增减武器
      command_127
    when 128  # 增减防具
      command_128
    when 201  # 場所移動
      command_201
    when 202  # 设置事件位置
      command_202
    when 311  # 增减 HP
      command_311
    when 312  # 增减 SP
      command_312
    when 331  # 増減敌人的 HP
      command_331
    when 332  # 増減敌人的 SP
      command_332
    end
  end
  #--------------------------------------------------------------------------
  # ● 处理数值输入
  #--------------------------------------------------------------------------
  def command_103
    return unless @mode == 0
    @parameters[0] += @num if @parameters[0] >= @begin_id
  end
  #--------------------------------------------------------------------------
  # ● 条件分支
  #--------------------------------------------------------------------------
  def command_111
    # 条件判定
    case @parameters[0]
    when 0  # 开关
      return if @mode == 0
      @parameters[1] += @num if @parameters[1] >= @begin_id
    when 1  # 变量
      return unless @mode == 0
      @parameters[1] += @num if @parameters[1] >= @begin_id
      unless @parameters[2] == 0
        @parameters[3] += @num if @parameters[3] >= @begin_id
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 开关操作
  #--------------------------------------------------------------------------
  def command_121
    #如果对变量操作,则跳出
    return if @mode == 0
    @parameters[0] += @num if @parameters[0] >= @begin_id
    @parameters[1] += @num if @parameters[1] >= @begin_id
  end
  #--------------------------------------------------------------------------
  # ● 变量操作
  #--------------------------------------------------------------------------
  def command_122
    #如果对开关操作,则跳出
    return unless @mode == 0
    @parameters[0] += @num if @parameters[0] >= @begin_id
    @parameters[1] += @num if @parameters[1] >= @begin_id
  end  
  #--------------------------------------------------------------------------
  # ● 增减金钱
  #--------------------------------------------------------------------------
  def command_125
    return unless @mode == 0
    return if @parameters[1] == 0
    @parameters[2] += @num if @parameters[2] >= @begin_id
  end
  #--------------------------------------------------------------------------
  # ● 增减物品
  #--------------------------------------------------------------------------
  def command_126
    return unless @mode == 0
    return if @parameters[2] == 0
    @parameters[3] += @num if @parameters[3] >= @begin_id
  end
  #--------------------------------------------------------------------------
  # ● 增减武器
  #--------------------------------------------------------------------------
  def command_127
    command_126
  end
  #--------------------------------------------------------------------------
  # ● 增减防具
  #--------------------------------------------------------------------------
  def command_128
    command_126
  end  
  #--------------------------------------------------------------------------
  # ● 场所移动
  #--------------------------------------------------------------------------
  def command_201
    #如果对开关操作,则跳出
    return unless @mode == 0
    if @parameters[0] != 0
      # 设置主角的移动目标
      @parameters[1] += @num if @parameters[1] >= @begin_id
      @parameters[2] += @num if @parameters[2] >= @begin_id
      @parameters[3] += @num if @parameters[3] >= @begin_id
    end
  end
  #--------------------------------------------------------------------------
  # ● 设置事件位置
  #--------------------------------------------------------------------------
  def command_202
    #如果对开关操作,则跳出
    return unless @mode == 0
    # 指定方法为 [直接指定] 的情况下
    if @parameters[1] == 1
      @parameters[2] += @num if @parameters[2] >= @begin_id
      @parameters[3] += @num if @parameters[3] >= @begin_id
    end
  end
  #--------------------------------------------------------------------------
  # ● 增减 HP
  #--------------------------------------------------------------------------
  def command_311
    command_126
  end
  #--------------------------------------------------------------------------
  # ● 增减 SP
  #--------------------------------------------------------------------------
  def command_312
    command_126
  end
  #--------------------------------------------------------------------------
  # ● 增减敌人的 HP
  #--------------------------------------------------------------------------
  def command_331
    command_126
  end
  #--------------------------------------------------------------------------
  # ● 增减敌人的 SP
  #--------------------------------------------------------------------------
  def command_332
    command_126
  end
end
$ins = Ins_VS.new
「If you judge people, you have no time to love them.」—— Mother Teresa

Lv1.梦旅人

逃兵

2
 楼主| 发表于 2006-11-11 02:15:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 后知后觉 于 2009-12-13 16:18 编辑

重复内容……
「If you judge people, you have no time to love them.」—— Mother Teresa

Lv1.梦旅人

66RPG站长

梦石
0
星屑
54
在线时间
615 小时
注册时间
2005-10-10
帖子
5734

RMVX自由创作大赛亚军第2届短篇游戏比赛亚军第5届短篇游戏比赛冠军

3
发表于 2006-11-11 11:48:26 | 只看该作者
好长……呼唤范例……{/pz}
回复 支持 反对

使用道具 举报

Lv1.梦旅人

月下可怜人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2005-11-23
帖子
4085

第1届短篇游戏比赛亚军

4
发表于 2006-11-11 23:22:04 | 只看该作者
那个..其实我不太想说,这么长的一个脚本,实际上一个方法就够了...你可以去F1数组那里看看...{/pz}

insert(nth, [val[, val2 ...]])
纵然千里外,我等雁归来。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

逃兵

5
 楼主| 发表于 2006-11-11 23:34:57 | 只看该作者
……美兽打击人!
其实我也知道那个,可加入的只是个名称而已,一切都得重设……
「If you judge people, you have no time to love them.」—— Mother Teresa
回复 支持 反对

使用道具 举报

Lv1.梦旅人

月下可怜人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2005-11-23
帖子
4085

第1届短篇游戏比赛亚军

6
发表于 2006-11-11 23:37:16 | 只看该作者
那个方法是把所有的量往后撤,中间插入新量,变量所有的属性都会跟随移过去...
纵然千里外,我等雁归来。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

逃兵

7
 楼主| 发表于 2006-11-11 23:41:15 | 只看该作者
但游戏的某些设定用的开关、变量ID仍然和从前一样,这样的话,除了显示的时候变量名后错,没有别的改变……比如某事件需要开关1号打开,普通的插入几个变量后,事件需要的仍然是1号开关,所以一切都要重设。
「If you judge people, you have no time to love them.」—— Mother Teresa
回复 支持 反对

使用道具 举报

Lv1.梦旅人

月下可怜人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2005-11-23
帖子
4085

第1届短篇游戏比赛亚军

8
发表于 2006-11-12 00:06:39 | 只看该作者
哦,是事件对应顺序移过去,编辑器的名字都要改了...
全事件的工程还比较好,半事件半脚本的就危险了...
纵然千里外,我等雁归来。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

月下可怜人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2005-11-23
帖子
4085

第1届短篇游戏比赛亚军

9
发表于 2006-11-12 01:43:47 | 只看该作者
以下引用轮回者于2006-11-11 15:41:15的发言:

但游戏的某些设定用的开关、变量ID仍然和从前一样,这样的话,除了显示的时候变量名后错,没有别的改变……比如某事件需要开关1号打开,普通的插入几个变量后,事件需要的仍然是1号开关,所以一切都要重设。


你可以看下.现在插入后依然也事件需要的仍然是1号开关.
http://rpg.blue/upload_program/files/ewfiwfhailfnew.rar


纵然千里外,我等雁归来。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

逃兵

10
 楼主| 发表于 2006-11-15 02:58:02 | 只看该作者
已经变了,不信重起RM,但是这个脚本需要重起才有效,
换言之,没有把当前记录里的变量开关的值后延,
但因为只要在制作时才有用,所以没做当前游戏的后延.
「If you judge people, you have no time to love them.」—— Mother Teresa
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-29 20:14

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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