查看: 2847|回复: 16

[已经解决] 不遇敌的道具

[复制链接]
梦石
0
星屑
2245
在线时间
1015 小时
注册时间
2015-10-17
回帖
1077
发表于 2017-1-23 16:09:58 | 显示全部楼层 |阅读模式

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

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

×
如何制作一个一段时间不遇敌道具,我自己尝试了一些方法都失败了

梦石
0
星屑
9716
在线时间
2775 小时
注册时间
2008-9-5
回帖
3458

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

发表于 2017-1-23 16:50:12 | 显示全部楼层
本帖最后由 cinderelmini 于 2017-1-23 17:50 编辑

写了一个核心代码,未测试,也许有BUG,
使用方法的话,代码丢进Main前,然后,在事件(物品关联公共事件)中使用【脚本】输入:
  1. $game_system.set_hack_time(秒数)
复制代码
设置不遇敌时间。
之后还有就是得在遇敌处理的时候,加一个判定:
  1. if $game_system.party_hacking?
复制代码
来判定队伍是否处于不遇敌状态。

【代码】
  1. class Game_System
  2.   # 剧情开关ID,打开的时候停止不遇敌计时(不用时填nil或0)
  3.   StorySwitch = 50
  4.   
  5.   # 设置不遇敌时间(单位:秒)
  6.   def set_hack_time(sec = 30)
  7.     @hack_time = (sec.to_f * Graphics.frame_rate).round
  8.   end
  9.   # 更新不遇敌计时
  10.   def update_hack_time
  11.     if (StorySwitch or StorySwitch == 0)
  12.       return if $game_switches[StorySwitch]
  13.     end
  14.     return if (@hack_time.nil? or @hack_time <= 0)
  15.     @hack_time -= 1
  16.     # 时间到了提示
  17.     if @hack_time <= 0
  18.       $game_message.position        = 1 # 对话框位置,0, 1, 2:上,中,下
  19.       $game_message.background = 1 # 对话框类型,0, 1, 2:普通,暗色,透明
  20.       $game_message.add("不遇敌时间到了")
  21.     end
  22.   end
  23.   # 队伍处于不遇敌状态?
  24.   def party_hacking?
  25.     return false if @hack_time.nil?
  26.     return true if @hack_time > 0
  27.     return false
  28.   end
  29. end


  30. # 如果需要在任何界面都更新不遇敌计时,
  31. # 则去掉下面Scene_Base行的注释,并注释掉Scene_Map行,
  32. # 如果只需要在地图时计时,则反过来。
  33. #~ class Scene_Base
  34. class Scene_Map < Scene_Base
  35.   alias sny46_170123_update update
  36.   def update
  37.     sny46_170123_update
  38.     $game_system.update_hack_time
  39.   end
  40. end

  41. class Game_Player < Game_Character
  42.   # 监视遇敌处理,如果处于不遇敌计时,则视为不遇敌
  43.   alias sny46_170123_encounter encounter
  44.   def encounter
  45.     return false if $game_system.party_hacking?
  46.     return sny46_170123_encounter
  47.   end
  48. end
复制代码

点评

fjm
多谢了,这效果非常好  发表于 2017-1-23 22:22
那个60其实是帧率,如果改过帧率的话就改成Graphics.frame_rate或者和帧率一样的数字就好了。  发表于 2017-1-23 22:04
那只需要在结束的5秒之前发出提示就好了呀。。if @hack_time <= 0这句判定,改成if @hack_time == 5 * 60试试。  发表于 2017-1-23 22:03
fjm
感觉用代码设置更加方便点. 时间到了,过5秒钟以后遇敌该怎样写呢  发表于 2017-1-23 19:27
fjm
非常感谢,问题解决了  发表于 2017-1-23 18:12

评分

参与人数 3星屑 +26 梦石 +1 收起 理由
RaidenInfinity + 1 认可答案
fjm + 20 认可答案
涅炎 + 6 塞糖

查看全部评分

回复

使用道具 举报

梦石
0
星屑
50
在线时间
28 小时
注册时间
2017-1-16
回帖
62
发表于 2017-1-23 17:05:27 | 显示全部楼层
虽然没听懂具体意思,是这种效果吗
(我怎么又跑到VA区来了?)
捕获.PNG
捕获2.PNG

点评

fjm
非常感谢,问题解决了  发表于 2017-1-23 18:12
吓,刚刚还没有楼上来着  发表于 2017-1-23 17:06

评分

参与人数 2星屑 +10 梦石 +1 收起 理由
RaidenInfinity + 1 认可答案
fjm + 10 认可答案

查看全部评分

回复

使用道具 举报

梦石
24
星屑
14177
在线时间
8119 小时
注册时间
2011-7-2
回帖
448

超评测评委极短28评委极短27评委MZ评测员极短26评委极短25评委极短24评委极短23评委极短22评委R考场第七期纪念奖开拓者

发表于 2017-1-23 17:10:09 | 显示全部楼层
本帖最后由 涅炎 于 2017-1-23 17:14 编辑

大致可以参考一下这样的设置:
【VA的话等待帧数时间不一样,这里是用了XP的截图】
先设置好一些道具的基础部分,选择公共事件。
1.png
公共事件方面设置【可精简】:
2.png
主要内容判断公共事件:
3.png

以及填坑不如吃键盘

点评

fjm
非常感谢,问题解决了  发表于 2017-1-23 18:12

评分

参与人数 3星屑 +26 梦石 +1 收起 理由
RaidenInfinity + 1 认可答案
fjm + 10 认可答案
cinderelmini + 16 编辑器居然自带遇敌开关(゚Д゚≡゚д゚)!?.

查看全部评分

【探索解谜游戏】《NULL》
-------------------------------------------------------------
回复

使用道具 举报

梦石
0
星屑
2245
在线时间
1015 小时
注册时间
2015-10-17
回帖
1077
 楼主| 发表于 2017-1-23 17:15:38 | 显示全部楼层
本帖最后由 fjm 于 2017-1-23 17:17 编辑
cinderelmini 发表于 2017-1-23 16:50
写了一个核心代码,未测试,也许有BUG,
使用方法的话,代码丢进Main前,然后,在事件(物品关联公共事件) ...


能给个范例吗
上面那句放公共事件知道怎么做
下面那句放哪呢

点评

上边的代码已经更新,如果是默认暗雷的话,替换一下刚才的代码,设置一下公共事件开启计时就好了。  发表于 2017-1-23 17:22
回复

使用道具 举报

梦石
0
星屑
878
在线时间
576 小时
注册时间
2010-6-26
回帖
709
发表于 2017-1-23 20:57:16 来自手机 | 显示全部楼层
0秒0分以上,这个判定是不是有问题呢?
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部