查看: 5434|回复: 17

[已经解决] 持有物品时获得技能,失去物品时遗忘技能

[复制链接]
梦石
0
星屑
50
在线时间
63 小时
注册时间
2009-3-25
回帖
28
发表于 2014-4-4 23:56:24 | 显示全部楼层 |阅读模式

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

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

×
可否帮忙写一个脚本,实现如下功能:
检查当前持有哪些物品,当持有某物品时就获得某技能(如与该物品id相同的技能);
而当失去该物品时,就遗忘相应技能?

或者更极端一点,不管技能了。能否实现使用物品时会消耗MP/SP?:)且当MP/SP不足时无法使用该物品?

以上,请指教,谢谢!
梦石
0
星屑
4594
在线时间
476 小时
注册时间
2013-2-13
回帖
45
发表于 2014-4-5 03:19:33 | 显示全部楼层
本帖最后由 聆语 于 2014-4-5 03:26 编辑

Orz同是新手,我来回答问题吧。你要是会脚本,自己改是可以的。(可惜我不会_(:з」∠)_)
既然不会的话,还是好好研究制作工具吧。
你问的问题,可以通过“公共事件”来实现。
1,物品在,有技能。
设置一个“并行处理”的“公共事件”,关于“是否有此物品”的“分支条件”。如果是不常见的物品,可以在第一次得到时开启一个开关(作为“条件开关”用),然后此公共事件的开启条件就是这个开关。
如图: 1.jpg
如果是普通的常见物品,那么推荐一进游戏就设置事件,自动执行、打开开关(第二页还有没有事就随你了),执行“并行处理”的公共事件。
2,使用物品
这个说实话还方便点吧……直接代入“自动执行”的公共事件就行了。物品设置为不消耗?什么的?这个就看你的想法了。
物品的“使用效果”可以用公共事件真是太好了。
---
嗯,虽然是先回答了。但是如果你是大量的使用这种方式来调用技能和物品的话,或者想要系统更智能一点,那么还是推荐找个会脚本的好人或者自己学脚本。因为一起执行的事件多了,游戏会卡的。
不过因为这种原因卡的游戏我暂时还没见到过。也只是听说“会卡”这件事。

点评

……物品的话,可以通过状态来实现添加技能的效果……状态持续几回合技能就存在几回合……武器或者装备的话,直接附加添加技能,装备上就行。  发表于 2014-4-5 09:24
回复

使用道具 举报

梦石
0
星屑
125
在线时间
486 小时
注册时间
2007-5-27
回帖
788
发表于 2014-4-5 09:11:36 | 显示全部楼层
聆语 发表于 2014-4-5 03:19
Orz同是新手,我来回答问题吧。你要是会脚本,自己改是可以的。(可惜我不会_(:з」∠)_)
既然不会的话, ...

……
使用型的物品,直接闹一个状态,在里面选择添加技能就可以了,用不着公共事件。
如果只是要在战斗中才能获得那个技能,只要给物品的使用场合选成仅战斗中,然后给状态加一个战斗结束解除就好……
回复

使用道具 举报

梦石
0
星屑
125
在线时间
486 小时
注册时间
2007-5-27
回帖
788
发表于 2014-4-5 09:13:05 | 显示全部楼层
本帖最后由 紫苍焰 于 2014-4-5 09:22 编辑

……
物品-魔道相对论.png


状态-魔所.png


以上。
虽然能力不足无法使用的效果还需要脚本或者公共事件,不过其他功能通过编辑器本身就能简单实现。
回复

使用道具 举报

梦石
0
星屑
50
在线时间
63 小时
注册时间
2009-3-25
回帖
28
 楼主| 发表于 2014-4-5 10:13:07 | 显示全部楼层
谢谢楼上的各位。
通过公共事件是可以实现的,但是当物品和技能很多的时候就会悲剧……这就是为什么我在1L写了【写一个脚本】;
@紫苍焰,你给的方法是【使用某物品时获得某技能】,我希望实现的是【持有某物品时获得某技能】……不过还是感谢!

点评

…… 好像通过脚本判断条件附加\解除状态可以很方便的实现……  发表于 2014-4-5 15:38
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-4-5 10:56:29 | 显示全部楼层
本帖最后由 taroxd 于 2014-4-5 11:47 编辑
tottoyea 发表于 2014-4-5 10:13
谢谢楼上的各位。
通过公共事件是可以实现的,但是当物品和技能很多的时候就会悲剧……这就是为什么我在1L ...



