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

Project1

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

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

[复制链接]

Lv3.寻梦者

梦石
0
星屑
4537
在线时间
679 小时
注册时间
2013-1-18
帖子
709
跳转到指定楼层
1
发表于 2024-1-10 18:17:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我制作了一些提升上限的道具,比如攻击,防御一类的药水。
在效果一栏我选择的是“成长”。使用也确实有效果。
但是这个效果只能玩家再去状态里面看,使用的时候画面没有任何数值的变化。
请问怎样可以在使用时,让玩家直观地看到能力数值的变化呢?

Lv5.捕梦者

梦石
0
星屑
33238
在线时间
10501 小时
注册时间
2009-3-15
帖子
4757
2
发表于 2024-1-10 18:33:50 | 只看该作者
加文章显示
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
21
在线时间
6 小时
注册时间
2024-1-10
帖子
1
3
发表于 2024-1-10 18:45:14 | 只看该作者
显示文字可以自己写
回复 支持 反对

使用道具 举报

Lv3.寻梦者

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

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4537
在线时间
679 小时
注册时间
2013-1-18
帖子
709
5
 楼主| 发表于 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

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

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3911
在线时间
997 小时
注册时间
2016-12-6
帖子
370
6
发表于 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]!
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33238
在线时间
10501 小时
注册时间
2009-3-15
帖子
4757
7
发表于 2024-1-10 21:01:19 | 只看该作者
本帖最后由 soulsaga 于 2024-1-10 21:56 编辑

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

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4537
在线时间
679 小时
注册时间
2013-1-18
帖子
709
8
 楼主| 发表于 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点攻击力了。
这是我的想法。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3911
在线时间
997 小时
注册时间
2016-12-6
帖子
370
9
发表于 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
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-7 23:07

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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