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

Project1

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

[已经解决] 转职道具

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2180
在线时间
1011 小时
注册时间
2015-10-17
帖子
1285
跳转到指定楼层
1
发表于 2019-2-10 22:06:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
下面这个脚本是道具加上备注转职的,问下要是加些条件转职能实现吗,例如到一定等级才能使用这个道具转职
或者只有特定的角色使用才能转职,或者是某种职业的前提下用该道具才能转职
知道的告诉下,谢谢

RUBY 代码复制
  1. class RPG::Item
  2.   def transfer_index
  3.     /<TRANSFER\s*(\d+)>/ =~ note ? $1.to_i : 0
  4.   end
  5. end
  6.  
  7.  
  8. class Scene_ItemBase
  9.  
  10.   #--------------------------------------------------------------------------
  11.   # ● 对角色使用物品
  12.   #--------------------------------------------------------------------------
  13.   def use_item_to_actors
  14.     item_target_actors.each do |target|
  15.       item.repeats.times {
  16.         target.item_apply(user, item)
  17.         use_transfer_item(target, item.transfer_index) if item.transfer_index > 0
  18.       }
  19.     end
  20.   end
  21.  
  22.   def use_transfer_item(user, index)
  23.     user.change_class(index, true)
  24.   end
  25.  
  26. end

Lv5.捕梦者

梦石
10
星屑
39587
在线时间
1920 小时
注册时间
2010-11-14
帖子
3320

R考场第七期纪念奖

2
发表于 2019-2-11 00:28:50 | 只看该作者
在原脚本下面插入这个脚本
RUBY 代码复制
  1. #  使用方法
  2. #  物品备注中写<condition>xxx</condition> 支持多行
  3. #  用user代表使用者,s[n]和v[n]分别代表n号开关和变量
  4. #
  5. #  例 <condition>user.level > 9</condition> # 使用者等级大于9才能用
  6. #     <condition>s[1] && v[1] > 5</condition> # 1号开关开启且1号变量大于5才能用
  7. #     其他用法参考伤害公式
  8.  
  9. class Game_Actor
  10.   #--------------------------------------------------------------------------
  11.   # ● 技能/物品的应用测试
  12.   #    如果使用目标的 HP 或者 MP 全满时,禁止使用恢复道具。
  13.   #--------------------------------------------------------------------------
  14.   alias item_test_for_class_transfer item_test
  15.   def item_test(user, item)
  16.     if item.transfer_index != 0
  17.       return false unless item.transfer_ok?(self)
  18.     end
  19.     item_test_for_class_transfer(user, item)
  20.   end
  21. end
  22.  
  23. class RPG::Item
  24.   def transfer_ok?(user)
  25.     s = $game_switches
  26.     v = $game_variables
  27.     self.note =~ /<condition>((?:.\s?)+)<\/condition>/mi ? eval($1) : true
  28.   end
  29. end


具体用法见注释及范例。
Project1.zip (1.43 MB, 下载次数: 73)

点评

关于楼主需要的条件,这里提供几个思路。把n换成对应的数字。①user.level > n ②user == $game_actors[n] ③user.class_id == n  发表于 2019-2-11 00:31

评分

参与人数 2星屑 +40 +1 收起 理由
VIPArcher + 40 认可答案
fjm + 1 认可答案

查看全部评分

用头画头像,用脚写脚本
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2180
在线时间
1011 小时
注册时间
2015-10-17
帖子
1285
3
 楼主| 发表于 2019-2-11 12:21:41 | 只看该作者
KB.Driver 发表于 2019-2-11 00:28
在原脚本下面插入这个脚本
#  使用方法
#  物品备注中写xxx 支持多行

非常感谢,可以用了
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2180
在线时间
1011 小时
注册时间
2015-10-17
帖子
1285
4
 楼主| 发表于 2019-2-11 13:56:22 | 只看该作者
KB.Driver 发表于 2019-2-11 00:28
在原脚本下面插入这个脚本
#  使用方法
#  物品备注中写xxx 支持多行

刚才试了下战斗的时候,放全体回复技能会报错,这个可以解决吗
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
10
星屑
39587
在线时间
1920 小时
注册时间
2010-11-14
帖子
3320

R考场第七期纪念奖

5
发表于 2019-2-11 14:12:50 | 只看该作者
本帖最后由 KB.Driver 于 2019-2-11 14:25 编辑
fjm 发表于 2019-2-11 13:56
刚才试了下战斗的时候,放全体回复技能会报错,这个可以解决吗


麻烦截图发一下报错的窗口,如果有完整工程最好。
不过我大致猜到了,应该是因为RPG::Skill没有定义transfer_index方法。
你把范例工程里的222脚本换成这个

RUBY 代码复制
  1. #  使用方法
  2. #  物品备注中写<condition>xxx</condition> 支持多行
  3. #  用user代表使用者,s[n]和v[n]分别代表n号开关和变量
  4. #
  5. #  例 <condition>user.level > 9</condition> # 使用者等级大于9才能用
  6. #     <condition>s[1] && v[1] > 5</condition> # 1号开关开启且1号变量大于5才能用
  7. #     其他用法参考伤害公式
  8.  
  9. class Game_Actor
  10.   #--------------------------------------------------------------------------
  11.   # ● 技能/物品的应用测试
  12.   #    如果使用目标的 HP 或者 MP 全满时,禁止使用恢复道具。
  13.   #--------------------------------------------------------------------------
  14.   alias item_test_for_class_transfer item_test
  15.   def item_test(user, item)
  16.     if item.is_a?(RPG::Item) && item.transfer_index != 0
  17.       return false unless item.transfer_ok?(self)
  18.     end
  19.     item_test_for_class_transfer(user, item)
  20.   end
  21. end
  22.  
  23. class RPG::Item
  24.   def transfer_ok?(user)
  25.     s = $game_switches
  26.     v = $game_variables
  27.     self.note =~ /<condition>((?:.\s?)+)<\/condition>/mi ? eval($1) : true
  28.   end
  29. end


另外,好像发现这个只对菜单中使用物品有效。
你把转职道具设置成只有菜单能用就没问题了。
用头画头像,用脚写脚本
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2180
在线时间
1011 小时
注册时间
2015-10-17
帖子
1285
6
 楼主| 发表于 2019-2-11 14:31:23 | 只看该作者
KB.Driver 发表于 2019-2-11 14:12
麻烦截图发一下报错的窗口,如果有完整工程最好。
不过我大致猜到了,应该是因为RPG::Skill没有定义trans ...

非常感谢,现在战斗时没问题了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 20:28

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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