Project1
标题:
请问如何赋予敌人职业和制作职业相克
[打印本页]
作者:
夏季冰川
时间:
2011-6-11 22:22
标题:
请问如何赋予敌人职业和制作职业相克
本帖最后由 夏季冰川 于 2011-6-11 23:54 编辑
比如在战斗中我方主角职业是枪兵,敌方有步兵和骑兵2个兵种,我想要枪兵对步兵兵种的敌人伤害翻倍
但对骑兵兵种敌人伤害只有正常的一半,请问这个效果怎么达到?(不要说用属性法,4L有更具体的说明)
作者:
后知后觉
时间:
2011-6-11 22:22
利用 数据库->职业 的属性有消毒 单独把职业相克分离出来.
本质上还是属性的关系.只是做了点手脚而已= =.
1.把 数据库->系统->属性 扩容.
有多少个 数据库->职业 就要扩容多少个属性.
至于这些属性的名字写不写都无所谓.只要自己认识就行.
不过最好还是设置为对应职业的名字为好.比较直观.
2.设置脚本开头处的常量 ClassIdDeviant
这个常量的值为 职业属性 的起始id-1
比如下面的范例工程里的 战士 的属性是第 17 号.
那么这个 ClassIdDeviant 就应该设置为 17-1=16
这个就相当于是从 职业id 到 职业属性id 的偏移值
3.在 数据库->敌人 的行动命令里给敌人设置敌人的职业id
行动的具体行为不用管.反正敌人也不会使用这条命令.
给 气血 条件打上勾.然后输入这个敌人的职业id.也就是把气血堪称是职业来设置.
再把下面的 开关 条件打上勾.然后选择一个游戏从头到尾都不会为ON的开关.
并且把这个开关的id写入脚本开头的常量 ConditionSwitchId 中
范例工程里设置的是 1 号开关.
4.在脚本开头处设置 RateTable 常量表
这个就和 属性有消毒 是一个概念了.
5.将新方法 class_correct 的调用写到伤害计算公式里去.
具体可参考范例工程的 Game_Battler 3 的第 55-57行、148-150行.
6.在 数据库->职业 设置对于这些新增的属性的有效度即可.
概念完全和默认的一样.只是影响倍率和别的属性分离开了而已.
在范例工程里.
幽灵被设置为了 4 号职业.
被 1 号职业(战士)打会很痛.被 7 号职业(僧侣)打不掉血
蜥蜴被设置为了 5 号职业.
被 2 号职业(枪兵)打会很痛.被 8 号职业(魔导士)打不掉血
最后再说一下 RateTable 的设置.首单元那个 0 可改不能删.改了也没什么用.
从 200 开始往右一次就是 ABCDEF
C 位置上的那个 100 最好别动.其余的 5 个就根据需要改吧.
脚本核心部分:
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler
ConditionSwitchId = 1
ClassIdDeviant = 16
RateTable = [0,200,150,100,50,0,-100]
def class_correct(active_battler_class_id)
element_id = active_battler_class_id + ClassIdDeviant
return RateTable[$data_classes[@class_id].element_ranks[element_id]]
end
end
#==============================================================================
# ■ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
attr_accessor :class_id
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
alias creat_enemy_class_id_initialize initialize
def initialize(troop_id, member_index)
creat_enemy_class_id_initialize(troop_id, member_index)
enemy = $data_enemies[@enemy_id]
@class_id = 1
for hzhj in enemy.actions
if hzhj.condition_switch_id == ConditionSwitchId
@class_id = hzhj.condition_hp
break
end
end
end
end
复制代码
范例工程:
职业相克.rar
(187.11 KB, 下载次数: 168)
2011-6-12 02:20 上传
点击文件名下载附件
作者:
白鬼
时间:
2011-6-11 22:37
楼主你那么多VIP了都是怎么赚来的?
我给你个提示,你知道有一个东西叫做 属性 的吗?
知道 属性相克 吗?就是那个ABCDE5级的那个?
好了提示到此。
作者:
天使喝可乐
时间:
2011-6-11 23:08
白鬼 发表于 2011-6-11 22:37
楼主你那么多VIP了都是怎么赚来的?
我给你个提示,你知道有一个东西叫做 属性 的吗?
知道 属性相克 吗? ...
你这个提示无效 这么简单的东西谁都知道
LZ想要的效果根本不是属性相克这么简单
比如骑兵使用各种其他属性的魔法、武器 伤害翻倍怎么计算?按你的说法是将该魔法和武器勾选该属性 那要是步兵也使用同样的魔法呢?
作者:
夏季冰川
时间:
2011-6-11 23:50
本帖最后由 夏季冰川 于 2011-6-11 23:52 编辑
2L说得那个我早就想过了,好了可能算我没说明白,我要在游戏里设5到6个兵种,有些相克伤害是2倍,有些4倍,有些更高,如果只有2,3个不同种类的职业且相克造成的伤害倍率是一样的,用属性法还差不多,但是要自由设定的话这样就办不到了.
作者:
云心
时间:
2011-6-12 00:47
大致说一种思路(有很大局限性)
设有职业1、2、3、4、5、6,总共6种
在造成伤害的地方加判断,
造成伤害方职业为x,承受伤害方职业为 y
x-y的值为1或-5时,伤害为2倍
值为2或-4时,伤害为4倍
值为-1时,伤害为1/2
值为-2时,伤害为1/4
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1