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

Project1

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

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

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
63 小时
注册时间
2009-3-25
帖子
38
跳转到指定楼层
1
发表于 2014-4-4 23:56:24 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

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

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

以上,请指教,谢谢!

Lv3.寻梦者

梦石
0
星屑
4594
在线时间
476 小时
注册时间
2013-2-13
帖子
53
2
发表于 2014-4-5 03:19:33 | 只看该作者
本帖最后由 聆语 于 2014-4-5 03:26 编辑

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

点评

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

使用道具 举报

Lv1.梦旅人

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

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

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
120
在线时间
486 小时
注册时间
2007-5-27
帖子
807
4
发表于 2014-4-5 09:13:05 | 只看该作者
本帖最后由 紫苍焰 于 2014-4-5 09:22 编辑

……






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

使用道具 举报

Lv1.梦旅人

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

点评

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

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

6
发表于 2014-4-5 10:56:29 | 只看该作者
本帖最后由 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

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
63 小时
注册时间
2009-3-25
帖子
38
7
 楼主| 发表于 2014-4-5 11:56:48 | 只看该作者
taroxd 发表于 2014-4-5 10:56
未经仔细测试

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

点评

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

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
63 小时
注册时间
2009-3-25
帖子
38
8
 楼主| 发表于 2014-4-5 13:35:12 | 只看该作者
taroxd 发表于 2014-4-5 10:56
未经仔细测试

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

请让我修改下思路:

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

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

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

点评

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

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

9
发表于 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
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
120
在线时间
486 小时
注册时间
2007-5-27
帖子
807
10
发表于 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 感谢帮忙

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-24 00:36

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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