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

Project1

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

[已经解决] 【XP】如何限制职业或角色在战斗中使用某些道具

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
33 小时
注册时间
2011-1-18
帖子
16
跳转到指定楼层
1
发表于 2011-12-28 22:27:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
03版还能设定道具的使用限制,因为道具装备是一家……现在居然没了。
于是求脚本扩展该功能,当然最完善的能实现角色ID和职业ID双重限制。搜了好久都没找到相关内容,以前的帖子还是未解决状态

Lv2.观梦者

梦石
0
星屑
448
在线时间
628 小时
注册时间
2011-9-27
帖子
3996
2
发表于 2012-1-1 19:51:18 | 只看该作者
本帖最后由 亿万星辰 于 2012-1-7 09:41 编辑
  1. class Game_Party
  2.   def item_can_use?(item_id)
  3.     # 物品个数为 0 的情况
  4.     if item_number(item_id) == 0
  5.       # 不能使用
  6.       return false
  7.     end
  8.     # 获取可以使用的时候
  9.     occasion = $data_items[item_id].occasion
  10.     # 战斗的情况
  11.     if $game_temp.in_battle
  12.       # 可以使用时为 0 (平时) 或者是 1 (战斗时) 可以使用
  13.       return (occasion == 0 or occasion == 1)
  14.     end
  15.     # 可以使用时为 0 (平时) 或者是 2 (菜单时) 可以使用
  16.     return (occasion == 0 or occasion == 2)
  17.   end
  18. end
  19. $特定物品 = {1 => 1,15 => 2}  #箭头前为物品id 箭头后为特定角色id 英文半角逗号分隔
  20. class Game_Party
  21.   alias icu item_can_use?
  22.   def item_can_use?(item_id,actor_id = 1000)
  23.     occasion = $data_items[item_id].occasion
  24.     if actor_id != 1000
  25.       if $game_temp.in_battle && $特定物品.keys.include?(item_id)
  26.         if actor_id == $特定物品[item_id] && item_number(item_id) != 0 && (occasion == 0 or occasion == 1)
  27.           return  true
  28.         else
  29.           return false
  30.         end
  31.       end
  32.     end
  33.     icu(item_id)
  34.   end
  35. end
  36. class Window_Item
  37.   alias xtdf_initialize initialize
  38.   def initialize(actor_id = 1000)
  39.     @actor_id = actor_id
  40.     xtdf_initialize
  41.   end
  42.   def draw_item(index)
  43.     item = @data[index]
  44.     case item
  45.     when RPG::Item
  46.       number = $game_party.item_number(item.id)
  47.     when RPG::Weapon
  48.       number = $game_party.weapon_number(item.id)
  49.     when RPG::Armor
  50.       number = $game_party.armor_number(item.id)
  51.     end
  52.     if item.is_a?(RPG::Item) and
  53.        $game_party.item_can_use?(item.id,@actor_id)
  54.       self.contents.font.color = normal_color
  55.     else
  56.       self.contents.font.color = disabled_color
  57.     end
  58.     x = 4 + index % 2 * (288 + 32)
  59.     y = index / 2 * 32
  60.     rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  61.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  62.     bitmap = RPG::Cache.icon(item.icon_name)
  63.     opacity = self.contents.font.color == normal_color ? 255 : 128
  64.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  65.     self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  66.     self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
  67.     self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
  68.   end
  69. end
复制代码
Game_Battle 3的这句话
     @item_window = Window_Item.new
改为
     @item_window = Window_Item.new(@active_battler.id)

答案来源地址,18楼,逸豫大大~
http://rpg.blue/forum.php?mod=vi ... E5%93%81&page=2

点评

你这个应该只是让物品栏里变灰了,如果光标移动到灰色的物品上按空格呢?  发表于 2012-1-7 10:45
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
33 小时
注册时间
2011-1-18
帖子
16
3
 楼主| 发表于 2012-1-3 09:53:11 | 只看该作者
十分感谢!
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-24 09:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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