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

Project1

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

[RMXP发布] 小功能:技能书

[复制链接]

Lv3.寻梦者

○赛

梦石
0
星屑
1249
在线时间
1276 小时
注册时间
2013-1-22
帖子
2246

贵宾

跳转到指定楼层
1
发表于 2013-12-27 12:32:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
经常会看到有人问RMXP的技能书的技能书怎么制作,回答经常是状态法,但是,如果角色很多的话,用状态法实在太麻烦了,所以就有了这个脚本。
  1. #技能书 by 天地有正气
  2. class Interpreter
  3.   def skill_book(book_id,skill_id,skill_state)
  4.     for i in 0..$game_party.actors.size
  5.       if $game_party.actors[i].states.include?(skill_state)
  6.         i += 1
  7.         if $game_actors[i].skills.include?(skill_id)
  8.           $game_system.se_play($data_system.buzzer_se)
  9.           $game_actors[i].remove_state(skill_state)
  10.           $scene = Scene_Menu.new(0)
  11.           break
  12.         else  
  13.         $game_actors[i].learn_skill(skill_id)
  14.         $game_actors[i].remove_state(skill_state)
  15.         $game_party.gain_item(book_id,-1)
  16.         break
  17.         end
  18.       end  
  19.     end  
  20.   end
  21. end
复制代码
用法:首先设置一个物品名为技能书,不消耗的,附加一个状态。状态随便什么都可以,只是要设为不消耗,定量为0。然后在公共事件里写这句:
skill_book(物品编号,技能编号,状态编号),这样就能学技能了,如果技能书很多怕公共事件太多的话可以用条件分歧判定物品名来减少公共事件。
@protosssonny

评分

参与人数 1星屑 +150 收起 理由
怪蜀黍 + 150 发布奖励

查看全部评分

Lv2.观梦者

梦石
0
星屑
275
在线时间
1373 小时
注册时间
2005-10-16
帖子
5113

贵宾

来自 7楼
发表于 2013-12-28 08:50:43 | 只看该作者
代码逻辑有问题吧

既然循环是以$game_party.actors队列编号为循环依据的,怎么下面又当成了$game_actors角色的编号了

应该直接以$game_party.actors[ i ]作为角色实例的引用。
  1. #技能书 by 天地有正气
  2. class Interpreter
  3.   def skill_book(book_id,skill_id,skill_state)
  4.     for i in 0..$game_party.actors.size
  5.       if $game_party.actors[i].states.include?(skill_state)
  6.         if $game_party.actors[i].skills.include?(skill_id)
  7.           $game_system.se_play($data_system.buzzer_se)
  8.           $game_party.actors[i].remove_state(skill_state)
  9.           $scene = Scene_Menu.new(0)
  10.           break
  11.         else  
  12.           $game_party.actors[i].learn_skill(skill_id)
  13.           $game_party.actors[i].remove_state(skill_state)
  14.           $game_party.gain_item(book_id,-1)
  15.           break
  16.         end
  17.       end  
  18.     end  
  19.   end
  20. end
复制代码

评分

参与人数 1星屑 +75 收起 理由
怪蜀黍 + 75 参与讨论

查看全部评分

我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

八宝粥的基叔

梦石
0
星屑
4684
在线时间
5240 小时
注册时间
2009-4-29
帖子
14318

贵宾

2
发表于 2013-12-27 13:17:35 | 只看该作者
  1. i += 1
复制代码
这句有什么用?测试过吗?

点评

但$game_party.actors[].states是从0开始的.....  发表于 2013-12-27 18:45
i一定要先加1,不然$game_actor[0].states是nil,会触发NilClass。  发表于 2013-12-27 18:27
《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747
回复 支持 反对

使用道具 举报

Lv2.观梦者


  • 更新完成啦

梦石
0
星屑
799
在线时间
6267 小时
注册时间
2006-6-7
帖子
8462
3
发表于 2013-12-27 18:14:58 | 只看该作者
在物品使用加一个判断就好了,物品拥有属性时另作处理

点评

恩,我是追求代码简单,而且我现在还不理解alias  发表于 2013-12-27 18:19
回复 支持 反对

使用道具 举报

Lv3.寻梦者

○赛

梦石
0
星屑
1249
在线时间
1276 小时
注册时间
2013-1-22
帖子
2246

贵宾

4
 楼主| 发表于 2013-12-27 18:16:00 | 只看该作者
protosssonny 发表于 2013-12-27 13:17
这句有什么用?测试过吗?

测试过,有效。原因P叔会不知道?貌似是因为$game_party.actors是从0开始的,而$game_actor是从1开始的...

点评

那么你1..$game_party.actors.size不就好了,为什么一定要从0开始?  发表于 2013-12-27 18:41
for循环每次都会自动加1,不用手动加1。我是目测的,没有测试。  发表于 2013-12-27 18:24
回复 支持 反对

使用道具 举报

Lv3.寻梦者

火烧大神

梦石
0
星屑
1823
在线时间
942 小时
注册时间
2012-1-1
帖子
1777
5
发表于 2013-12-27 20:12:34 | 只看该作者
这个确实好用,用状态太浪费时间了

火兔游戏官网上线啦!!
戳 >>> www.huotuyouxi.com <<<戳
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
59
在线时间
398 小时
注册时间
2011-10-6
帖子
987
6
发表于 2013-12-27 20:12:51 | 只看该作者
这种技能书是一次性的还是循环使用的?说实话看不懂代码。我自己做的时候都是用事件来做的

点评

一次性的。物品设为不消耗,使用成功时脚本自动减去。  发表于 2013-12-27 20:33
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

8
发表于 2013-12-28 18:10:50 | 只看该作者
做技能书的时候太麻烦了···而且还要占用数据库物品,如果加新物品或者技能变了还要修改···假如有500个可以用技能书学习的技能···难道我还要慢慢加500个新物品吗···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv3.寻梦者

○赛

梦石
0
星屑
1249
在线时间
1276 小时
注册时间
2013-1-22
帖子
2246

贵宾

9
 楼主| 发表于 2013-12-28 19:17:02 | 只看该作者
chd114 发表于 2013-12-28 18:10
做技能书的时候太麻烦了···而且还要占用数据库物品,如果加新物品或者技能变了还要修改···假如有500 ...

那您是想就设定一个技能书,描绘物品名时额外描绘?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

○赛

梦石
0
星屑
1249
在线时间
1276 小时
注册时间
2013-1-22
帖子
2246

贵宾

10
 楼主| 发表于 2013-12-28 19:17:33 | 只看该作者
chd114 发表于 2013-12-28 18:10
做技能书的时候太麻烦了···而且还要占用数据库物品,如果加新物品或者技能变了还要修改···假如有500 ...

那您是想就设定一个技能书,描绘物品名时额外描绘?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 16:31

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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