Project1
标题: 怎么修改战斗中前中后卫被攻击的几率 [打印本页]
作者: poweryu 时间: 2015-3-12 11:54
标题: 怎么修改战斗中前中后卫被攻击的几率 如题,我发现默认中,前卫中卫后卫被攻击的几率似乎是一样的。在脚本当中也没有发现有关前中后卫的区别。
那么问题来了,比如我想做一个游戏,法师职业是非常脆弱的,基本上被攻击就残血,那么我需要设置成前卫被攻击的几率是70%,中卫20%,后卫10%,应该如何弄?
感谢大神
作者: RyanBern 时间: 2015-3-12 12:02
脚本中有关于前后卫位置的设定。
具体在Game_Party中的random_target_actor方法:
def random_target_actor( hp0 = false )
# 初始化轮流
roulette = [ ]
# 循环
for actor in @actors
# 符合条件的场合
if ( not hp0 and actor.exist ?) or ( hp0 and actor.hp0 ?)
# 获取角色职业的位置 [位置]
position = $data_classes [ actor.class_id ] .position
# 前卫的话 n = 4、中卫的话 n = 3、后卫的话 n = 2
n = 4 - position
# 添加角色的轮流 n 回
n.times do
roulette.push ( actor)
end
end
end
# 轮流大小为 0 的情况
if roulette.size == 0
return nil
end
# 转轮盘赌,决定角色
return roulette[ rand ( roulette.size ) ]
end
def random_target_actor( hp0 = false )
# 初始化轮流
roulette = [ ]
# 循环
for actor in @actors
# 符合条件的场合
if ( not hp0 and actor.exist ?) or ( hp0 and actor.hp0 ?)
# 获取角色职业的位置 [位置]
position = $data_classes [ actor.class_id ] .position
# 前卫的话 n = 4、中卫的话 n = 3、后卫的话 n = 2
n = 4 - position
# 添加角色的轮流 n 回
n.times do
roulette.push ( actor)
end
end
end
# 轮流大小为 0 的情况
if roulette.size == 0
return nil
end
# 转轮盘赌,决定角色
return roulette[ rand ( roulette.size ) ]
end
这里面的这个部分:
# 前卫的话 n = 4、中卫的话 n = 3、后卫的话 n = 2
n = 4 - position
# 前卫的话 n = 4、中卫的话 n = 3、后卫的话 n = 2
n = 4 - position
position代表角色位置的编号,前卫为0,中卫为1,后卫为2,计算出的权重相应为4,3,2
如要更改,可以这样(用下面这个脚本替换上面的):
case position
when 0
n = 7
when 1
n = 2
when 2
n = 1
else
n = 0
end
case position
when 0
n = 7
when 1
n = 2
when 2
n = 1
else
n = 0
end
作者: poweryu 时间: 2015-3-12 12:36
RyanBern 发表于 2015-3-12 12:02
脚本中有关于前后卫位置的设定。
具体在Game_Party中的random_target_actor方法:
def random_target_actor ...
感谢大神。我有3年的的软件开发经验,懂C和python、我感觉我理解的应该没问题。跟您确认下,谢谢
改完是下面这样吧?
def random_target_actor(hp0 = false)
# 初始化轮流
roulette = []
# 循环
for actor in @actors
# 符合条件的场合
if (not hp0 and actor.exist?) or (hp0 and actor.hp0?)
# 获取角色职业的位置 [位置]
position = $data_classes[actor.class_id].position
# 前卫的话 n = 4、中卫的话 n = 3、后卫的话 n = 2
# n = 4 - position
case position
when 0
n = 7
when 1
n = 2
when 2
n = 1
else
n = 0
end
# 添加角色的轮流 n 回
n.times do
roulette.push(actor)
end
end
end
# 轮流大小为 0 的情况
if roulette.size == 0
return nil
end
# 转轮盘赌,决定角色
return roulette[rand(roulette.size)]
end
作者: 轩筱翎桦子 时间: 2018-2-13 16:09
谢谢,我也用到了。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1