查看: 2370|回复: 9

[已经解决] 【仿宝可梦】濒死时减少好感变量

[复制链接]
梦石
0
星屑
29901
在线时间
5734 小时
注册时间
2016-3-8
回帖
1653
发表于 2020-1-12 02:34:02 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 alexncf125 于 2024-1-5 22:26 编辑

https://rpg.blue/thread-399162-1-1.html里的方法,未濒死就把变量减1了
战斗全灭的情形2号角色,23号角色,235号角色, 888号角色参与战斗
2号角色,888号角色濒死
23号角色复活2号角色
2号角色,23号角色,235号角色濒死
全灭,战斗结束
2号变量-2
23号变量-1
235号变量-1
888号变量-1

战斗中止的情形2号角色,23号角色,888号角色参与战斗
2号角色,888号角色濒死
23号角色复活2号角色
战斗中止
2号变量-1
23号变量-0
888号变量-1

战斗外的情形235号角色中毒了!
走20步
-20%hp
走20步
-20%hp
走20步
-20%hp
走20步
-20%hp
走20步
-20%hp
235号角色濒死!
235号变量-1
梦石
10
星屑
39550
在线时间
1919 小时
注册时间
2010-11-14
回帖
3214

R考场第七期纪念奖

发表于 2020-1-12 10:32:44 | 显示全部楼层
[pre lang="ruby"]class Game_Actor
  
  alias initialize_for_count_actor_death initialize
  def initialize(actor_id)
    initialize_for_count_actor_death(actor_id)
    $game_variables[actor_id] = 0
  end

  def add_state(state_id)
    if state_id == death_state_id && !death_state?
      BattleManager.count_actor_death(@actor_id)
    end
    super
  end
  
end

module BattleManager
  
  @reserved_death_count = {}
  
  def self.count_actor_death(actor_id)
    if $game_party.in_battle
      @reserved_death_count[actor_id] ||= 0
      @reserved_death_count[actor_id] += 1
    else
      $game_variables[actor_id] -= 1
    end
  end
  
  class << self
   
    alias battle_end_for_count_actor_death battle_end
    def battle_end(result)
      @reserved_death_count.each do |k, v|
        $game_variables[k] -= v
      end
      @reserved_death_count.clear
      battle_end_for_count_actor_death(result)
    end
   
  end
end[/pre]

脚本如上
不过要注意,这里用的是角色编号来控制对应的变量,
也就是说你用了N号角色,第N号变量就不要拿来做其他用途了

评分

参与人数 2星屑 +50 赞 +1 收起 理由
VIPArcher + 50 认可答案
alexncf125 + 1 认可答案

查看全部评分

用头画头像,用脚写脚本
回复

使用道具 举报

梦石
0
星屑
29901
在线时间
5734 小时
注册时间
2016-3-8
回帖
1653
 楼主| 发表于 2020-1-12 10:44:04 | 显示全部楼层
本帖最后由 alexncf125 于 2020-1-12 10:50 编辑
也就是说你用了N号角色,第N号变量就不要拿来做其他用途了


1.在对4号角色使用某道具时,4号变量减10
2.在某事件里把4号变量加5
3.在其它脚本里把4号变量乘2

以上在战斗里和战斗外都不可以做?

点评

原來是腳本插入的位置不正確Orz  发表于 2020-1-13 08:32
不好意思,好像是我的工程有問題,要時間排查排查  发表于 2020-1-13 08:20
話說有bug,被敵人打死時,變量沒減1的說.  发表于 2020-1-13 08:16
Game_Actor本身没有定义add_state,它的add_state完全继承自Game_Battler,因此只要加了super就可以重新添加内容  发表于 2020-1-12 16:29
请教第9至14行,不用alias,不会覆盖了原先的方法吗?  发表于 2020-1-12 11:33
回复

使用道具 举报

梦石
0
星屑
29901
在线时间
5734 小时
注册时间
2016-3-8
回帖
1653
 楼主| 发表于 2020-1-12 18:44:43 | 显示全部楼层
本帖最后由 alexncf125 于 2020-8-17 03:19 编辑

本層已刪
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部