铁血丹心

 找回密码
 我要成为铁血侠客
搜索
查看: 2840|回复: 5

[C++复刻] 外挂式可配置战斗特效框架

[复制链接]
发表于 2018-7-25 13:48 | 显示全部楼层 |阅读模式

马上注册,结交更多侠友!

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x
最近BT帝将苍龙逐日移植到了C++版上,并且加入了半即时系统。我在想怎么做一个方便移植和修改的战斗特效系统。大致思路,我们在底层完成一个可配置的战斗系统框架,然后MOD修改者只用写“配置文件”来配置所需要的战斗特效。不用lua的原因是,1个我觉得交托给lua实现起来我不会,2个我觉得lua灵活度太大容易瞎搞,3个是有时候lua门槛都太大。

配置文件
先说个题外话,以前有人鄙视用lua表来做持续性储存,其实我们既没有储存空间的要求,也没有(单次)加载速度缓慢的问题。lua表本身方便阅读修改(甚至不用修改器了!),完全符合要求。也可以做简单的序列化:http://lua-users.org/wiki/TableSerialization。JYOL的武功就是这样处理的。
然后脱离r数据方便把特效移植到老MOD上,改个武功人物编号就行了。最后我选择了使用YAML,因为我没用过,学习一下。配置文件不需要修改器就可以随意编辑更新会很舒服,对新手MODDER吸引力会大很多(比如我),甚至不用写特效说明文件,看配置文件就好了。

Proof of concept
我们做一下很简单的武功威力,集气,气攻和气防(因为BT帝都写好了神奇的加减乘除降低集气显示代码)。首先我们先写配置表达特效,描述一下特效是干嘛的,给个编号。这些编号会被写成硬代码做战斗效果。用YAML的anchor功能表示编号不建议修改,编号也就是电脑擅长阅读,人类不行。
  1. 特效:
  2.   - 编号: &tx_weili 0
  3.     描述: 加成武功威力
  4.     效果参数:
  5.       - 加成数值

  6.   - 编号: &tx_qigong 1
  7.     描述: 增加集气伤害
  8.     效果参数:
  9.       - 增加数值

  10.   - 编号: &tx_qifang 2
  11.     描述: 集气伤害护体
  12.     效果参数:
  13.       - 护体数值

  14.   - 编号: &tx_jiqi 3
  15.     描述: 增加集气速度
  16.     效果参数:
  17.       - 加快数值
复制代码

然后有一个在攻击时发动概率的问题,这里同样可配置:单体随机触发,和随机选一个触发。
  1. 发动概率:
  2.   - 编号: &proc_random 0
  3.     描述: 单独随机发动
  4.     发动参数:
  5.       - 百分比发动几率
  6.   - 编号: &proc_distributed 1
  7.     描述: 池分布式随机发动
  8.     发动参数:
  9.       - 总体比重
  10.       - 每项的单体比重
复制代码

然后我们配置“武功特效”,还有“人物天赋”
这里大概我想做到的就是给野球拳三个招式“剪刀”,“石头”,“布”,发动时增加气攻。另外两个应该不用解释就看得懂了。
  1. 武功:
  2.   - 武功编号: 1                                  # 野球拳, 查r数据,原来不是0!
  3.     主动攻击:
  4.       - 发动概率: *proc_distributed
  5.         总比重: 100
  6.         特效:
  7.           - 编号: *tx_qigong
  8.             显示: 剪刀!
  9.             效果参数: 100
  10.             发动参数: 25
  11.           - 编号: *tx_qigong
  12.             显示: 石头!
  13.             效果参数: 100
  14.             发动参数: 25
  15.           - 编号: *tx_qigong
  16.             显示: 布!
  17.             效果参数: 100
  18.             发动参数: 25

  19. 人物:
  20.   - 人物编号: 0                                  # 主角
  21.     防守:
  22.       - 发动概率: *proc_random
  23.         特效:
  24.           编号: *tx_qifang
  25.           显示: 主角光环
  26.           效果参数: 50
  27.           发动参数: 50
  28.     全局:                                           # 进入战斗既触发
  29.       - 发动概率: *proc_random
  30.         特效:
  31.           编号: *tx_jiqi
  32.           显示: ''                                  # 无显示,留空
  33.           效果参数: 10
  34.           发动参数: 100
