Project1

标题: 问一个很泡菜的问题:使用物品触发状态 [打印本页]

作者: 沉默的米饭团    时间: 2009-8-26 10:42
标题: 问一个很泡菜的问题:使用物品触发状态
有事请教:怎么使用一个物品触发指定的几个状态的随机一个。。
作者: VIVICAT    时间: 2009-8-26 10:49
公共事件,随即变量,条件分歧~
作者: 沉默的米饭团    时间: 2009-8-26 10:54
可是如果用事件做的话,是没有办法让使用者中状态的,只能指定使用者,我是脚本盲。。

不知道公共事件让自己中状态的脚本怎么写。
作者: 九夜神尊    时间: 2009-8-28 17:35
实际上我有一个简单的改的方法,大概实现原理就是再
使用物品以后,系统认为这个物品是随机的。

所以你就要做好几个相同的东西
比如说  黑铁炸弹(乱变的名字)
如果要随机4种状态
那么你就要做4个黑铁炸弹
做好这4个黑铁炸弹以后,还没有完。

记号你这4个黑铁炸弹的物品ID
接下来开始脚本方面了!
作者: 霜冻之狼    时间: 2009-8-28 17:43
3# 沉默的米饭团
给技能附加状态,再用公共事件逐个判断谁身上有这个状态
这种判断对象的方法叫做状态选取法,简称状态法
作者: 九夜神尊    时间: 2009-8-28 17:50
本帖最后由 九夜神尊 于 2009-8-28 18:01 编辑

这里是脚本方面。
我给你直接写。不过到底还是要你自己改
谁知到你 做那4个黑铁炸弹的 ID是什么 。

class Scene_Item
  #--------------------------------------------------------------------------
  # ● 刷新画面 (物品窗口被激活的情况下)
  #--------------------------------------------------------------------------
  def update_item
    # 按下 B 键的情况下
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 切换到菜单画面
      $scene = Scene_Menu.new(0)
      return
    end
    # 按下 C 键的情况下
    if Input.trigger?(Input::C)
      # 获取物品窗口当前选中的物品数据
      @item = @item_window.item
         id  [email protected]
      #★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
      #★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
      #★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
      #你的东西在这里设定
      case @item.id
      when 12 #这个呢,就是你的那个黑铁炸弹的ID啦,4个里面随便一个就可以了
        n = rand(4)#也不一定就是4个,就看你随机几个状态了。
        case n
        when 0
          id = 12  #这个就是第一个随机状态的那个黑铁炸弹的ID
        when 1
          id = 13  #这个就是第二个随机状态的黑铁炸弹的ID
        when 2
          id = 25  #同上
        when 3
          id = 35
       #when 4   #如果不够自己扩充
       #  id = 45
         end
      when 15  #这个呢,就是你又要做一个白铁炸弹了
        n = rand(4)#
        case n
        when 0
          id = 15  #
        when 1
          id = 16  #
        when 2
          id = 17 #
        when 3
          id = 18
       #when 4   #如果不够自己扩充
       #  id = 45
         end
    #  when 20 #如果不够自己扩充
     #   n = rand(4)#也不一定就是4个,就看你随机几个状态了。
      #  case n
     #   when 0
     #     id = 12  #这个就是第一个随机状态的那个黑铁炸弹的ID
     #   when 1
      #    id = 13  #这个就是第二个随机状态的黑铁炸弹的ID
      #  when 2
      #    id = 25  #同上
      #  when 3
       #   id = 35
       #when 4   #如果不够自己扩充
       #  id = 45
     end
@item = $data_items[id]
     #恭喜你的设定完了,你到游戏里面试一下把。
     #记得那些炸弹的ID要搞对哦。要不出现一些奇怪的事件……
      #★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
      #★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
      #★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
      #★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
      # 不使用物品的情况下
      unless @item.is_a?(RPG::Item)
        # 演奏冻结 SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # 不能使用的情况下
      unless $game_party.item_can_use?(@item.id)
        # 演奏冻结 SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # 演奏确定 SE
      $game_system.se_play($data_system.decision_se)
      # 效果范围是我方的情况下
      if @item.scope >= 3
        # 激活目标窗口
        @item_window.active = false
        @target_window.x = (@item_window.index + 1) % 2 * 304
        @target_window.visible = true
        @target_window.active = true
        # 设置效果范围 (单体/全体) 的对应光标位置
        if @item.scope == 4 || @item.scope == 6
          @target_window.index = -1
        else
          @target_window.index = 0
        end
      # 效果在我方以外的情况下
      else
        # 公共事件 ID 有效的情况下
        if @item.common_event_id > 0
          # 预约调用公共事件
          $game_temp.common_event_id = @item.common_event_id
          # 演奏物品使用时的 SE
          $game_system.se_play(@item.menu_se)
          # 消耗品的情况下
          if @item.consumable
            # 使用的物品数减 1
            $game_party.lose_item(@item.id, 1)
            # 再描绘物品窗口的项目
            @item_window.draw_item(@item_window.index)
          end
          # 切换到地图画面
          $scene = Scene_Map.new
          return
        end
      end
      return
    end
  end
end


这是我给你定做的一个脚本,记得多给我点经验




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1