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

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: 无忧谷主幻
打印 上一主题 下一主题

[有事请教] 如何让一个状态能够覆盖被装备赋予的自动状态

[复制链接]

Lv5.捕梦者

梦石
0
星屑
37710
在线时间
10954 小时
注册时间
2009-3-15
帖子
4883
11
发表于 3 天前 | 只看该作者
脚本已更..但没有测有没用
回复 支持 反对

使用道具 举报

Lv4.逐梦者

素材区好人

梦石
3
星屑
8949
在线时间
3701 小时
注册时间
2011-7-21
帖子
2358

极短26参与极短25参与极短24参与极短23参与极短22参与极短21参与

12
 楼主| 发表于 3 天前 | 只看该作者
soulsaga 发表于 2025-8-16 01:52
脚本已更..但没有测有没用

为了正常运行,这2段都需要删除最后的  end,也不知道为什么

状态覆盖:还是一样

更新自动状态
是我改错了吗?2个饰品都附加神速,结果卸掉一个饰品后,神速还是消失了,和不加一样

RUBY 代码复制
  1. class Game_Actor < Game_Battler
  2.   #--------------------------------------------------------------------------
  3.   # ● 初始化设置(5-7号防具位初始化为0)
  4.   #--------------------------------------------------------------------------
  5.     @armor5_id = 0
  6.     @armor6_id = 0
  7.     @armor7_id = 0
  8.   end
  9.  
  10. #--------------------------------------------------------------------------
  11.   # ● 更新自动状态
  12.   #     old_armor : 卸下防具
  13.   #     new_armor : 装备防具
  14.   #--------------------------------------------------------------------------
  15.   def update_auto_state(old_armor, new_armor, type=1)
  16.     add_state($data_armors[@armor1_id].auto_state_id, true) if @armor1_id!=0
  17.     add_state($data_armors[@armor2_id].auto_state_id, true) if @armor2_id!=0
  18.     add_state($data_armors[@armor3_id].auto_state_id, true) if @armor3_id!=0
  19.     add_state($data_armors[@armor4_id].auto_state_id, true) if @armor4_id!=0
  20.     add_state($data_armors[@armor5_id].auto_state_id, true) if @armor5_id!=0
  21.     add_state($data_armors[@armor6_id].auto_state_id, true) if @armor6_id!=0
  22.     add_state($data_armors[@armor7_id].auto_state_id, true) if @armor7_id!=0
  23.     # 强制解除卸下防具的自动状态
  24.     if old_armor != nil and old_armor.auto_state_id != 0
  25.       remove_state(old_armor.auto_state_id, true)
  26.     end
  27.     # 强制附加装备防具的自动状态
  28.     if new_armor != nil and new_armor.auto_state_id != 0
  29.       add_state(new_armor.auto_state_id, true)
  30.     end
  31.   end

点评

因为我给你的是即插即用的..不是要你改  发表于 3 天前
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
37710
在线时间
10954 小时
注册时间
2009-3-15
帖子
4883
13
发表于 3 天前 | 只看该作者
本帖最后由 soulsaga 于 2025-8-16 03:37 编辑

@armor5_id = 0
我说了在SETUP那吧?你自己改过的呀..怎么又乱来

def setup(actor_id)那里把3个
@armor5_id = actor.armor5_id
    @armor6_id = actor.armor6_id
    @armor7_id = actor.armor7_id

改成= 0

我想说你用默认工程测我的脚本看看..你加太多东西了
回复 支持 反对

使用道具 举报

Lv4.逐梦者

素材区好人

梦石
3
星屑
8949
在线时间
3701 小时
注册时间
2011-7-21
帖子
2358

极短26参与极短25参与极短24参与极短23参与极短22参与极短21参与

14
 楼主| 发表于 3 天前 | 只看该作者
soulsaga 发表于 2025-8-16 03:26
@armor5_id = 0
我说了在SETUP那吧?你自己改过的呀..怎么又乱来

刚刚研究了一下状态显示和实际状态更新变化不同步的问题,你看看这样改可以吗
RUBY 代码复制
  1. #==============================================================================
  2. # ■ Window_BattleStatus
  3. #------------------------------------------------------------------------------
  4. #  显示战斗画面同伴状态的窗口。
  5. #==============================================================================
  6.  
  7. class Window_BattleStatus < Window_Base
  8.   #--------------------------------------------------------------------------
  9.   # ● 初始化对像
  10.   #--------------------------------------------------------------------------
  11.   def initialize
  12.     super(0, 320, 640, 160)
  13.     self.contents = Bitmap.new(width - 32, height - 32)
  14.     @level_up_flags = [false, false, false, false]
  15.     # 记录初始状态,用于后续对比
  16.     @last_states = $game_party.actors.map { |actor| actor.states.clone }
  17.     refresh
  18.   end
  19.   #--------------------------------------------------------------------------
  20.   # ● 释放
  21.   #--------------------------------------------------------------------------
  22.   def dispose
  23.     super
  24.   end
  25.   #--------------------------------------------------------------------------
  26.   # ● 设置升级标志
  27.   #     actor_index : 角色索引
  28.   #--------------------------------------------------------------------------
  29.   def level_up(actor_index)
  30.     @level_up_flags[actor_index] = true
  31.   end
  32.   #--------------------------------------------------------------------------
  33.   # ● 刷新
  34.   #--------------------------------------------------------------------------
  35.   def refresh
  36.     self.contents.clear
  37.     @item_max = $game_party.actors.size
  38.     for i in 0...$game_party.actors.size
  39.       actor = $game_party.actors[i]
  40.       actor_x = i * 160 + 4
  41.       draw_actor_name(actor, actor_x, 0)
  42.       draw_actor_hp(actor, actor_x, 32, 120)
  43.       draw_actor_sp(actor, actor_x, 64, 120)
  44.       if @level_up_flags[i]
  45.         self.contents.font.color = normal_color
  46.         self.contents.draw_text(actor_x, 96, 120, 32, "LEVEL UP!")
  47.       else
  48.         draw_actor_state(actor, actor_x, 96)
  49.       end
  50.     end
  51.   end
  52.   #--------------------------------------------------------------------------
  53.   # ● 刷新画面
  54.   #--------------------------------------------------------------------------
  55.   def update
  56.     super
  57.     # 检测状态变化并刷新
  58.     check_state_change
  59.     # 主界面的不透明度调整
  60.     if $game_temp.battle_main_phase
  61.       self.contents_opacity -= 4 if self.contents_opacity > 191
  62.     else
  63.       self.contents_opacity += 4 if self.contents_opacity < 255
  64.     end
  65.   end
  66.   #--------------------------------------------------------------------------
  67.   # ● 检测状态变化
  68.   #--------------------------------------------------------------------------
  69.   def check_state_change
  70.     # 获取当前所有角色的状态
  71.     current_states = $game_party.actors.map { |actor| actor.states.clone }
  72.     # 对比上一帧状态,不同则刷新
  73.     if @last_states != current_states
  74.       refresh
  75.       @last_states = current_states.clone
  76.     end
  77.   end
  78. end
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-8-19 11:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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