Project1
标题:
如何做一个延时的伤害(回合制战斗)【已解决】
[打印本页]
作者:
bleach165
时间:
2018-10-4 00:47
标题:
如何做一个延时的伤害(回合制战斗)【已解决】
本帖最后由 bleach165 于 2018-10-4 11:47 编辑
如何用状态去做一个延时的伤害,比如几回合后造成伤害
要用到公共事件么,或者说用状态能不能触发技能效果
作者:
Nil2018
时间:
2018-10-4 10:14
#==============================================================================
# 延时施放技能的状态
# Version 1.1
# By Szyu
#
# 介绍:
# 可以创建一个延时施放技能的状态
# 例如,一个定时炸弹的技能,对敌方附加“被安置炸弹”的状态,三回合后敌人会自动
# 受到“爆破”技能的伤害。
#
# 安装方法:
# - 放在"插件脚本"之下,"Main"之上.
#
# 使用方法:
# - <延时技能: 技能id>
# - <延时技能: 技能id1, 技能id2, ..., 技能idn>
# 在状态备注中填入以上内容,则状态解除时将会依次触发所有技能
#
# 例子:
# <延时技能: 10, 50>
#
#
# 需要:
# - RPG Maker VX Ace
#
# 使用条款:
# - 免费用于商业或非商业游戏.请署名我在制作名单中以支持我的作品。
#
# Pastebin:
# http://pastebin.com/ye790Zsy
#
#
#==============================================================
# * Game_Battler
#==============================================================
class Game_Battler < Game_BattlerBase
alias sz_update_timed_states update_state_turns
def update_state_turns
sz_update_timed_states
update_timed_states
end
def update_timed_states
states.each do |state|
if state.timed && @state_turns[state.id] == 0
state.triggered_skills.each do |s|
BattleManager.triggering_timed_states.push(RPG::EventCommand.new(339, 0, get_ts_params(s)))
end
end
end
end
def get_ts_params(skill)
if self.is_a?(Game_Enemy)
return [0, self.index, skill, self.index]
elsif self.is_a?(Game_Actor)
return [1, self.character_index + 1, skill, self.index]
else
return [0, 0, 0, 0]
end
end
end
#==============================================================
# * BattleManager
#==============================================================
module BattleManager
class << self
attr_accessor :triggering_timed_states
alias sz_ts_setup setup
alias sz_ts_turn_end turn_end
end
def self.setup(troop_id, can_escape = true, can_lose = false)
sz_ts_setup(troop_id, can_escape, can_lose)
@triggering_timed_states = []
end
def self.turn_end
sz_ts_turn_end
if @triggering_timed_states.size > 0
$game_troop.interpreter.setup(@triggering_timed_states.clone)
@triggering_timed_states.clear
end
end
end
#==============================================================
# * Initialize BaseItems
#==============================================================
module DataManager
class << self
alias load_db_timer_notes load_database
end
def self.load_database
load_db_timer_notes
load_sz_timer_items
end
def self.load_sz_timer_items
groups = [$data_states]
for group in groups
for obj in group
next if obj.nil?
obj.load_sz_state_timer
end
end
end
end
#==============================================================
# * Notes
#==============================================================
class RPG::State < RPG::BaseItem
attr_accessor :timed
attr_accessor :triggered_skills
def load_sz_state_timer
@timed = false
@triggered_skills = []
self.note.split(/[\r\n]+/).each do |line|
scan_sz_timer_data(line)
end
end
def scan_sz_timer_data(line)
return unless line =~ /<延时技能:\s*([\d+\s*,?\s*]+)>/i ? true : false
@timed = true
skills = $1.scan(/\s*,?\d+,?\s*/i)
skills.each do |skill|
@triggered_skills.push(skill.to_i)
end
end
end
复制代码
作者:
bleach165
时间:
2018-10-4 10:54
本帖最后由 bleach165 于 2018-10-4 11:11 编辑
Nil2018 发表于 2018-10-4 10:14
谢谢大佬,之前没有用过脚本,这个脚本插件的使用方法可以稍微具体讲一下么?
作者:
bleach165
时间:
2018-10-4 11:35
本帖最后由 bleach165 于 2018-10-4 11:41 编辑
我把它复制到脚本里打不开游戏了,提示报错
Script °延时爆炸' line 26: SyntaxError occurred.
unexpected keyword. end, expecting Send
作者:
船走听雨眠
时间:
2018-10-6 20:17
Nil2018 发表于 2018-10-4 10:14
大佬这个jio本设置的状态被驱散解除的时候能不能也触发伤害啊……
作者:
骷髅岛遗老
时间:
2018-10-8 15:16
class Game_Battler < Game_BattlerBase
def remove_state(state_id)
if state?(state_id)
if state_id == 800 #状态id
@hp -= 500 #受到伤害,也可以是MP等属性
self.add_state(3) #附加状态
end
#仿造这一小段的内容可写多个
revive if state_id == death_state_id
erase_state(state_id)
refresh
@result.removed_states.push(state_id).uniq!
end
end
end
复制代码
这里有个儿童版,状态结束时受到伤害/附加状态
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1