查看: 1078|回复: 10

[有事请教] 如何让提升上限的道具,在使用时可以直观看到数值变化?

[复制链接]
梦石
0
星屑
5269
在线时间
733 小时
注册时间
2013-1-18
回帖
525
发表于 2024-1-10 18:17:13 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
我制作了一些提升上限的道具,比如攻击,防御一类的药水。
在效果一栏我选择的是“成长”。使用也确实有效果。
但是这个效果只能玩家再去状态里面看,使用的时候画面没有任何数值的变化。
请问怎样可以在使用时,让玩家直观地看到能力数值的变化呢?
梦石
0
星屑
39236
在线时间
11155 小时
注册时间
2009-3-15
回帖
4768
发表于 2024-1-10 18:33:50 | 显示全部楼层
加文章显示
回复

使用道具 举报

梦石
0
星屑
26
在线时间
6 小时
注册时间
2024-1-10
回帖
1
发表于 2024-1-10 18:45:14 | 显示全部楼层
显示文字可以自己写
回复

使用道具 举报

梦石
0
星屑
7009
在线时间
1280 小时
注册时间
2016-12-6
回帖
378
发表于 2024-1-10 18:59:30 | 显示全部楼层
前天刚好有人问了和你差不多的问题,都可以用Drill的Drill_SkillRecorder插件来解决问题
你这需求核心就是要知道使用道具时作用对象的角色ID,知道ID后就可以通过为变量赋值来显示角色的属性
比如你做了一个攻击药水,效果是喝下去的角色攻击力永久+5,你想做个预览,就是道具使用后调用公共事件
然后通过这个插件获取作用角色的ID,然后借助脚本$gameActors.actor(n).atk获取作用角色的攻击力属性,再+5就是预览值了

回复

使用道具 举报

梦石
0
星屑
5269
在线时间
733 小时
注册时间
2013-1-18
回帖
525
 楼主| 发表于 2024-1-10 19:30:25 | 显示全部楼层
本帖最后由 nhycs01 于 2024-1-10 19:42 编辑
shiroin 发表于 2024-1-10 18:59
前天刚好有人问了和你差不多的问题,都可以用Drill的Drill_SkillRecorder插件来解决问题
你这需求核心就是 ...


大佬,你的方法听起来是可行的。
我用插件里面的“上一个使用者ID”,随便设置了一个变量:279
然后我设置了攻击药水,使用后调用公共事件,接着公用事件里选“增减能力值”变量279,攻击力+5
然后脚本:$gameActors.actor(n).atk
接着文字显示:\v[279] +5

运行游戏,使用道具后出错。是不是我写的不对?大佬能不能帮我写一个例子?万分感谢!
回复

使用道具 举报

梦石
0
星屑
7009
在线时间
1280 小时
注册时间
2016-12-6
回帖
378
发表于 2024-1-10 20:22:32 | 显示全部楼层
nhycs01 发表于 2024-1-10 19:30
大佬,你的方法听起来是可行的。
我用插件里面的“上一个使用者ID”,随便设置了一个变量:279
然后我设 ...

你直接写$gameActors.actor(n).atk当然会报错了……n是一个没有被定义的值是要你替换或加以定义的
按你这个需求,你是需要两个变量来分别记录角色名称和属性的
既然你把作用对象ID赋值给了279号变量,那可以用279号变量计算出增加后的攻击力,同时可以用280号变量来记录角色名称
具体格式参考这个:

◆脚本:var actorId = $gameVariables.value(279);
:  :var actorAtk = $gameActors.actor(actorId).atk + 5;
:  :var actorName = $gameActors.actor(actorId)._name;
:  :$gameVariables.setValue(279, actorAtk);
:  :$gameVariables.setValue(280, actorName)
◆文本:无, 窗口, 底部
:  :\v[280]的攻击力上升至\v[279]!
回复

使用道具 举报

梦石
0
星屑
39236
在线时间
11155 小时
注册时间
2009-3-15
回帖
4768
发表于 2024-1-10 21:01:19 | 显示全部楼层
本帖最后由 soulsaga 于 2024-1-10 21:56 编辑

$gameActors.actor(actorId).atk是已经是提升后了吗?
那么-5就能得到提升前的了?
回复

使用道具 举报

梦石
0
星屑
5269
在线时间
733 小时
注册时间
2013-1-18
回帖
525
 楼主| 发表于 2024-1-10 22:10:09 | 显示全部楼层
本帖最后由 nhycs01 于 2024-1-10 22:14 编辑
shiroin 发表于 2024-1-10 20:22
你直接写$gameActors.actor(n).atk当然会报错了……n是一个没有被定义的值是要你替换或加以定义的
按你这 ...


感谢大佬指点,这次终于成功了。
但是效果看起来,也如楼上所说,如果AAA的攻击力为100,只是显示了:AAA的攻击力上升至105!
如果能有这样的效果就更好了:AAA的攻击力由100提升到了105!

也就是说,让玩家更直观地感受到,实力确实提升了,数值确实增加了。
因为,在使用之前,或许玩家根本没在意当前角色攻击力是多少,看到这个“AAA的攻击力上升至105!”,也只是会想:哦,提升了,之前是多少来的?应该是100吧。
但是,如果是“AAA的攻击力由100提升到了105!”玩家可能会想:嗯……这回输出又多了5点攻击力了。
这是我的想法。
回复

使用道具 举报

梦石
0
星屑
7009
在线时间
1280 小时
注册时间
2016-12-6
回帖
378
发表于 2024-1-10 22:16:17 | 显示全部楼层
nhycs01 发表于 2024-1-10 22:10
感谢大佬指点,这次终于成功了。
但是效果看起来,也如楼上所说,如果AAA的攻击力为100,只是显示了:AAA ...

再加个变量用于记录前后属性嘛,把事件改成这样:

◆脚本:var actorId = $gameVariables.value(279);
:  :var actorAtk = $gameActors.actor(actorId).atk;
:  :var actorName = $gameActors.actor(actorId)._name;
:  :$gameVariables.setValue(279, actorAtk);
:  :$gameVariables.setValue(280, actorName);
:  :$gameVariables.setValue(281, actorAtk + 5)
◆文本:无, 窗口, 底部
:  :\v[280]的攻击力由\v[279]上升至\v[281]!

分别用279号变量和281号变量记录原攻击力和成长后的攻击力方便在文本显示

点评

感谢大佬的耐心指点!  发表于 2024-1-10 22:55
这个脚本只负责显示变化值,并没有考虑是先进行了属性成长还是显示后再附加属性成长效果,这要看你具体的事件写法来修正  发表于 2024-1-10 22:17
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部