复制代码
(一拍脑袋写出来的yaml配置文件,有些地方并没有想的比较清楚,先这样吧)
写代码
想好了配置文件的格式,剩下的只用写代码了。
YAML的库暂且采用yaml-cpp,注意3件事情
1.VS自带的cmake整合真是浪费心情
2.编译动态库在VS使用下要加入预处理 YAML_CPP_DLL,https://github.com/jbeder/yaml-cpp/issues/461
3.所有的一切都是utf-8,所以要这样node[u8"人物"]读文件,然后读入的字符串要转cp936

代码大概就是读yaml到内存,再把BT的BattleScene伤害等改虚函数继承复制粘贴,我非常不想碰太多现有代码,到时候merge upstream会很烦。
胡改一同后,也就几百行代码,完成: https://github.com/three0s/kys-cpp/pull/2
这只是一个想法,所以效果图没有,exe没有,待我再精心打磨上万小时,说不定下一个黑山就出来了
最后,本人ID是用BT+TXDX拼起来的(不要问我e是哪里来的),BT帝NB!请求BT帝考虑重构一下BattleScene的代码方便扩展。

【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2018-7-25 15:00 | 显示全部楼层
原来是您提交的pr,瞎改没关系,主要是不写诗


近期在思考一些图像的问题,绘图速度如果能用批处理可能还能提高,貌似sdl自带的那套画图已经很落后了,不过搞这个估计也够用。看了不少资料,发现不是很好弄,现在也不打算换图形库。
待我思考一下虚函数的问题。

点评

