Project1
标题: 如何让武器默认的属性ID不是-1?(元素武器打不出元素效果 [打印本页]
作者: 白色幸福 时间: 2020-10-11 23:37
标题: 如何让武器默认的属性ID不是-1?(元素武器打不出元素效果 好像一般武器在使用的时候,取修正值会默认使用那个普通攻击,在一些多属性游戏里面伤害夸张不说,效果也不好。
我自己使用的是abs系统,今天加了一个攻击会显示属性彩色数字的功能,但无论如何调整,给武器附魔也好,武器自带元素也好,造成的效果一直都是属性ID取-1,根本没有任何元素伤害。
个人魔改的脚本如下,请教了一位巨佬,不过他不是经常有时间。个人了解了武器攻击使用的是1号技能,且默认id为-1
class Game_Battler < Game_BattlerBase
def make_damage_value( user, item)
$元素显示=false
$元素ID=0
value = item.damage .eval ( user, self , $game_variables )
value *= pdr if item.physical ?#物理
value *= mdr if item.magical ?#法术
value *= rec if item.damage .recover ?#吸取
value = apply_critical( value) if @result .critical #暴击
value = apply_variance( value, item.damage .variance ) #
value = apply_guard( value) #防御
$元素显示= true if item.damage .element_id !=1 or item.damage .element_id !=0
$元素ID = item.damage .element_id if item.damage .element_id !=1 or item.damage .element_id !=0
p value
p $元素ID
class Game_Battler < Game_BattlerBase
def make_damage_value( user, item)
$元素显示=false
$元素ID=0
value = item.damage .eval ( user, self , $game_variables )
value *= pdr if item.physical ?#物理
value *= mdr if item.magical ?#法术
value *= rec if item.damage .recover ?#吸取
value = apply_critical( value) if @result .critical #暴击
value = apply_variance( value, item.damage .variance ) #
value = apply_guard( value) #防御
$元素显示= true if item.damage .element_id !=1 or item.damage .element_id !=0
$元素ID = item.damage .element_id if item.damage .element_id !=1 or item.damage .element_id !=0
p value
p $元素ID
该脚本下p到的武器攻击元素ID为-1 改成物理[e_id=1]或者无属性[e_id=0]之后取值一直是1和0.
作者: alexncf125 时间: 2020-10-11 23:37
本帖最后由 alexncf125 于 2020-10-12 13:25 编辑
改好了, 把9L脚本其中一部分替换成这样 unless [0, 1].include?(item.damage.element_id)
$元素显示= true
if user.is_a?(Game_Actor) && item.id == user.attack_skill_id
begin
for i in 0..user.equips[0].features.size - 1
if user.equips[0].features[i].code == 31
$元素ID = user.equips[0].features[i].data_id
end
end
rescue
$元素ID = item.damage.element_id
end
else
$元素ID = item.damage.element_id
end
end
p value
p $元素ID 复制代码
作者: 白色幸福 时间: 2020-10-11 23:44
自己项目要上steam糊口的,因此很着急解决问题,想做快做好,否则要被家长赶出去硬着头皮找工作了; 我知道rm做大型项目吃亏,但现在做都做了就尽善尽美吧
所以重金求解决 我自己的项目目前就我一个人和大佬有脚本监督,其他没有人了
大佬给的思路是在图下 不过我一个文科生逻辑上绕不过来,他也觉得讲多了没意思外加没时间 希望有人能直接解决一下问题,谢谢了
作者: 白色幸福 时间: 2020-10-11 23:47
个人逻辑巨差无比,灵能编程,社交废物,美术前期和文案策划出身,还望各位巨佬海涵。
作者: alexncf125 时间: 2020-10-12 00:18
那位大佬该不会是kafuu chino吧?
作者: 白色幸福 时间: 2020-10-12 00:43
他没空。
我们合作关系,我给他美术素材 他教我脚本。
不过他主要是想让我自己琢磨透了。我很谢谢他,不过我现在着急糊口饭吃,美术我没法教别人,只能给现成的。
他觉得给我现成的不如让我自己学会逻辑思考,可我从小数学不及格到大学毕业(我学美术的。)。
跟他稍微有点拌嘴,但也是朋友关系,不过我觉得互相研究不透耽误事,还不如来论坛给钱办事吧
作者: soulsaga 时间: 2020-10-12 00:46
即使属性ID为-1也没有影响吧?
默认最终还是会取武器上的属性啊..难道不是吗?
作者: alexncf125 时间: 2020-10-12 01:05
本帖最后由 alexncf125 于 2020-10-12 01:40 编辑
kafuu chino大佬教的只有他自己明白
我都不明白他在说什么
加个Yanfly的「装备不同的武器使用普攻时, 普攻转换成不同的技能」脚本就是了
https://yanflychannel.wordpress. ... pon-attack-replace/
又或者试试
unless [ 0 , 1 ] .include ?( item.damage .element_id )
$元素显示= true
if user.is_a ?( Game_Actor) && item.id == user.attack_skill_id
begin
$元素ID = user.equips [ 0 ] .features [ 0 ] .data_id
rescue
$元素ID = item.damage .element_id
end
else
$元素ID = item.damage .element_id
end
end
unless [ 0 , 1 ] .include ?( item.damage .element_id )
$元素显示= true
if user.is_a ?( Game_Actor) && item.id == user.attack_skill_id
begin
$元素ID = user.equips [ 0 ] .features [ 0 ] .data_id
rescue
$元素ID = item.damage .element_id
end
else
$元素ID = item.damage .element_id
end
end
作者: 白色幸福 时间: 2020-10-12 11:00
并没有啊·1,我截图给你看
作者: alexncf125 时间: 2020-10-12 11:17
本帖最后由 alexncf125 于 2020-10-12 11:26 编辑
我用VA默认脚本测试时, 不会p出-1, 会p出武器的特性的"攻击的属性"的IDclass Game_Battler < Game_BattlerBase
def make_damage_value( user, item)
$元素显示=false
$元素ID=0
value = item.damage .eval ( user, self , $game_variables )
value *= pdr if item.physical ?#物理
value *= mdr if item.magical ?#法术
value *= rec if item.damage .recover ?#吸取
value = apply_critical( value) if @result .critical #暴击
value = apply_variance( value, item.damage .variance ) #
value = apply_guard( value) #防御
unless [ 0 , 1 ] .include ?( item.damage .element_id )
$元素显示= true
if user.is_a ?( Game_Actor) && item.id == user.attack_skill_id
begin
$元素ID = user.equips [ 0 ] .features [ 0 ] .data_id
rescue
$元素ID = item.damage .element_id
end
else
$元素ID = item.damage .element_id
end
end
p value
p $元素ID
@result .make_damage ( value.to_i , item)
end
end
class Game_Battler < Game_BattlerBase
def make_damage_value( user, item)
$元素显示=false
$元素ID=0
value = item.damage .eval ( user, self , $game_variables )
value *= pdr if item.physical ?#物理
value *= mdr if item.magical ?#法术
value *= rec if item.damage .recover ?#吸取
value = apply_critical( value) if @result .critical #暴击
value = apply_variance( value, item.damage .variance ) #
value = apply_guard( value) #防御
unless [ 0 , 1 ] .include ?( item.damage .element_id )
$元素显示= true
if user.is_a ?( Game_Actor) && item.id == user.attack_skill_id
begin
$元素ID = user.equips [ 0 ] .features [ 0 ] .data_id
rescue
$元素ID = item.damage .element_id
end
else
$元素ID = item.damage .element_id
end
end
p value
p $元素ID
@result .make_damage ( value.to_i , item)
end
end
作者: 白色幸福 时间: 2020-10-12 11:29
本帖最后由 白色幸福 于 2020-10-12 11:36 编辑
可能是我武器不是纯元素吧……
默认带了物理这个【属性】,估计是系统又自动计算物理了
看样子只要武器带了物理这个属性就按物理算吧 毕竟取最大值啊
没成功,依旧是走的物理 取消了物理属性走的也是物理
作者: 白色幸福 时间: 2020-10-12 11:42
我这边一直是-1,0,1,就是没有属性效果。【改1号技能为普通攻击,无,物理】
不知道是不是因为ABS系统武器默认使用的一个 工具技能 = 0 这个原因,然后角色技能的话的按照技能属性算的
武器却直接使用了1号技能【攻击】
如果是这样的话,那只能做一堆弹头来跳板了
作者: 白色幸福 时间: 2020-10-12 11:55
本帖最后由 白色幸福 于 2020-10-12 11:59 编辑
我没成功 默认脚本元素武器打出来依旧是直接按1号技能走的 要是你也在老猫群里咱俩qq交流吧 解决了问题星屑就给你 游戏我也会给你一份的
我不知道是不是ABS默认武器就锁一号技能了,要是的话就只能靠跳板解决了
作者: 白色幸福 时间: 2020-10-12 12:06
元素ID。
作者: 白色幸福 时间: 2020-10-12 13:05
本帖最后由 白色幸福 于 2020-10-12 13:09 编辑
很感谢了,现在武器有自己的属性了。
不过我还有一个问题没能解决,目前我做了一个元素混伤机制,如火加雷能打出辐射。通过装备给武器附魔。
脚本是这样的:
if self .state ?( 35 ) and self .state ?( 36 ) #火焰+寒冰产生爆炸
self .add_state ( 30 )
self .remove_state ( 35 )
self .remove_state ( 36 )
value *= self .element_rate ( 12 )
elsif self .state ?( 30 )
value *= self .element_rate ( 12 )
elsif self .state ?( 35 ) and self .state ?( 37 ) #火焰+雷电产生辐射
self .add_state ( 41 )
self .remove_state ( 35 )
self .remove_state ( 36 )
value *= self .element_rate ( 11 )
elsif self .state ?( 41 )
value *= self .element_rate ( 11 )
elsif self .state ?( 35 ) and self .state ?( 27 ) #火焰+深渊产生罪业
self .add_state ( 31 )
self .remove_state ( 35 )
self .remove_state ( 27 )
value *= self .element_rate ( 13 )
elsif self .state ?( 31 )
value *= self .element_rate ( 13 )
elsif self .state ?( 36 ) and self .state ?( 2 ) #毒素+冰产生侵蚀
self .add_state ( 40 )
value *= self .element_rate ( 16 )
self .remove_state ( 2 )
self .remove_state ( 36 )
elsif self .state ?( 40 )
value *= self .element_rate ( 16 )
elsif self .state ?( 49 ) and self .state ?( 27 ) #深渊+神圣产生伪光
self .add_state ( 50 )
value *= self .element_rate ( 15 )
self .remove_state ( 27 )
self .remove_state ( 49 )
elsif self .state ?( 50 )
value *= self .element_rate ( 15 )
else
value *= item_element_rate( user, item)
end
if self .state ?( 35 ) and self .state ?( 36 ) #火焰+寒冰产生爆炸
self .add_state ( 30 )
self .remove_state ( 35 )
self .remove_state ( 36 )
value *= self .element_rate ( 12 )
elsif self .state ?( 30 )
value *= self .element_rate ( 12 )
elsif self .state ?( 35 ) and self .state ?( 37 ) #火焰+雷电产生辐射
self .add_state ( 41 )
self .remove_state ( 35 )
self .remove_state ( 36 )
value *= self .element_rate ( 11 )
elsif self .state ?( 41 )
value *= self .element_rate ( 11 )
elsif self .state ?( 35 ) and self .state ?( 27 ) #火焰+深渊产生罪业
self .add_state ( 31 )
self .remove_state ( 35 )
self .remove_state ( 27 )
value *= self .element_rate ( 13 )
elsif self .state ?( 31 )
value *= self .element_rate ( 13 )
elsif self .state ?( 36 ) and self .state ?( 2 ) #毒素+冰产生侵蚀
self .add_state ( 40 )
value *= self .element_rate ( 16 )
self .remove_state ( 2 )
self .remove_state ( 36 )
elsif self .state ?( 40 )
value *= self .element_rate ( 16 )
elsif self .state ?( 49 ) and self .state ?( 27 ) #深渊+神圣产生伪光
self .add_state ( 50 )
value *= self .element_rate ( 15 )
self .remove_state ( 27 )
self .remove_state ( 49 )
elsif self .state ?( 50 )
value *= self .element_rate ( 15 )
else
value *= item_element_rate( user, item)
end
不过现在没有这个效果 走的还是武器原本的属性233 即使敌人被挂上了buff
通过这个东西来实现附魔 不过现在打出去就有个buff 混伤没成
作者: alexncf125 时间: 2020-10-12 13:45
本帖最后由 alexncf125 于 2020-10-13 21:44 编辑
白色幸福 发表于 2020-10-12 13:05
很感谢了,现在武器有自己的属性了。
不过我还有一个问题没能解决,目前我做了一个元素混伤机制,如火加 ...
你看看在那堆value *= self.element_rate(x)
下一行加句p self.element_rate(x)会p出什么
或者
if user.is_a?(Game_Actor) && item.id == user.attack_skill_id &&user.armors.include?($data_armors[88])) #敌人没这效果的吧?
if self.state?(35) && self.state?(37)#火焰+雷电产生辐射
self.add_state(41)
self.remove_state(35)
self.remove_state(37) #话说15L脚本的第12行写错成36了
value *= self.element_rate(10)
elsif self.state?(41)
value *= self.element_rate(10)
end
end
如果self是被攻击的敌人, 我图中设了Dark(ID:10) 200%,
p self.element_rate(10)会是2.0
作者: alexncf125 时间: 2020-10-12 15:21
本帖最后由 alexncf125 于 2020-10-12 16:22 编辑
unless [ 0 , 1 ] .include ?( item.damage .element_id )
$元素显示= true
if user.is_a ?( Game_Actor) && item.id == user.attack_skill_id
for a in 0 ..user .equips .size - 1
for i in 0 ..user .equips [ a] .features .size - 1
if user.equips [ a] .features [ i] .code == 31
$元素ID = user.equips [ a] .features [ i] .data_id
end
end
end
end
$元素ID = item.damage .element_id if $元素ID == 0
end
p value
p $元素ID
unless [ 0 , 1 ] .include ?( item.damage .element_id )
$元素显示= true
if user.is_a ?( Game_Actor) && item.id == user.attack_skill_id
for a in 0 ..user .equips .size - 1
for i in 0 ..user .equips [ a] .features .size - 1
if user.equips [ a] .features [ i] .code == 31
$元素ID = user.equips [ a] .features [ i] .data_id
end
end
end
end
$元素ID = item.damage .element_id if $元素ID == 0
end
p value
p $元素ID
$元素ID返回在装备栏中, 最后一项(栏)有"攻击的属性"特性的装备的"攻击的属性"的ID
即是如果武器有"攻击的属性", 头又有"攻击的属性", 就返回头的
如果武器有"攻击的属性", 头有"攻击的属性", 装飾又有"攻击的属性", 就返回装飾的
其实好像不应该用begin rescue, 我把它们换了
作者: 白色幸福 时间: 2020-10-12 16:09
作者: alexncf125 时间: 2020-10-12 16:36
本帖最后由 alexncf125 于 2020-10-12 16:41 编辑
我忽略了没装备的情況
unless [0, 1].include?(item.damage.element_id)
$元素显示= true
if user.is_a?(Game_Actor) && item.id == user.attack_skill_id
for a in 0..user.equips.size - 1
unless user.equips[a].nil? #加了这句
for i in 0..user.equips[a].features.size - 1
if user.equips[a].features[i].code == 31 #这里我之前写了equips[0], 修改成equips[a]
$元素ID = user.equips[a].features[i].data_id #这里我之前写了equips[0], 修改成equips[a]
end
end
end #加了这句
end
end
$元素ID = item.damage.element_id if $元素ID == 0
end
p value
p $元素ID 复制代码
作者: 白色幸福 时间: 2020-10-12 17:35
本帖最后由 白色幸福 于 2020-10-12 19:09 编辑
@alexncf125
我截图就好说了
这个是武器基础的面板 我有一个给武器附加了13号属性的护甲
装备附魔石之后是图下这个
元素id为4 (最后装的4号元素附魔)新的附魔会盖住旧的,但是攻击目标附加的buff还在
每一个buff也做了一个相应的属性:
在kafuu的帮助下写的系统是 燃烧+冰冻 = 爆炸 敌人有爆炸buff时候 处理爆炸这个属性倍率
于是有那个5.0的倍率
但我一开始想的是直接把武器属性变成爆炸 属性的。现在明显能看到控制台p出的属性ID还是3,
但伤害已经翻倍了
这个我想解决掉。
p的分别是 伤害 元素ID 倍率
作者: 白色幸福 时间: 2020-10-12 19:57
本帖最后由 白色幸福 于 2020-10-12 20:02 编辑
我用个土方法改了效果了
挂buff的时候给$元素ID赋值 不知道会不会有啥问题 不过视觉上没问题了
作者: alexncf125 时间: 2020-10-12 20:31
本帖最后由 alexncf125 于 2020-10-12 20:49 编辑
1087.0 #伤害
4 #元素ID
5.0 #倍率
3
0
2 复制代码
所以3 0 2是啥?
但我一开始想的是直接把武器属性变成爆炸 属性的。
用Hime的特性条件
https://himeworks.com/2013/07/feature-conditions/
这个https://himeworks.com/2014/01/attack-element-modifiers/ 也可以參考看看
这个好像会把你说的最大值改为乘法(一大堆英文我也看不太懂)
其次可否把那些专有名词写得能容易明白些?
例如, 附魔写"攻击附加属性" / 元素写"属性" / buff写"状态" / 倍率写成"属性抗性"
又比如"燃烧+冰冻 = 爆炸 敌人有爆炸buff时候 处理爆炸这个属性倍率"这句
写成"当敌人有燃烧状态和冰冻状态, 或敌人有爆炸状态时, 造成的伤害*=敌人对于爆炸属性的属性抗性"
标点符号也麻烦写齊
作者: 白色幸福 时间: 2020-10-12 23:11
他的第二个好像就是备注,备注一个 <attack element: fire 0.7>这样的 攻击附带的属性 属性名字 倍率
能够做到混合伤害 这样
至于 特性条件那个 我没有看太懂 我找找群里有没有汉化吧。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1