查看: 2330|回复: 1

[已经解决] 如何提取【事件】条件分支中的内容(已自问自答)

[复制链接]
梦石
24
星屑
8942
在线时间
248 小时
注册时间
2020-12-4
回帖
259

极短24获奖极短23获奖极短22获奖

发表于 2023-5-4 17:13:06 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 纯属小虫 于 2023-5-5 18:02 编辑

如图,我想要用 【条件分支】:脚本:读取条件分支中的物品
来读取到这个分支中的 【物品、武器、防具】 的ID和数量
hmmmm,应该怎么去做呢?
ESB8@6H0@5KM})W$`W]3}0C.png





笑死,琢磨了一个晚上,似乎又成功自我实现了
如果没有BUG的话。。。。。。。。。


[fold=脚本][pre lang="ruby"]class Interpreter

  # 通过条件分支,获取条件分支中的物品信息,配合事件检索使用
  def 条件分支信息索引
    获取条件分支中的信息
    return false
  end
  # 在条件分支中开始检索,一旦离开条件分支(indent发生变化),就会终止
  def 获取条件分支中的信息
    $选取物品列表缓存 = []
    基准indent = @list[@index].indent + 1
    index = @index + 1
    loop do
      @parameters = nil
      # 如果indent深度发生了变化,则终止
      return if @list[index].indent != 基准indent
      # 参数赋值
      @parameters = @list[index].parameters
      # 当是获取物品的情况
      if @list[index].code == 126
        value = operate_value(@parameters[1], @parameters[2], @parameters[3])
        $选取物品列表缓存.push([$data_items[@parameters[0]],value])
      # 武器的情况
      elsif @list[index].code == 127
        value = operate_value(@parameters[1], @parameters[2], @parameters[3])
        $选取物品列表缓存.push([$data_weapons[@parameters[0]],value])
      # 防具的情况
      elsif @list[index].code == 128
        value = operate_value(@parameters[1], @parameters[2], @parameters[3])
        $选取物品列表缓存.push([$data_armors[@parameters[0]],value])
      end
      # 向下索引+1
      index += 1
    end
  end
end
[/pre][/fold]

7AW4H_O1MB4(KBA4@DWLZ12.png

只要在事件中按照以下格式写下

条件分支:脚本:条件分支信息索引
    获取物品 * X
    获取武器 * Y
    获取防具 * Z
结束分支


然后全局变量 $选取物品列表缓存 便会以以下的格式记录条件分支里面的物品
[[物品对象,数量X]  ,  [武器对象,数量Y]  ,  [防具对象,数量Z]]

还不知道会出现什么BUG
欢迎指正

评分

参与人数 1星屑 +50 收起 理由
RyanBern + 50 我很赞同

查看全部评分

梦石
1
星屑
24088
在线时间
3339 小时
注册时间
2011-7-8
回帖
3862

开拓者

发表于 2023-5-5 20:04:24 | 显示全部楼层
那你这个分支就永远不会执行了对吧。应该没什么bug,就是用起来怪怪的。
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部