查看: 3022|回复: 1

[原创发布] [va]额外的事件出现条件

[复制链接]
梦石
0
星屑
2920
在线时间
713 小时
注册时间
2010-7-25
回帖
659

开拓者

发表于 2019-7-6 19:21:18 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 jianyulei 于 2019-7-6 19:30 编辑

在想要增加出现条件的事件页中进行注释  <出现条件 {公式}> 公式就写你想要的出现公式,需要最终返回true或者false,之后该事件页的出现条件就会增加,如果不能达标就不会出现.

例子:我想要制作一个能看到幽灵的武器,当主角拿着这把武器时就能看到幽灵,卸下就看不见了:
写法:<出现条件 {$game_actors[1].weapons.include?($data_weapons[2])}>
主角是1号角色情况下,2号武器就是能看到幽灵的武器,所有备注了上面写法的事件都会被判定为"幽灵"

脚本
[pre lang="ruby"]
class Game_Event < Game_Character
  alias conditions_chuxiantiaojian_met? conditions_met?
  def conditions_met?(page)
    page.list.each do |bh|
      parame = bh.parameters.join(",")
      if parame.match(/<出现条件 {(.+?)}>/)
        return false unless eval($1)
      end
    end
    return conditions_chuxiantiaojian_met?(page)
  end
end
[/pre]

评分

参与人数 4星屑 +300 赞 +4 收起 理由
whitedewxiao + 1 塞糖
阵颜 + 1
VIPArcher + 300 + 1 发布奖励
hyrious + 1 塞糖

查看全部评分

梦石
0
星屑
2605
在线时间
896 小时
注册时间
2011-4-30
回帖
108

开拓者

发表于 2019-11-14 22:11:05 | 显示全部楼层
你以为这么简单?这个conditions_met?方法出现在find_proper_page中,而这个方法又只有在refresh中出现,Game_Map的refresh方法是需要判定一个属性@need_refresh才会执行的。
仔细看Game_Switches,Game_Variables等类或者全局搜索一下$game_map.need_refresh你就可以看到开启它的几个地方,其中有一个就是Game_Party里面的获得物品方法里。
所以这个简单的脚本并不能做到对一切普遍的脚本条件都能实时反映(最起码的,在下一帧就该反映出来)
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部