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

Project1

 找回密码
 注册会员
搜索

怎样使只有某特定角色才能使用某战斗物品

查看数: 5466 | 评论数: 20 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2010-7-27 09:43

正文摘要:

比如,我设定一个物品扔出去能使敌人混乱,但是我希望只有角色a才能在战斗中投掷这个物品,其他角色不行。问问各位大虾该如何实现?

回复

mugencomic 发表于 2012-1-3 21:15:49
逸豫 发表于 2010-7-27 19:29
Game_Battle 3的这句话
    @item_window = Window_Item.new
改为

原谅我挖一下坟……脚本本身没问题,在跟RTAB整合的时候碰到了点麻烦。本来以为RTAB核心只改了SCENE_BATTLE的前面部分,冲突应该没有才对——
战斗中点开道具菜单的话,只有道具变灰这项在起作用,但跟人物无关,每个人的这种道具都显示变灰。估计是没能引入ACTIVE_BATTLE.ID?然后实际上不管变不变灰都能使用这道具。
奇怪我都把这脚本放最底了,到底内鬼在哪??

点评

没记错的话RTAB中@active_battler被无视了,请使用@active_actor.id  发表于 2012-1-7 19:57
夏天的枫 发表于 2010-7-27 23:29:47
现在用了18楼的脚本,目前已经完全没有问题了,十分感谢两位大虾
认真的学 发表于 2010-7-27 19:35:22
本帖最后由 认真的学 于 2010-7-27 19:41 编辑

我在10楼手滑打错字......修改完毕10L脚本可以使用,但是也没有【变暗】的效果。
LZ用11L脚本出问题,第一个问题LZ有没有把6-10行复制到10行的end后?
第二个问题有没有修改各种ID。
第三个问题我不大确认,就是11L好像把原来的can_use给换掉了,但是又因为这个判断要求使用物品时只能是1号角色使用1号物品,其他情况都不可以,所以使用物品的时候除了1号角色可以使用1号物品之外,其他角色都不能使用物品,1号角色也不能使用其他物品。
如果LZ还是想用11L的脚本的话,小小修改一下就可以使用:
  1. class Game_Party
  2.   alias icu item_can_use?
  3.   def item_can_use?(item_id,actor_id = 1000)
  4.     occasion = $data_items[item_id].occasion
  5.     if actor_id != 1000
  6.       if item_id == 1
  7.         if $game_temp.in_battle && actor_id == 2 && item_number(item_id) != 0 && (occasion == 0 or occasion == 1)
  8.           return  true
  9.         else
  10.          return false
  11.         end
  12.       else
  13.         return true
  14.       end
  15.     end
  16.     icu(item_id)
  17.   end
  18. end
复制代码
6-14行可以无限复制,其他要求同11
(刚刚才发现回答晚了,LZ还是用LS的比较好嗯)

评分

参与人数 1星屑 +600 收起 理由
「旅」 + 600 认可答案

查看全部评分

逸豫 发表于 2010-7-27 19:29:47
  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)

评分

参与人数 1星屑 +1998 收起 理由
「旅」 + 1998 认可答案~感谢逸豫的热情帮助~ ...

查看全部评分

夏天的枫 发表于 2010-7-27 18:54:44
又发生新问题了,我把6-10行复制到11-15行然后改了一下物品id但是11-15行的似乎无效,导致现在在战斗中连回复药水都无法使用了...这是怎么回事呢?
夏天的枫 发表于 2010-7-27 18:07:26
本帖最后由 夏天的枫 于 2010-7-27 18:11 编辑

终于可以了,十分感谢楼上,不过此时其他角色想使用那个特定物品时物品还是亮着的只是按不动,能否使其像其他无法在战斗中使用的物品一样变暗呢?
逸豫 发表于 2010-7-27 17:57:42
啊,那个,不是Game_Battler 是 Scene_Battle 不小心手误了……
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-10-1 13:00

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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