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

Project1

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

[已经解决] 求助!如何冻结物品?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
240
在线时间
63 小时
注册时间
2010-12-14
帖子
56
跳转到指定楼层
1
发表于 2010-12-19 15:01:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
请问一下,如果我想要建立一个事件使某一属性的物品冻结(不能使用、不可丢弃、不可交易)
或解除冻结,可以通过什么方法来实现?
请求各位的帮助,谢谢!

点评

得到答案请去认可贴认可  发表于 2010-12-21 09:28

Lv1.梦旅人

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
帖子
3597
2
发表于 2010-12-19 15:10:55 | 只看该作者
LZ需要做到这种效果的物品少吗?如果少的话可以做一个相同的物品,设置成不能使用和售价为0,锁定和解锁就把这两个物品转换就Ok了

http://rpg.blue/thread-175056-1-2.html
PVZ型塔防物一个
http://rpg.blue/thread-155199-1-2.html
RMXP技术讨论区手动认可帖,得到答案请认可
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
240
在线时间
63 小时
注册时间
2010-12-14
帖子
56
3
 楼主| 发表于 2010-12-19 15:17:02 | 只看该作者
回复 Wind2010 的帖子

不少,我是想使某一属性的物品在某些地图上不能使用。
你的方法虽然可以,但几乎所有的物品都要做两遍了。
对了,不仅仅是物品哦,还有装备什么的……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
4 小时
注册时间
2010-6-24
帖子
27
4
发表于 2010-12-19 15:45:30 | 只看该作者
本帖最后由 立华·奏 于 2010-12-20 22:54 编辑
  1. #--------------
  2. #Freeze Item
  3. #--------------
  4. #
  5. #Data
  6. class Game_System
  7.   attr :freeze_items
  8.   alias godseyes_initialize initialize unless self.instance_methods.include?("godseyes_initialize") #忽然发现我真的很NC - -
  9.   def initialize
  10.     @freeze_items = []
  11.     godseyes_initialize
  12.   end
  13. end

  14. #module RPG
  15. module RPG
  16.   class Item
  17.     def price
  18.       return $game_system.freeze_items.include?(@id) ? 0 : @price
  19.     end
  20.     def occasion
  21.       return $game_system.freeze_items.include?(@id) ? 3 : @occasion
  22.     end
  23.   end
  24. end

  25. #Interpreter
  26. class Interpreter
  27.   def freeze_item(id)
  28.     $game_system.freeze_items.push(id)
  29.   end
  30. end
复制代码
按下F11打开脚本编辑器后再Main上面新建脚本页,然后添加如上代码。
使用时请事件第三页脚本:
freeze_item(物品ID)

点评

godseyes都出来了~还能认不出来喵~  发表于 2010-12-21 21:15
恩……要的就是True就会忽略……话说我竟然杯催地把方法名打错了……恩……67真的不认识我么- -  发表于 2010-12-20 22:55
恩……要的就是True就会忽略……话说我竟然杯催地把方法名打错了……恩……67真的不认识我么- -  发表于 2010-12-20 22:55
恩……要的就是True就会忽略……话说我竟然杯催地把方法名打错了……恩……67真的不认识我么- -  发表于 2010-12-20 22:55
喵,应该是unless true时alias会被忽略  发表于 2010-12-19 18:26

评分

参与人数 1星屑 +376 收起 理由
fux2 + 376 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
240
在线时间
63 小时
注册时间
2010-12-14
帖子
56
5
 楼主| 发表于 2010-12-19 15:55:15 | 只看该作者
回复 立华·奏 的帖子

原来如此,真是多谢了。
再麻烦你一下,如果我要将一种属性的物品全部冻结,可以修改这个代码实现吗?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
4 小时
注册时间
2010-6-24
帖子
27
6
发表于 2010-12-19 17:24:08 | 只看该作者
for i in $data_items
if i != nil
  if i.element_set.include?(属性编号)
   freeze_item(i.id)
  end
end
end
这样试试,未测试
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
240
在线时间
63 小时
注册时间
2010-12-14
帖子
56
7
 楼主| 发表于 2010-12-19 17:53:50 | 只看该作者
修改后
#--------------
#Freeze Item
#--------------
#
#Data
class Game_System
  attr :freeze_items
  alias godseyes_initialize initialize unless self.instance_methods.include?("God's Eyes")
  def initialize
    @freeze_items = []
    godseyes_initialize
  end
end

#module RPG
module RPG
  class Item
    for i in $data_items
      if i != nil
        if i.element_set.include?(017)
          def price
            return $game_system.freeze_items.include?(@id) ? 0 : @price
          end
          def occasion
            return $game_system.freeze_items.include?(@id) ? 3 : @occasion
          end
        end
      end
    end
  end
end

#Interpreter
class Interpreter
  def freeze_item(id)
    $game_system.freeze_items.push(id)
  end
end

可出现了
undefined method 'each' for nil:NilClass的问题

点评

67的英语真丫挺的不是一般的盖的。  发表于 2010-12-21 17:46
how can $data_items exist when declaring RPG::Item.if you know little rgss,just ask godseyes to help.  发表于 2010-12-19 18:21
回复 支持 反对

使用道具 举报

Lv1.梦旅人

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
帖子
3597
8
发表于 2010-12-19 17:57:26 | 只看该作者
  1. for i in $data_items
  2. if i != nil
  3.   if i.element_set.include?(属性编号)
  4.    freeze_item(i.id)
  5.   end
  6. end
  7. end
复制代码
这段应该不是插入到那个脚本里面吧?

http://rpg.blue/thread-175056-1-2.html
PVZ型塔防物一个
http://rpg.blue/thread-155199-1-2.html
RMXP技术讨论区手动认可帖,得到答案请认可
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
240
在线时间
63 小时
注册时间
2010-12-14
帖子
56
9
 楼主| 发表于 2010-12-19 18:01:15 | 只看该作者
呃,没有办法,对ruby语言如何建构还是不明,只能看懂,定义啦类啦什么的搞不清
不过错误好像不在这个问题上
刚刚我把
for i in $data_items
改成了
for i in 1...$data_items
错误变成了bad value for range
更不明了……

点评

口胡,谁说不能!  发表于 2010-12-20 23:05
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
4 小时
注册时间
2010-6-24
帖子
27
10
发表于 2010-12-20 22:53:24 | 只看该作者
请在事件调用的时候使用此代码……
for i in $data_items
if i != nil
  if i.element_set.include?(属性编号)
   freeze_item(i.id)
  end
end
end
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-29 03:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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