提交的时候可以squash,那个时候您改成诗就好了!  发表于 2018-7-25 17:18
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2018-7-26 08:25 | 显示全部楼层
如果能实现不同层次不同绘画风格可能会更好。毕竟方形和人物还有不规则的画法不一样。大地图可以带一点浮雕感。或者如果直接渲染好的素材直接用,就不需靠处理实现不同画质。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2018-7-27 10:19 | 显示全部楼层
对于想做游戏 又不是很懂逻辑语言的人来说 简直是福音
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2018-8-2 00:53 | 显示全部楼层
  1. 特效:
  2.   - 编号: &tx_weili 0
  3.     描述: 加成武功威力
  4.     #有效: 攻击,防守
  5.     #效果参数:
  6.     #  - 加成数值

  7.   - 编号: &tx_qigong 1
  8.     描述: 增加集气伤害
  9.     #有效: 攻击,防守
  10.     #效果参数:
  11.     #  - 增加数值

  12.   - 编号: &tx_qifang 2
  13.     描述: 集气伤害护体
  14.     #有效: 攻击,防守
  15.     #效果参数:
  16.     #  - 护体数值

  17.   - 编号: &tx_jiqisudu 3
  18.     描述: 增加集气速度
  19.     #有效: 集气
  20.     #备注: 只对自己有效
  21.     #效果参数:
  22.     #  - 加快数值
  23.       
  24.   - 编号: &tx_baoji 4
  25.     描述: 最终伤害放大
  26.     #有效: 攻击
  27.     #备注:这是攻击方视角,负数会减少攻击者造成的伤害
  28.     #效果参数:
  29.     #  - 伤害增强百分比
  30.    
  31.   - 编号: &tx_shanghai 5
  32.     描述: 最终伤害增加
  33.     #有效: 攻击
  34.     #备注:先暴击后加伤害,建议选择特效1武功威力
  35.     #效果参数:
  36.     #  - 伤害值增加数量
  37.    
  38.   - 编号: &tx_diren_status 6
  39.     描述: 给敌方上状态
  40.     #有效: 攻击
  41.     #备注: 在伤害计算结束后生效, 状态 += 强度
  42.     #效果参数:
  43.     #  - 状态编号
  44.     #  - 强度(0~100)
  45.    
  46.   - 编号: &tx_ziji_status 7
  47.     描述: 给自己上状态
  48.     #有效: 集气,攻击
  49.     #备注: 攻击时在行动结束时结算, 状态 += 强度
  50.     #效果参数:
  51.     #  - 状态编号
  52.     #  - 强度(0~100)
  53.    
  54.   - 编号: &tx_diren_qiangzhi_status 8
  55.     描述: 对敌人强制设置状态
  56.     #有效: 攻击,防守
  57.     #备注: 强制状态,立即结算, 状态 = 强度
  58.     # 立即结算的意思是指,
  59.     # 攻击:在攻击特效判断完之后立马结算
  60.     # 防守:在防御特效判断完之后立马结算
  61.     # 集气: 在“给自己上状态”之前
  62.     # 并且清空暂时状态
  63.     #效果参数:
  64.     #  - 状态编号
  65.     #  - 强度(0~100)

  66.   - 编号: &tx_ziji_qiangzhi_status 9
  67.     描述: 对自己强制设置状态
  68.     #有效: 所有
  69.     #备注: 强制状态,仅限自己,立即结算, 状态 = 强度
  70.     #效果参数:
  71.     #  - 状态编号
  72.     #  - 强度(0~100)

  73.   - 编号: &tx_jiqisudu_percentage 10
  74.     描述: 集气速度百分比
  75.     #有效: 集气,攻击
  76.     #备注: 不想写

  77.   - 编号: &tx_lianji 11
  78.     描述: 连击
  79.     #有效: 攻击
  80.     #备注: 攻击次数+1,注意如果不控制的话就是无限连击
  81.     #传统双手互博,既学了就打两下,可用proc_counter控制触发
  82.     #这里我给的是学了互博增加连击率,且看我是怎么操作不让他无限连击的

  83.   - 编号: &tx_jiqizhi 12
  84.     描述: 集气值
  85.     #有效: 攻击,防御,回合
  86.     #备注: 集气阶段就算了
  87.   
  88. 发动方式:
  89.   - 编号: &proc_random 0
  90.     #描述: 单独随机发动,判断一次,发动一到多个特效
  91.     #发动参数:
  92.     #  - 百分比发动几率
  93.   - 编号: &proc_distributed 1
  94.     #描述: 池分布式随机发动
  95.     #总比重: 总体比重
  96.     #发动参数:
  97.     #  - 每项的单体比重
  98.   - 编号: &proc_prioritized 2
  99.     #描述: 优先发动,第一个成功后便停止判断
  100.     #发动参数:
  101.     #  - 百分比发动几率

  102.   # 等我实验一下再说
  103.   - 编号: &proc_counter 3
  104.     #描述: 计数发动,这里有个记谁头上的问题,这里统一按照人物id来
  105.     #既,这个特效,这个人物,尝试了3次,那么发动,如果发动的时候没人物id?(为啥),那么作废
  106.     #计数: 计数器到达这个值就发动
  107.     #发动参数:
  108.     #  - 每次判断增加计数器几次
  109.     #  下面这个还没做
  110.     #  - 1: 第一次既触发(默认否), 0: 第一次不算
  111.     # 问题是 问题是啥?
  112.       
  113. # 本人设计问题,所有字符串都是存在一个vector里,避免复制
  114. # 但是vector更新容量就会使引用失效,优雅的解决方案暂时没想到
  115. # 所以先确保vector大小,既总共没有超过这么多个字符串
  116. 字符串数组大小: 5000      

  117. 对比:
  118.   - &op_greater 0         # 大于
  119.   - &op_greater_equal 1   # 大于等于
  120.   - &op_equal 2           # 等于

  121. 对象:
  122.   - &target_self 0
  123.   - &target_other 1

  124. 变量:
  125.   # 变量: {编号: *var_char_mptype, 对象: *target_self}
  126.   # 对象默认当前角色
  127.   - &var_char_sex 0               # 性别  0 男 1 女 2 其他
  128.   - &var_char_level 1             # 等级
  129.   - &var_char_exp 2               # 经验
  130.   - &var_char_hp 3                # 生命值
  131.   - &var_char_maxhp 4             # 最大生命值
  132.   - &var_char_equip0 5            # 武器
  133.   - &var_char_equip1 6            # 防具
  134.   - &var_char_mptype 7            # 内力属性
  135.   - &var_char_mp 8                # 内力值
  136.   - &var_char_maxmp 9             # 内力最大值
  137.   - &var_char_attack 10           # 攻击
  138.   - &var_char_speed 11            # 轻功
  139.   - &var_char_defence 12          # 防御
  140.   - &var_char_medicine 13         # 医疗
  141.   - &var_char_usepoison 14        # 用毒
  142.   - &var_char_detoxification 15   # 解毒, 机器猫老师英文NB
  143.   - &var_char_antipoison 16       # 抗毒
  144.   - &var_char_fist 17             # 拳
  145.   - &var_char_sword 18            # 剑
  146.   - &var_char_blade 19            # 刀,我拒绝用knife
  147.   - &var_char_unusual 20          # 奇门
  148.   - &var_char_hiddenweapon 21     # 暗器
  149.   - &var_char_knowledge 22        # 武学常识
  150.   - &var_char_morality 23         # 道德
  151.   - &var_char_attackwithpoison 24 # 攻击带毒
  152.   - &var_char_attacktwice 25      # 双手互博
  153.   - &var_char_fame 26             # 声望
  154.   - &var_char_iq 27               # 资质
  155.   
  156.   
  157.   # 触发特效的选手
  158.   - &var_using_char 28

  159.   # 天书数量,仅友方有效,敌方算0
  160.   - &var_books 29
  161.   
  162.   # 武功等级,仅适用于当前使用武功,否则为0
  163.   - &var_cur_wg_level 30
  164.   
  165.   # 变量: {编号: *var_wg_level, 参数: *wg_yeqiuquan}
  166.   # 返回武功等级,给武功编号
  167.   - &var_wg_level 31
  168.   
  169.   # 变量: {编号: *var_count_item, 参数: *item_tulongdao}
  170.   # 数有几个物品,需要给物品ID
  171.   - &var_count_item 32

  172.   # 变量: {编号: *var_has_wg, 参数: [*wg_yeqiuquan..]}
  173.   # 也可以单个
  174.   # 1: 拥有武功, 0: 没有
  175.   - &var_has_wg 33

  176.   # 武功类型
  177.   - &var_wg_type 34

  178.   # 变量: {编号: *var_is_person, 参数: *char_zhujue}
  179.   # 1: 是指定角色 0: 不是
  180.   - &var_is_person 35

  181.   # 变量: {编号: *var_has_status, 参数: [*status_nuqi, 100]}
  182.   # 指定状态是否达到指定值,达到返回1 否则0
  183.   - &var_has_status 36

  184.   # 武功威力
  185.   - &var_wg_power 37


  186. #####################################################################  
  187.   
  188. # 根据MOD,自行定义
  189. 人物编号锚点:
  190.   # 主角
  191.   - &char_zhujue 0
  192.   - &char_zhoubotong 64 #我的测试对象
  193.   
  194. 武功编号锚点:
  195.   # 野球拳
  196.   - &wg_yeqiuquan 1


  197. # 所有敌人的状态结算是在伤害之后
  198. # 攻击者的状态结算则是在行动之后(包括行动特效)
  199. # 所以在回合开始前大家有一个状态,然后在结算之前这个状态不会被更新
  200. # 所有特效加加减减全是临时的,此时用变量访问状态是不包含这些临时状态的
  201. 战场状态:
  202.   # 0,1,2 是写死的 不能动
  203.   - 编号: &status_neishang 0
  204.     描述: 内伤
  205.     # 颜色?
  206.   - 编号: &status_zhongdu 1
  207.     描述: 中毒
  208.   - 编号: &status_tili 2
  209.     描述: 体力
  210.   - 编号: &status_nuqi 3
  211.     描述: 怒气
  212.     满值: 100
  213.   - 编号: &status_fengxue 4
  214.     描述: 封穴
  215.     满值: 100
  216.   - 编号: &status_hubo 5
  217.     描述: 互博计数器
  218.     满值: 1
  219.   - 编号: &status_waishang 6
  220.     描述: 外伤
  221.     满值: 100

  222. #主动运功: 这个要写好多好多UI,在此之前不碰
  223.    
  224. # 每个武功可以有 主动攻击 被动攻击/防守(程序会判断是否拥有武功)
  225. # 武功:

  226. # 所有人都一样
  227. 全人物:
  228.   攻击:
  229.     # 暴击
  230.     - 发动方式: *proc_random
  231.       # 发动概率 = 10% + 内力*0.5% + 资质*0.2%
  232.       发动参数:
  233.         可变参数:
  234.           基础: 10
  235.           加成:
  236.             # 可以有多个线性加成
  237.             # 200内力 = 5%几率
  238.             - 线性: {系数: 0.025, 变量: {编号: *var_char_mp}}
  239.             # 1资质 = 0.2%
  240.             - 线性: {系数: 0.2, 变量: {编号: *var_char_iq}}
  241.             # 怒气爆发 必暴击
  242.             - 线性: {系数: 100, 变量: {编号: *var_has_status, 参数: [*status_nuqi, 100]}}
  243.       特效:
  244.         编号: *tx_baoji
  245.         显示: 暴击
  246.         # 50%伤害提升
  247.         效果参数:  50

  248.     # 连击,仅仅学了左右互博可以发动
  249.     # 发动概率是 60 - 资质
  250.     - 发动方式: *proc_random
  251.       需求:
  252.         - 条件:
  253.           - 左边:
  254.               变量: {编号: *var_char_attacktwice}
  255.             对比: *op_equal
  256.             右边: 1
  257.           - 左边:
  258.               状态: *status_hubo
  259.             对比: *op_equal
  260.             右边: 0
  261.       发动参数:
  262.         可变参数:
  263.           基础: 60
  264.           加成:
  265.             - 线性: {系数: -1, 变量: {编号: *var_char_iq}}
  266.             # 周伯通+20%触发率
  267.             - 线性: {系数: 20, 变量: {编号: *var_is_person, 参数: *char_zhoubotong}}
  268.       特效:
  269.         - 编号: *tx_lianji
  270.           显示: '连击'
  271.           效果参数: 1
  272.         - 编号: *tx_ziji_qiangzhi_status
  273.           显示: '互搏1'
  274.           效果参数: [*status_hubo, 1]


  275.     # 拳增加封穴值,发动率为兵器值,武功威力/100
  276.     - 发动方式: *proc_random
  277.       需求:
  278.         - 条件:
  279.           - 左边:
  280.               变量: {编号: *var_wg_type}
  281.             对比: *op_equal
  282.             右边: 1
  283.       发动参数:
  284.         可变参数:
  285.           基础: 0
  286.           加成:
  287.             - 线性: {系数: 1, 变量: {编号: *var_char_fist}}
  288.       特效:
  289.         - 编号: *tx_diren_status
  290.           显示: '拳掌封穴'
  291.           效果参数:
  292.             - *status_fengxue
  293.             - 可变参数:
  294.                 基础: 0
  295.                 加成:
  296.                   - 线性: {系数: 0.01, 变量: {编号: *var_wg_power}}

  297.     # 剑增加集气值,发动率为兵器值,武功威力/5
  298.     - 发动方式: *proc_random
  299.       需求:
  300.         - 条件:
  301.           - 左边:
  302.               变量: {编号: *var_wg_type}
  303.             对比: *op_equal
  304.             右边: 2
  305.       发动参数:
  306.         可变参数:
  307.           基础: 0
  308.           加成:
  309.             - 线性: {系数: 1, 变量: {编号: *var_char_sword}}
  310.       特效:
  311.         - 编号: *tx_diren_status
  312.           显示: '御剑加速'
  313.           效果参数:
  314.             可变参数:
  315.               基础: 0
  316.               加成:
  317.                 - 线性: {系数: 0.2, 变量: {编号: *var_wg_power}}

  318.     # 刀增加外伤值,发动率为兵器值,武功威力/10
  319.     - 发动方式: *proc_random
  320.       需求:
  321.         - 条件:
  322.           - 左边:
  323.               变量: {编号: *var_wg_type}
  324.             对比: *op_equal
  325.             右边: 3
  326.       发动参数:
  327.         可变参数:
  328.           基础: 0
  329.           加成:
  330.             - 线性: {系数: 1, 变量: {编号: *var_char_blade}}
  331.       特效:
  332.         - 编号: *tx_diren_status
  333.           显示: '耍刀外伤'
  334.           效果参数:
  335.             可变参数:
  336.               基础: 0
  337.               加成:
  338.                 - 线性: {系数: 0.1, 变量: {编号: *var_wg_power}}

  339.     # 特殊减少怒气,发动率为兵器值,武功威力/15
  340.     - 发动方式: *proc_random
  341.       需求:
  342.         - 条件:
  343.           - 左边:
  344.               变量: {编号: *var_wg_type}
  345.             对比: *op_equal
  346.             右边: 4
  347.       发动参数:
  348.         可变参数:
  349.           基础: 0
  350.           加成:
  351.             - 线性: {系数: 1, 变量: {编号: *var_char_unusual}}
  352.       特效:
  353.         - 编号: *tx_diren_status
  354.           显示: '特殊降怒'
  355.           效果参数:
  356.             - *status_nuqi
  357.             - 可变参数:
  358.                 基础: 0
  359.                 加成:
  360.                   - 线性: {系数: -0.067, 变量: {编号: *var_wg_power}}               

  361.   防守:
  362.     - 发动方式: *proc_random
  363.       发动参数: 100
  364.       特效:
  365.         -
  366.           # 根据外伤值决定受到增加的伤害
  367.           编号: *tx_shanghai
  368.           显示: '外伤伤害'
  369.           效果参数:
  370.             - 可变参数:
  371.                 基础: 0
  372.                 加成:
  373.                   - 线性: {系数: 1, 状态: *status_waishang}
  374.         -
  375.           # 挨打受到怒气,随机25到35点
  376.           编号: *tx_ziji_status
  377.           显示: '伤害怒气'
  378.           效果参数:
  379.             - *status_nuqi
  380.             - 可变参数:
  381.                 基础: 0
  382.                 加成:
  383.                   - 随机:
  384.                       范围: {最小: 25, 最大: 35}        
  385.          
  386.   集气:
  387.     #基础集气速度为 0.25*轻功 + 0.002*内力 + 5
  388.     - 发动方式: *proc_random
  389.       发动参数: 100
  390.       特效:
  391.         编号: *tx_jiqisudu
  392.         显示: ''
  393.         效果参数:
  394.           - 可变参数:
  395.               基础: 10
  396.               加成:
  397.                 # 100内力=1点
  398.                 - 线性: {系数: 0.01, 变量: {编号: *var_char_mp}}
  399.                 # 10轻功=1点
  400.                 - 线性: {系数: 0.1, 变量: {编号: *var_char_speed}}
  401.                 # 每10点内伤降低1点集气速度
  402.                 - 线性: {系数: -0.1, 状态: *status_neishang}

  403.     # 暴怒+100%集气速度
  404.     - 发动方式: *proc_random
  405.       发动参数: 100
  406.       需求:
  407.         - 条件:
  408.           - 左边:
  409.               状态: *status_nuqi
  410.             对比: *op_greater_equal
  411.             右边: 100
  412.       特效:
  413.         编号: *tx_jiqisudu_percentage
  414.         显示: '暴怒加速'
  415.         效果参数: 100
  416.         
  417.     # 封穴降低100%的速度,可以被暴怒解开,以后可以加入特效直接停止集气
  418.     - 发动方式: *proc_random
  419.       发动参数: 100
  420.       需求:
  421.         - 条件:
  422.           - 左边:
  423.               状态: *status_fengxue
  424.             对比: *op_greater_equal
  425.             右边: 1
  426.       特效:
  427.         编号: *tx_jiqisudu_percentage
  428.         显示: '封穴减速'
  429.         效果参数: -100        

  430.     # 每时序解开一点封穴
  431.     - 发动方式: *proc_random
  432.       发动参数: 100
  433.       需求:
  434.         - 条件:
  435.           - 左边:
  436.               状态: *status_fengxue
  437.             对比: *op_greater_equal
  438.             右边: 1
  439.       特效:
  440.         编号: *tx_ziji_status
  441.         显示: '时解封穴'
  442.         效果参数: [*status_fengxue, -1]  

  443.   回合:
  444.     # 行动结束怒气-100
  445.     - 发动方式: *proc_random
  446.       发动参数: 100
  447.       需求:
  448.         - 条件:
  449.           - 左边:
  450.               状态: *status_nuqi
  451.             对比: *op_greater_equal
  452.             右边: 100
  453.       特效:
  454.         编号: *tx_ziji_status
  455.         显示: '结束去怒'
  456.         效果参数: [*status_nuqi, -100]

  457.     # 重置互博计数
  458.     - 发动方式: *proc_random
  459.       # 需求貌似无所谓,不过无所谓
  460.       需求:
  461.         - 条件:
  462.           - 左边:
  463.               变量: {编号: *var_char_attacktwice}
  464.             对比: *op_equal
  465.             右边: 1
  466.       发动参数: 100
  467.       特效:
  468.         - 编号: *tx_ziji_qiangzhi_status
  469.           显示: '互搏0'
  470.           效果参数: [*status_hubo, 0]
  471.          
  472. 人物:
  473.   - 人物编号: *char_zhujue
  474.     集气:
  475.       - 发动方式: *proc_random
  476.         发动参数: 100
  477.         特效:
  478.           编号: *tx_jiqizhi
  479.           显示: '主角加成集气' # 无显示,留空
  480.           效果参数: 10
复制代码

写着写着就变成一个新手不可能去读或者改的了的配置文件了,优点是仍然可以不用编译,缺点是容易出错复杂而且不够写脚本那么强大。我考虑用这个速成一个战斗MOD
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

小黑屋|手机版|铁血丹心

GMT+8, 2024-5-2 16:13

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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