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

Project1

 找回密码
 注册会员
搜索

【自问答】如何制作技能消耗物品的效果

查看数: 8303 | 评论数: 13 | 收藏 7
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2015-9-28 19:49

正文摘要:

本帖最后由 RyanBern 于 2015-9-28 20:02 编辑 我要做一个技能消耗物品的效果,就是使用一个技能之前要判断相应物品的数量,如果相应物品数量充足,则可以正常发动此技能;如果相应物品的数量不足,那么在技能栏 ...

回复

步兵中尉 发表于 2017-11-2 16:35:29
个人感觉不用那么复杂啊!

在脚本中ctrl+shift+F搜索“可以使用特技判定”,找到位于Game_Actor的此段定义。
然后添加:
如果  技能ID==123 并且 物品47号的数量少于5个
   那么不能使用

翻译为脚本:
  1.    if skill_id == 123 and $game_party.item_number(47) <= 5
  2.      return false
  3.    end
复制代码


这样就可以了。然后你在技能的公共事件里面添加物品消耗即可。

点评

添加到game actor里确实更合适,原来的脚本会导致敌人释放技能的时候消耗物品  发表于 2017-11-2 17:25

评分

参与人数 1+1 收起 理由
guoxiaomi + 1 我很赞同

查看全部评分

soulsaga 发表于 2017-11-2 11:18:36
本帖最后由 soulsaga 于 2017-11-2 11:19 编辑

原来循环..

点评

突然很想吐槽一下,为啥这个大小写能搞错这么多次……rb叔的代码有着特殊的魔力吧?  发表于 2017-11-2 14:25
link756367658 发表于 2017-11-2 11:12:17
link756367658 发表于 2017-11-2 10:18
skill_Items = {
  25 => {32 => 2},              #25号技能消耗32号物品2个
  29 => {41 => 2 },         ...

我下面截图了 你在看看 有点实力懵B

点评

非常感谢 这会明白了  发表于 2017-11-2 11:31
第一行的Skill_Items = {里面的Skill_Items和下面的Skill_Items[skill_id]里面的Skill_Items大小写要完全一致否则会报错..  发表于 2017-11-2 11:24
link756367658 发表于 2017-11-2 11:11:43
有点懵啊
link756367658 发表于 2017-11-2 10:18:10
skill_Items = {
  25 => {32 => 2},              #25号技能消耗32号物品2个
  29 => {41 => 2 },              #29号技能消耗41号物品2个
  30 => {41 => 1},              #30号技能消耗41号物品1个
  40 => {40 => 4}
}

class Game_Battler
  def item_condition?(skill_id)
    skill_items = Skill_Items[skill_id]
    return true if skill_Items.nil?
    skill_items.keys.each do |key|
      return false if $game_party.item_number(key) < skill_items[key]
    end
    return true
  end
end

我的是第十行报错

点评

不用看了。skill_Items = {这里要是大写的才能使用。下面的 skill_items = Skill_Items[skill_id]等号后面和上面那个是一个  发表于 2017-11-2 12:23
我下面截图了 你在看看 有点懵  发表于 2017-11-2 11:12
我知道了。你上面的skill_Items没大写所以报错  发表于 2017-11-2 11:00
为什么你后面是大写的  发表于 2017-11-2 10:58
skill_items = Skill_Items[skill_id] 说这行报错  发表于 2017-11-2 10:28
灰色的 发表于 2016-1-14 14:18:40
灰色的 发表于 2016-1-13 19:50
问一下,为什么在战斗测试的时候提示第46行发生错误 nomethod Error undefined nomethod '□' for nil :nil ...

非常感谢您能帮助我解决这个问题
灰色的 发表于 2016-1-13 19:50:24
本帖最后由 RyanBern 于 2016-1-13 21:43 编辑

问一下,为什么在战斗测试的时候提示第46行发生错误 nomethod Error undefined nomethod '□' for nil :nilclass
代码如下:
RUBY 代码复制
  1. skill_items = {
  2.   28 => {41=>1},              #28号技能消耗41号物品1个
  3.   29 => {41=>2},              #29号技能消耗41号物品2个
  4.   30 => {41=>1},              #30号技能消耗41号物品1个
  5.   31 => {41=>2},              #31号技能消耗41号物品2个
  6.   32 => {46=>1},              #32号技能消耗46号物品1个,以此类推
  7.   38 => {41=>2},
  8.   39 => {41=>4},
  9.   40 => {41=>2},
  10.   41 => {41=>4},
  11.   42 => {46=>2},
  12.   49 => {40=>1},
  13.   55 => {40=>1},
  14.   60 => {42=>1,46=>1},        #60号技能消耗42号物品1个和46号物品1个
  15.   61 => {42=>2},
  16.   62 => {46=>3},
  17.   66 => {42=>2,46=>2},
  18.   67 => {42=>4},
  19.   68 => {46=>5},
  20.   71 => {41=>1},
  21.   72 => {46=>1},
  22.   73 => {40=>1},
  23.   74 => {48=>1},
  24.   75 => {46=>2},
  25.   77 => {41=>2},
  26.   78 => {46=>2},
  27.   79 => {40=>2},
  28.   80 => {48=>2},
  29.   81 => {46=>4},
  30.   86 => {49=>1},
  31.   87 => {49=>1},
  32.   91 => {40=>2},
  33.   92 => {42=>1},
  34.   93 => {43=>1},
  35.   94 => {41=>1},
  36.   95 => {44=>1},
  37.   96 => {49=>2},
  38.   97 => {49=>2},
  39.   98 => {40=>1},
  40.   101 => {40=>4}
  41. }
  42.  
  43. class Game_Battler
  44.   def item_condition?(skill_id)
  45.     skill_items = skill_items[skill_id]
  46.     return true if skill_items.nil?
  47.     skill_items.keys.each do |key|
  48.       return false if $game_party.item_number(key) < skill_items[key]
  49.     end
  50.     return true
  51.   end
  52. end

点评

常量的设定请首字母大写,否则不能成功设置。Skill_Items = {...}  发表于 2016-1-13 21:44
Mr.Faint 发表于 2015-10-8 11:40:00
本帖最后由 Mr.Faint 于 2015-10-7 19:42 编辑

做出了乾坤一掷的判定{:2_265:}

2.jpg (243.99 KB, 下载次数: 46)

2.jpg

3.jpg (78.79 KB, 下载次数: 47)

3.jpg

点评

这个改起来比较麻烦,你可以查看一下Window_Skill里面是怎么描述的。如果还是不行那就发帖询问吧  发表于 2015-10-9 16:50
噗。。。粗心之下少了一个return ORZ 第八、第九行中间应增加一条 return true  发表于 2015-10-8 11:45
不过想请问一下关于金钱消耗替换sp消耗应该怎么做呢?就是技能栏内显示的消耗数值为金钱。  发表于 2015-10-8 11:43
哆啦溯 发表于 2015-10-6 13:44:32
好东西!但是怎么不发代码出来……

点评

你要的话我可以给你  发表于 2015-10-8 12:17
因为至少需要你照着做一遍,代码都很少。  发表于 2015-10-6 14:28
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-12-4 01:02

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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