灯笼菜刀王 发表于 2020-8-15 21:43 研究了好长时间,好点看明白了,对了,下面这个地方是不是应该改成这样才对 a*= 2 if element_set.include?(5) #土属性,双倍伤害 a /= 2 if element_set.include?(4) #火属性,减半 a *= 0 if element_set.include?(3) #水属性,吸收 |
本帖最后由 89444640 于 2020-8-16 16:39 编辑 SailCat 发表于 2020-8-16 16:14 对,确实默认是这么设置的,不过问题就是比较麻烦,万一上着班干活脑子抽了就该出错了,所以用脚本写使其绝对化,更方便吧? 比如在脚本里给敌人注释"自身属性"=>["木"],就直接调用了脚本里定义的木属性的规则, 这样就不用数据库里来回来去的勾了XD。 然后还有个问题,我觉得50%加上波动有时候伤害还是挺高的,尤其是角色魔攻上来以后,克制再继续加容易伤害破表,那么克制时候我能不能让效果更明显一些,比如木属性打金只有10%的伤害而不是50%,这样视觉上能差一位数,就不会有人拿着抵抗属性磨血去了吧? |
参与人数 1 | 赞 +1 | 收起 理由 |
---|---|---|
miantouchi | + 1 | 我很赞同 |
本帖最后由 SailCat 于 2020-8-16 16:20 编辑 五行的系统是很复杂的,因为每一个属性会同时受到其他4个属性的影响,同时还不能受到自身属性的影响 但是这个需求并不需要更改脚本中的属性修正设置 本质上只通过数据库设置就能解决了 例如: 金属性的生克关系是:金克木,火克金,金生水,土生金 从金的角度来看就是: 金克制木(攻击木属性等于攻击弱点,但被木属性攻击可以抵抗) 金被火克制(受到火属性攻击有弱点,但攻击火属性会被对方抵抗) 金生水(攻击水属性效果会被对方吸收,但被水属性攻击是普通效果) 金被土发生(受到土属性攻击能够吸收,但攻击土属性是普通效果) 体现在属性的设置上就是 金属性体质: 对金为E(受到本命属性攻击0%受伤,即无效) 对火为A(受到火属性攻击200%受伤) 对土为F(受到土属性攻击-100%受伤) 对水为C(受到水属性攻击没有加成) 对木为D(受到木属性攻击50%受伤) 体质 金 木 水 火 土 对 金 E A F D C 对 木 D E C F A 对 水 C F E A D 对 火 A C D E F 对 土 F D A C E 脚本的修改:当五行的属性某项被设置为E(5)时,显示为其本命属性。 需要记住的就是每一个特定五行的角色或者敌人都需要设置出对应的ACDEF项,不过你可以通过复制敌人模板来防止设定出错。 |
参与人数 2 | 星屑 +40 | 赞 +1 | 收起 理由 |
---|---|---|---|
RyanBern | + 40 | 我很赞同 | |
miantouchi | + 1 | 精品文章 |
本帖最后由 灯笼菜刀王 于 2020-8-15 21:46 编辑 栗子就是这样 def 五行相克(element_set) return 100 if element_set.empty? 自身属性 = self.is_a?(Game_Actor) ? $data_classes[self.class_id].element_ranks : $data_enemies[self.id].element_ranks a = 100 if 自身属性[3] == 4 #[nil,金,木,水,火,土], 3就是水属性为D的设置 a /= 2 if element_set.include?(5) #土属性,双倍伤害 a /= 50 if element_set.include?(4) #火属性,减半 a *= 0 if element_set.include?(3) #水属性,吸收 end #下面一个一个列出属性关系 return a end 这样就做好一个属性相克咯, 而且是口袋妖怪式的相乘计算法, 不是XP的"取伤害最高的那个属性来计算", 不过就是只会计算前面5个属性, 后面的全部无视 不计算其他属性的好处就是, 你用属性来作为某些判断的时候(比如全体化), 不会因此干扰到伤害公式, 否则, 如果是默认的公式, 你把武器同时勾上 全体化和火 那就算是攻击 火F(火属性吸收) 的敌人, 也会因为全体化的默认C而变成普通伤害哦 |
参与人数 2 | 星屑 +80 | 赞 +1 | 收起 理由 |
---|---|---|---|
RyanBern | + 80 | 认可答案 | |
miantouchi | + 1 | 认可答案 |
之前好像有人问过相同的问题... https://rpg.blue/thread-303762-1-1.html |
miantouchi 发表于 2020-8-13 21:28 帮忙整个例子被,一点也不会设计这个东西。 |
灯笼菜刀王 发表于 2020-8-12 21:56 改,Game_Actor和Game_Enemy里面的这个数组对吧 table = [0,200,150,100,50,0,-100] |
# 属性修正 self.damage *= elements_correct(attacker.element_set) self.damage /= 100 |
灯笼菜刀王 发表于 2020-8-12 21:25 def attack_effect(attacker) 这里写? |
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2024-11-22 23:08
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.