加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
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行即可
#----------------------------------------------------- # 指定N次战斗后消除的状态 By:灯笼菜刀王 # # 使用方法, 事件脚本写: 吃猫饭(角色id,状态id,持续场次) # ※ 角色id填-1时为全员,填0时为道具使用对象 #----------------------------------------------------- class Game_Interpreter def 吃猫饭(actor_id,state_id,turn) return if turn < 1 or actor_id < -1 if actor_id == -1 $game_party.members.each{|i| i.add_state(state_id)} b = "members.each{|i| i.remove_state(#{state_id})}" else actor_id = $target_id if actor_id == 0 and $target_id != nil $game_actors[actor_id].add_state(state_id) b = "$game_actors[#{actor_id}].remove_state(#{state_id})" end $game_party.battle_end_inter_push(turn,b) end end class Game_Party < Game_Unit attr_accessor :battle_end_inter alias :old_initialize :initialize def initialize old_initialize @battle_end_inter = [] end def battle_end_inter_push(turn,s) if @battle_end_inter[turn - 1].nil? @battle_end_inter[turn - 1] = s else @battle_end_inter[turn - 1] += ";#{s}" end end def on_battle_end super if (r=@battle_end_inter.shift) != nil eval(r) end end end class Scene_ItemBase < Scene_MenuBase def use_item_to_actors item_target_actors.each do |target| $target_id = target.id #冲突就把这句移动过去,然后删掉42-49行 item.repeats.times { target.item_apply(user, item) } end end end class Scene_Battle < Scene_Base alias :old_apply_item_effects :apply_item_effects def apply_item_effects(target, item) $target_id = target.id old_apply_item_effects(target, item) end end
#-----------------------------------------------------
# 指定N次战斗后消除的状态 By:灯笼菜刀王
#
# 使用方法, 事件脚本写: 吃猫饭(角色id,状态id,持续场次)
# ※ 角色id填-1时为全员,填0时为道具使用对象
#-----------------------------------------------------
class Game_Interpreter
def 吃猫饭(actor_id,state_id,turn)
return if turn < 1 or actor_id < -1
if actor_id == -1
$game_party.members.each{|i| i.add_state(state_id)}
b = "members.each{|i| i.remove_state(#{state_id})}"
else
actor_id = $target_id if actor_id == 0 and $target_id != nil
$game_actors[actor_id].add_state(state_id)
b = "$game_actors[#{actor_id}].remove_state(#{state_id})"
end
$game_party.battle_end_inter_push(turn,b)
end
end
class Game_Party < Game_Unit
attr_accessor :battle_end_inter
alias :old_initialize :initialize
def initialize
old_initialize
@battle_end_inter = []
end
def battle_end_inter_push(turn,s)
if @battle_end_inter[turn - 1].nil?
@battle_end_inter[turn - 1] = s
else
@battle_end_inter[turn - 1] += ";#{s}"
end
end
def on_battle_end
super
if (r=@battle_end_inter.shift) != nil
eval(r)
end
end
end
class Scene_ItemBase < Scene_MenuBase
def use_item_to_actors
item_target_actors.each do |target|
$target_id = target.id #冲突就把这句移动过去,然后删掉42-49行
item.repeats.times { target.item_apply(user, item) }
end
end
end
class Scene_Battle < Scene_Base
alias :old_apply_item_effects :apply_item_effects
def apply_item_effects(target, item)
$target_id = target.id
old_apply_item_effects(target, item)
end
end
|