赞 | 5 |
VIP | 620 |
好人卡 | 38 |
积分 | 69 |
经验 | 125468 |
最后登录 | 2015-7-27 |
在线时间 | 1666 小时 |
Lv4.逐梦者
- 梦石
- 0
- 星屑
- 6855
- 在线时间
- 1666 小时
- 注册时间
- 2008-10-29
- 帖子
- 6710
|
利用 数据库->职业 的属性有消毒 单独把职业相克分离出来.
本质上还是属性的关系.只是做了点手脚而已= =.
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)
|
|