未经仔细测试
[pre lang="ruby" line="1"]

# 在角色处备注 <add skill x by y> 表示当持有道具y时习得技能x

class RPG::Actor < RPG::BaseItem
  def add_skill_item
    @add_skill_item ||=
    @note.scan(/<add\s*skill\s*(\d+)\s*by\s*(\d+)>/i).map {|(s, i)|
      [s.to_i, $data_items[i.to_i]] }
  end
end

class Game_Actor < Game_Battler
  alias added_skills_without_item added_skills
  def added_skills
    added_skills_without_item | actor.add_skill_item.select {|(_, item)|
      $game_party.has_item?(item) }.map(&:first)
  end
end[/pre]

评分

参与人数 1梦石 +1 收起 理由
Sion + 1 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
50
在线时间
63 小时
注册时间
2009-3-25
回帖
28
 楼主| 发表于 2014-4-5 11:56:48 | 显示全部楼层
taroxd 发表于 2014-4-5 10:56
未经仔细测试

非常感谢!这就去试!:)

点评

有bug麻烦回复一下,谢谢!  发表于 2014-4-5 12:39
回复

使用道具 举报

梦石
0
星屑
50
在线时间
63 小时
注册时间
2009-3-25
回帖
28
 楼主| 发表于 2014-4-5 13:35:12 | 显示全部楼层
taroxd 发表于 2014-4-5 10:56
未经仔细测试

测试成功。不过当道具很多时,给角色增加大量备注也不是最优解……

请让我修改下思路:

1、我想在战斗开始时,触发一个公共事件,该公共事件可以检查当前持有的物品,然后将相应的技能一次性全部付给1号队员。

2、战斗中1号队员使用技能时,我会减少相应的物品数量,【同时检查该物品的数量,如果为0就遗忘相应的技能】(这个我用事件应该可以实现,当然如果能通过脚本减小工作量更好……)

以上,请再帮忙看看,谢谢!

点评

都说了别纠结习得\遗忘技能……通过状态更方便有木有啊!  发表于 2014-4-5 15:40
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-4-5 13:38:47 | 显示全部楼层
本帖最后由 taroxd 于 2014-4-5 13:57 编辑
tottoyea 发表于 2014-4-5 13:35
测试成功。不过当道具很多时,给角色增加大量备注也不是最优解……

请让我修改下思路:


你是得要多少拥有道具才能学会的技能啊……

思路1:付完了就删不掉了=。= 习得技能之后,通过道具习得的技能和通过等级习得的技能就没有分别了
思路2可行,这里是个非常不错的脚本 http://rpg.blue/thread-226207-1-1.html (但是使用完之后不会遗忘技能,而只是禁止使用)
如果非要遗忘的话,要实现“再次习得”这个技能就会是一件麻烦的事情
总之,事件和脚本是两码事情,修改脚本并不是让角色”习得“和”遗忘“技能。

而且不管怎么说,备注总归是要的,而且对每一个这样的技能都是要备注一次的,只是备注位置的区别而已。不然我根本不知道你哪些技能是需要道具的。

可以有3个备注位置:角色、道具、技能

角色就是上面的实现
如果备注在技能的话,要让角色首先习得这个技能(比如1级习得),然后在没有物品的时候隐藏这个技能。
这个方式是可以实现的,但相比之下,还是在角色的地方备注更加简明易懂

点评

在状态里写个添加技能就完事,不管角色是否习得都可以使用,状态解除技能随之消失……超简单,而且还可以通过状态里的禁用技能实现技能冷却...  发表于 2014-4-5 16:03
回复

使用道具 举报

梦石
0
星屑
125
在线时间
486 小时
注册时间
2007-5-27
回帖
788
发表于 2014-4-5 15:19:27 | 显示全部楼层
tottoyea 发表于 2014-4-5 10:13
谢谢楼上的各位。
通过公共事件是可以实现的,但是当物品和技能很多的时候就会悲剧……这就是为什么我在1L ...

……
表示用公共事件直接添加技能或者通过添加状态来控制都差不多……
另外,我记得有个被动技能脚本貌似可以来做这个,只要把触发条件改成判定物品ID……
虽然目前那个脚本只能添加一个状态……
http://rpg.blue/thread-251357-1-1.html
就是这里,可以稍微研究一下,利用不同变量做多个,并且可以给队伍里每个人都添加上状态……
以上……

评分

参与人数 1梦石 +1 收起 理由
Sion + 1 感谢帮忙

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部