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

Project1

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

[已经解决] 请问:@encounter_count的值为什么是0?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3925
在线时间
254 小时
注册时间
2013-10-13
帖子
790
跳转到指定楼层
1
发表于 2022-8-30 20:32:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
主角移动中,在类Scene_Map中 P $game_player.encounter_count的值和在Game_Player类中P @encounter_count = rand(n) + rand(n) + 1的值,后者的值永远不等于0,为什么$game_player.encounter_count的值可以等于0?

Lv3.寻梦者

梦石
0
星屑
2421
在线时间
162 小时
注册时间
2020-8-9
帖子
106
2
发表于 2022-8-31 16:30:36 | 只看该作者
本帖最后由 939034448 于 2022-8-31 16:31 编辑

$game_player的encounter_count有被减少的地方,调用@encounter_count = rand(n) + rand(n) + 1这段的方法好像是每次进入地图的时候被调用一次,所以并不是永远不等于0的

点评

全局搜索@encounter_count -= 1,可以发现在Game_Player里有  发表于 2022-8-31 19:26
“game_player的encounter_count有被减少的地方”,请问在什么地方?  发表于 2022-8-31 17:41
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3925
在线时间
254 小时
注册时间
2013-10-13
帖子
790
3
 楼主| 发表于 2022-8-31 17:44:19 | 只看该作者
有高手指点一下在下的疑惑吗?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2821
在线时间
585 小时
注册时间
2022-7-13
帖子
89
4
发表于 2022-8-31 22:43:40 | 只看该作者
本帖最后由 我为鱼肉 于 2022-9-1 22:02 编辑

@encounter_count是Game_Player类定义的变量,用途是记录遇敌步数
默认脚本75~80行定义了
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # * Get Encounter Count
  3.   #--------------------------------------------------------------------------
  4.   def encounter_count
  5.     return @encounter_count
  6.   end

也就是可以通过$game_player.encounter_count来访问这个数值。
默认脚本81~90行定义了@encounter_count的赋值方法
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # * Make Encounter Count
  3.   #--------------------------------------------------------------------------
  4.   def make_encounter_count
  5.     # Image of two dice rolling
  6.     if $game_map.map_id != 0
  7.       n = $game_map.encounter_step
  8.       @encounter_count = rand(n) + rand(n) + 1
  9.     end
  10.   end

也就是@encounter_count = @encounter_count = rand(n) + rand(n) + 1  哪怕不算rand随机数,只看 + 1 就可知这个数值绝对不可能在“初始化时赋值为0”

默认脚本update方法定义了@encounter_count的改变。265行左右
也就是每次玩家移动步数减去1,直到减少到0遇敌战斗
RUBY 代码复制
  1. # If not moving
  2.     unless moving?
  3.       # If player was moving last time
  4.       if last_moving
  5.         # Event determinant is via touch of same position event
  6.         result = check_event_trigger_here([1,2])
  7.         # If event which started does not exist
  8.         if result == false
  9.           # Disregard if debug mode is ON and ctrl key was pressed
  10.           unless $DEBUG and Input.press?(Input::CTRL)
  11.             # Encounter countdown
  12.             if @encounter_count > 0
  13.               @encounter_count -= 1
  14.             end
  15.           end
  16.         end
  17.       end


Scene_Map update方法定义了遇敌
RUBY 代码复制
  1. # If encounter list isn't empty, and encounter count is 0
  2.     if $game_player.encounter_count == 0 and $game_map.encounter_list != []
  3.       # If event is running or encounter is not forbidden
  4.       unless $game_system.map_interpreter.running? or
  5.              $game_system.encounter_disabled
  6.         # Confirm troop
  7.         n = rand($game_map.encounter_list.size)
  8.         troop_id = $game_map.encounter_list[n]
  9.         # If troop is valid
  10.         if $data_troops[troop_id] != nil
  11.           # Set battle calling flag
  12.           $game_temp.battle_calling = true
  13.           $game_temp.battle_troop_id = troop_id
  14.           $game_temp.battle_can_escape = true
  15.           $game_temp.battle_can_lose = false
  16.           $game_temp.battle_proc = nil
  17.         end
  18.       end
  19.     end

也就是当这个数值为0,并且设置了敌群,那么就随机一个敌群战斗。

另外,每次地图改变,进入战斗都会重新刷新步数

视频教程那么多,建议好好看看视频教学。很快就学会这些简单的了


RUBY 代码复制
  1. #======以下是旧贴内容=======#

不明白你想问什么
@encounter_count = rand(n) + rand(n) + 1
生成遇敌计数,n是地图遇敌步数,默认是30,所以这个值肯定不可能是0
角色每次移动这个值减少,直到等于0遇敌战斗(如果设置了敌队)
$game_player.encounter_count和你说的@encounter_count是一回事。
它是0就战斗,凭什么不让人家等于0。。

点评

而在移动的过程中@encounter_count会减少,如果设置了遇敌,当这个数值为0的时候就会进入战斗,具体在哪你直接全局搜索@encounter_count不就好了  发表于 2022-9-3 12:38
题主你要注意范围啊,在@encounter_count = rand(n) + rand(n) + 1这个运算中,因为没有后续改变,@encounter_count确实是不为0的,但他每次进入地图只运行一次  发表于 2022-9-3 12:35
你说:生成遇敌计数,n是地图遇敌步数,默认是30,所以这个值肯定不可能是0 后面又说:它是0就战斗,凭什么不让人家等于0 不是矛盾吗?  发表于 2022-9-1 17:57
我想问的是:$game_player.encounter_count在什么地方运算后等于0?  发表于 2022-9-1 17:56

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-26 06:08

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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