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

Project1

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

如何制作需装备装备和持有物品才能使用技能

 关闭 [复制链接]

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3304
在线时间
3619 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

跳转到指定楼层
1
发表于 2008-7-1 05:57:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
比如[射击]这个技能,
需要装备枪、箭之类的武器,还需要持有[箭桶]这个道具才能使用。

如何实现? [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~

Lv1.梦旅人

梦石
0
星屑
50
在线时间
466 小时
注册时间
2006-2-25
帖子
1863
2
发表于 2008-7-1 06:20:04 | 只看该作者
我决定尝试这个温习下ruby- -
回复 支持 反对

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

3
发表于 2008-7-1 07:07:52 | 只看该作者
重新定义这段
  #--------------------------------------------------------------------------
  # ● 可以使用技能的判定
  #     skill : 技能
  #--------------------------------------------------------------------------
  def skill_can_use?(skill)
    return false unless skill.is_a?(RPG::Skill)
    return false unless movable?
    return false if silent? and skill.spi_f > 0
    return false if calc_mp_cost(skill) > mp
#======================================================================
#    下面所讲的条件插在这里
#======================================================================
    if $game_temp.in_battle
      return skill.battle_ok?
    else
      return skill.menu_ok?
    end
  end
#==========================流星赶月分割线==============================

判断是否持有某物:
if $game_party.item_number($data_items[N]) > 0
     N 为物品编号

判断是否装备某物
$game_party.members[N].equips.include?(item)
    N 是队员号
    item 可以是武器或防具
    N号武器:$data_weapons[N]
    N号防具:$data_armors[N]

例如:
2号队员装备 3 号武器 并 持有 6 号物品 才能使用 7 号技能
则条件为:
if skill.id == 7
  if $game_party.members[2].equips.include?($data_weapons[3]) and
     $game_party.item_number($data_items[6]) > 0
    if $game_temp.in_battle
      return skill.battle_ok?
    else
      return skill.menu_ok?
    end
  end
end
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
466 小时
注册时间
2006-2-25
帖子
1863
4
发表于 2008-7-1 07:36:45 | 只看该作者
这样要一个一个技能写脚本挺麻烦的- -
睡觉先,.
明天继续,.- -
回复 支持 反对

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

5
发表于 2008-7-1 13:21:18 | 只看该作者
以下引用诡异の猫于2008-6-30 23:36:45的发言:
这样要一个一个技能写脚本挺麻烦的- -
睡觉先,.
明天继续,.- -


要不就是用備註啦
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
5 小时
注册时间
2008-4-22
帖子
34
6
发表于 2008-7-1 15:28:08 | 只看该作者
测试过, 没问题
迟些上载范例

  1. #==============================================================================
  2. #westbugs 制作,
  3. #用法:
  4. #把1号装备装上
  5. #拥有一号道具
  6. #拥有一号技能
  7. #
  8. #使用一号技能时, 一号道具会消失。
  9. #需一号道具才能启动一号技能
  10. #注:无限恐怖-轮回篇里附带脚本
  11. #==============================================================================

  12. class Game_Actor < Game_Battler
  13. #--------------------------------------------------------------------------
  14.   # ● 可以使用特技判定
  15.   #     skill_id : 特技 ID
  16.   #--------------------------------------------------------------------------
  17. def skill_can_use?(skill)   
  18.   return false unless skill_learn?(skill)
  19.    
  20.      #使用一号技能时, 检查一号道具和检查一号技能
  21.      if skill.id == 1
  22.       return false if $game_party.item_no(1) == 0
  23.       return false if equips.include?(1)
  24.     end
  25.     #使用一号技能时, 检查一号道具和检查一号技能
  26.    
  27.     return super
  28.   end
  29. end


  30. class Game_Party < Game_Unit
  31.   def item_no(n)
  32.     return item_number($data_items[n])
  33.   end
  34.   def weapon_no(n)
  35.     return item_number($data_weapons[n])
  36.   end
  37. end

  38. class Scene_Battle < Scene_Base
  39.   
  40.   
  41.   #--------------------------------------------------------------------------
  42.   # ● 执行战斗行动 : 技能
  43.   #--------------------------------------------------------------------------
  44.   def execute_action_skill
  45.     skill = @active_battler.action.skill
  46.     text = @active_battler.name + skill.message1
  47.     @message_window.add_instant_text(text)
  48.     unless skill.message2.empty?
  49.       wait(10)
  50.       @message_window.add_instant_text(skill.message2)
  51.     end
  52.     targets = @active_battler.action.make_targets
  53.     display_animation(targets, skill.animation_id)
  54.     @active_battler.mp -= @active_battler.calc_mp_cost(skill)
  55.    
  56.     #使用一号技能时, 消耗一号技能
  57.     if @skill.id == 1
  58.       $game_party.lose_item($data_items[1], 1)
  59.     end
  60.     #使用一号技能时, 消耗一号技能
  61.    
  62.     $game_temp.common_event_id = skill.common_event_id
  63.     for target in targets
  64.       target.skill_effect(@active_battler, skill)
  65.       display_action_effects(target, skill)
  66.     end
  67.   end
  68. end
复制代码
勤奋的懒鬼
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
280
在线时间
1374 小时
注册时间
2005-10-16
帖子
5113

贵宾

7
发表于 2008-7-1 15:38:53 | 只看该作者
我记得以前写过一个类似的,远程武器弹药消耗系统……
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3304
在线时间
3619 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

8
 楼主| 发表于 2008-7-1 20:07:36 | 只看该作者
以下引用snstar2006于2008-7-1 5:21:18的发言:


以下引用诡异の猫于2008-6-30 23:36:45的发言:
这样要一个一个技能写脚本挺麻烦的- -
睡觉先,.
明天继续,.- -



要不就是用備註啦

本来我就希望这样……
以下引用westbugs于2008-7-1 7:28:08的发言:

测试过, 没问题
迟些上载范例

#==============================================================================
#westbugs 制作,
#用法:
#把1号装备装上
#拥有一号道具
#拥有一号技能
#
#使用一号技能时, 一号道具会消失。
#需一号道具才能启动一号技能
#注:无限恐怖-轮回篇里附带脚本
#==============================================================================

class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
  # ● 可以使用特技判定
  #     skill_id : 特技 ID
  #--------------------------------------------------------------------------
def skill_can_use?(skill)   
  return false unless skill_learn?(skill)
   
     #使用一号技能时, 检查一号道具和检查一号技能
     if skill.id == 1
      return false if $game_party.item_no(1) == 0
      return false if equips.include?(1)
    end
    #使用一号技能时, 检查一号道具和检查一号技能
   
    return super
  end
end


class Game_Party < Game_Unit
  def item_no(n)
    return item_number($data_items[n])
  end
  def weapon_no(n)
    return item_number($data_weapons[n])
  end
end

class Scene_Battle < Scene_Base
  
  
  #--------------------------------------------------------------------------
  # ● 执行战斗行动 : 技能
  #--------------------------------------------------------------------------
  def execute_action_skill
    skill = @active_battler.action.skill
    text = @active_battler.name + skill.message1
    @message_window.add_instant_text(text)
    unless skill.message2.empty?
      wait(10)
      @message_window.add_instant_text(skill.message2)
    end
    targets = @active_battler.action.make_targets
    display_animation(targets, skill.animation_id)
    @active_battler.mp -= @active_battler.calc_mp_cost(skill)
   
    #使用一号技能时, 消耗一号技能
    if @skill.id == 1
      $game_party.lose_item($data_items[1], 1)
    end
    #使用一号技能时, 消耗一号技能
   
    $game_temp.common_event_id = skill.common_event_id
    for target in targets
      target.skill_effect(@active_battler, skill)
      display_action_effects(target, skill)
    end
  end
end



[本贴由作者于 2008-7-1 7:44:52 最后编辑]

感觉对使用不大明白……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
466 小时
注册时间
2006-2-25
帖子
1863
9
发表于 2008-7-1 20:27:12 | 只看该作者
希望什么- -
现在有一个思路.
只是不晓得符不符合你的要求
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3304
在线时间
3619 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

10
 楼主| 发表于 2008-7-1 21:10:54 | 只看该作者
以下引用诡异の猫于2008-7-1 12:27:12的发言:

希望什么- -
现在有一个思路.
只是不晓得符不符合你的要求

就是在备注里设计需要持有的物品和装备之类的啊。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-26 10:12

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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