Project1
标题:
如何在脚本中添加技能的效果?比如,脚本中编写添加状态
[打印本页]
作者:
A.actor
时间:
2012-2-8 03:13
标题:
如何在脚本中添加技能的效果?比如,脚本中编写添加状态
就像:
if skill.element_set.include?(45)
if rand(100) < 75
self.damage *= 10 / 5
else
self.damage /= - 2 / 1
end
end
复制代码
这样。有75%几率造成双倍伤害。有25%几率给敌人回复双倍血量。
我的问题是:如果我要做:75%给敌人添加1号状态,且造成伤害固定 100 ;25%几率 给敌人添加 2号 状态 ,且造成固定伤害100。
其实,看着很复杂,造成固定伤害很简单啊。
是不是就这样?
if skill.element_set.include?(45)
if rand(100) < 75
self.damage = 100
else
self.damage = 200
end
end
复制代码
问题就是如何在脚本中编写添加状态呢??
最后感谢每一位有心帮助我的人!
dsu_plus_rewardpost_czw
作者:
zjd540921697
时间:
2012-2-8 13:04
$data_states[编号]
作者:
Wind2010
时间:
2012-2-8 14:40
#--------------------------------------------------------------------------
# ● 附加状态
# state_id : 状态 ID
# force : 强制附加标志 (处理自动状态时使用)
#--------------------------------------------------------------------------
def add_state(state_id, force = false)
复制代码
作者:
A.actor
时间:
2012-2-8 16:19
Wind2010 发表于 2012-2-8 14:40
大神可否说的详细一点。。比如 1号属性,75%给敌人+1号状态,25%无效果。。感恩。。
作者:
awyb3110
时间:
2012-2-8 20:53
def add_state(state_id, force = false)
if rand(99)<25 and state_id == 1
return
end
# 无效状态的情况下
if $data_states[state_id] == nil
# 过程结束
return
end
# 无法强制附加的情况下
unless force
# 已存在的状态循环
for i in @states
# 新的状态和已经存在的状态 (-) 同时包含的情况下、
# 本状态不包含变化为新状态的状态变化 (-)
# (ex : 战斗不能与附加中毒同时存在的场合)
if $data_states[i].minus_state_set.include?(state_id) and
not $data_states[state_id].minus_state_set.include?(i)
# 过程结束
return
end
end
end
# 无法附加本状态的情况下
unless state?(state_id)
# 状态 ID 追加到 @states 序列中
@states.push(state_id)
# 选项 [当作 HP 0 的状态] 有效的情况下
if $data_states[state_id].zero_hp
# HP 更改为 0
@hp = 0
end
# 所有状态的循环
for i in 1...$data_states.size
# 状态变化 (+) 处理
if $data_states[state_id].plus_state_set.include?(i)
add_state(i)
end
# 状态变化 (-) 处理
if $data_states[state_id].minus_state_set.include?(i)
remove_state(i)
end
end
# 按比例大的排序 (值相等的情况下按照强度排序)
@states.sort! do |a, b|
state_a = $data_states[a]
state_b = $data_states[b]
if state_a.rating > state_b.rating
-1
elsif state_a.rating < state_b.rating
+1
elsif state_a.restriction > state_b.restriction
-1
elsif state_a.restriction < state_b.restriction
+1
else
a <=> b
end
end
end
# 强制附加的场合
if force
# 设置为自然解除的最低回数 -1 (无效)
@states_turn[state_id] = -1
end
# 不能强制附加的场合
unless @states_turn[state_id] == -1
# 设置为自然解除的最低回数
@states_turn[state_id] = $data_states[state_id].hold_turn
end
# 无法行动的场合
unless movable?
# 清除行动
@current_action.clear
end
# 检查 HP 及 SP 的最大值
@hp = [@hp, self.maxhp].min
@sp = [@sp, self.maxsp].min
end
复制代码
作者:
A.actor
时间:
2012-2-9 22:12
不知道为什么,我的想说的是,一个技能属性
if skill.element_set.include?(45)
if rand(100) < 75
self.damage *= 10 / 5
else
self.damage /= - 2 / 1
end
end
复制代码
就像这样,在75%那里给敌人添加属性。。就是这么个意思。。咋写这段脚本。。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1