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

Project1

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

[原创发布] 【脚本】指定N次战斗后消除的状态

[复制链接]

Lv5.捕梦者

梦石
0
星屑
38638
在线时间
5680 小时
注册时间
2006-11-10
帖子
6597
跳转到指定楼层
1
发表于 5 天前 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 灯笼菜刀王 于 2025-3-5 10:15 编辑

一个小脚本,看到有这类需求就写一下

使用方法: 把脚本塞到main之前, 然后事件脚本写: 吃猫饭(角色id,状态id,持续场次)
                 ※ 角色id填-1时为全员,填0时为道具使用对象

栗子:  吃猫饭(1,2,3)  #=>1号角色获得2号状态,持续3场战斗后解除, 状态在3次战斗期间因其他原因解除也没影响, 要同时附加多个状态就再写一句

附赠一个获得道具/技能使用对象的id函数 : $target_id

冲突: 改动了 def use_item_to_actors , 有冲突就把备注里的那句移动到对方脚本的对应位置, 然后删掉 42-49行即可

RUBY 代码复制
  1. #-----------------------------------------------------
  2. # 指定N次战斗后消除的状态    By:灯笼菜刀王
  3. #
  4. # 使用方法, 事件脚本写: 吃猫饭(角色id,状态id,持续场次)
  5. # ※ 角色id填-1时为全员,填0时为道具使用对象
  6. #-----------------------------------------------------
  7. class Game_Interpreter
  8.   def 吃猫饭(actor_id,state_id,turn)
  9.     return if turn < 1 or actor_id < -1
  10.     if actor_id == -1
  11.       $game_party.members.each{|i| i.add_state(state_id)}
  12.       b = "members.each{|i| i.remove_state(#{state_id})}"
  13.     else
  14.       actor_id = $target_id if actor_id == 0 and $target_id != nil
  15.       $game_actors[actor_id].add_state(state_id)
  16.       b = "$game_actors[#{actor_id}].remove_state(#{state_id})"
  17.     end
  18.     $game_party.battle_end_inter_push(turn,b)
  19.   end
  20. end
  21. class Game_Party < Game_Unit
  22.   attr_accessor :battle_end_inter
  23.   alias :old_initialize :initialize
  24.   def initialize
  25.     old_initialize
  26.     @battle_end_inter = []
  27.   end
  28.   def battle_end_inter_push(turn,s)
  29.     if @battle_end_inter[turn - 1].nil?
  30.       @battle_end_inter[turn - 1] = s
  31.     else
  32.       @battle_end_inter[turn - 1] += ";#{s}"
  33.     end
  34.   end
  35.   def on_battle_end
  36.     super
  37.     if (r=@battle_end_inter.shift) != nil
  38.       eval(r)
  39.     end
  40.   end
  41. end
  42. class Scene_ItemBase < Scene_MenuBase
  43.   def use_item_to_actors
  44.     item_target_actors.each do |target|
  45.       $target_id = target.id #冲突就把这句移动过去,然后删掉42-49行
  46.       item.repeats.times { target.item_apply(user, item) }
  47.     end
  48.   end
  49. end
  50. class Scene_Battle < Scene_Base
  51.   alias :old_apply_item_effects :apply_item_effects
  52.   def apply_item_effects(target, item)
  53.     $target_id = target.id
  54.     old_apply_item_effects(target, item)
  55.   end
  56. end

Lv3.寻梦者

梦石
0
星屑
1362
在线时间
102 小时
注册时间
2023-12-26
帖子
190
2
发表于 5 天前 | 只看该作者
又是这个ID又是这个函数,不懂哦,只会插脚本。要配合什么脚本用吗?还是这个直接用呀?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1362
在线时间
102 小时
注册时间
2023-12-26
帖子
190
3
发表于 5 天前 | 只看该作者
怎么填写呀,角色ID是1  要怎么写呀

点评

看栗子  发表于 5 天前
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2364
在线时间
603 小时
注册时间
2012-5-3
帖子
102

开拓者

4
发表于 5 天前 | 只看该作者
djs789783 发表于 2025-3-5 11:00
怎么填写呀,角色ID是1  要怎么写呀

作者都已经说的很清楚了,使用方法, 事件脚本写: 吃猫饭(角色id,状态id,持续场次),你好歹自己要动脑筋研究一下吧。。。。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1362
在线时间
102 小时
注册时间
2023-12-26
帖子
190
5
发表于 4 天前 | 只看该作者
邱小谦 发表于 2025-3-5 18:50
作者都已经说的很清楚了,使用方法, 事件脚本写: 吃猫饭(角色id,状态id,持续场次),你好歹自己要动脑筋研 ...

这个知道啊,我试了,出错了,而且他还有未完成的。

对了,请问有没有可以让物品添加HP的方法?像那个什么破限只能在护甲类添加HP<MAXHP: +45000>物品的有没有办法?添加?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
227
在线时间
66 小时
注册时间
2024-4-13
帖子
26
6
发表于 4 天前 | 只看该作者
本帖最后由 chen12311 于 2025-3-6 10:51 编辑
djs789783
这个知道啊,我试了,出错了,而且他还有未完成的。
对了,请问有没有可以让物品添加HP的方法?像那个什么破限只能在护甲类添加HP<MAXHP: +45000>物品的有没有办法?添加?

不是很明白你说的话,但你试试看这个
  1. module Armo_MAX
  2.   Note= /<MAXHP[::] (\d+)>/
  3. end
  4. class RPG::EquipItem
  5.   def Armor_NOTE
  6.     @note =~ Armo_MAX::Note ? $1.to_i : nil
  7.   end
  8. end
  9. class Game_Actor < Game_Battler
  10. #  def param_max(param_id) #这段毫无意义
  11. #    return 99999 if param_id == 0  # MHP
  12. #    return 9999   if param_id == 1  # MMP
  13. #    return 999
  14. #  end
  15.   def armor_mhp
  16.     a=0
  17.     armors.each do|armor|
  18.       next unless armor.Armor_NOTE
  19.       a=armor.Armor_NOTE
  20.     end
  21.     a
  22.   end
  23.   def param(param_id)
  24.     return super unless param_id==0 && armor_mhp
  25.     value = param_base(param_id) + param_plus(param_id)
  26.     value *= param_rate(param_id) * param_buff_rate(param_id)
  27.     [[value, param_max(param_id)].min, param_min(param_id)].max.to_i + armor_mhp
  28.   end
  29. end
复制代码

在护甲备注加<MAXHP: (MHP)>
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-3-10 16:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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