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

Project1

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

[已经解决] 如何实现事件触发后暂时消失,此后又能批量复原

[复制链接]

Lv5.捕梦者

梦石
0
星屑
37957
在线时间
5487 小时
注册时间
2006-11-10
帖子
6555
1
发表于 2022-4-21 18:12:20 | 显示全部楼层
本帖最后由 灯笼菜刀王 于 2022-4-22 15:14 编辑
  1. class Interpreter
  2.   def command_123
  3.     if @event_id > 0
  4.       a = (@parameters[1] == 0)
  5.       if a and @parameters[0] == "D" and $game_map.events[
  6.       @event_id].instance_variable_get(:@event).name.include?("[刷怪]")
  7.         a = "ref"
  8.       end
  9.       key = [$game_map.map_id, @event_id,@parameters[0]]
  10.       $game_self_switches[key] = a
  11.     end
  12.     $game_map.need_refresh = true
  13.     return true
  14.   end
  15. end

  16. class Game_SelfSwitches
  17.   def [](key)
  18.     return @data[key] ? true : false
  19.   end
  20.   def refresh_enemy
  21.     @data.delete_if{|a,b|b=="ref"}
  22.   end
  23. end
复制代码


塞到main前试试

然后  $game_self_switches.refresh_enemy  用这个命令, 可以把"所有名字里带有 [刷怪] 的事件的独立开关D关闭"

没测试, 应该不会出BUG吧

点评

因为XP的F1里没有 delete_if, 怕ruby1.0没这方法=.=  发表于 2022-4-22 15:11
考虑执行性能,应该用Hash#delete_if  发表于 2022-4-22 14:09

评分

参与人数 1星屑 +100 +1 收起 理由
RyanBern + 100 + 1 认可答案

查看全部评分

回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-22 13:45

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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