设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2908|回复: 5
打印 上一主题 下一主题

[已经过期] 请问如何赋予敌人职业和制作职业相克

 关闭 [复制链接]

Lv4.逐梦者

梦石
0
星屑
6645
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

1
发表于 2011-6-11 22:22:35 | 显示全部楼层
利用 数据库->职业 的属性有消毒 单独把职业相克分离出来.
本质上还是属性的关系.只是做了点手脚而已= =.

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 个就根据需要改吧.

脚本核心部分:
  1. #==============================================================================
  2. # ■ Game_Battler
  3. #==============================================================================

  4. class Game_Battler
  5.   ConditionSwitchId = 1
  6.   ClassIdDeviant = 16
  7.   RateTable = [0,200,150,100,50,0,-100]
  8.   def class_correct(active_battler_class_id)
  9.     element_id = active_battler_class_id + ClassIdDeviant
  10.     return RateTable[$data_classes[@class_id].element_ranks[element_id]]
  11.   end
  12. end
  13. #==============================================================================
  14. # ■ Game_Enemy
  15. #==============================================================================

  16. class Game_Enemy < Game_Battler
  17.   attr_accessor :class_id
  18.   #--------------------------------------------------------------------------
  19.   # ● 初始化对像
  20.   #--------------------------------------------------------------------------
  21.   alias creat_enemy_class_id_initialize initialize
  22.   def initialize(troop_id, member_index)
  23.     creat_enemy_class_id_initialize(troop_id, member_index)
  24.     enemy = $data_enemies[@enemy_id]
  25.     @class_id = 1
  26.     for hzhj in enemy.actions
  27.       if hzhj.condition_switch_id == ConditionSwitchId
  28.         @class_id = hzhj.condition_hp
  29.         break
  30.       end
  31.     end
  32.   end
  33. end
复制代码
范例工程:
职业相克.rar (187.11 KB, 下载次数: 168)

点评

谢谢啦  发表于 2011-6-12 08:15











你知道得太多了

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-9 08:41

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表