Project1

标题: 持有物品时获得技能,失去物品时遗忘技能 [打印本页]

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

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

以上,请指教,谢谢!
作者: 聆语    时间: 2014-4-5 03:19
本帖最后由 聆语 于 2014-4-5 03:26 编辑

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

……
使用型的物品,直接闹一个状态,在里面选择添加技能就可以了,用不着公共事件。
如果只是要在战斗中才能获得那个技能,只要给物品的使用场合选成仅战斗中,然后给状态加一个战斗结束解除就好……
作者: 紫苍焰    时间: 2014-4-5 09:13
本帖最后由 紫苍焰 于 2014-4-5 09:22 编辑

……






以上。
虽然能力不足无法使用的效果还需要脚本或者公共事件,不过其他功能通过编辑器本身就能简单实现。
作者: tottoyea    时间: 2014-4-5 10:13
谢谢楼上的各位。
通过公共事件是可以实现的,但是当物品和技能很多的时候就会悲剧……这就是为什么我在1L写了【写一个脚本】;
@紫苍焰,你给的方法是【使用某物品时获得某技能】,我希望实现的是【持有某物品时获得某技能】……不过还是感谢!


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



未经仔细测试
RUBY 代码复制
  1. # 在角色处备注 <add skill x by y> 表示当持有道具y时习得技能x
  2.  
  3. class RPG::Actor < RPG::BaseItem
  4.   def add_skill_item
  5.     @add_skill_item ||=
  6.     @note.scan(/<add\s*skill\s*(\d+)\s*by\s*(\d+)>/i).map {|(s, i)|
  7.       [s.to_i, $data_items[i.to_i]] }
  8.   end
  9. end
  10.  
  11. class Game_Actor < Game_Battler
  12.   alias added_skills_without_item added_skills
  13.   def added_skills
  14.     added_skills_without_item | actor.add_skill_item.select {|(_, item)|
  15.       $game_party.has_item?(item) }.map(&:first)
  16.   end
  17. end

作者: tottoyea    时间: 2014-4-5 11:56
taroxd 发表于 2014-4-5 10:56
未经仔细测试

非常感谢!这就去试!:)
作者: tottoyea    时间: 2014-4-5 13:35
taroxd 发表于 2014-4-5 10:56
未经仔细测试

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

请让我修改下思路:

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

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

以上,请再帮忙看看,谢谢!
作者: taroxd    时间: 2014-4-5 13:38
本帖最后由 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 15:19
tottoyea 发表于 2014-4-5 10:13
谢谢楼上的各位。
通过公共事件是可以实现的,但是当物品和技能很多的时候就会悲剧……这就是为什么我在1L ...

……
表示用公共事件直接添加技能或者通过添加状态来控制都差不多……
另外,我记得有个被动技能脚本貌似可以来做这个,只要把触发条件改成判定物品ID……
虽然目前那个脚本只能添加一个状态……
http://rpg.blue/thread-251357-1-1.html
就是这里,可以稍微研究一下,利用不同变量做多个,并且可以给队伍里每个人都添加上状态……
以上……
作者: 紫苍焰    时间: 2014-4-5 15:30
taroxd 发表于 2014-4-5 13:38
你是得要多少拥有道具才能学会的技能啊……

思路1:付完了就删不掉了=。= 习得技能之后,通过道具习得的 ...


……跟你说了通过状态添加,到时候解除掉对应状态就没那个技能了……
作者: 紫苍焰    时间: 2014-4-5 15:32
本帖最后由 紫苍焰 于 2014-4-5 15:34 编辑
taroxd 发表于 2014-4-5 13:38
你是得要多少拥有道具才能学会的技能啊……

思路1:付完了就删不掉了=。= 习得技能之后,通过道具习得的 ...


……
跟你说了通过状态添加,到时候解除状态那个技能就没了,再习得只需要再次附加那个状态就搞定……
表示到这个程度好像已经呼之欲出了啊喂……
作者: tottoyea    时间: 2014-4-5 16:28
紫苍焰 发表于 2014-4-5 15:19
……
表示用公共事件直接添加技能或者通过添加状态来控制都差不多……
另外,我记得有个被动技能脚本貌似 ...

大概意思我明白了,正在按这个思路研究呢,别着急……
状态->技能那部分我看懂了,现在的问题变成了如何实现【拥有某物品时拥有某状态】……所以在看那个被动技能的帖子呢,谢谢!
作者: 紫苍焰    时间: 2014-4-5 16:37
tottoyea 发表于 2014-4-5 16:28
大概意思我明白了,正在按这个思路研究呢,别着急……
状态->技能那部分我看懂了,现在的问题变成了如何 ...

……
另外,通过技能公式可以给技能使用者添加状态,也就是可以用来做冷却……
非常简单的说……
作者: taroxd    时间: 2014-4-5 16:59
本帖最后由 taroxd 于 2014-4-5 17:00 编辑
紫苍焰 发表于 2014-4-5 16:37
……
另外,通过技能公式可以给技能使用者添加状态,也就是可以用来做冷却……
非常简单的说…… ...


赐教一下如何非常简单地做出【拥有某物品时拥有某状态】效果,能比写一行备注简单?
作者: 紫苍焰    时间: 2014-4-5 17:11
taroxd 发表于 2014-4-5 16:59
赐教一下如何非常简单地做出【拥有某物品时拥有某状态】效果,能比写一行备注简单? ...

我是说用状态做技能冷却很简单……

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

设置物品在战斗中的消耗
作者: tottoyea    时间: 2014-4-5 22:23
3106345123 发表于 2014-4-5 20:13
设置物品在战斗中的消耗

非常感谢!!
这样一来就简单多了~

也谢谢其他回帖的各位:)




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1